공인인증서관리프로토콜규격 Accredited Certificate Management Protocol Specification v1.21 2009년 9월
목 차 1. 개요 1 2. 규격의구성및범위 1 3. 관련표준및규격 1 3.1 국외표준및규격 1 3.2 국내표준및규격 2 3.3 기타 2 4. 정의 2 4.1 전자서명법용어정의 2 4.2 용어의정의 2 4.3 용어의효력 3 5. 약어 3 6. 유선공인인증서비스에서의공인인증서관리프로토콜 4 6.1 PKI 메시지 4 6.2 운영관련데이터구조 7 7. 무선공인인증서비스에서의공인인증서관리프로토콜 11 7.1 무선인증서관리형식타입스트링및인코딩규칙 12 7.2 무선인증서관리프로토콜 12 부록 1. VID 및 EVID 구조 21 부록 부록 2. PK(Public Key) 의구조 23 3. 프로토콜에따른등록기관( 또는공인인증기관) 의응답형식 25 부록 4. 규격연혁 27
공인인증서관리프로토콜규격( 안) Accredited Certificate Management Protocol Specification(Draft) 1. 개요 본규격에서는전자서명법에따라구축된공인전자서명인증체계공인인증서 비스에서사용되는유 무선공인인증서관리프로토콜을규정한다. 2. 규격의구성및범위 본규격은 [RFC2510], [WAPWPKI] 등국제표준을준용하여, 국내공인전자 서명인증체계내에서사용되는유 무선공인인증서관리를위한기본적인데 이터구조와인증서관리를위한운영관련데이터구조를정의한다. 첫번째로, 제장에서는 6 유선공인인증서비스에서의공인인증서관리프로토콜을 정의한다. 두번째로, 제장에서는무선공인인증서비스에서의공인인증서관리프로토콜을 7 정의한다. 3. 관련표준및규격 3.1 국외표준및규격 [RFC2119] [RFC2510] [RFC2511] [WAPWPKI] [WAPWTLS] IETF RFC 2119 (1997), Key Words for use in RFCs to Indicate Requirement Levels IETF RFC 2510 (1999), Internet X.509 Public Key Infrastructure Certificate Management Protocol IETF RFC 2511 (1999), Internet X.509 Certificate Request Message Format WAP Forum Approved Version 24-April-2001, WAP-217-WPKI, : Wireless Application Protocol Public Key Infrastructure Definition WAP Forum Approved Version 6-April-2001, Wireless -1-
[PKCS10] Transport Layer Security RSA Laboratories PKCS#10 v1.7 (2000), CertificationRequest SyntaxStandard 3.2 국내표준및규격 [KCAC.TS.RS] [KCAC.TS.E2E] KISA, KCAC.TS.RS, v1.11, 공인인증서발급을위한참조번 호인가코드기술규격 /, 2009 KISA, KCAC.TS.E2E, v1.30, 무선응용계층보안프로토 콜기술규격, 2003 [KCAC.TS.CRMF] KISA, KCAC.TS.CRMF, v1.21, 공인인증서요청형식프로 토콜규격, 2009 [KCAC.TS.DSIG] KISA, KCAC.TS.DSIG, v1.30, 전자서명알고리즘규격, 2009 3.3 기타 해당사항없음 4. 정의 본규격에서사용하는용어의정의는제장에서정한것을제외하고는관련 4 법령등이정하는바에의한다. 4.1 전자서명법용어정의 본규격에서사용된다음의용어들은전자서명법및동법시행령, 공인인증기관의 시설및장비등에관한규정( 행정안전부고시) 에정의되어있다. 가) 나) 다) 공인인증서 공인인증기관 가입자 4.2 용어의정의 가) 유선공인인증서비스 : 인터넷기반의전자거래를위해공인인증서를이용하는서비스나 ) 무선공인인증서비스 : 무선단말기기반의전자거래를위해공인인증서를 -2-
이용하는서비스 다) 키갱신 : 키및인증서갱신 4.3 용어의효력 본규격에서사용된다음의용어들은전자서명인증체계공인인증서요청형식 프로토콜의구현정도를의미하는것으로 의미를지닌다. 가) 해야한다, 필수이다, 강제한다 ( 기호 : M) 반드시준수해야한다. 나) 권고한다 ( 기호 : R) [RFC2119] 를준용하며다음과같은 보안성및상호연동을고려하여준수할것을권장한다. 다) 할수있다, 쓸수있다 ( 기호 : O) 주어진상황을고려하여필요한경우에한해선택적으로사용할수있다. 라) 권고하지않는다 ( 기호 : NR) 보안성및상호연동을고려하여사용하지말것을권장한다. 마) 금지한다, 허용하지않는다 ( 기호 : X) 반드시사용하지않아야한다. 바) 언급하지않는다, 정의하지않는다 ( 기호 : -) 준수여부에대해기술하지않는다. 5. 약어및기호 본규격에서는다음의약어가이용된다. 가) CA : Certification Authority, 인증기관나) RA : Registration Authority, 등록대행기관 본규격에서사용하는다음의기호들에대해정의한다. 1) h( ) : 해쉬함수 2) R : 비트열난수 3) E( ) : 암호화함수 4) IDN : 식별번호 5) VID : 가상식별번호 -3-
6) EVID : 암호화된가상식별번호 VID / EVID 구조는 [ 부록 1] 참조 7) PK : 가입자의전자서명검증키또는키분배용공개키 PK( 공개키) 구조는 [ 부록 2] 참조 8) type : 관리형식의 type string 값 9) ID : 10) Passwd : 가입자의참조번호 가입자의인가코드 11) nonce : 서버가생성한 UTC Time 12) SK 키분배 : 가입자의키분배용비밀키 13) SignValue 키분배 : 키분배용 POP(Proof Of Possession) 을확인하기위 해 nonce 값에 SK 키분배로서명한값 14) PK 키분배 : 가입자의키분배용공개키 6. 유선공인인증서비스에서의공인인증서관리프로토콜 본장에서는유선공인인증서관련가입자등록및인증서발급, 폐지등전자서명인증체계공인인증서관리프로토콜에필요한기본적인데이터구조를정의한다. 6.1. PKI 메시지 공인인증서관리프로토콜에이용되는모든메시지는다음의구조를따른다. PKIMessage ::= SEQUENCE { header PKIHeader, body PKIBody, protection [0] PKIProtection OPTIONAL, extracerts [1] SEQUENCE SIZE (1..MAX) OF Certificate OPTIONAL} 6.1.1 PKI Message Header 모든 PKI 메시지들은트랜잭션 ID 와주소정보등을포함한헤더를가지며, 만약 PKI 메시지가서명및 MAC을이용해보호된다면헤더정보도역시보호되어야 -4-
한다. 메시지헤더의구조는다음과같다. PKIHeader ::= SEQUENCE { pvno INTEGER { ietf-version2 (1) }, sender GeneralName, recipient GeneralName, messagetime [0] GeneralizedTime OPTIONAL, protectionalg [1] AlgorithmsIdentifier OPTIONAL, senderkid [2] KeyIdentifier OPTIONAL, recipkid [3] KeyIdentifier OPTIONAL, transactionid [4] OCTET STRING OPTIONAL, sendernonce [5] OCTET STRING OPTIONAL, recipnonce [6] OCTET STRING OPTIONAL, freetext [7] PKIFreeText OPTIONAL, generalinfo [8] SEQUENCE SIZE (1..MAX) OF InfoTypeAndValue OPTIONAL} PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String pvno 필드는이프로토콜의버전1) 을나타낸다. sender 및 recipient 필드는메시지의송수신자 이름을포함하며, 메시지에 protection 필드가설정되어있는경우, 즉, 해당 PKI 메시지가보호되는경우, 이필드들은해당메시지에대한 protection 을검증하는데사용되어야한다. protectionalg 필드는메시지를보호하기위해사용되는알고리즘을명시하며, protection 필드가설정된경우에만사용된다. senderkid 및 recipkid 는메시지보호를위해사용된키를식별하기위해사용 된다. 특히, sender 필드가 NULL 인경우, senderkid 는반드시존재해야한다. transactionid 필드는요청메시지와이에대한응답메시지를식별하기위해사용 되는필드로요청및응답메시지에동일한값이포함된다. sendernonce, recipnonce 필드는메시지의재사용공격을막기위해사용되는 1) 프로토콜버전은 [RFC2510] 이전은 0, [RFC2510] 은 1로정의되고있으므로본규격은이를 준용하도록함 -5-
필드로 sendernonce 는메시지생성자에의해설정되고, 요청및응답메시지에 동일한값이포함된다. messagetime 필드는송신자가메시지를생성하는시간을포함한다. 6.1.2 PKI Message Body PKIBody 는가입자초기화및인증서발급, 폐지, 키갱신등에대한응답및요청 메시지를포함해서 실제내용이포함된다. PKI 개체간에송 수신되는일반적인요청및응답메시지들의 PKIBody ::= CHOICE { ir ip cr cp p10cr popdecc popdecr kur kup krr krp rr rp ccr ccp ckuann cann rann crlann conf nested genm genp CertReqMessage, CertRepMessage, CertReqMessage, CertReqMessage, CertificateionRequest, POPODecKeyChallContent, POPODecKeyRespContent, CertReqMessage, CertRepMessage, CertReqMessage, KeyRecRepContent, CertReqMessage, CertRepMessage, CertReqMessage, CertReqMessage, CAKeyUpdAnnContent, CertAnnContent, RevAnnContent, CRLAnnContent, PKIConfirmContent, NestedMessageContent, GenMsgContent, GenRepContent, error ErrorMsgContent } -6-
6.1.3 protection protection 은메시지의무결성을위해사용될수있으며, 다음의구조를가진다. PKIProtection ::= BIT STRING PKIProtection 은해당메시지의 header와 body를포함한protectedpart에대해 DER 인코딩한값을 MAC 하거나혹은서명한값이다. ProtectedPart는다음의구조를 가진다. ProtectedPart ::= SEQUENCE { header PKIHeader, body PKIBody } 6.1.4 extracerts extracerts 필드는메시지수신자가유용하게이용할수있는인증서를포함할 수있다. 예를들면, 이것은CA나 RA가자신의새로운인증서를증명하기위해 사용자에게기존인증서를전송하는데사용될수있다. 6.2 운영관련데이터구조 6.2.1 초기화요청메시지 ir은초기화요청메시지로 [KCAC.TS.CRMF] 의 CertReqMessage의구조를 가지며, 발급요청하는인증서에포함될정보가포함된다. 일반적으로 CertTemplate에 SubjectPublicKeyInfo, KeyID 및 Validity 이포함될수있으며, 메시지에대한 protection을위해서는 MAC 을사용해야한다. 6.2.2 초기화응답메시지 ip 는가입자초기화요청에대한응답메시지로, 인증서요청에대한상태정보, 가입자인증서등을포함한다. 초기화응답의데이터구조는다음과같다. CertRepMessage ::= SEQUENCE { capubs [1] SEQUENCE SIZE (1..MAX) OF Certificate OPTIONAL, response SEQUENCE OF CertResponse } CertResponse ::= SEQUENCE { certreqid INTEGER, -7-
status PKIStatusInfo, certifiedkeypair CertifiedKeyPair OPTIONAL, rspinfo OCTET STRING OPTIONAL } CertifiedKeyPair ::= SEQUENCE { certorenccert CertOrEncCert, privatekey [0] EncryptedValue OPTIONAL, publicationinfo [1] PKIPublicationInfo OPTIONAL } CertOrEncCert ::= SEQUENCE { certificate [0] Certificate, encryptedcert [1] EncryptedValue } certreqid 는요청메시지의 certreqid 와동일해야하며, 요청메시지에 certreqid 가 명시되어있지않은경우,-1 의값을가져야한다. PKIStatusInfo 는 가진다. 인증요청메시지에대한처리상태를나타내며, 다음의구조를 PKIStatusInfo ::= { status PKIStatus, statusstring PKIFreeText OPTIONAL, failinfo PKIFailureInfo OPTIONAL } 응답메시지는다음에서정의된상태정보의일부를포함할수있다. PKIStatus ::= INTEGER { granted (0), grantedwithmods (1), rejection (2), waiting (3), revocationwaring (4), revocationnotification (5), keyupdatewarning (6) } 인증요청이실패한경우, 응답메시지의송신자는실패사유에대한정보를제공하기위해다음의데이터구조를사용한다. -8-
PKIFailureInfo ::= BIT STRING { badalg (0), badmessagecheck (1), badrequest (2), badtime (3), badcertid (4), baddataformat (5), wrongauthority (6), incorrectdata (7), missingtimestamp (8), badpop (9) } 6.2.3 등록및인증서요청메시지 cr은등록및인증서요청메시지로 [KCAC.TS.CRMF] 의 CertReqMessage 구조의데이터를가진다. 6.2.4 등록및인증서요청응답메시지 cp는등록및인증서요청에대한응답메시지로 6.2.2 에정의된 CertRepMessage 구조의데이터를가진다. 6.2.5 키갱신요청메시지 kur 은키갱신요청으로 [KCAC.TS.CRMF] 의CertReqMessage 의구조를가지며, 일반적으로갱신될키에대한 SubjectPublicKeyInfo, KeyID 및 Validity 이 CertTemplate 에포함될수있다. 6.2.6 키갱신응답메시지 kup는키갱신요청에대한응답으로 CertRepMessage 의구조를가지며, 포함되는 내용은인증서신규발급요청에대한응답메시지에포함된정보와동일하다. 6.2.7 인증서폐지요청메시지 rr 은인증서폐지요청으로다음의데이터구조를가진다. -9-
RevReqContent ::= SEQUENCE OF RevDetails RevDetails ::= SEQUENCE { certdetails CertTemplate, revocationreason ReasonFlags OPTIONAL, badsincedate GeneralizedTime OPTIONAL, crlentrydetails Extensions OPTIONAL } 인증서폐지요청자의이름은 PKIHeader 에포함된다. certdetails 은요청자가폐지요청한인증서에대한상세정보를가지고, revocationreason 은폐지요청사유를포함한다. 6.2.8 인증서폐지응답메시지 rp 는인증서폐지요청에대한응답으로다음의데이터구조를가진다. RevRepContent ::= SEQUENCE { status revcerts [0] SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, SEQUENCE SIZE (1..MAX) OF CertID OPTIONAL, crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList CertId ::= SEQUENCE { issuer OPTIONAL } GeneralName, serialnumber INTEGER } 6.2.9 확인메시지 conf는 3-way 프로토콜에서 final 메시지로사용되는확인메시지이다. 이필드의 값은 NULL 로모든경우에동일하며, 요청된모든정보가 PKIHeader 에포함되기 때문에실제로포함되는정보는없다 PKIConfirmContent ::= NULL 6.2.10 일반요청메시지 genm 은 PKI 개체간일반적인요청메시지로다음의데이터구조가사용될수있다. -10-
GenMsgContent ::= SEQUENCE OF InfoTypeAndValue InfoTypeAndValue ::= SEQUENCE { infotype OBJECT IDENTIFIER, infovalue ANY DEFINED BY infotype OPTIONAL } InfoTypeAndValue 은다음의예와같은내용을포함할수있으며, 필요에의해 새로운요청및응답메시지를정의하여사용할수있다. {CAProtEncCert ={id-it1},certificates } {SignKeyPairTypes ={id-it2},sequence OF AlgorithmIdentifier } {EncKeyPairTypes ={id-it3},sequence OF AlgorithmIdentifier } {PreferredSymmAlg ={id-it4},algorithmidentifier } {CAKeyUpdateInfo ={id-it5},cakeyupdanncontent } {CurrentCRL ={id-it6},certificatelist } 여기서,{id-it}={13615574} 6.2.11 일반응답메시지 genp 는일반적인요청메시지에대한응답으로다음의데이터구조를가진다. GenRepContent :: SEQUENCE OF InfoTypeAndValue 6.2.12 에러메시지 error 는다음의구조를가진다. ErrorMsgContent ::= SEQUENCE { pkistatusinfo PKIStatusInfo, errorcode INTEGER OPTIONAL, errordetails PKIFreeText OPTIONAL } 7. 무선공인인증서비스에서의공인인증서관리프로토콜 본장에서는무선공인인증서관련전자서명및키분배인증서요청형식프로 토콜을정의하며인증기관및응용프로그램이요청형식을생성하고처리하는데 -11-
필요한요구사항들을명시한다. 7.1 무선인증서관리형식타입스트링및인코딩규칙 7.1.1 관리형식타입스트링정의 본규격에서각종류에따른해당타입을아래와같이정의하고, 3 스트링(String) 으로표현한다. 바이트의 종 류 키분배및전자서명 전자서명 키분배 재발급 200 210 220 갱 신 300 310 320 갱신( 키교체) 400 410 420 효력정지 500 510 520 폐 지 600 610 620 7.1.2 데이터인코딩규칙 본규격에서모든바이너리데이터는 base64 인코딩규칙을따라야한다. 구분자는 버티칼라인( ) 을사용하지만, 해쉬메시지의 concatenation 시에구분자를사용하지 않아야한다. 또한, 참조번호로사용할수있는문자의범위에서버티칼라인( ) 은 제외해야한다. 7.1.3 데이터전송 본규격에서정의하고있는데이터를등록기관또는공인인증기관에게전송 ( ) 할때는 POST 방식을사용해야한다. 7.2 무선인증서관리프로토콜 전자서명인증체계에서인증서의재발급, 폐지, 갱신, 효력정지, 효력회복요청시 필요한관리프로토콜을정의한다. 무선인증서관리프로토콜에따른등록기관( 또는공인인증기관) 의응답형식은 [ 부록 3] 에서정의한다. 7.2.1 인증서재발급요청 인증서재발급요청형식은가입자가가입자의전자서명생성키가분실, 훼손또 -12-
는도난, 유출되었다고판단되는경우재발급요청형식작성하여공인인증기관 ( 또는등록기관을통해) 에전달하기위함이다. 가입자는일회성정보(ID, Passwd), POP 를위한방법, 가입자의공개키( 전자 서명용공인인증서인경우에는신원확인정보) 를포함하는공인인증서요청형식을 생성하여 Replay attack, 메시지위 변조방지할수있는요청형식을구성하여 공인인증기관( 또는등록기관을통해) 에공인인증서요청형식을전달하여야한다. 일회성정보(ID, Passwd) 는 [KCAC.TS.RS] 를준수하여이용하고, 가입자가공 인인증서를요청할때는 하여인증서요청형식을생성한다. [KCAC.TS.E2E] 에서정의한 signtext함수를사용 전자서명용또는키분배용인증서재발급요청형식구조는다음과같다. 가입자 R 생성 V ID = H ( H ( ID N,R )) EVID = E(VID R) M = type PK new ID new EVID N = Passwd new SignedContent = signtext(m H ( M,N ), 1, 0, ) CR = SignedContent nonce CR 등록기관( 또는공인인증기관) nonce 생성 SignedContent = CR PK new, ID new 추출및 SignedContent 검증 데이터베이스에서 Passwd new H' = H ( M,Passwd new ) H'? = H ( M, N ) VID R = D(EVID) V ID? = H ( H ( ID N', R )) 및 IDN' 추출 키분배용인증서를발급받는경우에는 VID 및 EVID 구조는 [ 부록 1] 에서정의함 여기서 nonce는사용하지않음 EVID 를생략함. -13-
7.2.2 인증서갱신발급요청 가입자가인증서만료 1개월전부터만료일까지인증서갱신발급요청형식을 구성및작성하여공인인증기관( 또는등록기관을통해) 에전달하기위함이다. 갱신발급은키교체가발생하지않을경우, 키교체가일어날경우두가지 경우가생길수있다. 이러한경우갱신발급요청형식을생성하여공인인증기 관또는등록기관을통해에보내주어야한다 ( ). o 키교체가일어나지않는경우전자서명용또는키분배용인증서갱신발급 요청형식구조 가입자 등록기관( 또는공인인증기관) nonce 값생성 nonce R 생성 VID = H ( H ( IDN,R )) EVID = E(VID R ) M = type 소유자의 DN의 CN string EVID N = nonce(replay 공격방지) SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent CR SignedContent = C R signtext의 option이 5로설정되므로 기존인증서를가져와 PK 를추출 SignedContent 를 PK 로검증 ( 사용자인증) VID R = D(EVID) V ID? = H ( H ( ID N', R )) 여기서메시지 M의소유자 DN에서 CN string 은옵션이고, Null 값을가질수있음 ( 버티칼라인( ) 포함). 메시지 M의관리형식 type string 값은반드시포함. -14-
o 키교체가일어나지않는경우전자서명용및키분배용인증서갱신발급 요청형식구조 가입자 등록기관( 또는공인인증기관) nonce nonce 값생성 R 생성 V ID = H ( H ( ID N,R )) EVID = E(VID R) M = type 키분배용인증서의 URL EVID N = nonce(replay 공격방지) SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent CR SignedContent = C R signtext의 option이 5로설정되므로 기존인증서를가져와 PK 를추출 SignedContent 를 PK 로검증 ( 사용자인증) VID R = D (EVID) V ID? = H ( H ( ID N', R )) -15-
o 키교체가일어나는경우전자서명용또는키분배용 가입자 등록기관( 또는공인인증기관) nonce nonce 생성 R 생성 V ID = H ( H ( ID N,R )) EVID = E(VID R) M = type PK new EVID 구성 nonce 를 SK new 로서명한서명값 SignValue 생성 N = nonce SignValue SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent CR SignedContent = C R signtext의 option 이 5로설정되므 로 기존인증서를가져와 PK 를추출 SignedContent 를 PK 로검증 ( 사용자인증) SignValue 를 M의 PK new 로검 증( 새로운공개키에대한 POP 확인) VID R = D(EVID) V ID? = H ( H ( ID N', R )) -16-
o 키교체가일어나는경우전자서명용및키분배용 가입자 등록기관( 또는공인인증기관) nonce 생성 nonce R 생성 V ID = H ( H ( ID N,R )) EVID = E (VID R) SignValue sign 는 nonce를 S K ne w _sig n 로서명한서명값 M = type P K ne w _sign SignValue sign EVID SignValue keyd 는 nonce를 SK new _keyd 로서명한서명값 N = nonce PK new _keyd SignValue keyd KeydURL SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent CR SignedContent = C R signtext의 option 이 5로설정되므로 기존인증서를가져와 PK 를추출. SignedContent 를 PK 로검증 ( 사용자인증) SignValue sign 를 M 의 P K ne w _sig n 로검증( 새로운전자서명검증키에대 한 POP 확인) SignValue keyd 를 N 의 PK new _keyd 로검증( 새로운키분배용공개키에 대한 POP 확인) VID R = D(EVID) V ID? = H ( H ( ID N', R )) -17-
7.2.3 인증서효력정지발급요청 가입자는가입자의생성키에대한분실, 훼손또는도난 유출이의심되는경 우인증서효력정지발급요청형식을생성하여공인인증기관( 또는등록기관을통 해에전달하기위함이다 ). 가입자는사용자인증, Replay attack을방지할수있는인증서효력정지 발급요청형식을구성하여공인인증기관( 또는등록기관을통해) 에전달해야한다. o 전자서명용또는키분배용인증서효력정지발급요청형식구조 가입자 등록기관( 또는공인인증기관) nonce nonce 생성 M = type CertificateHold N = nonce(replay attack 방지) SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent CR SignedContent = C R signtext의 option 이 5로설정되므 로 기존인증서를가져와 PK 를추출. SignedContent 를 PK 로검증 ( 사용자인증) M 의 CertificateHold를통해효 력정지사유를확인 인증서를효력정지목록에삽입 -18-
o 전자서명용및키분배용인증서효력정지발급요청형식구조 가입자 M = type CertificateHold N = nonce KeydURL SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent nonce CR 등록기관( 또는공인인증기관) nonce 생성 SignedContent = C R signtext의 option 이 5로설정되므 로 기존인증서를가져와 PK 를추출. SignedContent 를 PK 로검증 ( 사용자인증) M 의 CertificateHold를통해효 력정지사유를확인 인증서를효력정지목록에삽입 7.2.4 인증서효력회복 인증서효력회복은가입자가효력이정지된자신의인증서효력회복을신청 하는것이다. 가입자는인증서효력회복시인증기관( 또는등록기관을통해) 에 직접방문하여효력회복신청을해야한다. 7.2.5 인증서폐지발급요청 가입자가인증서를폐지신청한경우와가입자의생성키에대한분실, 훼손또는 도난 유출이의심되는경우에가입자는폐지발급요청형식을작성하여공인인증 기관( 또는등록기관을통해) 에전달하기위함이다. 가입자의생성키에대한분실또는훼손된경우가입자는인증기관( 또는등록기관) 에 직접방문하여폐지신청을하고, 그외가입자의생성키에대한도난 유출이의 심되어폐지신청한경우는온라인으로가입자는폐지발급요청형식을구성하여공 -19-
인인증기관( 또는등록기관을통해) 에전달한다. o 전자서명용또는키분배용인증서폐지발급요청형식구조 가입자 M = type ReasonCode SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent nonce CR 등록기관( 또는공인인증기관) nonce 생성 SignedContent = C R signtext의 option 이 5로설정이므 로 기존인증서를가져와 PK 를추출. SignedContent 를 PK 로검증 ( 사용자인증) M의 ReasonCode를 통하여 폐지 사유를확인및인증서를폐지목록에삽입 o 전자서명용및키분배용인증서폐지발급요청형식구조 -20-
가입자 등록기관( 또는공인인증기관) M = type ReasonCode N = KeydURL SignedContent =signtext(m N,5,1,H( 공개키)) C R = SignedContent nonce CR nonce 생성 SignedContent = C R signtext의 option 이 5로설정되므 로 기존인증서를가져와 PK 를추출. SignedContent 를 PK 로검증 ( 사용자인증) M의 ReasonCode를 통하여 폐지 사유를확인 인증서를폐지목록에삽입 -21-
부록 1. VID 및 EVID 구조 1.1 VID 구조 enum { SHA1(0), (255) } HashAlgorithm ; struct { HashAlgorithm hash_alg ; opaque virtualid<0..2^8-1> ; }VID; // virtualid는아래에정의된 HashContent를 HashAlgorithm으로 2번해쉬한 값이다. struct { opaque opaque }HashContent; idn<0..2^8-1>; randomnum[20]; 1.2 EVID 구조 enum { RSA(0), (255) } EncryptionAlgorithm ; struct { Identifier issuer; opaque serialnumber<0..2^8-1>; }IssuerAndSerialNumber; struct { uint8 version ; HashAlgorithm vid_hash_alg ; EncryptionAlgorithm vid_encyption_alg ; -22-
}EVID; IssuerAndSerialNumber certid ; opaque encryptedvid<0..2^16-1> ; // encryptedvid는아래에정의된encryptioncontent 를암호화한값이다. struct { VID vid ; opaque randomnum[20] ; }EncryptionContent; -23-
부록 2. PK(Public Key) 의구조 enum { rsa(2), ecdh(3), ecdsa(4), (255) } PublicKeyType ; struct { select (PublicKeyType) { case ecdh : ECPublicKey ; case ecdsa : ECPublicKey ; case rsa : RSAPublicKey ; } }PublicKey; struct { opaque rsa_exponent<1..2^16-1> ; opaque rsa_modulus<1..2^16-1> ; }RSAPublicKey; enum { ECunNamed(0), ECNamed(1), (255) } ECNameType ; struct { select (ECNameType) { case ECunNamed : ECParameters ; case ECNamed : opaque oid<1..2^8-1>; } opaque point<1..2^8-1>; }ECPublicKey; ECNamed 에포함되는타원곡선암호화(ECC) 커브는 [KCAC.TS.DSIG] 를 따름 enum { ec_prime_p(1), ec_characteristic_two(2), (255) } ECFieldID; -24-
enum { ec_basis_onb(1), ec_basis_trinomial(2), ec_basis_pentanomial(3), ec_basis_polynomial(4) } ECBasisType; struct { opaque a <1..2^8-1>; opaque b <1..2^8-1>; opaque seed <0..2^8-1>; }ECCurve; struct { ECFieldID field; select (field) { case ec_prime_p: opaque prime_p <1..2^8-1>; case ec_characteristic_two: uint16 m; ECBasisType basis; select (basis) { case ec_basis_onb: struct { }; case ec_trinomial: uint16 k; case ec_pentanomial: uint16 k1; uint16 k2; uint16 k3; case ec_basis_polynomial: opaque irreducible <1..2^8-1>; } } ECCurve curve; ECPoint base; opaque order <1..2^8-1>; opaque cofactor <1..2^8-1>; }ECParameters; ECParameters 구조에대한설명은 [WAPWTLS] 를참조한다. -25-
부록 3. 프로토콜에따른등록기관( 또는공인인증기관) 의응답형식 3.1 재발급및갱신발급요청에대한응답형식 3.1.1 성공(Success) MIME Type : application/vnd.wap.cert-response Content : Base64 인코딩된 CertResponse enum { cert_info(0), cert(1), referral(2), (255) } CertRespType; struct { CharacterSet character_set; opaque displayname <1.. 2^8-1>; }CertDisplayName; struct { }UrlPoint; opaque url <0.. 128>; struct { unit8 version; CertRespType type; select (type) { case cert_info: CertDisplayName Identifier UrlPoint case cert: CertDisplayName Identifier X509Certificate case referral: UrlPoint display_name[2]; ca_domain[2]; url[2]; display_name[2]; ca_domain[2]; cert[2]; url[2]; -26-
} }CertResponse; unit32 seconds_to_wait[2]; 각배열의첫번째는전자서명용, 두번째는키분배용관련정보이다. CertResponse 구조에대한설명은 [WAPWPKI] 를참조한다. 3.1.2 실패(Fail) MIME Type : text/plain Content : ascii text 값의에러메시지 3.2 효력정지및폐지발급요청에대한응답형식 3.2.1 성공(Success) MIME Type : text/plain Content : ascii text 값의성공메시지 3.2.2 실패(Fail) MIME Type : text/plain Content : ascii text 값의에러메시지 -27-
부록 4. 규격연혁 버전 제개정일 제개정내역 v1.00 2004년 12월 공인인증서관리프로토콜규격 으로제정 v1.10 2007년 4월 무선인증서관리프로토콜 v1.32 흡수통합 v1.20 2008년 10월 관련국내표준및규격갱신내용반영 법률공포번호가해당법률개정시마다변경되는점을 고려하여법령명으로개정 v1.21 2009년 9월 관련국내표준참조오류정정 -28-
규격작성공헌자 본규격의제개정을위해아래와같이많은분들이공헌을하였습니다. 구분성명소속사 규격제안전자인증팀한국인터넷진흥원 규격초안제출전자인증팀한국인터넷진흥원 규격검토 백종현이석래박상환이원철박윤식박순태이향진이한욱정성아심희원김연숙이성진국상진김재홍 한국인터넷진흥원한국인터넷진흥원한국인터넷진흥원한국인터넷진흥원한국인터넷진흥원한국인터넷진흥원한국인터넷진흥원금융결제원금융결제원한국정보인증한국정보인증한국증권전산한국무역정보통신한국전산원 규격안편집박상환한국인터넷진흥원 -29-