RSA SecurID:可以"缺失"令牌导致问题?

时间:2014-06-16 17:38:12

标签: encryption random cryptography rsa securid

我非常着迷于RSA SecurID和类似的双因素系统。

我经历过很多文章,包括这篇文章:https://security.stackexchange.com/questions/9584/can-the-numbers-on-rsa-securid-tokens-be-predicted

我的问题是,因为RSA的算法使用"种子"因此产生的数字在"系列"中。

如果我在服务器要求时在安全设备上生成令牌,而不是使用该令牌,我再次按下该按钮以生成另一个令牌,该怎么办? 这不会导致"不匹配"在设备和服务器上运行的系列中?

如果逻辑只依赖于时钟和设备序列,那会更容易,但由于涉及种子和随机数,我想知道如果你跳过一两个令牌会发生什么?

感谢。

2 个答案:

答案 0 :(得分:3)

据我了解,SecurID tokens不使用“滚动计数器” - 令牌仅由设备序列和当前时间生成。另外:在我见过的RSA SecurID令牌中(公认有限),用户不按一个按钮来生成令牌;相反,令牌在屏幕上始终可见。因此,生成的令牌不会与服务器失去同步(在序列中),除了令牌端的时钟漂移的可能性(通常服务器使用NTP,因此它们的时钟漂移可以忽略不计)。

然而,时钟漂移问题的典型解决方案是在每个令牌的基础上在服务器上存储“漂移”参数。这个漂移参数可以手动更新(为了最大的安全性,但也可以最大的痛苦),或者可以检查服务器端的周围间隔。例如,如果我现在登录,您可以检查服务器的当前60秒间隔,前一个间隔和下一个间隔是否有效,如果上一个/下一个有效,则存储令牌的漂移。 / p>

另一方面,有一种算法会遇到您所描述的问题:HMAC-based One-time Password Algorithm。它使用滚动计数器,该计数器应该在服务器和令牌上同步。因此,如果您有基于HOTP的身份验证器并且多次按下令牌生成按钮,则会导致它不同步,并且服务器管理员需要手动干预。

可以如上所述制定类似的解决方案:检查计数器的下几个值,例如计数器+ 1,计数器+ 2,计数器+ 3等,并将其存储为“漂移”参数。根据一个人检查的距离,如果重复按下该令牌,它最终可能会失去同步。

修复HOTP的一个变种是问题是time-baesd version,它使用“时间计数器”而不是真正的计数器。这是Google身份验证器使用的内容。在这里,您仍然遇到时钟漂移问题,使用与上述相同的解决方案。

答案 1 :(得分:0)

如果您对OTP系统着迷,那么您应该阅读描述基于HMAC的OTP算法的RFC 4226和描述基于时间的OTP算法的RFC 6238,因为大多数情况都使用这两种算法目前可用的OTP解决方案。

如果您对双因素身份验证领域的最新发展感兴趣,那么您应该访问FIDO Alliance网站并查看他们的规格。