我们为Web应用程序构建了双因素身份验证过程。我们已经构建了一个小型独立应用程序,每分钟生成一个8位数的安全代码。当用户登录时,系统会提示他们输入安全代码。提交Web应用程序时,在其末尾生成安全代码并将其与输入的安全代码进行比较。如果两者相等,则允许用户进入应用程序。这用作RSA令牌。
但是,我正在使用原子钟服务器来确保USB应用程序和Web应用程序的安全代码生成相同,因为时区和时钟同步会产生问题。这是一种痛苦,不仅因为服务器有时可能不可靠,而且我们还必须添加防火墙规则以允许我们达到特定的原子钟。有没有使用远程原子钟的安全方法呢?
答案 0 :(得分:2)
您不需要精确的时钟,而是需要相同的值。因此,暴露某种"当前时间"来自同一个Web应用程序的服务(即基本的HTTP get" / currenttime"带有JSON响应)并从USP应用程序查询它。在这种情况下,您只需要在服务应用程序的服务器之间同步时间(如果您有多个)。
答案 1 :(得分:1)
如果您的应用程序不必完全RSA令牌安全,您可以修改Web应用程序以接受最后2或3个安全代码。这样,你就不那么依赖时间的一致性了。
如果必须进行时间同步,则可以运行Web应用程序和USB应用程序可以访问的自己的时间服务器。时间必须一致,不一定正确。
答案 2 :(得分:0)
依靠外部时间是一个坏主意,因为如果时间源可以被操纵(例如,通过中间人攻击,恶意上游DNS更改等),那么可以远程查询设备收集未来的价值观。
在滚动自己的加密之前,您应该真正评估您的安全要求。很容易成为许多错误的受害者,例如意外使用不具有加密安全性的PRG,侧通道定时攻击或类似错误。
如果您必须为生产执行此操作,请务必打开您的实施,以便进行审核。