跳到主要内容

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 的一次性使用.