Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
interfeysy_1 / ИДЗ_машинка / даташиты / esp32_technical_reference_manual_en.pdf
Скачиваний:
16
Добавлен:
26.01.2024
Размер:
9.62 Mб
Скачать

22 AES Accelerator (AES)

22 AES Accelerator (AES)

22.1Introduction

The AES Accelerator speeds up AES operations significantly, compared to AES algorithms implemented solely in software. The AES Accelerator supports six algorithms of FIPS PUB 197, specifically AES-128, AES-192 and AES-256 encryption and decryption.

22.2Features

Supports AES-128 encryption and decryption

Supports AES-192 encryption and decryption

Supports AES-256 encryption and decryption

Supports four variations of key endianness and four variations of text endianness

22.3Functional Description

22.3.1 AES Algorithm Operations

The AES Accelerator supports six algorithms of FIPS PUB 197, specifically AES-128, AES-192 and AES-256 encryption and decryption. The AES_MODE_REG register can be configured to different values to enable different algorithm operations, as shown in Table 22-1.

Table 22­1. Operation Mode

AES_MODE_REG[2:0]

Operation

0

AES-128 Encryption

 

 

1

AES-192 Encryption

 

 

 

2

AES-256

Encryption

 

 

 

4

AES-128

Decryption

 

 

 

5

AES-192

Decryption

 

 

 

6

AES-256

Decryption

 

 

 

22.3.2 Key, Plaintext and Ciphertext

The encryption or decryption key is stored in AES_KEY_n_REG, which is a set of eight 32-bit registers. For AES128 encryption/decryption, the 128-bit key is stored in AES_KEY_0_REG ~ AES_KEY_3_REG. For AES-192 encryption/decryption, the 192-bit key is stored in AES_KEY_0_REG ~ AES_KEY_5_REG. For AES-256 encryption/decryption, the 256-bit key is stored in AES_KEY_0_REG ~ AES_KEY_7_REG.

Plaintext and ciphertext is stored in the AES_TEXT_m_REG registers. There are four 32-bit registers. To enable AES-128/192/256 encryption, initialize the AES_TEXT_m_REG registers with plaintext before encryption. When encryption is finished, the AES Accelerator will store back the resulting ciphertext in the AES_TEXT_m_REG registers. To enable AES-128/192/256 decryption, initialize the AES_TEXT_m_REG registers with ciphertext before decryption. When decryption is finished, the AES Accelerator will store back the resulting plaintext in the AES_TEXT_m_REG registers.

22.3.3 Endianness

Key Endianness

Espressif Systems

576

ESP32 TRM (Version 5.0)

Submit Documentation Feedback

22 AES Accelerator (AES)

Bit 0 and bit 1 in AES_ENDIAN_REG define the key endianness. For detailed information, please see Table 22-3, Table 22-4 and Table 22-5. w[0] ~ w[3] in Table 22-3, w[0] ~ w[5] in Table 22-4 and w[0] ~ w[7] in Table 22-5 are “the first Nk words of the expanded key” as specified in “5.2: Key Expansion” of FIPS PUB 197. “Column Bit” specifies the bytes in the word from w[0] to w[7]. The bytes of AES_KEY_n_REG comprise “the first Nk words of the expanded key”.

Text Endianness

Bit 2 and bit 3 in AES_ENDIAN_REG define the endianness of input text, while Bit 4 and Bit 5 define the endianness of output text. The input text refers to the plaintext in AES-128/192/256 encryption and the ciphertext in decryption. The output text refers to the ciphertext in AES-128/192/256 encryption and the plaintext in decryption. For details, please see Table 22-2. “State” in Table 22-2 is defined as that in “3.4: The State” of FIPS PUB 197: “The AES algorithm operations are performed on a two-dimensional array of bytes called the State”. The ciphertext or plaintexts stored in each byte of AES_TEXT_m_REG comprise the State.

Table 22­2. AES Text Endianness

AES_ENDIAN_REG[3]/[5]

AES_ENDIAN_REG[2]/[4]

 

 

 

Plaintext/Ciphertext

 

 

 

 

 

State

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

2

3

 

 

 

 

 

 

 

 

 

0

0

 

0

AES_TEXT_3_REG[31:24]

AES_TEXT_2_REG[31:24]

 

AES_TEXT_1_REG[31:24]

AES_TEXT_0_REG[31:24]

 

 

 

 

 

 

 

 

1

AES_TEXT_3_REG[23:16]

AES_TEXT_2_REG[23:16]

 

AES_TEXT_1_REG[23:16]

AES_TEXT_0_REG[23:16]

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

2

AES_TEXT_3_REG[15:8]

AES_TEXT_2_REG[15:8]

 

AES_TEXT_1_REG[15:8]

AES_TEXT_0_REG[15:8]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

AES_TEXT_3_REG[7:0]

AES_TEXT_2_REG[7:0]

 

AES_TEXT_1_REG[7:0]

AES_TEXT_0_REG[7:0]

 

 

 

 

 

 

 

 

 

 

 

State

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

2

3

0

1

 

0

AES_TEXT_3_REG[7:0]

