1. 充.3
2. ES ...4
3. ..5
3.1. 6
4. 充7
4.1. SubBytes.8
4.2. ShiftRows9
4.3. MixColumns ..10
4.4. AddRoundKey.10
5. 12
4.1. ...12
4.2 ...13
6. 充.14
7. 15
. . 2814789, .
, .
: , , ;
: , , , , , .
AES .
1998 NIST , . AES . DES, NIST AES , , -.
, :
- ;
- ;
- 128- (128, 192 256 ).
:
, ( ), ( );
32- ;
, , - .
, , , .
NIST 21 , 15 . , , . 1999 NIST , . 2 2000 NIST RIJNDAEL ( ) , FIPS 197 (Federal Information Processing Standard).
|
|
2003 , AES , , (. classified information). SECRET 128 , TOP SECRET 192 256 .
AES
Block , input, output, State Round Key. Block
Cipher Key , , Key Expansion , (Round Keys); , Nk .
Ciphertext
Key Expansion Round Keys Cipher Key
Round Key Round Keys Cipher Key Key Expansion. State
State , 4 Nb
S-box , Key Expansion . S-box .
Nb (32- ), State.
, AES Nb = 4
Nk 32- , .
AES, Nk = 4,6, 8
Nr , Nk Nb. AES, Nr = 10, 12, 14
Rcon[] , 32- .
AddRoundKey() , Round Key XOR c State. RoundKey State (, Nb = 4, RoundKey 128 16 )
InvMixColumns() MixColumns()
InvShiftRows() ShiftRows()
InvSubBytes() SubBytes()
MixColumns() State ( ),
RotWord() , Key Expansion, 4-
|
|
ShiftRows() , State, State
SubBytes() State (S-box), State
SubWord() , Key Expansion, - S-box
AES , Rijndael. AES input ( ) State() 128 , K 128, 192, 256 . , Rijndael 128 256 32 . input, State Cipher Key Nb = 4 input State, Nk = 4, 6, 8 Cipher Key .
input State s [r, c] = in [r + 4c], . State AddRoundKey() State () 10, 12, 14 ( ), , . , , State output out [r + 4c] = s [r, c], .
SubBytes(), ShiftRows(), MixColumns(), AddRoundKey() State. w[] key schedule.
Cipher (byte in [4*Nb], byte out [4*Nb], word w [Nb*(Nr+1)])
begin
byte state [4, Nb]
state = in
AddRoundKey (state, w [0, Nb-1])
for round = 1 step 1 to Nr-1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey (state, w [round*Nb, (round+1)*Nb-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey (state, w [Nr*Nb, (Nr+1)*Nb-1])
out = state
end
SubBytes
SubBytes, state 8- , S; bij = S(aij).
SubBytes() , (S-box). . S-box . -, . -, b S-box :
, bi i- b, ci i- c = 6316 = 9910 = 011000112. , , .
ShiftRows
ShiftRows, state .
ShiftRows State. r , . r = 0, r = 1 .. ShiftRows . Rijndael 128- 192- . 256 , 2, 3, 4- 1, 3, 4 , .
MixColumns
MixColumns, c(x).
MixColumns, State , . MixColumns , . GF(28) x4 + 1 c(x) = 3x3 + x2 + x + 2. ShiftRows, MixColumns
|
|
AddRoundKey
AddRoundKey, RoundKey XOR operation (⊕).
AddRoundKey, RoundKey State. Roundkey CipherKey KeyExpansion; RoundKey , State. XOR State RoundKey.
:
( )
AES , KeyExpansion() Cipher Key, K, . Nb*(Nr + 1) : Nb , Nr Nb . , . KeyExpansion() .
SubWord() S-box , . RotWord() [a0, a1, a2, a3] [a1, a2, a3, a0]. , , , [xi − 1,00,00,00], x = {02}, xi − 1 x (i 1).
, Nk Cipher Key. , w[i], XOR w [i − 1] , XOR Nk . , Nk, XOR w [i-1] , XOR Rcon[i]. (RotWord()), SubWord() , SubBytes(), .
, KeyExpansion() 256 Cipher Key , 128 192 . Nk = 8 i − 4 Nk, SubWord() w [i − 1] XOR.
KeyExpansion (byte key [4*Nk], word w [Nb*(Nr+1)], Nk)
i AddRoundKey .
. , (). . , , , .
AES: , , .
1. . . . .: .: , 1994.
2. .. . . .: -, 2009.
3. . /.. , .. , .. .; . .. .. . 4- ., . . ., 2009.
|
|
4. . , 2-