본문으로 건너뛰기

7장. 블록 암호 운용

이 장에서는 DES의 보안 강화를 위한 다중 암호화(Triple DES)와, 블록 암호를 다양한 응용에 적용하기 위한 **운용 모드(Modes of Operation)**를 다룬다. NIST SP 800-38A에서 정의한 5가지 모드와 저장 장치용 XTS-AES, 형식 보존 암호화(FPE)를 학습한다.

학습 목표

  • 다중 암호화 방식의 보안성을 분석한다.
  • 중간 일치 공격(Meet-in-the-middle Attack)을 설명한다.
  • ECB, CBC, CFB, OFB, CTR 모드를 비교한다.
  • XTS-AES 모드의 구조를 개관한다.

7.1 다중 암호화와 Triple DES

Double DES

두 개의 키 K1K_1, K2K_2로 순차 암호화한다.

C=E(K2,  E(K1,  P))C = E(K_2,\; E(K_1,\; P))

키 길이가 112비트로 보이지만, 중간 일치 공격에 의해 실질 보안 강도는 2562^{56}에 불과하다.

중간 일치 공격 (Meet-in-the-Middle Attack)

기지 평문 (P,C)(P, C)에 대해:

X=E(K1,  P)=D(K2,  C)X = E(K_1,\; P) = D(K_2,\; C)

  1. PP2562^{56}개 가능한 K1K_1으로 암호화하여 테이블 저장
  2. CC2562^{56}개 가능한 K2K_2로 복호화하여 테이블과 대조
  3. 일치하는 (K1,K2)(K_1, K_2) 후보를 다른 평문-암호문 쌍으로 검증

총 연산량: 약 2562^{56} (112비트 탐색이 아닌 56비트 수준)

Triple DES (3DES)

2키 3DES (EDE 구조)

C=E(K1,  D(K2,  E(K1,  P)))C = E(K_1,\; D(K_2,\; E(K_1,\; P)))

  • 중간에 DD(복호화)를 사용하는 이유: 단일 DES와의 하위 호환성 (K1=K2K_1 = K_2이면 단일 DES와 동일)
  • 무차별 대입 공격 연산량: 21122^{112}

3키 3DES

C=E(K3,  D(K2,  E(K1,  P)))C = E(K_3,\; D(K_2,\; E(K_1,\; P)))

  • K1=K2K_1 = K_2 또는 K2=K3K_2 = K_3으로 하위 호환 가능
  • 이론적 키 길이 168비트이나 유효 보안 강도는 약 112비트
  • PGP, S/MIME 등 인터넷 응용에서 채택

7.2 블록 암호 운용 모드 요약

모드설명주요 용도
ECB각 블록을 독립적으로 동일 키로 암호화단일 값(키 등)의 암호화
CBC이전 암호문 블록과 XOR 후 암호화범용 블록 단위 전송, 인증
CFB이전 암호문을 암호화한 출력과 평문을 XOR스트림 지향 전송, 인증
OFB이전 암호화 출력 자체를 다시 암호화잡음 채널에서의 스트림 전송
CTR카운터를 암호화하여 평문과 XOR범용, 고속 처리

7.3 ECB (Electronic Codebook)

Cj=E(K,  Pj)Pj=D(K,  Cj)C_j = E(K,\; P_j) \qquad P_j = D(K,\; C_j)

  • 가장 단순한 모드
  • 동일 평문 블록 → 동일 암호문 블록 (패턴 노출 위험)
  • 단일 블록 이하의 짧은 메시지에만 적합

7.4 CBC (Cipher Block Chaining)

C1=E(K,  P1IV)C_1 = E(K,\; P_1 \oplus IV) Cj=E(K,  PjCj1)(j2)C_j = E(K,\; P_j \oplus C_{j-1}) \quad (j \geq 2)

복호화:

Pj=D(K,  Cj)Cj1P_j = D(K,\; C_j) \oplus C_{j-1}

  • IV(Initialization Vector): 송수신자 공유, 예측 불가능해야 함
  • 동일 평문 블록이 반복되어도 암호문은 다름
  • 블록 이상의 메시지 암호화에 적합
  • 인증(MAC)에도 사용 가능

7.5 CFB (Cipher Feedback)

블록 암호를 스트림 암호처럼 사용하는 모드이다. ss비트 단위로 처리한다.

Cj=PjMSBs[E(K,  Ij)]C_j = P_j \oplus \text{MSB}_s[E(K,\; I_j)]

  • 시프트 레지스터에 IV로 초기화
  • 각 단계에서 시프트 레지스터를 갱신하여 다음 암호화에 사용
  • 복호화 시에도 암호화 함수만 사용 (복호화 함수 불필요)
  • 암호화는 직렬, 복호화는 병렬 가능

7.6 OFB (Output Feedback)

