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

Compare with Current View Page History

Version 1 Next »

Ключи моделей Guardant Code / Code Time позволяют загружать и исполнять специально написанный код приложения внутри ключа. Подробно см. Руководство пользователя, Часть 3 «Guardant Code».
GrdUtil.exe предоставляет удобный сервис для работы с загружаемыми кодом, в том числе, его автоматическое преобразование из Bin-файла в формат, пригодный для записи в ключ (GCEXE), и, собственно, запись GCEXE во Flash-память.
Работа с полем типа Загружаемый код из приложения происходит при помощи специальных функций Guardant API: GrdCodeGet-Info, GrdCodeLoad, GrdCodeRun (подробности см. в GrdAPI.chm).
Диалог создания поля выполнен в виде мастера, состоящего из нескольких страниц:

  • Добавить загружаемый код
  • Свойства загружаемого кода
  • Временные зависимости (для Guardant Code Time)
  • Настройки загружаемого кода

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

Добавление поля Загружаемый код

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

Ячейка Загружаемый код имеет фиксированный размер 160 байт.

Свойства загружаемого кода

Поле типа Загружаемый код в Guardant Code / Code Time представляет собой частный случай защищенной ячейки, то есть, оно защищено аппаратными запретами на чтение и запись. И его состояние можно программировать и, в дальнейшем, управлять им из приложения.
Для загружаемого кода доступны только сервисы активации и деактивации, которые управляют состоянием защищенной ячейки и обеспечивают доступ к ее содержимому из приложения.
Работа с сервисами активации и деактивации загружаемого кода полностью идентична работе с сервисами защищенных ячеек и алгоритмов. Подробную информацию см. в разделе Сервисы аппаратных алгоритмов.

Временные зависимости загружаемого кода

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

Настройки загружаемого кода

После компиляции кода и получения Bin-файла (подробно см. Руководство пользователя, Часть 2) разработчику необходимо передать бинарный код в GrdUtil.exe для его обработки и записи в ключ. Для этого служит диалог Настройки загружаемого кода.
Диалог позволяет:

  • Импортировать предварительно скомпилированный код из Bin-файла
  • Преобразовывать импортированный код в формат GCEXE, пригодный для записи в ключ Guardant Code / Code Time
  • Записывать код в GCEXE-формате во Flash-память ключа или выгружать его во внешний файл.


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

Импорт загружаемого кода из Bin-файла

По нажатию кнопки Импортировать код из Bin-файла, находящейся в правой верхней части страницы Настройки загружаемого кода, появляется диалог выбора Bin-файла из нужного проекта.
При импорте GrdUtil.exe считывает из файла имя_проекта.bmap настройки, описывающие использование памяти ключа загружаемым кодом. После этого в диалоге отображаются:

Индикатор состояния

Назначение

Используемая RAM

Индикация выделенной для загружаемого кода оперативной памяти ключа, ее начального и конечного адреса

Используемая Flash

Индикация выделенной для загружаемого кода Flash-памяти ключа, ее начального и конечного адреса, а также номера ячейки, хранящей дескриптор загружаемого кода


Свободная память обозначается зеленым цветом, используемая – синим. Адресация дается в шестнадцатеричном формате.

Преобразование бинарного кода в формат GCEXE

По соображениям конфиденциальности загружаемый код не должен передаваться «наружу» в открытом виде.
Поэтому в GrdUtil.exe реализована эффективная схема подготовки кода для записи в электронный ключ и безопасной передачи обновлений загружаемого кода конечным пользователям.
GrdUtil.exe автоматически преобразует бинарный код в файл формата GCEXE, содержащий:

  • Зашифрованный на AES исходный код
  • Зашифрованный на открытом ключе ECC160 №#1 сеансовый ключ AES, использовавшийся ранее для шифрования кода
  • ЭЦП файла, полученную на закрытом ключе ECC160 №#2


При этом в дескрипторе (ячейке) загружаемого кода хранится «ответная часть» ключей ECC, используемых при преобразовании бинарного кода:

  • Закрытый ключ ECC160 №#1 для шифрования
  • Открытый ключ ECC160 №#2 для ЭЦП


Что позволяет электронному ключу при обращении к загруженному коду успешно его проверять, расшифровывать и выполнять.
Важно!
Преобразование кода в формат GCEXE производится утилитой GrdUtil.exe автоматически при записи образа в ключ (либо нажатии на кнопку Экспортировать GCEXE), не требуя от разработчиков никаких действий для ее реализации, кроме настройки ключевых пар ECC160.

Настройки шифрования загружаемого кода

По нажатию кнопки Настройки шифрования загружаемого кода появляется диалог для работы с ключевыми парами:

Диалог предназначен для генерации, импорта и экспорта ключевых пар асимметричного алгоритма ECC160, которые используются при преобразовании бинарного кода в формат GCEXE (см. предыдущий пункт).
В верхней части диалога отображаются закрытый (слева) и открытый (справа) ключи ECC160 №#2 для цифровой подписи зашифрованного кода.
В нижней части диалога находится ключевая пара (закрытый ключ – слева, открытый – справа) ECC160 №#1 для шифрования бинарного кода.
Кроме того, диалог дополнен кнопками, позволяющими генерировать новые ключевые пары, экспортировать их во внешний файл для использования в приложении и импортировать ключевые файлы из других проектов.

Экспорт файла GCEXE. Обновление кода у пользователя

Экспорт GCEXE во внешний файл может потребоваться в случае, когда разработчику необходимо обновить загружаемый код в электронном ключе, находящемся у конечного пользователя.
В такой ситуации разработчику следует придерживаться следующей схемы действий:
0) На этапе разработки приложения должен быть предусмотрен механизм обновления загружаемого кода из приложения. Такой механизм реализуется при помощи функции Guardant API GrdCodeLoad (см. GrdAPI.chm).
1) После внесения необходимых изменений новая версия загружаемого кода компилируется в бинарный файл, который импорти-руется в GrdUtil.exe.
2) Для правильной работы обновленного загружаемого кода в удаленном ключе должны использоваться те же ключевые пары, которые применялись при программировании ключа в первый раз см. Настройки шифрования загружаемого кода.
3) При нажатии на кнопку [Экспортировать GCEXE] происходит формирование и выгрузка GCEXE во внешний файл.
4) Если необходимо сделать обновление кода зависимым от ключа (к примеру, при подготовке платных обновлений), то следует указать десятичный ID ключа конечного пользователя в диалоге, который возникает по нажатию кнопки [Экспортировать GCEXE].
5) Сохраненный в формате GCEXE загружаемый код передается конечному пользователю, который производит обновление содержимого ключа способом, предусмотренным разработчиком на нулевом шаге.
****

Запись загружаемого кода в ключ

После выполнения настроек загружаемого кода остается завершить диалог и выполнить команду меню Ключ | Запись в ключ. При этом будут сформированы и записаны в ключ:
1) Прошивка, содержащая дескриптор загружаемого кода (в числе прочих полей), – в EEPROM-память.
2) Загружаемый код в формате GCEXE – во Flash-память ключа.

  • No labels