2

我们为我们的 Web 应用程序构建了一个双因素身份验证过程。我们构建了一个小型独立应用程序,每分钟生成一个 8 位安全代码。当用户登录时,系统会提示他们输入安全代码。提交 Web 应用程序后,在其末端生成安全代码并将其与输入的安全代码进行比较。如果两者相等,则允许用户进入应用程序。这就像 RSA 令牌一样使用。

但是,我使用原子钟服务器来确保 USB 应用程序和 Web 应用程序的安全代码生成相同,因为时区和时钟同步会带来问题。这很痛苦,不仅因为服务器有时可能不可靠,而且我们还必须添加防火墙规则以允许我们击中特定的原子钟。有没有不使用远程原子钟的安全方法?

4

3 回答 3

2

您不需要精确的时钟,而是需要相同的值。因此,从同一个 Web 应用程序公开某种“当前时间”服务(即基本 HTTP 获取“/当前时间”和 JSON 响应)并从 USP 应用程序查询它。在这种情况下,您只需要在为应用程序服务的服务器之间同步时间(如果您有多个服务器)。

于 2012-05-29T17:51:40.413 回答
1

如果您的应用程序不必是完全 RSA 令牌安全的,您可以修改 Web 应用程序以接受最后 2 或 3 个安全代码。这样,您就不会那么依赖时间一致性。

如果您必须进行时间同步,您可以运行自己的时间服务器,该服务器可以通过 Web 应用程序和 USB 应用程序访问。时间必须一致,不一定正确。

于 2012-05-29T17:51:59.927 回答
0

依赖外部时间是一个坏主意,因为如果可以操纵时间源(例如,通过中间人攻击、恶意上游 DNS 更改等),那么人们可以远程查询设备以收集未来价值观。

在推出自己的加密货币之前,您应该真正评估您的安全要求。很容易成为许多错误的牺牲品,例如意外使用不加密安全的 PRG、侧信道定时攻击或类似情况。

如果您必须为生产执行此操作,请确保打开您的实现以便对其进行审查。

于 2012-05-29T18:06:29.037 回答