083. AES (Advanced Encryption Standard)
⚠️ 이 문서는 구시대의 유물이 된 DES를 대체하기 위해 미국 국립표준기술연구소(NIST)가 전 세계 공모전을 통해 선정한, 현대 인터넷 보안(TLS, VPN 등)을 지탱하는 가장 강력하고 대중적인 대칭키 블록 암호 표준인 AES를 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: AES(Advanced Encryption Standard)는 평문을 128비트 크기의 블록(Block)으로 자른 뒤, 비밀키의 길이(128, 192, 256비트)에 따라 10번에서 14번의 라운드(반복 섞기)를 거쳐 암호문을 만들어내는 **대칭키 블록 암호 알고리즘(Rijndael)**이다.
- 가치: 기존 DES의 치명적 약점이었던 '짧은 키 길이(56비트)'를 최소 128비트로 폭발적으로 늘려 전수 조사(Brute-force)를 우주적인 시간으로 불가능하게 만들었으며, 하드웨어 칩(AES-NI)으로 굽기 쉬워 스마트폰부터 슈퍼컴퓨터까지 극강의 성능을 자랑한다.
- 융합: AES 자체는 단순히 데이터를 네모난 블록 단위로 섞는 수학적 믹서기일 뿐이다. 따라서 실무에서는 데이터의 패턴 노출을 막고 인증 기능을 추가하기 위해 GCM이나 CBC 같은 '운영 모드(Mode of Operation)'와 반드시 결합하여 사용된다.
Ⅰ. 개요 및 탄생 배경 (Context & Necessity)
1970년대 만들어진 DES(Data Encryption Standard)는 훌륭한 암호였으나, 1990년대 후반 컴퓨터 성능이 발전하면서 치명적인 결함이 드러났다. 키(Key) 길이가 고작 56비트($2^{56}$)밖에 되지 않아, 해커들이 컴퓨터 여러 대를 병렬로 연결해 불과 이틀 만에 키를 다 찍어 맞추는 사건이 발생한 것이다. (1999년 DES Cracker 사건)
미국 NIST는 "더 이상 DES는 안전하지 않다!"고 선언하며, 전 세계 암호학자들을 대상으로 차세대 암호 표준 공모전을 열었다. 수많은 천재들의 알고리즘이 격돌한 끝에, 2001년 벨기에의 암호학자 조안 다멘(Joan Daemen)과 빈센트 라이먼(Vincent Rijmen)이 제출한 '레인달(Rijndael)' 알고리즘이 보안성, 메모리 효율성, 하드웨어 구현의 용이성에서 압도적 1위를 차지하며 AES라는 이름의 전 세계 표준으로 등극했다.
📢 섹션 요약 비유: 옛날에 쓰던 4자리 자물쇠(DES)가 도둑들의 "0000부터 9999까지 다 돌려보기(무차별 대입)" 수법에 금방 뚫리자, 전 세계 자물쇠 장인들을 모아 대회를 열고 "절대 안 뚫리면서도 돌리기 쉬운 100자리 자물쇠(AES)"를 만들어 전 세계의 표준 자물쇠로 삼은 것입니다.
Ⅱ. AES의 3가지 체급 (Key Size & Rounds)
AES는 데이터는 무조건 128비트(16바이트) 크기의 정사각형 블록으로 잘라서 처리하지만, 자물쇠의 복잡도를 결정하는 키(Key)의 길이는 3가지 체급으로 나누어 제공한다. 키가 길어질수록 평문을 섞는 횟수(라운드, Round)도 증가한다.
| AES 종류 | 키 길이 (비트) | 무차별 대입 시도 횟수 | 라운드(반복) 횟수 | 용도 및 특징 |
|---|---|---|---|---|
| AES-128 | 128 bit | $2^{128}$ | 10 라운드 | 일반적인 웹 통신, 스트리밍. 속도가 가장 빠름. |
| AES-192 | 192 bit | $2^{192}$ | 12 라운드 | 128과 256의 중간 타협점 (실무에선 잘 안 쓰임). |
| AES-256 | 256 bit | $2^{256}$ | 14 라운드 | 군사 기밀, 금융권 최고 등급, 양자 컴퓨터 대비용. |
$2^{128}$의 방어력: 1초에 1조 개의 키를 대입하는 슈퍼컴퓨터 1조 대를 동원해도 우주 나이의 수십억 배 시간이 걸린다. 따라서 현재의 컴퓨팅 파워로는 무차별 대입 공격(Brute Force)으로 AES를 뚫는 것은 물리적으로 불가능하다.
Ⅲ. 아키텍처 원리: SPN (Substitution-Permutation Network) 구조
기존 DES는 반으로 쪼개서 꼬는 파이스텔(Feistel) 구조였지만, AES는 평문 전체를 한 번에 섞어버리는 SPN(대치-치환 네트워크) 구조를 채택했다. (상세 내용은 084 문서 참조)
AES는 128비트 평문을 **4x4 바이트 행렬(State 행렬)**로 만든 뒤, 라운드(Round)마다 다음 4가지 마법을 연속으로 부린다.
- SubBytes (치환): S-Box라는 수학적 사전(Lookup Table)을 보고 바이트를 아예 다른 글자로 바꿔치기한다 (혼돈, Confusion).
- ShiftRows (행 이동): 행렬의 가로줄을 1칸, 2칸, 3칸씩 옆으로 돌려버린다 (확산, Diffusion).
- MixColumns (열 섞기): 행렬의 세로줄을 수식으로 곱해서 완전히 으깨버린다 (가장 강력한 확산).
- AddRoundKey (키 더하기): 매 라운드마다 깎아낸 비밀키(라운드 키)를 데이터에 XOR 연산으로 버무린다.
이 4가지 짓을 AES-128은 10바퀴, AES-256은 14바퀴를 쉬지 않고 돌린다. 이 과정을 거치면 평문의 'A'가 암호문에서 흔적도 없이 사라지는 완벽한 눈사태 효과(Avalanche Effect)가 발생한다.
┌─────────────────────────────────────────────────────────────────────┐
│ AES-128의 암호화 10라운드 흐름 (눈사태 효과) 시각화 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ [ 128비트 평문 블록 ] ──(초기 키 더하기)──▶ [ 초기 State 행렬 ] │
│ │ │
│ ┌────────────────────────────────────────▼────────────────┐ │
│ │ 라운드 1 ~ 9 (반복 믹서기) │ │
│ │ 1. SubBytes (글자 바꿔치기) │ │
│ │ 2. ShiftRows (가로줄 돌리기) │ │
│ │ 3. MixColumns (세로줄 으깨기) │ │
│ │ 4. AddRoundKey (비밀키 섞기) │ │
│ └────────────────────────────────────────┬────────────────┘ │
│ │ │
│ ┌────────────────────────────────────────▼────────────────┐ │
│ │ 라운드 10 (마지막 라운드) │ │
│ │ 1, 2, 4번만 수행 (MixColumns 제외 - 복호화 대칭을 위해) │ │
│ └────────────────────────────────────────┬────────────────┘ │
│ │ │
│ ▼ │
│ [ 128비트 쓰레기 암호문 (Ciphertext) ] │
└─────────────────────────────────────────────────────────────────────┘
[다이어그램 해설] AES의 강점은 저 복잡한 섞기 과정이 컴퓨터가 가장 좋아하는 수학(행렬 곱셈과 XOR)으로 이루어져 있다는 점이다. 인간에게는 미로 같지만, 컴퓨터의 CPU는 하드웨어 가속 명령어(AES-NI)를 이용해 1초에 수 기가바이트의 데이터를 이 믹서기에 갈아버릴 수 있다.
- 📢 섹션 요약 비유: 루빅스 큐브를 맞출 때, 면의 색깔 스티커를 다른 색으로 바꿔치고(SubBytes), 가로줄을 빙그르르 돌리고(ShiftRows), 세로줄을 뽑아서 섞은 뒤(MixColumns), 나만 아는 비밀 자물쇠(AddRoundKey)를 채우는 미친 짓을 10번 반복하는 것입니다. 원본이 어떻게 생겼는지 도저히 알 길이 없습니다.
Ⅳ. 실무 적용 및 양자 컴퓨터의 위협
-
실무적 선택 (AES-128 vs AES-256):
- 의사결정: 보안 담당자들은 "무조건 256비트가 안전하니까 다 이걸로 씁시다"라고 착각한다. 하지만 스마트폰의 모바일 뱅킹 앱에서 서버로 대용량 동영상을 올릴 때 AES-256을 쓰면, 암호화 믹서기를 14바퀴나 돌려야 하므로 배터리가 빨리 닳고 속도가 느려진다. 현재의 과학기술로는 AES-128(10바퀴)도 해킹이 100% 불가능하므로, 일반적인 통신에는 AES-128-GCM을 쓰는 것이 성능과 보안을 모두 잡는 실무적 정답이다.
-
그로버 알고리즘 (양자 컴퓨터의 위협):
- 위협: 양자 컴퓨터가 상용화되면 그로버(Grover) 알고리즘을 이용해 암호 키를 찍어 맞추는 속도가 루트 배($\sqrt{N}$)로 빨라진다.
- 영향: $2^{128}$ 의 방어력을 가진 AES-128은 양자 컴퓨터 앞에서 $\sqrt{2^{128}} = 2^{64}$ 수준의 허접한 방어력으로 추락한다. 따라서 "가까운 미래에 양자 컴퓨터가 나와도 털리지 않게 해야 한다(Post-Quantum)"는 요구사항이 있는 군사 기밀이나 블록체인 등에서는 무조건 방어력이 $2^{128}$로 깎여도 안전한 AES-256을 표준으로 채택하고 있다.
Ⅴ. 결론
AES는 현대 디지털 세계의 심장을 감싸고 있는 가장 단단하고 완벽한 다이아몬드 갑옷이다. 우리가 브라우저에 자물쇠 마크(HTTPS)를 띄우고 신용카드를 긁을 수 있는 이유는, 이 벨기에 수학자들이 만든 정교한 4x4 행렬의 마법이 뒤에서 우리 데이터를 10번씩 섞어주고 있기 때문이다. 비밀키를 내 스스로 휴지통에 버리지 않는 이상, 우주가 멸망할 때까지 AES가 수학적으로 뚫릴 일은 없다.
📌 관련 개념 맵
- 전신 (과거 표준): DES, 3DES (짧은 키로 인한 몰락)
- 내부 동작 구조: SPN (Substitution-Permutation Network) 구조
- 필수 짝꿍 (운영 모드): CBC 모드, GCM 모드 (AEAD 인증 암호화)
- 위협 요인: 양자 컴퓨터 (Grover's Algorithm $\rightarrow$ 키 길이 반토막 효과)
👶 어린이를 위한 3줄 비유 설명
- 옛날에 쓰던 4자리 번호표 자물쇠(DES)는 도둑이 하루 종일 번호를 돌려보니 풀려버렸어요.
- 그래서 전 세계 천재들이 모여 우주의 별 개수보다 더 많은 번호를 가진 100자리 자물쇠(AES)를 새로 만들었죠.
- 이 자물쇠는 번호만 긴 게 아니라, 닫을 때마다 내부의 기계 장치가 10번이나 빙글빙글 꼬이기 때문에, 세상에서 제일 비싼 슈퍼컴퓨터를 가져와도 절대 풀 수 없는 완벽한 방패가 되었답니다!