網(wǎng)絡(luò)安全技術(shù) 公鑰基礎(chǔ)設(shè)施 證書管理協(xié)議 征求意見稿_第1頁(yè)
網(wǎng)絡(luò)安全技術(shù) 公鑰基礎(chǔ)設(shè)施 證書管理協(xié)議 征求意見稿_第2頁(yè)
網(wǎng)絡(luò)安全技術(shù) 公鑰基礎(chǔ)設(shè)施 證書管理協(xié)議 征求意見稿_第3頁(yè)
網(wǎng)絡(luò)安全技術(shù) 公鑰基礎(chǔ)設(shè)施 證書管理協(xié)議 征求意見稿_第4頁(yè)
網(wǎng)絡(luò)安全技術(shù) 公鑰基礎(chǔ)設(shè)施 證書管理協(xié)議 征求意見稿_第5頁(yè)
已閱讀5頁(yè),還剩102頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1GB/T19714—202X網(wǎng)絡(luò)安全技術(shù)公鑰基礎(chǔ)設(shè)施證書管理協(xié)議本文件描述了公鑰基礎(chǔ)設(shè)施(PKI)中證書管理協(xié)議的結(jié)構(gòu)和內(nèi)容,定義了與證書產(chǎn)生和管理相關(guān)的各方面所需要的協(xié)議消息。本文件可為公鑰基礎(chǔ)設(shè)施的設(shè)計(jì)、開發(fā)、運(yùn)行提供參考。2規(guī)范性引用文件下列文件中的內(nèi)容通過文中的規(guī)范性引用而構(gòu)成本文件必不可少的條款。其中,注日期的引用文件,僅該日期對(duì)應(yīng)的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。GB/T19713網(wǎng)絡(luò)安全技術(shù)公鑰基礎(chǔ)設(shè)施在線證書狀態(tài)協(xié)議GB/T20518—2018信息安全技術(shù)公鑰基礎(chǔ)設(shè)施數(shù)字證書格式GB/T25056—2018信息安全技術(shù)證書認(rèn)證系統(tǒng)密碼及其相關(guān)安全技術(shù)規(guī)范GB/T33560—2017信息安全技術(shù)密碼應(yīng)用標(biāo)識(shí)規(guī)范3術(shù)語和定義GB/T25069—2022界定的以及下列術(shù)語和定義適用于本文件。3.1公鑰基礎(chǔ)設(shè)施publickeyinfrastructure;PKI基于公鑰密碼技術(shù),具有普適性,可用于提供機(jī)密性、完整性、真實(shí)性及抗抵賴性等安全服務(wù)的基礎(chǔ)設(shè)施。[來源:GB/T25069-2022,3.212]3.2數(shù)字簽名digitalsignature附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對(duì)數(shù)據(jù)單元做密碼變換,這種附加數(shù)據(jù)或密碼變換被數(shù)據(jù)單元的接收者用以確認(rèn)數(shù)據(jù)單元的來源和完整性,達(dá)到保護(hù)數(shù)據(jù),防止被偽造的目的。[來源:GB/T25069-2022,3.576,有修改]3.3雜湊函數(shù)hash-function將任意長(zhǎng)位串映射為定長(zhǎng)位串,并滿足下列性質(zhì)的函數(shù):——給定一個(gè)輸出位串,尋找一個(gè)輸入位串來產(chǎn)生該輸出位串,在計(jì)算上不可行;——給定一個(gè)輸入位串,尋找另一不同的輸入位串來產(chǎn)生相同的輸出位串,在計(jì)算上不可行。[來源:GB/T25069-2022,3.505,有修改]3.4個(gè)人安全環(huán)境personalsecurityenvironment(PSE)2GB/T19714—202X終端實(shí)體用于安全存儲(chǔ)證書及私鑰的環(huán)境。3.5擁有證明Proof0fPossession(POP)終端實(shí)體用以證明自己擁有(即能夠使用)與為之申請(qǐng)證書的公鑰相對(duì)應(yīng)的私鑰。4縮略語下列縮略語適用于本文件。CA證書認(rèn)證機(jī)構(gòu)(CertificateAuthority)CMP證書管理協(xié)議(CertificateManagementProtocol)CRL證書撤銷列表(CertificateRevocationList)EE終端實(shí)體(EndEntity)IPSECIP安全協(xié)議(InternetProtocolSecurity)KM密鑰管理(KeyManagement)LDAP輕量級(jí)目錄訪問協(xié)議(LightweightDirectoryAccessProtocol)MAC消息認(rèn)證碼(MessageAuthenticationCode)OCSP在線證書狀態(tài)查詢協(xié)議(OnlineCertificateStatusProtocol)PKCS公鑰密碼標(biāo)準(zhǔn)(Public-KeyCryptographyStandards)PKI公鑰基礎(chǔ)設(shè)施(PublicKeyInfrastructure)POP擁有證明(Proof0fPossession)PSE個(gè)人安全環(huán)境(personalsecurityenvironment)RA證書注冊(cè)機(jī)構(gòu)(RegistrationAuthority)5證書管理概述5.1概述PKI系統(tǒng)的實(shí)體包括終端實(shí)體EE、CA系統(tǒng)、RA系統(tǒng)、KM系統(tǒng)以及證書及CRL存儲(chǔ)發(fā)布與狀態(tài)查詢系統(tǒng)。證書管理協(xié)議是指用于在PKI系統(tǒng)的實(shí)體之間實(shí)現(xiàn)初始化注冊(cè)/認(rèn)證、證書申請(qǐng)、證書更新、密鑰恢復(fù)、證書撤銷、證書凍結(jié)與證書解凍、證書/CRL發(fā)布等證書管理活動(dòng)的聯(lián)機(jī)交互通信協(xié)議。與證書管理相關(guān)的PKI實(shí)體交互關(guān)系見圖1所示。初始化注冊(cè)和認(rèn)證以及證書更新操作都會(huì)創(chuàng)建新的證書。在初始化注冊(cè)和認(rèn)證操作中,EE在CA系統(tǒng)為其簽發(fā)證書之前第一次向CA或RA系統(tǒng)表明其身份。此過程成功的結(jié)果是CA系統(tǒng)為EE的公鑰簽發(fā)證書,并將該證書返回給EE和/或發(fā)布該證書到證書庫(kù)。證書更新操作包括對(duì)過期的證書進(jìn)行“刷新”和對(duì)需定期更新的證書密鑰對(duì)簽發(fā)新證書。密鑰恢復(fù)操作是用于EE恢復(fù)其已備份的密鑰資料(如解密密鑰)。撤銷操作用于一個(gè)經(jīng)過授權(quán)的人向CA系統(tǒng)發(fā)出異常情況警告并要求撤銷證書。證書凍結(jié)與證書解凍操作分別用于臨時(shí)撤銷證書及其逆操作。本文件分別對(duì)終端實(shí)體與證書及CRL存儲(chǔ)發(fā)布與狀態(tài)查詢系統(tǒng)、終端實(shí)體與RA系統(tǒng)、RA系統(tǒng)與CA系統(tǒng)、CA系統(tǒng)與KM系統(tǒng)、CA系統(tǒng)與證書及CRL存儲(chǔ)發(fā)布與狀態(tài)查詢系統(tǒng)之間的協(xié)議流程以及協(xié)議消息結(jié)構(gòu)進(jìn)行描述。3GB/T19714—202X圖1與證書管理相關(guān)的PKI實(shí)體交互關(guān)系圖1中虛線部分所涉及的協(xié)議流程及消息結(jié)構(gòu)不在本文件描述范圍,可參考GB/T19771等相關(guān)標(biāo)準(zhǔn)。遵循本文件的實(shí)現(xiàn)應(yīng)支持的PKI消息的詳細(xì)描述參見附錄A,遵循本文件的實(shí)現(xiàn)可以支持的PKI消息的詳細(xì)描述見附錄B。與狀態(tài)查詢系統(tǒng)的集合稱為PKI。5.2PKI實(shí)體介紹5.2.1主體和終端實(shí)體終端實(shí)體是指申請(qǐng)并向其頒發(fā)證書的實(shí)體?!爸黧w”(subject)在本文件中是指被頒發(fā)證書的實(shí)體,一般在證書的主體(subject)或主體可替換名(subjectAltName)字段指定。區(qū)分主體所使用的工具和/或軟件時(shí)(例如:一個(gè)本地的證書管理模塊),使用術(shù)語“主體設(shè)施”(subjectequipment)。通常優(yōu)先使用術(shù)語“終端實(shí)體”而非“主體”,以防與證書字段名中的主體混淆。終端實(shí)體不僅包括應(yīng)用的使用者,也包括應(yīng)用本身(例如IPSec)。所有的終端實(shí)體都需安全可靠地訪問一些本地信息,其中至少包括:終端實(shí)體的名字和私鑰,被該實(shí)體直接信任的CA名字及其公鑰(或公鑰指紋)。具體實(shí)現(xiàn)可以使用安全本地存儲(chǔ)機(jī)制存儲(chǔ)上述信息。5.2.2CA系統(tǒng)CA系統(tǒng)是負(fù)責(zé)創(chuàng)建、分配和發(fā)布證書的系統(tǒng),該系統(tǒng)是受用戶信任的權(quán)威機(jī)構(gòu)的系統(tǒng)。CA系統(tǒng)包括離線模塊和在線模塊,只有離線模塊可使用CA的私鑰。5.2.3RA系統(tǒng)RA系統(tǒng)是為用戶辦理證書申請(qǐng)、身份審核、證書下載、證書更新、證書注銷以及密鑰恢復(fù)等實(shí)際業(yè)務(wù)的系統(tǒng),可分為本地注冊(cè)管理系統(tǒng)和遠(yuǎn)程注冊(cè)管理系統(tǒng)。RA系統(tǒng)存在的原因參見附錄C。RA系統(tǒng)所具有的功能通常包括個(gè)人身份鑒別、介質(zhì)分發(fā)、作廢報(bào)告、名稱分配、密鑰產(chǎn)生、密鑰歸檔等等。RA系統(tǒng)采用自己的私鑰進(jìn)行數(shù)字簽名和身份認(rèn)證。一個(gè)RA系統(tǒng)可以與多個(gè)CA系統(tǒng)協(xié)同工作。4GB/T19714—202X5.2.4KM系統(tǒng)密鑰管理系統(tǒng)作為PKI的實(shí)體之一,用于接受CA系統(tǒng)的密鑰服務(wù)請(qǐng)求,并將處理結(jié)果返回給CA。本文件中,CA系統(tǒng)與KM系統(tǒng)之間涉及到的密鑰服務(wù)包括申請(qǐng)密鑰對(duì)、恢復(fù)密鑰對(duì)和撤銷密鑰對(duì),每個(gè)步驟按照請(qǐng)求-響應(yīng)的步驟執(zhí)行。請(qǐng)求由CA系統(tǒng)提出,發(fā)送到KM系統(tǒng);響應(yīng)由KM系統(tǒng)發(fā)起,發(fā)送到CA系統(tǒng)。密鑰管理系統(tǒng)提供了加密證書密鑰對(duì)全過程管理功能,包括密鑰生成、密鑰存儲(chǔ)、密鑰分發(fā)、密鑰備份、密鑰更新、密鑰撤消、密鑰歸檔、密鑰恢復(fù)以及安全管理等。5.2.5證書及CRL存儲(chǔ)發(fā)布與狀態(tài)查詢系統(tǒng)證書及CRL存儲(chǔ)發(fā)布與證書狀態(tài)查詢系統(tǒng)負(fù)責(zé)證書和CRL的存儲(chǔ)與發(fā)布以及為用戶和應(yīng)用系統(tǒng)提供證書及CRL的下載與在線狀態(tài)查詢服務(wù)。在證書及CRL存儲(chǔ)發(fā)布與證書狀態(tài)查詢系統(tǒng)中,用戶或系統(tǒng)利用數(shù)字證書中標(biāo)識(shí)的CRL地址,下載CRL并檢驗(yàn)證書的有效性;按照在線證書狀態(tài)查詢OCSP協(xié)議實(shí)時(shí)在線查詢證書的狀態(tài)。證書及CRL存儲(chǔ)發(fā)布與證書狀態(tài)查詢系統(tǒng)除了負(fù)責(zé)證書和CRL的存儲(chǔ)與發(fā)布以及證書和CRL的下載與在線狀態(tài)查詢服務(wù),還包括安全審計(jì)、安全管理以及數(shù)據(jù)一致性校驗(yàn)。安全審計(jì)指對(duì)證書/CRL存儲(chǔ)發(fā)布系統(tǒng)的管理人員、操作人員的操作日志進(jìn)行查詢、統(tǒng)計(jì)以及報(bào)表打印等;安全管理指對(duì)證書/CRL存儲(chǔ)發(fā)布系統(tǒng)的登陸進(jìn)行訪問控制,并定期對(duì)數(shù)據(jù)庫(kù)和目錄服務(wù)器進(jìn)行管理和備份;數(shù)據(jù)一致性檢驗(yàn)指對(duì)數(shù)據(jù)庫(kù)和目錄服務(wù)器中的數(shù)據(jù)進(jìn)行一致性檢驗(yàn)。6PKI消息數(shù)據(jù)結(jié)構(gòu)6.1PKI消息綜述6.1.1PKI消息PKI管理消息的結(jié)構(gòu)如下所示:PKIMessage::=SEQUENCE{headerPKIHeader,bodyPKIBody,protection[0]PKIProtectionOPTIONAL,extraCerts[1]SEQUENCESIZE(1..MAX)OFCertificateOPTIONAL}PKIMessages::=SEQUENCESIZE(1..MAX)OFPKIMessage在PKIMessage中:——PKIHeader:包含PKI消息通用的信息;——PKIBody:包含與具體類型的PKI消息相關(guān)的信息;——PKIProtection:包含對(duì)PKI消息進(jìn)行保護(hù)的比特串;——extraCerts:可包含對(duì)接收者可能有用的證書。例如,CA或RA系統(tǒng)可在此字段攜帶驗(yàn)證所頒發(fā)的證書是否合法的證書以供終端實(shí)體使用(例如,簽發(fā)終端實(shí)體證書的CA系統(tǒng)不是一個(gè)根CA系統(tǒng))。6.1.2PKI消息頭PKI消息頭結(jié)構(gòu)5GB/T19714—202XPKI消息需使用消息頭的某些信息進(jìn)行尋址和交易識(shí)別。PKI消息頭攜帶于PKI消息的傳輸信息中,所以會(huì)與PKI消息受到同等的保護(hù)。PKI消息頭的數(shù)據(jù)結(jié)構(gòu)如下所示:PKIHeader::=SEQUENCE{pvnoINTEGER{cmp1999(1),cmp2000(2),cmp2021(3),cmp2024(103)},senderGeneralName,--標(biāo)識(shí)發(fā)送者recipientGeneralName,--標(biāo)識(shí)預(yù)期的接收者messageTime[0]GeneralizedTimeOPTIONAL,--產(chǎn)生這個(gè)消息的時(shí)間protectionAlg[1]AlgorithmIdentifierOPTIONAL,--用于計(jì)算protection比特串的算法senderKID[2]KeyIdentifierOPTIONAL,recipKID[3]KeyIdentifierOPTIONAL,--標(biāo)識(shí)用于保護(hù)的特定密鑰transactionID[4]OCTETSTRINGOPTIONAL,--標(biāo)識(shí)交易,即在相關(guān)的請(qǐng)求、響應(yīng)和確認(rèn)消息中,該字段值相同senderNonce[5]OCTETSTRINGOPTIONAL,recipNonce[6]OCTETSTRINGOPTIONAL,--用于防止重放攻擊的隨機(jī)數(shù),senderNonce由消息的創(chuàng)建者賦值,--recipNonce是由本消息的預(yù)期接收者先前插入到相關(guān)消息中的隨機(jī)數(shù)freeText[7]PKIFreeTextOPTIONAL,--可以用于表示上下文相關(guān)的說明(本字段主要由人工使用)generalInfo[8]SEQUENCESIZE(1..MAX)OFInfoTypeAndValueOPTIONAL--可以用于表示上下文相關(guān)的說明(本字段不是供人工使用的)}PKIFreeText::=SEQUENCESIZE(1..MAX)OFUTF8String--按UTF-8[RFC3629]編碼的文本在PKIHeader中:——pvno:指示協(xié)議版本。對(duì)于該版本pvno字段取固定值103,對(duì)于GB/T19714—2005版本pvno字段取固定值2。其它取值對(duì)應(yīng)版本是RFC標(biāo)準(zhǔn)版本(對(duì)于RFC2510版本取固定值1,對(duì)于RFC9480版本取固定值3相關(guān)協(xié)議和消息定義不在本文件描述范圍內(nèi)。關(guān)于GB/T19714—2005和GB/T19714—202X兩個(gè)版本的協(xié)商處理問題可參見附錄D;——sender:包含PKIMessage發(fā)送者的名字。sender字段與senderKID字段一起應(yīng)能標(biāo)識(shí)對(duì)該消息的保護(hù)進(jìn)行驗(yàn)證所需要的密鑰。如果發(fā)送方實(shí)體不清楚其相關(guān)信息(例如:在初始化請(qǐng)求消息中,終端實(shí)體不清楚自己的DN(DistinguishedName,唯一標(biāo)識(shí)名)、電子郵件、IP地址等則"sender"字段應(yīng)包含一個(gè)"NULL"值,即相對(duì)唯一標(biāo)識(shí)的長(zhǎng)度為0。在此情況下,senderKID字段應(yīng)包含能夠向接收者指示驗(yàn)證消息所用的共享密鑰信息的標(biāo)識(shí)符;——recipient:包含PKIMessage接收者的名字。recipient字段與recipKID字段一起應(yīng)可用于驗(yàn)證對(duì)消息的保護(hù);——protectionAlg:指示保護(hù)消息所使用的算法。如果沒有提供保護(hù)比特位(PKIProtection是可選的),則必須省略這個(gè)字段;如果提供了比特位,則必須提供這個(gè)字段;6GB/T19714—202X——senderKID及recipKID:標(biāo)識(shí)用于保護(hù)消息的密鑰(recipKID通常僅在使用Diffie-Hellman密鑰保護(hù)消息時(shí)才要求)。如果需要唯一標(biāo)識(shí)密鑰(例如,如果多個(gè)密鑰與該發(fā)送者名字關(guān)聯(lián)則應(yīng)使用這些字段,否則應(yīng)省略這些字段;——transactionID:用于使消息的接收者將此消息與正在進(jìn)行的交易相關(guān)聯(lián),對(duì)于由多個(gè)請(qǐng)求/響應(yīng)對(duì)組成的交易此字段是必選的。對(duì)于由單個(gè)請(qǐng)求/響應(yīng)對(duì)組成的交易,規(guī)則如下:客戶端可填充請(qǐng)求的transactionID字段,如果服務(wù)端收到設(shè)置了transactionID字段的請(qǐng)求,則其應(yīng)將響應(yīng)的transactionID字段設(shè)置為相同的值;如果服務(wù)端接收到缺少transactionID字段的此類請(qǐng)求,則其可選擇設(shè)置響應(yīng)的transactionID字段。對(duì)于由多個(gè)請(qǐng)求/響應(yīng)對(duì)組成的交易,規(guī)則如下:客戶端應(yīng)為第一個(gè)請(qǐng)求生成transactionID。如果服務(wù)端收到設(shè)置了transactionID字段的請(qǐng)求,則其應(yīng)將響應(yīng)的transactionID字段設(shè)置為相同的值。如果服務(wù)端接收到缺少transactionID字段的請(qǐng)求,則其應(yīng)使用服務(wù)端生成的ID填充響應(yīng)的transactionID字段。后續(xù)請(qǐng)求和響應(yīng)都應(yīng)將transactionID字段設(shè)置為此值。在使用transactionID的情況下,給定客戶端不應(yīng)(同特定服務(wù)端)有多個(gè)正在進(jìn)行的具有相同transactionID的交易。服務(wù)端可自由要求transactionID的唯一性。如果服務(wù)端不能區(qū)分客戶端,則其會(huì)要求{client,transactionID}元組或單獨(dú)的transactionID是唯一的。如果接收(需要多個(gè)請(qǐng)求/響應(yīng)對(duì))交易的第一條消息的服務(wù)端接收到不允許其滿足上述約束的transactionID(通常是因?yàn)閠ransactionID已在使用中),應(yīng)發(fā)送回帶有transactionIdInUse的PKIFailureInfo的ErrorMsgContent??蛻舳嗽诮灰组_始時(shí)建議使用128位(偽)隨機(jī)數(shù)填充transactionID字段,以降低服務(wù)端使用該transactionID的可能性;——senderNonce及recipNonce:發(fā)送方和接收方隨機(jī)數(shù),用于保護(hù)PKIMessage免受重放攻擊。senderNonce通常是由發(fā)送者生成的128位(偽)隨機(jī)數(shù),而recipNonce復(fù)制交易的前一個(gè)消息的senderNonce;——messageTime:包含發(fā)送者創(chuàng)建這個(gè)消息的時(shí)間??捎山K端實(shí)體用于校正/檢查自己的本地時(shí)間以便與中央系統(tǒng)的時(shí)間保持一致;——freeText:可用于發(fā)送人可讀的消息給接收者(用任意多種語言)。此序列中的第一種語言表明響應(yīng)期望使用的語言;——generalInfo:可用于向接收方發(fā)送機(jī)器可讀的額外的數(shù)據(jù)??芍С?節(jié)定義的generalInfo擴(kuò)展項(xiàng)。隱式確認(rèn)終端實(shí)體或RA系統(tǒng)利用以下數(shù)據(jù)結(jié)構(gòu)通知RA或CA系統(tǒng),其在收到證書后,將不發(fā)送6.3.15定義的證書確認(rèn)消息。implicitConfirmOBJECTIDENTIFIER::={id-it13}ImplicitConfirmValue::=NULL若RA或CA系統(tǒng)許可終端實(shí)體或RA系統(tǒng)的請(qǐng)求,則應(yīng)在響應(yīng)消息的PKIHeader頭中放置相同的擴(kuò)展名。若終端實(shí)體或RA系統(tǒng)未在響應(yīng)消息中找到此擴(kuò)展,則應(yīng)發(fā)送證書確認(rèn)。id-it的值參見第6.3.16節(jié)。確認(rèn)等待時(shí)間CA或RA系統(tǒng)利用以下數(shù)據(jù)結(jié)構(gòu)通知RA系統(tǒng)或終端實(shí)體,在撤銷證書和刪除交易之前其打算等待證書確認(rèn)的時(shí)間長(zhǎng)度。confirmWaitTimeOBJECTIDENTIFIER::={id-it14}ConfirmWaitTimeValue::=GeneralizedTime證書模板標(biāo)識(shí)7GB/T19714—202XRA系統(tǒng)利用以下數(shù)據(jù)結(jié)構(gòu)通知CA系統(tǒng),其對(duì)要申請(qǐng)的證書的要求,如申請(qǐng)簽名證書或簽名證書和加密證書。certTemplateIDOBJECTIDENTIFIER::={0.1}CertTemplateIDValue::=UTF8String6.1.3PKI消息體PKIBody::=CHOICE{--與消息類型相關(guān)的消息體和參考章條ir[0]CertReqMessages,--初始化請(qǐng)求(6.3.1)ip[1]CertRepMessage,--初始化響應(yīng)(6.3.2)cr[2]CertReqMessages,--認(rèn)證請(qǐng)求(6.3.3)cp[3]CertRepMessage,--認(rèn)證響應(yīng)(6.3.4)p10cr[4]CertificationRequest,--PKCS#10認(rèn)證請(qǐng)求kur[7]CertReqMessages,--密鑰更新請(qǐng)求(6.3.5)kup[8]CertRepMessage,--密鑰更新響應(yīng)(6.3.6)krr[9]CertReqMessages,--密鑰恢復(fù)請(qǐng)求(6.3.7)krp[10]KeyRecRepContent,--密鑰恢復(fù)響應(yīng)(6.3.8)rr[11]RevReqContent,--撤銷請(qǐng)求(6.3.9)rp[12]RevRepContent,--撤銷響應(yīng)(6.3.10)cann[16]CertAnnContent,--證書公告(6.3.11)rann[17]RevAnnContent,--撤銷公告(6.3.12)crlann[18]CRLAnnContent,--CRL公告(6.3.13)pkiconf[19]PKIConfirmContent,--PKI確認(rèn)(6.3.14)nested[20]NestedMessageContent,--嵌套消息(6.1.4)genm[21]GenMsgContent,--通用消息(6.3.16)genp[22]GenRepContent,--通用響應(yīng)(6.3.17)error[23]ErrorMsgContent,--錯(cuò)誤消息(6.3.18)certConf[24]CertConfirmContent,--證書確認(rèn)(6.3.15)pollReq[25]PollReqContent,--輪詢請(qǐng)求(6.3.19)pollRep[26]PollRepContent,--輪詢響應(yīng)(6.3.19)fr[27]RevReqContent,--證書凍結(jié)請(qǐng)求(6.3.20)fp[28]RevRepContent,--證書凍結(jié)響應(yīng)(6.3.20)ufr[29]RevReqContent,--證書解凍請(qǐng)求(6.3.21)ufp[30]RevRepContent--證書解凍響應(yīng)(6.3.21)}具體類型消息的描述見6.3節(jié)。CertificationRequest的定義參見GM/T0092。6.1.4PKI消息保護(hù)某些PKI消息需要保護(hù)完整性。(例如使用已經(jīng)認(rèn)證過的公鑰證明消息的來源以及消息的完整性。)protection的結(jié)構(gòu)如下:PKIProtection::=BITSTRING計(jì)算PKIProtection時(shí)輸入的是下面數(shù)據(jù)結(jié)構(gòu)的DER編碼:ProtectedPart::=SEQUENCE{headerPKIHeader,8GB/T19714—202XbodyPKIBody}在有些情況下,可采用PKIX以外的其它保護(hù)方法保護(hù)消息,而不采用PKIProtection比特串(即省略這個(gè)可選的字段)。例如,使用PKCS#7[PKCS7]或SecurityMultiparts[RFC1847]對(duì)PKIMessage封裝(當(dāng)PKIHeader信息由外部機(jī)制安全地傳輸時(shí),僅對(duì)省略CHOICE標(biāo)簽的PKIBody進(jìn)行封裝)。許多此類外部機(jī)制要求終端實(shí)體已擁有一個(gè)公鑰證書和/或一個(gè)唯一的DN和/或其它與基礎(chǔ)結(jié)構(gòu)相關(guān)的信息。因此,此類方法對(duì)于初始注冊(cè)、密鑰恢復(fù)或其它具有"初始引導(dǎo)"特性的過程來說不合適。對(duì)此類情況,必須使用PKIProtection。根據(jù)環(huán)境不同,PKIProtection比特串可包含一個(gè)消息認(rèn)證碼(MAC)或數(shù)字簽名,局限于下面的幾種情況:a)共享密鑰信息在此種情況下,發(fā)送方和接收方共享密鑰信息。PKIProtection將包含一個(gè)MAC值,protectionAlg如下(參見附錄A.3):id-PasswordBasedMacOBJECTIDENTIFIER::={1284011353376613}PBMParameter::=SEQUENCE{saltOCTETSTRING,owfAlgorithmIdentifier,--單向函數(shù)(OWF)的算法標(biāo)識(shí)iterationCount--OWF的應(yīng)用次數(shù)mac--MAC算法標(biāo)識(shí)}INTEGER,AlgorithmIdentifier在上述protectionAlg中,共享密鑰后面追加上salt值。然后應(yīng)用iterationCount次OWF算法,其中追加了salt值的密鑰作為第一次迭代的輸入,對(duì)后續(xù)的每一次迭代,其輸入都是前一次迭代的輸出。最后一次迭代的輸出(為方便引用稱作"BASEKEY",其長(zhǎng)度為"H")用于形成對(duì)稱密鑰。如果MAC算法要求一個(gè)K比特的密鑰而且K<=H,密鑰則取BASEKEY的前K比特;如果K>H,則將BASEKEY的全部H比特作為密鑰的前H比特,OWF("1"||BASEKEY)所得結(jié)果作為密鑰的下一H比特,OWF("2"||BASEKEY)所得結(jié)果作為密鑰的再下一H比特,依此類推,直到得到所有的K比特為止("N"代表數(shù)字N的ASCII字節(jié)編碼,"||"代表串聯(lián)。)。注:建議PBMParameter字段在一個(gè)交易的所有消息中(例如ir/ip/certConf/pkiConf)保持不變,以降低計(jì)b)簽名在此種情況下,發(fā)送方擁有一個(gè)簽名密鑰對(duì),對(duì)PKI消息進(jìn)行簽名。PKIProtection包含簽名值,protectionAlg為一種數(shù)字簽名的算法。c)多重保護(hù)當(dāng)終端實(shí)體發(fā)送一個(gè)保護(hù)的PKI消息到RA系統(tǒng),RA系統(tǒng)可以追加自己的保護(hù)(可以是MAC或簽名,取決于RA和CA系統(tǒng)之間共享的信息和證書)后將消息轉(zhuǎn)發(fā)到CA系統(tǒng)。這種保護(hù)通過將終端實(shí)體發(fā)送的消息整個(gè)嵌套到一個(gè)新的PKI消息中實(shí)現(xiàn)。使用的結(jié)構(gòu)如下:NestedMessageContent::=PKIMessages(使用PKIMessages,即是一系列PKIMessage,允許RA系統(tǒng)在單個(gè)新消息中批處理多個(gè)EE的請(qǐng)求。為簡(jiǎn)單起見,批處理中的所有消息必須具有相同的類型(例如,ir)。)如果RA系統(tǒng)希望以某種方式修改消息(例如,添加特定的字段值或新的擴(kuò)展則RA系統(tǒng)可能會(huì)自己創(chuàng)建所需9GB/T19714—202X的PKIBody。來自EE的原始PKIMessage可以包括在PKIHeader的generalInfo字段中(例如,為了適應(yīng)CA系統(tǒng)希望檢查原始EE消息上的POP或其他信息的情況)。在這種情況下,要使用的infoType為{id-it15},infoValue為PKIMessages(內(nèi)容必須與PKIBody中的請(qǐng)求順序相同)。6.2公共數(shù)據(jù)結(jié)構(gòu)6.2.1被申請(qǐng)的證書內(nèi)容各種證書管理消息都要求消息的發(fā)起者指明證書里存放的某些字段的值。CertTemplate結(jié)構(gòu)體使得EE或者RA系統(tǒng)可以盡可能地指定它們所希望申請(qǐng)到的證書里的內(nèi)容。CertTemplate結(jié)構(gòu)體與證書的內(nèi)容完全一致,但所有字段都是可選的。注:即使消息的發(fā)起者指明了它所申請(qǐng)證書的所有內(nèi)容,CA系統(tǒng)仍然可以自由改動(dòng)實(shí)際發(fā)放的證書的字段值。如CertTemplate語法如下:CertTemplate::=SEQUENCE{version[0]VersionOPTIONAL,serialNumber[1]INTEGEROPTIONAL,signingAlg[2]AlgorithmIdentifierOPTIONAL,issuer[3]NameOPTIONAL,validity[4]OptionalValidityOPTIONAL,subject[5]NameOPTIONAL,publicKey[6]SubjectPublicKeyInfoOPTIONAL,issuerUID[7]UniqueIdentifierOPTIONAL,subjectUID[8]UniqueIdentifierOPTIONAL,extensions[9]ExtensionsOPTIONAL}6.2.2加密值在PKI消息中發(fā)送加密值時(shí)采用SM2EnvelopedKey[GM/T0009-2012]數(shù)據(jù)結(jié)構(gòu)。SM2EnvelopedKey::=SEQUENCE{symAlgIDAlgorithmIdentifier,--對(duì)稱密碼算法標(biāo)識(shí)symEncryptedKeySM2Cipher,--對(duì)稱密鑰密文sm2PublicKeySM2PublicKey,--SM2公鑰sm2EncryptedPrivateKeyBITSTRING--SM2私鑰密文}6.2.3PKI消息的狀態(tài)編碼和失敗信息所有的響應(yīng)消息都包含某些狀態(tài)信息。下面定義了相應(yīng)的值:accepted(0),--表示得到了所要求的數(shù)據(jù)grantedWithMods(1),GB/T19714—202X--得到的數(shù)據(jù)與所要求的類似,但申請(qǐng)者有責(zé)任確定有無差別rejection(2),--無法得到的數(shù)據(jù),在該消息的其它地方有更多的信息waiting(3),--請(qǐng)求的包體尚未被處理,期望稍后獲取結(jié)果(對(duì)具有該狀態(tài)的響應(yīng),恰當(dāng)?shù)奶幚矸绞娇梢允鞘褂?.3.19中定義的輪詢請(qǐng)求/響應(yīng)PKIMessages;使用底層的傳輸層輪詢機(jī)制也是一種可行的方法。revocationWarning(4),--本消息包含一個(gè)即將作廢的警告信息revocationNotification(5),--通知已經(jīng)作廢keyUpdateWarning(6)--在密鑰更新請(qǐng)求消息中oldCertId指示的密鑰已經(jīng)更新}響應(yīng)者可以使用下列語法以提供有關(guān)失敗狀況的更多信息。PKIFailureInfo::=BITSTRING{--因?yàn)槎喾N情況可能導(dǎo)致失敗,所以在需要時(shí)可以加入更多的代碼badAlg(0),--不可識(shí)別或者不支持的算法標(biāo)識(shí)符badMessageCheck(1),--完整性檢查失?。ɡ?,簽名驗(yàn)證不成功)badRequest(2),--不允許或不支持的交易badTime(3),--根據(jù)本地策略,請(qǐng)求中的messageTime與系統(tǒng)時(shí)間不夠接近badCertId(4),--無法找到與提供的條件匹配的證書badDataFormat(5),--提交的數(shù)據(jù)格式錯(cuò)誤wrongAuthority(6),--請(qǐng)求中指明的權(quán)威機(jī)構(gòu)與本響應(yīng)的創(chuàng)建者不同incorrectData(7),--申請(qǐng)者的數(shù)據(jù)錯(cuò)誤(用于公證服務(wù))missingTimeStamp(8),--在要求存在時(shí)間戳?xí)r沒有提供(根據(jù)策略要求)badPOP(9),--擁有證明失敗certRevoked(10),--該證書已被撤銷certConfirmed(11),--證書已被確認(rèn)wrongIntegrity(12),--完整性無效GB/T19714—202XbadRecipientNonce(13),--無效的收件人隨機(jī)數(shù)timeNotAvailable(14),--TSA的時(shí)間源不可用unacceptedPolicy(15),--TSA不支持請(qǐng)求的TSA策略。unacceptedExtension(16),--TSA不支持請(qǐng)求的擴(kuò)展名。addInfoNotAvailable(17),--請(qǐng)求的附加信息無法理解或不可用badSenderNonce(18),--無效的發(fā)件人隨機(jī)數(shù)badCertTemplate(19),--無效的證書模板或缺少必填信息signerNotTrusted(20),--未知或不信任的報(bào)文簽名者transactionIdInUse(21),--交易標(biāo)識(shí)符已在使用中unsupportedVersion(22),--不支持的報(bào)文版本notAuthorized(23),--發(fā)件人無權(quán)提出前述請(qǐng)求或執(zhí)行前述操作systemUnavail(24),--由于系統(tǒng)不可用,請(qǐng)求無法處理systemFailure(25),--由于系統(tǒng)故障,請(qǐng)求無法處理duplicateCertReq(26),--由于同樣的證書已經(jīng)存在,所以系統(tǒng)不能發(fā)放certFrozen(27)--該證書已被凍結(jié)}PKIStatusInfo::=SEQUENCE{statusPKIStatus,statusStringPKIFreeTextOPTIONAL,failInfoPKIFailureInfoOPTIONAL}6.2.4證書標(biāo)識(shí)CertId數(shù)據(jù)結(jié)構(gòu)用于鑒別特定的證書。CertId的語法見下:CertID::=SEQUENCE{hashAlgorithmissuerNameHashAlgorithmIdentifier,OCTETSTRING,GB/T19714—202X--發(fā)布者DN的雜湊值issuerKeyHash--發(fā)布者公鑰的雜湊值serialNumber}6.2.5發(fā)布根CA公鑰OCTETSTRING,CertificateSerialNumber每個(gè)根CA應(yīng)能夠發(fā)布其當(dāng)前公鑰,本文件定義了支持這種方法的數(shù)據(jù)結(jié)構(gòu)。一般可通過兩種方法發(fā)布根CA系統(tǒng)的公鑰:一種是CA系統(tǒng)直接發(fā)布其自簽名證書;另外一種是通過目錄服務(wù)發(fā)布,CA系統(tǒng)同時(shí)發(fā)布該自簽名證書的雜湊值,以便允許驗(yàn)證CA系統(tǒng)證書的完整性。OOBCert::=Certificate該證書中的值域有如下限制:——證書應(yīng)是自簽名的(即,簽名可以用SubjectPublicKeyInfo中的值來驗(yàn)證);——主體字段和簽發(fā)者字段的值應(yīng)完全相同;——如果主體字段為空,則主體可替換名和簽發(fā)者可替換名擴(kuò)展項(xiàng)須同時(shí)存在,并且具有完全相同——所有其它擴(kuò)展項(xiàng)的值應(yīng)符合自簽名證書的要求(比如,主體和簽發(fā)者的密鑰標(biāo)識(shí)須完全相同)。OOBCertHash::=SEQUENCE{hashAlg[0]AlgorithmIdentifierOPTIONAL,certId[1]CertIdOPTIONAL,hashValBITSTRING--hashVal是對(duì)由certID所標(biāo)識(shí)的自簽名證書進(jìn)行運(yùn)算得出的值,--其目的在與任何安全獲取到該雜湊值的用戶都能驗(yàn)證該CA系統(tǒng)的自簽名證書}6.2.6歸檔選項(xiàng)請(qǐng)求者可使用PKIArchiveOptions結(jié)構(gòu)體來表明要求PKI歸檔某私鑰。PKIArchiveOptions的語法見下:PKIArchiveOptions::=CHOICE{encryptedPrivKey[0]SM2EnvelopedKey,--私鑰keyGenParameters[1]KeyGenParameters,--允許重新產(chǎn)生私鑰的參數(shù)archiveRemGenPrivKey[2]BOOLEAN--如果發(fā)送者期望接收者歸檔其對(duì)應(yīng)請(qǐng)求所生成密鑰對(duì)中的私鑰,--則設(shè)置為真,如果不需要?dú)w檔,則設(shè)置為假}6.2.7發(fā)布信息請(qǐng)求者可使用PKIPublicationInfo結(jié)構(gòu)體來表明要求PKI發(fā)布證書。PKIPublicationInfo的語法見下:PKIPublicationInfo::=SEQUENCE{GB/T19714—202XactionINTEGER{dontPublish(0),pleasePublish(1)},pubInfosSEQUENCESIZE(1..MAX)OFSinglePubInfoOPTIONAL}如果action項(xiàng)為“dontPublish”(不發(fā)布),則pubInfos應(yīng)為空。6.2.8擁有證明結(jié)構(gòu)體為使RA和CA系統(tǒng)能夠有效驗(yàn)證終端實(shí)體和密鑰對(duì)間的綁定是否合法,終端實(shí)體可通過私鑰擁有證明POP證明自己擁有并能使用與申請(qǐng)證書的公鑰相對(duì)應(yīng)的私鑰。PKI在認(rèn)證交換時(shí)可自由選擇如何實(shí)現(xiàn)POP(例如本文件定義的方式或其它方式)。本文件允許終端實(shí)體向RA系統(tǒng)提供相關(guān)證明,RA系統(tǒng)收到證明并驗(yàn)證后向CA系統(tǒng)說明需要的證明已完成。某些策略可能不允許此情形(例如,CA系統(tǒng)是認(rèn)證過程中唯一可以驗(yàn)證POP的實(shí)體)。終端實(shí)體通過對(duì)一個(gè)數(shù)據(jù)簽名來證明擁有簽名密鑰的私鑰。為簽名密鑰對(duì)申請(qǐng)證書,可以使用POPOSigningKey結(jié)構(gòu)體來證明對(duì)簽名私鑰的擁有。POPOSigningKey的語法如下:POPOSigningKey::=SEQUENCE{poposkInput[0]POPOSigningKeyInputOPTIONAL,algorithmIdentifierAlgorithmIdentifier,signatureBITSTRING}其中:——poposkInput包含要簽名的數(shù)據(jù)。證書模板不包含公鑰值和主體名稱值時(shí)應(yīng)有此字段;——algorithmIdentifier標(biāo)識(shí)用于生成POP值的簽名算法和相關(guān)參數(shù);——signature包含生成的POP值。如果存在poposkInput,則根據(jù)poposkInput的DER編碼值計(jì)算簽名;如果沒有poposkInput,則根據(jù)certReq的DER編碼值計(jì)算簽名。本文件中POPOSigningKeyInput存在下面的語義約定:POPOSigningKeyInput::=SEQUENCE{authInfoCHOICE{sender[0]GeneralName,--取自PKIHeader(僅當(dāng)發(fā)送者的身份鑒別已通過某種方式建立之后使用)publicKeyMACPKMACValue--發(fā)送者當(dāng)前無已鑒別通過的通用名(GeneralName)存在時(shí)使用;publicKeyMAC包含一--個(gè)基于口令的對(duì)公鑰的DER編碼的MAC值(使用PKIHeader中的protectionAlg算法)publicKeySubjectPublicKeyInfo--取自CertTemplate}6.3特定操作數(shù)據(jù)結(jié)構(gòu)6.3.1初始化請(qǐng)求GB/T19714—202X初始化請(qǐng)求消息用于實(shí)體在PKI體系中的最初初始化。一個(gè)初始化請(qǐng)求消息的PKIBody包含的是一個(gè)CertReqMessages數(shù)據(jù)結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體詳細(xì)說明了所請(qǐng)求的一個(gè)或多個(gè)證書。利用以下數(shù)據(jù)結(jié)構(gòu)來進(jìn)行多個(gè)證書的申請(qǐng)時(shí),在具體實(shí)現(xiàn)上有多種不同的方式,常見的一種實(shí)現(xiàn)方式見附錄A.5。CertReqMessages::=SEQUENCESIZE(1..MAX)OFCertReqMsgCertReqMsg::=SEQUENCE{certReqCertRequest,popProofOfPossessionOPTIONAL,regInfoSEQUENCESIZE(1..MAX)OFAttributeTypeAndValueOPTIONAL}CertRequest::=SEQUENCE{certReqIdINTEGER,IDformatchingrequestandreplycertTemplateCertTemplate,SelectedfieldofcerttobeissuedcontrolsControlsOPTIONALAttributesaffectingissuance}Controls::=SEQUENCESIZE(1..MAX)OFAttributeTypeAndValueAttributeTypeAndValue::=SEQUENCE{typeAttributeTypeOBJECTIDENTIFIER,valueAttributeValueANYDEFINEDBYtype}ProofOfPossession::=CHOICE{raVerified[0]NULL,--當(dāng)RA系統(tǒng)已經(jīng)驗(yàn)證了請(qǐng)求者擁有相應(yīng)私鑰時(shí)使用signature[1]POPOSigningKey,--用戶產(chǎn)生證書密鑰對(duì),并申請(qǐng)簽名證書時(shí)使用keyEncipherment[2]POPOPrivKey,--本文件不使用該域keyAgreement[3]POPOPrivKey--本文件不使用該域}6.3.2初始化響應(yīng)一個(gè)初始化響應(yīng)消息的PKIBody包含的是一個(gè)CertRepMessage數(shù)據(jù)結(jié)構(gòu)體。利用以下數(shù)據(jù)結(jié)構(gòu)來進(jìn)行多個(gè)證書的響應(yīng)時(shí),在具體實(shí)現(xiàn)上有多種不同的方式,一種常見的實(shí)現(xiàn)方式見附錄A.5。CertRepMessage::=SEQUENCE{caPubs[1]SEQUENCESIZE(1..MAX)OFCertificateOPTIONAL,responseSEQUENCEOFCertResponse}CertResponse::=SEQUENCE{certReqIdINTEGER,--將該響應(yīng)與相應(yīng)的請(qǐng)求進(jìn)行匹配(請(qǐng)求中未指定certReqId值時(shí),取值為-1)statusPKIStatusInfo,certifiedKeyPairCertifiedKeyPairOPTIONAL,rspInfoOCTETSTRINGOPTIONALGB/T19714—202X--與[CRMF]中CertReqMsg的regInfo字段定義的id-regInfo-asciiPairs相似}CertifiedKeyPair::=SEQUENCE{certOrEncCertCertOrEncCert,privateKey[0]SM2EnvelopedKeyOPTIONAL,publicationInfo[1]PKIPublicationInfoOPTIONAL}CertOrEncCert::=CHOICE{certificate[0]Certificate,encryptedCert[1]SM2EnvelopedKey}6.3.3認(rèn)證請(qǐng)求當(dāng)已存在于PKI體系中的實(shí)體想獲取額外的證書時(shí)使用此消息,數(shù)據(jù)結(jié)構(gòu)同6.3.1節(jié)。6.3.4認(rèn)證響應(yīng)同6.3.2節(jié)。6.3.5密鑰更新請(qǐng)求此消息用于請(qǐng)求更新已存在的證書(未作廢且未過期),數(shù)據(jù)結(jié)構(gòu)同6.3.1。該操作也被稱作“證書更新”操作,更新證書就是使用新的公鑰或以原有公鑰的證書替換現(xiàn)有證書。6.3.6密鑰更新響應(yīng)同6.3.2。6.3.7密鑰恢復(fù)請(qǐng)求此消息用于請(qǐng)求恢復(fù)密鑰,數(shù)據(jù)結(jié)構(gòu)同6.3.1節(jié)。6.3.8密鑰恢復(fù)響應(yīng)KeyRecRepContent::=SEQUENCE{statusPKIStatusInfo,newSigCert[0]CertificateOPTIONAL,caCerts[1]SEQUENCESIZE(1..MAX)OFCertificateOPTIONAL,keyPairHist[2]SEQUENCESIZE(1..MAX)OFCertifiedKeyPairOPTIONAL}6.3.9撤銷請(qǐng)求RevReqContent::=SEQUENCEOFRevDetailsRevDetails::=SEQUENCE{certDetailsCertTemplate,--允許請(qǐng)求者為請(qǐng)求作廢的證書指定盡可能多的信息(如:在serialNumber未知的情況下)revocationReasonReasonFlagsOPTIONAL,--請(qǐng)求作廢的原因GB/T19714—202XbadSinceDateGeneralizedTimeOPTIONAL,crlEntryDetailsExtensionsOPTIONAL--請(qǐng)求的crlEntryExtensions}ReasonFlags::=BITSTRING{Unused(0),keyCompromise(1),CACompromise(2),affiliationChanged(3),superseded(4),cessationOfOperation(5),certificateHold(6)}6.3.10撤銷響應(yīng)RevRepContent::=SEQUENCE{statusSEQUENCESIZE(1..MAX)OFPKIStatusInfo,--與RevReqContent中的次序相同revCerts[0]SEQUENCESIZE(1..MAX)OFCertIdOPTIONAL,--請(qǐng)求作廢的證書的ID(與status次序相同)crls[1]SEQUENCESIZE(1..MAX)OFCertificateListOPTIONAL--由此產(chǎn)生的CRLs(可能不止一個(gè))}6.3.11證書公告此結(jié)構(gòu)體可以用于公告證書的存在。CertAnnContent::=Certificate6.3.12撤銷公告當(dāng)CA系統(tǒng)已撤銷或?qū)⒊蜂N一個(gè)證書時(shí),可以利用以下數(shù)據(jù)結(jié)構(gòu)公告該事件。RevAnnContent::=SEQUENCstatusPKIStatus,certIdCertId,willBeRevokedAtGeneralizedTime,badSinceDateGeneralizedTime,crlDetailsExtensionsOPTIONAL}willBeRevokedAt字段表示一個(gè)新的條目將加入到相應(yīng)CRLs的時(shí)間。6.3.13CRL公告當(dāng)CA系統(tǒng)簽發(fā)了一個(gè)新的CRL(或一批CRL)時(shí),可以使用以下數(shù)據(jù)結(jié)構(gòu)宣布該事件。CRLAnnContent::=SEQUENCEOFCertificateList6.3.14PKI確認(rèn)GB/T19714—202X該消息在協(xié)議數(shù)據(jù)交換中可作為最后的PKIMessage,此確認(rèn)消息為可選的。由于PKIHeader中已包含所有必需的消息,所以其內(nèi)容為空。PKIConfirmContent::=NULL6.3.15證書確認(rèn)實(shí)體使用此數(shù)據(jù)結(jié)構(gòu)向PKI發(fā)送確認(rèn)接受或拒絕證書的消息,此消息為可選的。CertConfirmContent::=SEQUENCEOFCertStatuscertHashOCTETSTRING,certReqIdINTEGER,statusInfoPKIStatusInfoOPTIONAL,hashAlg[0]AlgorithmIdentifier{DIGEST-ALGORITHM,{...}}OPTIONAL}可選字段hashAlg的使用以便為待確認(rèn)證書的signatureAlgorithm字段中未指定雜湊算法時(shí)顯式指定雜湊算法,用于計(jì)算certHash值。6.3.16PKI通用消息InfoTypeAndValue::=SEQUENCE{infoTypeOBJECTIDENTIFIER,infoValueANYDEFINEDBYinfoTypeOPTIONAL}InfoTypeAndValue的內(nèi)容包含但不限于下列值:——{CAProtEncCert={id-it1},Certificate};——{SignKeyPairTypes={id-it2},SEQUENCEOFAlgorithmIdentifier};——{EncKeyPairTypes={id-it3},SEQUENCEOFAlgorithmIdentifier};——{PreferredSymmAlg={id-it4},AlgorithmIdentifier};GenMsgContent::=SEQUENCEOFInfoTypeAndValue如果使用PKI消息來請(qǐng)求和提供PKI相應(yīng)的信息,那么請(qǐng)求應(yīng)使用GenMsg消息,響應(yīng)使用GenRep消息(見6.3.17),錯(cuò)誤使用Error錯(cuò)誤消息(見6.3.18)。上述消息使用基于共享密鑰信息的MAC(如:PasswordBasedMAC)或者其它認(rèn)證方法(如果終端實(shí)體擁有證書)來進(jìn)行保護(hù)。在證書撤銷請(qǐng)求中使用共享密鑰信息的安全機(jī)制參見附錄E。關(guān)于InfoTypeAndValue內(nèi)容更多的細(xì)節(jié)見后續(xù)章節(jié),語法描述參見附錄F。6.3.17PKI通用響應(yīng)GenRepContent::=SEQUENCEOFInfoTypeAndValue--接收方可以忽略其不能識(shí)別的OID6.3.18錯(cuò)誤消息ErrorMsgContent::=SEQUENCE{pKIStatusInfoPKIStatusInfo,GB/T19714—202XerrorCodeINTEGEROPTIONAL,errorDetailsPKIFreeTextOPTIONAL}6.3.19輪詢請(qǐng)求和響應(yīng)以下數(shù)據(jù)結(jié)構(gòu)旨在處理客戶端需要輪詢服務(wù)端以確定未完成交易的狀態(tài)的情況(即當(dāng)收到“等待”的PKI狀態(tài)時(shí))。輪詢請(qǐng)求和響應(yīng)消息為可選的消息。PollReqContent::=SEQUENCEOFSEQUENCE{certReqIdINTEGER}PollRepContent::=SEQUENCEOFSEQUENCE{certReqIdINTEGER,checkAfterINTEGER,--以秒計(jì)的時(shí)間數(shù)reasonPKIFreeTextOPTIONAL}6.3.20證書凍結(jié)證書凍結(jié)請(qǐng)求與響應(yīng)數(shù)據(jù)結(jié)構(gòu)同6.3.9節(jié)和6.3.10節(jié)。6.3.21證書解凍證書解凍請(qǐng)求與響應(yīng)數(shù)據(jù)結(jié)構(gòu)同6.3.9節(jié)和6.3.10節(jié)。7證書管理協(xié)議7.1總則PKI各實(shí)體之間的交互通常基于證書管理協(xié)議來實(shí)現(xiàn),也可根據(jù)實(shí)際情況進(jìn)行不同方式的實(shí)現(xiàn)(如終端實(shí)體與RA系統(tǒng)之間的協(xié)議)。關(guān)于密鑰產(chǎn)生的地點(diǎn)有兩種可能:簽名密鑰由終端實(shí)體產(chǎn)生,加密密鑰由KM系統(tǒng)集中產(chǎn)生。7.2終端實(shí)體與證書及CRL存儲(chǔ)發(fā)布與狀態(tài)查詢系統(tǒng)間相關(guān)協(xié)議7.2.1協(xié)議概述終端實(shí)體與證書及CRL存儲(chǔ)發(fā)布與狀態(tài)查詢系統(tǒng)間的協(xié)議可包括LDAP、OCSP方式。a)LDAP方式LDAP目錄可以用來存儲(chǔ)多種信息,作為PKI的核心組件其作用主要用來存放證書與證書撤銷列表,供用戶查詢。b)OCSP方式OCSP作為查詢CRL的替代方法或補(bǔ)充方法,需實(shí)時(shí)獲得數(shù)字證書撤銷狀態(tài)相關(guān)信息時(shí),其是不可或缺的。OCSP能使應(yīng)用程序獲得某個(gè)目標(biāo)證書的撤銷狀態(tài),OCSP可提供比檢查CRL更實(shí)時(shí)的撤銷狀態(tài)信息,還可提供附加的狀態(tài)信息。OCSP客戶端向OCSP響應(yīng)器發(fā)出一個(gè)狀態(tài)請(qǐng)求時(shí),需暫停接受待驗(yàn)證的證書,直到響應(yīng)器提供響應(yīng)為止。7.2.2終端實(shí)體與證書及CRL存儲(chǔ)發(fā)布與狀態(tài)查詢系統(tǒng)間協(xié)議消息終端實(shí)體與LDAP服務(wù)間相關(guān)協(xié)議GB/T19714—202X.1LDAP消息數(shù)據(jù)結(jié)構(gòu)LDAP消息協(xié)議數(shù)據(jù)單元LDAPMessage如下:LDAPMessage::=SEQUENCE{messageIDMessageID,protocolOpCHOICE{bindRequestBindRequest,bindResponseBindResponse,unbindRequestUnbindRequest,searchRequestSearchRequest,searchResEntrySearchResultEntry,searchResDoneSearchResultDone,searchResRefSearchResultReference,modifyRequestModifyRequest,modifyResponseModifyResponse,addRequestAddRequest,addResponseAddResponse,delRequestDelRequest,delResponseDelResponse,modDNRequestModifyDNRequest,modDNResponseModifyDNResponse,compareRequestCompareRequest,compareResponseCompareResponse,abandonRequestAbandonRequest,extendedReqExtendedRequest,extendedRespExtendedResponse,...,intermediateResponseIntermediateResponse},controls[0]ControlsOPTIONAL}MessageID::=INTEGER(0..maxInt)maxIntINTEGER::=2147483647--(231-1)--LDAP消息(LDAPMessage)的功能是給所有的協(xié)議交換定義一個(gè)包含通用字段的封裝?除了在上面定義的LDAPMessage,在定義協(xié)議操作時(shí),也使用下面這些定義?LDAPString::=OCTETSTRING--UTF-8編碼,[ISO10646]字符LDAPString是一種符號(hào)上的方便表示,其表明盡管LDAPString是一種用字符串類型來編碼的串,但實(shí)際上該串能使用的合法字符集由IA5字符集限定?LDAPDN::=LDAPStringRelativeLDAPDN::=LDAPString一個(gè)LDAPDN和一個(gè)RelativeLDAPDN被獨(dú)立地定義,分別代表一個(gè)標(biāo)識(shí)名和一個(gè)相對(duì)標(biāo)識(shí)名:AttributeDescription::=LDAPString--被約束到RFC4512的<attributedescription>屬性描述的定義和編碼規(guī)則見RFC4512的2.5?AttributeValue::=OCTETSTRINGGB/T19714—202X屬性值定義對(duì)應(yīng)具體的上下文,可參見RFC4517和其它文檔。AttributeValueAssertion::=SEQUENCE{attributeDescassertionValue}AttributeDescription,AssertionValueAttributeValueAssertion的類型定義與X.500目錄標(biāo)準(zhǔn)類似,包含一個(gè)屬性描述和匹配規(guī)則的聲稱值。AssertionValue::=OCTETSTRINGAssertionValue的內(nèi)容取決于LDAP操作的上下文。LDAPResult::=SEQUENCE{resultCodeENUMERATED{Success(0),operationsError(1),protocolError(2),timeLimitExceeded(3),sizeLimitExceeded(4),compareFalse(5),compareTrue(6),authMethodNotSupported(7),strongAuthRequired(8),--9reserved--referral(10),adminLimitExceeded(11),unavailableCriticalExtension(12),confidentialityRequired(13),saslBindInProgress(14),noSuchAttribute(16),undefinedAttributeType(17),inappropriateMatching(18),constraintViolation(19),attributeOrValueExists(20),invalidAttributeSyntax(21),--22-31unused--noSuchObject(32),aliasProblem(33),invalidDNSyntax(34),--35reservedforundefinedisLeaf--aliasDereferencingProblem(36),--37-47unused--inappropriateAuthentication(48),invalidCredentials(49),insufficientAccessRights(50),GB/T19714—202Xunavailable(52),unwillingToPerform(53),loopDetect(54),--55-63unused--namingViolation(64),bjectClassViolation(65),notAllowedOnNonLeaf(66),notAllowedOnRDN(67),entryAlreadyExists(68),objectClassModsProhibited(69),--70reservedforCLDAP--affectsMultipleDSAs(71),--72-79unused--...},matchedDNLDAPDN,errorMessageLDAPString,referral[3]ReferralOPTIONAL}LDAPResult是從服務(wù)端返回給客戶端的結(jié)構(gòu),用以指明操作成功或失敗?對(duì)不同的請(qǐng)求,服務(wù)端應(yīng)返回包含LDAPResult結(jié)構(gòu)中的不同域的回應(yīng)給客戶端,來指明協(xié)議操作請(qǐng)求的最終狀態(tài)?具體含義見RFC4511的附錄A,對(duì)應(yīng)枚舉值的擴(kuò)展定義見RFC4520的3.8?對(duì)服務(wù)端來說,此結(jié)構(gòu)中的errorMessage域應(yīng)該用來返回一個(gè)包含可讀文本的錯(cuò)誤診斷的ASCII串給客戶端?由于這個(gè)錯(cuò)誤診斷不是標(biāo)準(zhǔn)的,在實(shí)現(xiàn)中不應(yīng)該依賴這些返回值?如果服務(wù)端不返回一個(gè)文本的錯(cuò)誤診斷,LDAPResult結(jié)構(gòu)中的errorMessage應(yīng)該包含一個(gè)長(zhǎng)度為零的字符串?對(duì)于noSuchObject,aliasProblem,invalidDNSyntax,以及aliasDereferencingProblem這些result-Codes,相應(yīng)的matchedDN域應(yīng)該設(shè)為在DIT中最為匹配的條目,而且應(yīng)該是所提供名字的簡(jiǎn)短格式?或者,如果別名已被丟棄,應(yīng)該返回結(jié)果名字?在其他情況下,matchedDN域都應(yīng)該設(shè)為NULLDN(即長(zhǎng)度為零的字符串)?客戶端和服務(wù)端之間的協(xié)議內(nèi)容,包括綁定、解除綁定、查詢、插入、修改、刪除、丟棄等?依據(jù)規(guī)定,用戶只能訪問從LDAP,所以LDAP必須拒絕用戶的插入、修改、刪除功能?協(xié)議中通用部分介紹如下:綁定操作的功能是在客戶端和服務(wù)端之間進(jìn)行初始化,并允許服務(wù)端對(duì)客戶端進(jìn)行認(rèn)證?綁定請(qǐng)求定義如下:BindRequest::=[APPLICATION0]SEQUENCE{versionINTEGER(1..127),nameLDAPDN,AuthenticationAuthenticationChoice}AuthenticationChoice::=CHOICE{simple[0]OCTETSTRING,--1和2保留sasl[3]SaslCredentials...}GB/T19714—202XSaslCredentials::=SEQUENCE{mechanismLDAPString,CredentialsOCTETSTRINGOPTIONAL}綁定請(qǐng)求的參數(shù)是:——版本:一個(gè)版本號(hào)指定本協(xié)議所使用的版本?本文檔描述的是LDAP版本3?由于沒有版本選擇談判,客戶端把這個(gè)參數(shù)設(shè)為它所希望的值;如果服務(wù)端不支持對(duì)應(yīng)的版本,應(yīng)返回結(jié)果碼是“protocolError”的BindResponse;——名稱:客戶端希望綁定的目錄對(duì)象的名稱?這個(gè)域可以是空值(一個(gè)長(zhǎng)度為零的字符串),用來表示匿名綁定或適用SASL認(rèn)證時(shí);——認(rèn)證:認(rèn)證用的信息。認(rèn)證類型的擴(kuò)展定義見RFC4520的3.7?如果服務(wù)端不支持客戶端提供的選項(xiàng),應(yīng)返回結(jié)果碼是“authMethodNotSupported”的BindResponse?綁定操作需要如下定義的綁定回應(yīng):BindResponse::=[APPLICATION1]SEQUENCE{COMPONENTSOFLDAPResult,serverSaslCreds[7]OCTETSTRINGOPTIONAL}放棄綁定操作的功能是臨時(shí)終止一個(gè)協(xié)議會(huì)話,放棄綁定操作定義如下:UnbindRequest::=[APPLICATION2]NULL在收到一個(gè)客戶端的放棄綁定請(qǐng)求后,服務(wù)端可以假設(shè)發(fā)送請(qǐng)求的客戶端已終止該會(huì)話,所有已收到的還未處理的請(qǐng)求可以被丟棄?丟棄操作的功能是允許客戶端請(qǐng)求服務(wù)端終止一個(gè)已發(fā)出未完成的操作請(qǐng)求?丟棄操作定義如下:AbandonRequest::=[APPLICATION16]MessageID在丟棄操作中沒有定義相應(yīng)的回應(yīng)。在發(fā)送一個(gè)丟棄操作后,一個(gè)客戶端可能期望丟棄請(qǐng)求中包含的消息ID標(biāo)識(shí)的操作已被丟棄?如果服務(wù)端在把一個(gè)查找操作的回應(yīng)發(fā)送給客戶端時(shí),收到對(duì)該查找操作的丟棄請(qǐng)求,服務(wù)端應(yīng)停止發(fā)送回應(yīng),并立即終止該查找操作?Abandon、Bind、Unbind和StartTLS操作不能被丟棄?.2證書查詢與下載協(xié)議查找操作允許客戶端請(qǐng)求代表他的服務(wù)端進(jìn)行一次查找?查找請(qǐng)求定義如下:SearchRequest::=[APPLICATION3]SEQUENCE{baseObjectLDAPDN,scopeENUMERATED{baseObject(0),singleLevel(1),wholeSubtree(2)derefAliasesENUMERATED{neverDerefAliases(0),derefInSearching(1),derefFindingBaseObj(2),derefAlways(3)GB/T19714—202XsizeLimitINTEGER(0..maxInt),timeLimitINTEGER(0..maxInt),attrsOnlyBOOLEAN,filterFilter,attributesAttributeSelection}AttributeSelection::=SEQUENCEOFselectorLDAPStringand[0]SETSIZE(1..MAX)OFfilterFilter,or[1]SETSIZE(1..MAX)OFfilterFilter,not[2]Filter,equalityMatch[3]Attribu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論