본문으로 건너뛰기

14장. 키 관리와 분배

학습 목표

  • 키 계층(key hierarchy) 개념을 논의한다.
  • 비대칭 암호를 사용한 대칭키 분배 이슈를 이해한다.
  • 공개키 분배의 접근법과 각각의 위험을 분석한다.
  • X.509 인증서의 요소를 설명한다.
  • PKI(공개키 기반구조) 개념을 개관한다.

14.1 대칭 암호를 사용한 대칭키 분배

키 분배 방법 4가지

  1. A가 키를 선택하여 B에게 물리적으로 전달
  2. 제3자가 키를 A와 B에게 물리적으로 전달
  3. 이전에 사용한 키로 새 키를 암호화하여 전송 — 이전 키가 노출되면 이후 모든 키가 노출됨
  4. A와 B가 제3자(KDC)와 각각 암호 연결 → KDC가 암호화된 링크를 통해 키 전달

NN개 종단점이 쌍별로 통신하려면 세션키가 최대 N(N1)/2N(N-1)/2개 필요하다. 방법 4(KDC)를 사용하면 마스터키는 NN만 있으면 된다.

키 계층

계층보호 방식
데이터세션키로 암호화 보호
세션키마스터키로 암호화 보호
마스터키비암호적 보호 (물리적 전달)

KDC 시나리오 (5단계)

A가 B와의 세션키를 요청하는 전형적 시나리오:

  1. AKDCA \to \text{KDC}:   IDAIDBN1\;ID_A \| ID_B \| N_1
  2. KDCA\text{KDC} \to A:   E(Ka,  [KsIDBN1E(Kb,  [KsIDA])])\;E(K_a,\;[K_s \| ID_B \| N_1 \| E(K_b,\;[K_s \| ID_A])])
  3. ABA \to B:   E(Kb,  [KsIDA])\;E(K_b,\;[K_s \| ID_A])
  4. BAB \to A:   E(Ks,  N2)\;E(K_s,\;N_2)
  5. ABA \to B:   E(Ks,  f(N2))\;E(K_s,\;f(N_2))
각 단계의 역할
  • 1~3단계 (키 분배): KDC가 세션키 KsK_s를 생성하고, A와 B의 마스터키로 각각 암호화하여 전달. 논스 N1N_1은 재전송 방지.
  • 4~5단계 (인증): B가 새 논스 N2N_2KsK_s로 암호화하여 전송, A가 f(N2)f(N_2)를 반환 → 상대방이 KsK_s를 올바르게 수신했음을 상호 확인.

계층적 키 제어

대규모 네트워크에서는 로컬 KDC → 글로벌 KDC의 계층 구조를 사용한다. 마스터키 분배 범위가 축소되고, 단일 KDC가 타협되어도 피해가 해당 로컬 영역으로 제한된다.

세션키 수명

  • 연결 지향 프로토콜: 연결 기간 동안 사용하거나, 장기 연결에서는 PDU 시퀀스 번호가 순환할 때마다 교체
  • 비연결 프로토콜: 일정 기간 또는 일정 거래 수 기준으로 교체. 트랜잭션마다 새 키를 쓰면 가장 안전하지만, 비연결 프로토콜의 핵심 장점(최소 오버헤드)을 잃게 됨

투명 키 제어 방식

**세션 보안 모듈(SSM)**이 호스트 대신 KDC와 통신하여 세션키를 획득한다. 사용자는 키 관리를 인식하지 못하고 투명하게 보호를 받는다.

  1. 호스트가 연결 요청 패킷을 전송
  2. SSM이 패킷을 버퍼링하고 KDC에 세션키 요청
  3. KDC가 양측 SSM에 세션키 분배
  4. 버퍼링된 패킷이 세션키로 암호화되어 전송

분산 키 제어

KDC 없이 각 쌍이 마스터키를 직접 공유. nn개 종단에 최대 n(n1)/2n(n-1)/2개의 마스터키가 필요 → 소규모 로컬 환경에서만 실용적이다.

AB:  IDAN1A \to B:\; ID_A \| N_1

