Аппаратные алгоритмы – это математические функции преобразования данных, выполняющиеся в самом ключе, без использования ресурсов компьютера.
Аппаратные алгоритмы служат для кодирования информации, необходимой для работы защищенного приложения. При правильной организации системы защиты использование аппаратных алгоритмов делает бессмысленным удаление из тела приложения вызовы функций API: в этом случае не произойдет декодирование нужных приложению данных. Кроме того, сам факт наличия аппаратных алгоритмов сильно усложняет логику работы электронных ключей Guardant.
Использование аппаратных алгоритмов – это основной путь создания качественной и эффективной защиты приложения.
Аппаратные алгоритмы реализуются микропрограммой ключа, записанной в микроконтроллер, в сочетании с дескрипторами, которые хранятся в памяти электронного ключа. Микропрограмма ключа Guardant является неизменяемой частью алгоритма, ее невозможно ни считать, ни модифицировать. Для формирования конкретного вида алгоритма и его параметров, а также для управления его «поведением», служит дескриптор – набор данных, хранящихся в памяти ключа, доступной разработчику защиты.
GrdUtil.exe позволяет создавать, редактировать и удалять дескрипторы аппаратных алгоритмов.
Диалог создания алгоритма (при работе с аппаратными алгоритмами подразумевается, что все действия выполняются с их дескрипторами) выполнен в виде мастера, состоящего из нескольких страниц:
- Добавить алгоритм (см. ниже)
- Свойства алгоритма
- Временные зависимости (только для ключей типа Time)
- Определитель алгоритма (кроме алгоритма ECC160)
- Цифровая подпись ECC160 (только для алгоритма ECC160)
Переход к следующей странице происходит при помощи нажатия кнопки [Далее] после выполнения текущего диалога.
Чтобы создать аппаратный алгоритм выберите в Редакторе образа запись, далее выберите команду Образ ключа | (Поле) Добавить поле либо нажмите на запись правой клавишей мыши и в выпадающем меню выберите команду Добавить поле.
В появившемся диалоге Добавить новое поле выберите тип поля Алгоритм, задайте имя и тип нового алгоритма, а также размер его определителя.
Диалог добавления нового алгоритма: