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