CS/정보보호

[정보보호] 블록암호와 DES

2ivii 2025. 11. 24. 14:38

이번 글에서는 블록암호(Block Cipher)의 개념과 구조, 그리고 그 대표 사례인 DES(Data Encryption Standard)를
다루어 보겠다.

블록암호란?

블록암호는 말 그대로 고정된 크기의 블록 단위로 데이터를 암호화하는 방식이다.

  • 블록 크기: 보통 64bit 또는 128bit
  • 입력을 일정 크기로 쪼개 암호화
  • 스트림 암호는 bit 단위로 처리하는 것과 대조됨

암호 구조 비교

스트림 암호 비트·바이트 단위 암호화 RC4
블록 암호 고정된 블록 단위 암호화 DES, AES

 Feistel 구조

DES뿐 아니라 많은 블록암호가 사용하는 구조로 “블록을 두 개로 나누고, 오른쪽을 함수에 넣어 왼쪽과 섞어주는 구조”이다. 

 Feistel 라운드 구조
  1. 입력을 L(왼쪽), R(오른쪽)으로 분할
  2. R을 F 함수에 넣고, L과 XOR
  3. L과 R을 스왑
  4. 여러 라운드 반복
Lᵢ → Rᵢ
Rᵢ → Lᵢ ⊕ F(Rᵢ, Kᵢ)

→ 구조가 단순하면서도 매우 강력
복호화 시에도 동일한 구조를 사용 가능(키만 거꾸로 사용)

 

DES(Data Encryption Standard)란?

1977년 NIST에서 표준으로 제정된 블록암호 알고리즘이다.

  • 블록 크기: 64bit
  • 키 길이: 56bit
  • 총 16라운드의 Feistel 구조

현재는 짧은 키 길이 때문에 안전하지 않아 AES로 대부분 대체되었지만, 암호학 개념을 배우기에 가장 좋은 예시이다.

 

DES 암호화 전체 구조

DES는 다음 단계로 이루어진다:

초기순열(IP)
 → 16라운드 Feistel 진행
 → 최종순열(FP)


1️⃣ 초기순열(IP, Initial Permutation)

  • 입력 64bit를 의미 있는 순서로 다시 섞음
  • 안전성보다는 하드웨어 구현 편의성 때문에 존재

 

2️⃣ 16라운드 라운드 처리(Feistel)

  • 핵심 암호화 과정
  • 각 라운드에서 F함수가 수행된다.
    • Expansion(확장)
    • XOR with key
    • Substitution(S-box)
    • Permutation(P-box)
    • L ⟷ R 스왑

3️⃣ 최종순열(FP, Final Permutation)

  • IP의 역순

DES 라운드 내부 상세

DES의 진짜 암호 강도는 라운드 내부 구조(F 함수)에서 나온다. 위에서 2번의 단계에 해당된다. 이를 자세하게 살펴보자.

 

(1) 확장(Expansion, E-box)

 

오른쪽 32bit → 48bit로 확장
이유:

  • S-box 입력은 6bit 필요
  • 키(48bit)와의 XOR을 위해 맞춰야 함

(2) XOR with Round Key

 

라운드 키 48bit를 XOR
→ 키 스케줄(Key Schedule)이 따로 존재
→ 원래 56bit 키 → 매 라운드마다 48bit 키 생성

 

(3) S-box 치환 (가장 중요한 부분!)

48bit를 6bit × 8개 = 8개 블록으로 나눔 → 각 S-box로 입력

 

S-box는 다음 역할을 수행한다.

  • 6bit → 4bit 치환
  • 비선형성 제공
  • 암호 강도의 핵심

→ S-box가 없다면 해독이 매우 쉬워짐

 

(4) P-box(Permutation)

S-box 32bit 출력값을 고정된 테이블로 섞음
→ 확산(diffusion) 제공

 

(5) L/R 스왑

마지막 라운드를 제외한 15개 라운드에서 L과 R을 서로 바꿈.


위에서는 DES의 암호화 방식에 대해 살펴보았다. DES의 효과 및 현재 사용하지 않는 이유에 대해 알아보겠다.

Avalanche Effect(쇄도 효과)

DES는 입력을 조금만 바꿔도 출력이 크게 바뀌도록 설계됨.

입력 1bit 변화 → 출력 32bit 중 절반 이상 변화

→ 좋은 블록암호의 필수 조건
→ 암호 분석을 어렵게 만듦

 DES가 더 이상 안전하지 않은 이유

  • 키 길이 56bit → 너무 짧다
    : 1990년대 중반부터 전수조사(Brute force)로 1~2일이면 깨진다.
  • S-box는 강력하지만 구조가 오래됨
    : 현대 크립토 분석 도구 앞에서는 취약

그래서 대체된 알고리즘으로 AES가 나왔다. 

  • 키 길이 128/192/256bit
  • Rijndael 구조
  • 훨씬 강력함

AES에 대해선 다음 포스팅에서 다룰 예정이다.


마무리

이번 포스팅에서는 블록암호와 DES에 대해 살펴봤다.

블록암호 고정 크기 블록 단위 암호
Feistel 구조 L/R 분리 + 함수 적용 + 스왑
DES 56bit 키, 16라운드, Feistel 기반
S-box 비선형성 제공, DES 강도 핵심
Avalanche Effect 1bit 변화 → 큰 변화 유도
단점 짧은 키 길이로 인해 더 이상 안전하지 않음

DES는 현대에서는 사용하지 않지만, 블록암호의 구조, S-box의 중요성, 확산·혼돈 개념을 배우기 위해 많이 학습한다.

다음 포스팅은 AES에 대해 포스팅하겠다!