关于安全问题的"(H)OTP算法“,我有两个问题。
我们都知道"TOTP“是如何工作的,我们扫描一个qr代码,每30秒显示一个新的6-8位代码,几乎没有魔法。
现在回到"HOTP",除了来自"TOTP“的有效负载之外,我们还得到了一个”计数器“值。
在客户端显示计数器值安全吗?或者它会引起安全问题吗?
还有一个普遍的问题:“秘密”值总是16位数字吗?(我之所以这样问,是因为我看到了mfa-接受不到16位数的申请)
谢谢!
发布于 2020-04-18 10:35:14
问第一个问题:在客户端显示计数器值安全吗?
“柜台”不是秘密。虽然“秘密钥匙”仍然是秘密的,但是知道当前或最近的“计数器”值对对手是没有用的。如果“秘密钥匙”被泄露,那么你就有麻烦了。RFC4226说了很多关于保守“秘密钥匙”的秘密,而对保持“计数器”的秘密却完全没有。(对于TOTP,显然不是!)
如果对手确实学会了“秘密钥匙”和“计数器”,他们就会加入。如果他们不得不猜测,并且8字节的“计数器”是随机播种的,那么这看起来就像一次野蛮的攻击。“规则”第7.1节规定了认证协议P的要求,包括:
RP2 -P不应易受暴力攻击.这意味着在验证服务器端建议采用节流/锁定方案。
因此,在安全地保存“计数器”方面有一些额外的安全性,但是--客户机和服务器都不需要这样做。即使客户端这样做,服务器也可能不会。这是,而不是正式安全分析的一部分。
"E.4.基于计数器的重同步方法“( RFC)要求客户端发送他们的”计数器“,我们有:
RP3 -P应该在一个安全的通道上实现,以保护用户的隐私和避免重放攻击。
...no提到安全发送“计数器”,但作为副作用除外。
所以,对你的第一个问题的简短回答是“是的”,“是的,在客户端显示计数器值是安全的”--在这里,“安全”的意思是“秘密钥匙保持秘密时安全”。
问第二个问题:是“秘密”值,总是16位吗?
我猜这是指“秘密密钥”,也被称为“共享秘密”--你说的数字是指字节?
RFC第4节“算法要求”包括:
R6 -算法必须使用一个强共享秘密。共享秘密的长度必须至少为128位。此文档建议共享秘密长度为160位。
因此,小于16字节的“秘密”是不符合的。
https://stackoverflow.com/questions/61282085
复制相似问题