◆陳 超
?
基于公鑰體制的CA平臺設(shè)計與實現(xiàn)
◆陳 超
(江蘇建筑職業(yè)技術(shù)學(xué)院信息傳媒與藝術(shù)學(xué)院 江蘇 221116)
本文基于公鑰體制的CA平臺設(shè)計與實現(xiàn),設(shè)計一個具有申請證書、簽發(fā)證書、作廢證書、密鑰管理的數(shù)字認證平臺。主要的目標(biāo)是通過本文的設(shè)計,具體闡述數(shù)字證書的簽發(fā)流程、數(shù)據(jù)結(jié)構(gòu)、簽發(fā)算法、非對稱密鑰具體實現(xiàn)過程,證書作廢的關(guān)鍵技術(shù)、安全協(xié)議的實現(xiàn)方法、非對稱密鑰加密解密的方法和管理。課題最終目的是開發(fā)一個基于SSL協(xié)議的數(shù)字認證平臺,實現(xiàn)申請數(shù)字證書、簽發(fā)證書、更新證書、作廢證書和密鑰管理的功能;實現(xiàn)數(shù)據(jù)在安全信道中傳輸。
公鑰體制;CA;SSL協(xié)議
CA是數(shù)字證書認證中心的簡稱,是一個需要被客戶信任的權(quán)威簽發(fā)機構(gòu),信任CA的機構(gòu)對CA所認證的實體也是無條件信任的。21世紀作為信息時代,作為大數(shù)據(jù)時代,網(wǎng)絡(luò)安全、信息安全和數(shù)據(jù)的安全傳輸?shù)氖切畔r代和大數(shù)據(jù)時代的基本保障。數(shù)字證書是作為實現(xiàn)網(wǎng)絡(luò)安全和保護數(shù)據(jù)資料在網(wǎng)絡(luò)安全傳輸?shù)幕竟ぞ?,對其?shù)據(jù)結(jié)構(gòu),簽發(fā)流程,簽發(fā)算法以及簽發(fā)機構(gòu)證書進行深入研究。
電子商務(wù)正在蓬勃的發(fā)展,電子支付是電子商務(wù)的核心的技術(shù),保障電子支付安全的手段之一是SSL ,數(shù)字證書為SSL協(xié)議的核心技術(shù)。對CA平臺的模擬,對網(wǎng)絡(luò)安全和數(shù)據(jù)傳輸安全的學(xué)習(xí)和研究,符合電子商務(wù)發(fā)展的要求,符合計算機科學(xué)與技術(shù)現(xiàn)在社會的發(fā)展趨勢。
對數(shù)字認證平臺的模擬實現(xiàn)能夠深層次地剖析數(shù)字認證的流程、能夠了解數(shù)字認證的核心技術(shù)、在模擬的過程中也能對數(shù)字認證現(xiàn)在的發(fā)展趨勢以及發(fā)展模式有較好的認識。本文最終成果為設(shè)計開發(fā)一個具備基本功能的數(shù)字認證中心的網(wǎng)站,具有前臺后臺的管理,能夠模擬實現(xiàn)數(shù)字認證的基本功能。
需求分析能夠讓我們在平臺設(shè)計之前了解平臺架構(gòu),更好服務(wù)于進一步設(shè)計與實現(xiàn)工作,以下以數(shù)據(jù)流圖為主線,介紹需求。
實現(xiàn)數(shù)據(jù)認證中心的主要流程如圖1,用戶發(fā)出證書申請或者證書作廢申請,數(shù)字認證中心管理員收到用戶的申請后,通過審核,發(fā)出簽發(fā)命令或者撤銷命令,然后用戶從數(shù)字認證中心下載數(shù)字證書或者已作廢的證書。
圖1 頂層數(shù)據(jù)流圖
如圖2,數(shù)字認證中心的主要功能可以分為前臺申請和后臺審核,用戶在數(shù)字認證中心的門戶網(wǎng)站上提出申請,數(shù)字認證中心將用戶的申請存儲在證書狀態(tài)表里;管理員可以通過后臺審核系統(tǒng)得到用戶申請,管理員通過審核后可以發(fā)出簽發(fā)命令或者撤銷命令,數(shù)字認證中心接受管理員命令有生成數(shù)字證書與密鑰文件,系統(tǒng)更新證書狀態(tài)表,將作廢證書信息存入作廢證書表;用戶可以獲得數(shù)字證書與證書吊銷列表。
圖2 0層數(shù)據(jù)流圖
如圖3,用戶通過用戶權(quán)限管理進行注冊申請,把用戶信息存入用戶權(quán)限表;用戶查詢證書相關(guān)信息時,系統(tǒng)根據(jù)用戶權(quán)限表和用戶的請求與權(quán)限,讀取系統(tǒng)的作廢證書表與證書狀態(tài)表,把相應(yīng)的信息反饋給用戶。
圖3 申請系統(tǒng)數(shù)據(jù)流圖
圖4 審核系統(tǒng)數(shù)據(jù)流圖
總體設(shè)計的階段將系統(tǒng)需求細化成一個個的功能模塊,整個數(shù)字認證中心分為用戶模塊和管理員模塊。
通過對數(shù)字認證系統(tǒng)的需求分析,可以將基于公鑰體制的CA平臺功能模塊劃分為用戶模塊和管理員模塊。
(1)證書申請模塊
用戶可以申請個人數(shù)字證書、安全郵箱證書和安全站點證書,在申請過程中需要填寫申請信息。
(2)證書查詢模塊
用戶可以查詢個人數(shù)字證書、安全郵箱證書、安全站點證書信息,并且可以根據(jù)每種數(shù)字證書的特點按不同的條件查詢證書。對于個人數(shù)字證書,可以根據(jù)證書持有者人的姓名、郵箱、身份證號碼以及證書的序列號查詢;對于安全郵箱證書,可以根據(jù)安全郵箱的地址、申請人的姓名、身份證號以及證書的序列號查詢;對于安全站點證書,可以根據(jù)服務(wù)器的域名以及證書的序列號查詢。
(3)根證書下載模塊
要使用該數(shù)字認證平臺簽發(fā)的證書,必須先下載該證書認證中心的根證書。
用戶個人信息模塊:在用戶個人信息模塊中,提供注冊和找回密碼的功能;還可以修改該用戶已發(fā)出數(shù)字證書簽發(fā)的申請,或者撤銷申請;用戶可以更新已經(jīng)簽發(fā)的證書,包括延長證書的使用時期和作廢已經(jīng)簽發(fā)的證書;用戶可以下載證書對應(yīng)的密鑰和修改已簽發(fā)證書的密鑰密令。
查詢證書作廢模塊:在查詢證書作廢模塊中,用戶可以查詢作廢證書的信息和下載數(shù)字認證中心所簽發(fā)的證書吊銷文件。
管理員模塊功能描述如下:
(1)簽發(fā)證書模塊
在證書簽發(fā)模塊中,管理員可以簽發(fā)數(shù)字證書,包括生成數(shù)字證書密鑰、生產(chǎn)數(shù)字證書公鑰、簽發(fā)數(shù)字證書。
(2)更新證書模塊
在更新證書模塊中,管理員可以續(xù)期證書和作廢證書。續(xù)期證書只需要對用戶的公鑰重新簽名就可以了;對于作廢證書,需要把證書信息發(fā)布到系統(tǒng)前臺和簽發(fā)證書作廢列表文件,并固改時間更新用戶下載的證書作廢列表文件。
(3)密鑰管理模塊
在密鑰管理系統(tǒng)中,管理員根據(jù)用戶的申請可以修改密鑰密令。管理員要進入后臺管理系統(tǒng),先經(jīng)過管理員權(quán)限審核,管理員的信息存儲在管理權(quán)限表里;管理員看到用戶的請求后,系統(tǒng)讀取證書狀態(tài)表,管理員發(fā)出簽發(fā)信息,系統(tǒng)將證書信息發(fā)到前臺;用戶收到用戶作廢請求后,打出作廢命令,系統(tǒng)將信息存儲到作廢表中,并將作廢證書信息發(fā)到前臺。
(1)注冊
用戶申請需填寫相關(guān)信息,如姓名,電子郵箱,性別,密碼,確認密碼等。考慮到本系統(tǒng)的會有外國人,會有中間名的情況,注冊信息中包含了中間名,但其并非是必填項。
(2)用戶登錄及忘記密碼
對于已經(jīng)注冊過的申請人,可以直接進行登錄操作。即填寫注冊時所用電子郵箱、密碼及當(dāng)前頁刷新出的驗證碼,通過驗證后即可進行申請研究生的下一步環(huán)節(jié)。
(3)基本信息錄入
用戶需要錄入大量信息,其中,包括基礎(chǔ)信息、家庭信息、受教育信息、工作經(jīng)驗、和語言能力。
在設(shè)計與開發(fā)基于公鑰體制的CA平臺時,首先應(yīng)該實現(xiàn)的功能是數(shù)據(jù)的安全傳輸。為實現(xiàn)數(shù)據(jù)的安全傳輸首先應(yīng)該實現(xiàn)SSL鏈接。
(1)安裝證書
為建立SSL鏈接,首先需要一個數(shù)字證書,這里直接使用利用keytool生成的自簽名的證書,其CN=www.tieshan.com,默認CN選項應(yīng)該與域名想對應(yīng)。
(2)域名綁定
由于我們證書的CN=www.tieshan.com,在使用本地服務(wù)器時,需要將域名www.tieshan.com綁定到本地主機上,在Windows中打開hosts文件,在電腦的C:WINDOWSsystem32driversetc路徑下,如綁定成功打開命令提示符,輸入ping www.tieshan.com的命令,命令執(zhí)行成功,將會看到看到如圖5所示。
圖 5 命令提示符ping www.tieshan.com命令截圖
綁定域名之后輸入地址www.tieshan.com:8433之后將正常顯示Tomcat服務(wù)器的主頁面信息,如圖6所示。
圖6 綁定域名后瀏覽器顯示截圖
(3)配置服務(wù)器
建立SSL鏈接,需要將證書信息配置到Tomcat服務(wù)器安裝目錄下的server.xml文件,在我的電腦里D: omcatconf目錄下。其配置代碼如下所示:
;
protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" keystoreFile="E:caca.keystore" keystorePass="123456" sslProtocol="SSL" /> (4)建立SSL鏈接 重新啟動Tomcat服務(wù)器,打開谷歌瀏覽器,在地址欄里輸入https://www.tieshan.com:8443/,就可以建立安全鏈接了。 雖然keytool可以直接生成密鑰與自簽名證書,但我們不僅僅是為了生成密鑰與證書,而要把生成密鑰與自簽名的證書的功能融入到系統(tǒng)中,在生成證書的時候,需要查詢用戶的申請,然后手動的輸入命令提示符命令式不合理的,所以需要設(shè)計一個可以自動生成密鑰與自簽名證書的代碼。 (1)實現(xiàn)系統(tǒng)調(diào)用 為了能夠利用Java代碼生成密鑰與數(shù)字證書,必須能夠用Java代碼調(diào)用keytool工具,而keytool并沒有提供能直接被Java調(diào)用的接口。但keytool工具可以再命令提示符下利用doc命令執(zhí)行,而Java語言提供了調(diào)用命令提示符的方法。我們可以通過調(diào)用命令提示符來實現(xiàn)Java代碼控制keytool的目的。 (2)生成密鑰 首先,我們把生成密鑰與證書的代碼放在一個ExportCertFormKeystore類里,生成密鑰與證書為這個類的成員方法。我們需要先設(shè)計一個方法execCommand(String[] arstringCommand),可以實現(xiàn)系統(tǒng)調(diào)用的命令。 其次我們需要利用execCommand(String[] arstringCommand)實現(xiàn)系統(tǒng)調(diào)用keytool工具,設(shè)計一個生成密鑰的方法genkey(int years,String alias,String storefile,String dname,String keypassword)。 (3)生成證書 生成密鑰之后,就要根據(jù)密鑰的信息,通過系統(tǒng)調(diào)用,使用execCommand(String[] arstringCommand)調(diào)用keytool工具,實現(xiàn)生成證書文件的功能,設(shè)計一個生成證書方法為gencert(String storefile,String alias,String certfile,String keypassword)其中參數(shù)含義分別是證書的密鑰文件路徑,證書別名,證書的文件路徑,證書的密鑰密令。 keytool工具只有生成密鑰和自簽名證書的方法,并不能簽發(fā)證書,而要實現(xiàn)證書的簽發(fā)必須利用java語言提供的有關(guān)security的包,這里詳細解析一下簽發(fā)證書的代碼。 首先,導(dǎo)入需要應(yīng)用的到j(luò)ar包。我們把簽發(fā)證書的方法放在一個SignCert的類里。 3.3.1簽發(fā)流程 圖7 證書簽發(fā)程序流程圖 如圖7所示,證書簽發(fā)內(nèi)容在方法Sign(),簽發(fā)證書的流程為:首先使用getSignCertInfo()獲取根證書信息;然后用signCertificate()簽發(fā)代簽名的數(shù)字證書;最后使用createNewCertificate()創(chuàng)建和保存簽名證書的信息。 3.3.2獲取簽名證書 使用getSignCertInfo()獲取簽名信息,如圖8所示。 其實現(xiàn)流程為: (1)定義一個名為 vFin文件流FileInputStream將根證書的密鑰文件keystore進行讀?。?/p> (2)利用密鑰文件的keystore的密令將vFin文件流用用keystore類的成員方法keystore.load(FileInputStream,Stirng)獲取密鑰庫的信息; (3)然后將密鑰庫信息轉(zhuǎn)換成X509CertInfo的信息,并將密鑰庫中的私鑰密鑰提取出來保存。 圖8 獲取簽名證書信息 3.3.3簽發(fā)數(shù)字證書 圖9 簽發(fā)數(shù)字證書程序流程圖 簽發(fā)證書的流程為: (1)從keytool生成的cer自簽名證書中獲取被簽名證書信息; (2)將證書轉(zhuǎn)換可以識別的X.509形式; (3)利用證書類的set方法設(shè)置被簽名證書的設(shè)置有效日期、序列號、簽名者、數(shù)字簽名算法。 然后將證書類保存到指定的文件中去,就實現(xiàn)了簽發(fā)證書的算法,在基于公鑰體制的CA平臺設(shè)計與開發(fā)過程中,把簽發(fā)算法放到Struts2的Action類中,管理員可以通過讀取用戶的申請,自行設(shè)置證書的主體信息。 在生成作廢列表中,僅僅用到j(luò)dk中的包是遠遠不夠的,生成作廢列表應(yīng)該是系統(tǒng)重點難點,不僅需要對證書作廢列表的數(shù)據(jù)結(jié)構(gòu)和編碼有所了解,更需要熟悉Bouncy Castle 類。 3.4.1生成證書作廢列表的流程 (1)根據(jù)keytool生成的keystore文件獲取私鑰與公鑰; (2)將當(dāng)前時間設(shè)置為證書作廢時間; (3)將作廢證書的序列號導(dǎo)入證書作廢列表中; (4)用keystore文件里證書簽發(fā)者的信息對證書作廢文件進行簽名; (5)設(shè)置證書作廢的原因; (6)將證書作廢列表的信息編碼保存到crl文件里。 3.4.2更新證書作廢列表crl文件 更新證書作廢列表即把新的作廢證書的序列號以及作廢原因?qū)氲阶C書作廢列表文件crl中,理論上一個數(shù)字認證中心對外發(fā)布一個最新證書作廢列表供用戶下載就行了。更新證書作廢列表crl文件流程如下: (1)根據(jù)keytool生成的keystore文件讀取根證書的密鑰與證書信息; (2)根據(jù)根證書的密鑰里的私鑰讀取crl文件信息; (3)生成一個空值的證書作廢條目; (4)將當(dāng)前時間設(shè)置為證書作廢時間; (5)將作廢證書的序列號導(dǎo)入證書作廢列表中; (6)設(shè)置證書作廢的原因; (7)將證書作廢列表的信息編碼保存到crl文件里。 3.5.1 密鑰校驗 密鑰校驗過程主要流程為: (1)首先輸入用于校驗一個字符串; (2)將這個字符用getBytes("GBK")取得該字符的GBK編碼; (3)用事先定義的方法從密鑰文件中讀取私鑰信息; (4)對該字符串的GBK編碼用私鑰進行加密; (5)將加密的GBK編碼,采用String(GBK)的格式輸出; (6)讀取對應(yīng)證書的公鑰信息; (7)用公鑰對私鑰加密后的GBK編碼進行解密; (8)將解密后的編碼,采用String(GBK)格式輸出。 我們比較加密前后的String是否相同就可以校驗私鑰加密公鑰解密的過程。 3.5.2修改密鑰密令 修改密鑰文件keystore的密鑰密令可以通過java.security.cert包直接keystore.load( )和keystore.store( )實現(xiàn)。 本文主要闡述了完成一個功能完整數(shù)字認證系統(tǒng)的設(shè)計,完成了具有證書申請、證書簽發(fā)、證書更新、證書查詢、證書作廢,密鑰管理、證書作廢功能的數(shù)字認證系統(tǒng)。數(shù)字認證系統(tǒng)是一個關(guān)乎網(wǎng)絡(luò)安全的核心系統(tǒng),網(wǎng)絡(luò)安全在日常的商用領(lǐng)域,關(guān)系到每個網(wǎng)名的的切身利益;在軍事領(lǐng)域,尤其是現(xiàn)在信息技術(shù)用戶軍事領(lǐng)域的,高科技軍事時代,網(wǎng)絡(luò)安全問題關(guān)系到一個國家的命運。雖然現(xiàn)在只是初步的模擬數(shù)字認證系統(tǒng)的基本功能,但相信當(dāng)擁有了自己的開發(fā)團隊,具有一定的開發(fā)的所需要物質(zhì)基礎(chǔ),必定能為國家的網(wǎng)絡(luò)安全作出自己的貢獻。 [1]梁棟.Java加密與解密的藝術(shù)[M].北京:機械工業(yè)出版社,2010. [2]薛天龍.數(shù)字證書原理以及應(yīng)用方法指南[M].北京:中國標(biāo)準(zhǔn)出版社,2014. [3]陳路. 基于代購網(wǎng)站多種支付的研究與實現(xiàn)[D].東華大學(xué),2014. [4]殷騰飛.DRM系統(tǒng)中PKI部分的研究與設(shè)計[D].華東理工大學(xué),2014. [5]鄭麗娟.身份與位置分離網(wǎng)絡(luò)中認證協(xié)議的研究與設(shè)計[D].北京交通大學(xué),2014. [6]Han-Ul Jang,Heung-Kyu Lee. Biometric-PKI Authentic ation System Using Fingerprint Minutiae[J].Journal of Computer and Communications,2014. [7]柴國杰.基于數(shù)字證書認證的IPSec VPN研究與應(yīng)用[D].山東大學(xué),2012. [8]Ian Phau,Aaron Lim,Johan Liang,Michael Lwin.Engaging in digital piracy of movies:a theory of planned behaviour approach[J].Internet Research,2014.3.2 生成密鑰與證書
3.3 簽發(fā)證書
3.4 作廢證書
3.5 密鑰管理
4 結(jié)束語