Page tree

Versions Compared

Key

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

Anchor
_Toc326167555
_Toc326167555
Дескриптор

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

Anchor
_Toc485195581
_Toc485195581
Anchor
_Ref491493703
_Ref491493703
Anchor
_Toc493314234
_Toc493314234
Anchor
_Toc493322575
_Toc493322575
Anchor
_Toc493322711
_Toc493322711
Anchor
_Toc495289454
_Toc495289454
Anchor
_Toc20393122
_Toc20393122
Anchor
_Hlt67994166
_Hlt67994166
Anchor
_Hlt67994181
_Hlt67994181
Anchor
_Toc101585050
_Toc101585050
Anchor
_Toc132528887
_Toc132528887
Anchor
_Toc137467908
_Toc137467908
Anchor
_Toc326167556
_Toc326167556
Свойства и их использование

В процессе создания дескриптора участвует также и комбинация свойств аппаратного алгоритма. Свойства задаются специальными флагами, входящими в состав дескриптора. Задавая то или иное сочетание свойств, можно добиться от аппаратного алгоритма нужного «поведения». Свойства аппаратного алгоритма можно комбинировать в зависимости от необходимости.

Anchor
_Toc493314237
_Toc493314237
Anchor
_Toc495289457
_Toc495289457
Anchor
_Toc20393125
_Toc20393125
Anchor
_Toc101585053
_Toc101585053
Anchor
_Toc132528889
_Toc132528889
Алгоритм с ограниченным числом запусков

Если в дескрипторе алгоритма установлен флаг nsaf_GP_dec, перед каждым выполнением этого алгоритма значение его счетчика (4-байтовое поле km_ad_GP дескриптора) будет уменьшаться на 1. Когда значение счетчика алгоритма достигнет нулевого значения, алгоритм автоматически деактивируется и перестает преобразовывать данные. Это прекрасный способ создания приложения, защищенного с ограничением количества запусков.
Для обратной активации алгоритма, счетчик выполнений которого достиг нуля, необходимо либо перепрограммировать ключ локально, либо записать новое значение в поле km_ad_GP дескриптора этого алгоритма, используя TRU.
Можно рассчитать примерное количество обращений к алгоритму за время предполагаемой жизни приложения (или его очередной версии) и ограничить количество выполнений алгоритма соответствующим числом. Это может служить одним из способов противодействия попыткам брутфорса алгоритма.

Активация и деактивация алгоритма

Если в определителе алгоритма заданы эти свойства, то появляется возможность в нужный момент активировать или деактивировать алгоритм, используя специальную функцию . Для активации и деактивации можно задавать пароли, которые также хранятся в дескрипторе алгоритма. При помощи активации и деактивации можно эффективно управлять конкретным набором дескрипторов алгоритмов, участвующих в работе системы защиты.
Более подробно см. Активация/деактивация защищенных ячеек.

Anchor
_Toc493314235
_Toc493314235
Anchor
_Toc495289455
_Toc495289455
Anchor
_Toc20393123
_Toc20393123
Anchor
_Toc101585051
_Toc101585051
Anchor
_Toc132528888
_Toc132528888
Зависимость от ID

Флаг nsaf_ID устанавливает зависимость аппаратного алгоритма от идентификационного номера (ID) данного ключа. Это означает, что такой алгоритм в каждом ключе будет преобразовывать данные уникальным образом, даже если все значения его дескриптора будут одинаковыми во всех ключах.
Предупреждение
В случае если ключ с таким аппаратным алгоритмом будет случайно испорчен, его будет невозможно заменить ключом с таким же алгоритмом, т. к. не может существовать двух ключей с одинаковыми ID.

Ограничение алгоритма по времени работы

Электронные ключи Guardant с часами реального времени позволяют управлять активностью аппаратных алгоритмов при помощи таймера реального времени с автономным источником питания. Для этого в дескрипторе аппаратного алгоритма предусмотрены специальные поля, в которых хранятся ограничивающие значения времени.
Более подробно см. Использование таймера для управления статусом аппаратных алгоритмов.

Anchor
_Toc485195582
_Toc485195582
Anchor
_Ref491499583
_Ref491499583
Anchor
_Toc493314238
_Toc493314238
Anchor
_Toc493322576
_Toc493322576
Anchor
_Toc493322712
_Toc493322712
Anchor
_Toc495289458
_Toc495289458
Anchor
_Toc20393126
_Toc20393126
Anchor
_Hlt67994137
_Hlt67994137
Anchor
_Hlt67994174
_Hlt67994174
Anchor
_Toc101585055
_Toc101585055
Anchor
_Toc132528890
_Toc132528890
Anchor
_Toc137467909
_Toc137467909
Anchor
_Toc326167557
_Toc326167557
Секретный ключ (определитель) алгоритма

Определитель аппаратного алгоритма – это набор байтов, записанных в особом поле дескриптора алгоритма и интерпретируемых микропрограммой как секретный ключ алгоритма.
Определители алгоритмов являются критическими данными, относящимися к защите приложения и всегда должны храниться в секрете. Доступ к ним может осуществлять только авторизованный персонал.
В процессе кодирования/декодирования или вычисления хэш-функции определитель никогда не покидает памяти контроллера. Дескриптор алгоритма, содержащий определитель должен быть защищен от чтения/записи аппаратными запретами.
Для генерации определителей лучше всего пользоваться надежными защищенными алгоритмами генерации случайных чисел, например, аппаратным алгоритмом типа RND64. Не рекомендуется использовать для этой цели встроенные функции языков программирования.
Определители полезно время от времени менять. Это очень хорошая и распространенная практика, повышающая защищенность системы. Определители алгоритмов желательно менять при выпуске каждой новой версии защищенного приложения.