国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于PKI和U盤的身份認證系統(tǒng)的設(shè)計與實現(xiàn)

2011-09-07 10:16王金偉馬希榮孫德兵
計算機工程與設(shè)計 2011年7期
關(guān)鍵詞:數(shù)字證書私鑰公鑰

王金偉, 馬希榮, 孫德兵

(1.天津大學計算機科學與技術(shù)學院,天津300072;2.天津師范大學計算機與信息工程學院,天津300387)

0 引 言

身份認證是對網(wǎng)絡(luò)訪問者合法性的確認,是整個網(wǎng)絡(luò)安全體系的基礎(chǔ)[1]。公鑰基礎(chǔ)設(shè)施(public key infrastructure,PKI)的出現(xiàn)為身份認證提供了一種有效機制,它采用數(shù)字證書作為密鑰管理媒介,通過以非對稱加密算法為基礎(chǔ)的數(shù)字簽名技術(shù)實現(xiàn)了對用戶身份真實性的確認[2]。數(shù)字證書是PKI的核心,它包含了用戶的公鑰和其他標志信息。目前,對現(xiàn)有網(wǎng)絡(luò)應用系統(tǒng)進行安全升級的方案中,數(shù)字證書的載體主要是瀏覽器和USB-KEY,前者不但缺乏移動性,而且存在很大安全隱患,不是理想的解決方案;后者雖然具有良好的移動性和安全性,但制作和分發(fā)成本高昂,升級過程也非常復雜。針對以上問題,我們設(shè)計并實現(xiàn)了一個以PKI安全體系為基本框架,采用普通U盤作為數(shù)字證書載體的身份認證系統(tǒng)。該系統(tǒng)在保證用戶使用數(shù)字證書的移動性、安全性和便利性的同時,大大降低了與現(xiàn)有應用系統(tǒng)集成的成本和復雜性。

1 公鑰基礎(chǔ)設(shè)施PKI

1.1 PKI體系結(jié)構(gòu)

如圖1所示,一個典型的PKI體系結(jié)構(gòu)主要包括3類實體:管理實體,端實體和證書庫[3]。

管理實體是PKI的核心部件,是PKI服務的提供者。管理實體有兩種:證書中心CA和注冊中心RA。CA在PKI體系中的作用是維護證書的生命周期,具體工作是發(fā)布和撤銷證書;RA負責對用戶請求進行處理,若驗證請求有效,則代表用戶向CA提交請求。RA可以單獨實現(xiàn),也可以合并在CA中實現(xiàn)。CA和RA以證書方式向端實體提供公鑰的分發(fā)服務。

端實體是PKI的用戶,是PKI服務的使用者。端實體有兩種:持證者和驗證者。持證者一般為應用系統(tǒng)的用戶,是數(shù)字證書的所有者;持證者向管理實體申請并獲取數(shù)字證書,在需要時撤銷或更新證書。持證者使用數(shù)字證書證實自己的身份,從而可以獲得相應的權(quán)限。驗證者一般是網(wǎng)絡(luò)應用系統(tǒng),即授權(quán)方,它一方面需要鑒別持證者提供證書的有效性,另一方面還要驗證持證者是否為該證書的真正擁有者,只有在鑒別和驗證成功之后才會授予持證者相應的權(quán)限。

圖1 PKI體系結(jié)構(gòu)

證書庫存儲兩種信息:由CA簽名的有效數(shù)字證書和已撤銷證書的列表(CRL)。以上幾種實體之間可通過PKI操作進行通信,包括證書的請求、確認、發(fā)布、獲取、更新和撤銷等過程。

1.2 數(shù)字證書

PKI頒發(fā)給用戶的身份標識就是數(shù)字證書,其數(shù)學理論基礎(chǔ)是非對稱加密算法,就是采用互相匹配的一對密鑰進行加和解密。每位用戶持有一把私鑰,該私鑰僅為本人所有,用于簽名和解密;還持有一把與私鑰配對的公鑰,用于驗證簽名和加密。用其中一把密鑰加密的信息,只能由對應的另一把密鑰才能夠破解。將用戶的信息和公鑰封裝起來并由CA進行數(shù)字簽名就形成了用戶的數(shù)字證書。

目前,PKI體系中應用最為廣泛、也是最為基礎(chǔ)的一個數(shù)字證書國際標準是X.509標準[4],其格式如表1所示。其中,序列號是由CA分配給證書的唯一標識符。簽名算法用來指定證書中心CA簽發(fā)證書時所使用的非對稱加密算法和哈希算法。持有者是證書擁有者的名字和信息,包括國家、省市、地區(qū)、組織機構(gòu)、單位部門和通用名,還可包含電子郵箱地址等信息。公鑰部分包含了公鑰的值和公鑰使用的算法標識符。在X.509第2版(v2)中加入了簽發(fā)者和持有者的唯一標識符,第3版(v2)又加入了擴展域。

