背景
隨著網際網路,特別是電子商務和電子政務的迅猛發展,如何有效地保障在開放的網路環境下信息的機密性、完整性、真實性和不可否認性引起了人們的高度關注。公鑰基礎設施(Public Key Infrastructure,PKI)是目前公認的解決大型網路環境下信息安全問題行之有效的方案。PKI是一種遵循標準的密鑰管理平台,它能夠為所有網路套用透明地提供採用加密和數字簽名等密碼服務所必需的密鑰和證書管理,實現和管理不同實體之間的信任關係。證書吊銷信息分發是PKI中的一個關鍵性操作,也是PKI所面臨的一大挑戰。在由MITRE公司提供的一份報告中指出,證書吊銷信息分發是運營大型PKI系統耗費成本最高的部分。此後,相繼提出了不少證書吊銷信息分發機制。在X.509標準中採納的是基於證書吊銷列表(Certificate Revocation List,CRL)和基於線上證書狀態協定(Online Certificate Status Protocol,OCSP)兩種。
在Compact CRL方案中,一方面過濾掉在PKI實際運行中不常使用的CRL一些選項;另一方面,對中CRL吊銷證書條目欄位重新編碼,CA簽發的每一個數字證書的狀態都對應到CRL中吊銷證書條目的一個比特位。從而大大減少了CRL的大小,節省了證書吊銷信息分發所需要的頻寬。
分發方案
與日常生活中的各種身份證件一樣,數字證書可能在過期之前變得無效,原因可能是密鑰介質丟失或用戶身份變更等。CA需要及時地對此類證書做出吊銷的處理,並將吊銷證書放入CRL中予以公布,以便用戶查詢證書的有效性。當用戶接收到一個數字證書時,他必須檢查這個數字證書是否已經吊銷或者掛起。證書吊銷信息更新和發布的頻率非常重要,如果一個證書已經被撤消而用戶仍然繼續使用,將會造成極大的安全隱患。兩次證書吊銷信息發布的時間間隔稱為吊銷延遲,在證書策略中規定吊銷延遲。證書吊銷信息分發的方法主要有兩種:一種方法是利用周期性發布機制,如CRL、分段和CRLDeltaCRL等;另一種方法不涉及CRL,例如OCSP和鏈Hash方法。
CRL
CRL是一個具有時間戳的列表,在其中列出了所有已經吊銷或掛起的數字證書信息。在CRL中包含本次更新日期和下次更新日期兩個欄位,用戶可由這兩個日期信息確定當前擁有的CRL是否是最新的,以及管理CRL緩衝區(即在CRL下次更新之前,用戶可以一直使用原來的CRL緩衝區)。由於CRL中含有CA的數字簽名,因此CRL可以存儲於網路上的任何節點。
在CRL方案中,更新的CRL定期被發布到LDAP目錄伺服器上,以便依賴方可以獲悉證書的當前狀態,依賴方根據CRL(中是否包含待校驗的證書來判斷證書的有效性吊銷或未吊銷)。這一過程分為3個步驟:
獲取相對應的CRL
校驗CRL上CA的數字簽名是否有效
檢查待校驗的證書是否在CRL中。
在網路的規模不大、證書的吊銷率不是很高的情況下,CRL不失為一個簡單而行之有效的辦法。但是,CRL方法存在如下固有的缺點:
首先由於證書吊銷信息必須在證書的整個生命周期中存在,CRL的規模會隨著證書吊銷信息的增多而變得非常龐大。而依賴方要校驗某個證書,必須到的CA目錄伺服器上下載整個CRL,這將會造成網路資源的大量耗費,增加伺服器的負擔,而且可能會引起網路擁塞,使客戶無法得到CRL信息;
其次由於CRL是由CA周期公布,吊銷延遲不可避免地會給用戶帶來損失,減少吊銷延遲和減少占用頻寬總是矛盾的,由此帶來CRL(的不可靠不能及時反映證書吊銷信息)(和伺服器的性能瓶頸每次驗證證書鏈上的一個證書都必須下載相應的CRL)。
再者由於CRL過大,造成依賴方在CRL中查找證書吊銷狀態信息的效率很低。為彌補CRL的不足,相繼提出改進方法來限制CRL的大小或者增加CRL校驗的效率,如DeltaCRL方法、分段CRL方法等。
DeltaCRL
DeltaCRL的基本思想就是不需要每次一個證書吊銷就產生一個完整的、潛在會變得越來越大的CRL,而用一個基準CRL(baseCRL)包含某時期(△T)所有已經吊銷的證書信息,並以較短的時間間隔(△t)發布一個DeltaCRL,其中僅包括自基準CRL發布以來所增加的吊銷證書信息。因此,DeltaCRL的大小要比基準CRL小得多,使得DeltaCRL的發布頻率可以比基準CRL高得多,增加證書吊銷信息發布的及時性。DeltaCRL方法減小了大CRL小,減少了耗費的平均頻寬。但是依賴方要檢驗某數字證書,必須檢查最近時期的基準CRL以及自基準CRL發布以來所有的DeltaCRL。一旦丟失一個DeltaCRL,依賴方需要和伺服器重新同步以更新自己CRL快取。並且DeltaCRL的大小也是隨著△t時間內吊銷的數字證書數目而變化的,DeltaCRL並不能減少峰值頻寬。
分段CRL
為了控制CRL的大小,將CA簽發的吊銷證書信息分割成若干個CRL段進行分發的方法稱為分段CRL方法。分段的策略可以基於不同的因素,如證書序列號的範圍,證書吊銷的原因,證書的類型等。分段CRL方法通常和數字證書的CRL發行點擴展選項結合。分段CRL方法與CRL方法相比有兩個優點:首先,吊銷證書信息可以被分成若干個可控的片斷以避免龐大CRL的增長;其次由數字證書中的CRL發行點擴展選項可以確定出該數字證書的吊銷信息存放位置。但是,分段CRL的大小也是變化的,CRL的峰值請求率不受CRL分段數的影響,並且平均請求率會隨著分段數的增加而增大。
OCSP
在OCSP中,證書吊銷信息的認證被委託給OCSP應答器,證書吊銷信息的認證不直接由CA的數字簽名所擔保,而是由CA和(或者)依賴方所信任的OCSP應答器產生的數字簽名來保證。CA將CRL(由CA)數字簽名發布到OCSP應答器的內部資料庫中,當依賴方需要驗證證書的狀態時,向OCSP應答器提交查詢服務請求信息(OCSPRequest),OCSP應答器查詢其內部CRL資料庫,然後把當前最新的證書狀態信息(OCSPResponse)數字簽名後傳送給依賴方。OCSP方法的缺點在於OCSP應答器必須是可信任的,並且由於OCSP回響必須經由OCSP回響器數字簽名來保證完整性,因此會對性能造成一定的影響,甚至造成拒絕服務攻擊。
新的分發
圖顯示了一個X.509CRLV1的CRL檔案結構。CRL檔案包括常規部分和證書吊銷列表部分。常規部分由編碼CRL的版本號、CRL頒發者的甄別名、生效日期、下次更新時間和數字簽名算法標識符組成。證書吊銷列表部分由吊銷的數字證書的序列號和吊銷日期構成。在X.509CRLV2中,吊銷列表部分還可以包含一些擴展選項,如證書吊銷原因代碼、掛起指令代碼、失效日期和證書發行者。此外,在每個CRL的基礎之上還定義了一些CRL擴展,如機構密鑰標識符、頒發者別名、CRL號碼、DeltaCRL指示器和簽發分發點。在CRL中,證書吊銷列表所需要的空間和吊銷證書數量成正比。隨著吊銷證書數量的增加,整個CRL檔案的大小完全取決於證書吊銷列表部分的大小。在X.509CRLV1中,一個吊銷證書條目需要30B的空間(其中16B描述證書序列號,14B描述吊銷日期)。對於大型PKI系統而言,CRL檔案會變得相當大,例如,擁有十萬個吊銷證書的CRL檔案高達24MB。這對於頻寬只有33.6kbps的依賴方來說,要下載整個CRL檔案至少需要12min。
為了減少CRL的大小,提出新的證書吊銷方案Compact CRL。由於依賴方在校驗CRL的時候,一般只關心數字證書當前是否被吊銷,並不關心數字證書的吊銷日期。為此,在Compact CRL中,吊銷的數字證書條目只包括吊銷的證書的序列號,而不再包含數字證書吊銷日期。同時,對吊銷的數字證書序列號重新進行編碼,不是簡單地將要吊銷的數字證書的序列號添加到CRL中,而是用一個比特位序列來表示CA所簽發的每一個數字證書的吊銷狀態。該比特序列中的每一比特位代表一個數字證書的吊銷狀態,若比特位為則1表示相應序列號的數字證書已吊銷,若比特位為0,則表示相應序列號的數字證書未被吊銷。這樣,在X.509CRLV1中需要30B來描述一個吊銷的數字證書條目,在Compact CRL1方案中只需要個比特位就能指示一個數字證書的吊銷狀態,從而大大約化了CRL的大小。