一次性密碼驗證的方法和系統(tǒng)的制作方法
【專利摘要】令牌通過如下步驟計算一次性密碼:基于密鑰K和計數(shù)器值C生成HMAC-SHA-1值,截取所生成的HMAC-SHA-1值模10^Digit,其中Digit表示所述一次性密碼中位的數(shù)目??梢杂沈炞C服務器驗證該一次性密碼,驗證服務器使用K和它自己的計數(shù)器值C’來計算它自己版本的該密碼。如果存在最初不匹配,則驗證服務器在前瞻窗口內(nèi)補償計數(shù)器C和C’之間同步的缺失,前瞻窗口的大小可以由參數(shù)s來設置。
【專利說明】一次性密碼驗證的方法和系統(tǒng)
【技術領域】
[0001] 本發(fā)明的領域是計算機安全性,具體地是通過一次性密碼的認證。
【背景技術】
[0002] 如今,雙因素認證的部署在范圍和規(guī)模上仍存在極大的限制。盡管威脅和攻擊的 水平越來越高,但是大多數(shù)因特網(wǎng)應用仍依賴于薄弱的認證方案來監(jiān)控(policing)用戶 訪問。硬件和軟件技術供應商之間缺乏可互操作性已經(jīng)成為采用雙因素認證技術時的限制 因素。具體來說,硬件和軟件組件常常通過專有技術緊密地結合,從而導致高成本解決方 案,不佳的采用和有限的創(chuàng)新。
[0003] 最近兩年來,網(wǎng)絡威脅的快速增加暴露出作為因特網(wǎng)上主要的認證方式的靜態(tài)密 碼的不足。同時,目前的方法要求終端用戶攜帶昂貴且功能單一的裝置僅僅是用于至網(wǎng)絡 的認證,顯然不是正確的答案。為了在因特網(wǎng)上傳播兩因素認證,需要在能夠跨廣泛應用范 圍工作的更靈活的裝置中嵌入它。
[0004] 一次性密碼肯定是用于確保網(wǎng)絡訪問安全的兩因素認證的最簡單和最流行的方 式。例如,在大企業(yè)中,虛擬專用網(wǎng)絡訪問常常需要使用一次性密碼令牌來實現(xiàn)遠程用戶認 證。一次性密碼常常比更強的認證形式(例如PKI或生物認證)更受青睞,因為空氣隔離 裝置無需在用戶的機器上安裝任何客戶機桌面軟件,由此使它們在包括家庭計算機、自動 售貨機和個人數(shù)字助理的多個機器上漫游。
【發(fā)明內(nèi)容】
[0005] 根據(jù)本發(fā)明的實施例,可以由任何硬件制造商或軟件開發(fā)商來實施一次性密碼算 法以創(chuàng)建可互操作認證裝置與軟件代理。該算法可以是基于事件的,以便可以將其嵌入在 例如Java智能卡、USB安全裝置(dongle)和GSM SM卡的高容量裝置中??梢栽谝蛱鼐W(wǎng) 工程師任務組(IETF)的條款和條件下將該算法自由地提供給開發(fā)者團體。
【具體實施方式】
[0006] 根據(jù)本發(fā)明的實施例,該算法可以是基于序列號或計數(shù)器的,并且可以通過將對 電池、按鈕數(shù)量、計算馬力和顯示器尺寸的要求最小化來經(jīng)濟地在硬件中實施。它可以使用 不支持任何數(shù)字輸入的令牌來工作,但是也可以配合例如安全密碼鍵盤的更復雜的裝置使 用。
[0007] 用戶可以容易地讀取令牌上顯示的值并將其輸入到另一個裝置中,例如輸入到個 人計算機、蜂窩電話、自動應答機或任何其他適合的裝置中。這要求一次性密碼(0TP)值為 合理長度。在許多情況中,基于安全性的原因,0ΤΡ值應該至少為6位(digit)值。僅為數(shù) 字對于0ΤΡ值可能是個優(yōu)點,因為可以容易地在具有簡單的小鍵盤的裝置(例如電話)上 輸入它。
[0008] 可以有用戶友好的機制用于與計數(shù)器再次同步。該算法應該使用強共享的密鑰。 為此,共享的密鑰的長度可以是128比特或更長。
[0009] 使用如下標記和符號來描述根據(jù)本發(fā)明的算法的實施例。
[0010] 字符串表不-進制字符串,意味著〇和1的序列。
[0011] 如果s是字符串,則|s|表示它的長度。
[0012] 如果η是數(shù)值,貝U |n|表示它的絕對值。
[0013] 如果s是字符串,則s[i]表示它的第i比特。這些比特從位于0的比特開始編號, 以此類推,s = s[0]s[l]. . . s[n-l],其中n = |s|是s的長度。
[0014] 假設StToNum(字符串轉數(shù)值)表示返回輸入的字符串s的二進制值的十進制表 示的函數(shù)。例如,StToNum(llO) = 6。
[0015] 將如下標記用于符號表示:
[0016] C 8字節(jié)計數(shù)器值,可調(diào)因子。可以在0ΤΡ發(fā)生器(例如客戶機)和0ΤΡ驗證器 (例如服務器)之間將該計數(shù)器同步。
[0017] K 客戶機和服務器之間共享的密鑰。每個0ΤΡ發(fā)生器可以具有不同且唯一的密 鑰K。
[0018] T抑制(throttling)參數(shù):在T次不成功認證嘗試之后,服務器可以拒絕來自用 戶的連接,或者向接收方發(fā)送抑制信號以指示來自給定源有過多次數(shù)的驗證嘗試。
[0019] S再次同步參數(shù):該服務器可以嘗試跨s個連續(xù)的計數(shù)器值驗證接收的認證符
[0020] Digit 0ΤΡ值中位的數(shù)目,它可以是系統(tǒng)參數(shù)
[0021] 根據(jù)本發(fā)明的0ΤΡ算法可以基于遞增的計數(shù)器值和僅對于該令牌和驗證服務 是已知的靜態(tài)對稱密鑰。為了創(chuàng)建0ΤΡ值,可以使用HMAC-SHA-1算法,正如M.Bellare、 R. Canetti和Η· Krawczyk所著的"HMAC :用于消息認證的鍵控散列"(HMAC :Keyed_Hashing for Message Authentication),IETF 網(wǎng)絡工作組,RFC 2104,1997 年 2 月中定義的。
[0022] HMAC-SHA1計算的輸出是160比特,可以截取成用戶能夠容易地輸入的大小的值。 因此,
[0023] Η0ΤΡ (K,C) = Truncate (HMAC-SHA-1 (K,C)),
[0024] 其中 Truncate 表示將 HMAC-SHA-1 值轉換成 HMAC-SHA1 OTP (Η0ΤΡ)值的函數(shù)???以首先對Key (K)、Counter (C)和Data值執(zhí)行高階字節(jié)散列??梢詫ⅵ?ΤΡ發(fā)生器生成的 Η0ΤΡ值作為大尾(big endian)來處理。
[0025] 可以在3個不同的步驟中生成Η0ΤΡ值:
[0026] 步驟 1 :生成 HMAC-SHA-1 值
[0027] 令HS = HMAC-SHA-1 (K,C),其中HS可以是20個字節(jié)字符串
[0028] 步驟2 :生成4個字節(jié)字符串(動態(tài)截?。?br>
[0029] 令Sbits = DT(HS),它可以返回31比特字符串
[0030] 動態(tài)截取 DT(String)能以如下方式對 String = String[0]··· String[19]起作 用:
[0031] 令 OffsetBits 為 String[19]的低階四比特
[0032] Offset = StToNum(OffSetBits),其中 0 <= OffSet <= 15
[0033] 令P = String[OffSet]... String[OffSet+3]
[0034] 返回P的后31比特
[0035] 屏蔽P的最高有效比特可以避免在帶符號和不帶符號的取模運算之間的混淆。不 同處理器以不同方式執(zhí)行這些運算,并且屏蔽掉帶符號的比特可以消除歧義性。
[0036] 步驟3:計算Η0ΤΡ值
[0037] 令Snum = StToNum(S),即將S轉換到在0. . . 2~ 中的的數(shù)值
[0038] 返回 D = Snum(模)10~Digit,其中 D 是在范圍 0· · · 10~ {Digit}-1 中的數(shù)值
[0039] Truncate函數(shù)執(zhí)行步驟2和步驟3,即動態(tài)截取,然后是縮減(reduction)模 lO'Digit。動態(tài)偏移截取技術的目的是從160比特(20字節(jié))的HMAC-SHA1結果中提取4 字節(jié)動態(tài)二進制碼。
[0040] 實現(xiàn)應該提取至少6位的碼。根據(jù)安全性要求,應該考慮Digit = 7或更大,以便 提取較長的Η0ΤΡ值。
[0041] 下文是對應于Digit = 6使用此技術的示例,即由HMAC值計算6位Η0ΤΡ值。該 碼示例描述假定hmac_result是具有HMAC-SHA1結果的字節(jié)陣列的情況下提取動態(tài)二進制 碼:
[0042]
【權利要求】
1. 一種系統(tǒng),包括: 處理器; 耦合到所述處理器的存儲器,所述存儲器存儲共享安全密鑰K、驗證服務器計數(shù)器值 C'、以及適于由所述處理器執(zhí)行來進行如下操作的指令: 從令牌接收第-次性密碼; 基于K和C'生成HMAC-SHA-1值; 屏蔽所生成的HMAC-SHA-1值的最高有效比特以生成屏蔽的HMAC-SHA-1值; 截取屏蔽的HMAC-SHA-1值模KTDigit以生成第二一次性密碼,其中Digit是所述第 一一次性密碼中位的數(shù)目;以及 將所計算的第二一次性密碼與從所述令牌接收的第一一次性密碼進行比較。
2. 如權利要求1所述的系統(tǒng),所述指令還使所述處理器進行如下操作: 確定所述第二一次性密碼與所述第一一次性密碼不匹配;以及 基于密鑰K和計數(shù)器值C' +n計算一個或多個附加的一次性密碼,η是從1至s的整 數(shù),其中s是前瞻參數(shù)。
3. 如權利要求2所述的系統(tǒng),還包括發(fā)送信號以指示失敗的驗證嘗試。
4. 如權利要求2所述的系統(tǒng),還包括發(fā)送信號以指示成功驗證。
5. 如權利要求2所述的系統(tǒng),其中所述存儲器存儲抑制參數(shù)Τ,以及其中在Τ次失敗的 驗證嘗試之后暫停來自所述令牌的進一步驗證嘗試。
6. -種方法,包括: 接收第--次性密碼; 由處理器基于密鑰Κ和計數(shù)器值C'生成HMAC-SHA-1值; 屏蔽所生成的HMAC-SHA-1值的最高有效比特以生成屏蔽的HMAC-SHA-1值; 截取屏蔽的HMAC-SHA-1值模KTDigit以生成第二一次性密碼,其中Digit是所述第 --次性密碼中位的數(shù)目; 將所述第二一次性密碼與所述第一一次性密碼進行比較;以及 基于所述第一一次性密碼和所述第二一次性密碼的比較來確定所述第一一次性密碼 是有效的。
7. 如權利要求6所述的方法,還包括發(fā)送信號以指示成功驗證。
8. 如權利要求6所述的方法,還包括發(fā)送信號以指示失敗的驗證嘗試。
9. 如權利要求6所述的方法,還包括如果失敗的嘗試的次數(shù)超過抑制參數(shù)T,則暫停 驗證嘗試。
【文檔編號】H04L9/32GK104104517SQ201410381702
【公開日】2014年10月15日 申請日期:2005年10月17日 優(yōu)先權日:2004年10月15日
【發(fā)明者】N.波普, D.姆賴希, L.哈特 申請人:弗里塞恩公司