Как защитить скомпилированное приложение MATLAB от распространения?
Как я могу защитить скомпилированный MATLAB.exe от:
- обратный инжиниринг
- несанкционированное распространение?
Какие упаковщики, средства защиты и т. Д. Я должен использовать?
2 ответа
Раньше я сталкивался именно с этой проблемой. Вот несколько мыслей:
- Скомпилированные MATLAB двоичные файлы на самом деле являются ZIP-архивами, которые распаковываются (возможно, во временную или домашнюю папку, доступную пользователю) во время выполнения.
- Сами файлы зашифрованы с использованием AES, что не является идеальным, поскольку ключ может быть теоретически восстановлен.
- Вышесказанное лишает смысла дополнительно шифровать финал
exe
с пользовательскими ключами для ограничения перераспределения, поскольку распакованные файлы будут доступны во время выполнения. В этом смысле это эквивалентно просто использованиюmcc
для защиты. - Как дополнительный улов: MEX-файлы в дистрибутиве не зашифрованы. Вы можете взять mex-файл из MCR_CACHE и напрямую использовать его. То же самое касается классов Java.
- Следовательно, вам необходимо решение, которое будет шифровать / дешифровать запись / чтение диска, выполняемое исполняемым файлом MATLAB, в дополнение к шифрованию самого исполняемого файла.
- Очевидно, вам нужно уметь указать, какой диск используется для шифрования - вы хотите, чтобы пользователь мог предоставлять входные данные и читать его выходные данные.
- В идеале это решение также будет хранить зашифрованную копию двоичных файлов в памяти и расшифровывать их только при необходимости, то есть когда выполняется выполнение / доступ к фрагменту кода / данных
- Кроме того, решение должно обнаружить, что код выполняется из отладчика, и закрыть программу в таких случаях.
- Должно быть трудно перепроектировать процесс шифрования для извлечения ключей. С программным решением всегда возможно (и проще, чем с аппаратным решением) получить ключи.
В итоге мы решили использовать USB-ключ. Он выполняет шифрование / дешифрование на лету и более или менее решает вышеуказанные сложности. Он работает в настройке клиент / сервер, т. Е. У вас может быть USB-ключ на сервере, и клиенты обращаются к серверу для получения лицензии и запуска кода. Однако в то время полное шифрование поддерживалось только в Windows. Я не уверен, стоит ли мне упоминать название компании здесь на SO (я никоим образом не связан с ним, но в любом случае). Я могу рассказать вам в частном порядке, что мы использовали, или вы могли бы немного погуглить - на этом рынке есть альтернативы.
Изменить Я сделал ошибку в своем первоначальном утверждении. Архив действительно распаковывается в каталог MCR_CACHE, но файлы зашифрованы. Однако это все же не мешает распространению скомпилированной программы. Хотя сценарии недоступны в виде открытого текста, в этом смысле ваша интеллектуальная собственность защищена. Более подробное описание того, что средство развертывания MATLAB делает и не защищает, и краткое заявление относительно безопасности схемы можно найти здесь.
Существует коммерческая утилита под названием Taurus, которую можно использовать для защиты приложений Matlab от копирования, как в pcoded, так и в скомпилированном формате. Телец содержит множество типичных схем защиты от копирования, которые можно найти в настольных приложениях. Пожалуйста, смотрите http://www.algorithmprotection.com/index.php/component/content/article/34-products/46-taurus