В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > AVR

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве




Arduino Uno R3 Atmega328
готовый модуль
Лучшая Цена 335 руб




Стартовый набор с большим набором аксесуаров
Arduino Uno R3 Atmega328
Лучшая Цена 2211 руб



23. Криптоускорители

23.1. Отличительные особенности

  • Инструкция шифрования данных по стандарту DES
  • Модуль шифрования по стандарту AES
  • Инструкция DES
    • шифрация и дешифрация
    • одноцикловая инструкция
    • шифрация/дешифрация 8-байтного блока за 16 циклов синхронизации
  • Модуль AES
    • шифрация и дешифрация
    • поддержка 128-битных ключей
    • поддержка XOR режима загрузки данных в память состояния
    • шифрация/дешифрация 16-байтного блока за 375 циклов синхронизации

23.2. Обзор

AES и DES - два наиболее распространенных стандарта шифрования. В микроконтроллерах XMEGA они поддерживаются на уровне модуля AES и инструкции DES.

Стандарт DES поддерживается инструкцией DES ядра AVR XMEGA. Перед выполнением инструкции в регистровый файл необходимо поместить 8-байтный блок ключа и 8-байтный блок данных. После этого, для выполнения шифрации или дешифрации блока данных инструкцию DES нужно выполнить 16 раз.

Модуль AES предназначен для шифрации и дешифрации 128-битных блоков данных с использованием 128-битного ключа. Перед запуском шифрации/дешифрации в модуль необходимо загрузить ключ и данные. Вся процедура шифрации/дешифрации длится 375 циклов синхронизации УВВ, после чего данные могут быть считаны.

23.3. Инструкция DES

Инструкция DES является одноцикловой. Для выполнения шифрации или дешифрации 64-битного (8-байтного) блока данных её необходимо выполнить 16 раз.

Блок ключа и блок данных помещается в регистровый файл перед запуском шифрации/дешифрации. 64-битный блок данных (PLAINTEXT или CIPHERTEXT) помещается в регистры R0-R7, причем младший бит данных помещается в младший бит регистра R0, а старший бит данных - в старший бит регистра R7. 64-битный ключ (вместе с битами паритета) хранится в регистрах R8-R15, причем младший бит ключа в младшем бите R8, а старший бит ключа - в старшем бите R15.

Использование регистрового файла в ходе шифрации/дешифрации инструкцией DES
Рисунок 23.1. Использование регистрового файла в ходе шифрации/дешифрации инструкцией DES

Выполнение инструкции DES приводит к исполнению одного цикла алгоритма DES. Для корректной шифрации/дешифрации CIPHERTEXT или PLAINTEXT необходимо выполнить 16 циклов DES. Промежуточные результаты после выполнения каждой инструкции DES сберегаются в регистровом файле (R0-R15). После выполнения 16 циклов, ключ помещается в R8-R16, а зашифрованные/дешифрованные данные CIPHERTEXT/PLAINTEXT - в R0-R7. От операнда инструкции (K) зависит, какой цикл выполняется, а от флага полупереноса (H) в регистре статуса ЦПУ - тип выполняемой операции: шифрация или дешифрация. Если флаг полупереноса равен единице, выполняется дешифрация, а если нулю - шифрация.

Более подробно о работе инструкции DES см. в руководстве по набору инструкций AVR.

23.4. Модуль AES

Модуль AES выполняет шифрацию и дешифрацию в соответствии со стандартом AES (FIPS-197). 128-битный блок ключа и 128-битный блок данных (PLAINTEXT или CIPHERTEXT) должны быть загружены в память ключа и память состояния модуля AES. Это достигается выполнением поочередной записи в регистр ключа и регистр состояния 16 байт.

Программно можно выбрать, что должен выполнить модуль: шифрацию или дешифрацию. Также возможно разрешить режим XOR, в котором ко всем новым данным, помещенным в ключ состояния, и текущим данным в памяти состояния применяется операция исключающего ИЛИ.

Операция шифрации/дешифрации в модуле AES выполняется 375 циклов, после чего данные CIPHERTEXT/PLAINTEXT могут быть считаны из памяти состояния.

Для настройки и использования модуля рекомендуется придерживаться следующей процедуры:

  1. Разрешение прерываний модуля AES (опционально).
  2. Выбор направления AES: шифрация или дешифрация.
  3. Загрузка блока ключа в память ключа модуля AES.
  4. Загрузка блока данных в память состояния модуля AES.
  5. Запуск шифрации/дешифрации.

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

По завершении процедуры шифрации/дешифрации, устанавливается флаг AES и генерируется опциональное прерывание.

23.4.1. Память ключа и память состояния

Память ключа и память состояния модуля AES - две области памяти с организацией 16 x 8 бит, доступ к которым возможен через регистр ключа (KEY) и регистр состояния (STATE), соответственно.

Для чтения и записи у каждой области памяти имеется два 4-битных указателя адреса. Исходное значение указателей нулевое. После выполнения операции чтения или записи регистра состояния или регистра ключа, происходит автоматическое инкрементирование соответствующего указателя. В результате выполнения доступа (чтение или запись) к регистру управления (CTRL) происходит обнуление всех указателей. К обнулению указателя также приводит его переполнение, когда число выполненных операций чтения или записи превышает 16. Указатели адреса для программы недоступны. При выполнении операции записи в режиме XOR происходит инкрементирование обоих указателей чтения и записи.

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

Память состояния с указателями и регистром
Рисунок 23.2. Память состояния с указателями и регистром

В памяти состояния отражается состояние модуля AES в процессе шифрации/дешифрации. Исходным значением для состояния являются исходные данные (т.е. PLAINTEXT в режиме шифрации и CIPHERTEXT в режиме дешифрации). Последним значением состояния являются зашифрованные/дешифрованные данные.

Память ключа с указателями и регистром
Рисунок 23.3. Память ключа с указателями и регистром

Модулем AES используются следующие определения ключа:

  • В режиме шифрации, ключ - это ключ, оговоренный стандартом AES.
  • В режиме дешифрации, ключ - это последний подключ расширенного ключа, оговоренный стандартом AES.

В режиме дешифрации, перед выполнением операции модулем AES должна быть программно выполнена процедура расширения ключа. Она необходима для генерации последнего подключа, который в дальнейшем загружается через регистр ключа. Альтернативно, эту процедуру можно выполнить аппаратно в модуле AES. Для этого, нужно обработать фиктивный блок данных в режиме шифрации с использованием того же ключа. По окончании процедуры шифрации, последний подключ может быть считан из памяти ключа, что собственно и требуется от процедуры расширения ключа. В таблице 23.1 демонстрируются результаты чтения ключа в различных режимах (шифрация или дешифрация) и состояниях модуля AES.

Таблица 23.1. Результат чтения памяти ключа на различных этапах

Шифрация Дешифрация
перед обработкой данных после обработки данных перед обработкой данных после обработки данных
Тот же ключ, что и был загружен Последний подключ, синтезированный из загруженного ключа Тот же ключ, что и был загружен Исходный ключ, синтезированный из последнего загруженного подключа

23.4.2. Поддержка DMA

Модуль AES поддерживает возможность запуска DMA-передачи по завершении процедуры шифрации/дешифрации. Более подробно о запуске DMA-передачи см. в 5.4 "Запуск передачи".



<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники