如果您曾使用硬件令牌批准数字银行交易,或轻点 YubiKey 生成登录代码,那么您已经使用过基于 HMAC 的一次性密码(HOTP)技术。为帮助您了解如何使用 HOTP 保护帐户,我们将探讨 HOTP 的工作原理、优势与局限,并将其与其他 OTP 方法进行比较。
HOTP 是什么?
HOTP 是 HMAC-based one-time password 的缩写。它是一种双因素身份验证 (2FA) 方法,可按需生成一次性登录代码。
HMAC 即 Hash-based Message Authentication Code,是一种加密技术,使用密钥和哈希函数生成安全且防篡改的值。HOTP 将 HMAC 与计数器结合使用,以确保每个身份验证代码都是唯一的,且只能使用一次。
由于 HOTP 代码在被使用或被替换之前始终有效,因此非常适合远程工作以及其他无法实现可靠时间同步或持续联网的环境。
HOTP 是如何工作的?
HOTP 身份验证基于两个共享组件:密钥和计数器。用户设备和身份验证服务器都会存储这些值,并用它们独立生成相同的一次性代码。
设置:设置硬件令牌时,会在设备与应用服务器之间共享一个密钥,并在双方安全存储。
生成代码:设备使用名为 HMAC 的加密哈希函数,将密钥与当前计数器值结合。结果是一个简短且不可预测的一次性密码。
身份验证:输入 HOTP 代码后,服务器会使用其自己的密钥和计数器副本执行相同的计算。如果代码匹配,则授予访问权限。
HOTP 计数器系统详解
HOTP 依赖于在您的设备和身份验证服务器之间共享的独特计数器系统。每次生成新代码时,计数器都会递增。登录成功后,服务器也会更新其计数器。只要设备和服务器计数器保持同步,代码就会匹配并授予您访问权限。
您可以把 HOTP 想象成一本编号的凭券簿,您按顺序撕下并使用。已使用的凭券不能再重复使用,您必须使用下一张。HOTP 计数器系统的运作方式与此类似。
HOTP 身份验证与其他 OTP 的比较
HOTP 与 OTP 的比较
一次性密码 (OTP) 是我们用于双重验证的各种单次使用密码的统称。HOTP 是 OTP 的一种特定类型,依靠基于计数器的系统来生成其代码。
HOTP 与 TOTP 的比较
基于时间的一次性密码 (TOTP) 每 30 到 60 秒自动生成一个新代码。TOTP 最常见的例子就是身份验证器应用生成的代码。相比之下,HOTP 仅在被请求时才生成新代码,使用的是计数器而非计时器。
这一差异会影响每种 OTP 方法的安全性。TOTP 的快速过期给攻击者留下的可乘之机非常小。相反,HOTP 代码可能几天甚至几周都保持有效。
不过,在设备时钟不可靠的情况下,例如位于偏远地区且网络连接不佳的设备,HOTP 更加可靠。
HOTP 与短信及电子邮件代码的比较
通过短信和电子邮件发送的 OTP 代码容易被拦截,因为它们必须经过蜂窝网络和互联网传输。HOTP 在设备本地生成代码,因此更加安全,并且即使在网络中断时也能提供一致的访问。
HOTP 有哪些优势和局限?
HOTP 身份验证的优势
使用 HOTP 作为首选 OTP 方法有以下几个优点:
- 可离线工作:HOTP 可以离线运行,因此是网络访问受限场所的理想选择。
- 没有时间压力:HOTP 代码不会自动过期,因此您可以从容地输入代码。
- 算法获得认可:HOTP 由 RFC 4226(新窗口) 定义,这确保了不同软件供应商和各种厂商的硬件令牌之间的兼容性。
- 依赖更少:HOTP 基于计数器的系统不依赖精确的时钟或持续的网络连接,这在某些环境中会使其表现更加可预测。
HOTP 身份验证的局限性
与所有技术一样,HOTP 也有一些需要注意的重要事项:
- 有效期不定:如果不生成新代码,HOTP 代码可能会无限期保持有效。这给了攻击者更多时间利用被盗的代码。
- 计数器同步:如果您生成了代码但未使用,设备和服务器计数器可能会失去同步,导致身份验证失败。
- 需要手动管理:由于代码不会自动过期,您必须记得在每次使用后生成新代码。
迈向更强的密码安全
虽然 HOTP 可能不具备自动过期的安全优势,也没有短信代码的便利性,但其基于计数器的系统具有独特优势。这是一个经过验证的双重验证系统,支持可靠的离线访问,而且没有时间压力,某些用户可能更青睐这一点。
要在一个已加密的位置轻松管理您的密码和双重验证代码,可以考虑使用 Proton Pass。我们这款安全的密码管理器集成了 2FA 身份验证器,通过完全的端到端加密保护您的所有凭证和双重验证代码。让您的数字生活既安全又便捷,从未如此简单。






