银行在其密码生成器令牌上使用哪种 OTP(一次性密码)算法? [关闭]

Posted

技术标签:

【中文标题】银行在其密码生成器令牌上使用哪种 OTP(一次性密码)算法? [关闭]【英文标题】:Which OTP (one-time password) algorithm do banks use on their password generator token? [closed] 【发布时间】:2012-08-31 20:53:27 【问题描述】:

许多银行提供一些令牌设备,以便为一次性使用创建密码。我想知道他们使用哪种 OTP 算法?是 HOTP 还是 TOTP?

【问题讨论】:

肯定会因所涉及的银行而异?我不认为地球上的每家银行都使用单一标准,所以这个问题无法真正回答。 (如果是,我希望看到引用的信息的可靠来源以及答案。) 【参考方案1】:

正如 aiodintsov 所说,答案不能一概而论,但技术的选择实际上取决于银行。我的猜测是TOTP。但是让我给出选择的理由。

TOTP 使用 Unix 时间戳代替了客户端和服务器在事件计数器上保持同步的需要。该算法允许服务器选择它认为可接受的传入时间戳多​​远,以纠正时钟漂移。

当您从银行收到 OTP 时,它通常会说您应该在一定的时限内使用该 OTP,之后它就会过期。如果银行使用HOTP,则 OTP 无需在一段时间后过期,而是仅在您发出另一个请求并增加计数器后才会过期。

因此,下次您收到不要求您在时限内使用它的 OTP 时,请确保它是使用 HOTP 生成的。

【讨论】:

很好的理由!正如您所说,由于键入密码有时间限制,因此他们应该实现基于系统时钟的。感谢您周到的回复。【参考方案2】:

他们可以使用他们想要的任何东西,他们选择的任何散列函数。使用 HOTP 和 TOTP。请参阅 RFC 4226 和 RFC 6238。我曾经有一张完全符合 RFC 4226 的 HOTP 算法的测试卡,可以将其用于身份验证解决方案(为卡提供了密钥)。

【讨论】:

以上是关于银行在其密码生成器令牌上使用哪种 OTP(一次性密码)算法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

动态令牌-(OTP,HOTP,TOTP)-基本原理

云桌面令牌登录方式

谷歌 OTP 生成 Java

如何在 ASP.NET 核心 MVC 中使用一次性密码 (OTP) 注册手机号码,而不是使用 2FA

PHP - 为交易生成令牌

如何在 Node.js 中正确实现“忘记/重置密码”功能? (使用一次性令牌)