動態口令(OTP,One-Time Password)又稱單次密碼,是使用密碼技術實現的在用戶端和伺服器之間通過共用秘密的一種認證技術,是一種強認證技術,是增強目前靜態口令認證的一種非常方便技術手段,是一種重要的雙因素認證技術,動態口令認證技術包括用戶端用於產生口令產生器的,動態令牌,是一個硬體裝置,和用於管理令牌及口令認證的後台動態口令認證系統組成。
一、OTP曆史溯源
動態口令(OTP)有一個同名確不同翻譯的前輩,單次密碼(OTP, One-Time Pad),也叫密電本,是一種應用于軍事領域的諜報技術,即對通訊資訊使用預先約定的一次性密電本進行加密和解密,使用後的密電本部分丟棄不再使用,能夠做到一次一密。如果看過一些國內的諜戰電視劇可能會對在二戰時期,日本轟炸重慶中的一個號稱“獨臂大盜”的日本間諜有印象的話,他同日軍通電使用的就是單次密碼技術,使用諾貝爾獲獎的小說《The Good Earth》進行諜報編碼,最後是被稱為美國密碼之父的赫伯特·亞德利破獲。而目前在安全強認證領域使用的OTP動態密碼技術,源於最早由RSA公司於1986年開發的RSA SecureID產品,動態密碼並不是單次密碼技術,而是動態一次性口令技術。目前,國際上動態口令OTP有2大主流演算法,一個是RSA SecurID ,一個是OATH組織的OTP演算法。如果在國內來說的話,另一個是國密的OTP密碼演算法。RSA SecurID使用AES對稱演算法,OATH使用HMAC演算法,國密演算法使用的國密SM1(對稱)和SM3(HASH)演算法。
二、OTP認證原理與同步方法
動態口令的基本認證原理是在認證雙方共用密鑰,也稱種子密鑰,並使用的同一個種子金鑰組某一個事件計數、或時間值、或者是非同步挑戰數進行密碼演算法計算,使用的演算法有對稱演算法、HASH、HMAC,之後比較計算值是否一致進行認證。可以做到一次一個動態口令,使用後作廢,口令長度通常為6-8個數字,使用方便,與通常的靜態口令認證方式類似,使用方便與系統整合好,因此OTP動態口令技術的應用非常普遍,可以應用於多種系統渠道使用,如:Web應用、手機應用、電話應用、ATM自助終端等。
動態口令的同步機制有3種,即時間型、事件型和挑戰與應答型,目前應用最多的是時間型動態口令,挑戰與應答型動態口令的應用也逐漸增多,並且動態口令逐漸層為多種同步類型複合的機制發展,如時間+挑戰與應答型。
三、OTP與常用認證技術比較
目前在資訊系統中使用的增強型認證技術包括:
1 USBKey: 申請PKI認證。
2 動態口令卡:列印好的密碼刮刮卡。
3 動態簡訊:使用電信通道下發口令。
4 IC卡/SIM卡:內建與使用者身份相關的資訊。
5 生物識別特徵:採用獨一無二的生物識別特徵來驗證身份,如指紋。
6 動態令牌:動態口令產生器和認證系統。
不同方案比較如下:
解決方案
|
安全性
|
相容性
|
價格
|
易用性
|
靈活性
|
USBKey/PKI
|
高
|
差
|
高
|
一般
|
差
|
動態口令卡
|
一般
|
好
|
低
|
一般
|
好
|
動態簡訊
|
高
|
好
|
高
|
一般
|
一般
|
IC卡/SIM卡
|
高
|
差
|
高
|
一般
|
差
|
生物識別技術
|
高
|
差
|
高
|
一般
|
差
|
動態令牌
|
高
|
好
|
高
|
方便
|
好
|
由上面的比較可以非常直觀的看出,動態口令認證技術有著一定優勢。
四、動態口令認證技術不足
動態口令認證技術沒有第3方權威機構認證,如果業務應用系統安全性原則不完善的情況下,可能會受到中間人攻擊。如某某銀行使用時間型動態令牌受到網路釣魚攻擊。建議在應用中完善安全使用原則,劃清口令使用許可權,加強交易系統流程式控制制,用以提高系統安全性。
附:OATH演算法Java原始碼:http://download.csdn.net/detail/goldboar/3932212