基于PKI的匿名數(shù)字證書系統(tǒng)的研究
0 引言
目前在Internet上廣泛使用基于公共密鑰的身份認(rèn)證機(jī)制,公鑰基礎(chǔ)設(shè)施PKI(Public KeyInfrastructure)就是通過使用公開密鑰技術(shù)和數(shù)字證書來確保系統(tǒng)信息安全并負(fù)責(zé)驗(yàn)證數(shù)字證書持有者身份的一種體系。在PKI中所有安全操作都是通過數(shù)字證書實(shí)現(xiàn)的,但基于X.509標(biāo)準(zhǔn),數(shù)字證書的主體名域中會標(biāo)有證書持有者的真實(shí)名稱等個(gè)人信息,這就造成了用戶個(gè)人身份信息的泄露。因此,這種實(shí)名數(shù)字證書就不能用在保護(hù)個(gè)人隱私的匿名服務(wù)中,如電子投票、電子選舉、匿名通信,所以,關(guān)于匿名證書的發(fā)布成為近幾年研究的熱點(diǎn),本文提出一種匿名數(shù)字證書發(fā)布方案,并在現(xiàn)有的PKI系統(tǒng)中構(gòu)建了一個(gè)匿名數(shù)字證書系統(tǒng)。
一、方案的描述
匿名證書發(fā)布方案中共有四個(gè)實(shí)體,分別是用戶、CA、AI和BI,其中AI和BI組成匿名證書域PCA.CA、AI和BI分別擁有自己的數(shù)據(jù)庫,用來存儲追蹤匿名證書時(shí)所用的加密信息。
PCA、AI和BI均由CA授權(quán)的機(jī)構(gòu)來擔(dān)任,并且分別擁有CA發(fā)布的數(shù)字證書。方案中使用RSA算法,定義AI和BI共享相同的公鑰參數(shù).
對于PCA的RSA私鑰d,為了產(chǎn)生各自的證書,把它分成兩部份,這樣AI和BI各自的私鑰分別是d2,d1,在這里d 有= dd1=dd21dm2mooddΦ((NN))。用戶至少應(yīng)該知道三個(gè)公鑰,PCA,AI和BI的公鑰,方案的假設(shè)條件是AI和BI不能串通。方案中使用的主要符號見表1.
1.匿名證書的發(fā)布
(1)CA通過安全信道為用戶U發(fā)布一個(gè)實(shí)名證書Cert,此時(shí)CA已經(jīng)確認(rèn)用戶的真實(shí)身份,并把實(shí)名證書存儲在CA庫中。
(2)用戶U設(shè)置匿名PNU,并產(chǎn)生匿名密鑰對.用戶通過選擇一個(gè)128位的隨機(jī)數(shù)ρ 來計(jì)算匿名證書的序列號SNU=H(APUU,ρ )。
用戶構(gòu)建一個(gè)X.509匿名證書的頭部b為:,這個(gè)匿名證書的內(nèi)容M為:.隨后,用戶計(jì)算h=H(M)。最后,用戶計(jì)算u=h·remodN,這里r在{0,1}之間隨機(jī)選擇(k=128),計(jì)算后把u的值以及用戶用自己的私鑰簽名的信息m傳給BI.
(3)當(dāng)BI收到信息后,BI通過用戶的公鑰驗(yàn)證簽名,確定用戶的身份。然后BI計(jì)算w=ud1modN,再把信息存儲在BI庫中,其中IDU為實(shí)名證書中用戶的主體唯一標(biāo)識。BI計(jì)算Ee(w),并把這個(gè)值返回給用戶U.
(4)當(dāng)用戶接到信息Ee(w)后,用戶計(jì)算sigAPRU(M),并把信息發(fā)送給AI.
(5)當(dāng)AI收到這個(gè)信息后,AI先驗(yàn)證sigAPRU(M)是否是合法有效的。然后,AI計(jì)算z=wd2modN.
AI驗(yàn)證z·r-1modN能否被證明。最后,AI把信息
2.匿名證書的撤銷
當(dāng)發(fā)現(xiàn)匿名證書被濫用、私鑰泄露或者證書過期時(shí)就需要對匿名證書進(jìn)行撤銷,由于本方案中的匿名證書是在用戶已獲得實(shí)名證書的基礎(chǔ)上由實(shí)名證書構(gòu)造而成的,所以匿名證書的撤銷就必須分兩步:撤銷實(shí)名證書和撤銷匿名證書,按照以下步驟就可以撤銷匿名證書。
(1)用戶向PCA提出匿名證書的撤銷請求,并提供相關(guān)個(gè)人信息。
(2)PCA根據(jù)匿名證書的序列號通過匿名證書追蹤功能追蹤到用戶的IDU.
(3)PCA把用戶的撤銷申請連同用戶的身份IDU發(fā)送給CA.
(4)CA根據(jù)用戶的IDU在CA庫中檢索出用戶的實(shí)名證書,核準(zhǔn)用戶信息后,批準(zhǔn)撤銷,把實(shí)名證書放入CRL中,并給PCA發(fā)送應(yīng)答信息。
(5)PCA對匿名證書進(jìn)行撤銷,把匿名證書放入CRL中,并把執(zhí)行結(jié)果發(fā)送給用戶。
3.方案的應(yīng)用
在實(shí)際的應(yīng)用中,很多網(wǎng)上活動都可以使用本方案中發(fā)布的匿名數(shù)字證書,特別是需要保護(hù)用戶的隱私又要能夠證實(shí)用戶身份的應(yīng)用中。在具體的實(shí)現(xiàn)方面,可以采用以下兩種情況:
(1)PCA域由AI和BI構(gòu)成,而AI和BI可以分別由CA授權(quán)的實(shí)體來擔(dān)任。例如,一個(gè)站點(diǎn)(或者由站點(diǎn)授權(quán)的CA)可以成為AI,而BI可以是法院,銀行,行事機(jī)關(guān)或其它政府代理機(jī)構(gòu)。
(2)這個(gè)方案最大的特點(diǎn)是允許在現(xiàn)有PKI體系中使用,在這種情況下,不需要對現(xiàn)行的PKI體系作任何修改就可以實(shí)現(xiàn)本方案,此時(shí),PCA域就由CA和RA來構(gòu)成,AI就可以由CA來擔(dān)任,BI可以由RA來擔(dān)任,則獲得匿名證書的過程如下:
①用戶向RA申請實(shí)名證書,填寫證書申請表。
②RA對用戶的身份進(jìn)行審核,審核通過后向CA提交證書申請請求。
③CA生成用戶實(shí)名證書,并把證書返回給RA.
④RA將實(shí)名證書發(fā)放給用戶。
⑤用戶根據(jù)實(shí)名證書構(gòu)造匿名證書,并對其哈希值盲化后發(fā)送給RA.
⑥RA對盲化后的匿名證書簽名,把簽名值給用戶。
⑦用戶把經(jīng)RA簽名后的值發(fā)送給CA.
⑧CA再對該值進(jìn)行簽名并發(fā)送給用戶,此時(shí)用戶就到了匿名證書及RA和CA對其進(jìn)行的簽名。
二、構(gòu)建匿名數(shù)字證書系統(tǒng)
本文根據(jù)提出的匿名證書發(fā)布方案設(shè)計(jì)了一個(gè)匿名數(shù)字證書系統(tǒng),本系統(tǒng)是按照通用的標(biāo)準(zhǔn)設(shè)計(jì)的,是采用先進(jìn)的信息安全技術(shù)開發(fā)的匿名數(shù)字證書簽發(fā)與管理系統(tǒng)。該匿名數(shù)字證書系統(tǒng)嚴(yán)格遵守ITU-TX.509標(biāo)準(zhǔn),其中應(yīng)用的全部協(xié)議都是被國際上廣泛采用的標(biāo)準(zhǔn)協(xié)議。本系統(tǒng)中公鑰/私鑰對的生成以及利用公鑰/私鑰對的加密/解密運(yùn)算采用可靠性極高的RSA算法,加密用的公開密鑰和私有密鑰的長度都是1024位。數(shù)字簽名中的摘要技術(shù)采用MD5算法,它是目前可靠性較好和應(yīng)用最為廣泛的算法。匿名數(shù)字證書系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
匿名數(shù)字證書系統(tǒng)包括下述主要功能:
1.申請匿名證書:若用戶已獲得由CA發(fā)布的實(shí)名證書,則用戶可以通過該功能由實(shí)名證書構(gòu)成匿名證書;若用戶沒有實(shí)名證書,則可以通過該功能先申請一個(gè)實(shí)名證書,再由此實(shí)名證書構(gòu)造匿名證書。此時(shí),申請人需要填寫申請實(shí)名證書的相關(guān)資料,由RA進(jìn)行審核,核準(zhǔn)后由CA簽發(fā)實(shí)名證書,并由RA頒發(fā)給用戶。
2.簽發(fā)匿名證書:構(gòu)造生成匿名證書后,經(jīng)由BI和AI處理器共同處理,得到由PCA簽發(fā)的匿名證書。
3.查詢匿名證書:用戶可以通過互連網(wǎng)直接訪問系統(tǒng)的LDAP證書庫查詢匿名證書和匿名證書撤銷列表CRL.
4.追蹤匿名證書:當(dāng)需要對匿名證書進(jìn)行追蹤時(shí),可通過此功能由匿名證書的序列號追蹤到用戶的真實(shí)身份。
5.撤銷匿名證書:系統(tǒng)可以根據(jù)用戶提出的匿名證書撤銷請求對指定的匿名證書及實(shí)名證書予以撤銷,并同時(shí)更新LDAP證書庫和證書撤銷列CRL.
三、匿名數(shù)字證書系統(tǒng)的實(shí)現(xiàn)
本系統(tǒng)中的CA,BI,AI都采用三層B/S架構(gòu),設(shè)計(jì)主要采用Java技術(shù)、數(shù)字簽名和加密等技術(shù),在實(shí)現(xiàn)過程中把RA集成在CA中,該系統(tǒng)主要有四個(gè)核心模塊:Web服務(wù)器模塊、CA服務(wù)器模塊、BI服務(wù)器模塊和AI服務(wù)器模塊。該匿名數(shù)字證書系統(tǒng)需要三臺服務(wù)器,分別是CA服務(wù)器、BI服務(wù)器和AI服務(wù)器。在三臺服務(wù)器上分別安裝WebLogic 8.1作為應(yīng)用服務(wù)器,安裝Oracel 10g企業(yè)版作為后臺數(shù)據(jù)庫。
1.申請匿名數(shù)字證書
由于本系統(tǒng)中的匿名證書是通過用戶已有的實(shí)名證書構(gòu)造而成的,所以若用戶沒有實(shí)名證書,可以先申請一個(gè)實(shí)名證書,若用戶已經(jīng)獲得一個(gè)實(shí)名證書,就可以直接進(jìn)入簽發(fā)匿名證書模塊。
(1)用戶申請和簽發(fā)實(shí)名證書
用戶申請實(shí)名證書需要填寫實(shí)名證書申請表并提交給CA服務(wù)器,CA服務(wù)器需要驗(yàn)證用戶的有效證書是否存在,如果不存在則首先生成自簽名證書,再使用服務(wù)器簽名證書私鑰進(jìn)行簽名,將證書存入證書數(shù)據(jù)庫,并將證書壓縮成zip格式通過Email發(fā)送給用戶。
①申請實(shí)名證書
用戶需要填寫申請個(gè)人證書申請表,其中公共名稱和單位名稱為確認(rèn)用戶或單位身份的主要字段。組織名稱、省、市、郵編為可選項(xiàng)。密鑰大小可選擇1024或2048.Email地址為生成證書時(shí)傳遞證書時(shí)使用,必須輸入有效的地址,否則申請不成功。
②生成密鑰
通過c o m . i b m . s e c u r i t y . x 5 0 9包中的CertAndKeyGen類設(shè)置生成證書的公鑰算法、簽名算法和Provider.若公鑰算法是RSA,則簽名算法為MD5withRSA;若公鑰算法為DSA,則簽名算法為SHA1withDSA.
③生成證書
生成證書過程又可以分為五個(gè)步驟,分別是生成主體信息,生成自簽名證書,提取自簽名證書信息,對自簽名證書信息進(jìn)行設(shè)置和形成證書。
④簽發(fā)證書
通過KeyStore對象獲得服務(wù)器證書的私鑰caprk,通過證書的簽名方法對新證書進(jìn)行簽名。
⑤把證書保存在證書庫中
在密鑰庫中生成新實(shí)體,并將新實(shí)體與新簽發(fā)的證書對應(yīng)。
⑥將證書壓縮發(fā)送給用戶
設(shè)計(jì)中使用BASE64Encoder類轉(zhuǎn)換為證書標(biāo)準(zhǔn)格式--BASE64編碼,編碼后的證書字符就可以在屏幕上顯示、復(fù)制或打印。為了作為Email附件進(jìn)行發(fā)送,必須將生成的證書編碼進(jìn)行壓縮,設(shè)計(jì)中使用ZipOutputStream類進(jìn)行處理,處理后生成zip格式的壓縮文件,然后通過編寫的發(fā)送郵件類MailandFile給用戶發(fā)送Email,申請證書過程完成。
(2)簽發(fā)匿名數(shù)字證書
簽發(fā)匿名證書的過程是由BI服務(wù)器和AI服務(wù)器共同來完成。該過程主要包括:構(gòu)造匿名證書、生成摘要并盲化、由BI服務(wù)器簽名和由AI服務(wù)器簽名。
①構(gòu)造匿名證書
匿名證書的構(gòu)造是通過應(yīng)用程序生成的匿名證書的主體名、匿名密鑰和匿名證書的序列號與取來的實(shí)名證書的其它字段的值共同構(gòu)造成匿名證書。通過調(diào)用KeyPairGenerator方法來生成匿名密鑰對,采用RSA算法,生成匿名證書序列號,通過使用SecureRandom類生成一個(gè)128位的隨機(jī)數(shù)r1,再使用MessageDigest對匿名公鑰及隨機(jī)數(shù)生成摘要形成匿名證書序列號sn,然后,通過調(diào)用X500Name類重新設(shè)置通用名,公鑰及序列號來構(gòu)造匿名證書。
②生成摘要及盲化
通過MD5算法對匿名證書生成摘要,并取隨機(jī)數(shù)進(jìn)行盲化,并調(diào)用定義的簽名類對證書進(jìn)行簽名以便BI對用戶身份驗(yàn)證,為BI驗(yàn)證用戶身份,用戶需要對證書進(jìn)行簽名。
③BI簽名
BI通過調(diào)用自定義的驗(yàn)證簽名類驗(yàn)證證書上的簽名來確認(rèn)用戶的身份,驗(yàn)證通過后記錄其身份標(biāo)識,然后BI調(diào)用簽名類對其進(jìn)行盲簽名。
④AI簽名
AI通過調(diào)用Verify Signature類驗(yàn)證用戶對匿名證書的簽名是否正確,驗(yàn)證通過后,再調(diào)用Signature類對BI簽名后的值進(jìn)行簽名。AI和BI聯(lián)合簽名后即為PCA對匿名證書的簽名。
2.追蹤匿名數(shù)字證書
匿名數(shù)字證書的追蹤是由站點(diǎn)提出追蹤匿名數(shù)字證書的申請請求,由AI服務(wù)器和BI服務(wù)器通過所存儲的值通過調(diào)用加密類PublicEncryption與解密類PrivateDecryption共同恢復(fù)出用戶的真實(shí)身份。
3.撤銷匿名數(shù)字證書
證書撤銷是在證書還未到期,提前停止證書的使用。撤銷證書的原因可能有許多,包括用戶密鑰泄露、身份改變、證書的使用用途終止、CA私鑰泄露等。
最常用的證書吊銷機(jī)制是經(jīng)常發(fā)布證書撤銷列表(CRL)。CRL是由CA簽發(fā)的包括己經(jīng)撤銷的未過期證書的證書序列號及撤銷日期和撤銷原因的數(shù)據(jù)結(jié)構(gòu)。根據(jù)CRL列表更新方法不同CRL可分為:傳統(tǒng)CRL證書撤銷機(jī)制,重復(fù)發(fā)布CRL證書撤銷機(jī)制,增量CRL證書撤銷機(jī)制。本設(shè)計(jì)中使用的是CRL證書撤銷機(jī)制,它是一種有效的并具有較好伸縮性的方法。
由于匿名證書的匿名性,所以在撤銷時(shí)必須先由匿名證書追蹤到實(shí)名證書,由實(shí)名證書對用戶真實(shí)身份的進(jìn)行證實(shí)的基礎(chǔ)上才能對匿名證書進(jìn)行撤銷,此過程可以完成只撤銷匿名證書或者同時(shí)撤銷實(shí)名證書和匿名證書兩種功能。
①撤銷申請:用戶需要填寫撤銷匿名證書的申請表,其中證書別名只能為用戶名,系統(tǒng)自動生成,用戶不能進(jìn)行修改,公共名稱為申請匿名證書的公共名稱。
②撤銷實(shí)名證書:通過系統(tǒng)提供的匿名證書的追蹤功能可以由匿名證書的序列號追蹤到用戶的真實(shí)身份,從而可以確定用戶的實(shí)名證書,若需要對實(shí)名證書進(jìn)行撤銷,此時(shí),可以由CA把實(shí)名證書的的序列號簽發(fā)到CRL中。
③撤銷匿名證書:在由追蹤到的實(shí)名證書對申請人的身份進(jìn)行核實(shí)后,可以對匿名證書進(jìn)行撤銷,由PCA對匿名證書的序列號簽發(fā)到CRL中,用戶可以通過訪問LDAP目錄等方式進(jìn)行查詢。
四、結(jié)束語
本文提出了一個(gè)匿名數(shù)字證書發(fā)布方案并依此構(gòu)建了一個(gè)匿名數(shù)字證書管理系統(tǒng),它的實(shí)現(xiàn)還要受到很技術(shù)因素的影響,但隨著人們對隱私與安全問題的日益關(guān)注,基于PKI的匿名數(shù)字證書發(fā)布方案的研究也會逐步成熟,可以預(yù)測伴隨著網(wǎng)絡(luò)和信息安全技術(shù)的不斷發(fā)展,關(guān)于匿名數(shù)字證書的研究將會取得實(shí)質(zhì)性的突破,匿名數(shù)字證書將會得到更廣泛的應(yīng)用。