999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于數字證書技術的增強型身份認證系統

2006-12-31 00:00:00呂格莉邵自然
計算機應用研究 2006年8期

(1.湖南大學 計算機與通信學院, 湖南 長沙 410082; 2.中南大學 信息科學與工程學院,湖南 長沙 410083; 3.廣東省數字證書認證中心, 廣東 廣州 510030)

摘 要:論述了一種基于數字證書技術的增強型身份認證系統,可以有效確認用戶身份的真實性,抵御網絡重放攻擊及暴力攻擊和防止網絡竊聽,靈活支持單向或雙向的身份認證。

關鍵詞:數字認證中心; 證書; 證書注銷列表; 數字簽名; 身份認證

中圖法分類號:TP309.2文獻標識碼:A

文章編號:1001-3695(2006)08-0114-03

Advanced Authentication System Based on Digital Certificate Technology

LV Ge li 1,2, WANG Dong 1, DAI Ji 3, SHAO Zi ran 2

(1.College of Computer Communication, Hunan University, Changsha Hunan 410082, China;2.College of Information Science Enginee ring, Central South University, Changsha Hunan 410083, China;3.Guangdong Certificate Authority Co.Ltd., Guangzhou Guangdong 510030, China)

Abstract:This paper presents an advanced authentication system based on digital certificate technology. It can verify authenticity of user’s identity, defense network playback attack, violent attack and network sniffers. It also supports single or duel authentication.

Key words:CA; Certificate; CRL; Digital Signature; Authentication

隨著電子政務、電子商務等網上業務的飛速發展,對信息安全性的需求日益迫切。由于網絡世界的虛擬性和匿名性,要保障網上業務開展的安全性,首先必須解決的就是網絡應用系統中通信雙方的身份認證問題。傳統的做法是采用用戶名加口令身份認證系統來驗證登錄用戶的身份,但是由于口令在使用過程中很容易被網絡竊取、暴力攻擊和猜測,存在較大的安全隱患。另外這種認證方式只能完成單方面的身份認證,即只能解決服務器驗證客戶端身份的問題,無法解決客戶端驗證服務器身份的問題,因此不能完全滿足互聯網業務應用的需要。

本文提出一種新的身份認證系統,即基于數字證書的增強型身份認證系統。該系統使用公鑰密碼技術,設計和實現了一套安全身份認證協議,有效地解決了網絡應用中面臨的身份認證問題,解決了用戶名口令身份認證系統中存在的安全隱患,具有良好的安全性、兼容性和廣泛的適用性。

1公鑰密碼技術與數字證書

公鑰密碼技術的核心是公鑰密碼算法,這種密碼算法的特點是其加密和解密過程分別有兩個不同的密鑰,兩個密鑰存在算法對應關系。公鑰密碼體制中,用戶擁有一對密鑰,其中的一個可向外界公開,稱為公鑰;另一個則由用戶獨自持有,稱為私鑰。若以公鑰作為加密密鑰,以接收用戶專用密鑰(私鑰)作為解密密鑰,就可實現多個發送用戶加密的信息只能由一個接收用戶解讀,可以用于數據加密;反之,以發送用戶私鑰作為加密密鑰而以其公鑰作為解密密鑰,則可實現由一個發送用戶加密的信息可被任何接收用戶解讀,由于私有密鑰的保密持有,可代表發送者的身份特征,所以接收用戶可驗證信息和確認信息來源的真實性,因此私鑰密鑰可以用于實現數字簽名。

數字證書(Digital Certificate)是一個經第三方的權威機構——數字證書認證中心(CA)簽發的。數字簽名包含公開密鑰擁有者信息以及公開密鑰的文件,在系統中以證書文件或目錄項的形式存在。數字證書是公鑰密碼體制的一種密鑰管理媒介,它可用于證明某一主體(如用戶、服務器、軟件代碼等)的身份以及其公鑰的合法性。

基于數字證書和公鑰密碼體制中數字簽名的特征,我們設計了一套增強型身份認證系統,用于替代傳統的用戶名口令身份認證系統。

2基于數字證書的增強型身份認證系統的設計

2.1增強型身份認證系統結構設計

