4장-Block Ciphers & DES

2025. 4. 13. 22:18·컴퓨터 보안

Stream Cipher (스트림 암호)

개념

  • 평문을 1비트 또는 1바이트 단위로 실시간 암호화
  • 평문의 각 비트와 키 스트림을 XOR(⊕) 하여 암호문 생성
  • 대칭키 방식: 송신자와 수신자가 같은 키를 사용

예시

  • Autokeyed Vigenère Cipher
  • Vernam Cipher

이상적인 경우:

  • One-Time Pad

→ 평문과 같은 길이의 완전히 무작위한 키 스트림 을 사용

→ 이론적으로 완벽한 보안 (Perfect Secrecy)

현실적 문제:

  • 매번 새로운 키스트림을 만들고 전달해야 함 (실제 사용 어려움)
  • 데이터 양이 많아지면 키 분배가 불가능에 가까움

Stream Cipher (실용적인 구현)

  • 보통 키스트림 생성기를 알고리즘으로 구현
  • 두 사용자는 생성 키 하나만 공유 → 동일한 알고리즘으로 같은 키스트림 생성 가능

요구 조건:

  • 과거 키스트림을 알아도 미래 키스트림 예측 불가능해야 함
  • 여전히 대칭 암호 구조: 같은 키 공유

Block Cipher (블록 암호)

정의

  • 64비트, 128비트 등 고정된 블록 단위로 암호화
  • 평문 블록 → 암호화 알고리즘 → 암호문 블록

특징

  • 한 블록 전체를 암호화 (스트림 암호는 비트/바이트 단위)
  • 일반적으로 대부분의 네트워크 기반 암호화에 사용됨
  • 여전히 대칭 구조 (키 공유 필요)

비교 구조도 (Figure 4.1)

  • Stream Cipher: 평문과 키스트림을 XOR → 암호문
  • Block Cipher: 평문 블록 → 암호화 알고리즘(K) → 암호문 블록

Block Substitution (블록 치환)

Figure 4.2 (n = 4)

  • 각 4비트 입력 조합을 16개의 가능한 조합 중 하나로 전부 치환
  • 따라서 치환 가능한 경우의 수 = 16! (순열)
  • 입력이 n비트라면, 가능한 조합 수는 2ⁿ, 가능한 치환표 수는 (2ⁿ)!

※ 이처럼 고정된 비트 블록 단위로 치환하는 방식은 블록 암호의 기본 구조가 됨


Substitution Table 예시 (Table 4.1)

▸ 예시는 고정된 치환 규칙을 따르는 테이블로 구성됨

▸ 암호화는 고정된 테이블(=키)에 따라 수행되며 복호화는 역테이블 사용

  • 4비트: 입력 조합 16개 → (2⁴)! = 16!
  • 128비트: 입력 조합 2¹²⁸개 → (2¹²⁸)!

🔹 동일한 치환 표현 방법 (Playfair 예시)

  • Large table: 모든 조합 나열
  • Compact table: 키워드를 기준으로 암호화 규칙을 구성
  • 같은 키라도 표현 방식이 다를 뿐, 적용되는 규칙은 동일
  • Playfair나 Substitution Table 모두 키 기반 암호화 규칙을 압축 표현 가능

Feistel Cipher (페이스텔 구조)

구조

  • 암호화 알고리즘의 표준 구조 중 하나
  • 치환(Substitution) + 전치(Permutation) 조합

특징:

  • 왼쪽/오른쪽 절반으로 나누고, 라운드를 반복
  • 같은 구조로 복호화도 가능 (역순으로만 수행)
  • 현재 많은 블록 암호 (DES 등)에서 사용됨

🔹 Diffusion & Confusion (Claude Shannon 이론)

개념 설명
Diffusion (확산) 평문의 통계 구조를 암호문 전체로 분산시켜 숨김→ 평문 1비트가 암호문 다수 비트에 영향
Confusion (혼돈) 키와 암호문 사이 관계를 복잡하게 만듦→ 키 구조를 유추할 수 없게 함
  • 암호 알고리즘의 보안을 높이기 위한 필수 요소

 

