跳到主要内容

5.2. Validation and Time-Step Size (验证和时间步长大小)

5.2. Validation and Time-Step Size (验证和时间步长大小)

在同一时间步长内生成的 OTP 将是相同的。当验证系统接收到 OTP 时, 它不知道生成 OTP 时客户端的确切时间戳。验证系统通常可能使用接收 OTP 时的时间戳进行 OTP 比较。由于网络延迟, OTP 生成时间与 OTP 到达接收系统的时间之间的间隙 (由 T 测量, 即自 T0 以来的时间步数) 可能很大。验证系统的接收时间和实际 OTP 生成可能不在产生相同 OTP 的同一时间步长窗口内。当在时间步长窗口结束时生成 OTP 时, 接收时间最有可能落入下一个时间步长窗口。验证系统通常应该为验证设置可接受的 OTP 传输延迟窗口策略。验证系统不仅应该将 OTP 与接收时间戳进行比较, 还应该与传输延迟内的过去时间戳进行比较。更大的可接受延迟窗口会暴露更大的攻击窗口。我们建议最多允许一个时间步长作为网络延迟。

时间步长大小对安全性和可用性都有影响。更大的时间步长意味着验证系统接受 OTP 的有效性窗口更大。使用更大的时间步长会产生以下影响:

首先, 更大的时间步长暴露更大的攻击窗口。当 OTP 生成并在使用前暴露给第三方时, 第三方可以在时间步长窗口内使用 OTP。

我们建议默认时间步长为 30 秒。选择 30 秒的默认值是为了在安全性和可用性之间取得平衡。

其次, 下一个不同的 OTP 必须在下一个时间步长窗口中生成。用户必须等到时钟从上次提交移动到下一个时间步长窗口。等待时间可能不完全是时间步长的长度, 这取决于最后一个 OTP 生成的时间。例如, 如果最后一个 OTP 在时间步长窗口的中点生成, 则下一个 OTP 的等待时间是时间步长的一半。一般来说, 更大的时间步长窗口意味着用户在最后一次成功的 OTP 验证后获得下一个有效 OTP 的等待时间更长。太大的窗口 (例如 10 分钟) 很可能不适合典型的互联网登录用例; 用户可能无法在 10 分钟内获得下一个 OTP, 因此将不得不在 10 分钟后重新登录同一站点。

请注意, 证明者可能在给定的时间步长窗口内多次向验证者发送相同的 OTP。在为第一个 OTP 发出成功验证后, 验证者绝对不能接受第二次 OTP 尝试, 这确保了 OTP 的一次性使用。