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