OTP 動態口令,基本理論

OTP 動態口令,基本理論

otp 動態口令

簡介

動態口令(OTP,One-Time Password)又稱一次性密碼,是使用密碼技術實現的在客戶端和伺服器之間透過共享秘密的一種認證技術,是一種強認證技術,是增強目前靜態口令認證的一種非常方便技術手段,是一種重要的雙因素認證技術。

動態口令認證技術包括客戶端用於生成口令產生器的動態令牌,是一個硬體裝置,和用於管理令牌及口令認證的後臺動態口令認證系統組成。

目前在安全強認證領域使用的OTP動態密碼技術,源於最早由RSA公司於1986年開發的RSA SecureID產品,動態密碼並不是一次性密碼技術,而是動態一次性口令技術。目前,國際上動態口令OTP有2大主流演算法,一個是RSA SecurID ,一個是OATH組織的OTP演算法。如果在國內來說的話,另一個是國密的OTP密碼演算法。RSA SecurID使用AES對稱演算法,OATH使用HMAC演算法,國密演算法使用的國密SM1(對稱)和SM3(HASH)演算法。

認證原理

動態口令的基本認證原理是在認證雙方共享金鑰,也稱種子金鑰,並使用的同一個種子金鑰對某一個事件計數、或時間值、或者是非同步挑戰數進行密碼演算法計算,使用的演算法有對稱演算法,HASH,HMAC,之後比較計算值是否一致進行認證。可以做到一次一個動態口令,使用後作廢,口令長度通常為6-8個數字,使用方便,與通常的靜態口令認證方式類似,使用方便與系統整合好,因此OTP動態口令技術的應用非常普遍,可以應用於多種系統渠道使用,如:Web應用,手機應用,電話應用,ATM自助終端等。

動態口令的同步機制有3種,即時間型、事件型和挑戰與應答型,目前應用最多的是時間型動態口令,挑戰與應答型動態口令的應用也逐漸增多,並且動態口令逐漸變為多種同步型別複合的機制發展,如時間+挑戰與應答型。

OTP和常用的認證技術

USBKey: 申請PKI證書。

動態口令卡:列印好的密碼刮刮卡。

動態簡訊:使用電信通道下發口令。

IC卡/SIM卡:內建與使用者身份相關的資訊。

生物特徵:採用獨一無二的生物特徵來驗證身份,如指紋。

動態令牌:動態口令生成器和認證系統

比較如下:

OTP 動態口令,基本理論

常見的解決方案

1。動態口令:

時間型口令,驗證過程:

1。動態密碼令牌產生動態密碼,以時間和種子為引數,進行迭代,得出動態密碼。這裡的時間一般是秒數,每個時間性動態密碼令牌中會內建一個時鐘晶片。

2。伺服器校驗動態密碼。伺服器讀取系統時間加上種子,以相同的迭代方法得出動態密碼,然後雙方進行比對。

但是由於伺服器的時間和本地的時間有可能是不一致的。怎麼解決?

伺服器校驗是是在一個時間區間裡校驗的,比如現在是12:00,伺服器會生成11:55-12:05中所有的動態密碼,然後和令牌產生的動態密碼比對,這樣不就解決了時間不一致的問題了。另外伺服器會把令牌和伺服器相差的時間記錄下來,下次檢驗的會先把這個偏移值記錄下來,以減少動態密碼迭代次數,這樣就完成了另外一個比較重要的功能,偏移值自動調整。

口令是如何產生的?

1。口令為一個單向的前後相關,長度為n(n>m)的序列,系統只記錄第m個口令。使用者用第i(i< n)個口令登入時,系統用單向演算法算出第j個口令與自己儲存的第m個口令匹配,以判斷使用者的合法性。由於N是有限的,使用者登入N次後必須重新初始化口令序列。

2。時間同步: 以使用者登入時間作為隨機因素。這種方式對雙方的時間準確度要求較高,一般採取以分鐘為時間單位的折中辦法。在這種動態口令中,對時間誤差的容忍可達±1分鐘。

3。事件同步: 透過某一特定的事件次序及相同的種子值作為輸入,使用相同的演算法運算出一致的密碼,其運算機理決定了其整個工作流程同時鍾無關,不受時鐘的影響。它節省了使用者每次輸入挑戰資訊的麻煩,但當用戶的挑戰序列與伺服器產生偏差後,需要重新同步。

4。挑戰/應答: 也叫非同步認證方式。它比時間/事件同步方式操作相對煩瑣,實現相對複雜,一般用於對安全性要求更高的場合,比如登入網上銀行等,需要附加認證的情形。當用戶需要訪問系統時,遠端認證伺服器根據使用者的電子令牌資料產生一個隨機的數字串,即“挑戰碼”,使用者將該數字串輸入到電子令牌中。電子令牌利用內建的種子金鑰和演算法計算出相應的應答數(通常也是一個數字串)。系統根據所儲存的該使用者相應電子令牌資訊(種子金鑰和演算法)計算出應答數,並與使用者輸入的應答數進行比較。如果兩者相同,則認證透過。由於口令每次都變化,即使得到密碼也沒用,而且這種動態口令由專用演算法生成,隨機性高,不太容易被破解。傳統的木馬程式即使竊取到使用者個人資訊,拿去登入銀行網頁,也已經過期。因此,動態口令極大地提高了使用者身份認證的安全性。

使用場景

銀行通常提供給使用者兩種動態口令: 一種是固定數量的動態口令,最常見的就是刮刮卡。使用者每次根據銀行提示,刮開卡上相應區域的塗層,即可獲得一個口令。刮刮卡成本低廉,使用方法簡單,因此很多銀行採用這種方法,如工商銀行; 另一種是硬體形式的動態口令,即電子令牌,它採用專用硬體,每次可以用自帶的密碼生成晶片得到一個當前可用的一次性動態密碼,交通銀行等就採用這種方式。一般來講,每個客戶端的電子令牌都有一個唯一的金鑰,該金鑰同時存放在伺服器端,每次認證時令牌與伺服器分別根據同樣的金鑰,同樣的隨機數和同樣的演算法計算出認證時的動態口令,從而確保口令的一致性和認證的成功。因每次認證時,隨機數的引數不同,所以每次產生的動態口令也不同。每次計算時引數的隨機性保證了每次口令不可預測,以保證系統安全。