張小波,陳軍勝,白曉明,張俊,石吉寶
(成都市勘察測繪研究院,四川成都 610081)
USBKEY是一種USB接口的硬件設(shè)備,具有唯一編號,它內(nèi)置單片機或智能卡芯片,有一定的存儲空間,可用于存儲用戶的密鑰及數(shù)字證書,利用USBKEY內(nèi)置的公鑰算法(如HMAC-MD5算法)可實現(xiàn)對用戶身份的認(rèn)證。由于用戶密鑰保存在USBKEY中,理論上使用任何方式都無法讀取,因此保證了用戶認(rèn)證的安全性。
USBKEY用于身份認(rèn)證,首先需要進(jìn)行USBKEY的注冊,在USBKEY中寫入用戶名信息,并在數(shù)據(jù)庫中記錄用戶名、USBKEY的序列號等。
圖1 USBKEY驗證過程
USBKEY的驗證過程如下:服務(wù)器端產(chǎn)生一個隨機數(shù),將隨機數(shù)發(fā)送給客戶端,客戶端的USBKEY利用此隨機數(shù)和存儲的密鑰文件通過硬件加密引擎進(jìn)行計算,得到運算結(jié)果并發(fā)送給服務(wù)器;服務(wù)器端根據(jù)用戶信息和隨機數(shù)用加密引擎進(jìn)行計算,得到運算結(jié)果,與客戶端發(fā)送的結(jié)果進(jìn)行比較,若結(jié)果一致則通過驗證。
下面是以北京飛天誠信的ePass1000ND制作的一個基于ASP.NET的網(wǎng)絡(luò)信息系統(tǒng)身份認(rèn)證演示。
系統(tǒng)部署后,首先需要進(jìn)行USBKEY注冊,在客戶機插入 USBKEY,輸入一個密鑰,然后點擊“USBKEY授權(quán)”,將密鑰加密處理后寫入USBKEY。
在USBKEY驗證時,需要輸入待驗證的密鑰,然后點擊“USBKEY驗證”,若用戶輸入的密鑰正確,則驗證成功,否則驗證失敗。
圖2 USBKEY注冊及驗證演示
客戶端讀寫USBKEY是利用USBKEY廠家提供的ACTIVEX控件進(jìn)行的,需要在ASPX頁面的<body>段添加一個ACTIVEX對象,對象名為“epass”:
USBKEY的注冊需要在用戶數(shù)據(jù)庫中寫入用戶賬號密碼信息及用戶名與USBKEY對應(yīng)關(guān)系,在USBKEY中寫入密鑰等,USBKEY寫入密鑰的核心代碼如下:
USBKEY驗證的實質(zhì)是驗證服務(wù)器端存儲的密鑰與USBKEY中存儲的密鑰是否一致,為安全起見,在驗證時并不是直接用密鑰進(jìn)行比對,而是分別將密鑰與一組隨機數(shù)進(jìn)行不可逆的哈希運算,比較哈希運算的結(jié)果是否一致即可。USBKEY驗證需要服務(wù)器與客戶端交互,服務(wù)器端生成隨機數(shù),利用隨機數(shù)和密鑰進(jìn)行哈希運算,得到結(jié)果1;客戶端的USBKEY利用此隨機數(shù)和內(nèi)部存儲的密鑰進(jìn)行哈希運算,得到結(jié)果2;服務(wù)器端將結(jié)果1和結(jié)果2進(jìn)行對比,若一致則驗證成果,否則失敗。
(1)生成隨機數(shù)
(3)服務(wù)器端哈希運算及驗證
以上是USBKEY用于網(wǎng)絡(luò)信息系統(tǒng)身份認(rèn)證的最簡演示,在實際運用時,可以采取以下一些方法,進(jìn)一步提高網(wǎng)絡(luò)系統(tǒng)身份認(rèn)證的安全性:
(1)用戶名與USBKEY的序列號綁定:由于每個USBKEY都有一個不可更改的唯一序列號,因此實際上是將用戶名與USBKEY硬件綁定了,用戶只要保管好自己的USBKEY就可以防止他人以本人身份登錄;
(2)寫入USBKEY的密鑰二次加密:一般以用戶名或密碼作為密鑰,經(jīng)加密后寫入USBKEY。雖然密鑰文件在USBKEY中對用戶是不可見的,但是由于用戶名或者密碼本身仍然有泄露風(fēng)險,因此可以自定義特定算法,對密鑰進(jìn)行二次加密后再寫入USBKEY,這樣即使非法用戶盜取了用戶名、密碼仍然無法復(fù)制USBKEY;
(3)啟用USBKEY自身的權(quán)限系統(tǒng):在寫入密鑰散列計算后得到的兩個文件時,可以對這兩個文件的權(quán)限設(shè)置為需要用戶PIN碼驗證,由于用戶PIN碼是USBKEY的使用者自行設(shè)置的,只與USBKEY硬件有關(guān),與身份認(rèn)證系統(tǒng)無關(guān),且PIN碼累計輸錯一定次數(shù)后USBKEY將會自動鎖定無法使用,采用此種方法可以顯著提高安全性。
[1]周廣輝.USBKEY用戶認(rèn)證平臺的研究和實現(xiàn)[J].信息安全與通信保密,2009(9):113~118.
[2]馬偉強.我國網(wǎng)上銀行身份認(rèn)證技術(shù)分析[J].計算機安全,2012(3):50~52.
[3]北京飛天誠信科技有限公司.ePass1000ND開發(fā)文檔[R].