王金偉, 馬希榮, 孫德兵
(1.天津大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,天津300072;2.天津師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院,天津300387)
身份認(rèn)證是對(duì)網(wǎng)絡(luò)訪(fǎng)問(wèn)者合法性的確認(rèn),是整個(gè)網(wǎng)絡(luò)安全體系的基礎(chǔ)[1]。公鑰基礎(chǔ)設(shè)施(public key infrastructure,PKI)的出現(xiàn)為身份認(rèn)證提供了一種有效機(jī)制,它采用數(shù)字證書(shū)作為密鑰管理媒介,通過(guò)以非對(duì)稱(chēng)加密算法為基礎(chǔ)的數(shù)字簽名技術(shù)實(shí)現(xiàn)了對(duì)用戶(hù)身份真實(shí)性的確認(rèn)[2]。數(shù)字證書(shū)是PKI的核心,它包含了用戶(hù)的公鑰和其他標(biāo)志信息。目前,對(duì)現(xiàn)有網(wǎng)絡(luò)應(yīng)用系統(tǒng)進(jìn)行安全升級(jí)的方案中,數(shù)字證書(shū)的載體主要是瀏覽器和USB-KEY,前者不但缺乏移動(dòng)性,而且存在很大安全隱患,不是理想的解決方案;后者雖然具有良好的移動(dòng)性和安全性,但制作和分發(fā)成本高昂,升級(jí)過(guò)程也非常復(fù)雜。針對(duì)以上問(wèn)題,我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了一個(gè)以PKI安全體系為基本框架,采用普通U盤(pán)作為數(shù)字證書(shū)載體的身份認(rèn)證系統(tǒng)。該系統(tǒng)在保證用戶(hù)使用數(shù)字證書(shū)的移動(dòng)性、安全性和便利性的同時(shí),大大降低了與現(xiàn)有應(yīng)用系統(tǒng)集成的成本和復(fù)雜性。
如圖1所示,一個(gè)典型的PKI體系結(jié)構(gòu)主要包括3類(lèi)實(shí)體:管理實(shí)體,端實(shí)體和證書(shū)庫(kù)[3]。
管理實(shí)體是PKI的核心部件,是PKI服務(wù)的提供者。管理實(shí)體有兩種:證書(shū)中心CA和注冊(cè)中心RA。CA在PKI體系中的作用是維護(hù)證書(shū)的生命周期,具體工作是發(fā)布和撤銷(xiāo)證書(shū);RA負(fù)責(zé)對(duì)用戶(hù)請(qǐng)求進(jìn)行處理,若驗(yàn)證請(qǐng)求有效,則代表用戶(hù)向CA提交請(qǐng)求。RA可以單獨(dú)實(shí)現(xiàn),也可以合并在CA中實(shí)現(xiàn)。CA和RA以證書(shū)方式向端實(shí)體提供公鑰的分發(fā)服務(wù)。
端實(shí)體是PKI的用戶(hù),是PKI服務(wù)的使用者。端實(shí)體有兩種:持證者和驗(yàn)證者。持證者一般為應(yīng)用系統(tǒng)的用戶(hù),是數(shù)字證書(shū)的所有者;持證者向管理實(shí)體申請(qǐng)并獲取數(shù)字證書(shū),在需要時(shí)撤銷(xiāo)或更新證書(shū)。持證者使用數(shù)字證書(shū)證實(shí)自己的身份,從而可以獲得相應(yīng)的權(quán)限。驗(yàn)證者一般是網(wǎng)絡(luò)應(yīng)用系統(tǒng),即授權(quán)方,它一方面需要鑒別持證者提供證書(shū)的有效性,另一方面還要驗(yàn)證持證者是否為該證書(shū)的真正擁有者,只有在鑒別和驗(yàn)證成功之后才會(huì)授予持證者相應(yīng)的權(quán)限。
圖1 PKI體系結(jié)構(gòu)
證書(shū)庫(kù)存儲(chǔ)兩種信息:由CA簽名的有效數(shù)字證書(shū)和已撤銷(xiāo)證書(shū)的列表(CRL)。以上幾種實(shí)體之間可通過(guò)PKI操作進(jìn)行通信,包括證書(shū)的請(qǐng)求、確認(rèn)、發(fā)布、獲取、更新和撤銷(xiāo)等過(guò)程。
PKI頒發(fā)給用戶(hù)的身份標(biāo)識(shí)就是數(shù)字證書(shū),其數(shù)學(xué)理論基礎(chǔ)是非對(duì)稱(chēng)加密算法,就是采用互相匹配的一對(duì)密鑰進(jìn)行加和解密。每位用戶(hù)持有一把私鑰,該私鑰僅為本人所有,用于簽名和解密;還持有一把與私鑰配對(duì)的公鑰,用于驗(yàn)證簽名和加密。用其中一把密鑰加密的信息,只能由對(duì)應(yīng)的另一把密鑰才能夠破解。將用戶(hù)的信息和公鑰封裝起來(lái)并由CA進(jìn)行數(shù)字簽名就形成了用戶(hù)的數(shù)字證書(shū)。
目前,PKI體系中應(yīng)用最為廣泛、也是最為基礎(chǔ)的一個(gè)數(shù)字證書(shū)國(guó)際標(biāo)準(zhǔn)是X.509標(biāo)準(zhǔn)[4],其格式如表1所示。其中,序列號(hào)是由CA分配給證書(shū)的唯一標(biāo)識(shí)符。簽名算法用來(lái)指定證書(shū)中心CA簽發(fā)證書(shū)時(shí)所使用的非對(duì)稱(chēng)加密算法和哈希算法。持有者是證書(shū)擁有者的名字和信息,包括國(guó)家、省市、地區(qū)、組織機(jī)構(gòu)、單位部門(mén)和通用名,還可包含電子郵箱地址等信息。公鑰部分包含了公鑰的值和公鑰使用的算法標(biāo)識(shí)符。在X.509第2版(v2)中加入了簽發(fā)者和持有者的唯一標(biāo)識(shí)符,第3版(v2)又加入了擴(kuò)展域。
表1 X.509證書(shū)格式
本課題設(shè)計(jì)的身份認(rèn)證系統(tǒng)主要針對(duì)Web網(wǎng)絡(luò)應(yīng)用,其體系結(jié)構(gòu)以PKI為基礎(chǔ),并根據(jù)B/S模型進(jìn)行了一定的簡(jiǎn)化和補(bǔ)充。系統(tǒng)的總體結(jié)構(gòu)如圖2所示。
圖2 身份認(rèn)證系統(tǒng)總體結(jié)構(gòu)
整個(gè)系統(tǒng)包含瀏覽器端和服務(wù)器端兩大部分。服務(wù)器端包括CA模塊、認(rèn)證模塊、證書(shū)數(shù)據(jù)庫(kù)和管理員模塊幾個(gè)部分,各模塊的功能如下:
(1)CA模塊。為了簡(jiǎn)化證書(shū)處理過(guò)程,本系統(tǒng)將證書(shū)中心CA和注冊(cè)中心RA合并為一個(gè)模塊,作為系統(tǒng)的基礎(chǔ)模塊。該模塊同時(shí)完成CA和RA的功能。包括:受理用戶(hù)對(duì)數(shù)字證書(shū)請(qǐng)求的申請(qǐng);頒發(fā)數(shù)字證書(shū)給用戶(hù);受理用戶(hù)對(duì)數(shù)字證書(shū)撤銷(xiāo)或更新的申請(qǐng);維護(hù)已撤銷(xiāo)證書(shū)的列表。
(2)認(rèn)證模塊。該模塊是整個(gè)系統(tǒng)的核心,它的主要功能是通過(guò)“挑戰(zhàn)/應(yīng)答”協(xié)議確認(rèn)用戶(hù)的合法身份,其中含有對(duì)用戶(hù)所持證書(shū)有效性的驗(yàn)證。
(3)證書(shū)數(shù)據(jù)庫(kù)。證書(shū)數(shù)據(jù)庫(kù)中存儲(chǔ)的內(nèi)容有:X.509證書(shū)、已撤銷(xiāo)證書(shū)的列表和持證用戶(hù)信息等。
(4)管理員模塊。該模塊用于管理CA模塊,具體工作包括:對(duì)用戶(hù)提出的請(qǐng)求、撤銷(xiāo)和更新數(shù)字證書(shū)的申請(qǐng)進(jìn)行審核,并將審核結(jié)果反饋給用戶(hù);對(duì)用戶(hù)證書(shū)的詳細(xì)信息和當(dāng)前狀態(tài)進(jìn)行查詢(xún);對(duì)證書(shū)數(shù)據(jù)庫(kù)進(jìn)行備份,以防止因誤操作或重裝系統(tǒng)等造成數(shù)字證書(shū)的丟失,降低對(duì)用戶(hù)正常操作的影響;對(duì)用戶(hù)的非法操作等異常情況進(jìn)行處理,如注銷(xiāo)無(wú)效證書(shū)。
瀏覽器端包括用戶(hù)模塊和集成接口兩部分,它們的功能如下:
(1)用戶(hù)模塊:該模塊的功能包括:向CA模塊遞交用戶(hù)對(duì)數(shù)字證書(shū)的請(qǐng)求、撤銷(xiāo)和更新的申請(qǐng);將數(shù)字證書(shū)下載到U盤(pán);從U盤(pán)中讀取數(shù)字證書(shū);配合認(rèn)證模塊對(duì)用戶(hù)身份的合法性進(jìn)行確認(rèn)。
(2)集成接口:為了使現(xiàn)有應(yīng)用系統(tǒng)能夠方便地使用本系統(tǒng)的功能,設(shè)計(jì)了集成接口,該接口可以和應(yīng)用系統(tǒng)的瀏覽器端進(jìn)行集成。
現(xiàn)有PKI系統(tǒng)普遍采用瀏覽器或USB-KEY作為用戶(hù)數(shù)字證書(shū)的載體。保存在瀏覽器中的證書(shū)缺乏移動(dòng)性和安全性。用戶(hù)在不同計(jì)算機(jī)上登錄網(wǎng)絡(luò)應(yīng)用系統(tǒng),需要重新下載證書(shū),并且在退出系統(tǒng)時(shí),證書(shū)不能自動(dòng)從瀏覽器上刪除。如果計(jì)算機(jī)是公用的,且用戶(hù)忘記刪除證書(shū),那么使用這臺(tái)計(jì)算機(jī)的其他人也可以獲得其證書(shū),這樣就存在很大安全隱患。
將證書(shū)保存在USB-KEY中,雖然具有良好的移動(dòng)性和安全性,但對(duì)于已有的網(wǎng)絡(luò)應(yīng)用系統(tǒng),需要重新制作和分發(fā)USBKEY,致使系統(tǒng)的升級(jí)成本非常昂貴,升級(jí)過(guò)程也十分繁瑣。尤其對(duì)那些需要提高安全性同時(shí)已經(jīng)擁有大量用戶(hù)的互聯(lián)網(wǎng)應(yīng)用,如電子郵件,電子教務(wù),電子政務(wù)和第三方支付等更是難以實(shí)現(xiàn)。而對(duì)用戶(hù)來(lái)說(shuō),額外購(gòu)買(mǎi)或領(lǐng)取USB-KEY以及在平時(shí)攜帶許多不同系統(tǒng)的USB-KEY,必然會(huì)帶來(lái)很多不便。
相比以上兩種方式,本系統(tǒng)使用U盤(pán)作為數(shù)字證書(shū)的載體,其突出優(yōu)點(diǎn)如下:
(1)具有良好的移動(dòng)性和安全性。用戶(hù)可以隨身攜帶,不用反復(fù)下載數(shù)字證書(shū)。使用完后U盤(pán)被用戶(hù)隨即取走,證書(shū)不會(huì)保留在計(jì)算機(jī)中。
(2)升級(jí)成本低,使用方便。目前,U盤(pán)的價(jià)格已經(jīng)十分低廉,同時(shí)大部分手機(jī)也具備U盤(pán)功能,可以說(shuō)U盤(pán)幾乎是人手一個(gè)。因此,用U盤(pán)作為證書(shū)的載體,一方面使現(xiàn)有應(yīng)用系統(tǒng)不用承擔(dān)采購(gòu)、分發(fā)USB-KEY所帶來(lái)的昂貴成本和繁瑣過(guò)程;另一方面使用戶(hù)避免了因額外領(lǐng)取或購(gòu)買(mǎi)USB-KEY而造成的不便。
(3)可存放多個(gè)證書(shū)。因數(shù)字證書(shū)的體積很小,同一個(gè)U盤(pán)可以存放多個(gè)應(yīng)用系統(tǒng)的證書(shū),避免了用戶(hù)同時(shí)攜帶很多USB-KEY。
為了進(jìn)一步提高U盤(pán)中數(shù)字證書(shū)的安全性,本系統(tǒng)采用了“口令+證書(shū)”的雙因子驗(yàn)證機(jī)制[5]。每個(gè)分發(fā)給用戶(hù)的數(shù)字證書(shū)均設(shè)有使用口令,用戶(hù)在使用證書(shū)時(shí)需要先輸入口令,口令正確方可使用。
雙因子驗(yàn)證機(jī)制使口令和證書(shū)構(gòu)成了用戶(hù)身份的兩個(gè)必要因素。用戶(hù)只有同時(shí)取得了證書(shū)和使用證書(shū)的口令,才可以證實(shí)其真實(shí)身份。即使用戶(hù)的口令泄漏,只要用戶(hù)持有的證書(shū)不被盜取,合法用戶(hù)的身份就不會(huì)被仿冒;如果用戶(hù)的證書(shū)遺失,拾到者由于不知道使用口令,也無(wú)法仿冒合法用戶(hù)的身份。
為了便于管理,本系統(tǒng)的CA模塊將直接產(chǎn)生用戶(hù)密鑰對(duì),并將數(shù)字證書(shū)和私鑰封裝成證書(shū)文件在發(fā)放證書(shū)時(shí)一起交給用戶(hù),該過(guò)程的具體流程如下:
(1)申請(qǐng)者首先使用用戶(hù)模塊填寫(xiě)相應(yīng)的信息,然后向CA模塊提交數(shù)字證書(shū)申請(qǐng);
(2)CA模塊對(duì)申請(qǐng)者提交的申請(qǐng)進(jìn)行受理,然后提交給管理員審核;
(3)管理員將申請(qǐng)中提供的信息與各種必要條件進(jìn)行比對(duì),決定是否通過(guò)該申請(qǐng);
(4)CA模塊在申請(qǐng)審核通過(guò)后,將為申請(qǐng)者生成一對(duì)公私密鑰(采用非對(duì)稱(chēng)加密算法);
(5)申請(qǐng)者的信息和公鑰被CA模塊封裝成X.509數(shù)字證書(shū)并保存到證書(shū)數(shù)據(jù)庫(kù)中。隨后,該數(shù)字證書(shū)和用戶(hù)私鑰被進(jìn)一步封裝成證書(shū)文件;
(6)用戶(hù)模塊通知申請(qǐng)人下載證書(shū)文件,并提示申請(qǐng)人將其存放在U盤(pán)中;
(7)整個(gè)申請(qǐng)過(guò)程結(jié)束,申請(qǐng)者的合法用戶(hù)身份得到確立。
系統(tǒng)采用“挑戰(zhàn)/應(yīng)答”協(xié)議[6]進(jìn)行身份認(rèn)證,該協(xié)議由用戶(hù)模塊和認(rèn)證模塊的幾輪對(duì)話(huà)來(lái)完成,具體過(guò)程如圖3所示。
圖3 “挑戰(zhàn)/應(yīng)答”身份認(rèn)證協(xié)議
(1)數(shù)字證書(shū)的持有用戶(hù)通過(guò)用戶(hù)模塊向認(rèn)證模塊請(qǐng)求身份認(rèn)證;
(2)收到請(qǐng)求后,認(rèn)證模塊馬上生成一個(gè)隨機(jī)數(shù)RP,反饋給用戶(hù)模塊,作為“挑戰(zhàn)”;
(3)用戶(hù)模塊要求用戶(hù)輸入密碼,若密碼正確,則從U盤(pán)(與用戶(hù)的計(jì)算機(jī)相連接)中讀出該用戶(hù)的私鑰,若密碼錯(cuò)誤,則不能通過(guò)驗(yàn)證;
(4)用戶(hù)模塊使用用戶(hù)的私鑰將隨機(jī)數(shù)RP加密 (數(shù)字簽名),結(jié)果為SC(RP),并將該結(jié)果和用戶(hù)的數(shù)字證書(shū)SCertC提交給認(rèn)證模塊進(jìn)行檢查;
(5)認(rèn)證模塊先后對(duì)數(shù)字證書(shū)SCertC的路徑、完整性以及CA的簽名進(jìn)行檢查,之后還要查詢(xún)?cè)撟C書(shū)是否在CA提供的已撤銷(xiāo)證書(shū)列表中;若SCertC通過(guò)以上檢查則說(shuō)明其有效,那么認(rèn)證模塊將提取SCertC中的公鑰,利用該公鑰解密SC(RP),得到結(jié)果REP;最后,認(rèn)證模塊將之前生成的隨機(jī)數(shù)RP和解密結(jié)果REP進(jìn)行對(duì)比,若兩者完全相等,則用戶(hù)的合法身份得到確認(rèn),否則就是非法用戶(hù)。
在“挑戰(zhàn)/應(yīng)答”協(xié)議中,每次對(duì)用戶(hù)身份進(jìn)行認(rèn)證時(shí)都會(huì)生成一個(gè)獨(dú)立的隨機(jī)數(shù),即使黑客通過(guò)某種手段截獲該隨機(jī)數(shù),也無(wú)法逆推得到密鑰,由此就排除了用戶(hù)身份被仿冒的可能性。
認(rèn)證系統(tǒng)的服務(wù)器端安裝了Linux操作系統(tǒng),開(kāi)發(fā)腳本為PHP語(yǔ)言,以Apache為Web解析服務(wù)器。PKI的各種功能均采用OpenSSL軟件包進(jìn)行開(kāi)發(fā),數(shù)字證書(shū)庫(kù)用MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)。
OpenSSL[7-8]是一個(gè)著名的開(kāi)源軟件包,它以標(biāo)準(zhǔn)C語(yǔ)言作為軟件開(kāi)發(fā)語(yǔ)言,實(shí)現(xiàn)了很多加解密算法、SSL協(xié)議和PKI標(biāo)準(zhǔn);OpenSSL能夠跨平臺(tái)運(yùn)行,支持Windows、Linux和Mac等主流操作系統(tǒng),適用性非常廣泛;OpenSSL軟件包的主要組成部分有:ssleay函數(shù)庫(kù)和實(shí)用應(yīng)用程序;ssleay函數(shù)庫(kù)提供了兩千多個(gè)函數(shù)實(shí)現(xiàn),是OpenSSL軟件包的核心部分,這些函數(shù)實(shí)現(xiàn)涵蓋了當(dāng)前安全系統(tǒng)中常用的非對(duì)稱(chēng)、對(duì)稱(chēng)加解密算法。
為了提高運(yùn)行效率,服務(wù)器端的PKI功能直接使用ssleay函數(shù)庫(kù)進(jìn)行開(kāi)發(fā)。這些功能包括:生成用戶(hù)公私密鑰對(duì),生成、發(fā)布、驗(yàn)證、注銷(xiāo)和更新X.509數(shù)字證書(shū)等。在生成公私密鑰對(duì)時(shí)采用了1024位密鑰和RSA非對(duì)稱(chēng)加密算法[9]。
為了幫助用戶(hù)確保數(shù)字證書(shū)和密鑰之間的對(duì)應(yīng)關(guān)系,系統(tǒng)使用 ssleay函數(shù),將用戶(hù)的 X.509證書(shū)和私鑰封裝成PKCS#12證書(shū)文件,供用戶(hù)下載。PKCS標(biāo)準(zhǔn) (the public-key cryptography standards)是美國(guó)RSA數(shù)據(jù)安全公司聯(lián)合其合作伙伴共同制定的一組公鑰密碼學(xué)標(biāo)準(zhǔn);該標(biāo)準(zhǔn)主要用于對(duì)加密算法、數(shù)字簽名、數(shù)據(jù)封裝、數(shù)字證書(shū)和用戶(hù)私有信息進(jìn)行規(guī)范;其中的PKCS#12標(biāo)準(zhǔn)對(duì)用戶(hù)的私鑰、公鑰、數(shù)字證書(shū)和其他相關(guān)信息的整合方法進(jìn)行了詳細(xì)的描述[10]。PKCS#12證書(shū)文件在將用戶(hù)私鑰和X.509證書(shū)封裝起來(lái)的同時(shí),還實(shí)現(xiàn)了雙因子認(rèn)證,即對(duì)用戶(hù)私鑰設(shè)置了提取口令。
為了與PHP腳本整合,系統(tǒng)把利用ssleay函數(shù)庫(kù)開(kāi)發(fā)的各種PKI功能編譯封裝成一個(gè)PHP擴(kuò)展。服務(wù)器端的CA模塊、認(rèn)證模塊和管理員模塊在其PHP實(shí)現(xiàn)中都通過(guò)調(diào)用該擴(kuò)展來(lái)完成相應(yīng)的功能。
系統(tǒng)的瀏覽器端采用了CAPICOM組件進(jìn)行實(shí)現(xiàn)。CAPICOM[11]組件是微軟提供的一個(gè)標(biāo)準(zhǔn)密碼應(yīng)用層中間件接口,該接口可以在Windows環(huán)境下的各種編程語(yǔ)言中調(diào)用;CAPICOM組件中的大多數(shù)接口可以在網(wǎng)頁(yè)腳本中安全地使用。
在實(shí)現(xiàn)本系統(tǒng)的用戶(hù)模塊時(shí),采用了Visual Basic語(yǔ)言并調(diào)用了CAPICOM的2.0版組件。用戶(hù)模塊的實(shí)現(xiàn)形式為ActiveX,它能夠嵌入到Web頁(yè)面中。用戶(hù)如果是首次訪(fǎng)問(wèn),系統(tǒng)會(huì)提示安裝用戶(hù)模塊。
在身份認(rèn)證過(guò)程中,當(dāng)用戶(hù)模塊收到認(rèn)證模塊發(fā)送的隨機(jī)數(shù)后,會(huì)逐一搜索并識(shí)別與用戶(hù)計(jì)算機(jī)連接的所有存儲(chǔ)設(shè)備,如果找到U盤(pán),則搜索U盤(pán)中是否存有PKCS#12證書(shū)文件,找到后提取文件中用戶(hù)的私鑰對(duì)隨機(jī)數(shù)簽名,若沒(méi)找到U盤(pán)或證書(shū)文件則認(rèn)證失敗。
該過(guò)程的部分關(guān)鍵代碼如下:
其中,過(guò)程SearchUPan()的作用就是搜索并識(shí)別U盤(pán),它返回證書(shū)文件的路徑;oSigner是簽名者對(duì)象,oCert是證書(shū)對(duì)象,strText是隨機(jī)數(shù),需要對(duì)它簽名,oSignedData存儲(chǔ)了需要簽名的信息。程序首先指定數(shù)字證書(shū)和被簽名數(shù)據(jù)(設(shè)置oSigner的Certificate屬性和oSignedData的Content屬性),然后執(zhí)行數(shù)字簽名(調(diào)用oSignedData的Sign方法),strSignedData就是簽名后的信息。
與應(yīng)用系統(tǒng)的集成接口實(shí)現(xiàn)為一個(gè)PHP文件,名為authentication.inc.php,它類(lèi)似于C語(yǔ)言的頭文件,其中包含了身份認(rèn)證的主要函數(shù)。
在與應(yīng)用系統(tǒng)集成時(shí),需要考慮兩種情況:①應(yīng)用系統(tǒng)是用PHP語(yǔ)言實(shí)現(xiàn)的;②應(yīng)用系統(tǒng)是用其他腳本語(yǔ)言 (如ASP,JSP等)實(shí)現(xiàn)的。對(duì)于第一種情況,只需在應(yīng)用統(tǒng)的適當(dāng)頁(yè)面中加入以下兩句即可實(shí)現(xiàn)集成:
require_once("authentication.inc.php");
userCertVerify("認(rèn)證成功頁(yè)面","認(rèn)證失敗頁(yè)面");
第一句將authentication.inc.php文件包含進(jìn)來(lái),第二句是調(diào)用的userCertVerify函數(shù)進(jìn)行身份認(rèn)證。若認(rèn)證成功則跳轉(zhuǎn)到“認(rèn)證成功頁(yè)面”,否則跳轉(zhuǎn)到“認(rèn)證失敗頁(yè)面”,這兩個(gè)頁(yè)面可以根據(jù)具體情況進(jìn)行設(shè)置。利用這種方法,該認(rèn)證系統(tǒng)已與本校網(wǎng)絡(luò)教務(wù)系統(tǒng)進(jìn)行了整合,并成功運(yùn)行。對(duì)于第二種情況,可以使用Ajax技術(shù)對(duì)認(rèn)證函數(shù)進(jìn)行遠(yuǎn)程調(diào)用[12],這是本課題下一步的研究方向。
本文提出了一種基于PKI和U盤(pán)的身份認(rèn)證系統(tǒng)。PKI構(gòu)架以數(shù)字證書(shū)作為證明用戶(hù)合法身份和提供用戶(hù)合法公鑰的憑證,結(jié)合非對(duì)稱(chēng)加密技術(shù),可以有效保證用戶(hù)的身份安全和應(yīng)用系統(tǒng)的數(shù)據(jù)安全。用U盤(pán)作為數(shù)字證書(shū)的載體,不僅方便了用戶(hù),保證了用戶(hù)數(shù)字證書(shū)的移動(dòng)性和安全性,而且大幅度降低了應(yīng)用系統(tǒng)進(jìn)行升級(jí)的成本和復(fù)雜性,為現(xiàn)有網(wǎng)絡(luò)應(yīng)用系統(tǒng)提供了一種低成本的安全解決方案。
[1]李曉航,王宏霞,張文芳.認(rèn)證理論及應(yīng)用[M].北京:清華大學(xué)出版社,2009.
[2]荊繼武,林璟鏘,馮登國(guó).PKI技術(shù)[M].北京:科學(xué)出版社,2008.
[3]Housley R,Polk W,Solo D.Internet X.509 public Key infrastructure,certificate and CRL Profile[S].RFC2459,2004.
[4]ITU-T recommendation X.509:information technology-open systems interconnection-the directory:authentication framework[S].2005.
[5]吳永英,鄧路.一種基于USBKey的雙因子身份認(rèn)證與密鑰交換協(xié)議[J].計(jì)算機(jī)工程與科學(xué),2007,29(5):56-59.
[6]陳賢,陳力瓊,闊永紅.不同密碼體制下挑戰(zhàn)-應(yīng)答協(xié)議的分析[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(10):2493-2495.
[7]王志海,童新海,沈寒輝.OpenSSL與網(wǎng)絡(luò)信息安全——基礎(chǔ)、結(jié)構(gòu)和指令[M].北京:清華大學(xué)出版社,2007.
[8]齊洪喜,周大水.基于OpenSSL的安全密碼平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(2):314-315.
[9]趙小明,章美仁.RSA數(shù)字簽名技術(shù)在電子公文流轉(zhuǎn)中的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(5):1214-1216.
[10]歐陽(yáng)騫,劉翼光.基于PKCS#12的數(shù)字版權(quán)管理系統(tǒng)[J].計(jì)算機(jī)工程,2010,36(10):146-148.
[11]宋玲,李陶深,陳拓.用CAPICOM組件實(shí)現(xiàn)應(yīng)用系統(tǒng)安全性的方法[J].計(jì)算機(jī)工程,2004,30(16):128-129.
[12]Jesse James Garrett.Ajax:anewapproachtowebapplications[EB/OL].http://adaptivepath.com/publications/essays/archives/000385.php,2005.