摘 要: 提出了一種基于XKMS的證書驗(yàn)證機(jī)制,設(shè)計(jì)了集成在XKMS服務(wù)中的證書驗(yàn)證服務(wù)模塊,描述了證書路徑驗(yàn)證算法,改進(jìn)了XKMS-OCSP機(jī)制,并給出了證書驗(yàn)證的過程。
關(guān)鍵詞: 公鑰基礎(chǔ)設(shè)施 證書驗(yàn)證 XML密鑰管理規(guī)范(XKMS) 在線證書狀態(tài)協(xié)議
公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)是一種應(yīng)用公鑰密碼技術(shù)提供安全服務(wù)、具有普適性的安全基礎(chǔ)設(shè)施。目前已得到成熟定義和廣泛應(yīng)用的PKI技術(shù)標(biāo)準(zhǔn)有PKCS系列、ITU/IEO-T X.509、PKIX系列及WPKI標(biāo)準(zhǔn)等,在此統(tǒng)稱為傳統(tǒng)PKI(Traditional PKI,TPKI)。TPKI基于抽象語法符號ASN.1描述,采用BER/DER進(jìn)行編碼。實(shí)踐表明TPKI存在部署復(fù)雜繁瑣、成本高昂、互聯(lián)互通困難等問題。針對上述問題,W3C推出了XML密鑰管理規(guī)范[1](XML Key Management Specification,XKMS)。通過實(shí)現(xiàn)XKMS與TPKI的無縫連接,可進(jìn)一步推廣PKI技術(shù)的應(yīng)用,而應(yīng)用的關(guān)鍵問題之一是解決基于XKMS的證書驗(yàn)證。
1 XML密鑰管理規(guī)范
XKMS為用戶提供新一代的密鑰管理服務(wù),降低了客戶端應(yīng)用程序開發(fā)和部署的復(fù)雜性。它通過與TPKI服務(wù)進(jìn)行接口,為網(wǎng)絡(luò)應(yīng)用提供了可以互操作的安全基礎(chǔ)設(shè)施。XKMS包括2個部分:(1)XML密鑰信息服務(wù)規(guī)范(XML Key Information Service Specification,XKISS),定義了密鑰定位和密鑰驗(yàn)證2種服務(wù),為XML應(yīng)用程序提供密鑰處理服務(wù),簡化了XML應(yīng)用程序的負(fù)擔(dān)。(2)XML密鑰注冊服務(wù)規(guī)范(XML Key Registration Service Specification,XKRSS),為XML應(yīng)用程序密鑰對注冊提供了一種機(jī)制,并定義了密鑰的注冊、重新發(fā)布、撤銷及恢復(fù)等服務(wù)。
2 基于XKMS的證書驗(yàn)證機(jī)制
2.1 基于TPKI的證書驗(yàn)證
TPKI 安全體系使用數(shù)字證書綁定對象(服務(wù)、資源、應(yīng)用)的密鑰與身份標(biāo)識提供認(rèn)證和授權(quán)服務(wù)。在使用證書之前,必須使用證書撤銷列表(Certificates Revocation Lists,CRL)、在線證書狀態(tài)協(xié)議[2](Online Certificate Status Protocol,OCSP)和簡單證書驗(yàn)證協(xié)議[3](Simple Certificate Validation Protocol,SCVP)等機(jī)制對其進(jìn)行有效性驗(yàn)證。證書驗(yàn)證包括如下內(nèi)容:(1)證書中CA數(shù)字簽名的有效性。(2)證書完整性。(3)證書有效期。(4)證書是否被撤銷。(5)證書的使用方式與任何聲明的策略/使用限制的一致性。(6)證書的用途是否與創(chuàng)建它的目的相符。
具體應(yīng)用時采用的驗(yàn)證策略不盡相同,但大多數(shù)策略都被設(shè)計(jì)成對盡可能多的內(nèi)容進(jìn)行驗(yàn)證。
2.2 基于XKMS的證書驗(yàn)證機(jī)制設(shè)計(jì)
目前XKMS還不可能取代TPKI,通過實(shí)施二者的無縫連接可進(jìn)一步推廣PKI技術(shù)的應(yīng)用,而實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵問題之一是解決基于XKMS的證書驗(yàn)證。集成證書驗(yàn)證服務(wù)模塊(Certification Validation Service Module,CVSM)的XKMS服務(wù)系統(tǒng)架構(gòu)如圖1所示。CVSM使用TPKI的OCSP、SCVP等機(jī)制響應(yīng)客戶端的證書驗(yàn)證請求。
CVSM包括了6個子模塊(圖1虛線框部分)。其中,證書路徑驗(yàn)證模塊(Certificate Path Validation Module,CPVM)、證書狀態(tài)檢查模塊(Certificate Status Check Module,CSCM)和證書路徑建立模塊(Certificate Path Construction Module,CPCM)用于證書路徑驗(yàn)證;證書路徑管理模塊和證書/CRLs控制器模塊用于提高證書驗(yàn)證效率;證書策略管理模塊則用于管理證書策略以及策略映射信息。下面具體介紹其中3個重要模塊。
2.2.1 證書路徑驗(yàn)證模塊
CPVM負(fù)責(zé)對主體身份、主體公鑰和可能在證書路徑中提交的主體屬性的綁定等項(xiàng)進(jìn)行驗(yàn)證,從而確定路徑中的證書是否已被撤銷,證書路徑驗(yàn)證流程如圖2所示。具體步驟如下:
(1)客戶端產(chǎn)生證書路徑驗(yàn)證請求,請求中可以包括客戶的信任錨或驗(yàn)證策略。(2)證書路徑驗(yàn)證有2種情況:一種是服務(wù)器在數(shù)據(jù)庫的證書路徑表中檢索到客戶需要驗(yàn)證的證書路徑,服務(wù)器返回路徑有效的驗(yàn)證結(jié)果;另一種情況是服務(wù)器檢索證書路徑失敗,此時服務(wù)器獲取請求中包含的客戶信任錨并調(diào)用CPCM來建立以客戶信任錨為起點(diǎn)的證書路徑。若證書路徑建立成功,則檢查客戶請求中是否包含驗(yàn)證策略約束。如果包含,則服務(wù)器端使用驗(yàn)證策略約束來驗(yàn)證證書路徑,并且調(diào)用CSCM檢查證書狀態(tài);否則,服務(wù)器端只需檢查證書狀態(tài)即可。(3)如果上述第二種情況成功執(zhí)行而且獲得了經(jīng)過驗(yàn)證的證書路徑,則將此證書路徑保存到證書路徑數(shù)據(jù)庫中供以后查詢;否則,服務(wù)器端處理異常操作,產(chǎn)生一個失敗響應(yīng),并將失敗原因記錄到日志文件。
2.2.2 證書狀態(tài)檢查模塊
CSCM進(jìn)行證書狀態(tài)檢查時,首先連接系統(tǒng)的證書/CRLs庫。然后檢索客戶證書:若檢索成功,則查看客戶證書的狀態(tài)標(biāo)識位,若標(biāo)識位值為“有效”,調(diào)用CPVM對客戶證書路徑的有效性進(jìn)行驗(yàn)證,否則將包含“證書無效”的應(yīng)答消息返回給客戶端;若檢索失敗,則通過TPKI實(shí)現(xiàn)證書狀態(tài)檢查。具體做法如下。(1)獲取證書:與TPKI 交互獲取客戶證書。(2)檢查證書狀態(tài):使用CRL/OCSP對獲取的客戶證書進(jìn)行狀態(tài)檢查。(3)將客戶證書存入系統(tǒng)的證書/CRLs庫。(4)在庫中記錄客戶證書的狀態(tài),以便下次進(jìn)行證書狀態(tài)檢查時使用。
2.2.3 證書路徑建立模塊
證書路徑的建立在驗(yàn)證過程中完成。服務(wù)器調(diào)用CPCM按照嚴(yán)格的信任層次建立以客戶的信任錨為起點(diǎn)的證書路徑。
2.3 XKMS-OCSP機(jī)制改進(jìn)
Moon[4]提出了一種名為XKMS-OCSP的機(jī)制,即采用比基于復(fù)雜數(shù)學(xué)問題的數(shù)字簽名算法至少快10 000倍的單向散列函數(shù)對"預(yù)生成"應(yīng)答進(jìn)行簽名(附散列值)。對該機(jī)制研究后發(fā)現(xiàn)存在以下不足:(1)沒有給出具體的實(shí)現(xiàn)方式。(2)根據(jù)應(yīng)答中包含的時間來更新散列值不實(shí)用。因此,本文提出改進(jìn)XKMS-OCSP機(jī)制實(shí)現(xiàn)快速數(shù)字簽名的措施。核心思想是:OCSP 服務(wù)將“預(yù)生成”的“散列鏈”中的散列值作為其數(shù)字簽名附加到證書驗(yàn)證應(yīng)答消息中,確保應(yīng)答消息的真實(shí)性和有效性。詳細(xì)描述如下:OCSP服務(wù)執(zhí)行單向散列函數(shù)式(1)和式(2)生成如式(3)和式(4)所示的“有效散列鏈”或“無效散列鏈”,并存入數(shù)據(jù)庫備用。
其中:0≤i≤d,d為自然數(shù)。
這里,散列初值T和F是2個秘密隨機(jī)數(shù),其值僅為OCSP服務(wù)(或代理)所知。每個散列鏈中包含了d+1個散列值,每個散列值 與OCSP服務(wù)所生成的應(yīng)答消息一一對應(yīng)。
如果證書路徑驗(yàn)證結(jié)果為有效,則OCSP服務(wù)從數(shù)據(jù)庫中取出如(3)式所示的有效散列鏈所含的散列值,構(gòu)建OCSP服務(wù)應(yīng)答消息,發(fā)送給XKMS服務(wù)。XKMS服務(wù)通過計(jì)算最多d 次散列函數(shù)驗(yàn)證應(yīng)答結(jié)果,判定證書有效。如果證書路徑驗(yàn)證結(jié)果為無效,則須從數(shù)據(jù)庫中取出如(4)式所示的無效散列鏈所含的散列值構(gòu)建應(yīng)答消息。
鑒于單向散列函數(shù)執(zhí)行的高效性,同時為了防止OCSP服務(wù)重放攻擊,可以制定以下散列鏈管理策略:散列鏈中的每個散列值只能使用一次,使用后即被刪除,散列鏈長度隨即減1。當(dāng)散列鏈長度為0時,OCSP服務(wù)產(chǎn)生新的秘密隨機(jī)數(shù),再生成新的散列鏈備用。發(fā)布散列鏈的最后散列值作為驗(yàn)證散列鏈的公鑰。
由于單向散列函數(shù)具有安全性和計(jì)算不可逆性等特點(diǎn),而且其破譯或求解難度是指數(shù)級的,所以想從Td推導(dǎo)出T使Td=h(T)是極其困難的,而T通常由OCSP服務(wù)加密存儲,因此,一個OCSP應(yīng)答的簽名Td是不可偽造的。同理可得,Td-1,Td-2,……T0(即h2(T),h3(T),……hd+1(T))都是不可偽造的,這就保證了OCSP服務(wù)簽名的有效性。為了提高效率,OCSP服務(wù)提供者為每個在其注冊的XKMS服務(wù)器生成一對散列鏈。散列公鑰的更新發(fā)布可以使用傳統(tǒng)或特定的簽名機(jī)制。綜上所述,使用XKMS-OCSP機(jī)制實(shí)現(xiàn)數(shù)字簽名具有高效、靈活、安全和可靠等優(yōu)點(diǎn)。
2.4 基于XKMS的證書驗(yàn)證機(jī)制實(shí)現(xiàn)
下面通過實(shí)例給出證書驗(yàn)證的實(shí)現(xiàn)過程。XKMS服務(wù)收到用戶Bob提交的驗(yàn)證Alice證書的請求后,調(diào)用OCSP服務(wù)(圖1中驗(yàn)證協(xié)議模塊)進(jìn)行驗(yàn)證。Bob發(fā)送的XML格式的請求描述如下:
OCSP 服務(wù)收到驗(yàn)證請求后,先進(jìn)行驗(yàn)證處理,再對返回的應(yīng)答消息簽名。在進(jìn)行驗(yàn)證之前,OCSP服務(wù)必須做到:與XKMS服務(wù)交叉認(rèn)證、相互注冊;采用改進(jìn)的XKMS-OCSP機(jī)制生成2條散列鏈。證書驗(yàn)證流程如下:
(1)接收XKMS服務(wù)發(fā)送的驗(yàn)證請求,調(diào)用CPVM驗(yàn)證證書的有效性。
(2)根據(jù)驗(yàn)證結(jié)果生成與驗(yàn)證請求類似的XML格式的驗(yàn)證應(yīng)答<ValidateResult>,其中包含公鑰綁定<KeyBinding>、證書<ds:X509Certificate>、密鑰用法<KeyUsage>、證書驗(yàn)證狀態(tài)<Status>、證書驗(yàn)證理由<Valid-Reason>等元素。
(3)簽名應(yīng)答消息(即附加散列值)。
(4)發(fā)送應(yīng)答消息。
3 結(jié)束語
本文在介紹基于TPKI的證書驗(yàn)證的基礎(chǔ)上,給出了集成證書驗(yàn)證服務(wù)模塊的XKMS系統(tǒng)架構(gòu),以及對應(yīng)的證書路徑驗(yàn)證流程圖和證書驗(yàn)證實(shí)現(xiàn)算法,為XKMS客戶端與已部署的底層TPKI服務(wù)提供者之間進(jìn)行無縫連接提供了一種新的解決方案,有利于PKI的大規(guī)模部署。此外,還提出了改進(jìn)的XKMS-OCSP機(jī)制,具有高效、靈活、安全及可靠的特點(diǎn),對實(shí)際開發(fā)有一定的借鑒作用。
參考文獻(xiàn)
1 W3C Candidate Recommendation.XML Key Management Specification(XKMS) Version 2.0[EB/OL].http://www.w3.org/TR/2004/CR-xkms2-20040405.2004-04-05
2 X.509 Internet Public Key Infrastructure Online Certificate Status Protocol-OCSP.http://www.ietf.org/html.charters/pkix-charter.html,1999
3 Housley H,F(xiàn)ord W,Polk W.Internet X.509 Public Key Infrastructure Certificate and CRL Profile RFC3280. http://www.ietf.org/html.charters/pkix-charter.html,2002
4 Namje Park.Development of XKMS-Based Service Component for Using PKI in XML Web Services Environment. In:Computational Science and Its Applications- ICCSA 2004 International Conference,Assisi,Italy,2004