
一次性密碼(OTP)的主要思路是:加入不確定因素,使得每回登錄時傳送中的信息均不一樣,從而提高了安全性。一次性密碼系統顺利获得時間、事件與密鑰3個變量得到的動態密碼替換傳統的靜態密碼。一次性密碼系統通常由用戶手中的動態密碼卡與認證用戶身份的服務器端組成。每個動態密碼卡均有一個且僅有一個密鑰,該密鑰同一時間放在服務器端,每回認證時,動態密碼卡和服務器分別藉助相同的密鑰、隨機參數與算法計算待認證的動態密碼,從而在雙邊保證密碼的一致性,完成用戶的身份認證。由於每一次認證的隨機參數不一樣,因此得到的動態密碼也不一樣,而參數的隨機性確保了每回密碼的不可預測性,從而在最基本、最重要的密碼認證階段確保了系統的安全性。
一次性密碼的實現機制主要有兩種:
·挑戰/應答機制。認證時,服務器端向客戶端發送1個不一樣的“挑戰”字串,客戶端程序收到該字串後,進行相應的“應答”。
·時間同步機制。即將用戶登錄時間做隨機因素,與用戶的密碼一起產生一個密碼字,此方式對雙方時間精確度有較高的要求,通常用以分鐘為單位的折中方法,容忍時間誤差可到1分鐘。
一個一次性密碼認證過程如下:
1)客戶對認證服務器給出請求,說明要身份認證。
2)認證服務器查詢用戶的數據庫,辨認該用戶是否為合法用戶。若不是,則沒有進一步處理。
3)認證服務器內部得到一個隨機數,當做“挑戰”發給客戶。
4)客戶合併用戶名字與隨機數,用單向散列函數。
5)認證服務器將計算結果和應答串進行對比,若二者相同,則顺利获得認證,否則,失敗。
6)認證服務器通知客戶認證成功或失敗。
與傳統密碼體制相比,OTP有如下優點:
·有效處理使用者密碼記憶和保存的困難。
·因密碼只可用一次,且密碼一分鐘隨機變化一次,因此不能預測,也僅有1次的使用有效性,從而大大提升了安全程度。
