什么是一次性密码 (OTP)?
什么是 OTP?OTP 和 TOTP 的区别是什么?OTP 如何工作?这篇文章分解了 OTP 的基本概念,以及为什么它比静态密码更受欢迎。
OTP 代表一次性密码,也称为一次性 PIN 码、一次性验证码或动态密码。它是一个唯一的、自动生成的临时密码,用于单个身份验证会话或交易。
与传统的静态密码不同,OTP 每次使用时都会更改,并在短时间内过期。这使得它们成为一种高度安全的身份验证方法,因为攻击者很难窃取和重新使用它们。
OTP 在各种安全应用中被广泛采用,包括网上银行、电子商务和保护对敏感数据或系统的访问。它们也常用作多因素身份验证 (MFA) 的第二要素,以提供额外的安全层。通过结合用户知道的东西(如密码)和他们拥有的东西(如移动设备),OTP 已成为现代身份验证系统的重要工具。
OTP 如何工作?
OTP 有几种类型,每种类型针对不同的用例以不同方式生成和传递。常见的 OTP 方法包括:
短信 OTP / 邮件 OTP
短信 OTP 或邮件 OTP 是最简单的一种 OTP 形式,其中服务器生成一个唯一密码并通过短信或电子邮件安全地传递给用户。然后用户输入此密码以进行身份验证。
它是如何工作的:
- 用户向服务器请求 OTP。
- 服务器生成一个随机数字或字母数字代码,并通过短信或电子邮件发送给用户。
- 用户从其短信或电子邮件收件箱中检索 OTP 并输入到应用程序中。
- 服务器根据其记录验证代码,如果代码有效,则授予访问权限。
安全措施:
- OTP 的有效期很短(例如 5 分钟),以尽量减少拦截和重放攻击的风险。
- 短信传递渠道依赖于蜂窝网络,容易受到 SIM 卡交换攻击或电信基础设施中其他漏洞的影响。
- 基于电子邮件的 OTP 仅与用户的电子邮件帐户一样安全。如果电子邮件帐户被破解,OTP 可能被拦截。
使用场景:
短信和电子邮件 OTP 常用于面向消费者的应用,例如网上银行、电子商务和社交媒体平台。它们不仅比静态密码更安全,而且还为用户提供了一种方便的方式来进行身份验证,而无须记住复杂的密码和安全问题。
鉴于大多数用户始终可以访问手机或电子邮件帐户,短信和电子邮件 OTP 已成为用户身份验证、电子邮件地址或电话号码所有权验证和密码恢复的首选。
基于 HMAC 的 OTP (HOTP)
基于 HMAC 的 OTP,定义在 RFC 4226 中,是一种时间同步的 OTP 算法,它根据一个秘密密钥和一个计数器值生成一系列一次性密码。每个 OTP 通过用加密哈希函数(如 SHA-1, SHA-256)对秘密密钥和计数器值进行哈希处理来派生。
它是如何工作的:
-
秘密:HOTP 需要服务器和客户端之间共享秘密密钥。
-
计数器:服务器和客户端维护一个随每次 OTP 生成而递增的计数器值。
-
客户端使用共享秘密密钥计算计数器值 (C) 的 HMAC-SHA1(或其他哈希函数)哈希。
H = HMAC-SHA1(K, C)
-
哈希值被截断为 6 或 8 位代码(取决于实现)以生成 OTP。
OTP = Truncate(H)mod 10^d
-
服务器记录计数器值,并通过使用相同的计数器值和秘密密钥计算哈希值来验证传入的 OTP。 (如果略有不匹配,服务器可能允许一个小的计数器值窗口,例如一到两个增量,以解决同步问题)
安全措施:
- HOTP 确保每个密码都是唯一的并在使用前有效,因为计数器在每次成功验证后递增。
- 共享的秘密密钥从不通过网络传输,降低了被拦截的风险。
- 计数器值在服务器和客户端之间同步,以防止重放攻击。
使用场景:
HOTP 常用于硬件令牌和难以实现时间约束的传统系统。对于现代应用,由于其基于时间的特性和易于实现,TOTP 更广泛使用。
基于时间的 OTP (TOTP)
基于时间的 OTP,定义在 RFC 6238,是一种基于当前时间和共享秘密密钥生成一系列一次性密码的算法。TOTP 是 HOTP 的一种更先进的扩展,使用时间戳而不是计数器值来生成 OTP。它赋予 OTP 时间上的有效性,使其比 HOTP 更安全。
它是如何工作的:
-
秘密:如同 HOTP,TOTP 需要服务器和客户端之间的共享秘密密钥。
-
时间步长:HOTP 和 TOTP 的关键区别在于 TOTP 使用基于时间的步长值(通常为 30 秒)而不是计数器值。
-
客户端使用共享秘密密钥计算当前时间除以时间步长的 HMAC-SHA1 哈希。
H(Time) = HMAC-SHA1(K, Time/TimeStep)
-
哈希值被截断为 6 或 8 位代码以生成 OTP。
OTP(Time) = Truncate(H(Time))mod 10^d
-
动态 OTP:由于 OTP 生成是基于时间的,OTP 每 30 秒更改一次,提供更高的安全水平。
-
服务器通过使用当前时间和秘密密钥计算哈希值来验证传入的 OTP。只要 OTP 在有效时间窗口内,服务器就接受身份验证。
安全措施:
- 依赖时间同步确保 OTP 仅在短时间内有效,减少了拦截或重用的风险。
- TOTP 的基于时间特性使其比 HOTP 更安全,因为它更不容易受到重放攻击。即使攻击者获得了先前使用的 OTP,一旦时间窗口过期,它就会失效。
- 与 HOTP 一样,秘密密钥永远不会通过网络传输,降低了被截取的风险。
使用场景:
TOTP 广泛应用于软件认证应用程序,如 Google 身份验证器、Authy 和 Microsoft 身份验证器。这些应用生成用于用户对各种在线服务进行身份验证的时间型 OTP,包括社交媒体平台、云服务和金融机构。
TOTP 身份验证器应用已成为 MFA 中最受欢迎的 OTP 形式,因为它在安全性和可用性之间取得了平衡。用户可以在他们的移动设备上生成 OTP,而无需依赖短信或电子邮件传送,使其成为一种更安全和方便的身份验证方法。
OTP 的优势
-
提升安全性
- OTP 减少了失窃或泄露密码的风险。
- OTP 是时间敏感的,会迅速过期,减少了攻击者拦截和重新使用的机会窗口。
- 它的一次性特性使其比静态密码更安全,因为每个 OTP 都是独一无二的且无法重用。
-
使用简便
- OTP 易于生成和使用,用户交互最小。
- 各个平台和服务(如 TOTP)广泛支持,设置简单,并且可以利用一大批现有身份验证应用。
-
灵活性
- OTP 可以通过多种渠道传送,包括短信、电子邮件和身份验证应用,为用户提供选择他们偏好方法的灵活性。
-
符合法规
- OTP 符合行业标准和法规,如 PCI DSS、GDPR 和 HIPAA,这些法规要求强身份验证机制以保护敏感数据。
为什么 OTP 优于静态密码?
OTP 是一种安全且方便的身份验证方法,已成为现代安全实践中的重要工具。通过为每个身份验证会话提供唯一的时间敏感密码,OTP 提供了比传统静态密码更高的安全性。无论是通过短信、电子邮件还是身份验证应用传送,OTP 在各类应用中广泛采用,保护敏感数据并确保对在线服务的安全访问。随着威胁环境的演变,OTP 继续在保护用户帐户和防止个人和公司信息的未授权访问方面发挥关键作用。