IT 그리고 정보보안/Knowledge base

AES 알고리즘 (Advanced Encryption Standard)

plummmm 2021. 4. 16. 06:03
반응형

AES (Advanced Encryption Standard)에 대해 알아봅시다.

한글로 해석하면 고급 암호화 표준 이라는 말이다.

미국 표준 기술 연구소 NIST 에서 2001년 11월에 고안한 알고리즘이다.

미국 정부가 체택한 이후로 인기를 얻어서 많이 사용하고 있다.

 

효율성, 유연성, 보안을 위해 고안된 알고리즘이다.

Rijndael 알고리즘을 기반으로 만들어졌다. (개발자인 존 데이먼(Joan Daemen)과 빈센트 라이먼(Vincent Rijmen)의 이름을 따서 지은 것)

메모리 요구사항이 낮고, 블록 사이즈도 지맘대로(128, 192, 256 비트), 라운드도 지맘대로 정할 수 있다.

 

 

기본 구조는 위 그림과 같다. 아래 기본 틀 설명을 보시라.

- Block size : 4*Nb

- Key size : 4*Nk

•Nk = 4 (AES-128)

•Nk = 6 (AES-192)

•Nk = 8 (AES-256)

- Number of rounds:

 

•Nr = 6 + max(Nb,Nk)

 

 

자 그럼 AES의 과정을 간단하게 요약해보자면, 이 과정이 한 라운드에서 수행되는 것이다.

1. S-BOX 과정 : 치환 하는 과정

2. ShiftRows : 단순 자리바꿈

3. MixColumns : 치환연산

4. AddRoundkey : xor을 이용한 연산

 

4가지 정도로 볼 수 있겠다. 그럼 한번 AES 알고리즘의 과정에 대해 하나하나 알아보자.

 

일단 AES state (AES 상태) 라는 개념이 나온다.

 

AES State 가 뭐냐면,

AES 알고리즘의 모든 연산은 이 AES state라는 2차원 바이트 배열에 수행된다.

항상 4행으로 구성되며, 각 행은 Nb 바이트로 구성된다. 표준 Nb의 값은 4이고, 그러므로 항상 4*4 바이트가 된다.

 

예를 들어, 입력이

EA835CF00445332D655D98AD8596B0C5 

이면 아래와 같이 나온다.

 

 

 

이 상태 값으로 라운드 수를 결정한다. 일단 이정도로 알고, 1번 과정부터 하나씩 보자.

 

1. S-BOX

암호화 과정에서 가장 먼서 수행되는 것이 S-BOX 과정이다. 치환하는 것이다. 

지맘대로 치환하는게 아니라 표가 딱 정해져 있다.

S-BOX에는 전방향, 역방향 두가지가 있다. 전방향 S-BOX를 거치고 다시 역방향 S-BOX를 거치면 원문이 나온다.

그 말인 즉슨, 전방향은 암호화 할 때, 역방향은 복호화 할 때 쓴다는 말이겠죠?

 

* 전방향 S-Box

 

* 역방향 S-Box

 

예를 들어, 5b 라는 값을 치환하면 39가 나온다.

이 표가 생성된 과정들이 막 ~이래 복잡하게 있던데 솔직히 알 필요 없다고 사료되어 뺐슴다.

다음 순서 섞기

 

2. ShiftRows

이 과정은 AES에서 유일하게 Permutation을 하는 과정인데,

자리 바꿈을 함으로써 암호화 과정이 평문에 모든 비트에 고루 영향을 주기 위함이다.

첫번째 줄은 가만히 놔두고, 두번째 한칸, 세번째 두칸, 네번째 세칸 이런 식으로 움직인다.

이런식으로 그냥 단순히 자리만 바꾼다.

 

3. MixColumns

다시 치환이 나왔다. 이건 내가 여러군데 찾아봤는데.. lookup table에 대항하여 치환하는 것도 있고..

뭐 행렬 xor연산으로 치환하는 것도 있던데.. 둘다 결과는 다르지 않다고 생각되어 lookup table을 보고 치환하는걸 설명함.

일단 먼저 아래와 같은 비트를 Mixcolumns 한다고 쳐.

 

무언가 알지못하는 놈들이 나타난다. 이건 아래에 보여줄 lookup table을 보고 치환한 것이다.

대응하는 값을 따라가면 뭔가 행렬 비스무리 하게 나온다. 저것들을 위와 같이 정렬 시켜 놓고

대응하는 값을 XOR연산하여 구한다.

아래는 LOOKUP TABLE이다.

 

4. AddRoundkey.. 

AES에서 사용하는 키 길이가 128이면 총 4개의 32비트 워드로 확장되어 라운드키로 사용할 수 있다.

그 과정은 아래와 같다.

 

 

 

참고  url

https://mirror.enha.kr/wiki/%EA%B3%A0%EA%B8%89%20%EC%95%94%ED%98%B8%ED%99%94%20%ED%91%9C%EC%A4%80

http://infosec.kut.ac.kr/sangjin/class/cryptoalgo2010-01/chap06.pdf

반응형