Oj=E(K,  Oj1),Cj=PjOjO_j = E(K,\; O_{j-1}), \quad C_j = P_j \oplus O_j

  • CFB와 유사하나 암호화 출력 자체를 피드백 (평문/암호문과 무관)
  • 키스트림이 평문과 독립적 → 전형적인 스트림 암호 구조
  • 비트 오류가 전파되지 않음 (해당 블록만 영향)
  • 메시지 스트림 변조 공격에 취약 (비트 반전 가능)
  • IV는 반드시 nonce(비반복 값)이어야 함

7.7 CTR (Counter)

Cj=PjE(K,  Tj)C_j = P_j \oplus E(K,\; T_j)

카운터 TjT_j를 암호화하여 키스트림을 생성하고 평문과 XOR한다.

CTR 모드의 장점

장점설명
하드웨어 효율블록 간 체이닝 없어 완전 병렬 처리 가능
소프트웨어 효율파이프라이닝, SIMD 등 병렬 기능 활용
전처리카운터 암호화를 미리 수행 가능
랜덤 접근ii번째 블록을 독립적으로 처리 가능
증명 가능 보안다른 모드 이상의 보안성 증명 가능
단순성암호화 알고리즘만 구현 (복호화 불필요)

7.8 운용 모드 비교

특성ECBCBCCFBOFBCTR
패턴 은닉
IV 필요카운터
병렬 암호화
병렬 복호화
오류 전파해당 블록2블록다수 블록해당 블록해당 블록
스트림 암호

7.9 XTS-AES 모드

블록 지향 저장 장치 암호화를 위한 모드이다 (IEEE Std 1619-2007).

Tweakable Block Cipher

일반 블록 암호에 tweak TT를 추가하여 동일 평문이라도 위치에 따라 다른 암호문을 생성한다.

C=H(T)E(K,  H(T)P)C = H(T) \oplus E(K,\; H(T) \oplus P)

XTS-AES 단일 블록 연산

두 개의 AES 인스턴스와 두 개의 키(Key1, Key2)를 사용한다.

파라미터설명
Key1데이터 암호화용
Key2tweak 암호화용
ii데이터 유닛(섹터) 번호 (tweak)
jj블록 번호 (카운터 역할)
α\alphaGF(2128)\text{GF}(2^{128})의 원시원소 (xx에 대응)

암호화:

T=E(Key2,  i)αjT = E(\text{Key2},\; i) \otimes \alpha^j C=E(Key1,  PT)TC = E(\text{Key1},\; P \oplus T) \oplus T

복호화:

P=D(Key1,  CT)TP = D(\text{Key1},\; C \oplus T) \oplus T

섹터 단위 연산

  • 각 128비트 블록을 독립적으로 처리 → 병렬 가능
  • 마지막 블록이 128비트 미만이면 ciphertext stealing 기법 사용

7.10 형식 보존 암호화 (FPE)

정의

평문과 동일한 형식의 암호문을 생성하는 암호화 기법이다.

항목평문FPE 암호문AES 암호문 (16진수)
신용카드8123 4512 3456 67808123 4521 7292 6780af411326466add24...
세금 ID219-09-9999078-05-11207b9af4f3f218ab25...

설계 과제

  1. 가역적이면서 형식 보존
  2. 다양한 문자 유형과 가변 길이 지원
  3. 짧은 평문에서도 강한 보안

Feistel 기반 FPE

대부분의 FPE 알고리즘은 Feistel 구조를 사용하며, 라운드 함수 FKF_K의 출력과 모듈러 덧셈으로 치환을 수행한다. FKF_K는 가역일 필요가 없다.

NIST 표준 알고리즘 (SP 800-38G)

알고리즘라운드 수radix 범위라운드 함수특징
FF110[2,216][2, 2^{16}]CBC 기반 PRF최대 길이/tweak 범위 지원
FF210[2,28][2, 2^{8}]ECB 기반 (서브키 사용)부채널 공격 방어에 유리
FF38[2,216][2, 2^{16}]ECB 기반최소 라운드, 64비트 고정 tweak

주요 용어

한국어영어설명
3중 DESTriple DES (3DES)DES를 3회 적용하는 다중 암호화
중간 일치 공격Meet-in-the-Middle Attack이중 암호화를 2562^{56} 수준으로 공격
ECB 모드Electronic Codebook블록 독립 암호화
CBC 모드Cipher Block Chaining이전 암호문과 체이닝
CFB 모드Cipher Feedback스트림 암호화 (s비트 단위)
OFB 모드Output Feedback암호화 출력 피드백
CTR 모드Counter카운터 암호화 기반
초기화 벡터Initialization Vector (IV)CBC/CFB/OFB에서 첫 블록 입력
논스Nonce비반복 고유값
XTS-AESXTS-AES저장 장치용 tweakable 블록 암호 모드
형식 보존 암호화Format-Preserving Encryption입력과 동일 형식의 출력 생성
Tweakable 블록 암호Tweakable Block Ciphertweak 파라미터를 추가한 블록 암호
암호문 훔치기Ciphertext Stealing부분 블록 처리 기법