基于PKI的匿名數字證書(shū)系統的研究
目前在Internet上廣泛使用基于公共密鑰的身份認證機制,公鑰基礎設施PKI(Public KeyInfrastructure)就是通過(guò)使用公開(kāi)密鑰技術(shù)和數字證書(shū)來(lái)確保系統信息安全并負責驗證數字證書(shū)持有者身份的一種體系。在PKI中所有安全操作都是通過(guò)數字證書(shū)實(shí)現的,但基于X.509標準,數字證書(shū)的主體名域中會(huì )標有證書(shū)持有者的真實(shí)名稱(chēng)等個(gè)人信息,這就造成了用戶(hù)個(gè)人身份信息的泄露。因此,這種實(shí)名數字證書(shū)就不能用在保護個(gè)人隱私的匿名服務(wù)中,如電子投票、電子選舉、匿名通信,所以,關(guān)于匿名證書(shū)的發(fā)布成為近幾年研究的熱點(diǎn),本文提出一種匿名數字證書(shū)發(fā)布方案,并在現有的PKI系統中構建了一個(gè)匿名數字證書(shū)系統。
本文引用地址:http://dyxdggzs.com/article/201612/328474.htm一、方案的描述
匿名證書(shū)發(fā)布方案中共有四個(gè)實(shí)體,分別是用戶(hù)、CA、AI和BI,其中AI和BI組成匿名證書(shū)域PCA.CA、AI和BI分別擁有自己的數據庫,用來(lái)存儲追蹤匿名證書(shū)時(shí)所用的加密信息。
PCA、AI和BI均由CA授權的機構來(lái)?yè)?,并且分別擁有CA發(fā)布的數字證書(shū)。方案中使用RSA算法,定義AI和BI共享相同的公鑰參數.
對于PCA的RSA私鑰d,為了產(chǎn)生各自的證書(shū),把它分成兩部份,這樣AI和BI各自的私鑰分別是d2,d1,在這里d 有= dd1=dd21dm2mooddΦ((NN))。用戶(hù)至少應該知道三個(gè)公鑰,PCA,AI和BI的公鑰,方案的假設條件是AI和BI不能串通。方案中使用的主要符號見(jiàn)表1.

