勵志

勵志人生知識庫

totp算法

TOTP算法(Time-based One-time Password algorithm,基於時間的一次性密碼算法)是一種從共享密鑰和當前時間計算一次性密碼的算法。它是Internet工程任務組標準RFC 6238的採納者,也是Open Authentication(OATH)的基石,廣泛套用於雙因素身份驗證系統。

TOTP算法的工作原理是基於散列的訊息認證碼(HMAC),使用加密哈希函式將密鑰與當前時間戳組合在一起以生成一次性密碼。由於網路延遲和不同步時鐘可能導緻密碼接收者必須嘗試一系列可能的時間來進行身份驗證,因此時間戳通常以30秒的間隔增加,從而減少了潛在的搜尋空間。

TOTP算法的流程包括以下幾個步驟:

密鑰生成:在為賬戶設定TOTP時,將生成一個唯一的密鑰,該密鑰在用戶設備和認證伺服器之間共享。

時間同步:用戶設備和認證伺服器需要同步到相同的時間源,TOTP算法依賴於當前時間來生成一次性密碼。

OTP生成:TOTP算法將密鑰和當前時間結合起來,套用Hash函式生成一次性密碼。此密碼通常包含6-8位數字,並具有有限的有效期,例如30或60秒。

OTP驗證:當用戶嘗試登錄時,輸入常規密碼以及由TOTP應用程式或設備生成的一次性密碼。然後,認證伺服器根據共享密鑰和當前時間獨立生成預期的OTP。如果用戶輸入的OTP與伺服器生成的OTP匹配,則授權訪問。

TOTP算法的優點在於其基於時間的特性,即使攻擊者可以偷看當前令牌,幾秒鐘之後,它將被新的令牌代替。然而,它也需要令牌生成器和認證伺服器將其時鐘設定為大致相同的時間,如若令牌生成器丟失或時間不一致,則會帶來很大的痲煩。