信息安全工程师 · 高频练习

30秒内同一个TOTP验证码被提交两次,服务器都应该接受吗?

中级 单选题 第 1119 题 较难 信息安全工程师TOTP动态口令重放攻击多因素认证
题目

用户登录时提交了当前30秒时间步生成的TOTP验证码,服务器验证成功。攻击者在该时间步结束前截获并再次提交完全相同的验证码。安全的验证系统应()。

A 只要仍在30秒内就无限次接受
B 记录该用户已成功使用的时间步,拒绝同一验证码在成功验证后的再次使用
C 把30秒窗口扩大到24小时,减少登录失败
D 把所有用户配置为同一个TOTP共享密钥
题目类型:原创高频练习题 用途:用于帮助理解信息安全工程师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

TOTP的移动因子来自时间步,同一密钥在同一时间步会生成相同值。允许有限前后窗口是为了兼顾网络延迟和时钟漂移,但同一用户某个时间步的口令一旦成功使用,验证端不应再次接受,否则仍存在重放机会。

选项分析

A

错误。时间有效不等于允许重复成功,截获者可在窗口内重放。

B

正确。按用户记录已成功验证的时间步,可拒绝同一口令二次使用。

C

错误。窗口越大,攻击者可利用的时间越长。

D

错误。每个证明者应使用独立密钥,公共密钥会放大泄露影响。

本题为什么容易错

不少同学只背‘验证码30秒变化一次’,于是默认30秒内都合法。真正的安全判断还要多问一句:这个时间步是否已经成功消费过。

先看结论

简短答案

30秒内同一个TOTP验证码被提交两次,服务器都应该接受吗,正确答案是 B(记录该用户已成功使用的时间步,拒绝同一验证码在成功验证后的再次使用)。TOTP的移动因子来自时间步,同一密钥在同一时间步会生成相同值。允许有限前后窗口是为了兼顾网络延迟和时钟漂移,但同一用户某个时间步的口令一旦成功使用,验证端不应再次接受,否则仍存在重放机会。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
只要仍在30秒内就无限次接受 本题干扰项 错误。时间有效不等于允许重复成功,截获者可在窗口内重放。 看到该词不要急着选,先判断是否真正解决题干问题
记录该用户已成功使用的时间步,拒绝同一验证码在成功验证后的再次使用 本题正确答案 正确。按用户记录已成功验证的时间步,可拒绝同一口令二次使用。 看到题干核心场景时优先联想到它
把30秒窗口扩大到24小时,减少登录失败 本题干扰项 错误。窗口越大,攻击者可利用的时间越长。 看到该词不要急着选,先判断是否真正解决题干问题
把所有用户配置为同一个TOTP共享密钥 本题干扰项 错误。每个证明者应使用独立密钥,公共密钥会放大泄露影响。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 只要仍在30秒内就无限次接受:错误。时间有效不等于允许重复成功,截获者可在窗口内重放。
  • 把30秒窗口扩大到24小时,减少登录失败:错误。窗口越大,攻击者可利用的时间越长。
  • 把所有用户配置为同一个TOTP共享密钥:错误。每个证明者应使用独立密钥,公共密钥会放大泄露影响。
复习

知识点详解

TOTP以共享密钥和时间步作为HMAC输入,常见时间步为30秒。验证端可检查当前及少量相邻时间步来容忍延迟,但窗口越宽,暴力猜测和截获利用机会越大。

备考速记

时间窗口允许迟到,不允许一张票进场两次。

TOTP 在多因素认证场景中的作用

验证成功后可记录用户最近接受的时间步,后续提交若不大于该值则拒绝;同时保护种子、限制尝试次数,并使用TLS减少中途窃取。

拓展

同类题怎么考

  • 判断同一TOTP在有效窗口内能否重复使用。
  • 分析扩大校验窗口对安全性和可用性的影响。
TOTP 在信息安全工程师软考中的考法

看到时间同步问题,考虑有限容差;看到同码二次提交,优先考虑成功消费记录和拒绝重放。

解题思路

题目刻意强调‘同一时间步内第二次提交’。验证码尚未过时,不代表仍可复用;一次性口令的关键就在成功后作废,因此选B。

考点定位

可接受时间窗口解决时钟偏差,一次性使用记录解决同窗口重放;两者目标不同,不能用扩大窗口代替防重放。

易错提醒

  • 为兼容手机时间不准而接受过多前后时间步。
  • TOTP种子以明文写入日志或备份。
  • 只限制验证码错误次数,却不限制账号和来源的尝试频率。

备考提示

  • 把生成时间步、允许偏差、成功后防重放画成三段。
  • 若要连续练认证题,可在书木兰软考题库 https://www.shumulan.com/ 把TOTP、短信验证码、WebAuthn和会话题分组刷,错因更容易看清。

你可能还想了解

  • TOTP验证码30秒内能用两次吗?
  • TOTP怎样防止重放攻击?
  • 验证码校验窗口越大越好吗?

本文小结

TOTP可容忍有限时钟偏差,但同一用户某时间步的验证码成功使用后必须拒绝再次提交,防止窗口内重放。