摘 要:主要介紹了一次性口令技術和指紋識別技術,分析了一次性口令認證和指紋認證的優缺點;提出了一種基于一次性口令和指紋的身份認證方法,采用單向函數生成一次性口令并用一次性口令加密指紋,實現了客戶端和認證服務器的雙向認證,解決了小數攻擊和指紋泄漏等安全問題,提高了公安業務系統的安全性。
關鍵詞:身份認證; 雙因子; 一次性口令; 指紋識別; 公安業務應用系統
中圖分類號:TP393.08 文獻標志碼:A
文章編號:10013695(2008)09282203
Doublefactor twoway authentication system
SHEN Yongjun, XU Hualong
(School of Information Science Engineering, Lanzhou University, Lanzhou 730000, China)
Abstract:This paper mainly introduced technology about onetime password and fingerprint recognition and analyzed their advantages and disadvantages. Using hash function and fingerprint encrypted by onetime password, brought forword a method of twoway double factor authentication,implementedtwoway authentication between client and server. It resolved the problems such as small integer attach and fingerprint leak, and improved security of public security application system.
Key words:identity authentication; double factor; onetime password; fingerprint recognition; public security business application system
由于公安業務的保密性,安全問題在查詢過程中變得尤為重要。只有保證數據的機密性和完整性,才能提高公安機關辦公能力和破案效率。可以使用多種防范技術達到系統安全的目的。其中身份認證技術是應用系統安全防護的第一道防線,其他的安全服務都要依賴于它。黑客攻擊的目標往往就是身份認證系統,一旦身份認證系統被攻破,則系統的所有安全措施將形同虛設。
現有的公安業務應用系統如人口查詢系統等大多采用靜態口令認證方式,一定程度上能夠有效識別用戶身份,使用方便,但攻擊者可以通過網絡數據竊聽、口令猜測、字典攻擊、重放攻擊等方式破壞靜態口令的安全。因此,采用各種安全手段對日益增長的公安網絡業務實施保護是必需的。通過建立安全的身份認證系統來保證具有不同權限的查詢人員能夠進行與其身份相符的查詢操作,從而可以達到在對人口信息保密的基礎上滿足公安相關業務的特殊要求。
目前網上廣泛使用的另一種身份認證方案是動態口令身份認證。例如:S/Key系統[1~3]由于其在服務器端和客戶端不保存口令,有著更高的安全性,但其無法抵抗小數攻擊;基于時間同步的身份認證[4]以流逝的時間作為變動因子,操作簡單、使用容易,但需要專用的令牌,對認證雙方的時間準確性要求較高;基于IC卡的身份認證方式能有效防止口令猜測,但系統只認卡不認人,若卡丟失就容易被人冒充。其余的用戶身份認證方案如PKI、 Kerberos等,主要基于可信任的第三方和數字證書,協議的運作要相對復雜很多[5]。
由于生物特征的惟一性和穩定性等特點,基于生物特征的身份認證技術目前在公安、軍事、安全等領域得到廣泛應用,但生物特征在網絡傳輸中存在被截獲或被竊取的危險,而且生物特征的不可撤銷性,一旦泄露便造成災難性的后果。為此,利用生物技術與其他技術相結合的方法是一個趨勢,而生物技術中發展最為成熟的是指紋識別技術。
針對S/Key系統不能抵抗小數攻擊的缺點,結合現有的S/Key系統的改進系統[5],并針對指紋等生物特征在網絡傳輸過程中存在的意外和危險,本文提出了一種一次性口令與指紋相結合的強雙因子的雙向身份認證方案。
為方便描述,約定符號如下:IDc為用戶C的身份標志;A表示認證服務器;W為用戶秘密通行短語;N為初始序列號;S表示種子值;T表示指紋特征數據;Pi表示用戶第i次登錄的一次性口令;F(x)表示單向哈希函數;Fi(x)表示對x連續進行i次哈希運算;Ek (m)表示用密鑰k對信息m進行加密運算;+為連接運算符。
1 S/Key系統[1~3]
S/Key系統是一種一次一密認證系統,客戶端和服務器端口沒有保留口令及生成口令的全部信息,整個通信過程都是安全的。用戶每一次登錄系統所用的口令都是不同的,攻擊者通過竊聽得到的口令無法用于下一次認證,而且用戶秘密通行短語從不在網上進行傳輸,保證了在網絡上傳送的密碼只使用一次,可以有效防止通過竊聽進行重放攻擊,具有較高的安全性。1.1 注冊階段
用戶選擇自己的秘密通行短語W,服務器為每個用戶生成一個種子值S,用戶設置一次性口令序列的最大元素個數N。用戶輸入的S和N通過安全通道提交給認證服務器,認證服務器計算出一次性口令為P0=Fn(W+S)。數據庫中用戶C的注冊數據內容為用戶IDc、種子值S、初始序列號N、一次性口令P0。
1.2 認證階段
第i次認證過程如下:
a)C→A:IDc;認證請求;
b)A→C:N-i,S;發送挑戰;
c)C→A:Pi;計算一次性口令Pi并作為應答;
d)服務器對收到的Pi再作一次哈希運算F(Pi),并將結果F(Pi)與保存在認證服務器端的該用戶上次成功登錄的一次性口令Pi-1比較,相同則通過認證。
13 S/Key系統的缺陷
S/Key系統在不安全信道上有著先天的缺陷,即不能防止小數攻擊。當用戶C向認證服務器A發出請求時,攻擊者B冒充認證服務器A給客戶C發送一個挑戰。其中M<N。S由網絡監聽獲得,客戶端C對A不加鑒別便計算出一次性口令Pj,則B可以獲得Pi~Pj之間的所有一次性口令,他便可利用這些一次性口令冒充合法用戶登錄服務器,至此攻擊成功。
2 指紋識別技術
2.1 指紋識別的優點[6]
21.1 穩定性和惟一性
這是科學研究發現的至今仍然承認的指紋的兩個重要特征。穩定性保證了用戶安全信息的長期有效性;惟一性保證了被認證對象與要驗證的身份之間嚴格的一一對應關系。指紋具有“物證之首”的美譽。
21.2 掃描指紋的快速性
指紋使用起來不僅非常方便,而且指紋樣本也容易獲得。目前已有標準的指紋樣本庫,因此開發指紋認證系統比較容易,而且實用性強。
2.1.3 利用多個指紋可提高系統的安全性
每個人的十指指紋均不相同,保證了可以利用多個指紋提高系統的安全性,而且也不會增加系統的設計負擔。
2.1.4 指紋特征值減小了系統模板庫的存儲量
指紋識別中使用的模板并非原始的指紋圖像,而是從指紋圖像中提取的特征值,通常為256 Byte,這就減小了系統模板庫的存儲量,大大減少了網絡交互傳送量,減輕了網絡傳輸負擔,便于實現指紋異地匹配。
從技術優缺點、可行性、實用性分析看,用指紋作為認證的依據不僅具有許多獨到的信息安全的優點,更重要的是具有很高的實用性和可行性。
2.2 指紋識別的原理
指紋識別技術主要包括指紋圖像采集、指紋圖像預處理與增強、特征提取與保存數據、特征值比對和匹配等過程。指紋識別系統如圖1所示。
指紋識別過程:
a)通過指紋讀取設備讀取到指紋圖像;
b)對原始圖像進行初步處理,增強使之更清晰;
c)通過指紋辨識算法提取指紋的特征數據并保存為指紋的特征模板;
d)判斷兩個輸入指紋的特征模板是否出自同一手指。
3 雙因子的雙向身份認證系統基本工作原理
根據S/Key系統和指紋識別各自所獨有的優勢,同時考慮到S/Key系統存在小數攻擊必須由客戶端對認證服務器身份進行驗證,聯系對S/Key系統改進了的基于單向函數的雙向認證的一次性口令系統TAOTP[5],利用隨機數(種子值S和序列號N-i)和上次成功登錄的一次性口令Pi對服務器身份進行驗證。
由于秘密通行短語的重要性和指紋特征的不可撤銷性,其作為用戶個人保留的 認證信息必須保密,不能在網上以明文傳輸。通過利用一次性口令對指紋信息加密將一次性口令與指紋識別有機結合,進一步增強用戶身份認證的強度。
本文所述的雙因子雙向身份認證過程分為兩個階段:
a)注冊階段
(a)動態口令的注冊階段。用戶選擇并記憶一個秘密通行短語W,服務器為每個用戶生成一個種子值S;用戶設置一次性口令序列的最大元素個數N;用戶輸入的S和N通過安全通道提交給認證服務器;認證服務器計算出一次性口令:P0=Fn(W+S)。
(b)指紋的注冊階段。客戶端通過指紋識別儀提取用戶的指紋特征值T′,并將指紋特征值T′通過安全通道傳遞到認證服務器,保存在認證服務器的數據庫中。
至此,數據庫中用戶C的注冊數據內容為用戶IDc、種子值S、初始序列號N、一次性口令P0、秘密通行短語W、指紋特征值T′。
b)認證階段。第i次的認證過程(圖2)如下:
(a)C→A:客戶端向認證服務器端發送請求信息IDc。
(b)A→C:認證服務器響應一個挑戰,用H(W) 加密S+N-i+Pi-1得到EH(W)(seed+N-i+Pi-1),將EH(W) (seed+N-i+Pi-1)和它的散列值hashc發給客戶端。
(c)客戶端接受挑戰,檢驗數據完整性。若無竄改,則解密得到S,N-i,Pi-1,計算Pi=Fn-i(W+S )。
(d)客戶端對服務器進行認證。保存Pi,并對Pi再進行一次F運算得到P′i-1,即P′i-1=F(Pi), 比較P′i-1和Pi-1。如果相等則轉入(e);否則認為是存在小數攻擊,拒絕登錄。
(e)C→A:客戶端通過指紋儀對用戶的指紋信息進行采集,提取出指紋特征數據T,用Pi作為密鑰對T進行加密,并將加密信息M和M的散列值hasht發送給認證服務器。其中:M=EPi (T) 。
(f)認證服務器收到M后檢驗完整性,若無竄改,則計算P′i=Fn-i (W+S ),用P′i作為解密密鑰對M進行解密,得到指紋特征值T;然后與存儲在指紋模板庫中的指紋特征值T′進行匹配,如果匹配成功,則通過對客戶端的認證。
(g)認證服務器對保存的信息進行更新,序列號減一,認證口令改為Pi,以便下次登錄。當序列號減到0時,重新進行初始化。
4 系統實現
整個系統根據項目需求主要是針對公安系統內部的用戶身份認證。為求與原來公安業務應用系統一致,系統設計成B/S模式,主要由數據庫、認證服務器、客戶端三個部分組成,如圖3所示。數據庫使用SQL Server 2000;認證服務器端功能由Servlet完成;客戶端由JSP和Applet來實現。以下不再詳述加密、解密以及完整性檢驗模塊。
41 數據庫表設計
秘密通行短語和指紋特征值作為用戶最重要的信息不能直接存儲,必須進行加密和變換,存儲秘密通行短語的MD5散列值和指紋特征數據的Base64編碼。由于MD5的單向性[7],為求出下次登錄的一次性口令,還要存儲秘密通行短語和種子值的MD5一次散列值。基本用戶身份認證信息如表1所示。
4.2 認證服務器功能實現
認證服務器是整個系統的核心,主要由注冊和認證兩部分組成,其余如用戶、日志管理不作詳述。
4.2.1 注冊
為了確保安全,注冊在認證服務器端進行,主要為用戶分配種子值,并生成初始一次性口令P0,并妥善保存用戶的秘密通行短語W和指紋信息T′。對秘密通行短語進行散列,保存H(W),不保存指紋圖像,只保存指紋特征數據的Base64編碼。
4.2.2 認證
主要由以下三個模塊組成:
a)挑戰生成模塊。它主要是對合法用戶的請求發出挑戰,根據IDc查詢該用戶的seed、N-i、Pi-1,用H(W)加密得到EH(W)(seed+N-i+Pi-1),生成EH(W)(seed+N-i+Pi-1)的散列值hashc。
b)一次性口令生成模塊。它主要是生成用戶本次登錄的一次性口令P′i,直接對數據庫中的H(W+S)迭代(N-i-1)次,作為解密指紋數據的密鑰。
c)指紋匹配模塊。它主要是對客戶端發送過來的指紋和數據庫中的指紋進行匹配,設定一定的閾值如90%。如果匹配結果大于等于該閾值,就認為兩個指紋出自同一手指。
4.3 客戶端功能實現
主要由以下兩個模塊組成:
a)服務器驗證模塊。用于認證服務器端相同的算法生成一次性口令Pi,用Pi的一次散列值F(Pi)與Pi-1比較對服務器進行驗證。
b)指紋提取模塊。通過Applet對本地文件簽名[8],根據安全策略文件賦予的權限,通過本地方法訪問指紋采集儀,調用指紋提取算法讀取指紋特征值。安全策略文件如下: keystore
″http://202.201.12.202:8080/myweb/applet/myapplet.store″,
″JKS″;
grant signedBy ″myapplet″
{ permission java.io.FilePermission
″〈〈S│{D:/myweb/applet/myapplet.jar}〉〉″, ″read″;
permission java.io.FilePermission ″〈〈S│{D:/myweb/image/-} 〉〉″, ″read″;
};
5 實驗結果
在實驗室局域網環境下,仿真實驗的系統性能參數如表2所示。
6 安全性分析
61 保密性
本系統中用戶秘密通行短語不在網上傳輸。通信雙方之間的認證信息如種子值、序列號、一次性口令、指紋特征數據等都經加密后傳輸,能有效避免網絡竊聽。
62 完整性
實現了客戶端與認證服務器端之間的雙向認證,由客戶端通過種子值、序列號、上次成功登錄的一次性口令等三要素對認證服務器身份進行驗證。若Pi不等于F(Pi)便終止認證,使得攻擊者無法進行小數攻擊,而后由認證服務器通過指紋特征數據和本次登錄的一次性口令兩要素對客戶端身份進行驗證。客戶端和服務器端都通過散列值進行完整性檢驗,防止數據不被竄改。
63 不可抵賴性
用戶指紋特征數據與用戶一一對應,指紋的惟一性保證用戶不可抵賴。可以根據實際情況更改指紋匹配的閾值。
64 抗重放攻擊
用戶指紋特征數據不以明文傳輸而是用每次登錄的一次性口令加密后傳輸,保障了指紋信息不被泄露,而且對指紋加密的密鑰是每次都變化的一次性口令,使得攻擊者很難進行重放。本系統以足夠安全和信賴的認證服務器為前提,將最重要的秘密通行短語和指紋特征值加密存儲。如果對安全性要求極高,必須采取相關的安全措施保障認證服務器的安全,以及數據的機密性和完整性,防止內部攻擊。
7 結束語
由于一次性口令使用簡單、具有較高的安全性,加上指紋獨有的特性,兩者的有機結合將會進一步提高用戶身份認證的強度。本文所提出的系統的客戶端和認證服務器端均由軟件來實現,在局域網環境下運行良好,有待推廣到復雜的實際網絡環境中進行檢驗。采取更加安全有效的措施保障傳輸過程中以及認證服務器端數據的機密性和完整性,防止內部攻擊,真正實現遠程用戶認證,將該認證系統完善并應用到其他相關公安業務各警種系統將是下一步的工作。
參考文獻:
[1]HALLER N. RFC 1760,The S/KEY onetime password system[S].1995.
[2]HALLER N. RFC 2289, A onetime password system[S].1998.
[3]王敏,戴宗坤,方勇.一種新的一次性口令機制及其應用[J]. 計算機應用研究,2005,22(1):108109.
[4]敖山,李新中,唐守廉.時間敏感的動態口令身份認證系統研究及設計[J]. 計算機應用研究,2007,24(7):151153.
[5]王濤,謝冬青,周洲儀.一種新的雙向認證的一次性口令系統TAOTP[J].計算機應用研究,2005,22(9):128130.
[6]朱建新,楊小虎.基于指紋的網絡身份認證[J].計算機應用研究,2001,18(12):1417.
[7]汪同慶,魯軍,華晉,等.基于MD5 算法和Schnorr 協議的雙因素身份認證系統[J].計算機應用研究,2004,21(12):137139.
[8]陳劍,周意青,劉振華.JavaApplet的安全性及應用[J]. 計算機應用研究,2001,18(11):6970,73.