암호학 - AES 알고리즘 ( Advanced Encryption Standard Algorithm ), 차세대 블록 암호 방식 - 복호화 과정

2011. 6. 10. 00:05카테고리 없음



AES 알고리즘 ( Advanced Encryption Standard Algorithm ) - 복호화 과정


@ 복호화 과정

- AES의 복호화 과정은 암호화 과정의 역 변환으로 InvSubBytes(), InvShiftRows(), InvMixColumns(), AddRoundKey() 연산으로 구성된다. 암호화 과정에서 마지막 라운드는 이전의 라운드들과 달리 MixColumns() 연산을 포함하지 않으므로, 복호화 과정의 첫번째 라운드가 이후의 라운드들과 달리 InvMixColumns() 과정을 포함하지 않는다.

AES 알고리즘 복호화 과정


[ 암호화 과정에서 역방향으로 다시 올라간다고 생각하면 된다 ]

AES 알고리즘 복호화 과정
- 복호화 과정의 첫번째 라운드를 제외한 각 라운드는 AddRoundKey(), InvMixColumns(), InvShiftRows(), InvSubBytes() 순서로 연산을 수행하며, 라운드 키는 암호화의 역순으로 Nr 번째 라운드 키부터 사용한다.

AES 알고리즘 복호화 과정
1. InvSubBytes()

- InvSubBytes() 연산은 S-Box를 이용한 바이트 단위의 치환 연산인 SubBytes()의 역 변환이다. 따라서, SubBytes()에서 적용한 Affine 변환의 역변환을 적용한 후, 각 바이트 단위로 mod 8차 기약 다항식 상에서의 역수를 구하는 과정으로 이루어 진다. 
블록 암호 방식

 [ AES의 Inverse S-Box ]



2. InvShiftRows()
AES 알고리즘 복호화 과정
- InvShiftRows() 연산은 ShiftRows()의 역 변환으로, ShiftRows() 과정에서 수행한 순환 시프트 회수 만큼 다시 오른쪽으로 시프트 연산을 수행하는 과정이다. 



3. InvMixColumns()


- InvMixColumns() 연산은 MixColumns() 연산의 역 변환으로 state의 열 단위로 3차 다항식을 곱하는 과정이다. 즉, MixColumns() 연산에서 사용한 다항식의 역 다항식을 mod x4+1 상에서 곱하는 것이다.

 블록 암호 방식



블록 암호 방식
4. AddRoundKey()

- 복호화 과정의 AddRoundKey() 연산은 암호화 과정과 마찬가지로, 현재 state와 라운드 키를 비트 단위로 XOR을 수행하는 것이다.