我在想了一段时间后,正在检查RFC。在RFC 4226 HOTP:一种基于HMAC的一次性密码算法中,它在附录中声明:
安全性方面的一个简单增强是从HMAC-SHA-1值中提取更多的数字。例如,通过计算HOTP值模10^8来构建8位HOTP值,将降低对手从sv/10^6到sv/10^8的成功概率。这可以提供提高可用性的机会,例如通过增加T和/或s,同时仍然实现更好的总体安全性。例如,S= 10,10v/10^8 = v/10^7 < v/10^6,这是S=1时6位码的理论最优值。
在检查实现时,我不知道从HMAC-SHA1 1结果中提取8位(或更多)数字有什么问题。
这仅仅是通过避免用户写10位数字而不是4位来提高用户体验吗?还是有数学上的原因让我错过?
发布于 2013-08-18 10:11:25
为什么停在8位呢? 10位会更安全。或者12. HOTP算法的输出是160位,所以你可以一直走到48位。
底线:对于大多数应用程序来说,6位数字是足够安全的,这才是最重要的。对于用户来说,任何东西都是不方便的,当在硬件令牌中使用时(8位显示器相对于6位显示),会稍微贵一些。
发布于 2013-08-19 08:24:19
这是出于用户体验的原因,正如您所推测的那样,但是安全性并没有您想象的那么严重。
大多数实现使用6位HOTP/TOTP方案,并设计它们的实现方案,以使它们具有一个他们所熟悉的安全级别。
对于HOTP,允许6个数字足够安全的关键参数是节流行为。如果与合理的前瞻性窗口大小s相结合,蛮力攻击成功的概率就足够低,因为帐户或客户端将无法尝试大量猜测。
TOTP的节流参数与基于HOTP的节流参数相同。安全性计算不同,但适用相同的原则。
当然,相反的是,不适当地选择前瞻/后面或节流行为确实会打开6位小数点OTP,使暴力攻击具有很高的成功概率。
https://crypto.stackexchange.com/questions/9805
复制相似问题