摘 要:主要介紹了一次性口令技術(shù)和指紋識(shí)別技術(shù),分析了一次性口令認(rèn)證和指紋認(rèn)證的優(yōu)缺點(diǎn);提出了一種基于一次性口令和指紋的身份認(rèn)證方法,采用單向函數(shù)生成一次性口令并用一次性口令加密指紋,實(shí)現(xiàn)了客戶端和認(rèn)證服務(wù)器的雙向認(rèn)證,解決了小數(shù)攻擊和指紋泄漏等安全問(wèn)題,提高了公安業(yè)務(wù)系統(tǒng)的安全性。
關(guān)鍵詞:身份認(rèn)證; 雙因子; 一次性口令; 指紋識(shí)別; 公安業(yè)務(wù)應(yīng)用系統(tǒng)
中圖分類號(hào):TP393.08 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):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
由于公安業(yè)務(wù)的保密性,安全問(wèn)題在查詢過(guò)程中變得尤為重要。只有保證數(shù)據(jù)的機(jī)密性和完整性,才能提高公安機(jī)關(guān)辦公能力和破案效率。可以使用多種防范技術(shù)達(dá)到系統(tǒng)安全的目的。其中身份認(rèn)證技術(shù)是應(yīng)用系統(tǒng)安全防護(hù)的第一道防線,其他的安全服務(wù)都要依賴于它。黑客攻擊的目標(biāo)往往就是身份認(rèn)證系統(tǒng),一旦身份認(rèn)證系統(tǒng)被攻破,則系統(tǒng)的所有安全措施將形同虛設(shè)。
現(xiàn)有的公安業(yè)務(wù)應(yīng)用系統(tǒng)如人口查詢系統(tǒng)等大多采用靜態(tài)口令認(rèn)證方式,一定程度上能夠有效識(shí)別用戶身份,使用方便,但攻擊者可以通過(guò)網(wǎng)絡(luò)數(shù)據(jù)竊聽(tīng)、口令猜測(cè)、字典攻擊、重放攻擊等方式破壞靜態(tài)口令的安全。因此,采用各種安全手段對(duì)日益增長(zhǎng)的公安網(wǎng)絡(luò)業(yè)務(wù)實(shí)施保護(hù)是必需的。通過(guò)建立安全的身份認(rèn)證系統(tǒng)來(lái)保證具有不同權(quán)限的查詢?nèi)藛T能夠進(jìn)行與其身份相符的查詢操作,從而可以達(dá)到在對(duì)人口信息保密的基礎(chǔ)上滿足公安相關(guān)業(yè)務(wù)的特殊要求。
目前網(wǎng)上廣泛使用的另一種身份認(rèn)證方案是動(dòng)態(tài)口令身份認(rèn)證。例如:S/Key系統(tǒng)[1~3]由于其在服務(wù)器端和客戶端不保存口令,有著更高的安全性,但其無(wú)法抵抗小數(shù)攻擊;基于時(shí)間同步的身份認(rèn)證[4]以流逝的時(shí)間作為變動(dòng)因子,操作簡(jiǎn)單、使用容易,但需要專用的令牌,對(duì)認(rèn)證雙方的時(shí)間準(zhǔn)確性要求較高;基于IC卡的身份認(rèn)證方式能有效防止口令猜測(cè),但系統(tǒng)只認(rèn)卡不認(rèn)人,若卡丟失就容易被人冒充。其余的用戶身份認(rèn)證方案如PKI、 Kerberos等,主要基于可信任的第三方和數(shù)字證書(shū),協(xié)議的運(yùn)作要相對(duì)復(fù)雜很多[5]。
由于生物特征的惟一性和穩(wěn)定性等特點(diǎn),基于生物特征的身份認(rèn)證技術(shù)目前在公安、軍事、安全等領(lǐng)域得到廣泛應(yīng)用,但生物特征在網(wǎng)絡(luò)傳輸中存在被截獲或被竊取的危險(xiǎn),而且生物特征的不可撤銷性,一旦泄露便造成災(zāi)難性的后果。為此,利用生物技術(shù)與其他技術(shù)相結(jié)合的方法是一個(gè)趨勢(shì),而生物技術(shù)中發(fā)展最為成熟的是指紋識(shí)別技術(shù)。
針對(duì)S/Key系統(tǒng)不能抵抗小數(shù)攻擊的缺點(diǎn),結(jié)合現(xiàn)有的S/Key系統(tǒng)的改進(jìn)系統(tǒng)[5],并針對(duì)指紋等生物特征在網(wǎng)絡(luò)傳輸過(guò)程中存在的意外和危險(xiǎn),本文提出了一種一次性口令與指紋相結(jié)合的強(qiáng)雙因子的雙向身份認(rèn)證方案。
為方便描述,約定符號(hào)如下:IDc為用戶C的身份標(biāo)志;A表示認(rèn)證服務(wù)器;W為用戶秘密通行短語(yǔ);N為初始序列號(hào);S表示種子值;T表示指紋特征數(shù)據(jù);Pi表示用戶第i次登錄的一次性口令;F(x)表示單向哈希函數(shù);Fi(x)表示對(duì)x連續(xù)進(jìn)行i次哈希運(yùn)算;Ek (m)表示用密鑰k對(duì)信息m進(jìn)行加密運(yùn)算;+為連接運(yùn)算符。
1 S/Key系統(tǒng)[1~3]
S/Key系統(tǒng)是一種一次一密認(rèn)證系統(tǒng),客戶端和服務(wù)器端口沒(méi)有保留口令及生成口令的全部信息,整個(gè)通信過(guò)程都是安全的。用戶每一次登錄系統(tǒng)所用的口令都是不同的,攻擊者通過(guò)竊聽(tīng)得到的口令無(wú)法用于下一次認(rèn)證,而且用戶秘密通行短語(yǔ)從不在網(wǎng)上進(jìn)行傳輸,保證了在網(wǎng)絡(luò)上傳送的密碼只使用一次,可以有效防止通過(guò)竊聽(tīng)進(jìn)行重放攻擊,具有較高的安全性。1.1 注冊(cè)階段
用戶選擇自己的秘密通行短語(yǔ)W,服務(wù)器為每個(gè)用戶生成一個(gè)種子值S,用戶設(shè)置一次性口令序列的最大元素個(gè)數(shù)N。用戶輸入的S和N通過(guò)安全通道提交給認(rèn)證服務(wù)器,認(rèn)證服務(wù)器計(jì)算出一次性口令為P0=Fn(W+S)。數(shù)據(jù)庫(kù)中用戶C的注冊(cè)數(shù)據(jù)內(nèi)容為用戶IDc、種子值S、初始序列號(hào)N、一次性口令P0。
1.2 認(rèn)證階段
第i次認(rèn)證過(guò)程如下:
a)C→A:IDc;認(rèn)證請(qǐng)求;
b)A→C:N-i,S;發(fā)送挑戰(zhàn);
c)C→A:Pi;計(jì)算一次性口令Pi并作為應(yīng)答;
d)服務(wù)器對(duì)收到的Pi再作一次哈希運(yùn)算F(Pi),并將結(jié)果F(Pi)與保存在認(rèn)證服務(wù)器端的該用戶上次成功登錄的一次性口令Pi-1比較,相同則通過(guò)認(rèn)證。
13 S/Key系統(tǒng)的缺陷
S/Key系統(tǒng)在不安全信道上有著先天的缺陷,即不能防止小數(shù)攻擊。當(dāng)用戶C向認(rèn)證服務(wù)器A發(fā)出請(qǐng)求時(shí),攻擊者B冒充認(rèn)證服務(wù)器A給客戶C發(fā)送一個(gè)挑戰(zhàn)。其中M<N。S由網(wǎng)絡(luò)監(jiān)聽(tīng)獲得,客戶端C對(duì)A不加鑒別便計(jì)算出一次性口令Pj,則B可以獲得Pi~Pj之間的所有一次性口令,他便可利用這些一次性口令冒充合法用戶登錄服務(wù)器,至此攻擊成功。
2 指紋識(shí)別技術(shù)
2.1 指紋識(shí)別的優(yōu)點(diǎn)[6]
21.1 穩(wěn)定性和惟一性
這是科學(xué)研究發(fā)現(xiàn)的至今仍然承認(rèn)的指紋的兩個(gè)重要特征。穩(wěn)定性保證了用戶安全信息的長(zhǎng)期有效性;惟一性保證了被認(rèn)證對(duì)象與要驗(yàn)證的身份之間嚴(yán)格的一一對(duì)應(yīng)關(guān)系。指紋具有“物證之首”的美譽(yù)。
21.2 掃描指紋的快速性
指紋使用起來(lái)不僅非常方便,而且指紋樣本也容易獲得。目前已有標(biāo)準(zhǔn)的指紋樣本庫(kù),因此開(kāi)發(fā)指紋認(rèn)證系統(tǒng)比較容易,而且實(shí)用性強(qiáng)。
2.1.3 利用多個(gè)指紋可提高系統(tǒng)的安全性
每個(gè)人的十指指紋均不相同,保證了可以利用多個(gè)指紋提高系統(tǒng)的安全性,而且也不會(huì)增加系統(tǒng)的設(shè)計(jì)負(fù)擔(dān)。
2.1.4 指紋特征值減小了系統(tǒng)模板庫(kù)的存儲(chǔ)量
指紋識(shí)別中使用的模板并非原始的指紋圖像,而是從指紋圖像中提取的特征值,通常為256 Byte,這就減小了系統(tǒng)模板庫(kù)的存儲(chǔ)量,大大減少了網(wǎng)絡(luò)交互傳送量,減輕了網(wǎng)絡(luò)傳輸負(fù)擔(dān),便于實(shí)現(xiàn)指紋異地匹配。
從技術(shù)優(yōu)缺點(diǎn)、可行性、實(shí)用性分析看,用指紋作為認(rèn)證的依據(jù)不僅具有許多獨(dú)到的信息安全的優(yōu)點(diǎn),更重要的是具有很高的實(shí)用性和可行性。
2.2 指紋識(shí)別的原理
指紋識(shí)別技術(shù)主要包括指紋圖像采集、指紋圖像預(yù)處理與增強(qiáng)、特征提取與保存數(shù)據(jù)、特征值比對(duì)和匹配等過(guò)程。指紋識(shí)別系統(tǒng)如圖1所示。
指紋識(shí)別過(guò)程:
a)通過(guò)指紋讀取設(shè)備讀取到指紋圖像;
b)對(duì)原始圖像進(jìn)行初步處理,增強(qiáng)使之更清晰;
c)通過(guò)指紋辨識(shí)算法提取指紋的特征數(shù)據(jù)并保存為指紋的特征模板;
d)判斷兩個(gè)輸入指紋的特征模板是否出自同一手指。
3 雙因子的雙向身份認(rèn)證系統(tǒng)基本工作原理
根據(jù)S/Key系統(tǒng)和指紋識(shí)別各自所獨(dú)有的優(yōu)勢(shì),同時(shí)考慮到S/Key系統(tǒng)存在小數(shù)攻擊必須由客戶端對(duì)認(rèn)證服務(wù)器身份進(jìn)行驗(yàn)證,聯(lián)系對(duì)S/Key系統(tǒng)改進(jìn)了的基于單向函數(shù)的雙向認(rèn)證的一次性口令系統(tǒng)TAOTP[5],利用隨機(jī)數(shù)(種子值S和序列號(hào)N-i)和上次成功登錄的一次性口令Pi對(duì)服務(wù)器身份進(jìn)行驗(yàn)證。
由于秘密通行短語(yǔ)的重要性和指紋特征的不可撤銷性,其作為用戶個(gè)人保留的 認(rèn)證信息必須保密,不能在網(wǎng)上以明文傳輸。通過(guò)利用一次性口令對(duì)指紋信息加密將一次性口令與指紋識(shí)別有機(jī)結(jié)合,進(jìn)一步增強(qiáng)用戶身份認(rèn)證的強(qiáng)度。
本文所述的雙因子雙向身份認(rèn)證過(guò)程分為兩個(gè)階段:
a)注冊(cè)階段
(a)動(dòng)態(tài)口令的注冊(cè)階段。用戶選擇并記憶一個(gè)秘密通行短語(yǔ)W,服務(wù)器為每個(gè)用戶生成一個(gè)種子值S;用戶設(shè)置一次性口令序列的最大元素個(gè)數(shù)N;用戶輸入的S和N通過(guò)安全通道提交給認(rèn)證服務(wù)器;認(rèn)證服務(wù)器計(jì)算出一次性口令:P0=Fn(W+S)。
(b)指紋的注冊(cè)階段。客戶端通過(guò)指紋識(shí)別儀提取用戶的指紋特征值T′,并將指紋特征值T′通過(guò)安全通道傳遞到認(rèn)證服務(wù)器,保存在認(rèn)證服務(wù)器的數(shù)據(jù)庫(kù)中。
至此,數(shù)據(jù)庫(kù)中用戶C的注冊(cè)數(shù)據(jù)內(nèi)容為用戶IDc、種子值S、初始序列號(hào)N、一次性口令P0、秘密通行短語(yǔ)W、指紋特征值T′。
b)認(rèn)證階段。第i次的認(rèn)證過(guò)程(圖2)如下:
(a)C→A:客戶端向認(rèn)證服務(wù)器端發(fā)送請(qǐng)求信息IDc。
(b)A→C:認(rèn)證服務(wù)器響應(yīng)一個(gè)挑戰(zhàn),用H(W) 加密S+N-i+Pi-1得到EH(W)(seed+N-i+Pi-1),將EH(W) (seed+N-i+Pi-1)和它的散列值hashc發(fā)給客戶端。
(c)客戶端接受挑戰(zhàn),檢驗(yàn)數(shù)據(jù)完整性。若無(wú)竄改,則解密得到S,N-i,Pi-1,計(jì)算Pi=Fn-i(W+S )。
(d)客戶端對(duì)服務(wù)器進(jìn)行認(rèn)證。保存Pi,并對(duì)Pi再進(jìn)行一次F運(yùn)算得到P′i-1,即P′i-1=F(Pi), 比較P′i-1和Pi-1。如果相等則轉(zhuǎn)入(e);否則認(rèn)為是存在小數(shù)攻擊,拒絕登錄。
(e)C→A:客戶端通過(guò)指紋儀對(duì)用戶的指紋信息進(jìn)行采集,提取出指紋特征數(shù)據(jù)T,用Pi作為密鑰對(duì)T進(jìn)行加密,并將加密信息M和M的散列值hasht發(fā)送給認(rèn)證服務(wù)器。其中:M=EPi (T) 。
(f)認(rèn)證服務(wù)器收到M后檢驗(yàn)完整性,若無(wú)竄改,則計(jì)算P′i=Fn-i (W+S ),用P′i作為解密密鑰對(duì)M進(jìn)行解密,得到指紋特征值T;然后與存儲(chǔ)在指紋模板庫(kù)中的指紋特征值T′進(jìn)行匹配,如果匹配成功,則通過(guò)對(duì)客戶端的認(rèn)證。
(g)認(rèn)證服務(wù)器對(duì)保存的信息進(jìn)行更新,序列號(hào)減一,認(rèn)證口令改為Pi,以便下次登錄。當(dāng)序列號(hào)減到0時(shí),重新進(jìn)行初始化。
4 系統(tǒng)實(shí)現(xiàn)
整個(gè)系統(tǒng)根據(jù)項(xiàng)目需求主要是針對(duì)公安系統(tǒng)內(nèi)部的用戶身份認(rèn)證。為求與原來(lái)公安業(yè)務(wù)應(yīng)用系統(tǒng)一致,系統(tǒng)設(shè)計(jì)成B/S模式,主要由數(shù)據(jù)庫(kù)、認(rèn)證服務(wù)器、客戶端三個(gè)部分組成,如圖3所示。數(shù)據(jù)庫(kù)使用SQL Server 2000;認(rèn)證服務(wù)器端功能由Servlet完成;客戶端由JSP和Applet來(lái)實(shí)現(xiàn)。以下不再詳述加密、解密以及完整性檢驗(yàn)?zāi)K。
41 數(shù)據(jù)庫(kù)表設(shè)計(jì)
秘密通行短語(yǔ)和指紋特征值作為用戶最重要的信息不能直接存儲(chǔ),必須進(jìn)行加密和變換,存儲(chǔ)秘密通行短語(yǔ)的MD5散列值和指紋特征數(shù)據(jù)的Base64編碼。由于MD5的單向性[7],為求出下次登錄的一次性口令,還要存儲(chǔ)秘密通行短語(yǔ)和種子值的MD5一次散列值。基本用戶身份認(rèn)證信息如表1所示。
4.2 認(rèn)證服務(wù)器功能實(shí)現(xiàn)
認(rèn)證服務(wù)器是整個(gè)系統(tǒng)的核心,主要由注冊(cè)和認(rèn)證兩部分組成,其余如用戶、日志管理不作詳述。
4.2.1 注冊(cè)
為了確保安全,注冊(cè)在認(rèn)證服務(wù)器端進(jìn)行,主要為用戶分配種子值,并生成初始一次性口令P0,并妥善保存用戶的秘密通行短語(yǔ)W和指紋信息T′。對(duì)秘密通行短語(yǔ)進(jìn)行散列,保存H(W),不保存指紋圖像,只保存指紋特征數(shù)據(jù)的Base64編碼。
4.2.2 認(rèn)證
主要由以下三個(gè)模塊組成:
a)挑戰(zhàn)生成模塊。它主要是對(duì)合法用戶的請(qǐng)求發(fā)出挑戰(zhàn),根據(jù)IDc查詢?cè)撚脩舻膕eed、N-i、Pi-1,用H(W)加密得到EH(W)(seed+N-i+Pi-1),生成EH(W)(seed+N-i+Pi-1)的散列值hashc。
b)一次性口令生成模塊。它主要是生成用戶本次登錄的一次性口令P′i,直接對(duì)數(shù)據(jù)庫(kù)中的H(W+S)迭代(N-i-1)次,作為解密指紋數(shù)據(jù)的密鑰。
c)指紋匹配模塊。它主要是對(duì)客戶端發(fā)送過(guò)來(lái)的指紋和數(shù)據(jù)庫(kù)中的指紋進(jìn)行匹配,設(shè)定一定的閾值如90%。如果匹配結(jié)果大于等于該閾值,就認(rèn)為兩個(gè)指紋出自同一手指。
4.3 客戶端功能實(shí)現(xiàn)
主要由以下兩個(gè)模塊組成:
a)服務(wù)器驗(yàn)證模塊。用于認(rèn)證服務(wù)器端相同的算法生成一次性口令Pi,用Pi的一次散列值F(Pi)與Pi-1比較對(duì)服務(wù)器進(jìn)行驗(yàn)證。
b)指紋提取模塊。通過(guò)Applet對(duì)本地文件簽名[8],根據(jù)安全策略文件賦予的權(quán)限,通過(guò)本地方法訪問(wèn)指紋采集儀,調(diào)用指紋提取算法讀取指紋特征值。安全策略文件如下: 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 實(shí)驗(yàn)結(jié)果
在實(shí)驗(yàn)室局域網(wǎng)環(huán)境下,仿真實(shí)驗(yàn)的系統(tǒng)性能參數(shù)如表2所示。
6 安全性分析
61 保密性
本系統(tǒng)中用戶秘密通行短語(yǔ)不在網(wǎng)上傳輸。通信雙方之間的認(rèn)證信息如種子值、序列號(hào)、一次性口令、指紋特征數(shù)據(jù)等都經(jīng)加密后傳輸,能有效避免網(wǎng)絡(luò)竊聽(tīng)。
62 完整性
實(shí)現(xiàn)了客戶端與認(rèn)證服務(wù)器端之間的雙向認(rèn)證,由客戶端通過(guò)種子值、序列號(hào)、上次成功登錄的一次性口令等三要素對(duì)認(rèn)證服務(wù)器身份進(jìn)行驗(yàn)證。若Pi不等于F(Pi)便終止認(rèn)證,使得攻擊者無(wú)法進(jìn)行小數(shù)攻擊,而后由認(rèn)證服務(wù)器通過(guò)指紋特征數(shù)據(jù)和本次登錄的一次性口令兩要素對(duì)客戶端身份進(jìn)行驗(yàn)證。客戶端和服務(wù)器端都通過(guò)散列值進(jìn)行完整性檢驗(yàn),防止數(shù)據(jù)不被竄改。
63 不可抵賴性
用戶指紋特征數(shù)據(jù)與用戶一一對(duì)應(yīng),指紋的惟一性保證用戶不可抵賴。可以根據(jù)實(shí)際情況更改指紋匹配的閾值。
64 抗重放攻擊
用戶指紋特征數(shù)據(jù)不以明文傳輸而是用每次登錄的一次性口令加密后傳輸,保障了指紋信息不被泄露,而且對(duì)指紋加密的密鑰是每次都變化的一次性口令,使得攻擊者很難進(jìn)行重放。本系統(tǒng)以足夠安全和信賴的認(rèn)證服務(wù)器為前提,將最重要的秘密通行短語(yǔ)和指紋特征值加密存儲(chǔ)。如果對(duì)安全性要求極高,必須采取相關(guān)的安全措施保障認(rèn)證服務(wù)器的安全,以及數(shù)據(jù)的機(jī)密性和完整性,防止內(nèi)部攻擊。
7 結(jié)束語(yǔ)
由于一次性口令使用簡(jiǎn)單、具有較高的安全性,加上指紋獨(dú)有的特性,兩者的有機(jī)結(jié)合將會(huì)進(jìn)一步提高用戶身份認(rèn)證的強(qiáng)度。本文所提出的系統(tǒng)的客戶端和認(rèn)證服務(wù)器端均由軟件來(lái)實(shí)現(xiàn),在局域網(wǎng)環(huán)境下運(yùn)行良好,有待推廣到復(fù)雜的實(shí)際網(wǎng)絡(luò)環(huán)境中進(jìn)行檢驗(yàn)。采取更加安全有效的措施保障傳輸過(guò)程中以及認(rèn)證服務(wù)器端數(shù)據(jù)的機(jī)密性和完整性,防止內(nèi)部攻擊,真正實(shí)現(xiàn)遠(yuǎn)程用戶認(rèn)證,將該認(rèn)證系統(tǒng)完善并應(yīng)用到其他相關(guān)公安業(yè)務(wù)各警種系統(tǒng)將是下一步的工作。
參考文獻(xiàn):
[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ī)制及其應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用研究,2005,22(1):108109.
[4]敖山,李新中,唐守廉.時(shí)間敏感的動(dòng)態(tài)口令身份認(rèn)證系統(tǒng)研究及設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用研究,2007,24(7):151153.
[5]王濤,謝冬青,周洲儀.一種新的雙向認(rèn)證的一次性口令系統(tǒng)TAOTP[J].計(jì)算機(jī)應(yīng)用研究,2005,22(9):128130.
[6]朱建新,楊小虎.基于指紋的網(wǎng)絡(luò)身份認(rèn)證[J].計(jì)算機(jī)應(yīng)用研究,2001,18(12):1417.
[7]汪同慶,魯軍,華晉,等.基于MD5 算法和Schnorr 協(xié)議的雙因素身份認(rèn)證系統(tǒng)[J].計(jì)算機(jī)應(yīng)用研究,2004,21(12):137139.
[8]陳劍,周意青,劉振華.JavaApplet的安全性及應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用研究,2001,18(11):6970,73.