BA:  E(Km,  [KsIDAIDBf(N1)N2])B \to A:\; E(K_m,\;[K_s \| ID_A \| ID_B \| f(N_1) \| N_2])

AB:  E(Ks,  f(N2))A \to B:\; E(K_s,\;f(N_2))

키 사용 제어

자동 분배된 키의 용도를 제한하는 두 가지 방식:

태그 방식: DES의 비사용 8비트에 키 유형(세션/마스터), 용도(암호화/복호화) 정보를 삽입. 키와 함께 암호화되므로 보호되지만, 8비트로 제한되고 복호화 시점에서만 사용 가능하다.

제어 벡터 방식: 임의 길이의 제어 벡터를 해시한 뒤 마스터키와 XOR하여 세션키를 암호화한다:

Ciphertext=E(Kmh(CV),  Ks)\text{Ciphertext} = E\bigl(K_m \oplus h(CV),\; K_s\bigr)

세션키를 복원하려면 마스터키 KmK_m 제어 벡터 CVCV 양쪽이 필요하다. 제어 벡터는 평문으로 전달 가능하므로 모든 단계에서 키 용도를 제어할 수 있다.


14.2 비대칭 암호를 사용한 대칭키 분배

단순 비밀키 분배 (Merkle)

  1. A가 공개/개인 키 쌍 {PUa,PRa}\{PU_a, PR_a\}을 생성, PUaIDAPU_a \| ID_A를 B에게 전송
  2. B가 세션키 KsK_s를 생성, E(PUa,Ks)E(PU_a, K_s)를 A에게 전송
  3. A가 D(PRa,E(PUa,Ks))D(PR_a, E(PU_a, K_s))KsK_s 복원
  4. 양쪽 모두 PUaPU_a, PRaPR_a를 폐기
중간자 공격에 취약

프로토콜이 참가자를 인증하지 않으므로, 공격자 D가:

  1. A의 PUaPU_a를 가로채고 자신의 PUdPU_d를 B에게 전달
  2. B가 E(PUd,Ks)E(PU_d, K_s)를 전송 → D가 KsK_s를 복원
  3. D가 E(PUa,Ks)E(PU_a, K_s)를 A에게 전달

결과: A, B 모두 D가 KsK_s를 알고 있음을 인식하지 못한다. 도청만 있는 환경에서만 안전.

기밀성 + 인증 포함 분배

A와 B가 이미 상대의 공개키를 알고 있다고 가정:

  1. ABA \to B: E(PUb,  [N1IDA])E(PU_b,\;[N_1 \| ID_A])
  2. BAB \to A: E(PUa,  [N1N2])E(PU_a,\;[N_1 \| N_2])N1N_1의 반환으로 A는 B를 인증
  3. ABA \to B: E(PUb,  N2)E(PU_b,\;N_2)N2N_2의 반환으로 B는 A를 인증
  4. ABA \to B: E(PUb,  E(PRa,  Ks))E(PU_b,\;E(PR_a,\;K_s)) — B의 공개키로 기밀성, A의 개인키로 인증
  5. BB: D(PUa,  D(PRb,  M))D(PU_a,\;D(PR_b,\;M))으로 KsK_s 복원

하이브리드 방식

IBM 메인프레임에서 사용. 3단계 계층:

계층분배 수단
세션키KDC가 마스터키로 암호화하여 분배
마스터키공개키 암호로 분배
공개키물리적 또는 인증서 기반 분배

공개키 암호는 마스터키 갱신 시에만 사용하므로 성능 저하가 최소화되고, 기존 KDC 인프라와 역호환이 가능하다.


14.3 공개키 분배

(1) 공개 발표

각 참가자가 자신의 공개키를 공개적으로 게시 (예: PGP 사용자가 메일링 리스트에 공개키 첨부). 위조 위험 — 누구나 가짜 공개키를 발표하여 도청·위장 가능.

(2) 공개 디렉토리

신뢰할 수 있는 기관이 {이름,공개키}\{\text{이름}, \text{공개키}\} 디렉토리를 유지·관리.