AES_TEXT_2_REG[7:0]

 

AES_TEXT_1_REG[7:0]

AES_TEXT_0_REG[7:0]

 

 

 

 

 

 

 

 

1

AES_TEXT_3_REG[15:8]

AES_TEXT_2_REG[15:8]

 

AES_TEXT_1_REG[15:8]

AES_TEXT_0_REG[15:8]

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

2

AES_TEXT_3_REG[23:16]

AES_TEXT_2_REG[23:16]

 

AES_TEXT_1_REG[23:16]

AES_TEXT_0_REG[23:16]

 

 

 

 

 

 

 

3

AES_TEXT_3_REG[31:24]

AES_TEXT_2_REG[31:24]

 

AES_TEXT_1_REG[31:24]

AES_TEXT_0_REG[31:24]

 

 

 

 

 

 

 

 

 

 

 

State

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

2

3

 

 

 

 

 

 

 

 

1

0

 

0

AES_TEXT_0_REG[31:24]

AES_TEXT_1_REG[31:24]

 

AES_TEXT_2_REG[31:24]

AES_TEXT_3_REG[31:24]

 

1

AES_TEXT_0_REG[23:16]

AES_TEXT_1_REG[23:16]

 

AES_TEXT_2_REG[23:16]

AES_TEXT_3_REG[23:16]

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

2

AES_TEXT_0_REG[15:8]

AES_TEXT_1_REG[15:8]

 

AES_TEXT_2_REG[15:8]

AES_TEXT_3_REG[15:8]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

AES_TEXT_0_REG[7:0]

AES_TEXT_1_REG[7:0]

 

AES_TEXT_2_REG[7:0]

AES_TEXT_3_REG[7:0]

 

 

State

 

 

c

 

 

 

 

 

0

1

 

2

3

 

 

 

 

 

 

 

 

1

1

 

0

AES_TEXT_0_REG[7:0]

AES_TEXT_1_REG[7:0]

 

AES_TEXT_2_REG[7:0]

AES_TEXT_3_REG[7:0]

 

 

 

 

 

 

 

 

1

AES_TEXT_0_REG[15:8]

AES_TEXT_1_REG[15:8]

 

AES_TEXT_2_REG[15:8]

AES_TEXT_3_REG[15:8]

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

2

AES_TEXT_0_REG[23:16]

AES_TEXT_1_REG[23:16]

 

AES_TEXT_2_REG[23:16]

AES_TEXT_3_REG[23:16]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

AES_TEXT_0_REG[31:24]

AES_TEXT_1_REG[31:24]

 

AES_TEXT_2_REG[31:24]

AES_TEXT_3_REG[31:24]

 

 

 

 

 

 

 

 

 

Espressif Systems

577

ESP32 TRM (Version 5.0)

Submit Documentation Feedback

Systems Espressif

Documentation Submit

578

Feedback

 

