Загружаемый код
Электронный ключ для защиты программного обеспечения представляет собой своего рода доверенную платформу, позволяющую производить вычисления вне центрального процессора и оперативной памяти компьютера, на котором работает защищенное приложение. Это основной принцип, отличающий защиту с использованием электронных ключей от иных технологий, не использующих вычисления на доверенной платформе.
Традиционно электронные ключи «умели делать» две основные вещи:
- Хранить какие-либо данные, критичные для работы защищаемого приложения;
- Выполнять внутри ключа операции, преобразующие данные по неким алгоритмам.
Эти алгоритмы, как правило, представляли собой либо симметричные алгоритмы шифрования, либо однонаправленные функции с секретным ключом преобразования.
Разработчики систем защиты, основанных на традиционных электронных ключах, зачастую испытывали сложности с выбором данных, которые можно было бы подвергать преобразованиям. Как правило, такие данные приходится генерировать искусственно, а не использовать поток реальных данных, на которых производятся вычисления.
В связи с этим существовали проблемы, связанные с тем, что преобразованные аппаратным алгоритмом данные:
- Во-первых, далеко не всегда можно использовать напрямую в приложении
- Во-вторых, нужно очень постараться, чтобы поток этих данных был разнообразным на протяжении достаточно длительного времени.
Защитный механизм загружаемого кода основан на том, что алгоритм, запрограммированный в ключ самим разработчиком, обрабатывает натуральные (естественные) данные, получаемые в процессе работы приложения. Обработанные данные можно использовать в приложении напрямую, исключая проверки валидности, которые, как правило, сводятся к одной-двум ассемблерным командам.
Поток натуральных данных не постоянен и разнообразен. Поэтому алгоритм загружаемого кода с большой вероятностью будет производить вычисления на постоянно меняющихся данных, если алгоритм этот верно выбран и корректно реализован.