表1 X.509證書格式

2 身份認證系統(tǒng)的設(shè)計

2.1 系統(tǒng)總體結(jié)構(gòu)

本課題設(shè)計的身份認證系統(tǒng)主要針對Web網(wǎng)絡(luò)應用,其體系結(jié)構(gòu)以PKI為基礎(chǔ),并根據(jù)B/S模型進行了一定的簡化和補充。系統(tǒng)的總體結(jié)構(gòu)如圖2所示。

圖2 身份認證系統(tǒng)總體結(jié)構(gòu)

整個系統(tǒng)包含瀏覽器端和服務器端兩大部分。服務器端包括CA模塊、認證模塊、證書數(shù)據(jù)庫和管理員模塊幾個部分,各模塊的功能如下:

(1)CA模塊。為了簡化證書處理過程,本系統(tǒng)將證書中心CA和注冊中心RA合并為一個模塊,作為系統(tǒng)的基礎(chǔ)模塊。該模塊同時完成CA和RA的功能。包括:受理用戶對數(shù)字證書請求的申請;頒發(fā)數(shù)字證書給用戶;受理用戶對數(shù)字證書撤銷或更新的申請;維護已撤銷證書的列表。

(2)認證模塊。該模塊是整個系統(tǒng)的核心,它的主要功能是通過“挑戰(zhàn)/應答”協(xié)議確認用戶的合法身份,其中含有對用戶所持證書有效性的驗證。

(3)證書數(shù)據(jù)庫。證書數(shù)據(jù)庫中存儲的內(nèi)容有:X.509證書、已撤銷證書的列表和持證用戶信息等。

(4)管理員模塊。該模塊用于管理CA模塊,具體工作包括:對用戶提出的請求、撤銷和更新數(shù)字證書的申請進行審核,并將審核結(jié)果反饋給用戶;對用戶證書的詳細信息和當前狀態(tài)進行查詢;對證書數(shù)據(jù)庫進行備份,以防止因誤操作或重裝系統(tǒng)等造成數(shù)字證書的丟失,降低對用戶正常操作的影響;對用戶的非法操作等異常情況進行處理,如注銷無效證書。

瀏覽器端包括用戶模塊和集成接口兩部分,它們的功能如下:

(1)用戶模塊:該模塊的功能包括:向CA模塊遞交用戶對數(shù)字證書的請求、撤銷和更新的申請;將數(shù)字證書下載到U盤;從U盤中讀取數(shù)字證書;配合認證模塊對用戶身份的合法性進行確認。

(2)集成接口:為了使現(xiàn)有應用系統(tǒng)能夠方便地使用本系統(tǒng)的功能,設(shè)計了集成接口,該接口可以和應用系統(tǒng)的瀏覽器端進行集成。

2.2 數(shù)字證書載體

現(xiàn)有PKI系統(tǒng)普遍采用瀏覽器或USB-KEY作為用戶數(shù)字證書的載體。保存在瀏覽器中的證書缺乏移動性和安全性。用戶在不同計算機上登錄網(wǎng)絡(luò)應用系統(tǒng),需要重新下載證書,并且在退出系統(tǒng)時,證書不能自動從瀏覽器上刪除。如果計算機是公用的,且用戶忘記刪除證書,那么使用這臺計算機的其他人也可以獲得其證書,這樣就存在很大安全隱患。

將證書保存在USB-KEY中,雖然具有良好的移動性和安全性,但對于已有的網(wǎng)絡(luò)應用系統(tǒng),需要重新制作和分發(fā)USBKEY,致使系統(tǒng)的升級成本非常昂貴,升級過程也十分繁瑣。尤其對那些需要提高安全性同時已經(jīng)擁有大量用戶的互聯(lián)網(wǎng)應用,如電子郵件,電子教務,電子政務和第三方支付等更是難以實現(xiàn)。而對用戶來說,額外購買或領(lǐng)取USB-KEY以及在平時攜帶許多不同系統(tǒng)的USB-KEY,必然會帶來很多不便。

相比以上兩種方式,本系統(tǒng)使用U盤作為數(shù)字證書的載體,其突出優(yōu)點如下:

(1)具有良好的移動性和安全性。用戶可以隨身攜帶,不用反復下載數(shù)字證書。使用完后U盤被用戶隨即取走,證書不會保留在計算機中。