0).5 (Version TRM ESP32

Table 22­3. AES­128 Key Endianness

AES_ENDIAN_REG[1]

AES_ENDIAN_REG[0]

Bit

w[0]

w[1]

w[2]

w[3]

 

 

[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_0_REG[31:24]

 

 

 

 

 

 

 

0

0

[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_0_REG[23:16]

 

 

 

 

 

[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_0_REG[15:8]

 

 

 

 

[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_0_REG[7:0]

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_3_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_0_REG[7:0]

 

 

 

 

 

 

 

0

1

[23:16]

AES_KEY_3_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_0_REG[15:8]

 

 

 

 

 

[15:8]

AES_KEY_3_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_0_REG[23:16]

 

 

 

 

[7:0]

AES_KEY_3_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_0_REG[31:24]

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_0_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_3_REG[31:24]

 

 

 

 

 

 

 

1

0

[23:16]

AES_KEY_0_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_3_REG[23:16]

 

 

 

 

 

[15:8]

AES_KEY_0_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_3_REG[15:8]

 

 

 

 

[7:0]

AES_KEY_0_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_3_REG[7:0]

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_0_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_3_REG[7:0]

 

 

 

 

 

 

 

1

1

[23:16]

AES_KEY_0_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_3_REG[15:8]

 

 

 

 

 

[15:8]

AES_KEY_0_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_3_REG[23:16]

 

 

 

 

[7:0]

AES_KEY_0_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_3_REG[31:24]

 

 

 

 

 

 

 

Table 22­4. AES­192 Key Endianness

AES_ENDIAN_REG[1]

AES_ENDIAN_REG[0]

Bit

w[0]

w[1]

w[2]

w[3]

w[4]

w[5]

 

 

[31:24]

AES_KEY_5_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_0_REG[31:24]

 

 

 

 

 

 

 

 

 

0

0

[23:16]

AES_KEY_5_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_0_REG[23:16]

 

 

 

 

 

 

 

[15:8]

AES_KEY_5_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_0_REG[15:8]

 

 

 

 

[7:0]

AES_KEY_5_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_0_REG[7:0]

 

 

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_5_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_0_REG[7:0]

 

 

 

 

 

 

 

 

 

0

1

[23:16]

AES_KEY_5_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_0_REG[15:8]

 

 

 

 

 

 

 

[15:8]

AES_KEY_5_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_0_REG[23:16]

 

 

 

 

[7:0]

AES_KEY_5_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_0_REG[31:24]

 

 

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_0_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_5_REG[31:24]

 

 

 

 

 

 

 

 

 

1

0

[23:16]

AES_KEY_0_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_5_REG[23:16]

 

 

 

 

 

 

 

[15:8]

AES_KEY_0_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_5_REG[15:8]

 

 

 

 

 

 

 

 

 

 

 

 

 

[7:0]

AES_KEY_0_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_5_REG[7:0]

 

 

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_0_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_5_REG[7:0]

 

 

 

 

 

 

 

 

 

1

1

[23:16]

AES_KEY_0_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_5_REG[15:8]

 

 

 

 

 

 

 

[15:8]

AES_KEY_0_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_5_REG[23:16]

 

 

 

 

 

 

 

 

 

 

 

 

 

[7:0]

AES_KEY_0_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_5_REG[31:24]

 

 

 

 

 

 

 

 

 

Table 22­5. AES­256 Key Endianness

AES_ENDIAN_REG[1]

AES_ENDIAN_REG[0]

Bit

w[0]

w[1]

w[2]

w[3]

w[4]

w[5]

w[6]

w[7]

 

 

[31:24]

AES_KEY_7_REG[31:24]

AES_KEY_6_REG[31:24]

AES_KEY_5_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_0_REG[31:24]

 

 

 

 

 

 

 

 

 

 

 

0

0

[23:16]

AES_KEY_7_REG[23:16]

AES_KEY_6_REG[23:16]

AES_KEY_5_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_0_REG[23:16]

 

 

 

 

 

 

 

 

 

[15:8]

AES_KEY_7_REG[15:8]

AES_KEY_6_REG[15:8]

AES_KEY_5_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_0_REG[15:8]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[7:0]

AES_KEY_7_REG[7:0]

AES_KEY_6_REG[7:0]

AES_KEY_5_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_0_REG[7:0]

 

 

 

 

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_7_REG[7:0]

AES_KEY_6_REG[7:0]

AES_KEY_5_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_0_REG[7:0]

 

 

 

 

 

 

 

 

 

 

 

0

1

[23:16]

AES_KEY_7_REG[15:8]

AES_KEY_6_REG[15:8]

AES_KEY_5_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_0_REG[15:8]

 

 

 

 

 

 

 

 

 

[15:8]

AES_KEY_7_REG[23:16]

AES_KEY_6_REG[23:16]

AES_KEY_5_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_0_REG[23:16]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[7:0]

AES_KEY_7_REG[31:24]

AES_KEY_6_REG[31:24]

AES_KEY_5_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_0_REG[31:24]

 

 

 

 

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_0_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_5_REG[31:24]

AES_KEY_6_REG[31:24]

AES_KEY_7_REG[31:24]

1

0

[23:16]

AES_KEY_0_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_5_REG[23:16]

AES_KEY_6_REG[23:16]

AES_KEY_7_REG[23:16]

 

 

 

 

 

 

 

 

 

[15:8]

AES_KEY_0_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_5_REG[15:8]

AES_KEY_6_REG[15:8]

AES_KEY_7_REG[15:8]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[7:0]

AES_KEY_0_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_5_REG[7:0]

AES_KEY_6_REG[7:0]

AES_KEY_7_REG[7:0]

 

 

 

 

 

 

 

 

 

 

 

 

 

[31:24]

AES_KEY_0_REG[7:0]

AES_KEY_1_REG[7:0]

AES_KEY_2_REG[7:0]

AES_KEY_3_REG[7:0]

AES_KEY_4_REG[7:0]

AES_KEY_5_REG[7:0]

AES_KEY_6_REG[7:0]

AES_KEY_7_REG[7:0]

1

1

[23:16]

AES_KEY_0_REG[15:8]

AES_KEY_1_REG[15:8]

AES_KEY_2_REG[15:8]

AES_KEY_3_REG[15:8]

AES_KEY_4_REG[15:8]

AES_KEY_5_REG[15:8]

AES_KEY_6_REG[15:8]

AES_KEY_7_REG[15:8]

 

 

 

 

 

 

 

 

 

[15:8]

AES_KEY_0_REG[23:16]

AES_KEY_1_REG[23:16]

AES_KEY_2_REG[23:16]

AES_KEY_3_REG[23:16]

AES_KEY_4_REG[23:16]

AES_KEY_5_REG[23:16]

AES_KEY_6_REG[23:16]

AES_KEY_7_REG[23:16]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[7:0]

AES_KEY_0_REG[31:24]

AES_KEY_1_REG[31:24]

AES_KEY_2_REG[31:24]

AES_KEY_3_REG[31:24]

AES_KEY_4_REG[31:24]

AES_KEY_5_REG[31:24]

AES_KEY_6_REG[31:24]

AES_KEY_7_REG[31:24]

 

 

 

 

 

 

 

 

 

 

 

(AES) Accelerator AES 22

Соседние файлы в папке даташиты