본문 바로가기
Cryptography

[AES 개념]

by L3m0n S0ju 2021. 10. 12.

AES 알고리즘

 

AES 알고리즘은 표준으로 선정된 이후부터 지금까지, AES에는 기밀성을 위협하는 치명적인 취약점이 발견되지 않았습니다. 또한 CPU 제조사들이 AES 연산을 위한 명령어를 따로 정의해 주어서 암호화, 복호화의 성능도 뛰어납니다. 이런 이유로 현대에는 대칭키 암호 알고리즘을 사용할 때, 일반적으로 AES가 사용됩니다.

 

 

AES 구조

AES는 라운드마다 128비트 크기의 블록을 암호화하는 블록 암호입니다. AES는 암호화를 할 때, 가장 먼저 각 블록을 4행 4열의 상태 배열(State)로 재구성합니다. State의 각 칸에는 8비트(1바이트)가 저장됩니다.

 

입력 1F3CF203B211C5AA6EB27A45E4D98130은 다음과 같은 state로 재구성됩니다.

 

+============+

 | 1F   3C   F2   03  |

 | B2   11   C5   AA |

 | 6E   B2   7A   45  |

 | E4   D9   81   30  |

+============+

이후에는 재구성된 입력에 대해 AddRoundKey 함수를 적용하고, 마지막 라운드 전까지 매 라운드마다 SubBytes, ShiftRows, MixColumns, AddRoundKey 함수를 반복하여 적용합니다. 마지막 라운드에서는 MixColumns를 제외한 나머지 함수들만 적용합니다. AES의 라운드 함수들은 역함수가 존재하므로, 역함수를 이용하여 AES 복호화가 이뤄집니다.

 

출처: https://dreamhack.io/learn/8/73#5

 

 

 

 

SubBytes

SubBytes는 State의 각 바이트를 S-Box를 참조하여 치환하는 함수입니다. 바이트의 상위 4비트가 행, 하위 4비트가 열을 결정합니다. 예를 들어 어떤 바이트가 2A라면, 해당 바이트는 S-box의 2행 A열을 참조하여 E5로 치환됩니다.

 

 

 

 

ShiftRows

 

ShiftRows는 State의 각 행을 구성하는 바이트들을 쉬프트하는 함수입니다. 이 함수는 4가지 함수 중에서 유일하게 순열의 역할을 수행합니다. 아래와 같이 2행은 왼쪽으로 1칸, 3행은 왼쪽으로 2칸, 4행은 왼쪽으로 3칸을 밉니다. 복호화할 때는 반대로 2행, 3행, 4행을 각각 오른쪽으로 1칸, 2칸, 3칸씩 밉니다.

 

다음은 ShiftRows을 적용하는 예시입니다.

 

 

 

 

MixColumns

MixColumns는 열 단위로 치환을 수행하는 함수입니다. 이 치환은 갈루아 필드 내에서의 행렬 연산으로 구해지는데, 이 연산에 대해서는 자세히 설명하지 않겠습니다.

 

 

 

 

 

 

 

 

 

AddRoundKey

이 함수는 키 생성 함수(Key Schedule)로 생성된 라운드 키의 state를 각 바이트별로 XOR합니다. 복호화할 때는 XOR의 성질을 이용하여 동일한 키를 state에 XOR합니다.

 

다음은 AddRoundKey가 적용되는 예시입니다.

 

'Cryptography' 카테고리의 다른 글

암호학을 위한 기본 수학 지식  (0) 2023.12.02
[HackCTF] RSA3  (0) 2021.10.16
[RSA 개념]  (0) 2021.10.12
[HackCTF] Classic Cipher -3  (0) 2021.10.09
[HackCTF] Classic Cipher -4  (0) 2021.10.06

댓글