본문 바로가기
카테고리 없음

[암호학] DES 운영 모드, 공개키 암호화(RSA/ECC) 및 키 관리 메커니즘(Kerberos/SESAME)

by Lsung 2026. 9. 5.

1. DES 심화 및 작동 모드 (Operation Modes)

① DES 라운드 키 생성 및 S-Box/순열 리뷰

  • S-Box (Substitution Box): 6비트 입력을 4비트로 변환하는 비선형 치환 단계입니다.
  • 순열 (Permutation, P): 비트의 위치(순서)만 뒤섞는 과정입니다.
  • 라운드 키($K_1 \sim K_{16}$) 생성 과정:
    1. PC-1 (Permuted Choice 1): 입력된 64비트 키에서 패리티 체크 비트(8비트)를 제외한 56비트를 선택합니다. (9의 배수 위치 비트 등이 제어용/관행상 제외됨)
    2. 좌측 순환 이동 (Left Circular Shift): 56비트를 좌/우 28비트씩 나누고 라운드별 정해진 횟수만큼 좌측 시프트합니다.
    3. PC-2 (Permuted Choice 2): 56비트 중 48비트를 추출하여 각 라운드의 서브키($K_i$)로 사용합니다.
  • 복호화: 암호화와 동일한 구조를 가지며, 서브키 적용 순서를 역순($K_{16} \rightarrow K_1$)으로 진행합니다.

② DES 블록 암호 운영 모드

동일한 평문 블록이 동일한 암호문으로 변환되는 것을 방지하기 위해 다양한 운영 모드를 사용합니다.

       [운영 모드 분류]
              │
   ┌──────────┴──────────┐
[블록 단위]            [스트림/비트 단위]
 ├── ECB (전자 코드북)    ├── CFB (암호 피드백)
 └── CBC (암호 블록 체이닝) └── OFB (출력 피드백)
운영 모드 설명 및 특징 주요 활용/비고
ECB (Electronic Codebook) 평문 블록을 각각 독립적으로 암호화하는 가장 기본 모드. 동일 평문에 대해 동일 암호문이 생성되어 패턴 노출 위험 존재. 단순 데이터 전송
CBC (Cipher Block Chaining) 이전 단계의 암호문($C_{n-1}$)과 현재 평문($P_n$)을 XOR한 뒤 암호화 수행. 동일 평문이라도 매번 다른 암호문 생성. 일반적인 파일/통신 암호화
CFB (Cipher Feedback) 암호문 피드백 구조. 64비트 미만(예: 8비트, $j$비트) 단위 전송 시 사용. 링크 암호화, 인공위성 통신 등
OFB (Output Feedback) 암호화 블록의 출력을 다음 단계의 입력으로 피드백. 전송 오류가 다음 블록으로 전파되지 않음. 무선 통신, 위성 데이터 전송

③ 대칭키 암호의 발전 및 확장

  • 3중 DES (Triple DES, 3DES):
    • DES의 전사적 공격(Brute-force) 취약성을 보완하기 위해 키 2개(또는 3개)를 사용하여 암호화 $\rightarrow$ 복호화 $\rightarrow$ 암호화 (EDE) 순으로 진행.
  • AES (Advanced Encryption Standard):
    • DES를 대체하기 위해 2000년 10월 표준으로 선정된 Rijndael(리인델) 알고리즘.
    • 128/192/256비트 키 사용, 알려진 모든 공격에 대해 높은 안전성 제공.
  • 기타 대칭키 알고리즘:
    • IDEA: 유럽 중심 개발, 64비트 블록/128비트 키, 8라운드, PGP 메일 시스템 적용.
    • RC5: 블록/라운드/키 크기를가변적으로 설정 가능.
    • SEED: 1999년 한국정보보호진흥원(KISA) 개발, 128비트 블록/키, 16라운드.

2. 공개키 암호시스템 (Public-Key Cryptography)

① 대칭키 vs 공개키 비교

[대칭키 방식]   평문 ──▶ [ 암호화 (K) ] ──▶ [ 복호화 (K) ] ──▶ 평문
               (동일한 키 공유, 속도 빠름, 부인방지 불가)

