Как это работает

Основная задача, стоящая перед разработчиком, которому нужно защищать свою интеллектуальную собственность, — сделать так, чтобы с его программой могли работать только легальные пользователи. Соответственно, пиратская копия должна либо не работать вовсе, либо работать в ограниченном или демонстрационном режиме.

Понятно, что защитить программу от копирования невозможно: любой файл, который может быть прочитан, будет скопирован — для запуска приложения операционная система должна прочитать файл и загрузить его в память компьютера. Поэтому устоявшееся словосочетание «защита от копирования» в отношении программного обеспечения, строго говоря, не имеет смысла.

Значит, необходим «объект», который нельзя (или неоправданно сложно) скопировать и без которого программа не смогла бы работать. Этим «объектом» и является электронный ключ. И следующая задача разработчика — сделать так, чтобы приложение и ключ составляли нераздельное целое таким образом, чтобы программа, «привязанная» к ключу, не могла без него полноценно функционировать.

Наивысших показателей защищенности программного обеспечения можно добиться при использовании комбинации автозащиты и Guardant API

В общих чертах схема «привязки» выглядит следующим образом. Приложение отправляет некоторый запрос к ключу и, если получает корректный ответ, продолжает работу в штатном режиме. На первый взгляд, все очень просто, но весь секрет состоит в том, какие именно запросы отправляет приложение, каким образом ключ их обрабатывает и как приложение проверяет корректность данных, полученных в ответ на запрос.

Сам по себе электронный ключ можно представить аппаратным «черным ящиком», выполняющим некоторые функции. Аналитик имеет доступ к входным и выходным данным, но не знает, какое преобразование выполняется внутри. Собственно, это преобразование и используется для привязки. Привязка приложения к ключу может производиться путем автоматической защиты готовой программы или встраиванием функций Guardant API в исходный код приложения, а также комбинацией этих методов.

Эволюция технологий защиты

За всю свою немалую по меркам IT-индустрии историю, по некоторым оценкам составляющую почти 30 лет, электронные ключи эволюционировали от примитивных перемычек, выставленных определенным способом, до современных интеллектуальных устройств, способных выполнять сложные вычисления.

С развитием самих устройств прогрессировали и функции преобразования данных, а как следствие — методы, которые используются для привязки к ним приложений. Удобно рассматривать функции преобразования в том порядке, в каком они появлялись в электронных ключах, и сопоставлять их с уровнем сложности нейтрализации привязки.

Проверка присутствия ключа Самый простой и древний способ привязки, применялся для самых первых ключей. Его нейтрализация не представляет практически никакой сложности. В настоящее время может использоваться только как подготовительная операция для последующей работы с ключом.
Чтение данных из памяти ключа Приложение пользуется считанными из ключа статическими данными для своей дальнейшей работы. Этот способ появился, когда в ключах для хранения данных стали применяться схемы ПЗУ (ROM).
Чтение и запись данных в память ключа Кроме чтения статических данных, приложение также пишет в ключ некую информацию для последующего использования. Этот способ является развитием предыдущего, он появился, когда для хранения данных в ключе начали использоваться электрически перепрограммируемые ПЗУ (EEPROM).
Вычисление однонаправленных функций с секретом Это уже достаточно сложный метод, который возможен для ключей на программируемых микроконтроллерах и заказных микросхемах (ASIC). Однако его стойкость зависит от выбранной функции преобразования. Приложение работает с предопределенным набором входных данных и проверяет наличие ключа по предвычисленным выходным данным. При этом сами выходные данные или производные от них должны храниться непосредственно в приложении. Секрет для преобразования данных может задаваться либо разработчиками электронного ключа, либо разработчиками приложения.
Зашифрование и расшифрование данных криптографически стойкими симметричными алгоритмами Появление этого метода было обусловлено ростом производительности микроконтроллеров, используемых в ключах. Он позволяет работать не с предопределенными, а с «натуральными» данными приложения, что затрудняет нейтрализацию такой привязки. Ключ шифрования задается разработчиками приложения и хранится в памяти электронного ключа, не покидая ее во время преобразования.
Вычисление электронной цифровой подписи Ресурсов современных микропроцессоров достаточно для реализации в электронных ключах асимметричных криптографических алгоритмов. Основное достоинство этого метода состоит в том, что для привязки приложения к ключу можно взять абсолютно любые, и даже случайные, данные. Для проверки ЭЦП используются программно-реализованные алгоритмы, которые можно хорошо замаскировать среди других вычислений.
Выполнение электронным ключом произвольного кода Один из самых современных методов. Основное его достоинство состоит в том, что ключ может выполнять осмысленные и полезные для приложения вычисления над «натуральными» данными. Из недостатков можно назвать необходимость правильного выбора алгоритмов, размещаемых в ключе. Критерии выбора основаны на производительности и сложности алгоритмов для анализа по входным и выходным данным.
Многоканальный телефон: +7 (495) 925-77-90
1996-2010 © Компания «Актив». Все права защищены.
Электронные ключи Guardant
123056 Россия Москва Красина ул., 3
Телефон: +7 (495) 925-77-90
www.guardant.ru