Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Ключи моделей Guardant Code / Code Time позволяют загружать и исполнять специально написанный код приложения внутри ключа. Подробно см. Руководство пользователя, Часть 3 «Guardant Code».

GrdUtil.exe предоставляет удобный сервис для работы с загружаемыми кодом, в том числе, его автоматическое преобразование из Bin-файла в формат, пригодный для записи в ключ (GCEXE), и, собственно, запись GCEXE во Flash-память.

Работа с полем типа Загружаемый код из приложения происходит при помощи специальных функций Guardant API: GrdCodeGet-Info GrdCodeGetInfo, GrdCodeLoad, GrdCodeRun (подробности см. в GrdAPI.chm).

Диалог создания поля выполнен в виде мастера, состоящего из нескольких страниц:

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

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

...

...

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

Чтобы создать поле типа Загружаемый код, выполните команду

...

Образ ключа | (поле) Добавить

...

поле.

В появившемся диалоге выберите переключатель Загружаемый код и задайте имя поля:
Image Modified
Ячейка Загружаемый код имеет фиксированный размер 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-файла из нужного проекта.
При импорте GrdUtil.exe считывает из файла имя_проекта.bmap настройки, описывающие использование памяти ключа загружаемым кодом. После этого в диалоге отображаются:

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

Назначение

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

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

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

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

...

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

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

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

...

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

...

 

 

...

По нажатию кнопки Настройки шифрования загружаемого кода появляется диалог для работы с ключевыми парами:
Image Removed
Диалог предназначен для генерации, импорта и экспорта ключевых пар асимметричного алгоритма 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 загружаемый код передается конечному пользователю, который производит обновление содержимого ключа способом, предусмотренным разработчиком на нулевом шаге.
****

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

...