(2)升級成本低,使用方便。目前,U盤的價格已經(jīng)十分低廉,同時大部分手機也具備U盤功能,可以說U盤幾乎是人手一個。因此,用U盤作為證書的載體,一方面使現(xiàn)有應用系統(tǒng)不用承擔采購、分發(fā)USB-KEY所帶來的昂貴成本和繁瑣過程;另一方面使用戶避免了因額外領(lǐng)取或購買USB-KEY而造成的不便。

(3)可存放多個證書。因數(shù)字證書的體積很小,同一個U盤可以存放多個應用系統(tǒng)的證書,避免了用戶同時攜帶很多USB-KEY。

2.3 雙因子驗證機制

為了進一步提高U盤中數(shù)字證書的安全性,本系統(tǒng)采用了“口令+證書”的雙因子驗證機制[5]。每個分發(fā)給用戶的數(shù)字證書均設(shè)有使用口令,用戶在使用證書時需要先輸入口令,口令正確方可使用。

雙因子驗證機制使口令和證書構(gòu)成了用戶身份的兩個必要因素。用戶只有同時取得了證書和使用證書的口令,才可以證實其真實身份。即使用戶的口令泄漏,只要用戶持有的證書不被盜取,合法用戶的身份就不會被仿冒;如果用戶的證書遺失,拾到者由于不知道使用口令,也無法仿冒合法用戶的身份。

2.4 數(shù)字證書請求流程

為了便于管理,本系統(tǒng)的CA模塊將直接產(chǎn)生用戶密鑰對,并將數(shù)字證書和私鑰封裝成證書文件在發(fā)放證書時一起交給用戶,該過程的具體流程如下:

(1)申請者首先使用用戶模塊填寫相應的信息,然后向CA模塊提交數(shù)字證書申請;

(2)CA模塊對申請者提交的申請進行受理,然后提交給管理員審核;

(3)管理員將申請中提供的信息與各種必要條件進行比對,決定是否通過該申請;

(4)CA模塊在申請審核通過后,將為申請者生成一對公私密鑰(采用非對稱加密算法);

(5)申請者的信息和公鑰被CA模塊封裝成X.509數(shù)字證書并保存到證書數(shù)據(jù)庫中。隨后,該數(shù)字證書和用戶私鑰被進一步封裝成證書文件;

(6)用戶模塊通知申請人下載證書文件,并提示申請人將其存放在U盤中;

(7)整個申請過程結(jié)束,申請者的合法用戶身份得到確立。

2.5 身份認證協(xié)議

系統(tǒng)采用“挑戰(zhàn)/應答”協(xié)議[6]進行身份認證,該協(xié)議由用戶模塊和認證模塊的幾輪對話來完成,具體過程如圖3所示。

圖3 “挑戰(zhàn)/應答”身份認證協(xié)議

(1)數(shù)字證書的持有用戶通過用戶模塊向認證模塊請求身份認證;

(2)收到請求后,認證模塊馬上生成一個隨機數(shù)RP,反饋給用戶模塊,作為“挑戰(zhàn)”;

(3)用戶模塊要求用戶輸入密碼,若密碼正確,則從U盤(與用戶的計算機相連接)中讀出該用戶的私鑰,若密碼錯誤,則不能通過驗證;

(4)用戶模塊使用用戶的私鑰將隨機數(shù)RP加密 (數(shù)字簽名),結(jié)果為SC(RP),并將該結(jié)果和用戶的數(shù)字證書SCertC提交給認證模塊進行檢查;

(5)認證模塊先后對數(shù)字證書SCertC的路徑、完整性以及CA的簽名進行檢查,之后還要查詢該證書是否在CA提供的已撤銷證書列表中;若SCertC通過以上檢查則說明其有效,那么認證模塊將提取SCertC中的公鑰,利用該公鑰解密SC(RP),得到結(jié)果REP;最后,認證模塊將之前生成的隨機數(shù)RP和解密結(jié)果REP進行對比,若兩者完全相等,則用戶的合法身份得到確認,否則就是非法用戶。

在“挑戰(zhàn)/應答”協(xié)議中,每次對用戶身份進行認證時都會生成一個獨立的隨機數(shù),即使黑客通過某種手段截獲該隨機數(shù),也無法逆推得到密鑰,由此就排除了用戶身份被仿冒的可能性。

3 身份認證系統(tǒng)的實現(xiàn)

3.1 基于OpenSSL的服務器端實現(xiàn)

