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