基于時間的一次性密碼 TOTP 詳解

基于時間的一次性密碼 TOTP(Time-Based One-Time Password),也被稱為時間同步動態(tài)密碼,是一種基于時間的一次性密碼算法,通常用于兩步驗證和多因素身份驗證,用于增強靜態(tài)口令認證的安全性。

TOTP 算法由互聯(lián)網(wǎng)工程任務組 (IETF) 在 RFC 6238 中定義,是基于 HMAC (基于哈希的消息認證碼) 的一次性密碼算法 (HOTP) 的擴展,添加了一個時間因素。

TOTP的工作原理是將時間作為密碼生成的關鍵因素,使用?HMAC-SHA-1?算法,將當前時間作為輸入,并使用一個共享密鑰(K)和一個時間參數(shù)(T)作為參數(shù)進行計算。其中,共享密鑰是事先在客戶端和服務器之間協(xié)商好的。

TOTP 密碼生成過程

初始化:用戶在服務提供商(如 Google、Facebook 等)注冊賬戶時,服務提供商(服務器)會為用戶生成一個密鑰(Secret Key)并保存在數(shù)據(jù)中。然后把這個密鑰會以某種方式(通常是二維碼)分享給用戶,用戶將其添加到(通過掃碼)自己的身份驗證器應用(如 Google Authenticator、Microsoft Authenticator)中。

生成 TOTP:身份驗證器應用會按照固定的時間間隔(常見的是 30 秒)使用 HMAC-SHA1 算法,使用當前的時間戳和在初始化步驟中獲取的密鑰,生成一個新的一次性密碼,這個密碼通常是一個 6 位數(shù)字(但也可能更長或更短)。

驗證 TOTP:當用戶嘗試登錄或執(zhí)行需要驗證的操作時,會被要求提供當前的一次性密碼。用戶從自己的身份驗證器應用中獲取這個密碼,并輸入到服務提供商的網(wǎng)站或應用中。服務提供商會使用同樣的算法和密鑰,以及當前的時間戳,生成一個一次性密碼,并將其與用戶提供的密碼進行比較。如果兩個密碼匹配,那么用戶的身份就被認為已經(jīng)驗證。

小結

TOTP 的優(yōu)點在于利用了時間作為動態(tài)因素,使得密碼具有一次性的特點,可以防止重放攻擊。即使攻擊者能夠截獲一個一次性密碼,也無法再次使用它,因為密碼在短時間后就會過期。此外,由于密碼是基于時間和密鑰生成的,因此攻擊者無法預測未來的密碼,除非能夠獲取到密鑰。

TOTP 除了以上的優(yōu)點,也是有一定局限性的。TOTP 算法對于時間的同步要求較高,需要客戶端和服務器之間的時間保持精確同步。

最后,推薦一個免安裝的TOTP微信小程序:

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容