# TOTP (Time-based One-Time Password) ## Aliases - TOTP - Time-based One-Time Password - 动态口令 - 一次性密码 ## Type Concept / Security Protocol ## Description TOTP 是一种基于时间的一次性密码算法,通过共享密钥和当前时间戳生成动态验证码,广泛用于双因素认证(2FA)。 ## How It Works ``` 1. 服务端与客户端共享一个 Secret Key(密钥) 2. 双方使用相同的算法: TOTP = HMAC-SHA1(Secret Key, floor(Unix_Time / 30)) 3. 每 30 秒生成一个新的 6 位数字验证码 4. 用户在登录时输入该验证码完成身份验证 ``` ## Key Characteristics | 特性 | 说明 | |------|------| | 时效性 | 每 30 秒更新一次 | | 长度 | 通常 6 位数字 | | 离线可用 | 不需要网络连接(和时间同步) | | 算法标准 | RFC 6238 | | 变体 | HOTP(基于计数器)、TOTP(基于时间) | ## TOTP in Password Managers ### Bitwarden (Official) - TOTP 功能需要**付费会员** - 自动填充验证码 - 支持大多数网站的双因素认证 ### NodeWarden - 通过 `TOTP_SECRET` 环境变量**免费**提供 - 配置后可在 Bitwarden 客户端自动获取验证码 ## Setting Up TOTP Secret 在 NodeWarden 中设置 TOTP: 1. 在 Two-Factor Auth 页面获取 TOTP Secret(Base32 编码字符串) 2. 将 Secret 填入 `TOTP_SECRET` 环境变量 3. 在 Bitwarden 客户端添加 TOTP:大多数网站在设置 2FA 时会显示密钥 4. 在 Bitwarden 客户端设置 → 高级 → 身份验证器 TOTP 中填入密钥 ## Related Concepts - [[Multi-factor-Authentication]] — TOTP 是 MFA 的一种因素 - [[Passkey]] — 基于 WebAuthn 的无密码认证,比 TOTP 更安全 - [[Self-Hosted Password Manager]] — 自托管密码管理器通常内置 TOTP 支持 ## Source - [[nodewarden-把-bitwarden-搬上-cloudflare-workers-彻底告别服务器]]