認證系統(tǒng)的服務器端安裝了Linux操作系統(tǒng),開發(fā)腳本為PHP語言,以Apache為Web解析服務器。PKI的各種功能均采用OpenSSL軟件包進行開發(fā),數(shù)字證書庫用MySQL數(shù)據(jù)庫實現(xiàn)。

OpenSSL[7-8]是一個著名的開源軟件包,它以標準C語言作為軟件開發(fā)語言,實現(xiàn)了很多加解密算法、SSL協(xié)議和PKI標準;OpenSSL能夠跨平臺運行,支持Windows、Linux和Mac等主流操作系統(tǒng),適用性非常廣泛;OpenSSL軟件包的主要組成部分有:ssleay函數(shù)庫和實用應用程序;ssleay函數(shù)庫提供了兩千多個函數(shù)實現(xiàn),是OpenSSL軟件包的核心部分,這些函數(shù)實現(xiàn)涵蓋了當前安全系統(tǒng)中常用的非對稱、對稱加解密算法。

為了提高運行效率,服務器端的PKI功能直接使用ssleay函數(shù)庫進行開發(fā)。這些功能包括:生成用戶公私密鑰對,生成、發(fā)布、驗證、注銷和更新X.509數(shù)字證書等。在生成公私密鑰對時采用了1024位密鑰和RSA非對稱加密算法[9]。

為了幫助用戶確保數(shù)字證書和密鑰之間的對應關(guān)系,系統(tǒng)使用 ssleay函數(shù),將用戶的 X.509證書和私鑰封裝成PKCS#12證書文件,供用戶下載。PKCS標準 (the public-key cryptography standards)是美國RSA數(shù)據(jù)安全公司聯(lián)合其合作伙伴共同制定的一組公鑰密碼學標準;該標準主要用于對加密算法、數(shù)字簽名、數(shù)據(jù)封裝、數(shù)字證書和用戶私有信息進行規(guī)范;其中的PKCS#12標準對用戶的私鑰、公鑰、數(shù)字證書和其他相關(guān)信息的整合方法進行了詳細的描述[10]。PKCS#12證書文件在將用戶私鑰和X.509證書封裝起來的同時,還實現(xiàn)了雙因子認證,即對用戶私鑰設(shè)置了提取口令。

為了與PHP腳本整合,系統(tǒng)把利用ssleay函數(shù)庫開發(fā)的各種PKI功能編譯封裝成一個PHP擴展。服務器端的CA模塊、認證模塊和管理員模塊在其PHP實現(xiàn)中都通過調(diào)用該擴展來完成相應的功能。

3.2 基于CAPICOM的瀏覽器端實現(xiàn)

系統(tǒng)的瀏覽器端采用了CAPICOM組件進行實現(xiàn)。CAPICOM[11]組件是微軟提供的一個標準密碼應用層中間件接口,該接口可以在Windows環(huán)境下的各種編程語言中調(diào)用;CAPICOM組件中的大多數(shù)接口可以在網(wǎng)頁腳本中安全地使用。

在實現(xiàn)本系統(tǒng)的用戶模塊時,采用了Visual Basic語言并調(diào)用了CAPICOM的2.0版組件。用戶模塊的實現(xiàn)形式為ActiveX,它能夠嵌入到Web頁面中。用戶如果是首次訪問,系統(tǒng)會提示安裝用戶模塊。

在身份認證過程中,當用戶模塊收到認證模塊發(fā)送的隨機數(shù)后,會逐一搜索并識別與用戶計算機連接的所有存儲設(shè)備,如果找到U盤,則搜索U盤中是否存有PKCS#12證書文件,找到后提取文件中用戶的私鑰對隨機數(shù)簽名,若沒找到U盤或證書文件則認證失敗。

該過程的部分關(guān)鍵代碼如下:

其中,過程SearchUPan()的作用就是搜索并識別U盤,它返回證書文件的路徑;oSigner是簽名者對象,oCert是證書對象,strText是隨機數(shù),需要對它簽名,oSignedData存儲了需要簽名的信息。程序首先指定數(shù)字證書和被簽名數(shù)據(jù)(設(shè)置oSigner的Certificate屬性和oSignedData的Content屬性),然后執(zhí)行數(shù)字簽名(調(diào)用oSignedData的Sign方法),strSignedData就是簽名后的信息。

3.3 集成接口的實現(xiàn)

與應用系統(tǒng)的集成接口實現(xiàn)為一個PHP文件,名為authentication.inc.php,它類似于C語言的頭文件,其中包含了身份認證的主要函數(shù)。

