定義
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.