Одной из основных задач для разработчиков программ является
защита своей интеллектуальной собственности. Каждый разработчик желает сделать
так, чтобы его программой могли пользоваться только легальные пользователи. А
вот пиратская копия какой-либо программы должна работать с большими
ограничениями в режиме демонстрации, или же не работать вовсе.
Конечно же,
защититься от копирования довольно сложно. Ведь любой файл, который может быть
прочитан, может быть и скопирован. Дело в том, что для запуска приложения
операционной системой данный файл должен быть прочитан и скопирован в памяти
компьютера. Именно поэтому, известная фраза «защита от копирования»
практически не имеет смысла, если это относится к программному обеспечению.
Поэтому необходим
«объект», который невозможно скопировать, и без которого программа
работать не будет. Именно таким объектом и является электронный ключ. И
следующей задачей разработчиков является сделать так, чтобы программа и данный
ключ являлись нераздельным целым, и программа, привязанная к этому ключу, не
сможет без него полноценно выполнять все свои функции.
Схема данной привязки
программы к ключу выглядит так: программа отправляет определенный запрос к
своему ключу, и если получает правильный ответ, продолжает работать в
правильном режиме. С первого взгляда, вроде бы, все просто, однако вся суть
заключается в том, какие именно запросы отправляет программа, и как их
обрабатывает ключ.
Вообще ключ можно
представить в виде аппаратного «черного ящика», который предназначен
выполнять некоторые функции. Аналитик имеет доступ к данным, как к входным, так
и к выходным, хотя он и не знает, какое преобразование выполняется внутри. А
именно это преобразование и применяется для привязки программы к ключу.
Привязка может производиться при помощи автоматической защиты готовой
программы, или же функцией Guardant API, которая встраивается в исходный код
приложения.
Эволюция технологий
защиты
За свою долгую
историю электронные ключи эволюционировали. Они превратились из обыкновенных
перемычек в идеальные интеллектуальные устройства, которые имеют возможность
выполнять довольно сложные вычисления.
По мере развития
самих устройств, эволюция коснулась и способностей преобразования данных, вследствие
чего стали разрабатываться методы привязки программ.