Feistel Round 구조도 (Figure 4.3)

  • 16라운드로 구성된 Feistel 암호 구조
  • 각 라운드에서 키가 다르게 적용됨 (서브키 K₁~K₁₆)
  • 복호화는 역순으로 라운드 진행

 

  • 좌우 블록 분할: L, R
  • 라운드 함수 F: 입력 R과 서브키 Ki를 조합하여 새로운 R 생성
  • 암호화 공식:
    • Lᵢ = Rᵢ₋₁
    • Rᵢ = Lᵢ₋₁ ⊕ F(Rᵢ₋₁, Kᵢ)

DES (Data Encryption Standard)

개요

  • 1977년 미국 NIST에서 표준으로 채택
  • 64비트 블록을 56비트 키로 암호화
  • 16개의 Feistel 라운드로 구성됨

특징

  • 암호화와 복호화 구조 동일 (키 순서만 반대로)
  • 과거 가장 많이 사용된 알고리즘 → 지금은 AES로 대체

요약표: Stream vs Block Cipher

항목 Stream Cipher Block Cipher
단위 1비트 or 1바이트 블록 단위 (64/128비트 등)
예시 Vernam, RC4 DES, AES
장점 빠름, 실시간 암호화 구조적 보안성
단점 키 관리 어려움 블록 단위로 지연 가능
암호 구조 XOR 기반 Feistel 등 구조화됨

Table 4.5 해석: "완전 탐색에 필요한 평균 시간"

🔹키 크기 = 보안 강도

  • 키가 길수록 **가능한 키 수(조합)**가 기하급수적으로 증가 → 브루트 포스로 뚫기 훨씬 어려워짐

🔹DES의 보안성 한계

  • DES는 키 크기가 56비트로 작아서 현대 하드웨어 기준 1시간이면 뚫림
  • 그래서 DES는 더 이상 안전하지 않음!

🔹 AES는 안전한가?

  • AES-128: 5.3 × 10¹⁸년 (10¹² 속도 기준) → 사실상 불가능
  • AES-256: 10⁵²년 이상 필요 → 최고 보안성

🔹Triple DES

  • DES보다 강력하지만, AES보다 느리고 비효율적

🔹모노알파벳 암호

  • 26! ≈ 4 × 10²⁶의 키 조합이 있어도, 분석으로 쉽게 깨지기 때문에 보안성 없음

(시간만 보면 강력해 보이지만 실제로는 취약)

🔍 참고 지식

용어 의미
10⁹ decryptions/s 1초에 10억 번의 복호화 시도
10¹² decryptions/s 1초에 1조 번의 복호화 시도
Exhaustive search (브루트 포스) 가능한 모든 키를 다 시도해보는 공격 방식
평균 시간 평균적으로 전체 키의 절반을 시도해야 정답을 찾으므로시간 = (총 키 수)/2 ÷ 초당 복호화 속도

정리: 키 길이에 따른 보안 비교

키 길이 추천 여부 이유
56bit (DES) ❌ 사용 금지 브루트포스 가능
128bit (AES) ✅ 안전 수십 억 년 필요
256bit (AES) ✅ 매우 안전 우주 나이보다 김
Monoalphabetic ❌ 매우 취약 빈도 분석에 취약

'컴퓨터 보안' 카테고리의 다른 글

6장-AES  (0) 2025.04.22
5장-Finite Fields and Polynomial Operation  (0) 2025.04.16
3장-고전 암호 기법  (0) 2025.04.11
2장-정수론  (0) 2025.04.11
1장  (0) 2025.04.09
'컴퓨터 보안' 카테고리의 다른 글
  • 6장-AES
  • 5장-Finite Fields and Polynomial Operation
  • 3장-고전 암호 기법
  • 2장-정수론
samsam031
samsam031
samsam031 님의 블로그 입니다.
  • samsam031
    samsam031 님의 블로그
    samsam031
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 디지털포렌식
      • 드림핵 문제풀이
      • 대외활동
      • 개발 실습
      • 컴퓨터 보안
      • 클라우드
      • 자격증
      • 자연어처리
      • 백엔드
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
samsam031
4장-Block Ciphers & DES
상단으로

티스토리툴바