在當今流行的網絡應用系統中,如網上商城和網上招投標系統,多采用三層B/S或C/S結構來構建,即系統服務器端由應用服務器和數據庫服務器組成,分別完成應用業務邏輯處理和業務數據存儲和管理的功能,客戶端安裝瀏覽器或專用客戶端程序,執行客戶端業務邏輯處理。

下面以三層B/S架構的應用系統為例,對增強型身份認證系統的結構進行說明。其系統邏輯結構如圖1所示。增強型身份認證系統在應用系統的應用服務器上部署認證服務器端程序,同時承擔認證服務器功能;用戶在客戶端從認證服務器下載和執行認證客戶端程序,承擔認證客戶端功能;數據服務器用于存儲合法用戶列表。在身份認證過程中,需要訪問CA中心的證書查詢驗證服務系統,下載證書注銷列表(CRL),用于驗證數字證書的狀態有效性。

2.2身份認證協議設計

根據上述增強型身份認證系統的結構,需進行相應的身份認證協議設計。身份認證協議的定義如下:

其中,U表示認證客戶端,CerIu表示用戶的身份證書;AS表示認證服務器端,CerIAS表示認證服務器的身份證書;Ru, RAS分別表示U和AS產生的隨機數;SIGNu( x ),SIGNAS( x )分別表示U和AS對 x 的數字簽名。

根據此身份認證協議的認證工作流程如圖2所示。

工作流程說明如下:

(1)客戶U通過客戶端請求訪問服務器AS。

(2)服務器AS收到客戶請求后,響應請求并向未通過認證的客戶U發送隨機數RAS。

(3)客戶收到服務器響應,用私鑰對RAS簽名,同時讀取自己的證書CerIu并產生隨機數Ru。

(4)客戶響應服務器,發送自己的用戶證書CerIu,客戶端隨機數Ru和對服務器隨機數的簽名SIGNu(RAS)給服務器AS。

(5)服務器使用CerIu,RAS驗證SIGNu(RAS)是否正確,并驗證CerIu是否可信,通常證書是否可信需驗證CerIu是否為信任CA頒發的證書、是否在有效期限內和是否被CA注銷,其中驗證證書是否被CA注銷需要訪問CA中心提供的證書查詢驗證服務系統。

(6)驗證不通過則拒絕用戶登錄,驗證通過后服務器從客戶證書CerIu中提取身份信息,如用戶名稱或證書序列號等。

(7)查詢系統數據庫中的用戶列表,判斷用戶是否為注冊的合法用戶,如果是則完成服務器對客戶的身份認證,否則拒絕用戶登錄。

(8)服務器響應客戶身份認證的同時,返回服務器身份證書CerIAS和SIGNAS(Ru)給客戶端。

(9)客戶端使用CerIAS,Ru驗證SIGNAS(Ru)是否正確,同時驗證CerIAS是否可信,其驗證過程與服務器端類似。

(10)驗證通過,用戶可以根據服務器身份證書CerIAS中標明的服務器身份信息,如服務器名稱、服務器域名或服務器IP地址判斷是否為自己正在登錄的服務器,如果是則用戶可以根據服務器響應進入系統。

(11)如果驗證不通過,或者服務器的身份信息與用戶希望訪問的服務器身份不符,客戶可退出登錄。

上述完整的認證流程實現了一個完整的雙向身份認證。在實際應用中,對于那些內部網絡應用系統,可以假定服務器是可信的,為了提高認證效率,可以簡化認證流程,只完成第(1)~第(7)步,服務器驗證客戶身份即可;對于互聯網應用,可實現第(8)~第(11)步,即客戶端對服務器的身份進行認證,這樣可以完整地解決網絡應用系統中通信雙方的身份認證問題,避免假冒網站或惡意服務器偽裝等安全問題。

2.3系統安全性分析

根據上述協議設計,整個增強型身份認證系統相對用戶名口令的身份認證系統,可以更加安全和有效地解決網絡應用系統中通信雙方的身份認證問題。

(1)整個增強型身份認證系統的身份認證協議由服務器發起,通過服務器和客戶端分別產生僅對一次會話有效的真隨機數,可以有效抵御網絡重放攻擊;

(2)結合第三方CA機構簽發的數字證書的驗證和會話隨機數的簽名與驗簽,可以有效確認用戶身份的真實性;

(3)采用高強度RSA加密算法和SHA1摘要算法實現的數字簽名技術,可以很好地抵御暴力攻擊和防止網絡竊聽;

(4)協議實現了真正的雙向身份認證,真正解決了通信雙方的身份認證問題。

3基于數字證書技術的增強型身份認證系統的實現

下面我們采用Java JSP/Servlet技術,以Tomcat為應用服務器,舉例來說明如何為B/S架構的網絡應用系統實現增強型身份認證機制。在實現過程中我們使用了廣東省數字證書認證中心(GDCA)提供的數字證書(個人證書和設備證書),通過其PKI安全服務中間件(包括客戶端和服務器端)實現證書讀取、驗證和解析功能以及生成隨機數、數字簽名和驗證等功能。

整個身份認證系統分為兩部份:①認證服務器端程序;②認證客戶端程序。作為B/S應用,客戶端程序是從服務器端下載到客戶端瀏覽器中執行,服務器端程序在應用服務器上執行。客戶端使用Cookie保存客戶端數據,服務器端使用Session變量保存會話數據,數據主要是身份認證過程中產生的隨機數等。系統采用的技術有:

(1)基于1 024bits的RSA非對稱算法和160bits的SHA消息摘要算法實現數字簽名技術;

(2)采用符合X.509 v3標準規范的數字證書;

(3)采用會話隨機數、數字證書和數字簽名實現的安全身份認證協議。

3.1認證服務器端程序實現

認證服務器程序主要由Servlet來實現,根據2.2節的身份認證協議可以知道整個身份認證流程客戶端和服務器需要完成兩次握手過程,所以服務器端程序分為兩個部分,分別由AuthServer1.java和AuthServer2.java來完成。主要代碼示例如下:

(1)AuthServer1.java,響應客戶認證請求,返回隨機數

…/*其他屬性定義和構造方法定義,在此省略,Servlet主要邏輯在PerformTask中執行*/

public void PerformTask(…) throws ServletException, IOException {

//第一次握手:客戶端請求訪問服務器

String orignalText=psij.AdvGenRandom(24);

//服務器端產生24Bytes隨機數RAS

//將隨機數RAS保存在Session變量OrignalText中

…

Vector vc_data=new Vector();

//將RAS保存在矢量中通過傳遞給客戶端認證程序1

vc_data.addElement(orignalText);

req.setAttribute(\"vc_data\", vc_data);

rd=getServletContext().getRequestDispatcher(\"/ClientCheck1.jsp\");//顯示身份認證頁面

}

(2)AuthServer2.java,驗證客戶端隨機數簽名、數字證書和用戶合法性

//初始化部分與AuthServer1.java相同,此處省略

public void PerformTask(…) throws ServletException, IOException {

/*第二次握手:服務器驗證客戶身份:user_cert保存客戶端發送的CerIu*/

/*從Session變量中讀取服務器隨機數,接收客戶端提交的證書、簽名和客戶隨機數*/

…

//驗證客戶端隨機數簽名

flag=psij.AdvVerifySign(user_cert, random_str.getBytes(),

user_random_sign, RSAWithSha1,0);

if (!flag){//驗證不通過

res.sendRedirect(\"/GDCALogin/VerifySignError.html\");

//拒絕登錄}

//驗證客戶端證書有效性

flag=psij.AdvCheckCert(user_cert_str);

if (!flag) {//驗證不通過

res.sendRedirect(\"/GDCALogin/CheckcertError.html\");

//拒絕登錄}

/*讀取證書信息,如讀取用戶名稱、查詢用戶數據庫,驗證用戶是否為注冊合法用戶*/

…

String ServerSignCert=psij.AdvGetCert(SignCert);

//讀取服務器身份證書(簽名證書)

…

//服務器對客戶端隨機數簽名

ServerSign=psij.AdvSignData(\"\",Client_rand.getBytes(),RASWithSha1, 0);

/*將CerIAS,SIGNAS(Ru)保存在矢量中通過傳遞給客戶端認證程序(2)*/

…

rd=getServletContext().getRequestDispatcher(\"/ClientCheck2.jsp\");

//跳轉到客戶端認證程序(2),顯示客戶身份認證通過

}

3.2認證客戶端程序實現

認證客戶端程序主要由JSP來實現,下載到客戶端瀏覽器通過JavaScript腳本執行客戶端認證邏輯。配合服務器端程序,客戶端程序也分為兩個部分,分別由ClientCheck1.jsp和ClientCheck2.jsp來完成,主要代碼示例如下:

(1)ClientCheck1.jsp,第一次握手獲取服務器隨機數,客戶端簽名隨機數,提交客戶數字證書、客戶端簽名和客戶端隨機數,開始先讀取服務器返回的數據。

<%java.util.Vector vc_data=(java.util.Vector)request.getAttribute(\"vc_data\");%>

function Auth()//客戶端身份認證程序

{var randStr=′<%=(String)(vc_data.elementAt(0))%>′;

//獲取服務器端隨機數

…

ret=GDCAReadCert(GDCACom,KeyType,SignCert,CertData);

//從證書載體讀取證書

user_cert.value=CertData[0]//將客戶證書存在客戶端變量中

/*客戶端證對隨機數簽名,摘要算法采用SHA1,簽名輸出保存在outData中*/

ret=GDCASignData(GDCACom,KeyType,user_cert,UserPin,randStr,Sha1,outData);

…

Client_rand.value=GDCAGenRandom(GDCACom,24)

//客戶端產生隨機數

/*成功則提交客戶數字證書、客戶數字簽名、客戶端隨機數給服務器*/

…

form1.action=\"/ServerLogin/AuthServer2\";

//執行服務器第二次握手程序

}

(2)ClientCheck2.jsp,第二次握手服務器驗證通過,客戶端驗證服務器簽名和證書

…//開始讀取服務器返回的數據

<%java.util.Vector vc_data=(java.util.Vector)request.getAttribute(\"vc_data\");%>

function verify()//客戶端驗證程序

{/*獲取服務器返回的簽名及數字證書,并取出第一次握手時保存的客戶端隨機數*/

…//客戶端驗證服務器身份,首先驗證服務器簽名

ret=VerifySign(GDCACom,KeyType.value,ServerCert,ClientRand,ServerSign,Sha1);

if(ret!=0) {alert(\"客戶端驗證服務器簽名失敗!\");

return ret;}

/*用Crl方式驗證服務器證書是否可信,其中Crl從CA的證書查詢驗證服務系統獲得*/

ret=CheckCert(GDCACom, KeyType.value,ServerCert, root_cert,crlData);

if(ret!=0)

{alert(\"服務器證書不可信!\");//服務器證書不可信

return ret;}

form1.action=\"/ServerLogin/LoginAccess\";

//驗證通過,進入登錄成功頁面

}

說明:在AuthServer2.java中將數字證書與系統注冊用戶進行了匹配,使得系統對傳統的用戶名口令身份認證機制具有很好的兼容性。這些用戶系統在升級時可以繼續保留原有的系統用戶名和授權信息,通過建立原有的用戶名與數字證書中用戶身份標志的一一對應關系。例如,將原系統用戶名提交給CA中心,由其簽發到客戶的數字證書中;或者新建一數字證書與原用戶名的對應關系映射表等,即可平滑地升級到使用增強型身份認證系統。

4結束語

目前,我國大多數電子政務、電子商務系統仍采用基于用戶名和口令的身份認證機制,這種機制存在著許多弊端和不足,如口令明文傳輸易被網絡竊聽;口令作為敏感認證信息不易安全保存,容易被非法盜用;不能有效抵御。

暴力攻擊、猜測和重放攻擊;只能單向驗證客戶身份,無法解決服務器是否可信的問題等,嚴重地制約了網絡應用的發展。因此我們基于數字證書技術、公鑰密碼技術,設計了安全身份認證協議,很好地解決了上述安全問題,建立了一套通用的增強型身份認證系統,既可廣泛適用于各類B/S和C/S網絡應用,也可以很方便地用于升級原有系統使用的用戶名和口令身份認證系統。目前該身份認證系統在廣東省社保、國稅、工商等眾多電子政務網上業務系統中得到成功應用,具有很好的實用價值。

參考文獻:

[1]ITU T Recommendation X.509, Information Technology Open Systems Interconnection, The Directory: Authentication Framework[S]. 1997. 

[2]沈濤,馬紅光. 網絡數據加密算法研究及其應用[J]. 計算機工程與應用,2002,38(19):156-158.

[3]Michael Myers, Rich Ankney, Ambarish Malpani, et al. X.509 Internet Public Key Infrastructure Online Certificate Status Protocol OCSP[S]. RFC 2560, PKIX Working Group, 1999.

[4]P Kocher. On Certificate Revocaiton and Validation[J]. Financial Cryptog2 Raphy, 1998,1465:172-177.

[5]X.509 Internet Public Key Infrastructure On line Certificate Status Protocol2OCSP[S]. RFC 2560, 1999.

[6] Housley R, et al. Internet X.509 Public Key Infrastructure, Certificate and CRL Profile[S]. RFC 2459, 1999.

[7]Bruce Schneier. 應用密碼學[M].吳世忠,等. 北京:機械工業出版社,2000.10-158.

作者簡介:呂格莉(1973-),女,湖南長沙人,中南大學講師,湖南大學在讀碩士研究生,研究方向為密碼學與信息安全;王東(1964-),男,湖南長沙人,副教授;戴驥,男,湖南長沙人,經理;邵自然,女,湖南長沙人,講師。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 欧类av怡春院| 欧美日韩国产高清一区二区三区| 国产亚洲欧美在线专区| 国产精品99久久久久久董美香| 中文无码日韩精品| 亚洲av色吊丝无码| 国产白浆视频| 97国产一区二区精品久久呦| 91精品国产91久久久久久三级| 亚洲美女AV免费一区| 欧美色香蕉| 日韩第八页| 亚洲视频免费播放| 久久99国产综合精品女同| 亚洲中文字幕精品| 久久综合色天堂av| 国产麻豆aⅴ精品无码| 在线国产91| 欧美精品伊人久久| 亚洲免费三区| 在线观看av永久| 六月婷婷激情综合| 亚洲欧洲日本在线| 久热精品免费| 亚洲欧美另类视频| 久久综合五月婷婷| 青草视频网站在线观看| 精品国产99久久| 成人免费黄色小视频| 欧美一级在线| 玩两个丰满老熟女久久网| 亚洲高清国产拍精品26u| 国产成人超碰无码| 欧美另类精品一区二区三区| 中文无码影院| 日韩精品视频久久| 亚欧成人无码AV在线播放| A级全黄试看30分钟小视频| 波多野结衣爽到高潮漏水大喷| 女人18毛片一级毛片在线| 免费激情网址| 久久www视频| 中文字幕永久在线看| 国产精品无码久久久久AV| 欧美色视频日本| 国产精品福利尤物youwu| 欧美精品1区2区| 中国成人在线视频| 午夜少妇精品视频小电影| 呦女亚洲一区精品| 幺女国产一级毛片| 伊人久久青草青青综合| 99视频免费观看| 国产91精品最新在线播放| 久久综合一个色综合网| 免费va国产在线观看| 欧美成一级| 亚洲国产精品日韩专区AV| 亚洲另类第一页| 欧美色99| 色香蕉网站| 五月天久久综合国产一区二区| 在线人成精品免费视频| 日韩成人午夜| 美女无遮挡免费视频网站| 中文字幕在线日韩91| 无码一区18禁| 在线观看91香蕉国产免费| 色综合天天操| 91区国产福利在线观看午夜| 国产精品hd在线播放| 国产精品女在线观看| 亚洲精品欧美日本中文字幕| 亚洲国产欧洲精品路线久久| 国产精品太粉嫩高中在线观看| 72种姿势欧美久久久久大黄蕉| 国产h视频免费观看| 香蕉蕉亚亚洲aav综合| 呦视频在线一区二区三区| 欧美激情成人网| 一区二区三区成人| 精品成人一区二区|