Security/AES2015.04.23 17:41



AES (Advanced Encryption Standard Algorithm) 알고리즘


 1977년도에 미국 표준으로 제정된 DES는 지금까지 큰 허점이 발견되지 않았지만 키 길 이가 56비트 밖에 되지 않아 현재의 컴퓨팅 기술로는 쉽게 전사공격을 하여 암호해독을 할 수 있다는 문제점을 지니고 있다. 따라서 1997년에 새 표준에 대한 작업을 시작하여 2000 년 10월에 AES(Advanced Encryption Standard)라는 새 표준을 채택하였다. 1997년 새 표준 에 대한 제안에 의하면 새 암호알고리즘의 블록 크기는 128비트이어야 하며, 알고리즘에 대 한 변경 없이 128비트, 196비트, 256비트 길이의 키를 지원해야 한다. 1998년도에 제출된 여러 제안 중에 15개를 일차적으로 선정하였고, 1999년에 이 중에 다섯 개를 최종 후보로 선정하였다. 이 중에 벨기에 암호학자인 Daemen과 Rijmen이 제안한 Rijndael 암호알고리즘 이 AES로 채택되었다. 



암호화 과정 (출처 : http://vaert.tistory.com/64)



AddRoundKey

 키 스케줄링 과정은 진행되어 생략했다고 가정합니다. 128bits State는 암호화할 평문 블록이며 State와 128bits 암호화 키를 XOR 연산합니다.

 AddRoundKey 과정에 의해 출력된 결과를 가지고  SubBytes, ShiftRows, MixColums, AddRoundKey를 수행하며 10번째 마지막 라운드에서는 MixColums 과정은 생략됩니다.


SubBytes

 Des 알고리즘의 치환(Subsitution)과 동일하며 특정 규칙(S-Box)에 의해 치환이 수행됩니다.

128bits는 16Bytes로 표현되며 4X4 행렬로 나타낼 수 있습니다. (S(0,0)부터 S(3,3) 까지)


S-Box


S(0,0) 이 0x3f라고 하면 S-Box표에서 x는 3, y는 f값을 참조하여 75가 선택되어 치환됩니다.


ShiftRows


ShiftRows 과정


 4X4 행렬을 기준으로 1번째 행은 아무것도 수행되지 않습니다.

2, 3, 4번째 행은 각각 1, 2, 3 바이트 쉬프트씩 수행됩니다.


MixColums

 쉬프트 연산을 거친 행렬(S)은 아래와 같은 과정을 통해 열단위로 특정 수식을 통해 계산됩니다.





MixColumns 과정


AddRoundKey

 라운드 과정에서 AddRoundKey는 State 값이나 암호화를 진행하면서 나온 값을 Round Key와 XOR연산하면 됩니다.


키 스케줄링 과정

 키 스케줄은 입력받은 키를 이용하여 라운드 함수를 수행할 때 사용할 서브키를 추출하는 과정입니다.

이 부분은 AES 알고리즘 에니메이션 링크를 참조하면 될 것 같습니다. 어렵지는 않은데 직접 보고 이해하는게 더 쉬울 듯...




참고 링크 : http://vaert.tistory.com/64/

AES 알고리즘 애니메이션 http://www.formaestudio.com/rijndaelinspector/

'Security > AES' 카테고리의 다른 글

AES 알고리즘 (Advanced Encryption Standard Algorithm) 암호화  (0) 2015.04.23
Posted by boxbop@gmail.com boxbop