杜麗萍 劉宇
北京市科技情報研究所 北京 100044
PKI是基于證書的密碼認(rèn)證架構(gòu),各國的網(wǎng)絡(luò)密碼認(rèn)證都普遍采用PKI技術(shù),PKI已經(jīng)成為各國各行業(yè)網(wǎng)絡(luò)密碼認(rèn)證的標(biāo)準(zhǔn),在亞洲還成立了亞洲PKI聯(lián)盟。但是,國際標(biāo)準(zhǔn)的PKI的CA認(rèn)證中心全部證書,包括證書信任鏈中的各個證書,都是以明文形式存儲在CA認(rèn)證中心的的數(shù)據(jù)庫里。僅僅依靠防火墻和防病毒系統(tǒng)很難保證CA認(rèn)證中心證書的安全,CA認(rèn)證中心證書以明文形式存儲是PKI的重大安全隱患。黑客能夠利用計算機病毒替換證書來攻擊PKI。為此,我們提出一種使用加密卡(或加密機)硬件設(shè)備,將全部證書加密成密文,存儲在CA認(rèn)證中心的證書數(shù)據(jù)庫中,保證證書的存儲安全和運行安全,實現(xiàn)“芯片級”的PKI安全協(xié)議,提高PKI的安全等級。
在CA認(rèn)證中心的服務(wù)器或小型機的PCI槽里,插入多塊加密卡,或?qū)⒍嗯_加密機與CA認(rèn)證中心的服務(wù)器或小型機鏈接,并在加密卡或加密機的芯片里,預(yù)存非對稱密碼算法、對稱密碼算法、一組固定的存儲密鑰K,以及各種安全協(xié)議如:身份認(rèn)證協(xié)議、簽名驗證協(xié)議和服務(wù)器端SSL協(xié)議等。在客戶端的USB-KEY的芯片里存放對稱密碼算法、非對稱密碼算法、用戶的私鑰、身份認(rèn)證協(xié)議、數(shù)字簽名協(xié)議和客戶機端SSL協(xié)議,以及對應(yīng)USB-KEY設(shè)備的用戶證書(最終實體證書)。
在證書初始化過程中,先將CA認(rèn)證中心的全體最終實體證書加密成密文存儲,由于證書格式和內(nèi)容是標(biāo)準(zhǔn)的X.500(或 X.509),若使用一組固定的對稱密鑰來加密全部用戶的證書,則會造成重復(fù)報(是破譯的重要條件),若用非對稱密碼算法加密,則運行速度較慢,非對稱密碼算法加解密速度若在計算機里運行,比對稱密碼算法加解密速度慢 100倍,若在芯片硬件里運行,比對稱密碼算法加解密速度慢1000倍,這會影響各種安全協(xié)議的速度。為此,我們提出由CA認(rèn)證中心端的加密卡或加密機芯片里的隨機數(shù)發(fā)生器來產(chǎn)生一次一變的隨機數(shù),作為對稱密鑰即:加密證書的密鑰,一組密鑰加密一組最終實體證書,一次一密,并將全體最終實體證書加密成密文,存儲在CA認(rèn)證中心端的證書數(shù)據(jù)庫里,將各個中級證書和根證書存放在CA認(rèn)證中心加密卡或加密機設(shè)備的芯片里。
證書加密及密鑰管理方法:
在密鑰初始化過程中,首先,通過調(diào)用CA認(rèn)證中心加密卡或加密機芯片里的隨機數(shù)發(fā)生器,在芯片里產(chǎn)生一組隨機數(shù),將該隨機數(shù)作為存儲密鑰K,其中:存儲密鑰是固定不變的,存儲密鑰K用于對所有加密證書的密鑰進行加密。
其次,再調(diào)用CA認(rèn)證中心加密卡或加密機芯片里的隨機數(shù)發(fā)生器,在芯片里產(chǎn)生一組隨機數(shù) L1,并將該隨機數(shù)L1作為密鑰K1,將CA認(rèn)證中心證書數(shù)據(jù)庫中的最終實體證書 CA1輸入芯片里,在芯片里,使用密鑰 K1將最終實體證書CA1加密成密文;在芯片里產(chǎn)生一組隨機數(shù)L2,并將該隨機數(shù)L2作為密鑰K2,將CA認(rèn)證中心證書數(shù)據(jù)庫中的最終實體證書 CA2輸入芯片里,在芯片里,使用密鑰 K2將最終實體證書CA2加密成密文;……;在芯片里產(chǎn)生一組隨機數(shù)Ln,并將該隨機數(shù)n作為密鑰Kn,將CA認(rèn)證中心證書數(shù)據(jù)庫中的最終實體證書CAn輸入芯片里,在芯片里,使用密鑰Kn將最終實體證書CAn加密成密文,其中:各個最終實體證書的序列號(證書的標(biāo)識)Li,(i=1~n)不加密,證書序列號 Li用于檢索定位證書CAi密文,密鑰Ki(i=1~n),為加密證書的密鑰,n為CA認(rèn)證中心中全體最終實體證書的總數(shù)。
再次,將證書CA1、證書CA2、…… 證書CAn的密文從芯片里輸出,存放在CA認(rèn)證中心證書數(shù)據(jù)庫中。
最后,在芯片里,使用存儲密鑰K分別將K1、K2、……Kn加密成密文,分別生成 K1’、K2’、……Kn’,再將K1’、K2’、……Kn’,分別存放在 CA認(rèn)證中心證書數(shù)據(jù)庫對應(yīng)最終實體證書 CA1、CA2、……、CAn的密文記錄的最后一個字段里。
PKI的安全協(xié)議如:身份認(rèn)證協(xié)議、數(shù)字簽名協(xié)議和SSL協(xié)議中,當(dāng)CA認(rèn)證中心端需要獲取對應(yīng)用戶的最終實體證書時,根據(jù)客戶端傳輸來的最終實體證書的序列號(標(biāo)識),定位證書數(shù)據(jù)庫中的最終實體證書記錄的密文,并輸入到CA認(rèn)證中心加密卡或加密機的芯片里,在芯片里,用存儲密鑰K將最終實體證書對應(yīng)的密鑰密文Ki’(i=1~n)解密成明文即:Ki(i=1~n),再用Ki(i=1~n)來解密該最終實體證書得到其明文,之后,在芯片里再進行安全協(xié)議的其他操作,如:在身份認(rèn)證協(xié)議中的其他操作包括:CA認(rèn)證中心端加密系統(tǒng),在芯片里調(diào)用對應(yīng)用戶最終實體CA證書的公鑰,對客戶端傳來的用戶最終實體 CA證書的密文進行解密獲得明文,并與CA認(rèn)證中心端存儲的對應(yīng)用戶的最終實體CA證書明文進行比對認(rèn)證,來判斷客戶端的用戶是否可信;在數(shù)字簽名協(xié)議中的其他操作包括:CA認(rèn)證中心端加密系統(tǒng),在芯片里調(diào)用對應(yīng)用戶最終實體CA證書的公鑰,對客戶端傳來文件數(shù)字簽名進行解密,獲得文件的摘要信息即:“數(shù)字指紋1”,再用調(diào)用摘要算法,對文件進行摘要得到文件的摘要信息即:文件的“數(shù)字指紋2”,通過對比“數(shù)字指紋1”和“數(shù)字指紋 2”是否相同,來判別對文件進行簽名的用戶是否可信;在SSL協(xié)議中的其他操作包括:通過對比客戶端和CA認(rèn)證中心端的用戶最終實體CA證書是否相同,完成雙向認(rèn)證后,再協(xié)商客戶端和CA認(rèn)證中心端的對稱密碼算法、及其版本和對稱密鑰,即:完成SSL協(xié)議的握手子協(xié)議,最后,執(zhí)行SSL協(xié)議的記錄子協(xié)議。從而,建立基于“芯片級”的PKI安全協(xié)議。
在CA認(rèn)證中心建立證書安全檢測協(xié)議,定時對CA認(rèn)證中心的全體信任鏈中的CA證書進行檢測。其檢測過程是,將CA認(rèn)證中心證書數(shù)據(jù)庫中全體最終實體CA證書,即:CA1、CA2、……、CAn的記錄內(nèi)容(包括:CAi的密文、證書標(biāo)識、以及密鑰密文 Ki’),依次輸入加密卡或加密機的芯片里,在芯片里,調(diào)用存儲密鑰K,分別將加密最終實體證書CAi(i=1~n)的密鑰密文Ki’(i=1~n),解密成明文即:Ki(i=1~n),再用 Ki(i=1~n)來解密對應(yīng)的最終實體證書CAi(i=1~n)密文,獲得其明文,之后,在芯片里,調(diào)用最下一級中級CA證書的公鑰,對該已經(jīng)解密成明文的最終實體證書CAi(i=1~n)進行簽名驗證,若沒有通過簽名驗證的最終實體證書,則該最終實體證書CAi(i=1~n)視為已被篡改,若通過簽名驗證,則該最終實體證書CAi(i=1~n)未被篡改。從而,防止攻擊者篡改CA證書,保證全部最終實體證書的安全、可信。
在CA認(rèn)證中心全部用戶的最終實體證書都是以密文形式存儲在證書數(shù)據(jù)庫中,證書信任鏈上各中級證書和根證書存放在芯片硬件里,能保證認(rèn)證中心全部最終實體證書、信任鏈上各個中級證書和根證書的存儲安全,同時,保證 CA認(rèn)證中心端的各種證書是可信的;即使攻擊者想篡改用戶的最終實體證書,但是,在無法獲得加密證書的密鑰的情況下,也無法將篡改后的最終實體證書加密成攻擊者可用的密文,從而,防止攻擊者通過篡改最終實體證書,來攻擊CA認(rèn)證中心的各種安全協(xié)議。
存放在CA認(rèn)證中心加密卡或加密機芯片里的全體中級CA證書和根 CA證書,受到芯片硬件的保護,在第一次建立各個中級CA證書和根CA證書信任鏈時,在芯片里,對信任鏈上的各個中級CA證書和根CA證書進行驗證,以后不再對信任鏈上的各個中級CA證書和根CA證書進行驗證,也就是,當(dāng)CA認(rèn)證中心運行安全協(xié)議如:身份認(rèn)證、簽名驗證和SSL協(xié)議時,各種安全協(xié)議不對證書信任鏈進行驗證,即:不調(diào)用最下級中級證書對最終實體證書進行簽名驗證,也不調(diào)用上一級中級證書對下一級中級證書進行簽名驗證,也不用調(diào)用根證書對最上一級中級證書進行簽名驗證,從而,減少各種安全協(xié)議的部分環(huán)節(jié),提高各安全協(xié)議的運行效率。
在CA認(rèn)證中心端建立“芯片級”各種PKI安全協(xié)議(如:身份認(rèn)證、簽名驗證和SSL協(xié)議),將各種PKI安全協(xié)議的各種環(huán)節(jié)都在芯片里完成,即:在芯片里,用存儲密鑰K解密密鑰Ki’(i=1~n),生成密鑰Ki(i=1~n),再用Ki(i=1~n)將最終實體證書密文解密成明文后,再進行安全協(xié)議的其他操作,從而,提高了PKI各種安全協(xié)議的安全等級。
在CA認(rèn)證中心建立證書安全檢測系統(tǒng),定時對CA認(rèn)證中心全體最終實體證書進行簽名驗證,檢測CA認(rèn)證中心的最終實體證書是否被篡改,以便及時對CA認(rèn)證中心的最終實體證書進行恢復(fù),保證CA認(rèn)證中心各種安全協(xié)議能正常運行。
存儲密鑰K是在芯片里產(chǎn)生,用于對所有加密證書的密鑰Ki(i=1~n)進行加密,存儲密鑰K存儲在芯片里,且不輸出芯片外,保證存儲密鑰K的存儲和運行安全;加密證書的密鑰 Ki(i=1~n)是在芯片里,由隨機數(shù)發(fā)生器產(chǎn)生,在芯片里,對最終實體證書進行加密操作,且保證一組加密證書的密鑰 Ki(i=1~n)加密一組最終實體證書,一次一密,不重復(fù)使用,加密證書的密鑰 Ki(i=1~n)不出芯片,且在芯片里被存儲密鑰K加密成密文后,從芯片里輸出存儲在證書數(shù)據(jù)庫里,從而,保證加密證書密鑰的存儲安全和運行安全。
在芯片里將CA認(rèn)證中心,將海量的最終實體證書數(shù)據(jù)以密文的形式,存放在CA認(rèn)證中心的證書數(shù)據(jù)庫中,同時,將證書信任鏈上的全部中級證書和根證書,以明文形式存儲在CA認(rèn)證中心加密卡或加密機的芯片里,不僅,能保證海量最終實體證書,以及證書信任鏈上的全部中級證書和根證書重要的數(shù)據(jù)的存儲安全,而且,能大大減少CA認(rèn)證中心購置加密設(shè)備硬件的建設(shè)成本。
本方案通過對標(biāo)準(zhǔn)PKI的分析,指出了PKI的CA認(rèn)證中心普遍存在的用戶證書安全漏洞,闡述了攻擊者能夠利用PKI存在的安全漏洞,攻擊CA認(rèn)證中心的方法和過程,提出了在證書初始化階段對 CA認(rèn)證中心的全體最終實體 CA證書進行加密,并將信任鏈上的各個中級證書和根證書存放在芯片里,保證CA認(rèn)證中心全體最終實體CA證書,以及信任鏈上的各個中級CA證書和根CA證書數(shù)據(jù)的安全存儲,防止攻擊者利用計算機病毒替換用戶的最終實體CA證書,來對PKI進行“張冠李戴”式攻擊,同時,建立對最終實體CA證書實時進行安全檢查系統(tǒng),保證PKI的各種安全協(xié)議能安全運行,另外,將CA認(rèn)證中心各中安全協(xié)議的主要環(huán)節(jié)都在芯片里實現(xiàn),從而,建立基于“芯片級”的安全協(xié)議,來保證CA認(rèn)證中心的安全等級。
[1]龍毅宏.SSL證書被攻擊、被假冒及服務(wù)被中止的風(fēng)險分析——關(guān)于 SSL證書的研究分析報告.武漢理工大學(xué)信息工程院.2011.
[2]肖凌,李之棠.公開密鑰基礎(chǔ)設(shè)施(PKI)結(jié)構(gòu).計算機工程與應(yīng)用.2002.
[3]劉知貴,楊立春,蒲潔,張霜.基于PKI技術(shù)的數(shù)字簽名身份認(rèn)證系統(tǒng).計算機應(yīng)用研究.2004.
[4]Carlisle Adams,Steve Lloyd,馮登國.公開密鑰基礎(chǔ)設(shè)施——概念、標(biāo)準(zhǔn)和實施. 2001.
[5]汪立東.PKI中幾個安全問題的研究.計算機工程.2000.