什麼是 TOTP?
基於時間的一次性密碼 (TOTP) 是一個臨時的、唯一的代碼,由使用當前時間作為關鍵因素的算法生成。類似於通用的 一次性密碼 (One-time password, OTP) ,TOTP 只使用一次,但它有固定的壽命,通常範圍為 30 至 60 秒。過期後,將自動生成一個新代碼。
TOTP 標準由互聯網工程任務組 (IETF) 根據 RFC 6238 定義,並廣泛應用於各種雙因素認證 (2FA) 和多因素認證 (MFA) 系統中。由於 TOTP 依賴於客戶端(用戶設備)和服務器之間的同步時間,它們提供了高水平的安全性並且難以預測或重用。
TOTP 的運作原理
TOTP 的生成涉及以下步驟:
- 共享密鑰:在初始設置過程中,生成並安全地存儲在客戶端和服務器上的共享密鑰。此密鑰通常編碼為用戶使用認證應用程序掃描的二維碼。
- 時間間隔:將當前時間分為固定間隔,通常為 30 秒。
- 算法應用:將共享密鑰和當前時間戳輸入到基於哈希的算法中(通常是 HMAC-SHA1)以生成唯一的數字代碼。
- 同步:客戶端和服務器均使用相同的共享密鑰和當前時間戳獨立生成代碼。只有當兩者同步時,代碼才匹配。
- 驗證:當用戶登錄或執行關鍵交易時,他們輸入在其認證應用程序上顯示的 TOTP。然後服務器將其與其內部生成的 TOTP 進行比較,以進行驗證。
何時使用 TOTP
在大多數情況下,推薦使用普通 OTP,但在無法“觸發”新密碼的情況下,推薦使用 TOTP。
- TOTP 示例:Authenticator App
- OTP 示例:電子郵件、SMS
OTP 和 TOTP 之間的區別是什麼?
主要區別在於 TOTP 是基於時間的,因此適合於設備未連接到服務器的情況。服務器可以輕鬆地將新密碼發送到電子郵件地址或電話號碼,但這需要電子郵件或電話在線。然而,Authenticator App 可以保持離線並使用“時間”來驗證密碼。