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

[복습] 커벌로스·세사미 차이점부터 해시함수, 전자서명, PKI 전자봉투까지 완벽 정리

by Lsung 2026. 9. 6.

1. 핵심 개념 종합 요약 및 정립

① 대칭키 및 공개키 기반 키 관리 (Kerberos vs SESAME)

  • Kerberos (대칭키 기반): KDC(키분배센터)를 중개자로 두고 가입자 간 세션키(SK)를 나눕니다.
    • 마스터키($K_A, K_B$)를 기반으로 세션키 및 난수($T$)를 전달하여 상호 인증을 수행하며, SSO(Single Sign-On) 환경을 제공합니다.
  • SESAME (공개키/인증기관 기반): 공개키 기관(CA)을 통해 상대방의 신원 및 공개키($KU$)를 검증한 후, 난수($N_1, N_2$) 교환을 거쳐 안전하게 대칭 세션키($KS$)를 할당받습니다.

② 해시함수 (Hash Function)

  • 개념: 임의 길이의 메시지($M$)를 입력받아 고정된 크기의 메시지 다이제스트(Message Digest, $h$)를 생성하는 일방향 함수($H$).
  • 역할: 암호화(기밀성)가 아닌 데이터의 무결성(Integrity) 검증 및 사용자 인증이 핵심 목적입니다.
  • 주요 특성:
    • 일방향성 (One-way): $h = H(M)$에서 $h$를 보고 $M$을 역산하는 것은 불가능합니다.
    • 충돌 저항성 및 생일 공격 (Birthday Attack): 입력값 $M$은 무한하지만 출력값 $h$의 크기는 고정되어 있으므로 서로 다른 $M_1, M_2$가 동일한 해시값 $h$를 가질 수 있습니다. 이를 악용해 동일한 해시값을 갖는 가짜 패스워드/데이터를 찾아내는 기법을 생일 공격이라 합니다.
  • 주요 알고리즘: MD5 (128bit, 충돌 취약점 존재), SHA-1 (160bit), HAS-160 (160bit, 한국 표준), SHA-256 등.

③ 전자서명 (Digital Signature) & PKI

  • 전자서명의 5대 요건: 서명자 신원확인, 위조 불가, 변경 불가(무결성), 부인 불가(개인키 특성), 재사용 불가.
  • 메시지 부가형 전자서명 메커니즘:
    1. 송신: 메시지 $M \rightarrow$ 해시함수 $\rightarrow$ 다이제스트 $\rightarrow$ 송신자 개인키($KR_A$)로 암호화(=전자서명) $\rightarrow$ $[메시지 + 전자서명]$ 전송.
    2. 수신:
      • 전자서명을 송신자 공개키($KU_A$)로 복호화하여 다이제스트 A 추출.
      • 메시지를 해시함수로 직접 계산하여 다이제스트 B 생성.
      • 다이제스트 A와 B를 비교하여 무결성 및 부인방지/원천 증명 검증.
  • 전자봉투 (Hybrid Cryptosystem):
    • 공개키 암호화는 연산 속도가 느리므로, 대용량 메시지는 일회용 대칭키(난수 비밀키)로 암호화하고, 이 비밀키만 수신자 공개키($KU_B$)로 암호화하여 전달하는 기법(가용성 및 기밀성 확보).
  • PKI (Public Key Infrastructure):
    • CA (인증기관): 인증서 발급 및 폐지 관리.
    • RA (등록기관): 사용자 신원 확인 대행 (예: 은행).
    • CRL (인증서 폐지 목록): 폐지된 인증서의 해시값을 등록·관리하는 리스트.

2. [제출 과제] 기밀성 + 무결성 통합 메커니즘 (전자서명 + 전자봉투)

메시지의 무결성/부인방지(전자서명)와 기밀성/가용성(전자봉투)을 동시에 만족하기 위해 송신부터 수신까지 시리얼(직렬) 처리되는 일련의 구조도입니다.

📌 [통합 흐름도 (Sequence)]

[송신자 A]                                                            [수신자 B]
   │                                                                     │
   ├─ 1. 메시지(M) 생성                                                     │
   │                                                                     │
   ├─ [단계 1: 전자서명 생성 (무결성/부인방지)]                               │
   │   ├── 메시지(M) ──▶ [해시함수 H] ──▶ 다이제스트(h)                       │
   │   └── 다이제스트(h) ──▶ [A의 개인키(KR_A) 암호화] ──▶ [전자서명(Sig)]       │
   │                                                                     │
   ├─ [단계 2: 전자봉투 생성 (기밀성/가용성)]                                 │
   │   ├── 일회용 대칭키(K) 난수 생성                                         │
   │   ├── [M + Sig] ──▶ [대칭키(K) 암호화] ──▶ [암호문(C)]                      │
   │   └── 대칭키(K) ──▶ [B의 공개키(KU_B) 암호화] ──▶ [전자봉투(Env)]           │
   │                                                                     │
   └─────── 전송: [ 암호문(C) + 전자봉투(Env) ] ─────────────────────────▶│
                                                                         │
                                   [단계 3: 전자봉투 복호화 (기밀성 해제)] ┤
                                    ├── Env ──▶ [B의 개인키(KR_B) 복호화] ──▶ 대칭키(K)
                                    └── C ────▶ [대칭키(K) 복호화] ──────▶ [M + Sig]
                                                                         │
                                   [단계 4: 전자서명 검증 (무결성/인증)] ┤
                                    ├── Sig ──▶ [A의 공개키(KU_A) 복호화] ──▶ 다이제스트 h1
                                    ├── M ────▶ [해시함수 H] ───────────▶ 다이제스트 h2
                                    └── [h1 == h2 ?] ──▶ 검증 성공 (수신 완료)

💡 단계별 처리 명세서

  1. 전자서명 단계 (송신자 측):
    • 원문 메시지 $M$을 해시함수 $H$에 입력하여 다이제스트 $h = H(M)$를 추출합니다.
    • 다이제스트 $h$를 송신자 A의 개인키($KR_A$)로 암호화하여 전자서명($Sig$)을 만듭니다.
  2. 전자봉투 단계 (송신자 측):
    • 속도가 빠른 일회용 대칭키 $K$(난수)를 생성합니다.
    • 원문과 서명이 결합된 $[M + Sig]$를 대칭키 $K$로 암호화하여 암호문 $C$를 만듭니다.
    • 대칭키 $K$를 수신자 B의 공개키($KU_B$)로 암호화하여 전자봉투 $Env$를 만듭니다.
    • 최종적으로 $[C + Env]$ 세트를 네트워크를 통해 수신자에게 전송합니다.
  3. 수신 및 검증 단계 (수신자 측):
    • 수신자 B는 자신의 개인키($KR_B$)로 전자봉투 $Env$를 복호화하여 일회용 대칭키 $K$를 획득합니다.
    • 대칭키 $K$로 암호문 $C$를 복호화하여 원문 $M$과 전자서명 $Sig$를 분리해 냅니다.
    • 서명 $Sig$를 송신자 A의 공개키($KU_A$)로 복호화하여 다이제스트 $h_1$을 얻습니다.
    • 복원된 원문 $M$을 동일한 해시함수에 넣어 다이제스트 $h_2$를 계산합니다.
    • $h_1$$h_2$가 일치하면 메시지가 전송 중 변조되지 않았음(무결성)과 송신자 A가 작성하였음(부인방지 및 인증)이 최종 검증됩니다.