劉瑩+龍毅宏
摘要:作為用戶身份驗(yàn)證技術(shù),動(dòng)態(tài)口令技術(shù)比傳統(tǒng)的靜態(tài)口令技術(shù)具有更高的安全性。針對(duì)目前動(dòng)態(tài)口令系統(tǒng)存在的用戶令牌種子密鑰管理麻煩、種子密鑰數(shù)據(jù)庫安全要求高,與應(yīng)用系統(tǒng)集成存在帳戶方面的限制,缺少用戶種子密鑰自動(dòng)更新的功能等問題,提出了一種基于標(biāo)識(shí)的動(dòng)態(tài)口令系統(tǒng)方案,并從基于時(shí)間與基于挑戰(zhàn)/響應(yīng)兩種方式進(jìn)行實(shí)現(xiàn)。該系統(tǒng)具有用戶種子密鑰自動(dòng)更新的功能,并且具有易于密鑰管理、易于與應(yīng)用系統(tǒng)集成等特點(diǎn)。
關(guān)鍵詞:身份認(rèn)證;動(dòng)態(tài)口令;身份標(biāo)識(shí)。
引言
口令是目前用的最廣泛的身份認(rèn)證技術(shù)??诹罘譃殪o態(tài)與動(dòng)態(tài)兩種,傳統(tǒng)的靜態(tài)口令身份認(rèn)證技術(shù)采用簡(jiǎn)單的用戶名和固定不變的口令進(jìn)行登錄驗(yàn)證,存在易于被網(wǎng)絡(luò)竊聽、易受字典攻擊等問題。1981年,Lamport提出了一次性口令的概念,引入了不確定因素,保證用戶每次使用不同的口令進(jìn)行登錄,因此具有更高的安全性。Haller在Lamport基礎(chǔ)上提出S/KEY方案,該方案基于MD4和MD5算法,采用c/s模式的操作,能夠?qū)τ脩襞c服務(wù)器進(jìn)行綜合驗(yàn)證。但是該方案生成的動(dòng)態(tài)口令有限,用完之后得重新注冊(cè)才能使用。
常用的動(dòng)態(tài)口令的實(shí)現(xiàn)方式有基于時(shí)間的動(dòng)態(tài)口令生成方式和基于挑戰(zhàn)/響應(yīng)的動(dòng)態(tài)口令生成方式。其中基于時(shí)間的動(dòng)態(tài)口令生成方式屬于同步認(rèn)證技術(shù),引人時(shí)間作為不確定因素參與動(dòng)態(tài)口令的生成,基于挑戰(zhàn)/響應(yīng)的動(dòng)態(tài)口令生成方式屬于非同步認(rèn)證技術(shù),引人一個(gè)隨機(jī)產(chǎn)生的挑戰(zhàn)數(shù)作為不確定因素參與動(dòng)態(tài)口令的生成。這兩種動(dòng)態(tài)口令生成方式都采用單向散列函數(shù)生成口令,它們的安全性由單向散列函數(shù)的不可逆性保證,常用的單向散列函數(shù)包括:SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、MD5等。
目前的動(dòng)態(tài)口令系統(tǒng)存在以下幾個(gè)方面的問題:
1)用戶動(dòng)態(tài)口令種子密鑰管理麻煩、密鑰集中存儲(chǔ)安全要求高。
動(dòng)態(tài)口令系統(tǒng)服務(wù)端需要分別為每位用戶創(chuàng)建一個(gè)賬戶以維護(hù)和管理種子密鑰,種子密鑰集中存儲(chǔ)需要極高的安全性。
2)與應(yīng)用系統(tǒng)集成存在帳戶方面限制。
當(dāng)采用動(dòng)態(tài)口令系統(tǒng)的應(yīng)用系統(tǒng)對(duì)用戶提交的動(dòng)態(tài)口令進(jìn)驗(yàn)證時(shí),應(yīng)用系統(tǒng)需要知道用戶在動(dòng)態(tài)口令系統(tǒng)的帳戶名,一般采取讓用戶在應(yīng)用系統(tǒng)與動(dòng)態(tài)口令系統(tǒng)中使用相同的帳戶名,或是將用戶在應(yīng)用系統(tǒng)中的帳戶同用戶在動(dòng)態(tài)口令系統(tǒng)中的帳戶綁定的方法,但前者對(duì)應(yīng)用系統(tǒng)造成限制,不適用于已存在的應(yīng)用系統(tǒng),后者實(shí)現(xiàn)賬戶綁定比較麻煩。
3)缺少用戶種子密鑰自動(dòng)更新的功能。
1基于標(biāo)識(shí)的動(dòng)態(tài)口令系統(tǒng)整體設(shè)計(jì)
本文中使用到的符號(hào)及含義如表1所示:
1.1系統(tǒng)結(jié)構(gòu)
基于標(biāo)識(shí)的動(dòng)態(tài)口令系統(tǒng)結(jié)構(gòu)如圖1所示,主要包括:
1)Cotv:安裝在用戶手機(jī)端或是用戶主機(jī)中的一個(gè)獨(dú)立程序,維護(hù)一個(gè)本地存儲(chǔ)的終端種子密鑰keye,由用戶控制完成由不確定因素(時(shí)間或挑戰(zhàn)數(shù))計(jì)算動(dòng)態(tài)口令的過程,自主定時(shí)與Soto通信,更新keyc。
2)Sotp:維護(hù)有一張保存UID、serial以及key。的標(biāo)識(shí)信息表。Soto主要完成對(duì)otp的驗(yàn)證及響應(yīng)Coto更新key。的請(qǐng)求的功能。
3)web頁面:完成用戶與Sweb之間交互。接收用戶輸入信息,反饋提示信息。
4)Sweb:維護(hù)有一個(gè)保存username和對(duì)應(yīng)用戶UID的數(shù)據(jù)表。主要完成用戶web界面的通訊、用戶存在性驗(yàn)證(對(duì)于挑戰(zhàn)數(shù)生成動(dòng)態(tài)口令的方案而言還包括產(chǎn)生隨機(jī)碼功能模塊)以及傳遞待驗(yàn)證動(dòng)態(tài)口令信息等工作。
1.2驗(yàn)證過程
整個(gè)用戶身份驗(yàn)證基本過程如下:
1)用戶將username通過web頁面?zhèn)魉徒oSweb。
2)sweh驗(yàn)證username存在性,若存在則提示用戶輸入otp,對(duì)于基于挑戰(zhàn)/響應(yīng)方案,Sweb同時(shí)返回一串隨機(jī)數(shù)。
3)對(duì)于基于挑戰(zhàn)/響應(yīng)的方案,用戶通過操作Coto,利用返回的隨機(jī)數(shù)生成該用戶當(dāng)前的otp;對(duì)于基于時(shí)間的方案,Coto利用當(dāng)前時(shí)間生成用戶當(dāng)前的otp。
4)用戶將otp輸入web頁面后,Sweb根據(jù)username查詢對(duì)應(yīng)的用戶UID并打包相關(guān)數(shù)據(jù)打包發(fā)送給Soto。對(duì)于基于時(shí)間的方案,打包數(shù)據(jù)包括UID和待驗(yàn)證otp;對(duì)于基于挑戰(zhàn)/響應(yīng)的方案,打包數(shù)據(jù)包括UID、待驗(yàn)證otp以及參與計(jì)算的隨機(jī)數(shù)。
5)Sotp通過計(jì)算,驗(yàn)證接收到otp的正確性,并經(jīng)由sweb曲向用戶返回驗(yàn)證結(jié)果。
6)Coto每隔一段時(shí)間(如14天)自發(fā)地與Sotp進(jìn)行通信,更新用戶的keyc。
2系統(tǒng)主要功能的實(shí)施
2.1基于標(biāo)識(shí)的動(dòng)態(tài)口令的生成
Sotp為每一位用戶保存一個(gè)初始值為0的serial。記此處符號(hào)“+”表示字符串連接,Hk()表示KeyedHash計(jì)算。
UID+serial UIDEX
(1)
Hk(UIDEX,keys)=key。
(2)
Hk(不確定因子,keyc)=otp
(3)
如式(1)所示,將某一用戶UID和其對(duì)應(yīng)的serial值進(jìn)行字符串連接即產(chǎn)生該用戶的UIDEX。Sow利用用戶UIDEX和key通過如(2)式KeyedHash運(yùn)算得出該用戶的keye key。由各用戶的Cow保存管理。keyc和不確定因素(時(shí)間/挑戰(zhàn)數(shù))通過(3)式獲得該用戶當(dāng)前狀態(tài)下的otp。
2.2動(dòng)態(tài)口令驗(yàn)證過程
Sow接收到動(dòng)態(tài)口令驗(yàn)證請(qǐng)求后,遵循如圖2所示過程進(jìn)行驗(yàn)證:
1)利用傳入的數(shù)據(jù),查詢標(biāo)識(shí)信息表以確認(rèn)對(duì)應(yīng)UID存在性,若存在則繼續(xù)后續(xù)操作,否則驗(yàn)證未通過。
2)由用戶UID查詢標(biāo)識(shí)信息表以獲取對(duì)應(yīng)的serial值,并利用keys,根據(jù)(1)(2)式生成該用戶的key。
3)對(duì)于基于挑戰(zhàn)/響應(yīng)的方案,Sow利用驗(yàn)證請(qǐng)求數(shù)據(jù)中的隨機(jī)數(shù)和上一步獲取的keyc根據(jù)(3)式得到動(dòng)態(tài)口令標(biāo)準(zhǔn)值otpl;對(duì)于基于時(shí)間的方案,Sow獲取精確到秒的本地時(shí)間T,由T截取到分鐘后的數(shù)據(jù)t與keyc根據(jù)(3)式得到動(dòng)態(tài)口令標(biāo)準(zhǔn)值otp]。
4)比較otpl和待驗(yàn)證otp,若相同則驗(yàn)證通過,若不同,對(duì)于基于挑戰(zhàn)/響應(yīng)的方案而言則驗(yàn)證未通過;對(duì)于基于時(shí)間的方案,還需進(jìn)行后續(xù)調(diào)整操作。
5)對(duì)于基于時(shí)間的方案,考慮可能存在的時(shí)間不同步問題,以一分鐘作為一個(gè)動(dòng)態(tài)口令生成與驗(yàn)證時(shí)間段,Sotp計(jì)算T。距離該時(shí)刻所在的動(dòng)態(tài)口令生成與驗(yàn)證時(shí)間段的起始與結(jié)束兩個(gè)時(shí)間點(diǎn)的時(shí)間長度,判斷最小的時(shí)間長度是否在臨界偏差范圍(如1s)內(nèi)。若在,則以距離更近的相鄰的生成與驗(yàn)證時(shí)間段截取到分鐘后的時(shí)間數(shù)據(jù)作為備選時(shí)間數(shù)據(jù)ts計(jì)算動(dòng)態(tài)口令備選標(biāo)準(zhǔn)值otp2,若超出臨界偏差范圍則驗(yàn)證未通過。
6)比較otp2和otp,若相同則驗(yàn)證通過,若不同則驗(yàn)證未通過。
2.3定時(shí)更新
Cotp內(nèi)設(shè)置定時(shí)器,設(shè)定每隔一段時(shí)間(如14天)觸發(fā)一次的更新。
Cotp通過動(dòng)態(tài)口令向Soto證明當(dāng)前擁有有效的key~。Sow驗(yàn)證、確認(rèn)有效后,Sow對(duì)用戶serial值進(jìn)行加1操作,并用更新后的serial值生成新的終端種子密鑰。
若keyc自動(dòng)更新失敗,用戶可通過手工方式更新。
2.4時(shí)間同步
對(duì)于基于時(shí)間的方案,可使用NTP協(xié)議實(shí)現(xiàn)Cow與Sow的時(shí)鐘同步,基本過程如下:
Cotp獲取本地時(shí)間t1后向Sotp發(fā)送一條時(shí)間調(diào)整命令,Sow接收后獲取本地時(shí)間t2。
2)Sow獲取本地時(shí)間t3后向Cow返回一條時(shí)間調(diào)整響應(yīng),Cow接收后獲取本地時(shí)間t4。
3)Coto根據(jù)(4)(5)式分別計(jì)算單程網(wǎng)絡(luò)延遲6和時(shí)間偏差d:
6=((t4-t1)-(t3-t2))/2
(4)
d=((t2-t1)+(13-t4))/2
(5)
Coro獲取本地時(shí)間t,由(6)式計(jì)算調(diào)整后的時(shí)間T:
T-t+d+6
(6)
Cotp首次安裝時(shí)進(jìn)行時(shí)間同步,此后若出現(xiàn)時(shí)間同步異常,用戶可通過手工方式同步。
2結(jié)束語
本文針對(duì)當(dāng)前動(dòng)態(tài)口令技術(shù)存在的問題,提出了一種基于標(biāo)識(shí)的動(dòng)態(tài)口令系統(tǒng)方案,并從基于時(shí)間與基于挑戰(zhàn)/響應(yīng)兩種方式對(duì)該方案進(jìn)行了描述。提出的方案具有以下優(yōu)勢(shì):
1)無對(duì)集中保存的用戶種子密鑰進(jìn)行安全保護(hù)的要求。
動(dòng)態(tài)口令系統(tǒng)服務(wù)端不需要單獨(dú)為每一個(gè)用戶保存、維護(hù)終端種子密鑰,而是在需要終端種子密鑰的時(shí)候利用用戶身份標(biāo)識(shí)和系統(tǒng)種子密鑰通過散列計(jì)算得到,從而省去了集中保存和管理用戶終端種子密鑰的需要和安全保護(hù)要求。
2)易于與應(yīng)用系統(tǒng)集成
在與應(yīng)用系統(tǒng)集成時(shí),將應(yīng)用系統(tǒng)原有的帳戶口令改為存放用戶的身份標(biāo)識(shí)即可,應(yīng)用系統(tǒng)既可以使用原有的帳戶管理系統(tǒng),也可使用統(tǒng)一的帳戶管理系統(tǒng),沒有特別的要求限制。
3)具有自動(dòng)更新用戶種子密鑰的功能
本方案中動(dòng)態(tài)口令生成器定時(shí)觸發(fā)終端種子密鑰更新,主動(dòng)與動(dòng)態(tài)口令服務(wù)器進(jìn)行通信,實(shí)現(xiàn)用戶種子密鑰的自動(dòng)更新。