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

Compare with Current View Page History

Version 1 Next »

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

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

Создание алгоритма

Чтобы создать аппаратный алгоритм, выполните команду Редактировать | Добавить новое поле.
В появившемся диалоге Добавить новое поле выберите тип поля Алгоритм, задайте имя и тип нового алгоритма, а также размер его определителя.
Диалог добавления нового алгоритма:

Тип алгоритма

Выберите тип алгоритма при помощи разворачивающегося списка.
Тип создаваемого алгоритма зависит от образа ключа:

Тип образа

Тип алгоритма

Guardant Time/ Time Net

1. Симметричное шифрование: GSII64, в т. ч. особыережимы алгоритма только для кодирования и декодирования
2. Симметричное шифрование: AES128, в т. ч. особыережимы алгоритма только для кодирования и декодирования
3. Выработка ЭЦП: ECC160
4. Выработка хэш-функции: HASH64
5. Выработка хэш-функции: SHA256
6. Генерация случайных чисел: RND64

Guardant Sign/ Sign Net

 

Guardant Code/ Code Time

1. Симметричное шифрование: AES128, в т. ч. особыережимы алгоритма только для кодирования и декодирования
2. Выработка ЭЦП: ECC160
3. Выработка хэш-функции: SHA256

Guardant Stealth III / Net III

1. Симметричное шифрование: GSII64
2. Выработка хэш-функции: HASH64
3. Генерация случайных чисел: RND64

Guardant Stealth II / Net II

1. Симметричное шифрование: GSII64
2. Однонаправленный алгоритм Stealth и его разновидности: Fast, Random, AutoProtect

Guardant Stealth / Net

Однонаправленный алгоритм Stealth и его разновидности: Fast, Random, AutoProtect

Guardant Fidus

-


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

Определитель – основная составляющая дескриптора аппаратного алгоритма, которая задает конкретный вид функции преобразования. Определители алгоритмов в современных ключах Guardant имеют фиксированную четную длину, зависящую от типа алгоритма. С помощью GrdUtil.exe можно задавать размер определителя и редактировать его вид.
Чтобы выбрать (или задать – для однонаправленного алгоритма Stealth) размер определителя, воспользуйтесь одноименным комбинированным полем-списком, слева от которого указывается система счисления.
Размер определителя зависит от типа алгоритма:

Тип алгоритма

Размер определителя, байтов

Симметричное шифрование: AES128

16

Выработка ЭЦП: ECC160

20

Симметричное шифрование: GSII64

16 или 32

Выработка хэш-функции: SHA256

-

Выработка хэш-функции: HASH64

16 или 32

Генерация случайных чисел: RND64

16 или 32

Однонаправленный Stealth – устаревш.

4 – 200 (оптимально - 32)


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

Свойства алгоритма

Диалог Свойства алгоритма служит для определения свойств создаваемого алгоритма: задания комбинации флагов, размера вопроса, а также набора сервисов для алгоритмов.

Флаги свойств алгоритмов

Группа флагов в левой верхней части диалога (Зависит от ID, Зависит от счетчика и С уменьшением счетчика) служит для задания свойств аппаратного алгоритма. Комбинирование этих свойств позволяет создавать алгоритмы с различными режимами работы, адаптированные для решения разных задач (получение случайных чисел, ограничение числа запусков, и проч.).
Возможные комбинации флагов свойств алгоритмов:

Комбинация флагов

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

Описание режима

Флагине установлены

Режимпо умолчанию

Алгоритм от флагов не зависит

Установлен флаг Зависит от ID

Уникальность алгоритма по ID

Кодирование зависит от ID ключа. При одинаковых определителях алгоритмы в разных ключах кодируют данные по-разному

Установлен флаг Зависит от счетчика

Зависимостьалгоритмаот счетчика

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

Установлен флаг С уменьшением счетчика

Ограничение числа запусков алгоритма

В поле счетчика алгоритма записывается 4-байтовое начальное значение. Счетчик декрементируется при каждом вызове GrdTransform, а по достижении счетчиком значения 0 алгоритм перестает выполняться

Установлены флаги Зависит от ID и Зависитот счетчика

Зависимость алгоритма от счетчика + уникальность по ID

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

Установлены флаги Зависит от ID и С уменьшением счетчика

Ограничение числа запусков алгоритма + уникальность по ID

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

Установлены флаги Зависит от счетчика и С уменьшением счетчика

Генераторпсевдослучайных чисел

В поле счетчика алгоритма записывается большое 4-байтовое начальное значение. Счетчик декрементируется при каждом вызове GrdTransform, а по достижении счетчиком значения 0 алгоритм перестает выполняться. При этом преобразование выполняется с каждым уменьшением счетчика по-разному

Установлены флаги Зависит от ID, Зависит от счетчика и С уменьшением счетчика

Генератор псевдослучайных чисел

Кодирование зависит от ID ключа. При одинаковых определителях алгоритмы в разных ключах кодируют данные по-разному.
В поле счетчика алгоритма записывается большое 4-байтовое начальное значение. Счетчик декрементируется при каждом вызове GrdTransform, а по достижении счетчиком значения 0 алгоритм перестает выполняться. При этом преобразование выполняется с каждым уменьшением счетчика по-разному


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

Значение счетчика

Счетчик алгоритма – специальное 4-байтовое поле, входящее в состав дескриптора алгоритма. Счетчик обычно используется для ограничения числа запусков алгоритма, а также в режимах зависимости алгоритма от счетчика.
Поле ввода Значение счетчика становится доступным при использовании флагов Зависит от счетчика или С уменьшением счетчика. Оно располагается в верхней правой части диалога. Рядом с полем указывается система счисления.