在與應用系統(tǒng)集成時,需要考慮兩種情況:①應用系統(tǒng)是用PHP語言實現(xiàn)的;②應用系統(tǒng)是用其他腳本語言 (如ASP,JSP等)實現(xiàn)的。對于第一種情況,只需在應用統(tǒng)的適當頁面中加入以下兩句即可實現(xiàn)集成:

require_once("authentication.inc.php");

userCertVerify("認證成功頁面","認證失敗頁面");

第一句將authentication.inc.php文件包含進來,第二句是調(diào)用的userCertVerify函數(shù)進行身份認證。若認證成功則跳轉(zhuǎn)到“認證成功頁面”,否則跳轉(zhuǎn)到“認證失敗頁面”,這兩個頁面可以根據(jù)具體情況進行設(shè)置。利用這種方法,該認證系統(tǒng)已與本校網(wǎng)絡(luò)教務系統(tǒng)進行了整合,并成功運行。對于第二種情況,可以使用Ajax技術(shù)對認證函數(shù)進行遠程調(diào)用[12],這是本課題下一步的研究方向。

4 結(jié)束語

本文提出了一種基于PKI和U盤的身份認證系統(tǒng)。PKI構(gòu)架以數(shù)字證書作為證明用戶合法身份和提供用戶合法公鑰的憑證,結(jié)合非對稱加密技術(shù),可以有效保證用戶的身份安全和應用系統(tǒng)的數(shù)據(jù)安全。用U盤作為數(shù)字證書的載體,不僅方便了用戶,保證了用戶數(shù)字證書的移動性和安全性,而且大幅度降低了應用系統(tǒng)進行升級的成本和復雜性,為現(xiàn)有網(wǎng)絡(luò)應用系統(tǒng)提供了一種低成本的安全解決方案。

[1]李曉航,王宏霞,張文芳.認證理論及應用[M].北京:清華大學出版社,2009.

[2]荊繼武,林璟鏘,馮登國.PKI技術(shù)[M].北京:科學出版社,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的雙因子身份認證與密鑰交換協(xié)議[J].計算機工程與科學,2007,29(5):56-59.

[6]陳賢,陳力瓊,闊永紅.不同密碼體制下挑戰(zhàn)-應答協(xié)議的分析[J].計算機工程與設(shè)計,2008,29(10):2493-2495.

[7]王志海,童新海,沈寒輝.OpenSSL與網(wǎng)絡(luò)信息安全——基礎(chǔ)、結(jié)構(gòu)和指令[M].北京:清華大學出版社,2007.

[8]齊洪喜,周大水.基于OpenSSL的安全密碼平臺的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2007,28(2):314-315.

[9]趙小明,章美仁.RSA數(shù)字簽名技術(shù)在電子公文流轉(zhuǎn)中的應用[J].計算機工程與設(shè)計,2005,26(5):1214-1216.

[10]歐陽騫,劉翼光.基于PKCS#12的數(shù)字版權(quán)管理系統(tǒng)[J].計算機工程,2010,36(10):146-148.

[11]宋玲,李陶深,陳拓.用CAPICOM組件實現(xiàn)應用系統(tǒng)安全性的方法[J].計算機工程,2004,30(16):128-129.

[12]Jesse James Garrett.Ajax:anewapproachtowebapplications[EB/OL].http://adaptivepath.com/publications/essays/archives/000385.php,2005.

猜你喜歡
數(shù)字證書私鑰公鑰
清掃機器人避障系統(tǒng)區(qū)塊鏈私鑰分片存儲方法
比特幣的安全性到底有多高
案例教學法在公鑰密碼體制難點教學中的應用——以ssh服務中雙向認證為例
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
神奇的公鑰密碼
一種基于虛擬私鑰的OpenSSL與CSP交互方案
國密SM2密碼算法的C語言實現(xiàn)
P2X7 receptor antagonism in amyotrophic lateral sclerosis
基于數(shù)字證書的軍事信息系統(tǒng)安全防護方案
數(shù)字簽名保護Word文檔
连山| 丽江市| 阿拉善右旗| 金川县| 武宣县| 兰考县| 高淳县| 阜新| 汝阳县| 贵德县| 濮阳市| 托克托县| 刚察县| 永清县| 廉江市| 荔浦县| 八宿县| 疏附县| 霍城县| 虎林市| 乌审旗| 乡宁县| 锡林郭勒盟| 兰考县| 义乌市| 武邑县| 江达县| 连城县| 平泉县| 易门县| 丹东市| 安康市| 登封市| 屯门区| 公安县| 彩票| 潍坊市| 稻城县| 海晏县| 昌宁县| 宁河县|