14장. 키 관리와 분배
학습 목표
- 키 계층(key hierarchy) 개념을 논의한다.
- 비대칭 암호를 사용한 대칭키 분배 이슈를 이해한다.
- 공개키 분배의 접근법과 각각의 위험을 분석한다.
- X.509 인증서의 요소를 설명한다.
- PKI(공개키 기반구조) 개념을 개관한다.
14.1 대칭 암호를 사용한 대칭키 분배
키 분배 방법 4가지
- A가 키를 선택하여 B에게 물리적으로 전달
- 제3자가 키를 A와 B에게 물리적으로 전달
- 이전에 사용한 키로 새 키를 암호화하여 전송 — 이전 키가 노출되면 이후 모든 키가 노출됨
- A와 B가 제3자(KDC)와 각각 암호 연결 → KDC가 암호화된 링크를 통해 키 전달
개 종단점이 쌍별로 통신하려면 세션키가 최대 개 필요하다. 방법 4(KDC)를 사용하면 마스터키는 개만 있으면 된다.
키 계층
| 계층 | 보호 방식 |
|---|---|
| 데이터 | 세션키로 암호화 보호 |
| 세션키 | 마스터키로 암호화 보호 |
| 마스터키 | 비암호적 보호 (물리적 전달) |
KDC 시나리오 (5단계)
A가 B와의 세션키를 요청하는 전형적 시나리오:
- :
- :
- :
- :
- :
- 1~3단계 (키 분배): KDC가 세션키 를 생성하고, A와 B의 마스터키로 각각 암호화하여 전달. 논스 은 재전송 방지.
- 4~5단계 (인증): B가 새 논스 를 로 암호화하여 전송, A가 를 반환 → 상대방이 를 올바르게 수신했음을 상호 확인.
계층적 키 제어
대규모 네트워크에서는 로컬 KDC → 글로벌 KDC의 계층 구조를 사용한다. 마스터키 분배 범위가 축소되고, 단일 KDC가 타협되어도 피해가 해당 로컬 영역으로 제한된다.
세션키 수명
- 연결 지향 프로토콜: 연결 기간 동안 사용하거나, 장기 연결에서는 PDU 시퀀스 번호가 순환할 때마다 교체
- 비연결 프로토콜: 일정 기간 또는 일정 거래 수 기준으로 교체. 트랜잭션마다 새 키를 쓰면 가장 안전하지만, 비연결 프로토콜의 핵심 장점(최소 오버헤드)을 잃게 됨
투명 키 제어 방식
**세션 보안 모듈(SSM)**이 호스트 대신 KDC와 통신하여 세션키를 획득한다. 사용자는 키 관리를 인식하지 못하고 투명하게 보호를 받는다.
- 호스트가 연결 요청 패킷을 전송
- SSM이 패킷을 버퍼링하고 KDC에 세션키 요청
- KDC가 양측 SSM에 세션키 분배
- 버퍼링된 패킷이 세션키로 암호화되어 전송
분산 키 제어
KDC 없이 각 쌍이 마스터키를 직접 공유. 개 종단에 최대 개의 마스터키가 필요 → 소규모 로컬 환경에서만 실용적이다.
키 사용 제어
자동 분배된 키의 용도를 제한하는 두 가지 방식:
태그 방식: DES의 비사용 8비트에 키 유형(세션/마스터), 용도(암호화/복호화) 정보를 삽입. 키와 함께 암호화되므로 보호되지만, 8비트로 제한되고 복호화 시점에서만 사용 가능하다.
제어 벡터 방식: 임의 길이의 제어 벡터를 해시한 뒤 마스터키와 XOR하여 세션키를 암호화한다:
세션키를 복원하려면 마스터키 과 제어 벡터 양쪽이 필요하다. 제어 벡터는 평문으로 전달 가능하므로 모든 단계에서 키 용도를 제어할 수 있다.
14.2 비대칭 암호를 사용한 대칭키 분배
단순 비밀키 분배 (Merkle)
- A가 공개/개인 키 쌍 을 생성, 를 B에게 전송
- B가 세션키 를 생성, 를 A에게 전송
- A가 로 복원
- 양쪽 모두 , 를 폐기
프로토콜이 참가자를 인증하지 않으므로, 공격자 D가:
- A의 를 가로채고 자신의 를 B에게 전달
- B가 를 전송 → D가 를 복원
- D가 를 A에게 전달
결과: A, B 모두 D가 를 알고 있음을 인식하지 못한다. 도청만 있는 환경에서만 안전.
기밀성 + 인증 포함 분배
A와 B가 이미 상대의 공개키를 알고 있다고 가정:
- :
- : — 의 반환으로 A는 B를 인증
- : — 의 반환으로 B는 A를 인증
- : — B의 공개키로 기밀성, A의 개인키로 인증
- : 으로 복원
하이브리드 방식
IBM 메인프레임에서 사용. 3단계 계층:
| 계층 | 분배 수단 |
|---|---|
| 세션키 | KDC가 마스터키로 암호화하여 분배 |
| 마스터키 | 공개키 암호로 분배 |
| 공개키 | 물리적 또는 인증서 기반 분배 |
공개키 암호는 마스터키 갱신 시에만 사용하므로 성능 저하가 최소화되고, 기존 KDC 인프라와 역호환이 가능하다.
14.3 공개키 분배
(1) 공개 발표
각 참가자가 자신의 공개키를 공개적으로 게시 (예: PGP 사용자가 메일링 리스트에 공개키 첨부). 위조 위험 — 누구나 가짜 공개키를 발표하여 도청·위장 가능.
(2) 공개 디렉토리
신뢰할 수 있는 기관이 디렉토리를 유지·관리.
요소:
- 기관이 디렉토리를 유지
- 등록은 대면 또는 안전한 인증 통신으로 수행
- 참가자는 언제든지 키를 갱신 가능
- 디렉토리에 대한 전자적 접근도 안전·인증된 통신이어야 함
취약점: 디렉토리 기관의 개인키가 타협되면 모든 키가 위험.
(3) 공개키 권한기관
중앙 권한기관이 각 참가자의 공개키를 관리하고, 요청 시 자신의 개인키 로 서명하여 전달한다.
- : Request
- :
- : 4–5. B도 같은 방식으로 A의 공개키를 권한기관에서 획득
- :
- :
총 7개 메시지가 필요하지만, 획득한 공개키를 캐싱하면 초기 5개 메시지는 가끔만 필요.
권한기관이 병목점이 될 수 있으며, 디렉토리 레코드의 변조에도 취약하다.
(4) 공개키 인증서
공개키를 인증기관(CA)의 전자서명이 포함된 인증서 형태로 배포. 온라인으로 권한기관에 접근할 필요 없이, 참가자가 인증서를 직접 교환·검증할 수 있다.
수신자는 로 복호화하여 와 를 얻고, CA의 서명으로 진정성을 확인한다. 타임스탬프 는 인증서의 유효 기간을 보장한다.
네 가지 요구사항:
- 누구나 인증서를 읽어 소유자의 이름과 공개키를 확인 가능
- 누구나 인증서가 CA에 의해 생성되었음을 검증 가능
- CA만 인증서를 생성·갱신 가능
- 인증서의 시간적 유효성을 검증 가능
14.4 X.509 인증서
ITU-T X.509 표준은 공개키 인증서의 형식을 정의한다. S/MIME(19장), IPsec(20장), SSL/TLS(17장) 등 주요 보안 프로토콜에서 사용된다.
인증서 필드
| 필드 | 설명 |
|---|---|
| Version | 인증서 형식 버전 (v1/v2/v3) |
| Serial Number | CA 내에서 고유한 정수 |
| Signature Algorithm ID | 서명에 사용된 알고리즘 + 파라미터 |
| Issuer Name | CA의 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 표기법:
인증서 체인
A가 CA 에서 인증서를 받고, B가 CA 에서 인증서를 받았을 때, 과 가 서로의 인증서를 교차 생성했다면:
A는 이 체인을 따라 의 공개키를 먼저 검증하고, 이를 사용해 B의 공개키를 검증한다. 임의 길이의 체인이 가능:
인증서 폐기 (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 Constraints | CA 역할 제한, 이름 공간 제약, 정책 제약 |
인증서의 공개키가 사용될 수 있는 목적을 제한: 전자서명, 부인 방지, 키 암호화, 데이터 암호화, 키 합의, 인증서 서명 검증, 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 |