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

2011. 6. 9. 21:49카테고리 없음



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

@ 암호화 과정
AES 알고리즘
- AES의 암호화 과정의 각 라운드는 비 선형성 (함수의 값이 독립변수의 값과 비례관계에 있지 않는 것)을 갖는 S-Box를 적용하여 바이트 단위로 치환을 수행하는 SubBytes() 연산, 행 단위로 순환 시프트를 수행하는 ShiftRows() 연산, 높은 확산 (diffusion)을 제공하기 위해 열 단위로 혼합(mixing)하는 MixColumns() 연산과 마지막으로 라운드 키와 state를 XOR하는AES 알고리즘 AddRoundKey() 연산으로 구성된다.

- 사용하는 암호화 키의 길이에 따라, 암,복호화 과정에 필요한 라운드 수는 다음 표와 같이 정의 된다.
 AES 알고리즘


- AES의 암호화 과정은 DES와는 달리, 첫 번째 라운드를 수행하기 전에 먼저 초기 평문과 라운드 키의 XOR 연산을 수행하므로, 암호화 과정에 필요한 전체 라운드 키의 개수는 Nr+1개가 된다. 그리고, 암호화의 마지막 라운드에서는 MixColumn() 연산을 수행하지 않는다는 특징이 있다.
AES 알고리즘


AES 알고리즘
1. SubBytes()

- SubBytes() 연산 과정은 암호문이 비 선형성을 갖도록 하기 위해 바이트 단위로 역 변환이 가능한 S-Box를 적용하는 것이다. 연산은 크게 두 단계로 구성된다.

- 첫번째 단계는, 각 바이트를  GF(28) 위의 다항식으로 표현하여 mod 8차 기약다항식 상에서의 역수를 구하는 것으로 확장 유클리드 호제법을 이용하여 수행한다. 

- 다음 단계는, GF(2) 위에서 Affine 변환은 적용하는 과정으로 다음과 같은 행렬을 이용한다.

 



- 두 단계를 통해 SubBytes() 연산을 수행하면 현재 state의 각 바이트는 아래 그림과 같이 다른 바이트로 치환 된다.




 - Affine 변환의 결과 집합을 S-Box로 표현하면 다음과 같다.AES 알고리즘


 


2. ShiftRows()
AES 알고리즘
- ShiftRows() 연산은 state의 각 행 단위로 정해진 수만큼 순환 시프트를 수행하는 것이다. 이 때, state의 0번째 행은 그대로 두고, 1번째 행은 1번, 2번째 행은 2번, 3번째 행은 3번 왼쪽으로 순환 시프트를 수행한다.

 





3. MixColumns()


- MixColumns() 연산은 state의 각 열을 4개의 항을 갖는 3차 다항식으로 표현하고,   mod x4+1 상에서 다항식
a(x) = 03 · x3 + x2 + x + 02와 곱하는 과정이다.AES 알고리즘

- 다항식 a(x)와 b(x)를 mod x4+1 상에서 곱한 결과는 다음과 같은 행렬의 곱셈으로 표현할 수 있다.

 




4. AddRoundKey()

- AddRoundKey() 연산은 라운드 키와 현재 state를 비트 단위로 XOR를 수행하는 과정이다. 그러므로, 암호화 과정의 state와 라운드 키는 동일한 크기를 가지며, 1 라운드를 수행하기 전에 초기 평문과 라운드 키를 XOR하는 과정이 필요하므로, AddRoundKey() 연산은 전체 암호화 과정에서 Nr+1번 수행하게 된다.

- 각 라운드에서 사용하는 라운드 키는 암호화 키로부터 생성되며, 자세한 라운드 키 생성 과정은 키 확장에서 설명한다.

- 현재 state와 라운드 키의 AddRoundKey() 연산과정은 아래 그림과 같다.

 




-> AES 알고리즘 기본 개요

-> AES 알고리즘 복호화 과정

-> AES 알고리즘 키 확장

-> AES 알고리즘 운용모드