基於時間的一次性密碼算法

基於時間的一次性密碼算法 ( 簡稱 ： TOTP ） 是一種根據預共享的密鑰與當前時間計算一次性密碼的算法 。 它已被互聯網工程任務組接納爲RFC 6238標準 ， 成爲 （ OATH ） 的基石 ， 並被用於衆多多重要素驗證系統當中 。 TOTP是散列消息認證碼 （ HMAC ） 當中的一個例子 。 它結合一個私鑰與當前時間戳 ， 使用一個密碼散列函數來生成一次性密碼 。 由於網絡延遲與時鐘不同步可能導致密碼接收者不得不嘗試多次遇到正確的時間來進行身份驗證 ， 時間戳通常以30秒爲間隔 ， 從而避免反覆嘗試 。 在特定的多重因素驗證應用中 ， 用戶驗證步驟如下 ： 一位用戶在網站或其他服務器上輸入用戶名和密碼 ， 使用運行在本地的智能手機或其他設備中的TOTP生成一個一次性密碼提交給服務器 ， 並同時向服務器輸入該一次性密碼 。 服務器隨即運行TOTP並驗證輸入的一次性密碼 。 爲此 ， 用戶設備與服務器中的時鐘必須大致同步 （ 服務器一般會接受客戶端時間 - 1區間 （ 也就是延遲了30秒 ） 的時間戳生成的一次性密碼 ） 。 在此之前 ， 服務器與用戶的設備必須通過一個安全的信道共享一個密鑰 ， 用於此後所有的身份驗證會話 。 如需要執行更多步驟 ， 用戶也可以用TOTP驗證服務器 。