You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Аппаратные алгоритмы – это математические функции преобразования данных, выполняющиеся в самом ключе, без использования ресурсов компьютера.
Аппаратные алгоритмы служат для кодирования информации, необходимой для работы защищенного приложения. При правильной организации системы защиты использование аппаратных алгоритмов делает бессмысленным удаление из тела приложения вызовы функций API: в этом случае не произойдет декодирование нужных приложению данных. Кроме того, сам факт наличия аппаратных алгоритмов сильно усложняет логику работы электронных ключей Guardant.
Использование аппаратных алгоритмов – это основной путь создания качественной и эффективной защиты приложения.
Аппаратные алгоритмы реализуются микропрограммой ключа, записанной в микроконтроллер, в сочетании с дескрипторами, которые хранятся в памяти электронного ключа. Микропрограмма ключа Guardant является неизменяемой частью алгоритма, ее невозможно ни считать, ни модифицировать. Для формирования конкретного вида алгоритма и его параметров, а также для управления его «поведением», служит дескриптор – набор данных, хранящихся в памяти ключа, доступной разработчику защиты.
Подробное описание дескрипторов аппаратных алгоритмов см. в Руководство пользователя, Часть 2, глава Аппаратные алгоритмы.
GrdUtil.exe позволяет создавать, редактировать и удалять дескрипторы аппаратных алгоритмов.
Диалог создания алгоритма^*^ При работе с аппаратными алгоритмами подразумевается, что все действия выполняются с их дескрипторами. выполнен в виде мастера, состоящего из нескольких страниц:

Переход к следующей странице происходит при помощи нажатия кнопки [Далее] после выполнения текущего диалога.

 

 

 

Шифрование данных симметричным алгоритмом

В электронных ключах Guardant реализованы симметричные аппаратные алгоритмы GSII64 и AES128. Они выполняют аппаратное преобразование данных. Подробную информацию о симметричных алгоритмах см. во 2-й части Руководства пользователя.
Предварительно закодированные данные могут храниться в защищенном приложении или отдельных файлах и декодироваться непосредственно перед использованием.
Для вызова алгоритма из приложения используется операция GrdTransform. Подробную информацию об операциях Guardant API см. в разделе Guardant API.
GrdUtil.exe предоставляет удобный сервис для предварительной подготовки данных преобразования. С помощью утилиты можно закодировать и декодировать информацию. Подготовленные данные в дальнейшем используются при защите приложения.

Подготовка данных для преобразования

Выделите в списке полей Редактора образа алгоритм типа AES или GSII64 и выполните команду Разное | Шифрование. На экране появится диалоговое окно Преобразование алгоритмом №N** Где N – числовое имя (порядковый номер алгоритма).

В диалоге определите следующие параметры:

  • Входные данные и их вид
  • Вектор инициализации
  • Выходные данные и их вид
  • Направление и метод кодирования
  • Язык программирования (если выходные данные представлены в виде исходного текста)

Входные данные

Данные, которые необходимо преобразовать, могут быть представлены в виде: строки символов или файла любого формата.
Для выбора вида данных на входе служит раскрывающийся список в верхней части диалога.
По нажатию кнопки […], расположенной напротив списка, открывается, либо диалог Введите строку для ввода строки символов, либо стандартный системный диалог для указания имени файла данных и пути к нему:


Заданная строка или имя файла с данными и путь к нему отображаются в поле ввода Входные данные.

Вектор инициализации

Вектор инициализации – случайное число, которое используется для работы симметричного алгоритма в режимах работы CFB, CBC и OFB. Вектор инициализации для GSII64 равен 8 байтов, для AES128 – 16 байтов.
Вектор инициализации генерируется автоматически при открытии диалога Трансформация алгоритмом №N и отображается в соответствующем поле ввода.
При необходимости вектор инициализации по умолчанию можно изменить. По нажатию на кнопку [Иниц. вектор] на экране появляется шестнадцатеричный редактор, в окне которого можно скорректировать значение или ввести новый вектор.
Диалог Вектор инициализации:

Элементы управления диалога Вектор инициализации:

Элемент интерфейса

Назначение

Окно шестнадцатеричного редактора

Ввести значение вектора инициализации

Кнопка [Загрузить]

Загрузить дамп из файла с расширением *.dmp

Кнопка [Сохранить]

Сохранить дамп в файле с расширением *.dmp

Флаг OEM

Выбрать Windows- / DOS-кодировку. По умолчанию используется Windows-кодировка (ANSI) – опция OEM отключена


При выполнении преобразования значение вектора изменяется. Кнопка [Восстановить] служит для восстановления исходного вектора инициализации.

Выходные данные

Преобразованные данные могут иметь следующий вид:

Данные на выходе

Описание

Исходный текст

Текстовый файл, содержащий закодированные данные в виде массива чисел и созданный по правилам синтаксиса одного из основных языков программирования: Assembler, C/C++, Pascal/Delphi

Двоичный файл

Закодированная последовательность байтов


Для выбора представления данных на выходе служит раскрывающийся список в средней части диалога.
По нажатию кнопки […], расположенной напротив списка, открывается стандартный системный диалог для указания имени файлас преобразованными данными (по умолчанию - Output.rep) и пути к нему:

Имя файла с данными и путь к нему отображаются в поле ввода Выходные данные.

Кнопка [Выполнить]

По нажатию на кнопку [Выполнить] начинается процесс кодирования (декодирования) данных. Кнопка становится доступной после заполнения секций Входные данные и Выходные данные.

Язык программирования

Развертывающийся список Язык программирования расположен в нижней части диалога и становится доступным в том случае, если выбрано представление закодированных данных в виде исходного текста.
В списке представлены следующие языки программирования: Assembler, C/C++, Pascal/Delphi.

Кодирование и декодирование

Разворачивающийся список Команда служит для выбора операции, которая будет совершена над входными данными: кодирование или декодирование.

Метод преобразования

Алгоритмы типа GSII64 и AES128 имеют 4 режима работы, которые отличаются по своим характеристикам и назначению. Подробнее см. во 2-й части Руководства пользователя.
Для выбора метода преобразования предназначен одноименный разворачивающийся список.

Выполнение преобразования

Преобразование начинается после нажатия на кнопку [Выполнить], расположенную в верхней части диалога.

Запись данных образа в память ключа

Перед выполнением преобразования утилита выдает запрос о необходимости записи данных образа в ключ:

Предварительная запись образа в ключ необходима в случае, если используется новый алгоритм, либо алгоритм, у которого был изменен определитель.

Сохранение отчета

Далее на экране появится диалог сохранения отчета о преобразовании, в котором нужно указать имя (по умолчанию report.rep) и путь к файлу отчета.
Отчет о преобразовании представляет собой текстовый файл, созданный по правилам синтаксиса указанного ранее языка программирования. В отчете содержится статистическая информация о параметрах преобразования и заданный пароль в виде массива.

Процесс преобразования

После сохранения отчета на экране появится окно индикатора выполнения:

Преобразованные данные помещаются в заданный выходной файл в виде массива или последовательности байтов.

Декодирование

Процесс декодирования выполняется аналогично процессу кодирования (см. выше). В качестве данных на входе используется файл с кодированными данными. Направление преобразования меняется на декодирование (список Команда).
Важно!
Для корректного декодирования данных необходимо пользоваться тем же алгоритмом, вектором инициализации и методом преобразования, которые использовались для кодирования.

  • No labels