핵심 인사이트 (3줄 요약)
- 본질: AES (Advanced Encryption Standard)는 SPN (Substitution-Permutation Network) 구조를 반복해 평문을 암호문으로 바꾸는 블록 암호다.
- 가치: SubBytes, ShiftRows, MixColumns, AddRoundKey를 층층이 쌓아 confusion과 diffusion을 동시에 만든다.
- 판단 포인트: AES 자체보다 더 자주 깨지는 것은 사용법이다. 모드, IV / nonce, 키 관리가 잘못되면 강한 알고리즘도 약해진다.
Ⅰ. 개요 및 필요성
AES (Advanced Encryption Standard)는 128비트 블록을 처리하는 대표적인 대칭키 블록 암호다. 내부 구조는 SPN (Substitution-Permutation Network)으로, 작은 치환과 퍼뮤테이션을 여러 라운드 반복해 강한 확산과 혼돈을 만든다. DES (Data Encryption Standard)를 대체하면서 더 긴 키와 더 나은 효율을 제공하는 것이 목적이었다.
AES를 이해해야 하는 이유는 단순히 '암호가 강하다'가 아니라, 라운드 구조와 사용 모드를 구분해야 실무에서 안전하게 쓸 수 있기 때문이다. 알고리즘이 좋아도 같은 키를 반복하거나 잘못된 모드를 쓰면 보안은 쉽게 무너진다.
평문 → 상태(state) → 여러 라운드 → 암호문
SPN의 핵심은 치환과 확산을 여러 번 반복하는 데 있다.
- 📢 섹션 요약 비유: 메모를 여러 번 섞고 바꾸어 놓아야 원래 문장이 바로 보이지 않는다.
Ⅱ. 아키텍처 및 핵심 원리
AES의 상태는 4x4 바이트 행렬로 표현된다. 각 라운드는 비선형 치환인 SubBytes, 행 이동인 ShiftRows, 열 섞기인 MixColumns, 라운드 키를 더하는 AddRoundKey로 구성된다. 마지막 라운드에서는 MixColumns를 생략한다. 이 구조가 혼돈(confusion)과 확산(diffusion)을 함께 만든다.
| 라운드 단계 | 역할 | 효과 |
|---|---|---|
| SubBytes | S-box 치환 | 비선형성 부여 |
| ShiftRows | 행 단위 순환 이동 | 바이트 위치 분산 |
| MixColumns | 열 단위 선형 혼합 | 확산 강화 |
| AddRoundKey | 라운드 키 XOR | 키 의존성 부여 |
Plaintext
↓ AddRoundKey
[SubBytes → ShiftRows → MixColumns → AddRoundKey] × (Nr-1)
↓ Final round: SubBytes → ShiftRows → AddRoundKey
Ciphertext
키 길이에 따라 라운드 수는 10, 12, 14로 달라진다. 즉 AES는 한 번의 강한 연산이 아니라, 약간씩 성질이 다른 연산을 반복해 전체 보안을 만든다. 키 스케줄은 매 라운드 키를 생성해 같은 구조라도 다른 혼합이 나오게 한다.
- 📢 섹션 요약 비유: 같은 재료를 써도 자르기, 뒤집기, 섞기, 양념 넣기를 여러 번 하면 원재료의 모양이 알아보기 어려워진다.
Ⅲ. 비교 및 연결
AES는 SPN 구조이고, DES는 Feistel 구조다. SPN은 바이트 단위 병렬 치환과 확산을 강하게 걸기 좋고, Feistel은 복호화와 구현이 대칭적이라 역사적으로 널리 쓰였다. AES는 현대 CPU와 하드웨어 가속에 잘 맞는 쪽으로 설계되어 현재 표준이 되었다.
| 구조 | 특징 | 장점 | 주의점 |
|---|---|---|---|
| SPN (AES) | 치환 + 퍼뮤테이션 반복 | 병렬성, 빠른 확산 | 모드와 키 관리가 중요 |
| Feistel (DES) | 좌우 반쪽을 교환하며 반복 | 복호화 구조가 단순 | 짧은 키와 구식 표준 |
AES를 다른 암호와 비교할 때는 알고리즘 구조뿐 아니라 사용 모드도 함께 봐야 한다. ECB는 같은 평문 블록이 같은 암호문 블록이 되므로 패턴이 새고, GCM (Galois/Counter Mode) 같은 인증 암호 모드는 기밀성과 무결성을 함께 다룬다.
- 📢 섹션 요약 비유: 같은 문장을 뒤집어 적는 방식과, 문장 조각을 섞고 열쇠까지 넣는 방식의 차이다.
Ⅳ. 실무 적용 및 기술사 판단
실무에서는 AES 자체보다 어떤 모드로 쓰는지가 더 중요하다. 같은 AES라도 GCM (Galois/Counter Mode)처럼 인증된 암호를 쓰면 무결성까지 챙길 수 있고, nonce를 중복하면 안전성이 급격히 떨어진다. 또한 키를 코드에 박아 두거나, IV / nonce를 재사용하거나, ECB를 쓰는 것은 대표적인 안티패턴이다.
체크리스트
- 키 길이와 라운드 수가 요구 수준에 맞는가?
- nonce / IV가 절대 재사용되지 않는가?
- 암호 모드가 기밀성과 무결성을 함께 보장하는가?
- AES-NI (AES New Instructions) 같은 하드웨어 가속을 적절히 쓰는가?
안티패턴
-
ECB 모드로 패턴이 드러나게 하는 경우
-
nonce / IV를 반복 사용하는 경우
-
직접 암호를 설계하거나 키를 평문으로 저장하는 경우
-
📢 섹션 요약 비유: 자물쇠가 튼튼해도 열쇠를 문 앞에 붙여 두면 아무 소용이 없다.
Ⅴ. 기대효과 및 결론
AES의 장점은 강한 보안성과 높은 구현 효율을 동시에 제공한다는 점이다. SPN 구조는 하드웨어와 소프트웨어 양쪽에 잘 맞고, 충분히 검증된 표준이라는 신뢰도 크다. 하지만 최종 보안은 키 관리, 모드 선택, nonce 규칙까지 포함한 전체 사용 방식에서 결정된다.
결론적으로 AES는 '강한 알고리즘'으로 끝나는 것이 아니라, 올바른 운영 규칙과 함께 써야 진짜 안전하다. 암호 구조와 사용 관행을 분리해서 기억하면 시험과 실무 모두에서 실수를 줄일 수 있다.
- 📢 섹션 요약 비유: 좋은 금고도 열쇠를 잃어버리거나 번호를 반복하면 안전하지 않다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| SPN (Substitution-Permutation Network) | AES의 기본 구조 |
| SubBytes | 비선형 치환 단계 |
| ShiftRows | 행 이동으로 위치 확산 |
| MixColumns | 열 혼합으로 확산 강화 |
| Round key | 각 라운드에서 XOR되는 키 |
| GCM (Galois/Counter Mode) | 실무에서 많이 쓰는 인증 암호 모드 |
📈 관련 키워드 및 발전 흐름도
Plaintext
│
▼
AddRoundKey
│
▼
SubBytes → ShiftRows → MixColumns
│
▼
마지막 라운드 후 Ciphertext
흐름의 핵심은 각 라운드가 서로 다른 성질을 반복해 구조를 흐린다는 점이다.
👶 어린이를 위한 3줄 비유 설명
- 비밀 편지를 여러 번 섞고 바꾸면 원래 모습이 잘 안 보여요.
- 그때마다 열쇠를 넣어야만 다시 읽을 수 있어요.
- 하지만 열쇠를 아무 데나 두면 아무리 섞어도 안전하지 않아요.