🧱 SPN 구조 (Substitution-Permutation Network): 블록 암호의 핵심
SPN (Substitution-Permutation Network, 치환-순열 네트워크)은 현대의 많은 블록 암호(Block Cipher) 알고리즘에서 핵심적으로 사용되는 기본 구조(Primitive)입니다. 대표적으로 AES (Advanced Encryption Standard)가 이 구조를 채택하고 있습니다.
SPN 구조의 목표는 정보 이론에서 말하는 혼돈(Confusion)과 확산(Diffusion) 원리를 효율적으로 구현하여, 암호 해독술(Cryptanalysis)을 극도로 어렵게 만드는 데 있습니다.
1. ⚙️ SPN 구조의 원리: 혼돈과 확산의 구현
SPN은 이름 그대로 두 가지 기본 연산인 치환(Substitution)과 순열(Permutation)을 여러 번 반복하는 라운드 함수(Round Function)로 구성됩니다.
1.1. 치환 (S-Box, Substitution) → 혼돈 (Confusion)
| 개념 | 설명 | 비유: '단어의 의미 바꾸기' |
|---|
| 목표 | 평문과 키의 관계를 복잡하게 만듭니다. 특정 비트를 변경했을 때, 암호문 비트가 예측 불가능하게 바뀌도록 합니다. | 문장의 단어(블록)를 다른 단어(치환된 값)로 바꿉니다. 단어를 바꾼다고 문장 전체가 섞이는 것은 아니지만, 원래의 의미(평문 값)를 알기 어렵게 만듭니다. |
| 구현 | S-Box (Substitution Box)라는 작은 조회 테이블(Look-up Table)을 사용합니다. n비트를 입력받아 m비트로 출력하며(대부분 n=m), 비선형 변환을 수행합니다. | |
1.2. 순열 (P-Box, Permutation) → 확산 (Diffusion)
| 개념 | 설명 | 비유: '글자의 위치 섞기' |
|---|
| 목표 | 평문의 한 비트가 암호문의 여러 비트에 영향을 미치도록 퍼뜨립니다. | 문장을 구성하는 글자(비트)들의 위치를 무작위로 뒤섞습니다. |
| 구현 | P-Box (Permutation Box)라는 비트 위치 재배치(Bit Transposition) 테이블을 사용합니다. 입력을 그대로 출력하지만, 비트의 순서만 바꿉니다. | |
2. 🧱 SPN의 라운드 (Round) 구성: 구조적 강점
SPN 구조는 보통 N개의 라운드로 구성되며, 각 라운드는 다음과 같은 4단계로 이루어집니다.
- 키 추가 (Add Round Key): 현재 라운드 키 Ki와 이전 라운드의 출력 값을 XOR 연산합니다. (유일하게 키가 사용되는 단계)
- 치환 (Substitution): S-Box를 사용하여 비선형 변환을 수행합니다. (혼돈 담당)
- 순열 (Permutation) / 열 혼합 (Mix Columns): 비트들의 위치를 뒤섞거나 (순열), 복잡한 수학적 연산을 통해 비트들을 섞습니다. (확산 담당)
- (최종 라운드 전까지) 다음 라운드로 전달: 이 과정을 여러 번 반복합니다. (AES는 10~14회 반복)
💡 SPN 비유: '셰프의 요리 과정'
SPN의 암호화 과정을 셰프가 요리하는 과정에 비유하면 직관적으로 이해할 수 있습니다.
- 키 추가 (Add Round Key): 요리에 비밀 재료(라운드 키)를 넣습니다. (시작)
- 치환 (Substitution, S-Box): 재료의 본질적인 맛(값)을 알아볼 수 없게 변형합니다. (혼돈)
- 순열 (Permutation, P-Box): 변형된 재료들을 고르게 섞어 요리의 모든 부분에 맛이 퍼지도록 합니다. (확산)
- 반복 (라운드): 이 과정을 충분히 여러 번 반복하여 (라운드 수), 누가 봐도 원래 재료를 알아볼 수 없는 완전히 새로운 요리가 되도록 만듭니다.
3. 🎯 SPN 구조의 장점 및 기술적 의의
SPN은 블록 암호 설계에서 다음과 같은 중요한 기술적 의의를 가집니다.
- 높은 병렬 처리 성능: 각 라운드의 연산이 비교적 독립적이어서, 고속의 하드웨어 및 소프트웨어 구현에서 병렬 처리(Parallel Processing)에 유리합니다. (AES가 고속인 주요 이유)
- Feistel 구조 대비 효율성: Feistel 구조(예: DES)는 암호화/복호화 시 알고리즘의 절반만 키와 XOR 연산에 참여하지만, SPN은 모든 비트가 모든 라운드에서 키 연산에 참여합니다. 이로 인해 더 적은 라운드로도 동등한 보안 강도를 확보할 수 있어 효율적입니다.
- 안전성: 비선형적인 S-Box가 차분 암호 해독(Differential Cryptanalysis)과 선형 암호 해독(Linear Cryptanalysis) 같은 강력한 공격을 막아내는 핵심 방어 메커니즘이 됩니다.