대칭키 암호 (Symmetric Key Encryption)
개념
- 암호화와 복호화에 동일한 키 사용
- 빠른 속도, 상대적으로 간단한 알고리즘
- 장점: 효율적, 빠름
- 단점: 키 분배의 어려움
암호화: C = EK(P)
복호화: P = DK(C)
블록 암호 (Block Cipher)
- 라운드 함수: 반복되는 함수
- 키 스케줄: 키를 입력하여 라운드 키를 발생시키는 과정
- 라운드 키: 라운드 함수에 작용하는 키
개념
- 평문 → 고정된 크기 블록으로 나누어 암호화
- 대표 구조
- Feistel 구조 (DES, SEED 등)
- SPN 구조 (AES, ARIA 등)
Feistel 구조
- 블록을 좌·우로 나눠 XOR 및 라운드 함수 반복 (짝수 번의 라운드를 진행)
- 역변환 용이 (복호화 시 암호화 과정 역순)
SPN 구조
- S-box(치환) → P-box(전치) 순으로 진행
- 라운드 함수가 역변환 가능해야 함
- 병렬성 높음
- 현재 가장 많이 사용됨
■ Feistel 구조 (DES 등)
┌──────────────┐
│ 입력 블록 (L0, R0) │
└─────┬────┬─────┘
│ │
▼ ▼
Li = Ri-1
Ri = Li-1 ⊕ f(Ri-1, Ki)
┌─────┴────┴─────┐
│ 출력 블록 (Ln, Rn) │
└─────────────────┘
- 라운드 함수와 XOR 반복
- 좌·우 반씩 나누고 반복
- 역변환 용이
■ SPN 구조 (AES 등)
┌──────────────┐
│ 입력 블록 (전체) │
└─────┬────────┘
▼
SubBytes (S-box)
▼
ShiftRows
▼
MixColumns
▼
AddRoundKey (⊕ Ki)
┌──────────────────┐
│ 출력 블록 (전체) │
└──────────────────┘
- S-box → P-box → 키 ⊕ 반복
- 병렬 처리 효율적
- 역변환 필요
블록 암호 사용 모드
| ECB | 각 블록 독립 암호화, 패턴 노출 위험 |
| CBC | 이전 암호블록 XOR 후 암호화, 인증 가능 |
| CFB | 스트림 형태, 복호화 함수 불필요 |
| OFB | 출력 피드백 방식, 에러의 전체 확산이 없음 |
| CTR | 카운터 사용, 병렬 처리 가능 |
■ ECB (Electronic Code Book)
P1 → E → C1
P2 → E → C2
P3 → E → C3
(각 블록 독립 암호화 → 패턴 노출 가능)
■ CBC (Cipher Block Chaining)
IV → ⊕ P1 → E → C1
C1 → ⊕ P2 → E → C2
C2 → ⊕ P3 → E → C3
(이전 암호문과 XOR → 인증 가능)
■ CTR (Counter Mode)
IV → E → K1 → ⊕ P1 → C1
IV+1 → E → K2 → ⊕ P2 → C2
IV+2 → E → K3 → ⊕ P3 → C3
(카운터 사용, 병렬 처리 효율적)
스트림 암호 (Stream Cipher)
개념
- 평문과 동일한 길이의 키 스트림 생성
- 비트 단위 XOR 처리
- 예측 불가능한 의사 난수 시퀀스 사용
키 스트림 생성 방법
- LFSR (선형 귀환 시프트 레지스터)
- 짧은 키로 긴 키 스트림 생성
- 주기가 존재하므로 단독 사용 시 해독이 쉬워 보안에 취약
대칭키 암호 알고리즘
알고리즘 | 구조 | 블록 크기 | 키 길이 | 특징
| DES | Feistel | 64 bits | 56 bits | 16 라운드를 거쳐 암호화, 구식 |
| TDEA | Feistel | 64 bits | 168 bits | DES 3회, 3DES라고도 부름 |
| AES | SPN | 128 bits | 128/192/256 bits 중 택 1 | 현대 표준, 빠르고 안전 |
DES 암호화 과정 흐름도 (Feistel 구조 기반)
평문 (64비트)
│
초기 Permutation (IP)
│
┌────┴────┐
│ L0 │ R0
└────┬────┘
▼
반복 (16 라운드):
┌────────────┐
│ Li = Ri-1 │
│ Ri = Li-1 ⊕ f(Ri-1, Ki) │
└────────────┘
│
교환 (Swap L, R)
│
최종 Permutation (IP-1)
│
암호문 (64비트)
특징
- 64비트 블록, 16라운드
- Feistel 구조 (입력 블록 절반을 교환하며 반복)
- 라운드 함수 f()에 복잡한 S-box, P-box 포함
AES 암호화 과정 흐름도 (SPN 구조 기반)
평문 (128비트)
│
AddRoundKey (초기 키 XOR)
│
┌────────────────┐
│ Round 1 ~ Nr-1 │
└────────────────┘
│ SubBytes (S-box)
│ ShiftRows
│ MixColumns
│ AddRoundKey (라운드 키 XOR)
┌──────────────┐
│ 마지막 라운드 │
└──────────────┘
│ SubBytes
│ ShiftRows
│ AddRoundKey (라운드 키 XOR)
│
암호문 (128비트)
특징
- SPN 구조, 라운드 수 (키 길이에 따라 10, 12, 14로 라운드 수 다름)
- MixColumns은 마지막 라운드에서는 제외됨
- 강력한 비선형성 (S-box) + 치환/전치
기타 대칭키 알고리즘
- IDEA, SEED, CRYPTON, RC5, FEAL, MISTY, Skipjack, ARIA, LEA
- RC4 → 대표적인 스트림 암호
'Computer > Computer Security' 카테고리의 다른 글
| 공개키 암호 (0) | 2025.05.13 |
|---|---|
| 디지털 포렌식 (0) | 2025.05.13 |
| React Native 보안 체크리스트 (1) | 2025.04.01 |
| 웹 보안 및 모바일 보안 (0) | 2025.04.01 |
| 이메일 보안 (0) | 2025.04.01 |