X.509 인증서와 PKI 1 공개키배포의문제점 2
인증서의구성 Arami s ID Arami s Public Key 유효기간 발급기관 Certificate Authority의디지털서명 (CA의비밀키로서명됨 ) 3 표준 ITU-T X.509 v3 IETF PKIX 표준및용도 용도 전자메일 SSL 전자지불 소프트웨어코드서명 IPSec 4
인증서의종류 사용자인증서 루트인증서 5 인증서기반의공개키암호화전송절차 (1) 6
인증서기반의공개키암호화전송절차 (2) 7 X.509 인증서의형식 8
X.509 인증서의형식 버전 : X.509 인증서형식의버전으로, 현재 v1-v3 까지있음 일련번호 : CA에서인증서를발행할때마다할당되는유일한번호 알고리즘식별자 : CA가사용한서명알고리즘의 OID. sha1withrsaencryption 의 OID 는 1.2.840.113549.1.1.5 113549 1 1 5 발행자 : 인증서를발행한 CA의이름 유효개시기간 (Validity from) : 인증서가유효한최초시간 유효만기시간 (Validity to) : 인증서가유효한마지막시간 주체 : 인증서의증명대상의 DN(Distinguished Name). 사람뿐만아니라서버도해당 주체공개키정보 : 암호용또는서명용공개키, 키가사용될알고리즘의종류, 키길이등정보로구성 알고리즘 : 공개키알고리즘의 OID 공개키 : 주체의공개키값 서명 : CA 의서명값 9 < 버전 2 에서추가된영역 > X.509 인증서의형식 인증기관고유식별자 : 한주체에대해둘이상의인증기관으로부터인증서가발급된경우, 인증기관구분 주체고유식별자 : 주체를식별하는값, 예를들어같은회사에동명이인이있는경우구분하기위해사용 < 버전 3에서추가된영역 > 인증기관키식별자 : 하나의인증기관이여러개의비밀키로인증서를발급한경우, 서명검증용공개키를식별하기위해사용. SHA-1 해시값인 KeyIdentifier, 발행기관이름, 일련번호로구성 주체키식별자 : 한주체가여러키쌍에대해발급받은인증서를가지고있을때, 인증서에포함된공개키를구별하는데사용 키용도 : 해당공개키가암호용인지서명용인지를해당비트로표시 10
X.509 인증서의형식 비밀키사용기간 : 인증서의유효기간과서명용비밀키의사용시간이다를때사용 확장키사용 : Key usage 항목으로표시할수없는세부적인추가용도를 OID 형태로표시. TLS 웹서버인증용, TLS 웹클라이언트인증용, 코드서명용, 전자우편용, IPSec 용등을지시 CRL 배포지점 : 폐기한인증서의리스트가저장되어있는곳의 URL 주체대체이름 : DNS 이름, IP 주소, 메일주소, 커버로스이름등주체이름에대한또다른이름 발행자대체이름 : CA의또다른이름 기본제한 : {CA 플래그, pathlenconstraint로구성 } 기관정보액세스 : 인증기관이제공하는인증서관련서비스에접근할수있는URL이나프로토콜관련정보 주체정보액세스 : 인증서주체가제공할수있는정보와서비스에접근하는방법제공, 주로 CA의루트인증서에사용 11 인증기관키식별자의예 해당 CA 로부터입수한루트인증서가여러개일때, 이들중에서신속하게찾을수있도록함 12
키용도 해당공개키가암호용인지서명용인지표시함 13 키용도 digitalsignature : keycertsign, crlsign을제외한서명용도의공개키 nonrepudiation : 부인방지를위한서명용공개키 keyencipherment : 공유비밀키를암호화할때사용하는공개키 dataencipherment : 데이터암호용공개키 keyagreement : 키분배프로토콜에사용할공개키 keycertsign : 루트인증서의서명용공개키 crlsign : CRL 서명용공개키 encipheronly : keyagreement 비트가 1일때, 암호전용공개키임을지시 dncipheronly : keyagreement 비트가 1일때, 복호전용공개키임을지시 14
확장키사용의예 공개키의추가용도표시기능 ( 예 : 코드서명용,IPSec 용 ) 15 CRL 배포지점의예 CRL(Certification Revocation List) 폐기되는인증서의보관장소지시 16
주체대체이름의예 17 기본제한영역의예 사용자용 CA flag : 인증서가 CA용인지최종사용자용인지표시 pathlenconstraint : 이인증서로부터확대가능한인증경로의길이 18
signkorea CA 용인증서의기본제한영역내용 Subject Type = CAflag 19 signkorea CA 용인증서의인증경로 20
KISA 인증서 ( 최상위인증기관 ) 21 KISA 인증서의기본제한영역내용 22
기본제한영역의예 ( 최종사용자용 ) 23 기관정보액세스 (Authority Information Access) 24
인증서의예 인증서확인창 / 루트인증서의예 25 개인인증서의예 26
개인인증서의예 ( 계속 ) 손도장 : 서명을포함한인증서전체에대한해시값 27 손도장의활용 CA_B CA_A B 인증서 CA_B 서명 A 손도장값계산 손도장값계산 확인요청 -> 일치되면변조되지않았음을인증함 28
국내공인인증기관 29 인증서발급철차 등록 사용자인증및발급신청 등록기관 ( 은행등 ) 에서대면확인후 CA(yessign 등 ) 에신청 발급정보제공 CA가발급정보 ( 참조번호 + 인가코드 ) 를등록기관에제공, 사용자에게전달 발급요청 사용자가직접 Web에서등록 ( 발급정보사용 ) 사용자 PC 에서자동적으로개인키 + 공개키쌍생성 개인키보관 공개키전송 ( 인증서발급요청양식활용 ) 인증서확보 인증서활용 30
X.509 인증서의폐기 31 인증서의활용 : 소프트웨어배포인증 32
코드서명된프로그램의검증절차 33 인증서를활용한상호인증의예 34
인증서의 ASN.1 형식 Certificate ::= SEQUENCE { tbscertificate TBSCertificate, signaturealgorithm AlgorithmIdentifier, signaturevalue BIT STRING } -- To Be Signed Certificate TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialnumber CertificateSerialNumber, signature AlgorithmIdentifier, --signaturealgorithm영역과동일한값임 issuer Name, validity Validity, subject Name, subjectpublickeyinfo SubjectPublicKeyInfo, issueruniqueid [1] IMPLICIT UniqueIdentifier OPTIONAL, subjectuniqueid [2] IMPLICIT UniqueIdentifier OPTIONAL, extensions [3] EXPLICIT Extensions OPTIONAL } Version ::= INTEGER { v1(0), v2(1), v3(2) } Validity ::= SEQUENCE { notbefore Time, notafter Time } SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectpublickey BIT STRING } Extension ::= SEQUENCE { extnid OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnvalue OCTET STRING } 35 ASN.1 ASN.1(Abstract Syntax Notation One) 구현에관계없이표준을정의하는언어 ITU-T 권고안 X.209 및 X.690에정의되어있음 " 형식 " 정의 " 모듈 " 정의및표시방법 INTEGER 정의 BOOLEAN 정의 " 구조체형식 " 정의 특정키워드 ( 예 : BEGIN, END, IMPORT, EXPORT, EXTERNAL 등 ) 의의미 특정표준, 인코딩방법, 프로그래밍언어또는하드웨어플랫폼에관계없이적용되며, 단순히표준을정의하는언어 36
인증서파일의 16 진형식의예 *.der 파일 0000 : 30 82 03 de 30 82 03 47 a0 03 02 01 02 02 04 01 ; 0...0..G... 0010 : 73 f9 71 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 ; s.q0...h... 0020 : 05 00 30 48 31 0b 30 09 06 03 55 04 06 13 02 6b ;..0H1.0...U...k 0030 : 72 31 10 30 0e 06 03 55 04 0a 13 07 79 65 73 73 ; r1.0...u...yess 0040 : 69 67 6e 31 13 30 11 06 03 55 04 0b 13 0a 4c 69 ; ign1.0...u...li 0050 : 63 65 6e 73 65 64 43 41 31 12 30 10 06 03 55 04 ; censedca1.0...u. 0060 : 03 13 09 79 65 73 73 69 67 6e 43 41 30 1e 17 0d ;...yessignca0... 0070 : 30 34 30 31 33 30 31 35 30 30 30 30 5a 17 0d 30 ; 040130150000Z..0 0080 : 34 30 35 31 36 31 34 35 39 30 30 5a 30 65 31 0b ; 40516145900Z0e1. 0090 : 30 09 06 03 55 04 06 13 02 6b 72 31 10 30 0e 06 ; 0...U...kr1.0.. 00a0 : 03 55 04 0a 13 07 79 65 73 73 69 67 6e 31 11 30 ;.U...yessign1.0 00b0 : 0f 06 03 55 04 0b 13 08 70 65 72 73 6f 6e 61 6c ;...U...personal 00c0 : 31 0c 30 0a 06 03 55 04 0b 13 03 4b 4d 42 31 23 ; 1.0...U...KMB1. 00d0 : 30 21 06 03 55 04 03 0c 1a ec 9b 90 ec a2 85 ed ; 0...U... 00e0 : 95 84 28 29 30 30 30 34 2d 31 39 34 31 34 38 39 ;...0004.1941489 00f0 : 39 30 34 30 81 9e 30 0d 06 09 2a 86 48 86 f7 0d ; 9040..0...H... 37 인증서내용의분석 30 82 03 de{ // Seq (Certificate) 30 82 03 47{ // Seq (TBSCertificate) //version a0 03 02 01 02; version[0] = Integer 2 v3 //serialnumber 02 04 01 73 f9 71 ; serialnumber = 0x0173 f971 //Signature 30 0d { //Seq 06 09 2a 86 48 86 f7 0d 01 01 05; OID = 1.2.840.113549.1.1.5 113549 1 1 5 SignatureAlgorithm = (sha1withrsaencryption)= sha1rsa 05 00 ; NULL } //Issuer 30 48 { //Seq 31 0b{ SET 30 09{.Seq 06 03 55 04 06 ; OID = 2.5.4.6 = C //Country 13 02 6b 72 ; PrintableString = kr } } 38
인증서관련프로토콜 CRMF : Certificate Request Message Format CMS : Certificate Message Syntax CMP : Certificate Management Protocol CMC : Certificate Management Message over CMS 39 PKCS#10 인증서요청메시지형식 사용자가새로운인증서발급을요청하거나인증서를내려받고자할때사용하는요청메시지형식정의 요청자의 distinguished name(dn), 공개키등을수납하고비밀키로서명된서명영역을포함 Certificate Request Message Format(CRMF) 인증서요청메시지형식규정 인증서가수납된응답메시지의형식 인증서발급요청에대해 CA 는 PKCS#7/CMS S 의 signeddata 메시지형식에인증서를수납하여전송 40
인증서요청및응답절차프로토콜 RFC2510 Certificate Management Protocols(CMP) CA와사용자또는 CA와 CA사이에서사용될수있는인증서발급요청, 응답절차및이와관련된메시지들을규정 RFC 2797 Certificate Management Messages over CMS(CMC) CMP 와마찬가지로 PKCS#10 과 CRMF 인증서요청형식을모두수용하며, 이에대한응답절차규정 41 PKCS#10 Certificate Request Syntax (CRS) CertificationRequest ::= SEQUENCE { certificationrequestinfo CertificationRequestInfo, signaturealgorithm SignatureAlgorithmIdentifier, signature Signature } CertificationRequestInfo ::= SEQUENCE { version Version, subject Name, subjectpublickeyinfo SubjectPublicKeyInfo, attributes [0] IMPLICIT Attributes } //PKCS#10 인증서요청형식의 ASN.1 형식 전송메시지형식 : HTTP 나 SMTP 의 MIME 형식으로인코딩되어 CA 에전송 MIME 헤더정보 Content-Type: application/pkcs10; name=smime.p10 Content-Transfer-Encoding: t base64 Content-Disposition: attachment; filename=smime.p10 42
PKCS#10 인증서발급요청메시지의활용 43 PKCS#7 과 CMS CA 가인증서를처리할때, 어떻게처리되었는지명시하고, 필요한경우암호화방식이나키정보등을수납하기위한공통의메시지형식필요 PKCS#7 전송할내용에대한암호화또는디지털서명에사용할수있는메시지 encapsulation 형식정의 RFC 2315 를개선하여 RFC 2630 CMS(Cryptographic Syntax Notation) 발표 최근다시개선된 RFC 3369, RFC 3370 발표 44
PKCS#7 과 CMS [ContentInfo 의기본구성과 content type 의종류 ] 45 content Content 형식의종류 data : 평문데이터수납 signed-data : 본문과이에대한서명값수납 enveloped-data data : Content-Encryption Key(CEK) 로암호화된데이터와이데이터를암호화할때사용된 CEK를 RSA 공개키방식으로암호화하여수납 digested-data : 데이터와메시지다이제스트값을수납하여, 데이터무결성제공 encrypted-data data : 대칭키로암호화된데이터수납. Enveoped- data 형식과달리, CEK가수납되지않기때문에이키는다른방법, 즉, 공유패스워드등에서추출 authenticated-data ti t d t : 평문데이터와이에대한무결성용 MAC코드, 이 MAC코드생성시사용된키의암호화된값을수납. 즉, {data MAC encrypted authencation key} 로구성 46
Signed-data data 형식의구성 평문과디지털서명으로구성됨 ( 서명용인증서도포함됨 ) 47 SignedData 형식 ContentInfo ::= SEQUENCE { contenttype ContentType, (signeddata 형식의경우 OID=1.2.840.113549.1.7.2) 113549 172) content [0] EXPLICIT ANY DEFINED BY contenttype } SignedData ::= SEQUENCE { version CMSVersion -- 1 digestalgorithms g DigestAlgorithmIdentifiers, g encapcontentinfo EncapsulatedContentInfo,-- 필요한데이터수납공간 certificates [0] IMPLICIT CertificateSet OPTIONAL,-- 인증서 crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,--인증서취소목록 signerinfos SignerInfos 서명자정보 } EncapsulatedContentInfo ::= SEQUENCE { econtenttype ContentType, econtent [0] EXPLICIT OCTET STRING OPTIONAL } 48
Enveloped-data data 형식 암호화되는 contentinfo영역과암호화시사용된 Key(CEK) 정보수납 4 가지의 CEK 암호화방법 49 Enveloped-data data 형식 1. 송신자는 content-encryption key(cek) 를임의로생성 2. 다음중한가지로 CEK 암호화 1 Key TransRecepientInfo : CEK를수신자RSA 공개키로암호화 2 3 4 Key AgreeRecepientInfo : D-H 방식에의해설정된공유키로CEK를암호화 KEKRecepientInfo : 사전에약속된대칭키인 KEK로 CEK를암호화 PasswordRecepientInfo : 공유패스워드로부터생성된 KEK로 CEK를암호화 3. 암호화된 CEK 와수신자정보를 RecepientInfo 로설정 4. 전송할 content 를 CEK 로암호화 5. RecepientInfo 값과암호화된 content 영역등을 EnvelopdedData 형식에수납하여전송 50
Digested-data data 형식 평문 + 해시값 51 Encrypted-data data 형식의구성 암호문수납용 ( 단, CEK 는없음 ) 52
Authenticated-data data 형식의구성 HMAC 데이터인증용 53 Certificate Management Messages over CMS(CMC) 54
Certificate Management Messages over CMS(CMC) 55 CMC 의 Nested 암호화방법 56
On-line certificate status checking (OCSP, RFC 2560) 57 인증서의 import/export 형식 58
인증서의 import/export 형식 Personal Information Exchange(PKCS#12) 인증서와대응하는비밀키를다른컴퓨터나플래시메모리에옮길때사용하는방식으로, 인증서파일의확장자는 *.pfx 나 *.p12 PKCS#7/CMS 인증서를다른컴퓨터나플래시메모리에옮길때사용하는방식으로, 인증서파일의확장자는 *.p7b DER Encoded Binary X.509 DER 형식으로인코딩된인증ㅇ서파일로 *.cer 확장자를가짐 Base 64 Encoded X.509 DER 인증서를 MIME 용 Base 64 인코딩한형식으로 *.cer 확장자를가짐 59 DER Encoded Binary X.509 형식 DER로인코딩된인증서파일생성방법의예생성파일명은 *.cer 임. 60
MIME (Base 64) 으로인증서를인코딩하여파일로저장하는방법 Base 64 로인코딩되어 HTTP 나 e-mail 로전송가능 61 Signed-data PKCS#7형식으로인증서를저장하는방법 62
인증서불러오는방법의예 63 Public Key Infrastructure (PKI) 64
윈도우 2000 의인증서서비스 지원하는 CA 의종류 엔터프라이즈 CA Active Directory 필요 윈도우도메인내에서동작 Stand-alone CA Active Directory 불필요 윈도우도메인과별개로동작가능 인증서보관소 Active Directory 65