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

Compare with Current View Page History

« Previous Version 3 Next »

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

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

 

Допустимое количество ошибок.Алгоритм с неизменяемым статусом

Значение поля Допустимое количество ошибок задает предельное число попыток ошибочного ввода пароля при попытке доступа к алгоритму (значение по умолчанию – 10).
В том случае, если при активации, деактивации, обновлении или других действиях, запрограммированных для данного алгоритма, число попыток набора неправильного пароля было превышено, то алгоритм блокируется и приобретает статус неизменяемой ячейки.
При этом если алгоритм до блокирования имел статус активного, то такой блокированный алгоритм можно выполнять при помощи команды GrdTransform, однако остальные действия, запрограммированные для этого алгоритма (изменение статуса или содержания), будут недоступны.
Если же алгоритм до блокирования не обладал статусом активного, то любая работа с этим алгоритмом будет невозможна.

Установить неактивное состояние

Флаг Установить неактивное состояние становится доступным после установки флага Активация.
Если схема защиты приложения предполагает, что алгоритм должен быть деактивирован изначально, установите флаг Установить неактивное состояние. Неактивный алгоритм выделяется в Редакторе образа бледно-серым шрифтом.

Размер дескриптора алгоритма

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

Временные зависимости алгоритма. Технология Time

В ключах с часами реального времени за страницей Свойства алгоритма следует страница Временные зависимости, на которой расположены элементы, позволяющие ограничивать время работы защищенного приложения.
Смысл технологии ограничения времени заключается в том, что работоспособность алгоритма зависит от таймера (RTC), встроенного в ключи Guardant Time/ Time Net / Code Time.
Информацию по диалогу Временные зависимости см. в разделе Ограничение астрономического времени работы приложения.

Редактирование определителя алгоритма

Диалог Определитель алгоритма представляет собой шестнадцатеричный редактор для ввода и изменения значения определителя:

По умолчанию при создании алгоритма в определитель записываются случайные числа. Их можно изменить, сформировав определитель самостоятельно, путем ввода новых значений непосредственно в окне редактора, или автоматически создать новый определитель (кнопка [Сгенерировать новое значение]).
GrdUtil.exe отслеживает «качественность» определителя и, в случае несоответствия критериям, выдает предупреждение:

Элементы управления диалога Определитель алгоритма:

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

Назначение

 

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

Ввести значение определителя аппаратного алгоритма

 

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

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

 

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

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

 

Флаг OEM

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

 

Кнопка [Сгенерировать новое значение]

Автоматически создать новый определитель алгоритма

 

Дополнительные элементы управления для уже созданного алгоритма

 

Список Размер данных

Изменить размер определителя созданного алгоритма

 

Кнопка [Изменить]

Отразить изменение размера определителя в окне редактора

 

Изменение размера определителя

GrdUtil.exe позволяет скорректировать размер определителя уже созданного алгоритма. Для этого выделите нужный алгоритм в списке полей, выполните команду меню Редактировать | Свойства поля и в появившемся диалоге перейдите на вкладку Определитель алгоритма.
Для изменения размера определителя служит разворачивающийся список Размер данных в левой части диалога. После выбора нужного значения нажмите на кнопку [Изменить] рядом со списком и запишите маску в ключ.

Ключ ECC160

При создании (редактировании) асимметричного алгоритма цифровой подписи ECC160 место диалога Редактирование определителя занимает Ключ ECC160.
Диалог Ключ ECC160 служит для генерации ключевой пары алгоритма цифровой подписи ECC160.
В верхней части диалога отображается секретный ключ алгоритма, в нижней – открытый. Справа располагаются кнопки, позволяющие выполнять сервисные действия с ключевой парой.

