Память ключа и память состояния
Память ключа и память состояния модуля 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. Результат чтения памяти ключа на различных этапах
| Шифрация
| Дешифрация
| | перед обработкой данных
| после обработки данных
| перед обработкой данных
| после обработки данных
| | Тот же ключ, что и был загружен
| Последний подключ, синтезированный из загруженного ключа
| Тот же ключ, что и был загружен
| Исходный ключ, синтезированный из последнего загруженного подключа
|
Поддержка DMA
Модуль AES поддерживает возможность запуска DMA-передачи по завершении процедуры шифрации/дешифрации. Более подробно о запуске DMA-передачи см. в 5.4 "Запуск передачи".
Обзор регистров модуля AES
|