블록 암호 운용 모드
블록 암호 운용 모드
ECB의 보안 결함을 극복하기 위해 개발된 대안 기법들
운용 모드 비교
| 모드 | 설명 | 용도 |
|---|---|---|
| ECB | 각 블록 독립 암호화 (동일 키) | 단일 값 안전 전송 (암호화 키 등) |
| CBC | 이전 암호문과 XOR 후 암호화 | 일반 블록 기반 전송 |
| CFB | 이전 암호문을 암호화해 키스트림 생성, XOR | 스트림 기반 전송 |
| OFB | 암호화 출력을 다음 입력으로 (피드백) | 노이즈 채널 스트림 전송 |
| CTR | 카운터 암호화값과 평문 XOR | 고속 처리, 병렬 처리 |
ECB (Electronic CodeBook)
평문 블록 → [암호화(동일 키)] → 암호문 블록
평문 블록 → [암호화(동일 키)] → 암호문 블록 (독립, 병렬 가능)
문제점: 동일한 평문 블록 → 동일한 암호문 블록
→ 반복 패턴 노출, 장문 메시지에 취약
CBC (Cipher Block Chaining)
IV
↓ XOR
평문1 → [암호화] → 암호문1
↓ XOR
평문2 → [암호화] → 암호문2
- 이전 암호문과 XOR 후 암호화 → 동일 평문 ≠ 동일 암호문
- IV(초기화 벡터) 필요
- 장점: 기밀성↑, 패턴 은닉
- 단점: 순차 처리만 가능 (병렬 불가)
CFB (Cipher Feedback)
IV → [암호화] → 상위 s비트 → XOR → 암호문
↑
평문
암호문 → [쉬프트 레지스터] → 다음 입력
- 블록 암호를 응용한 스트림 암호 구현
- s비트 단위로 처리 (보통 8bit = 1바이트)
OFB (Output Feedback)
CFB와 차이: 암호화 출력(평문 XOR 전)을 다음 입력으로 사용
CFB: 암호문 → 다음 입력 (평문에 의존)
OFB: 암호화 출력 → 다음 입력 (평문에 무관)
OFB 장점: 비트 오류가 이후 블록에 전파되지 않음 (위성 통신 등 노이즈 채널에 적합)
CTR (Counter)
Counter_1 → [암호화] → XOR → 암호문1
Counter_2 → [암호화] → XOR → 암호문2 (병렬 처리 가능)
↑ ↑
평문1 평문2
장점
| 장점 | 설명 |
|---|---|
| 병렬 처리 | 각 블록 독립적, 앞 블록 처리 전 다음 블록 선처리 가능 |
| Preprocessing | 평문 없이도 암호화 연산 미리 수행 |
| 랜덤 접근 | 임의 블록 직접 복호화 가능 |
| 하드웨어 효율 | 단순한 카운터 연산 |
관련 개념
- 대칭 암호화 - DES/AES 알고리즘
- Feistel과 DES - 블록 암호 내부 구조
- 스트림 암호와 RC4 - 스트림 암호화 방식