Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > AVR |
|
||||||||||||||||||||||||
23. Криптоускорители23.1. Отличительные особенности
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 приводит к исполнению одного цикла алгоритма 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 могут быть считаны из памяти состояния. Для настройки и использования модуля рекомендуется придерживаться следующей процедуры:
При необходимости шифрации или дешифрации более чем одного блока данных, данную процедуру необходимо выполнить требуемое число раз, начиная с пункта 3. По завершении процедуры шифрации/дешифрации, устанавливается флаг AES и генерируется опциональное прерывание. 23.4.1. Память ключа и память состояния Память ключа и память состояния модуля AES - две области памяти с организацией 16 x 8 бит, доступ к которым возможен через регистр ключа (KEY) и регистр состояния (STATE), соответственно. Для чтения и записи у каждой области памяти имеется два 4-битных указателя адреса. Исходное значение указателей нулевое. После выполнения операции чтения или записи регистра состояния или регистра ключа, происходит автоматическое инкрементирование соответствующего указателя. В результате выполнения доступа (чтение или запись) к регистру управления (CTRL) происходит обнуление всех указателей. К обнулению указателя также приводит его переполнение, когда число выполненных операций чтения или записи превышает 16. Указатели адреса для программы недоступны. При выполнении операции записи в режиме XOR происходит инкрементирование обоих указателей чтения и записи. Доступ к регистру ключа и регистру состояния возможен только, когда процесс шифрации/дешифрации не выполняется.
В памяти состояния отражается состояние модуля AES в процессе шифрации/дешифрации. Исходным значением для состояния являются исходные данные (т.е. PLAINTEXT в режиме шифрации и CIPHERTEXT в режиме дешифрации). Последним значением состояния являются зашифрованные/дешифрованные данные.
Модулем AES используются следующие определения ключа:
В режиме дешифрации, перед выполнением операции модулем AES должна быть программно выполнена процедура расширения ключа. Она необходима для генерации последнего подключа, который в дальнейшем загружается через регистр ключа. Альтернативно, эту процедуру можно выполнить аппаратно в модуле AES. Для этого, нужно обработать фиктивный блок данных в режиме шифрации с использованием того же ключа. По окончании процедуры шифрации, последний подключ может быть считан из памяти ключа, что собственно и требуется от процедуры расширения ключа. В таблице 23.1 демонстрируются результаты чтения ключа в различных режимах (шифрация или дешифрация) и состояниях модуля AES. Таблица 23.1. Результат чтения памяти ключа на различных этапах
23.4.2. Поддержка DMA Модуль AES поддерживает возможность запуска DMA-передачи по завершении процедуры шифрации/дешифрации. Более подробно о запуске DMA-передачи см. в 5.4 "Запуск передачи".
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|