Защита данных компании в исполняемом файле программного обеспечения с открытым исходным кодом

Мы являемся пользователями проекта моделирования с открытым исходным кодом, где лицензионное соглашение разрешает распространение исполняемого файла без исходного кода. Программное обеспечение скомпилировано в виде DLL и может быть инициализировано при запуске двумя способами:

  1. Он считывает ряд текстовых файлов, понятных человеку, для выделения/установки различных переменных. Это опция по умолчанию.
  2. Кроме того, с дистрибутивом поставляется необязательный исходный файл для установки переменных во время компиляции. Входные файлы не нужны.

Второй вариант возник из-за того, что пользователи не решались распространять входные файлы, потому что они содержат интеллектуальную собственность того, что они моделируют. Разработчики любезно согласились.

Вопрос: Предположим, второй вариант используется компанией А для распространения исполняемого файла для использования их клиентами. Какие действия может предпринять компания А, чтобы обеспечить защиту/охрану/шифрование данных? Паранойя здесь заключается в том, чтобы быть уверенным, что кто-то не сможет использовать исходный код для поиска шаблонов (посредством декомпиляции или других средств) в исполняемом файле и обнаружения значений переменных во время компиляции.

ОС - Linux, OSx и Windows.


person Community    schedule 22.05.2016    source источник
comment
Это похоже на несколько существующих вопросов об обфускации двоичных файлов (например, stackoverflow.com/questions/2273610/).   -  person Oliver Charlesworth    schedule 22.05.2016
comment
Если он в двоичном формате, его можно найти. Период. Существуют экспериментальные исследования, направленные на то, чтобы сделать поведение программы невозможным для понимания, но на самом деле это непригодно для использования.   -  person fuz    schedule 22.05.2016
comment
Слишком широко. Это не консультационный сайт.   -  person too honest for this site    schedule 22.05.2016
comment
Пожалуйста, не изменяйте свой вопрос после того, как на него были получены ответы.   -  person Mat    schedule 22.05.2016


Ответы (1)


Никто.

Тот факт, что инструмент с открытым исходным кодом, имеет мало общего с вопросом. С одной небольшой поправкой это тот же ответ для IP, скомпилированный в программу с закрытым исходным кодом.

Шифрование не работает. Подробнее об этом можно прочитать здесь, но в двух словах вам нужно предоставить своим противникам как заблокированные данные и ключ. Такая схема эффективно работает с нулевой длиной ключа и называется «запутыванием».

Еще одним усложняющим фактором является то, что ваш противник заинтересован в данных, которые передаются по четко определенному интерфейсу в DLL. Любой может отслеживать интерфейсы между вашей программой и DLL и получать фактические данные так же легко, как если бы они были в файле.

Единственное, что вы можете сделать, и тут вам на помощь приходит открытый исходный код, это интегрировать свой IP в DLL, а затем попытаться запутать все это дело. Как и прежде, имейте в виду, что это эффективно только для того, чтобы затруднить доступ к данным, что никогда не бывает невозможным.

person Shachar Shemesh    schedule 22.05.2016