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대 요건: 서명자 신원확인, 위조 불가, 변경 불가(무결성), 부인 불가(개인키 특성), 재사용 불가.
- 메시지 부가형 전자서명 메커니즘:
- 송신: 메시지 $M \rightarrow$ 해시함수 $\rightarrow$ 다이제스트 $\rightarrow$ 송신자 개인키($KR_A$)로 암호화(=전자서명) $\rightarrow$ $[메시지 + 전자서명]$ 전송.
- 수신:
- 전자서명을 송신자 공개키($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 ?] ──▶ 검증 성공 (수신 완료)
💡 단계별 처리 명세서
- 전자서명 단계 (송신자 측):
- 원문 메시지 $M$을 해시함수 $H$에 입력하여 다이제스트 $h = H(M)$를 추출합니다.
- 다이제스트 $h$를 송신자 A의 개인키($KR_A$)로 암호화하여 전자서명($Sig$)을 만듭니다.
- 전자봉투 단계 (송신자 측):
- 속도가 빠른 일회용 대칭키 $K$(난수)를 생성합니다.
- 원문과 서명이 결합된 $[M + Sig]$를 대칭키 $K$로 암호화하여 암호문 $C$를 만듭니다.
- 대칭키 $K$를 수신자 B의 공개키($KU_B$)로 암호화하여 전자봉투 $Env$를 만듭니다.
- 최종적으로 $[C + Env]$ 세트를 네트워크를 통해 수신자에게 전송합니다.
- 수신 및 검증 단계 (수신자 측):
- 수신자 B는 자신의 개인키($KR_B$)로 전자봉투 $Env$를 복호화하여 일회용 대칭키 $K$를 획득합니다.
- 대칭키 $K$로 암호문 $C$를 복호화하여 원문 $M$과 전자서명 $Sig$를 분리해 냅니다.
- 서명 $Sig$를 송신자 A의 공개키($KU_A$)로 복호화하여 다이제스트 $h_1$을 얻습니다.
- 복원된 원문 $M$을 동일한 해시함수에 넣어 다이제스트 $h_2$를 계산합니다.
- $h_1$과 $h_2$가 일치하면 메시지가 전송 중 변조되지 않았음(무결성)과 송신자 A가 작성하였음(부인방지 및 인증)이 최종 검증됩니다.