1.匿名證書(shū)的發(fā)布
(1)CA通過(guò)安全信道為用戶(hù)U發(fā)布一個(gè)實(shí)名證書(shū)Cert,此時(shí)CA已經(jīng)確認用戶(hù)的真實(shí)身份,并把實(shí)名證書(shū)存儲在CA庫中。
(2)用戶(hù)U設置匿名PNU,并產(chǎn)生匿名密鑰對.用戶(hù)通過(guò)選擇一個(gè)128位的隨機數ρ 來(lái)計算匿名證書(shū)的序列號SNU=H(APUU,ρ )。
用戶(hù)構建一個(gè)X.509匿名證書(shū)的頭部b為:,這個(gè)匿名證書(shū)的內容M為:.隨后,用戶(hù)計算h=H(M)。最后,用戶(hù)計算u=h·remodN,這里r在{0,1}之間隨機選擇(k=128),計算后把u的值以及用戶(hù)用自己的私鑰簽名的信息m傳給BI.
(3)當BI收到信息后,BI通過(guò)用戶(hù)的公鑰驗證簽名,確定用戶(hù)的身份。然后BI計算w=ud1modN,再把信息存儲在BI庫中,其中IDU為實(shí)名證書(shū)中用戶(hù)的主體唯一標識。BI計算Ee(w),并把這個(gè)值返回給用戶(hù)U.
(4)當用戶(hù)接到信息Ee(w)后,用戶(hù)計算sigAPRU(M),并把信息發(fā)送給AI.
(5)當AI收到這個(gè)信息后,AI先驗證sigAPRU(M)是否是合法有效的。然后,AI計算z=wd2modN.
AI驗證z·r-1modN能否被證明。最后,AI把信息
2.匿名證書(shū)的撤銷(xiāo)
當發(fā)現匿名證書(shū)被濫用、私鑰泄露或者證書(shū)過(guò)期時(shí)就需要對匿名證書(shū)進(jìn)行撤銷(xiāo),由于本方案中的匿名證書(shū)是在用戶(hù)已獲得實(shí)名證書(shū)的基礎上由實(shí)名證書(shū)構造而成的,所以匿名證書(shū)的撤銷(xiāo)就必須分兩步:撤銷(xiāo)實(shí)名證書(shū)和撤銷(xiāo)匿名證書(shū),按照以下步驟就可以撤銷(xiāo)匿名證書(shū)。
(1)用戶(hù)向PCA提出匿名證書(shū)的撤銷(xiāo)請求,并提供相關(guān)個(gè)人信息。
(2)PCA根據匿名證書(shū)的序列號通過(guò)匿名證書(shū)追蹤功能追蹤到用戶(hù)的IDU.
(3)PCA把用戶(hù)的撤銷(xiāo)申請連同用戶(hù)的身份IDU發(fā)送給CA.
(4)CA根據用戶(hù)的IDU在CA庫中檢索出用戶(hù)的實(shí)名證書(shū),核準用戶(hù)信息后,批準撤銷(xiāo),把實(shí)名證書(shū)放入CRL中,并給PCA發(fā)送應答信息。
(5)PCA對匿名證書(shū)進(jìn)行撤銷(xiāo),把匿名證書(shū)放入CRL中,并把執行結果發(fā)送給用戶(hù)。
3.方案的應用
在實(shí)際的應用中,很多網(wǎng)上活動(dòng)都可以使用本方案中發(fā)布的匿名數字證書(shū),特別是需要保護用戶(hù)的隱私又要能夠證實(shí)用戶(hù)身份的應用中。在具體的實(shí)現方面,可以采用以下兩種情況:
(1)PCA域由AI和BI構成,而AI和BI可以分別由CA授權的實(shí)體來(lái)?yè)?。例如,一個(gè)站點(diǎn)(或者由站點(diǎn)授權的CA)可以成為AI,而B(niǎo)I可以是法院,銀行,行事機關(guān)或其它政府代理機構。
(2)這個(gè)方案最大的特點(diǎn)是允許在現有PKI體系中使用,在這種情況下,不需要對現行的PKI體系作任何修改就可以實(shí)現本方案,此時(shí),PCA域就由CA和RA來(lái)構成,AI就可以由CA來(lái)?yè)?,BI可以由RA來(lái)?yè)?,則獲得匿名證書(shū)的過(guò)程如下:
①用戶(hù)向RA申請實(shí)名證書(shū),填寫(xiě)證書(shū)申請表。
②RA對用戶(hù)的身份進(jìn)行審核,審核通過(guò)后向CA提交證書(shū)申請請求。
③CA生成用戶(hù)實(shí)名證書(shū),并把證書(shū)返回給RA.
④RA將實(shí)名證書(shū)發(fā)放給用戶(hù)。
⑤用戶(hù)根據實(shí)名證書(shū)構造匿名證書(shū),并對其哈希值盲化后發(fā)送給RA.
⑥RA對盲化后的匿名證書(shū)簽名,把簽名值給用戶(hù)。
⑦用戶(hù)把經(jīng)RA簽名后的值發(fā)送給CA.
⑧CA再對該值進(jìn)行簽名并發(fā)送給用戶(hù),此時(shí)用戶(hù)就到了匿名證書(shū)及RA和CA對其進(jìn)行的簽名。
二、構建匿名數字證書(shū)系統
本文根據提出的匿名證書(shū)發(fā)布方案設計了一個(gè)匿名數字證書(shū)系統,本系統是按照通用的標準設計的,是采用先進(jìn)的信息安全技術(shù)開(kāi)發(fā)的匿名數字證書(shū)簽發(fā)與管理系統。該匿名數字證書(shū)系統嚴格遵守ITU-TX.509標準,其中應用的全部協(xié)議都是被國際上廣泛采用的標準協(xié)議。本系統中公鑰/私鑰對的生成以及利用公鑰/私鑰對的加密/解密運算采用可靠性極高的RSA算法,加密用的公開(kāi)密鑰和私有密鑰的長(cháng)度都是1024位。數字簽名中的摘要技術(shù)采用MD5算法,它是目前可靠性較好和應用最為廣泛的算法。匿名數字證書(shū)系統的總體結構如圖1所示。