요소:

  1. 기관이 디렉토리를 유지
  2. 등록은 대면 또는 안전한 인증 통신으로 수행
  3. 참가자는 언제든지 키를 갱신 가능
  4. 디렉토리에 대한 전자적 접근도 안전·인증된 통신이어야 함

취약점: 디렉토리 기관의 개인키가 타협되면 모든 키가 위험.

(3) 공개키 권한기관

중앙 권한기관이 각 참가자의 공개키를 관리하고, 요청 시 자신의 개인키 PRauthPR_{\text{auth}}로 서명하여 전달한다.

  1. AAuthorityA \to \text{Authority}: Request T1\| T_1
  2. AuthorityA\text{Authority} \to A: E(PRauth,  [PUbRequestT1])E(PR_{\text{auth}},\;[PU_b \| \text{Request} \| T_1])
  3. ABA \to B: E(PUb,  [IDAN1])E(PU_b,\;[ID_A \| N_1]) 4–5. B도 같은 방식으로 A의 공개키를 권한기관에서 획득
  4. BAB \to A: E(PUa,  [N1N2])E(PU_a,\;[N_1 \| N_2])
  5. ABA \to B: E(PUb,  N2)E(PU_b,\;N_2)

총 7개 메시지가 필요하지만, 획득한 공개키를 캐싱하면 초기 5개 메시지는 가끔만 필요.

한계

권한기관이 병목점이 될 수 있으며, 디렉토리 레코드의 변조에도 취약하다.

(4) 공개키 인증서

공개키를 인증기관(CA)의 전자서명이 포함된 인증서 형태로 배포. 온라인으로 권한기관에 접근할 필요 없이, 참가자가 인증서를 직접 교환·검증할 수 있다.

CA=E(PRauth,  [TIDAPUa])C_A = E\bigl(PR_{\text{auth}},\;[T \| ID_A \| PU_a]\bigr)

수신자는 PUauthPU_{\text{auth}}로 복호화하여 IDAID_APUaPU_a를 얻고, CA의 서명으로 진정성을 확인한다. 타임스탬프 TT는 인증서의 유효 기간을 보장한다.

네 가지 요구사항:

  1. 누구나 인증서를 읽어 소유자의 이름과 공개키를 확인 가능
  2. 누구나 인증서가 CA에 의해 생성되었음을 검증 가능
  3. CA만 인증서를 생성·갱신 가능
  4. 인증서의 시간적 유효성을 검증 가능

14.4 X.509 인증서

ITU-T X.509 표준은 공개키 인증서의 형식을 정의한다. S/MIME(19장), IPsec(20장), SSL/TLS(17장) 등 주요 보안 프로토콜에서 사용된다.

인증서 필드

필드설명
Version인증서 형식 버전 (v1/v2/v3)
Serial NumberCA 내에서 고유한 정수
Signature Algorithm ID서명에 사용된 알고리즘 + 파라미터
Issuer NameCA의 X.500 이름
Period of Validity유효 시작·종료 날짜
Subject Name인증서 소유자의 이름
Subject Public Key Info공개키 + 알고리즘 식별자
Issuer Unique ID(v2+) CA의 고유 식별자 (선택)
Subject Unique ID(v2+) 소유자의 고유 식별자 (선택)
Extensions(v3) 확장 필드들
Signature위 모든 필드에 대한 CA의 전자서명

X.509 표기법: CAA=CA{V,SN,AI,CA,UCA,A,UA,Ap,TA}CA\langle\langle A\rangle\rangle = CA\{V, SN, AI, CA, U_{CA}, A, U_A, A_p, T_A\}

인증서 체인

A가 CA X1X_1에서 인증서를 받고, B가 CA X2X_2에서 인증서를 받았을 때, X1X_1X2X_2가 서로의 인증서를 교차 생성했다면:

X1X2    X2BX_1\langle\langle X_2\rangle\rangle \;\; X_2\langle\langle B\rangle\rangle

A는 이 체인을 따라 X2X_2의 공개키를 먼저 검증하고, 이를 사용해 B의 공개키를 검증한다. 임의 길이의 체인이 가능:

