Практически, если код и ключи на машине SD - карты, они будут иметь возможность декомпилировать его, они будут иметь возможность открыть для себя ключи , и они будут иметь возможность извлечь конфиденциальные данные.
Это как шифрование фильмов, DVD должен включать всю информацию, необходимую для расшифровки фильма, чтобы его можно было показать зрителю, так что все механизмы защиты от копирования фильма в конечном итоге обречены.
Лучшее, что вы можете сделать, это изменить экономику обратного проектирования вашего продукта.
Стоит ли шифрование и / или запутывание?
Теперь мы установили, что нет способа полностью защитить себя, вопросы становятся
- Насколько вероятно, что это произойдет?
- Какова ценность для кого-то еще вашего алгоритма и данных?
- Сколько стоит им покупка лицензии на использование вашего программного обеспечения?
- Сколько стоит им тиражирование вашего алгоритма и данных?
- Сколько стоит им обратный инжиниринг вашего алгоритма и данных?
- Сколько стоит защита вашего алгоритма и данных?
Если это создает значительный экономический императив для защиты вашего алгоритма / данных, то вам следует заняться этим. Например, если стоимость услуги и стоимость для клиентов высоки, но стоимость обратного инжиниринга вашего кода намного ниже, чем стоимость его разработки самостоятельно, тогда люди могут попробовать это.
Итак, это приводит к вашему вопросу
- Как вы защищаете свой алгоритм и данные?
затемнение
Вариант, который вы предлагаете, запутывая код, смешивается с экономикой выше - он пытается значительно увеличить стоимость для них (5 выше) без значительного увеличения стоимости для вас (6). Проблема заключается в том, что, как и в случае с шифрованием DVD, оно обречено на провал, и если разницы между 3, 4 и 5 достаточно, то в конечном итоге это кто-то сделает.
Другим вариантом может быть форма стеганографии , которая позволяет вам определить, кто расшифровал ваш код и начал его распространять. Например, если у вас есть 100 различных значений с плавающей запятой как часть ваших данных, и 1-битная ошибка в LSB каждого из этих значений не вызовет проблем с вашим приложением, закодируйте уникальный (для каждого клиента) идентификатор в эти биты , Проблема в том, что если кто-то имеет доступ к нескольким копиям данных вашего приложения, очевидно, что они различаются, что облегчает идентификацию скрытого сообщения.
защита
Единственный действительно безопасный вариант - предоставить критически важную часть вашего программного обеспечения как услугу , а не включать ее в свое приложение.
Концептуально ваше приложение будет собирать все данные, необходимые для запуска вашего алгоритма, упаковывать его как запрос к серверу (контролируемому вами) в облаке , а затем ваша служба будет рассчитывать ваши результаты и передавать их клиенту, который бы отображал это.
Это сохраняет все ваши собственные конфиденциальные данные и алгоритмы в домене, который вы полностью контролируете, и исключает любую возможность извлечения клиента любым из них.
Очевидным недостатком является то, что клиенты привязаны к вашему обслуживанию, находятся в зависимости от ваших серверов и их интернет-соединения. С другой стороны, они всегда в курсе исправлений ошибок. К сожалению, многие люди возражают против SaaS именно по этим причинам.
Это был бы огромный шаг, который мог бы стоить выше 6, но это единственный способ, которым я могу обеспечить полную безопасность вашего алгоритма и данных .