Специалисты Guardant пришли к выводу, что только одновременное использование аппаратных ключей, API и технологии защиты кода позволяет разработчику максимально обезопасить свой программный продукт от компьютерного пиратства.
В линейке Guardant присутствует порядка 30 моделей аппаратных ключей. Однако большинство из них созданы на базе Guardant Sign и наследуют его механизмы и принципы построения защиты. Среди основных характеристик аппаратного ключа можно выделить технологию туннельного шифрования трафика, которая защищает канал общения между ключом и приложением таким образом, что идентичный блок данных при пересылке в разное время выглядит по-разному. Также к главным принципам построения надежной защиты можно отнести использование аппаратных алгоритмов ключа: AES-128 для симметричного шифрования и ECC-160 для подписи данных.
Особое внимание было уделено семейству ключей Guardant Code. Помимо того, что модели данного типа полностью кроссплатформенны, они позволяют загрузить часть защищаемой программы в свою внутреннюю память. Это позволяет вынести важные участки кода из приложения и спрятать их в ключ, что особенно актуально для .NET-программ. А также дополнительно озадачить злоумышленника за счет того, что убрать все вызовы аппаратных алгоритмов из тела приложения в ключ, а на их место поставить обезличенную функцию вызова загружаемого кода.
Важным компонентом защиты является Guardant API. Автоматические средства позволяют обеспечить привязку программного продукта к ключу максимально быстро и при этом достаточно надежно. Разработчику не нужно погружаться в процесс, придумывать схему защиты, разбираться в тонкостях ее построения и т. д. Однако для создания максимального уровня безопасности приложения встройка API необходима. При соблюдении рекомендаций она даст разработчику возможность построить уникальную защиту, которая станет нерешаемой головоломкой для злоумышленника.
Помимо использования надежного аппаратного ключа и встройки API разработчику стоит озаботиться вопросом безопасности программного кода. Так как приложение — это всего лишь набор инструкций для компьютера, хакер при должном уровне усердия может определить принцип работы и схему защиты программы. Это позволит ему либо скопировать исполняемый код, либо «отрезать» защитные механизмы. Чтобы не допустить этого, применяются особые утилиты — протекторы.
В арсенале Guardant есть протекторы как для .Net, так и для native-приложений — Guardant Armor. Они шифруют код программы, меняют местами блоки данных, добавляют мусорные инструкции, делают нечитаемыми названия переменных и функций, запутывают логику выполнения программы, виртуализируют код — переводят на уникальный язык и т. д. При этом защищаемое приложение остается полностью работоспособным.
Подводя итоги, необходимо подчеркнуть, что при защите программного обеспечения разработчик может пойти по одному из двух путей: быстро и просто или максимально надежно. К сожалению, в современном мире пиратство софта — это обычное явление, и путь «быстро и просто» может очень дорого обойтись разработчику. Поэтому наилучшее решение — это вдумчивое, последовательное и комплексное построение уникальной защиты программного продукта.