Размер вопроса алгоритму

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

Тип алгоритма

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

Симметричный AES128

16

Асимметричный ECC160

20

Однонаправленный SHA256

32

Симметричный GSII64

8

Однонаправленные HASH64, RND64

8

Однонаправленный Stealth^*^ Однонаправленный алгоритм Stealth на сегодняшний день является морально устаревшим, его рекомендуется только для поддержания существующей системы защиты.

4 – 255 (желательно использовать четные числа)


Сервисы аппаратных алгоритмов

В группе Доступные сервисы расположены флаги, управляющие сервисами алгоритмов. Использование сервисов значительно расширяет функциональность аппаратных алгоритмов.
Сервисы позволяют:

  • Задавать состояние алгоритма (активное/неактивное)и, в дальнейшем, управлять им из приложения или путемудаленного обновления
  • Получать доступ к содержимому дескриптора алгоритмаи обновлять его, не затрагивая (не перезаписывая) остальную память – ср. с идеологией аппаратных запретов.

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

Активация

Если в свойствах алгоритма включен сервис Активация, то этот алгоритм в определенный момент можно сделать активным, обратившись к нему из приложения с помощью специальной команды Guardant API или выполнив процедуру обновления.
После активации с алгоритмом можно выполнять все ранее запрограммированные для него действия: выполнять преобразования, читать содержимое дескриптора алгоритма, обновлять определенные участки дескриптора, деактивировать алгоритм.
Примеры использования
1. Удаленная активация алгоритма, который отвечает за работоспособность дополнительных модулей приложения, после получения оплаты от конечного пользователя.
2. Активация дополнительного алгоритма по определенному событию для усложнения логики работы программы.
3. Активация нового и деактивация старого алгоритма при выходе новой версии приложения. При этом все алгоритмы должны быть заранее созданы и их свойства и сервисы должны быть определены.
Активация алгоритма из приложения выполняется с помощью команды GrdPI_Activate.
Установка флага Активация включает одноименный сервис, при этом становятся доступными опции (подробнее о них см. ниже):

  • Поле ввода Пароль активации
  • Поле ввода Постоянный/случайный пароль
  • Флаг Установить неактивное состояние

А также появляется опция, общая для всех сервисов:

  • Поле Допустимое количество ошибок при наборе паролей

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

Деактивация

Если в свойствах алгоритма включен сервис Деактивация, то алгоритм в определенный момент можно сделать неактивным, обратившись к нему из приложения с помощью специальной команды Guardant API или выполнив процедуру обновления.
После деактивации алгоритм можно только активировать (если сервис активации был предварительно включен в свойствах алгоритма), но нельзя выполнять остальные действия, запрограммированные для этого алгоритма.
Деактивация алгоритма из приложения выполняется с помощью команды GrdPI_Deactivate.
Установка флага Деактивация включает одноименный сервис, при этом становятся доступными опции (подробнее о них см. ниже):

  • Поле ввода Пароль деактивации
  • Поле ввода Постоянный/случайный пароль

А также появляется опция^*^ Если она уже не появилась после включения другого сервиса, общая для всех сервисов:

  • Поле Допустимое количество ошибок при наборе паролей

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

Чтение данных. Чтение по паролю

Если в свойствах алгоритма включен сервис Чтение данных,то можно получить информацию о содержимом определителяэтого алгоритма, обратившись к нему из приложения с помощью специальной команды Guardant API.
Если при этом включить сервис Чтение по паролю, то для выполнения команды чтения необходимо будет указать верный пароль.
Доступ к содержимому аппаратного алгоритма из приложения выполняется с помощью команды GrdPI_Read.
Установка флага Чтение данных включает одноименный сервис, при этом становится доступной опция Чтение по паролю.
Установка флага Чтение по паролю включает одноименный сервис, при этом становятся доступными опции (подробнее см. далее):

  • Поле ввода Пароль для чтения данных
  • Поле ввода Постоянный/случайный пароль

А также появляется опция^*^ Если она уже не появилась после включения другого сервиса, общая для всех сервисов:

  • Поле Допустимое количество ошибок при наборе паролей

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

Обновление данных

Если в свойствах алгоритма включен сервис Обновление данных, то содержимое определителя такого алгоритма можно будет изменить, обратившись к нему из приложения с помощью специальной команды Guardant API.
Запись новых данных в дескриптор алгоритма из приложения выполняется с помощью команды GrdPI_Update.
Установка флага Обновление данных включает одноименный сервис, при этом становятся доступными опции (подробнее см. далее):

  • Поле ввода Пароль для обновления данных
  • Поле ввода Постоянный/случайный пароль

А также появляется опция*, общая для всех сервисов:

  • Поле Допустимое количество ошибок при наборе паролей

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

Пароли

Для выполнения команд Guardant API, изменяющих статус алгоритма, либо его содержимое, требуется указать пароль, предварительно заданный при включении сервиса(-ов). Для ввода паролей служат поля, расположенные напротив флагов, которые управляют тем или иным сервисом.
Поля ввода в секции Пароли становятся доступными при использовании соответствующего сервиса.
Максимальная длина каждого пароля составляет 4 байта.

Постоянный/случайный пароль

Пароль для сервиса может быть постоянным, т. е. одинаковым для всех ключей, использующих данный алгоритм, либо случайным, т. е. для каждого следующего ключа, который прошивается данным шаблоном образа, автоматически задается случайный пароль.
Важно!
Использование случайных паролей предполагает работу в режиме базы данных 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