По умолчанию при создании алгоритма ECC160 генерируется ключевая пара из случайных чисел. Ключевую пару можно изменить, автоматически создав новую (кнопка [Сгенерировать новое значение]).
Кнопка [Сохранить] позволяет сохранить ключевую пару во внешнем файле (.ecc). По нажатию кнопки *[Загрузить] произойдет загрузка ранее сохраненной ключевой пары из файла (*.ecc).
Чтобы использовать алгоритм ECC160 при автозащите (опция /SIGN) необходимо указывать в качестве параметра опции файл с открытым ключом. Кнопка [Экспорт в bin-файл автозащиты] позволяет сохранить открытый ключ в файле (имя по умолчанию – PublicKey.bin).
Кнопка [Экспорт в исходный код] сохраняет ключевую пару в заголовочном файле на С++ (имя по умолчанию – EccKeySource.h).
***
После редактирования определителя (или ключа ECC160 для одноименного алгоритма) и нажатия на кнопку [Завершить] диалог создания алгоритма закрывается, и новый алгоритм появляется в списке полей образа. При этом GrdUtil.exe автоматически присваивает алгоритму числовое имя (порядковый номер)* Для защищенных ячеек и аппаратных алгоритмов действует единая нумерация и корректирует границу аппаратных запретов с учетом добавленного алгоритма.
Теперь остается записать маску в ключ, и созданный аппаратный алгоритм можно будет использовать.

Получение ответов симметричных алгоритмов

Чтобы использовать симметричные алгоритмы шифрования, необходимо знать, какую последовательность вернет алгоритм в ответ на заданный вопрос. Затем эту последовательность (ответ алгоритма) можно использовать для усложнения логики работы защиты.
GrdUtil.exe предоставляет удобный сервис для получения ответов симметричных алгоритмов. Утилита обращается к выбранному алгоритму, получает его ответы и сохраняет результаты в специальном файле отчета.
Важно!
Если алгоритм, для которого выполняется отчет, еще не был записан в память ключа, или свойства и/или определитель алгоритма были изменены в ходе редактирования образа, то перед генерацией отчета выполните команду меню Ключ | Запись в ключ
Чтобы получить массив ответов, выделите алгоритм в списке и выполните команду меню Разное | Создать отчет алгоритма:


В появившемся диалоге укажите число вопросов к алгоритму, нужный язык программирования и форму отчетов. Дополнительно для алгоритмов типа GSII64 укажите размер вопроса, а также метод и режим преобразования.
Вопросы к алгоритму представляют собой последовательности случайных чисел.

Число вопросов

В поле Число вопросов укажите число обращений в выбранной системе счисления к алгоритму функции GrdTransform.
На каждое обращение (вопрос) алгоритм генерирует ответную последовательность, длина которой равна длине вопроса.

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

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

Форма отчета

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

Форма отчета

Описание

1 массив

Вопрос и ответ алгоритма представляют чередующиеся элементы массива. Количество элементов массива равно удвоенному числу вопросов

2 массива

Вопросы алгоритма составляют первый массив элементов, соответствующие им ответы – второй. Количество элементов каждого массива равно числу вопросов

Дополнительные параметры для алгоритмов GSII64

Размер вопроса GrdTransform

Под размером вопроса (поле Размер вопроса) в данном случае подразумевается максимальная длина данных на входе операции GrdTransform, которую эта операция может обработать за один прием (ср. с понятием Размер вопроса алгоритму).
Для однонаправленных аппаратных алгоритмов длина вопроса GrdTransform – это величина постоянная, в отличие от алгоритмов типа GSII64, которые могут принимать от GrdTransform блоки данных разной длины:

Режимы работы алгоритма GSII64

Размер вопроса GrdTransform, байтов

ECB и CBC

Число, кратное 8. Максимальное значение – 248

CFB и OFB

Произвольное число, не превышающее 255

Задайте размер вопроса в одноименном поле ввода (значение по умолчанию 8 байтов).

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

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

Режим преобразования

Выберите направление преобразования (кодирование или декодирование) с помощью одноименного разворачивающегося списка.

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

По нажатию кнопки [Иниц. вектор] появляется шестнадцатеричный редактор, позволяющий задать значение вектора инициализации:

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

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

Назначение

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

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

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

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

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

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

Флаг OEM

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


Зависимость режимов работы симметричного алгоритма от вектора инициализации:

Режимы работыалгоритма AES/GSII64

Зависимость от вектора инициализации

ECB

Не зависит

CBC и OFB

Зависят. Для преобразования информации следует использовать один и тот же вектор инициализации. В противном случае данные будут декодированы неверно

CFB

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

 

Создание отчета

После нажатия кнопки [Создать отчет] появляется стандартный системный диалог сохранения файла (имя файла по умолчанию Transform.rep):

После этого начинается создание отчета. Используя операцию GrdTransform, 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