글 싣는 순서
1. Secure IP Telephony의 개요
2. 암호화 (Encryption)와 인증 (Authentication)
3. 전자서명 (Digital Signature)
4. PKI의 이해
5. Cisco Secure IP Telephony의 이해
6. TLS & SRTP
PKI는 공개 키 암호 방식을 바탕으로 한 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 정책 등을 총칭하며, 공개키 암호 기술이 안전하게 사용되는 환경을 말합니다. PKI는 인증서의 발급, 관리, 배포, 취소 등을 다룹니다.
- CA (Certificate Authority) :인증기관
Trusted Introducer의 역할을 수행하며, PKI 사용자나 기기의 공개키 (Public Key)를 서명합니다. CA는 인증 정책을 수립하고, 다른 CA와 상호 인증을 수행합니다.
- PKI 사용자 또는 Entity
안전하게 자신의 공개키를 배포하기를 원하는 사용자, 기기, 어플리케이션을 말합니다. - Certificates : 인증서
PKI 사용자의 ID, 공개키 등을 포함하며, X.509 v3 표준 포맷으로 생성합니다. - CRL (Certificate Revocation List) : 인증서 취소 목록
인증서의 분실 또는 유효기간 만료 등의 이유로 더 이상 신뢰할 수 없는 인증서의 목록
암호화를 구축할 때 가장 큰 이슈는 안전한 키교환입니다. 사용자 A가 직접 사용자 B에게 보안키를 직접 전달하는 것이 가장 안전한 방법이지만 확장성이 매우 떨어집니다. 사용자 A는 알지도 못하는 다수와 보안 통신을 해야 하므로 직접 보안키를 전달하는 것은 불가능합니다. 수동이 아닌 자동화된 프로세스를 통해 안전하게 키를 교환하는 방법이 필요합니다.
- 모든 사용자의 공개키를 확보
사용자 A가 수많은 사람과 통신하는 것을 가정한다면, 모든 공개키를 확보할 수 있어야 합니다. - 신뢰성 확보
사용자 A가 사용한 사용자 B의 공개키는 사용자 B의 것이다라는 전제가 필요합니다. 제 삼자가 사용자 B의 공개키임을 확인시켜 준다면 충분히 신뢰성은 확보될 수 있습니다. - "man in the middle attack" 취약
제 삼자가 사용자 B의 공개키를 제공할 때 전송 간에 문제가 발생할 수 있습니다.
위의 간략한 정리를 기반으로 PKI 기반의 키 생성 및 관리에 대해 상세히 살펴보겠습니다.
- 키 생성
모든 PKI 사용자들은 각 자의 개인키(Private Key)와 공개키 (Public Key)를 생성합니다. 아래 그림에서 사용자 A, 사용자 B, Trusted Introducer (CA)는 각자의 키쌍 (Key Pair)을 생성합니다. - Trusted Introducer (CA)의 공개키 배포
PKI 내의 모든 사용자는 Trusted Introducer에 의해 제공되는 모든 정보를 전자서명을 통해 신뢰합니다. Trusted Introducer의 전자 서명을 신뢰하기 위해 Trusted Introducer의 공개키를 확보합니다. - 사용자의 공개키 등록
PKI에서 모든 사용자들은 신뢰할 수 있는 단 하나의 Trusted Introducer (CA)를 가지고 있으며, 자신의 공개키를 등록합니다. 아래그림에서 Trusted Introducer는 사용자 A와 사용자 C의 공개키를 확보하였습니다. - 공개키 서명
Trusted Introducer는 사용자의 공개키와 ID를 확인한 후에 자신의 개인키로 전자서명을 합니다. 이 것을 Certification (인증서)라고 합니다. 아래 그림에서 사용자 A가 제공한 공개키를 Trusted Introducer의 개인키를 RSA 알고리즘을 통해 서명을 하여 인증서를 생성합니다. - 인증서 수령
Trusted Introducer가 생성한 인증서를 각 사용자에게 제공합니다. 사용자들은 다음의 키를 보유합니다.
- 사용자의 개인키
- 사용자의 공개키
- Trusted Introducer (CA)의 공개키
- Trusted Introducer (CA)가 서명한 사용자의 공개키 : Certificate
인증서를 수령한 사용자 A는 자신의 Trusted Introducer가 제대로 서명을 했는 지 확인하기 위해서는 Trusted Introducer의 공개키로 인증서를 복호화하면 됩니다. - 인증서 교환
이제 사용자들은 Trusted Introducer의 도움없이 직접 사용자간에 인증서를 교환하여 안전한 통신을 할 수 있습니다. 아래 그림에서 사용자 A가 사용자 C의 인증서를 받은 후에 Trusted Introducer의 공개키로 복호화하면 사용자 C의 공개키에 대한 신뢰성을 확보할 수 있습니다. 사용자 C의 인증서 서명은 Trusted Introducer만이 할 수 있고, Trusted Introducer는 사용자 C가 진짜라는 것을 이미 확인하였기 때문입니다.
인증서 (Certificate)의 개요
인증서는 X.509 v3 표준에 기반한 데이타 포맷으로 생성됩니다. 아래의 표는 X.509 v3에 포함되는 내용을 순서대로 표시한 것이며, 그 아래는 실제 CUCM에서 Self-signed된 인증서입니다.
[
Version: V3
Serial Number: 129112970749297966055322864464585290340
SignatureAlgorithm: SHA1withRSA (1.2.840.113549.1.1.5)
Issuer Name: L=Seoul, ST=Seoul, CN=CUCM91, OU=Collaboration, O=Cisco_labs, C=KR
Validity From: Tue Nov 06 22:08:08 KST 2012
To: Sun Nov 05 22:08:07 KST 2017
Subject Name: L=Seoul, ST=Seoul, CN=CUCM91, OU=Collaboration, O=Cisco_labs, C=KR
Key: RSA (1.2.840.113549.1.1.1)
Key value: 30818902818100bdf7a7464276f7e3049e0389b21e0c779fe4e5df051b47dec55381aaebdcffc2935e3e28d7571aa54c068c19ca0c9b41c50d21fd14fc78309fbf20e47413f01d2362766c3f8afdf71ed73529abb5dffec561350163a2299826777c4c8092b15c9fb4cd67c35cc49995bc585861e325348d97daf0ebcb98a0c2edf369f3b212650203010001
Extensions: 3 present
[
Extension: KeyUsage (OID.2.5.29.15)
Critical: false
Usages: digitalSignature, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign,
]
[
Extension: ExtKeyUsageSyntax (OID.2.5.29.37)
Critical: false
Usage oids: 1.3.6.1.5.5.7.3.1, 1.3.6.1.5.5.7.3.2, 1.3.6.1.5.5.7.3.5,
]
[
Extension: SubjectKeyIdentifier (OID.2.5.29.14)
Critical: false
keyID: 04f6f55aa5afb2e18fd599fe47b5f27cdf7d50d8
]
Signature:
0000: 15 7d c0 fa 96 47 11 dd d3 38 62 94 7e 98 39 22 [.}...G...8b.~.9"]
0010: 6e a1 33 04 a7 20 05 84 52 6f 42 af 78 0d a0 19 [n.3.. ..RoB.x...]
0020: 09 9d 67 6a 16 e8 40 0b 6d c6 e8 73 5e 41 02 02 [..gj..@.m..s^A..]
0030: cb 80 5b 5a 46 ca 35 9b 79 a9 40 98 61 6a 83 be [..[ZF.5.y.@.aj..]
0040: 12 bc 4f ce 23 fd f9 aa fc f7 ac 7e d0 36 34 0c [..O.#......~.64.]
0050: 98 ae f1 f4 01 01 7e 39 b2 36 f4 d7 13 b1 b1 13 [......~9.6......]
0060: c1 37 0f 31 35 e7 f6 c1 f4 02 99 c9 e6 33 3e 00 [.7.15........3>.]
0070: 0b 52 3e a4 0a a8 35 c1 6f 9b 2f a8 35 3e 5f e2 [.R>...5.o./.5>_.]
]
X.509의 인증서는 다음과 같은 내용을 포함합니다.
- Version : X.509 버전
- Serial Number : 인증서를 발행 번호
- Signature Algorithm : 인증서를 서명할 때 사용한 RSA 알고리즘
- Issuer Name: 인증서를 발행한 CA
- Validity Period : 인증서의 유효기간
- Subject Name : 인증서를 요청한 사용자 정보로 CN=은 호스트네임, O=기관명, C=국가명이 포함됩니다. CUCM을 설치할 때 조직, 호스트네임, 국가, 주, 도시명을 넣는 란이 있습니다. 여기서 가지고 오므로 변경이 필요하다면, 설치를 다시해야 하는 아픔이 있습니다.
- Key : 사용자의 공개키
- Extension : 추가적으로 포함할 사항
- Signature : CA의 개인키로 서명
인증서는 .pem 과 . der 파일 형식을 주로 사용합니다.
- .PEM 파일 : Privacy Enhanced Mail의 약자로 Based 64로 엔코딩 됨
- .DER 파일 : 바이너리 포맷으로 되어 있음
가장 확실한 방법은 Out-of-band verification으로 전화를 이용하거나, 별도의 방법을 사용하는 것입니다. 위의 그림에서는 CA의 공개키를 헤쉬한 것과 사용자 A가 받은 CA의 공개키를 헤쉬한 것을 비교하여 확인하는 것입니다.
PKI에 대한 전반적인 내용을 살펴보았습니다. PKI Revocation 과 키 관리를 위한 CRL과 OCSP(On-line Certificate Status Protocol) 대한 내용도 적지 않으므로 이번 글에서는 다루지 않았습니다. 앞서 말씀드린 대로 부록으로 설명을 하도록 하겠습니다.
----------------- --------------------------------------------------------
라인하트 (CCIEV #18487)
ucwana@gmail.com (라인하트의 구글 이메일)
http://twitter.com/ucwana (라인하트의 트위터 )
http://twitter.com/nexpertnet (넥스퍼트 블로그의 트위터, 최신 업데이트 정보 및 공지 사항)
http://groups.google.com/group/cciev (시스코 UC를 공부하는 사람들이 모인 구글 구룹스)
http://groups.google.com/group/ucforum (벤더에 상관없이 UC를 공부하는 사람들이 모인 구글 구룹스)
정리하고 보니 나도 디지털 네이티브 _____________________________________________________