【问题标题】:Security Code Generation / Comparison and Atomic Clocks安全代码生成/比较和原子钟
【发布时间】:2012-05-30 02:06:29
【问题描述】:

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

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

【问题讨论】:

    标签: c# security authentication


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-22
          • 1970-01-01
          • 2014-04-12
          • 2020-01-23
          • 1970-01-01
          • 2020-06-15
          • 2010-09-28
          相关资源
          最近更新 更多