費(fèi)之茵
為解決網(wǎng)絡(luò)安全問題,世界各國對其進(jìn)行了多年的研究,初步形成了一套完整的基于Internet的安全解決方案,即目前被廣泛采用的公鑰基礎(chǔ)設(shè)施PKI,而簽發(fā)數(shù)字證書的CA則是PKI的核心。CA的基本功能有:證書簽發(fā)、證書更新、證書撤銷和證書驗證。其核心功能就是發(fā)放和管理數(shù)字證書。
政府內(nèi)網(wǎng)CA的需求分析
政府內(nèi)網(wǎng)CA是相對于整個Internet CA而言的。Internet CA要對全球范圍內(nèi)各種人員提供服務(wù),要考慮方方面面的需要。因此其結(jié)構(gòu)復(fù)雜、開發(fā)周期長、軟硬件規(guī)模龐大、投資成本高昂、部署困難、使用和維護(hù)復(fù)雜。
目前,很多政府內(nèi)部建立了Intranet,在內(nèi)部網(wǎng)中同樣需要保證信息的安全。在一個單位中部署Internet CA顯然是不現(xiàn)實的,這就需要一個適合在至多有數(shù)千用戶的政府部門內(nèi)部使用的CA。雖然它僅具有Internet CA的部分功能,但它足以滿足需求,同時對它另一方面的要求是結(jié)構(gòu)簡單、開發(fā)周期短、軟硬件規(guī)模小、投資成本較低、易部署、使用和維護(hù)簡單。我們與某計算機(jī)公司合作,設(shè)計并實現(xiàn)了政府內(nèi)網(wǎng)CA。
1.總體需求
系統(tǒng)應(yīng)部署簡單,用戶使用方便。用戶申請、更新、撤銷、查詢下載證書都應(yīng)通過瀏覽器進(jìn)行。只需在身份驗證的時候到CA辦公地點(diǎn)離線審核。
CA簽發(fā)的證書要符合x.509 v3國際標(biāo)準(zhǔn)。
由于需要針對不同的繁忙程度,因此各軟件模塊可分別在不同服務(wù)器上運(yùn)行,也可在同一臺服務(wù)器上運(yùn)行。
由于僅在一個單位內(nèi)部使用,無需設(shè)置遠(yuǎn)程RA(Registration Authority)。對于用戶分散的部門,可通過電話聯(lián)系或部門領(lǐng)導(dǎo)對部門員工集體注冊等方式解決身份驗證的問題。
由于至多有數(shù)千用戶,證書的撤銷操作較少,政府內(nèi)網(wǎng)CA不設(shè)置0CSP服務(wù)器,證書撤銷驗證采用CRL。可令CRL中的下次更新時刻與此次更新時刻的間隔較短,比如幾天。同時每次有證書撤銷操作時都更新CRL。這樣既不會增加多少服務(wù)器的負(fù)擔(dān),又保證了CRL的實時性。
同樣由于用戶較少,也不需查詢速度較快的LDAP服務(wù)器:由于一般用戶對數(shù)據(jù)庫非常熟悉,可將用戶證書同其他信息一同存于數(shù)據(jù)庫中。
2.軟件需求
為盡可能在一臺服務(wù)器上運(yùn)行多個軟件模塊,各服務(wù)器必須使用同一種操作系統(tǒng)。在實現(xiàn)中,為使用戶操作簡便,我們選用了Windows 2003 Server SP1。
考慮到有較多的底層密碼操作,也為了提高軟件的移植性,各軟件模塊中與用戶界面無關(guān)的部分統(tǒng)一用標(biāo)準(zhǔn)C++語言開發(fā)。
密碼操作使用何種方式實現(xiàn)是一個復(fù)雜的問題??墒褂梦④浀腃ryptoAPI,自己作為CSP(Cryptographic Service Provider)來實現(xiàn)對密碼硬件設(shè)備的操作,但這需要微軟對CSP的簽名。也可以根據(jù)PKCS#11標(biāo)準(zhǔn)編制自己的密碼操作庫。在實現(xiàn)中,我們使用了該計算機(jī)公司已有的符合PKCS#11標(biāo)準(zhǔn)的密碼操作庫。
3.硬件需求
盡量減少服務(wù)器的數(shù)量,尤其要減少昂貴的密碼硬件設(shè)備的數(shù)量。為了系統(tǒng)的安全,CA私鑰、系統(tǒng)主密鑰(一個對稱密鑰,用于加密敏感信息)等高度敏感的信息必須使用密碼硬件設(shè)備存儲,密碼硬件設(shè)備同時完成各種基本的密碼操作??紤]到用戶較少,可用一臺加密機(jī),或只用一臺裝有加密卡的普通服務(wù)器。
4.功能需求
要盡可能靈活,給用戶盡可能多的選擇。用戶申請新證書時,有密鑰托管與不托管兩種選擇。所謂密鑰托管,是指用戶的公私鑰對由CA產(chǎn)生;密鑰不托管,則指用戶的公私鑰對由用戶自己產(chǎn)生,并產(chǎn)生PKCS#10請求。
政府內(nèi)網(wǎng)CA的總體設(shè)計
1.政府內(nèi)網(wǎng)CA的軟件模塊劃分
用戶證書申請及管理模塊:主要以網(wǎng)頁形式提供證書申請、證書更新、證書撤銷、證書/CRL的查詢/下載、PKCS#12包的下載等功能。各種證書請求直接存入數(shù)據(jù)庫,各種查詢/下載直接從數(shù)據(jù)庫中讀取數(shù)據(jù)。
CA管理模塊:CA管理模塊對系統(tǒng)進(jìn)行日常的配置和管理。提供各種證書請求的審核、CA策略設(shè)定、系統(tǒng)監(jiān)控、操作員管理、日志管理、統(tǒng)計報表以及各種查詢功能。將各種證書請求從數(shù)據(jù)庫中讀出供操作員審核,審核通過后調(diào)用CA服務(wù)模塊進(jìn)行處理。
CA服務(wù)模塊:這是CA的核心,由CA管理模塊調(diào)用。對各種證書請求進(jìn)行處理,如證書的簽發(fā)、更新、撤銷、CRL的生成等,并將處理結(jié)果存入數(shù)據(jù)庫。其中的密碼操作調(diào)用密碼服務(wù)模塊。
密碼服務(wù)模塊:由CA服務(wù)模塊調(diào)用。執(zhí)行產(chǎn)生用戶公私鑰對、對證書及CRL簽名及驗證簽名、對稱密鑰加密解密等密碼操作。產(chǎn)生的用戶公私鑰對經(jīng)系統(tǒng)主密鑰加密后存入數(shù)據(jù)庫。
數(shù)據(jù)庫模塊:存儲各種數(shù)據(jù)。如CA的各種參數(shù)、用戶的證書和PKCS#12包、用戶的公私鑰對。注意應(yīng)將敏感信息加密后存儲。
2.政府內(nèi)網(wǎng)CA的硬件配置
政府內(nèi)網(wǎng)CA的硬件配置包括:數(shù)據(jù)庫服務(wù)器、CA服務(wù)器、密碼服務(wù)器、Web服務(wù)器、管理Pc機(jī)分別運(yùn)行數(shù)據(jù)庫模塊、CA服務(wù)模塊、密碼服務(wù)模塊、用戶證書申請及管理模塊、CA管理模塊。密碼服務(wù)器為一臺裝有加密卡的普通服務(wù)器。對于較大的政府部門,可不用加密卡,而另設(shè)一臺加密機(jī)。
在實際使用中,根據(jù)用戶的多少,可以將幾個軟件模塊置于一臺服務(wù)器上運(yùn)行,以節(jié)省硬件投資。如將CA服務(wù)模塊和密碼服務(wù)模塊放在一臺服務(wù)器上運(yùn)行。另外,很多政府部門都已有政府內(nèi)網(wǎng)Web服務(wù)器,可根據(jù)需要靈活使用。
政府內(nèi)網(wǎng)CA各軟件模塊的詳細(xì)設(shè)計及實現(xiàn)
1.用戶證書申請及管理模塊
本模塊直接面向最終用戶,要求操作簡單、功能靈活。由于服務(wù)器操作系統(tǒng)使用Windows 2003 Server SP1,因此Web服務(wù)器我們選用了微軟操作系統(tǒng)內(nèi)置的IIS,網(wǎng)頁使用ASP.net2.0技術(shù)、AJAX技術(shù)、COM技術(shù)和ActiveX技術(shù)。由于要傳送口令、PKCS#12包等敏感數(shù)據(jù),IIS配置成使用SSL保護(hù)。
(1)用戶注冊功能??紤]到用戶管理已有證書的需要,同時用戶可能申請多個不同類型的證書,因此用戶首先要注冊。建立用戶名和口令,同時填寫申請證書時用到的基本信息。在網(wǎng)頁中要用AJAX腳本對各項內(nèi)容進(jìn)行合法性檢查。
(2)證書申請功能。用戶可以選擇密鑰托管或不托管。如果密鑰托管,用戶只需選擇證書類型,并且設(shè)立PKCS#12包的口令。證書及私鑰將封入一個PKCS#12包供下載。如果密鑰不托管,用戶可以提交一個已有的PKCS#10請求,也可以選擇智能卡或USB KEY等硬件設(shè)備生成標(biāo)準(zhǔn)的PKCS#10請求,必須編寫操作智能卡或USB KEY等硬件設(shè)備的ActiveX控件。如果沒有硬件設(shè)備,也可以直接利用微軟的ActiveX控件XEnroll.dll中接口ICEnroll的方法createPKCS10產(chǎn)生PKCS#10請求。在具體實現(xiàn)中,我們實現(xiàn)了以上全部的選項。
(3)個人證書管理功能。用戶輸入用戶名和口令后,可從這里完成證書的各種管理功能。為防止黑客編程反復(fù)嘗試口令,可在輸入口令頁面中以圖片的形式放置驗證碼,還可考慮采用一次性口令等技術(shù)提供更高的安全性。
用戶可對自己的證書提出更新、撤銷等請求;也可以下載證書或PKCS#12包;還可以修改PKCS#12包的口令。證書或PKCS#12包下載后可導(dǎo)入系統(tǒng)的證書存儲區(qū),也可以導(dǎo)入智能卡或USB KEY等硬件設(shè)備,還可以另存為文件。這些功能均需通過ActiveX控件來完成。還需編寫COM組件來完成修改PKCS#12包口令的功能。
值得考慮的是,如何下載PKCS#12包。PKCS#12包中有用戶的私鑰,非常重要。為順利通過防火墻和NAT網(wǎng)關(guān)等設(shè)備,PKCS#12包的下載ActiveX控件實現(xiàn),該控件采用直接向Web服務(wù)器發(fā)送HTPP請求,由ActiveX控件直接下載,不通過瀏覽器下載,避免在瀏覽器臨時文件夾中留有痕跡,安全性高。
2.CA系統(tǒng)管理模塊
(1)系統(tǒng)初始化。本模塊完成整個政府內(nèi)外CA系統(tǒng)的初始化,包括數(shù)據(jù)庫表的創(chuàng)建,CA根證書及私鑰、管理員證書及私鑰的生成。僅在安裝完成后運(yùn)行一次。
(2)系統(tǒng)登錄。操作人員都擁有智能卡或USB KEY等硬件設(shè)備,存放其證書和私鑰。登錄時用其證書及私鑰執(zhí)行鑒別協(xié)議。每個操作人員登陸后可進(jìn)行日常的系統(tǒng)管理操作,如查看日志、統(tǒng)計數(shù)據(jù)、修改系統(tǒng)的設(shè)置。
(3)證書請求處理。本模塊主要實現(xiàn)對各種證書請求的審核,審核通過后則通過套接字編程調(diào)用CA服務(wù)模塊處理。僅發(fā)送一個請求序列號給CA服務(wù)模塊,CA服務(wù)模塊據(jù)此從數(shù)據(jù)庫中取出有關(guān)數(shù)據(jù)處理,然后將處理結(jié)果直接存入數(shù)據(jù)庫,同時發(fā)給證書請求處理模塊一個結(jié)果狀態(tài)代碼。
(4)查詢統(tǒng)計和日志管理。本模塊能夠查詢統(tǒng)計用戶和證書等的信息。并能記錄操作人員在系統(tǒng)中的操作及操作結(jié)果等信息,以備日后核查。
(5)系統(tǒng)設(shè)置。本模塊主要設(shè)置證書有效期,使用算法等CA策略。還完成操作人員的添加、刪除、查詢、更新等功能。只能由管理員來做。
3.CA服務(wù)模塊
本模塊以后臺守護(hù)進(jìn)程的方式運(yùn)行,監(jiān)聽并接收CA管理模塊發(fā)來的請求序列號。根據(jù)請求序列號,從數(shù)據(jù)庫中獲取請求類型和用戶信息,完成證書簽發(fā)、撤銷和更新等操作,并將簽好的證書、CRL及PKCS#12包存人數(shù)據(jù)庫。然后給CA管理模塊返回處理結(jié)果狀態(tài)代碼。
(1)證書簽發(fā)處理。根據(jù)請求序列號,從數(shù)據(jù)庫中取出用戶基本信息和用戶請求信息。如果用戶選擇了密鑰托管,則從數(shù)據(jù)庫中取出一未用公私鑰對。經(jīng)系統(tǒng)主密鑰解密后,根據(jù)用戶信息為用戶制作證書和PKCS#12包,再將其存入數(shù)據(jù)庫,PKCS#12包必須用系統(tǒng)主密鑰加密;如果用戶選擇了密鑰不托管,則先解開PKCS#10包,然后根據(jù)解出的信息為用戶制作證書,最后把證書存入數(shù)據(jù)庫。
所有的簽名和驗證簽名、對稱密鑰加解密等密碼操作都需調(diào)用密碼服務(wù)模塊來完成。
(2)證書撤銷處理。根據(jù)請求序列號,在數(shù)據(jù)庫中添加該證書的撤銷信息,將此證書歸檔。由于用戶不多,證書撤銷后立即刷新CRL。CRL能簽名操作需調(diào)用密碼服務(wù)模塊來完成。
(3)證書更新處理。這是證書撤銷和申請的結(jié)合。即撤銷原有證書,申請新證書。不再贅述。
4.密碼服務(wù)模塊
本模塊主要完成公私鑰對的生成,以及簽名和驗證簽名、對稱密鑰加解密等密碼操作。本模塊也以后臺守護(hù)進(jìn)程的方式運(yùn)行,監(jiān)聽并接收CA服務(wù)模塊發(fā)來的請求。
(1)密鑰數(shù)量監(jiān)控。生成公私鑰對是非常消耗時間資源的操作。本模塊隨時監(jiān)控數(shù)據(jù)至中未用公私鑰對的數(shù)量,當(dāng)未用公私鑰對少于某一數(shù)值時,以較低的運(yùn)行優(yōu)先級啟動密碼硬件設(shè)備生成一定數(shù)量的公私鑰對,系統(tǒng)主密鑰加密后存入數(shù)據(jù)庫。
(2)簽名和驗證簽名。根據(jù)CA服務(wù)模塊發(fā)來的請求,調(diào)用密碼硬件設(shè)備完成簽名和驗證簽名等密碼操作。
(3)其他密碼操作。調(diào)用密碼硬件設(shè)備完成對稱加解密、生成哈希值等其他密碼操作。如利用系統(tǒng)主密鑰加解密敏感數(shù)據(jù)。
5.?dāng)?shù)據(jù)庫模塊
本模塊比較簡單,根據(jù)需要建立幾十個基表即可,用不到存儲過程、觸發(fā)器等復(fù)雜對象。不再贅述。
在PKI中,CA實現(xiàn)了對證書申請者的身份驗證以及簽發(fā)、管理數(shù)字證書的過程。政府內(nèi)網(wǎng)CA具有CA的基本功能,且具有配置簡單,靈活易用的優(yōu)點(diǎn)。對于政府部門具有較強(qiáng)的針對性和推廣應(yīng)用前景。
(作者單位:南京市建設(shè)工程交易中心信息部)