TOTP
由RFC 6238定义的主流双因素认证标准,通过将共享密钥与当前时间戳结合并经哈希算法计算,每30秒生成一个6位数字验证码,广泛用于账户安全验证
核心事实
时间轴 (近 90 天)
一次性验证码(OTP)是基于时间的一次性密码算法(TOTP)生成的临时代码,通常每30秒刷新一次,用于双因素认证(2FA)。
TOTP动态码在技术上可由代理自行计算(共享密钥可编程),但短信与邮件验证码必须由人类读取转发。
TOTP 定义于 RFC 6238,是 HOTP(RFC 4226)的时间维度扩展,计算方式为以当前 Unix 时间戳除以时间步长得到计数器 C,再计算 HMAC-SHA1(K, C),经动态截断取出 31 位整数,对 10^6 取模得到 6 位验证码。
TOTP 算法中验证码每 30 秒变化一次,是因为同一个 30 秒窗口内的 HMAC 值不变,跨过边界后计数器加一,HMAC 结果随之改变。
在 B 站 UP 主的实战视频中,REA 分析了一个 APK 应用,定位到验证码生成逻辑使用的是标准的 RFC 6238 TOTP 算法,结果不足 6 位时在左侧补零。
硬件密钥或应用型 TOTP 比短信验证码更抗钓鱼和 SIM 劫持。
传统基于TOTP验证码或推送通知的MFA,在攻击者搭建反向代理钓鱼页面时可被实时转发验证码或诱导用户批准从而绕过。
对于教育账号,建议优先启用基于认证应用(如TOTP)或硬件安全密钥的MFA,而非仅依赖短信验证码,因为短信可能遭受SIM卡交换攻击。
官方提供的排查表指出:输入过程中代码过期应等待新值并尽快提交;所有代码失败应校准电脑时钟;密码正确但验证码错误应核对账号与 setup key;不显示验证码应检查 secret 字段与 Vault 锁定状态。
RFC 6238 允许服务端做一定程度的漂移容忍,通常为前后各一个 30 秒窗口,即约 90 秒的容错范围。
还有 13 条时间轴事件
全部知识事实 (20)
TOTP将静态密钥与当前Unix时间戳的30秒时间窗口进行HMAC-SHA1哈希运算,截取6位数字作为动态验证码
80%待验证TOTP协议基于RFC 6238标准,每30秒生成一个6位动态码
95%待验证一次性验证码(OTP)是基于时间的一次性密码算法(TOTP)生成的临时代码,通常每30秒刷新一次,用于双因素认证(2FA)。
50%待验证TOTP动态码在技术上可由代理自行计算(共享密钥可编程),但短信与邮件验证码必须由人类读取转发。
50%待验证TOTP 定义于 RFC 6238,是 HOTP(RFC 4226)的时间维度扩展,计算方式为以当前 Unix 时间戳除以时间步长得到计数器 C,再计算 HMAC-SHA1(K, C),经动态截断取出 31 位整数,对 10^6 取模得到 6 位验证码。
50%待验证TOTP 算法中验证码每 30 秒变化一次,是因为同一个 30 秒窗口内的 HMAC 值不变,跨过边界后计数器加一,HMAC 结果随之改变。
50%待验证硬件密钥或应用型 TOTP 比短信验证码更抗钓鱼和 SIM 劫持。
50%待验证传统基于TOTP验证码或推送通知的MFA,在攻击者搭建反向代理钓鱼页面时可被实时转发验证码或诱导用户批准从而绕过。
50%待验证对于教育账号,建议优先启用基于认证应用(如TOTP)或硬件安全密钥的MFA,而非仅依赖短信验证码,因为短信可能遭受SIM卡交换攻击。
50%待验证RFC 6238 允许服务端做一定程度的漂移容忍,通常为前后各一个 30 秒窗口,即约 90 秒的容错范围。
50%待验证将密码和 TOTP secret 存进同一个登录条目时,两者位于同一个本地 Vault 中,其隔离程度低于将第二因素放在另一台物理设备上。
50%待验证官方提供的排查表指出:输入过程中代码过期应等待新值并尽快提交;所有代码失败应校准电脑时钟;密码正确但验证码错误应核对账号与 setup key;不显示验证码应检查 secret 字段与 Vault 锁定状态。
50%待验证SAFi v1.5.0 支持企业身份与访问管理能力,包括 Microsoft Entra ID 单点登录、TOTP 多因素认证、SCIM 2.0 用户与角色配置、自动化账号注销、基于 DNS 的域名验证和租户感知的工作区路由。
50%待验证现代身份验证体系(如基于TOTP的双因素认证、短信验证码、FIDO2/WebAuthn硬件密钥)设计上就是为了抵抗自动化攻击,AI智能体几乎无法在不持有用户物理设备的前提下完成这些验证
50%待验证1Password、Bitwarden 等密码管理器已经支持团队共享 TOTP 密钥
50%待验证拥有 TOTP 共享密钥的人就能生成完全相同的验证码,共享2FA在技术上并不复杂
50%待验证MFA要求用户登录时额外提供第二种验证因素,如TOTP、硬件安全密钥或生物特征
50%待验证Vaultwarden 和官方 Bitwarden 均支持 TOTP 协议的两步验证,可配合 Aegis、Authy 等认证器应用使用
50%待验证与基于 TOTP 的双因素认证不同,Passkey 采用挑战-响应机制,服务方每次登录发送随机挑战值,由设备用私钥签名返回,不存在可被中间人截获重放的一次性密码
50%待验证Bitwarden内置验证器功能,可生成一次性验证码(2FA/TOTP)
50%