대칭 암호화
단일 키로 암호화·복호화 — 대칭키/관용/비밀키 암호화
개요
- = 관용 암호화 = 비밀키 암호화 = 단일 키 암호화
- 구성요소: 평문 + 암호화 알고리즘 + 비밀키 → 암호문
암호 기법 분류
| 기준 |
종류 |
| 연산 유형 |
대체(Substitution), 전치(Permutation) |
| 키 수 |
대칭 (송수신자 동일키), 비대칭 (각기 다른키) |
| 처리 방식 |
블록 암호 (블록 단위), 스트림 암호 (연속 처리) |
DES / 3DES / AES 비교
|
DES |
3DES |
AES |
| 평문 블록 크기 |
64bit |
64bit |
128bit |
| 암호문 블록 크기 |
64bit |
64bit |
128bit |
| 키 크기 |
56bit |
112 or 168bit |
128/192/256bit |
DES (Data Encryption Standard)
- 가장 널리 사용된 암호화 스키마 (FIPS PUB 46)
- 평문 64bit + 키 56bit → 암호문 64bit
- 문제점: 56bit 키 → 무차별 대입 공격에 취약
- 내부 구조: Feistel과 DES 구조 기반, 16라운드
3DES (Triple DES)
- DES를 3번 반복:
C = E(K3, D(K2, E(K1, P)))
- 금융 기관에서 주로 사용 (FIPS PUB 46-3)
- 168bit 키 → DES 무차별 대입 취약점 극복
- 문제점: 속도 느림, 64bit 블록 크기 유지
AES (Advanced Encryption Standard)
- 3DES 대체 목적 (1997년 NIST 제안)
- 블록 길이: 128bit / 키 길이: 128/192/256bit
- Feistel 구조가 아닌 별도 구조 (SPN 구조)
- 라운드 수: 128bit 키 → 10라운드
AES 라운드 구조
입력 128bit → 8bit×16 행렬(State)
→ [AddRoundKey]
→ 10회 반복:
1. SubstituteBytes (S-Box 치환)
2. ShiftRows (행 순환 이동)
3. MixColumns (열 혼합, 마지막 라운드 제외)
4. AddRoundKey (라운드 키와 XOR)
→ 암호문 출력
| 단계 |
역할 |
| SubstituteBytes |
S-Box로 각 바이트 비선형 치환 |
| ShiftRows |
각 행을 좌측으로 순환 이동 (0,1,2,3바이트) |
| MixColumns |
열의 4바이트를 유한체 연산으로 혼합 |
| AddRoundKey |
확장된 라운드 키와 State XOR |
블록 암호 vs 스트림 암호
| 구분 |
블록 암호 |
스트림 암호 |
| 처리 단위 |
블록 (64/128bit) |
연속적 (1바이트씩) |
| 키 재사용 |
가능 |
매번 키스트림 생성 |
| 속도 |
상대적 느림 |
빠름 |
| 대표 |
DES, AES |
RC4 |
무차별 대입 공격 (Brute-force)
- 모든 가능한 키를 대입 → 평균 X/2 시도
- 키 크기(bit 수)↑ → 공격 시간 기하급수적 증가
계산상 안전한 암호화 조건
암호 푸는 비용 > 정보의 가치
암호 푸는 시간 > 정보 이용 주기
관련 개념