TOTP算法

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

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

基本介紹

  • 中文名:TOTP算法
  • 外文名:Time-based One-time Password algorithm
定義,弱點和漏洞,歷史,

定義

TOTP基於具有時間戳計數器的OTP。
通過定義紀元(T0)的開始並以時間間隔(TI)為單位計數,將當前時間戳變為整數時間計數器(TC)。 例如:
TC = floor,
TOTP = HOTP(SecretKey,TC),
TOTP-Value = TOTP mod 10d,其中d是一次性密碼的所需位數。

弱點和漏洞

TOTP代碼可以像密碼一樣被釣魚,但它們需要網路釣魚者實時代理憑證,而不是及時收集它們.
不限制登錄嘗試的實現容易受到強制執行代碼的攻擊。
竊取共享密鑰的攻擊者可以隨意生成新的有效TOTP代碼。如果攻擊者破壞了大型身份驗證資料庫,這可能是一個特殊問題。
由於TOTP設備的電池電量不足,時鐘可以解除同步,並且由於軟體版本在用戶可能丟失或被盜的手機上,因此所有實際實施都有繞過保護的方法(例如:列印的代碼,電子郵件 - 重置等),這可能給大型用戶群帶來相當大的支持負擔,並且還為欺詐用戶提供額外的利用向量。
TOTP代碼的有效期超過它們在螢幕上顯示的時間(通常是兩倍或更多倍)。這是一個讓步,認證和認證方的時鐘可以大幅度扭曲。
所有一次性基於密碼的身份驗證方案(包括TOTP和HOTP等)仍然容易受到會話劫持,即在用戶登錄後占用用戶的會話。

歷史

TOTP草案是通過幾個OATH成員的合作開發的,以創建一個行業支持的標準。它補充了基於事件的一次性標準HOTP,為最終用戶組織和企業提供了更多選擇,以選擇最適合其套用要求和安全準則的技術。 2008年,OATH向IETF提交了規範的草案版本。該版本包含了作者根據提交給IETF的先前版本從技術社區收到的所有反饋和評論。 2011年5月,TOTP正式成為RFC 6238.

相關詞條

熱門詞條

聯絡我們