1.申請匿名證書(shū):若用戶(hù)已獲得由CA發(fā)布的實(shí)名證書(shū),則用戶(hù)可以通過(guò)該功能由實(shí)名證書(shū)構成匿名證書(shū);若用戶(hù)沒(méi)有實(shí)名證書(shū),則可以通過(guò)該功能先申請一個(gè)實(shí)名證書(shū),再由此實(shí)名證書(shū)構造匿名證書(shū)。此時(shí),申請人需要填寫(xiě)申請實(shí)名證書(shū)的相關(guān)資料,由RA進(jìn)行審核,核準后由CA簽發(fā)實(shí)名證書(shū),并由RA頒發(fā)給用戶(hù)。
2.簽發(fā)匿名證書(shū):構造生成匿名證書(shū)后,經(jīng)由BI和AI處理器共同處理,得到由PCA簽發(fā)的匿名證書(shū)。
3.查詢(xún)匿名證書(shū):用戶(hù)可以通過(guò)互連網(wǎng)直接訪(fǎng)問(wèn)系統的LDAP證書(shū)庫查詢(xún)匿名證書(shū)和匿名證書(shū)撤銷(xiāo)列表CRL.
4.追蹤匿名證書(shū):當需要對匿名證書(shū)進(jìn)行追蹤時(shí),可通過(guò)此功能由匿名證書(shū)的序列號追蹤到用戶(hù)的真實(shí)身份。
5.撤銷(xiāo)匿名證書(shū):系統可以根據用戶(hù)提出的匿名證書(shū)撤銷(xiāo)請求對指定的匿名證書(shū)及實(shí)名證書(shū)予以撤銷(xiāo),并同時(shí)更新LDAP證書(shū)庫和證書(shū)撤銷(xiāo)列CRL.
三、匿名數字證書(shū)系統的實(shí)現
本系統中的CA,BI,AI都采用三層B/S架構,設計主要采用Java技術(shù)、數字簽名和加密等技術(shù),在實(shí)現過(guò)程中把RA集成在CA中,該系統主要有四個(gè)核心模塊:Web服務(wù)器模塊、CA服務(wù)器模塊、BI服務(wù)器模塊和AI服務(wù)器模塊。該匿名數字證書(shū)系統需要三臺服務(wù)器,分別是CA服務(wù)器、BI服務(wù)器和AI服務(wù)器。在三臺服務(wù)器上分別安裝WebLogic 8.1作為應用服務(wù)器,安裝Oracel 10g企業(yè)版作為后臺數據庫。
1.申請匿名數字證書(shū)
由于本系統中的匿名證書(shū)是通過(guò)用戶(hù)已有的實(shí)名證書(shū)構造而成的,所以若用戶(hù)沒(méi)有實(shí)名證書(shū),可以先申請一個(gè)實(shí)名證書(shū),若用戶(hù)已經(jīng)獲得一個(gè)實(shí)名證書(shū),就可以直接進(jìn)入簽發(fā)匿名證書(shū)模塊。
(1)用戶(hù)申請和簽發(fā)實(shí)名證書(shū)
用戶(hù)申請實(shí)名證書(shū)需要填寫(xiě)實(shí)名證書(shū)申請表并提交給CA服務(wù)器,CA服務(wù)器需要驗證用戶(hù)的有效證書(shū)是否存在,如果不存在則首先生成自簽名證書(shū),再使用服務(wù)器簽名證書(shū)私鑰進(jìn)行簽名,將證書(shū)存入證書(shū)數據庫,并將證書(shū)壓縮成zip格式通過(guò)Email發(fā)送給用戶(hù)。
①申請實(shí)名證書(shū)
用戶(hù)需要填寫(xiě)申請個(gè)人證書(shū)申請表,其中公共名稱(chēng)和單位名稱(chēng)為確認用戶(hù)或單位身份的主要字段。組織名稱(chēng)、省、市、郵編為可選項。密鑰大小可選擇1024或2048.Email地址為生成證書(shū)時(shí)傳遞證書(shū)時(shí)使用,必須輸入有效的地址,否則申請不成功。
②生成密鑰
通過(guò)c o m . i b m . s e c u r i t y . x 5 0 9包中的CertAndKeyGen類(lèi)設置生成證書(shū)的公鑰算法、簽名算法和Provider.若公鑰算法是RSA,則簽名算法為MD5withRSA;若公鑰算法為DSA,則簽名算法為SHA1withDSA.
③生成證書(shū)
生成證書(shū)過(guò)程又可以分為五個(gè)步驟,分別是生成主體信息,生成自簽名證書(shū),提取自簽名證書(shū)信息,對自簽名證書(shū)信息進(jìn)行設置和形成證書(shū)。
④簽發(fā)證書(shū)
通過(guò)KeyStore對象獲得服務(wù)器證書(shū)的私鑰caprk,通過(guò)證書(shū)的簽名方法對新證書(shū)進(jìn)行簽名。
⑤把證書(shū)保存在證書(shū)庫中
在密鑰庫中生成新實(shí)體,并將新實(shí)體與新簽發(fā)的證書(shū)對應。
⑥將證書(shū)壓縮發(fā)送給用戶(hù)
設計中使用BASE64Encoder類(lèi)轉換為證書(shū)標準格式--BASE64編碼,編碼后的證書(shū)字符就可以在屏幕上顯示、復制或打印。為了作為Email附件進(jìn)行發(fā)送,必須將生成的證書(shū)編碼進(jìn)行壓縮,設計中使用ZipOutputStream類(lèi)進(jìn)行處理,處理后生成zip格式的壓縮文件,然后通過(guò)編寫(xiě)的發(fā)送郵件類(lèi)MailandFile給用戶(hù)發(fā)送Email,申請證書(shū)過(guò)程完成。
(2)簽發(fā)匿名數字證書(shū)
簽發(fā)匿名證書(shū)的過(guò)程是由BI服務(wù)器和AI服務(wù)器共同來(lái)完成。該過(guò)程主要包括:構造匿名證書(shū)、生成摘要并盲化、由BI服務(wù)器簽名和由AI服務(wù)器簽名。
①構造匿名證書(shū)
匿名證書(shū)的構造是通過(guò)應用程序生成的匿名證書(shū)的主體名、匿名密鑰和匿名證書(shū)的序列號與取來(lái)的實(shí)名證書(shū)的其它字段的值共同構造成匿名證書(shū)。通過(guò)調用KeyPairGenerator方法來(lái)生成匿名密鑰對,采用RSA算法,生成匿名證書(shū)序列號,通過(guò)使用SecureRandom類(lèi)生成一個(gè)128位的隨機數r1,再使用MessageDigest對匿名公鑰及隨機數生成摘要形成匿名證書(shū)序列號sn,然后,通過(guò)調用X500Name類(lèi)
評論