X1X2    X2X3        XNBX_1\langle\langle X_2\rangle\rangle \;\; X_2\langle\langle X_3\rangle\rangle \;\; \cdots \;\; X_N\langle\langle B\rangle\rangle

인증서 폐기 (CRL)

유효기간 만료 전에 인증서를 폐기해야 하는 경우: 개인키 타협, 소유자의 CA 탈퇴, CA의 인증서 타협 등.

각 CA가 **인증서 폐기 목록(CRL)**을 유지·공개한다. CRL에는 CA의 서명, 생성 일자, 다음 CRL 발행 예정일, 폐기된 인증서의 일련번호와 폐기 일자가 포함된다.

X.509 v3 확장

v2 형식의 한계(주체 식별 부족, 보안 정책 표시 불가, CA 제약 불가 등)를 극복하기 위해 유연한 확장 프레임워크가 도입되었다. 각 확장은 식별자, 임계성 표시자(criticality indicator), 확장 값으로 구성된다.

세 가지 확장 범주:

범주주요 확장 필드설명
키·정책 정보Authority/Subject Key ID, Key Usage, Certificate Policies, Policy Mappings키 용도 제한, 정책 식별, CA 키 갱신 지원
주체·발급자 속성Subject/Issuer Alternative Name, Subject Directory Attributes대안 이름(이메일, URL), 추가 식별 정보
인증 경로 제약Basic Constraints, Name Constraints, Policy ConstraintsCA 역할 제한, 이름 공간 제약, 정책 제약
Key Usage 확장

인증서의 공개키가 사용될 수 있는 목적을 제한: 전자서명, 부인 방지, 키 암호화, 데이터 암호화, 키 합의, 인증서 서명 검증, CRL 서명 검증 등.


14.5 공개키 기반구조 (PKI)

IETF PKIX 워킹 그룹이 X.509 기반의 공식 모델을 정의하였다.

PKIX 구성 요소

구성 요소역할
최종 개체 (End Entity)인증서의 주체 — 사용자, 장치, 프로세스
인증기관 (CA)인증서·CRL 발급. 관리 기능을 RA에 위임 가능
등록기관 (RA)CA를 대신하여 사용자 신원 확인 등 관리 기능 수행
CRL 발급자CA가 CRL 공개를 위임할 수 있는 선택적 구성 요소
저장소 (Repository)인증서와 CRL을 저장·배포

PKIX 관리 기능 (7가지)

기능설명
등록 (Registration)사용자가 CA(또는 RA)에 최초 등록. 오프라인 또는 상호 인증 절차
초기화 (Initialization)클라이언트에 신뢰 CA의 공개키 등 키 자료를 안전하게 설치
인증 (Certification)CA가 공개키에 대한 인증서를 발급하고 저장소에 게시
키 쌍 복구 (Key Pair Recovery)비밀번호 분실, 디스크 손상 등으로 복호화 키에 접근 불가 시 백업에서 복구
키 쌍 갱신 (Key Pair Update)유효기간 만료 또는 폐기 시 새 키 쌍으로 교체
폐기 요청 (Revocation Request)개인키 타협, 소속 변경 등의 사유로 인증서 폐기를 CA에 요청
교차 인증 (Cross Certification)두 CA가 상호 교차 인증서를 교환하여 신뢰 관계 수립

PKIX 관리 프로토콜

프로토콜설명
CMP (Certificate Management Protocol)RFC 2510. 각 관리 기능에 대해 명시적 프로토콜 교환을 정의. 유연한 설계
CMC (Certificate Management over CMS)RFC 2797. CMS(RFC 2630) 위에 구축. 기존 구현을 활용하도록 설계

주요 용어

한글영문
인증기관certification authority (CA)
인증서 폐기 목록certificate revocation list (CRL)
제어 벡터control vector
종단 간 암호화end-to-end encryption
키 분배key distribution
키 분배 센터key distribution center (KDC)
키 관리key management
마스터키master key
중간자 공격man-in-the-middle attack
논스nonce
공개키 인증서public-key certificate
공개키 기반구조public-key infrastructure (PKI)
세션키session key
X.509 인증서X.509 certificate