AES(Advanced Encryption Standard)
- 블록 길이가 128비트인 대칭 블록 암호이며, 키는 128, 192, 256비트를 사용
- 암호화 키의 길이에 따라 실행하는 라운드 수가 다르다.
- 128비트 : 10라운드
- 192비트 : 12라운드
- 256비트 : 14라운드
- Feistel 구조가 아닌 대체와 치환을 이용한 데이터 블록 전체를 병렬 처리
- Rijindael 알고리즘 기반
AES 암호화와 복호화
암호화
- 확장된 키를 가지고 각 라운드에 사용(라운드 키 더하기)
- 마지막 라운드를 제외한 각 라운드는 [바이트 대체 - 행 이동 - 열 섞기 - 라운드 키 더하기]의 절차를 가짐
- 마지막 라운드는 [바이트 대체 - 행 이동 - 라운드 키 더하기] 절차를 가짐
- AES 암호가 역으로 작동하기 위해 필요한 구조
복호화
- 확장된 키를 가지고 각 라운드에 사용(라운드 키 더하기)
- 마지막 라운드를 제외한 각 라운드는 [역으로 행 이동 - 역으로 바이트 대체 - 라운드 키 더하기 - 역으로 열 섞기]의 절차를 가짐
- 마지막 라운드는 [역으로 행 이동 - 역으로 바이트 대체 - 라운드 키 더하기]의 절차를 가짐
- AES 복호가 역으로 작동하기 위해 필요한 구조
- 대부분의 블록 암호와 같이 복호 알고리즘에서는 확장키를 순서를 뒤집어서 적용하지만, 복호 알고리즘이 암호 알고리즘과 동일하지 않다.
라운드
평문과 키
라운드 키 더하기(Add Round Key)
- Plain Text와 Cipher Key를 XOR 연산한다.
라운드 키 더하기 연산 및 결과
바이트 대체(Sub Byte)
- 8비트 단위로 데이터를 치환하는 연산
- S-Box를 사용하여 치환하는 방법
- e.g., Add Round Key Result 바이트 대체 연산 및 결과
S-Box(http://wiki.hash.kr/images/f/f1/AES_S-box.png)

행 이동(Shift Row)
- 행 단위로 하여 Shift 연산을 진행
- 1행의 경우 Shift 0(그대로), 2행의 경우 Shift 1, 3행의 경우 Shift 2, 4행의 경우 Shift 3
- e.g., Sub Byte Result 행 이동 연산 및 결과
행 이동 연산 및 결과
열 섞기(Mix Column)
- 각각의 바이트에 특정행렬과 곱셈 연산을 진행
- e.g., 특정행렬 및 Shift Row Result 열 섞기 및 결과(1열)
열 섞기 연산 및 결과
키 확장(Key Scheduling)
- 마지막 4바이트를 한칸 쉬프트한 후 Sub Byte 연산을 진행한다.(마찬가지로 S-Box)
- 이후 Rcon과 한 열씩 XOR연산을 진행한다.
Rcon
Rcon과 XOR 연산
- Cipher Key의 첫번째 세로열과 XOR 연산을 진행한다. -> Round Key의 첫번째 세로열
Cipher Key 첫번째 세로열과 XOR 연산
- 첫번째 세로열과 Cipher Key의 두번째 열 XOR 연산 진행한다. -> Round Key의 두번째 세로열
- 마찬가지로 세번째, 네번째 세로열을 진행하면 Round Key의 세번째 세로열, 네번째 세로열이 생성된다.
Round Key 두번째 세로열 생성
완성된 첫번째 Round Key
위 글은 "Network Security Essentials William Stallings 저"을 공부하며 쓴 글입니다.
댓글 영역