數字證書的證書吊銷列表緩存及查詢方法
【專利摘要】本發(fā)明公開了一種數字證書的證書吊銷列表緩存及查詢方法,包括:A、設置一個起始值BaseSN;B、分配一段用于儲存證書吊銷列表(CRL)的內存,并進行初始化,將CRL的緩存區(qū)內容清零;C、從CA獲取一個最新發(fā)布的CRL;D、解析所述的CRL,從中得到TBSCertList;E、從TBSCertList中獲得一個數字證書的序列號(SN);F、計算SN與BaseSN的差值ΔSN;G、設ΔSN為偏移量,將CRL緩存區(qū)中相應的二進制位置1;H、判斷TBSCertList中是否還有其他數字證書的SN,若沒有,則執(zhí)行步驟I;否則,則返回步驟E;I、步驟I:進一步判斷是否還有其他CRL實體,若有,則返回步驟C;否則,結束所述CRL的緩存過程。采用本發(fā)明,能夠提高從緩存中檢索CRL的效率。
【專利說明】數字證書的證書吊銷列表緩存及查詢方法
【技術領域】
[0001]本發(fā)明涉及信息安全和數字證書技術,尤其涉及一種數字證書的證書吊銷列表緩存及查詢方法。
【背景技術】
[0002]基于數字證書的應用,通常需要訪問證書頒發(fā)機構(CA )獲取證書吊銷列表(CRL)來檢查證書狀態(tài)。應用軟件通常將CRL緩存,并按預設的策略進行更新。隨著數字證書數量的快速增長,CRL緩存的空間開銷和檢索證書是否被吊銷的時間開銷也變得越來越大。因此,亟待發(fā)展一種能夠提高緩存和檢索CRL效率的技術。
[0003]目前,傳統(tǒng)的CRL緩存方式是緩存CRL的實體,或使用線性表、哈希表結構在存儲CRL中標記“已吊銷”的數字證書序列號。
[0004]現有的CRL緩存方式下,緩存一個數字證書序列號大約需要20字節(jié),緩存N個CRL中被吊銷的證書序列號,則需要的空間約為NX序列號包含字節(jié)數。
[0005]在傳統(tǒng)的CRL緩存方式下,檢索一個指定的數字證書序列號(SN)是否包含在吊銷列表中,對緩存的數據結構進行檢索需要進行多次比對,才能確認緩存中是否包含了序列號(SN)。對于數據條數假設為η的緩存而言,查找的時間復雜度為0(n),如果采用二分法進行查找,則所需的時間復雜度為0(log(n))。
[0006]因此,采用傳統(tǒng)方式在數字證書數量和被吊銷證書的數量達到百萬至千萬數量級之后,所需的存儲空間和檢索所需的時間,都會迅速增長,這將會對系統(tǒng)的運行效率和響應的及時性產生較嚴重的影響。
【發(fā)明內容】
[0007]有鑒于此,本發(fā)明的主要目的在于提供一種數字證書的證書吊銷列表(CRL)緩存及查詢方法,在使用海量的數字證書和數字證書的CRL的場景下,供使用數字證書的應用軟件或密碼設備進行驗證使用,以大幅降低CRL緩存的開銷和提高CRL的檢索效率。
[0008]為達到上述目的,本發(fā)明的技術方案是這樣實現的:
一種數字證書的證書吊銷列表緩存方法,該方法包括:
A、根據數字證書的策略和實際情況,設置一個證書序列號的起始值BaseSN;
B、向系統(tǒng)申請分配一段用于儲存證書吊銷列表CRL的內存,并對該段內存進行初始化,將CRL的緩存區(qū)內容清零;
C、從數字證書頒發(fā)機構獲取一個最新發(fā)布的CRL;
D、解析所述的CRL,從CRL中得到TBSCertList;
E、從TBSCertList中獲得一個數字證書的序列號;
F、計算所述序列號與BaseSN的差值Asn;
G、設所述Asn為偏移量,將所述CRL緩存區(qū)中相應的二進制位置I;
H、判斷所述TBSCertList中是否還有其他數字證書的序列號,若沒有,則執(zhí)行步驟I;否則,則返回步驟E ;
1、步驟1:進一步判斷是否還有其他CRL實體,若有,則返回步驟C ;否則,結束所述CRL的緩存過程。
[0009]其中,所述數字證書序列號的起始值BaseSN與在內存中的位置無關。
[0010]步驟D所述TBSCerList為CRL中的一個字段,該字段為一個序列,含有數字證書發(fā)行者的名字、發(fā)行日期、下一個CRL的發(fā)行日期、吊銷證書列表和可選CRL的擴展。
[0011]所述CRL緩存區(qū)中相應的二進制的位置為I或0,用以指示對應該位置的數字證書的狀態(tài)是否被吊銷。
[0012]一種驗證權利要求1?4所述數字證書狀態(tài)的查詢方法,包括:
a、獲得數字證書的序列號SN;
b、計算SN與數字證書序列號的起始值BaseSN的差值,即計算ΛSN=SN_BaseSN ;
C、取證書吊銷列表CRL緩存區(qū)中Asn位置上的二進制值b ;
d、判斷該二進制位的b值是否為1,若為1,則證明該證書已被吊銷;否則,b不為1,則證明該證書有效。
[0013]本發(fā)明所提供的數字證書的證書吊銷列表緩存及查詢方法,具有以下優(yōu)點:
在海量數字證書和海量數字證書吊銷列表的情況下,基于數字證書的應用或設備,出
于效率原因,需要緩存吊銷列表的情況下,使用本發(fā)明的技術,能夠有效降低緩存CRL所需的內存要求,并且,能夠提高從緩存中檢索CRL的效率。
【專利附圖】
【附圖說明】
[0014]圖1為本發(fā)明對數字證書的證書吊銷列表進行緩存的過程示意圖;
圖2為本發(fā)明采用二進制位保存數字證書是否被吊銷的信息的數據結構存儲狀態(tài)示意圖;
圖3為本發(fā)明驗證數字證書狀態(tài)的查詢過程示意圖。
【具體實施方式】
[0015]下面結合附圖及本發(fā)明的實施例對本發(fā)明的方法作進一步詳細的說明。
[0016]圖1為本發(fā)明對數字證書的證書吊銷列表(CRL)進行緩存的過程示意圖。在本發(fā)明中,采用I個二進制位來保存I個證書是否被吊銷的信息(參考圖2)。
[0017]如圖1所示,對證書吊銷列表進行緩存的過程包括如下步驟:
步驟101:根據數字證書的策略和實際情況,設置一個證書序列號的起始值BaseSN (參考圖2)。
[0018]這里,所述數字證書的實際情況,主要是指證書大小、存儲空間等。
[0019]步驟102:向系統(tǒng)申請分配一段用于儲存證書吊銷列表(CRL)的內存。
[0020]步驟103:對所述的一段內存初始化,將證書吊銷列表(CRL)的緩存區(qū)內容清零。
[0021]步驟104:從數字證書頒發(fā)機構獲取一個最新發(fā)布的證書吊銷列表(CRL)。
[0022]步驟105:解析所述的證書吊銷列表(CRL),從證書吊銷列表(CRL)中得到TBSCertList0
[0023]這里,所述TBSCerList為CRL中的一個字段,該字段是一個序列,含有數字證書發(fā)行者的名字、發(fā)行日期、下一個證書吊銷列表(CRL)的發(fā)行日期、吊銷證書列表和可選CRL的擴展。其中,吊銷證書列表是由一連串的數字證書序號、撤銷日期和可選CRL入口擴展組成。
[0024]步驟106:從TBSCertList中獲得一個數字證書的序列號(SN)。
[0025]步驟107:計算所述序列號(SN)與BaseSN的差值,即根據下述公式:
Δ SN=SN-BaseSN0
[0026]步驟108:設所述ASN=SN_BaseSN為偏移量(offset),將證書吊銷列表(CRL)緩存區(qū)中相應的二進制的位置為I (參考圖2)。
[0027]步驟109:判斷所述TBSCertList中是否還有其他數字證書的序列號(SN),若沒有,則執(zhí)行步驟110 ;否則,則返回步驟106 ;
步驟110:進一步判斷是否還有其他證書吊銷列表(CRL)實體,若有,則返回步驟104 ;否則,執(zhí)行步驟111。
[0028]步驟111:完成所述證書吊銷列表(CRL)的緩存過程。
[0029]圖2為本發(fā)明采用二進制位保存數字證書是否被吊銷的信息的數據結構存儲狀態(tài)示意圖。如圖2所示,每個二進制位指示I個數字證書是否被吊銷的狀態(tài)。其中,二進制位“O”表示該對應的數字證書目前有效;二進制位“I”表示該對應的數字證書被吊銷。如圖1所示的步驟108中 ,偏移量(offset)ASN=SN-BaseSN,此時,須在證書吊銷列表(CRL)緩存區(qū)中相應的二進制位賦值I。反之,在CRL緩存區(qū)相應的二進制位賦值O。
[0030]圖3為本發(fā)明驗證數字證書狀態(tài)的查詢過程示意圖。在驗證某個數字證書的狀態(tài)時,需驗證該證書的序列號(SN)是否包含在證書吊銷列表(CRL)中,如果已經包含在吊銷列表中,則認為該證書已被吊銷;否則認為該證書狀態(tài)為正常。如圖3所示,該過程包括如下步驟:
步驟301:開始數字證書狀態(tài)驗證。
[0031]步驟302:獲得證書的序列號SN。
[0032]步驟303:計算SN與數字證書序列號的起始值BaseSN的差值,即計算Δ SN=SN-BaseSN0
[0033]步驟304:取CRL緩存區(qū)中,Λ SN位置上的二進制值b。
[0034]步驟305:判斷該二進制位的b值是否為1,若為1,則執(zhí)行步驟306 ;否則,執(zhí)行步驟 307。
[0035]步驟306:b為1,則證明該證書已被吊銷,返回。
[0036]步驟307:b不為1,則證明該證書有效。
[0037]下面,結合具體實施例對緩存數字證書的過程和查詢即驗證數字證書是否有效的過程分別進行說明。
[0038]例如,某證書認證機構頒發(fā)的證書,序列號是從下面的證書序列號開始,逐個遞增,我們將該序列號定義為CRL緩存的BaseSN。
[0039]64 3F 7D 55 30 87 94 41 22 00 00 00 00 00 00 00 00 00 00 01。
[0040]根據當前證書認證機構的證書容量和預期一個時間內的證書容量,我們預設CRL緩存大小為64 M,分為64個區(qū)段,每個區(qū)段1M。其定義如下:
CRL緩存程序按照自己的緩存更新策略,到CA獲取CA最新發(fā)布的CRL,進行CRL的完整性驗證,此后,從CRL的TBSCertList中獲取所有被吊銷的序列號,對每一個序列號SN,采用如下步驟處理。
[0041]步驟a:計算 Δ SN=SN_BaseSN。
[0042]步驟b:計算該SN所對應緩存的段segment = Δ SN / ( 1024 * 1024 * 8 );
步驟c:計算該SN所對應緩存的字節(jié)位置posit1n = ( Δ SN % ( 1024 * 1024 * 8 ) ) /8 ; 步驟d:計算該SN所對應緩存的二進制位long offset2 = posit1n % 8。
[0043]步驟e:置該二進制位的值為I。
[0044]其驗證證書狀態(tài)的過程如下:
步驟A:解析數字證書,取得數字證書序列號SN。
[0045]步驟B:計算 Δ SN=SN_BaseSN。
[0046]步驟C:計算該SN所對應緩存的段segment =Asn/ ( 1024 * 1024 * 8 )。
[0047]步驟D:計算該SN所對應緩存的字節(jié)位置posit1n = ( Δ SN % ( 1024 * 1024 * 8 ))/8。
[0048]步驟E:計算該SN所對應緩存的位long offset2 = posit1n % 8。
[0049]步驟F:取該位的二進制值b,若b為1,則返回該證書已被吊銷,否則返回該證書狀態(tài)有效。
[0050]在有海量數字證書和海量證書吊銷列表(CRL)的情況下,基于數字證書的應用或設備出于效率原因,需要緩存吊銷列表的情況下,使用本發(fā)明的技術,能夠有效降低緩存CRL所需的內存要求,并且,能夠提高從緩存中檢索CRL的效率。
[0051]反映在需要的存儲空間大小方面:
一般情況下,考慮數字證書的序列號空間,證書頒發(fā)機構會采用10~20字節(jié)的序列號,這種情況下,設想一個數字證書量為10億的系統(tǒng),按照1/5被吊銷的估計值來分析,使用傳統(tǒng)的緩存方式,需要的緩存空間約為:
緩存空間^ 10億* 1/5 * 20字節(jié)=40億字節(jié)^ 4G字節(jié)。
[0052]而使用本發(fā)明的方案,所需的緩存空間約為:
緩存空間& 10億* I比特=10億比特^ 125M字節(jié)。
[0053]可見,采用本發(fā)明的方法,能夠大大減少對存儲空間的需求。
[0054]反映在檢索效率方面:
采用本發(fā)明的方法,查詢一個數字證書是否被吊銷。只需要通過計算序列號SN和BaseSN的差值,就可以直接獲得偏移量(offset),根據對應的二進制位的值即可獲得其證書是否是吊銷狀態(tài)。其計算的時間復雜度為常數0(1)。相比傳統(tǒng)方式采用線性表組、哈希表方式的檢索0(n)和0(log(n))的計算復雜度,大大降低了從緩存中獲取證書狀態(tài)的計算量,從而可使證書驗證過程的效率能夠大幅度得到提高。
[0055] 以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
【權利要求】
1.一種數字證書的證書吊銷列表緩存方法,其特征在于,該方法包括: A、根據數字證書的策略和實際情況,設置一個證書序列號的起始值BaseSN; B、向系統(tǒng)申請分配一段用于儲存證書吊銷列表CRL的內存,并對該段內存進行初始化,將CRL的緩存區(qū)內容清零; C、從數字證書頒發(fā)機構獲取一個最新發(fā)布的CRL; D、解析所述的CRL,從CRL中得到TBSCertList; E、從TBSCertList中獲得一個數字證書的序列號; F、計算所述序列號與BaseSN的差值Asn; G、設所述Asn為偏移量,將所述CRL緩存區(qū)中相應的二進制位置I; H、判斷所述TBSCertList中是否還有其他數字證書的序列號,若沒有,則執(zhí)行步驟I;否則,則返回步驟E ; 1、步驟1:進一步判斷是否還有其他CRL實體,若有,則返回步驟C ;否則,結束所述CRL的緩存過程。
2.根據權利要求1所述數字證書的證書吊銷列表緩存方法,其特征在于,所述數字證書序列號的起始值BaseSN與在內存中的位置無關。
3.根據權利要求1所述數字證書的證書吊銷列表緩存方法,其特征在于,步驟D所述TBSCerList為CRL中的一個字段,該字段為一個序列,含有數字證書發(fā)行者的名字、發(fā)行日期、下一個CRL的發(fā)行日期、吊銷證書列表和可選CRL的擴展。
4.根據權利要求1所述數字證書的證書吊銷列表緩存方法,其特征在于,所述CRL緩存區(qū)中相應的二進制的位置為I或O,用以指示對應該位置的數字證書的狀態(tài)是否被吊銷。
5.一種驗證權利要求1?4所述數字證書狀態(tài)的查詢方法,其特征在于,包括: a、獲得數字證書的序列號SN; b、計算SN與數字證書序列號的起始值BaseSN的差值,即計算ΛSN=SN_BaseSN ; C、取證書吊銷列表CRL緩存區(qū)中Asn位置上的二進制值b ; d、判斷該二進制位的b值是否為1,若為1,則證明該證書已被吊銷;否則,b不為1,則證明該證書有效。
【文檔編號】G06F17/30GK104036033SQ201410303808
【公開日】2014年9月10日 申請日期:2014年6月30日 優(yōu)先權日:2014年6月30日
【發(fā)明者】李向鋒 申請人:北京數字認證股份有限公司