卞雪雯+劉健++任奕豪
摘 要: 提出一種基于移動設(shè)備的USB Key身份認(rèn)證方案,主要用于解決在移動設(shè)備端傳統(tǒng)身份認(rèn)證技術(shù)中存在的安全問題。在移動設(shè)備端使用USB Key身份認(rèn)證技術(shù)可以很好地提高移動設(shè)備對用戶身份認(rèn)證的安全性。主要從兩方面進行論述:移動設(shè)備端是如何獲取USB Key中的數(shù)字證書并進行身份認(rèn)證,從而保證移動設(shè)備環(huán)境下的安全;移動設(shè)備端的用戶是如何進行身份認(rèn)證,從而保證應(yīng)用服務(wù)的安全性。通過安全性分析和實驗可得出,這種身份認(rèn)證技術(shù)可有效地抵御移動設(shè)備端賬戶和服務(wù)攻擊。
關(guān)鍵詞: USB Key; 身份認(rèn)證; 信息安全; 數(shù)字證書
中圖分類號: TN958?34; TP391.4 文獻標(biāo)識碼: A 文章編號: 1004?373X(2015)22?0051?04
0 引 言
目前,身份認(rèn)證技術(shù)是信息安全技術(shù)領(lǐng)域中一個熱門的研究問題,如何解決傳統(tǒng)身份認(rèn)證技術(shù)中的難題,直接關(guān)系到用戶能否在各種應(yīng)用的服務(wù)上得到安全性、可靠性和可用性的保障。USB Key身份認(rèn)證技術(shù)是近年來快速發(fā)展的一門身份認(rèn)證、識別技術(shù)[1],它采用軟硬件結(jié)合的方式,在各個領(lǐng)域中都得到了廣泛的應(yīng)用。在移動設(shè)備端,現(xiàn)有的身份認(rèn)證方式已經(jīng)包含了用戶名密碼、動態(tài)口令、USB Key和生物識別等多種身份認(rèn)證技術(shù)。表1是USB Key身份認(rèn)證技術(shù)與各種認(rèn)證技術(shù)基于移動設(shè)備端在易用性、安全性、經(jīng)濟性和可接受性上的比較。生物識別首次應(yīng)用在了蘋果的iPhone手機上,采用了指紋識別的身份認(rèn)證技術(shù),這種方式安全性和易用性高,但是經(jīng)濟成本較高,必須配備一定的硬件予以輔助,推廣程度不是很廣泛。用戶名密碼是每個移動設(shè)備端都基本具有的功能,其安全性比較低。動態(tài)口令在移動設(shè)備端雖然安全性很高,但是易用性較低,給用戶帶來的不便也較明顯。所以基于經(jīng)濟性、安全性和可靠性的基礎(chǔ)上,選擇了在移動設(shè)備端使用USB Key進行身份認(rèn)證。
表1 身份認(rèn)證技術(shù)對比
基于移動設(shè)備的USB Key的身份認(rèn)證技術(shù)可以很好地保證移動設(shè)備端以及其應(yīng)用服務(wù)的安全性,主要從兩個方面進行論述:用戶在使用移動端應(yīng)用服務(wù)時,移動設(shè)備端是如何識別USB Key,并且如何獲取USB Key中的數(shù)字證書進行身份認(rèn)證;移動設(shè)備端的用戶在使用應(yīng)用服務(wù)時是如何對用戶身份進行認(rèn)證,從而保證應(yīng)用服務(wù)在移動設(shè)備環(huán)境下的安全性。
1 相關(guān)技術(shù)
1.1 移動設(shè)備
這里使用的移動設(shè)備以安卓系統(tǒng)為實驗環(huán)境,安卓系統(tǒng)是一種基于Linux的自由及開放源碼的操作系統(tǒng),作為一種開放式的操作系統(tǒng),以Linux系統(tǒng)為核心,使用Java作為其主要的編程語言。安卓系統(tǒng)最初主要用于支持智能手機,后逐步擴展到平板電腦及其他領(lǐng)域上,如智能電視、數(shù)碼相機以及游戲設(shè)備等。
安卓系統(tǒng)在結(jié)構(gòu)上采用分層的架構(gòu),分為四個層次,從高到低分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層和Linux內(nèi)核層[2]。安卓具有開源的特性,使得軟件成本問題得到解決,也可以在安卓系統(tǒng)上實現(xiàn)USB Key身份認(rèn)證技術(shù)。
1.2 USB Key身份認(rèn)證
身份認(rèn)證是指系統(tǒng)對登錄用戶身份進行驗證的過程,驗證用戶的身份是否合法,是否具有訪問及使用某種資源的權(quán)限,保護登陸用戶的物理身份與數(shù)字身份相對應(yīng)[3]。USB Key是數(shù)字證書和用戶密鑰的安全載體,USB Key身份認(rèn)證技術(shù)與傳統(tǒng)的用戶名加口令的認(rèn)證方式相比較,其安全性和保密性更強;與生物特征識別技術(shù)相比較,USB Key身份認(rèn)證技術(shù)操作簡單,技術(shù)成熟,推廣應(yīng)用成本低。簡單易用、便于攜帶、安全可靠是USB Key最顯著的特點[4?5]。
每一個USB Key都具有硬件、PIN碼保護,PIN碼和硬件構(gòu)成了用戶使用USB Key的兩個必要因素,即所謂“雙因子認(rèn)證”[6]。用戶只有同時取得了USB Key和用戶PIN碼,才可以登錄系統(tǒng)。即使用戶的PIN碼被泄漏,只要用戶持有的USB Key不被盜取,合法用戶的身份就不會被仿冒;如果用戶的USB Key遺失,拾到者由于不知道用戶的PIN碼,也無法仿冒合法用戶的身份。從而最大限度的保護了合法用戶的權(quán)利[7]。USB Key具有一定的安全數(shù)據(jù)存儲空間,可以存儲用戶密鑰、數(shù)字證書等秘密數(shù)據(jù),對該存儲空間的訪問操作必須通過特定的程序來實現(xiàn),且其中存儲的用戶私鑰是不能導(dǎo)出的,這就杜絕了非法用戶盜取用戶密碼和仿冒身份的可能。通過與智能卡技術(shù)相結(jié)合,嵌入了智能卡芯片的USB Key不但可以存儲數(shù)據(jù),還可以在USB Key內(nèi)進行加/解密運算和生成隨機密鑰,從而密鑰不必出現(xiàn)在客戶端內(nèi)存中,降低了密鑰在客戶端泄漏的可能性[8]。USB Key身份認(rèn)證系統(tǒng)主要有兩種應(yīng)用模式,一種模式為沖擊?響應(yīng)的認(rèn)證模式;另一種模式為公鑰基礎(chǔ)設(shè)施,即PKI體系認(rèn)證模式[9?10]。
2 USB Key身份認(rèn)證
2.1 基于移動設(shè)備的USB Key身份認(rèn)證方案
為了提高移動設(shè)備端身份認(rèn)證的安全性,設(shè)計了一種適用于移動設(shè)備端的USB Key身份認(rèn)證方案。用戶在訪問移動設(shè)備應(yīng)用前首先需要進行身份認(rèn)證,認(rèn)證通過后,認(rèn)證服務(wù)器通過匹配信息,決定用戶是否有權(quán)利調(diào)用該移動設(shè)備應(yīng)用服務(wù)?;赨SB Key的移動設(shè)備身份認(rèn)證模型,如圖1所示,保證了用戶在使用移動設(shè)備應(yīng)用時能夠具有惟一的身份標(biāo)識,并通過這一身份標(biāo)識保證用戶身份的合法性得到驗證,從而保證了移動設(shè)備應(yīng)用服務(wù)的安全性。
移動設(shè)備應(yīng)用服務(wù)的身份認(rèn)證具體過程如下:
(1) USB Key通過轉(zhuǎn)換接口與安卓設(shè)備相連接,移動設(shè)備首先對USB Key進行識別,識別通過后,移動設(shè)備提取存儲在USB Key中的應(yīng)用程序PID并驗證。
(2) 請求用戶輸入PIN碼,驗證通過后提取USB Key中存儲的數(shù)字證書、私鑰信息PK和對稱密鑰K,同時USB Key產(chǎn)生一個非重復(fù)隨機數(shù)R標(biāo)記此次會話,通過3DES加密算法加密應(yīng)用服務(wù)信息和非重復(fù)隨機數(shù)R,3DES的對稱密鑰K存儲于USB Key中,通過私鑰PK簽名加密對稱密鑰K。
(3) 根據(jù)PKCS#7標(biāo)準(zhǔn)將原始信息(即非重復(fù)隨機數(shù)R和密文)、簽名后的密文、加密后的密文信息以及數(shù)字證書打包發(fā)送給認(rèn)證服務(wù)器。
(4) 認(rèn)證服務(wù)器驗證證書有效性并使用證書中的公鑰對密文進行解密,得到3DES對稱密鑰K,并使用3DES解密密文。
(5) 將解密后的信息與原始信息進行匹配,相同則進行該移動設(shè)備應(yīng)用服務(wù)的調(diào)用。
從上述過程中可得出,認(rèn)證過程主要分兩部分進行:移動設(shè)備端的加密以及數(shù)字簽名過程和認(rèn)證服務(wù)器端的身份驗證過程。
2.2 移動設(shè)備端
移動設(shè)備端在向認(rèn)證服務(wù)器端發(fā)送應(yīng)用認(rèn)證請求時,首先需要檢測USB Key是否插入,當(dāng)USB Key成功與移動設(shè)備相連接,移動設(shè)備會對USB Key進行識別,識別通過后,需要移動設(shè)備確認(rèn)需要進行身份認(rèn)證的應(yīng)用程序,提取USB Key中存儲的應(yīng)用程序PID,并進行識別驗證。驗證后將應(yīng)用程序信息通過USB Key中加密算法進行加密,提取USB Key中的數(shù)字證書,并打包密文和證書發(fā)送至認(rèn)證服務(wù)器端,請求調(diào)用應(yīng)用程序。認(rèn)證服務(wù)器端在接收到認(rèn)證請求后進行認(rèn)證,認(rèn)證通過后使合法用戶調(diào)用移動設(shè)備應(yīng)用程序。移動設(shè)備端請求應(yīng)用認(rèn)證的流程圖如圖2所示。
移動設(shè)備端主要包括加密模塊、證書獲取模塊和進程監(jiān)控模塊3部分。
證書獲取模塊:主要負(fù)責(zé)提取存儲在USB Key中數(shù)字證書的相關(guān)信息。移動設(shè)備端需要請求數(shù)字證書對用戶身份進行標(biāo)識,并實現(xiàn)私鑰對信息的加密簽名,傳送給認(rèn)證服務(wù)器端。在進程監(jiān)控模塊讀取到相應(yīng)應(yīng)用服務(wù)的PID后,移動設(shè)備端調(diào)用證書獲取模塊提取USB Key中的數(shù)字證書信息,保證數(shù)字證書信息與應(yīng)用服務(wù)用戶身份信息的對應(yīng)。
進程監(jiān)控模塊:主要負(fù)責(zé)監(jiān)控移動設(shè)備的應(yīng)用程序服務(wù),這是移動設(shè)備端的核心部分,需要負(fù)責(zé)加密模塊和證書獲取模塊之間信息交流,協(xié)調(diào)其完成信息處理。在設(shè)備檢查到USB Key的連接狀態(tài)后,讀取USB Key的PID識別應(yīng)用程序服務(wù),識別成功后調(diào)用證書獲取模塊和加密模塊進行信息處理。
加密模塊:主要負(fù)責(zé)加密應(yīng)用服務(wù)中的原始認(rèn)證信息,包括了對認(rèn)證信息的加密和數(shù)字證書信息的加密。對于認(rèn)證信息和數(shù)字證書信息,采用已經(jīng)發(fā)展成熟的對稱加密算法3DES。其中3DES的對稱加密密鑰K使用數(shù)字證書中的私鑰SK進行簽名封裝發(fā)送至認(rèn)證服務(wù)器端。如果只是單方面采用非對稱性加密算法,有兩種方式:第一種是簽名,使用私鑰加密、公鑰解密,用于讓所有公鑰所有者驗證私鑰所有者的身份并且用來防止私鑰所有者發(fā)布的內(nèi)容被篡改,但是不用來保證內(nèi)容不被他人獲得;第二種是加密,用公鑰加密、私鑰解密,用于向公鑰所有者發(fā)布信息,這個信息可能被他人篡改,但是無法被他人獲得。這里對于對稱密鑰K使用第一種加密方式[11]。
2.3 認(rèn)證服務(wù)器端
認(rèn)證服務(wù)器中的證書認(rèn)證模塊在接收到經(jīng)過PKCS#7處理的報文后,證書驗證模塊對移動設(shè)備端提供的數(shù)字證書的有效期、證書鏈進行驗證,并檢查證書是否存在于CA證書庫,失敗則直接放棄。在通過數(shù)字證書驗證后,認(rèn)證服務(wù)器使用數(shù)字證書的公鑰對傳送的密文進行解密處理。將解密后的信息與原始信息進行匹配,如果信息匹配成功,則獲取應(yīng)用程序服務(wù)。認(rèn)證服務(wù)器端驗證流程如圖3所示。認(rèn)證服務(wù)器端主要包括解密模塊和證書驗證模塊2個部分。
證書驗證模塊:主要負(fù)責(zé)驗證數(shù)字證書的有效期、證書鏈等信息。數(shù)字證書代表了移動設(shè)備端的惟一身份標(biāo)識,證書驗證模塊通過驗證證書的有效其、證書鏈、是否位列黑名單以確保證書的可靠性和安全性。
解密模塊:主要負(fù)責(zé)解密應(yīng)用的用戶信息和數(shù)字證書信息。首先在證書驗證成功后,獲取到證書中的公鑰PK解密3DES加密算法的對稱密鑰K,然后對稱密鑰K解密收到的密文序列,解密應(yīng)用服務(wù)信息和非重復(fù)隨機數(shù)R。將由對稱密鑰K解密得到的信息與原始信息進行比較,最后認(rèn)證服務(wù)器返回相應(yīng)信息。
3 安全性分析
隨著移動設(shè)備的不斷發(fā)展,移動設(shè)備簡單易攜、功能強大的特性,使得越來越多的用戶對其青睞有加,移動設(shè)備端用戶身份認(rèn)證的安全性問題也越來越受到關(guān)注。對于移動設(shè)備而言,普遍的認(rèn)證方式還僅限于用戶名密碼,給用戶的身份安全性問題帶來極大的風(fēng)險。移動設(shè)備的安全問題主要在于用戶賬戶和應(yīng)用服務(wù)攻擊,而USB Key在經(jīng)濟許可以內(nèi)很好地解決了這個問題。
(1) 選擇密文攻擊和密鑰猜測攻擊。移動客戶端與認(rèn)證服務(wù)器端在每次交互式時,USB Key和認(rèn)證服務(wù)器都會產(chǎn)生不同的密鑰(即一對公鑰和私鑰)。這(2) 重放攻擊。移動設(shè)備端與認(rèn)證服務(wù)器端進行交互時,USB Key會產(chǎn)生一個非重復(fù)的隨機數(shù)和時間戳簽名信息。時間戳可以解決時間同步帶來的問題,同時可以保證消息的實時性。當(dāng)攻擊者實施重放攻擊時,認(rèn)證服務(wù)器端收到消息的時間戳與消息實際的時間戳相差較大,可以判斷消息的不可信。所以本方案可以應(yīng)對重發(fā)攻擊。
(3) 拒絕服務(wù)攻擊。認(rèn)證服務(wù)器端的證書驗證模塊可以判斷請求的身份,如果對方不能通過數(shù)字證書的校驗,則不給予公鑰。所以本方案可以應(yīng)對拒絕服務(wù)攻擊。
(4) 中間人攻擊。移動客戶端與認(rèn)證服務(wù)器端進行的是雙向證書驗證,攻擊者無法冒充其中之一對認(rèn)證消息進行查看、修改和轉(zhuǎn)發(fā)等操作。
4 仿真實驗
實驗軟硬件平臺如下:
Phone:SAMSUNG SHV?E120S;OS:Android 4.1.2;USB Key:UKey2000;Server:LENOVO M820E;OS:Windows Sever 2008 R2,Oracle。USB Key身份認(rèn)證安卓平臺實現(xiàn)效果圖見圖4。
5 結(jié) 語
本文提出了一種基于移動設(shè)備的USB Key身份認(rèn)證方案,解決了在移動設(shè)備端傳統(tǒng)身份認(rèn)證方式缺失的安全問題,提高了用戶使用移動設(shè)備應(yīng)用服務(wù)時的安全性和可靠性。移動設(shè)備應(yīng)用服務(wù)的不斷發(fā)展,用戶身份認(rèn)證所帶來的安全問題也逐漸得到重視,僅靠用戶名密碼的傳統(tǒng)方式已經(jīng)出現(xiàn)很大的安全漏洞。對于用戶而言,USB Key在移動設(shè)備的應(yīng)用可以對用戶身份信息得到很好地驗證,經(jīng)濟性也可以接受,但并不簡單易攜。因此,對于移動設(shè)備端的身份認(rèn)證方式還有很多待于探索的領(lǐng)域,何種認(rèn)證方式既能在帶來安全性的同時,經(jīng)濟性、易用性、可接受性也能滿足用戶的需求,是移動設(shè)備身份認(rèn)證領(lǐng)域研究的重點。
參考文獻
[1] 吳永英,鄧路,肖道舉,等.一種基于USB Key的雙因子身份認(rèn)證密鑰交換協(xié)議[J].計算機工程與科學(xué),2007,29(5):56?59.
[2] 李培林.安卓系統(tǒng)應(yīng)用及發(fā)展趨勢展望[J].計算機光盤軟件與應(yīng)用,2012(18):161?162.
[3] 張鑫.USB Key在PKI體系中的應(yīng)用研究[J].軟件導(dǎo)刊,2013,12(3):39?41.
[4] 汪濤.基于USB Key的遠(yuǎn)程身份認(rèn)證系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:武漢科技大學(xué),2012.
[5] 馮登國.電子商務(wù)中的安全認(rèn)證問題[R].北京:中國科技大學(xué)研究生院,1997.
[6] 曹喆,王以剛.基于USB Key的身份認(rèn)證機制的研究與實現(xiàn)[J].計算機應(yīng)用與軟件,2011,28(2):284?286.
[7] 王帥,常朝穩(wěn),魏彥芬.基于云計算的USB Key身份認(rèn)證方案[J].計算機應(yīng)用研究,2014,31(7):2130?2134.
[8] 趙會洋,王爽,魏士偉.網(wǎng)格安全模型中認(rèn)證策略的研究[J].計算機技術(shù)與發(fā)展,2010,20(4):171?174.
[9] ADAMS C, LLOYD S.公開密鑰基礎(chǔ)設(shè)施:概念、標(biāo)準(zhǔn)和實施[M].馮登國,譯.北京:人民郵電出版社,2001.
[10] 周曉斌,許勇,張凌.一種開放式PKI身份認(rèn)證模型的研究[J].國防科技大學(xué)學(xué)報,2013,35(1):171?174.
[11] 王權(quán),楊琳,劉偉,等.基于USB Key的訪問控制方法研究[J].計算機工程與設(shè)計,2008,29(11):2727?2729.