RSA SecureID ® 密钥如何工作?

信息安全 RSA 客户端 银行
2021-08-21 17:53:46

我已经使用 RSA SecureID ® 密钥已经有一段时间了(可能是 10 年),例如安全地在线我的家庭银行帐户或从家里访问我公司的计算机网络。这些密钥会生成一个设置为过期的 6 位数字令牌但是,我一直想知道它们是如何工作的。

RSA SecurID 密钥卡

右侧有一个每秒闪烁一次的圆点(图中未显示),左侧有六个垂直堆叠的水平条,每条每十秒消失一次。每经过六十秒,令牌就会自行重置,之前的令牌就会失效。

AFAIK 这些设备不使用网络,它们生成的数字必须由服务器检查(无论服务器是银行还是公司的服务器)。因此,在该设备内部必须存储一种算法,该算法使用一种机制生成随机数,该机制包括一个由小电池供电的非常精确的计时器。计时器必须非常精确,因为服务器需要在同一时间间隔内检查生成数字的有效性。据我所知,对于每个用户/员工,服务器必须存储相同的随机数生成算法,每个客户/员工一个这样的算法。当然,芯片必须以这样一种方式构造,即如果它被盗,那么即使设备被破坏,攻击者也无法访问存储在其中的随机数生成算法。

这是这样工作的吗?

谢谢!

3个回答

是的,它确实如你所说。该芯片是“防篡改”的,如果有人试图攻击它,它将擦除“种子”(密钥)。这通常通过使用用户不可更换的电池和“陷阱”来实现,一旦设备打开或芯片表面被移除,“陷阱”就会中断设备的电源。然后将密钥存储在 SRAM 中,需要电源来保存密钥。

关键是一个种子,它与当前时间以 60 秒为单位(实际上是当前 UNIX 时间戳/60)相结合,刷新代码。

不,设备不需要精确。相反,服务器将存储最后接受代码的时间。然后服务器会提前一分钟、前一分钟和当前时间接受一个代码,所以如果服务器的当前时间是 23:20,那么它将接受 23:19、23:20 和 23 的代码: 21.

此后,它将存储最后接受代码的时间,例如,如果接受了 23:21 的代码,则它将 23:21 存储在数据库中,并拒绝接受在 23:21 或更早时间生成的任何代码。

现在到有趣的部分:为了防止不精确的令牌与服务器不同步,如果需要在 23:20 时间接受 23:19 代码或 23:21 代码,服务器将存储在其数据库中。这将确保在下次登录时,服务器将使用步数更正代码。

假设您在时钟 23:20 使用 23:19 代码登录。服务器在其数据库中存储“-1”(如果它是 23:21 代码,它将在数据库中存储“+1”)。下次登录时,时钟是 23:40。然后服务器将接受 23:38、23:39 或 23:40 的代码。如果接受 23:38 的代码,它将在数据库中存储“-2”,在 23:39 将在数据库中保留“-1”,在 23:40 将在数据库中存储“0”。

这有效地确保了服务器与您的令牌保持同步。最重要的是,如果令牌“离服务器太远”(由于长时间未使用),系统允许重新同步。这可以由系统管理员完成,或者在要求令牌用户提供来自令牌的 2 个后续代码(如 23:20 和 23:21,或 19:10 和 19:11)时提供自助服务重新同步服务。请注意,服务器永远不会接受在“最后使用的令牌代码”时或之前生成的令牌代码(因为这将允许重用 OTP 代码)。重新同步完成后,令牌将存储与提供的 2 个令牌代码和当前服务器时间的差异,在重新同步中,搜索窗口可能像加/减 50 步(这将允许大约 0、

服务器可以通过生成 50 个先前代码和 50 个未来代码来检测去同步的令牌,如果指定的代码与之匹配,它将自动启动重新同步过程。很多时候,为了防止攻击者使用重新同步过程来查找有效代码,一旦帐户处于重新同步模式,不重新同步就无法登录,这将需要攻击者在代码之后或之前找到确切的代码。成立。

SecurID 令牌具有分配给它的“种子”值,并使用特定算法进行编程,该算法根据种子及其系统时钟生成数字。种子值也存储在令牌随附的文件中。收到令牌后,系统管理员将种子文件导入身份验证服务器。由于 SecurID 令牌设备和服务器都具有种子值,并且都使用算法,因此服务器可以在任何给定时间确定正确的令牌代码应该是什么。

有时,令牌的时钟可能与身份验证服务器不同步。如果发生这种情况,系统管理员或其他授权支持人员可以通过在服务器上执行重新同步过程来帮助用户。这将配置服务器以识别该令牌的时间偏移,以便准确处理未来的身份验证尝试。

注意:因为这些数字必须是服务器可以预测的,因此仅根据种子文件中存储的数据、当前时间和标准算法,它们也可以被具有特殊工具和访问令牌的攻击者预测。(或者更糟糕的是,访问种子文件本身 -怀疑发生在 2011 年。)如果有足够的连续令牌代码,有工具可以确定种子值,然后自行生成未来代码。

塞巴斯蒂安的回答非常棒。我将以通俗的方式重申这一点。SecureID 令牌只是一个带有种子值的时钟。它不显示时间,而是显示一个数字。我们可以在图片中看到的点是秒(我认为),条是数字何时会改变,所以你可以计时。如果它到达底部,它即将改变,如果你正在输入它,你会想要等待。

“种子”也在验证设备的服务器上。当安全人员安装 RSA 服务器时,他们必须将相同的种子加载到将接收您的密码的服务器中。

所以......基本上它是一个密码时钟。就像我的孩子们戴的带有朵拉或公主的旧液晶手表一样。不同之处在于为数字提供数学运算的种子。