[공개키 방식]   평문 ──▶ [ 암호화 (KU_B) ] ──▶ [ 복호화 (KR_B) ] ──▶ 평문
               (쌍을 이루는 키 사용, 기밀성 및 디지털 서명 구현 가능)

② 공개키 암호의 수학적 원리와 서비스

  • 수학적 기반: 소인수분해 난제(RSA) 및 이산대수 난제(ElGamal, Diffie-Hellman, ECC) 이용.
  • 합여계와 곱셈 역원 (Multiplicative Inverse):
    • $a \times b \equiv 1 \pmod n$ 관계를 활용하여 공개키와 개인키 쌍을 생성.
  • 제공 기능:
    • 기밀 통신 (Confidentiality): 수신자의 공개키($KU_B$)로 암호화 $\rightarrow$ 수신자의 개인키($KR_B$)로만 복호화.
    • 디지털 서명 / 근원지 증명 (Non-repudiation): 송신자의 개인키($KR_A$)로 암호화/서명 $\rightarrow$ 송신자의 공개키($KU_A$)로 누구나 검증 가능.

3. 키 관리 및 세션키 분배 프로토콜 (Kerberos & SESAME)

① 대칭키 기반 키 분배: Kerberos (커베로스)

KDC(Key Distribution Center / 키분배센터)를 중앙에 두고 가입자 간 세션키($SK$)를 안전하게 할당하는 SSO(Single Sign-On) 기반 인증 프로토콜입니다.

  [클라이언트 A] ──── (1) Request [ID_A, ID_B] ────▶ [ KDC ]
               ◀── (2) E_KA[SK, T] / E_KB[SK, T] ──┘
                     (A와 B의 마스터키로 각각 암호화)
       │
       └───────── (3) E_SK[T] ─────────▶ [ 서버 B ]
       ◀───────── (4) E_SK[T 연산] ─────┘ (상호 인증 완료 후 세션키 통신)
  1. 클라이언트 A가 KDC에 서버 B와의 통신을 위한 세션키를 요청합니다.
  2. KDC는 $A$의 마스터키($K_A$)로 암호화된 세션키 정보와, $B$의 마스터키($K_B$)로 암호화된 세션키 정보(난수 $T$ 포함)를 전달합니다.
  3. $A$$B$는 각각 마스터키로 복호화하여 세션키($SK$)와 난수 $T$를 획득하고, 상호 인증 후 안전한 통신을 진행합니다.

② 공개키 기반 키 분배: SESAME (세사미)

공개키 인증기관(CA / Public Key Directory)을 통해 서로의 신뢰된 공개키를 교환한 후, 안전하게 대칭 세션키($KS$)를 공유하는 방식입니다.

[시행자 A] ── (1) Request ──▶ [공개키 기관] ── (2) E_KR_AU[KU_B] ──▶ [시행자 A]
          ── (3) E_KU_B[ID_A, N1] ────────────────────────────▶ [대응자 B]
                                 [공개키 기관] ◀─ (4) Request ─ [대응자 B]
                                 [공개키 기관] ── (5) E_KR_AU[KU_A] ─▶ [대응자 B]
[시행자 A] ◀─ (6) E_KU_A[N1, N2] ───────────────────────────── [대응자 B]
          ── (7) E_KU_B[N2] ─────────────────────────────────▶ [대응자 B]
          ── (8) E_KU_B[E_KR_A[KS]] (세션키 전달) ─────────────▶ [대응자 B]
  1. 송신자 $A$는 CA로부터 $B$의 공개키($KU_B$)를 발급받습니다.
  2. $A$$B$에게 인증 요청($N_1$)을 보내면, $B$ 역시 CA로부터 $A$의 공개키($KU_A$)를 발급받아 검증합니다.
  3. 난수 $N_1, N_2$ 교환을 통해 상호 인증을 완료합니다.
  4. $A$는 최종 세션키($KS$)를 자신의 개인키($KR_A$)로 서명하고 $B$의 공개키($KU_B$)로 암호화하여 $B$에게 전달한 뒤, 세션키 기반 통신을 시작합니다.