我们最近在SSL上为客户机/服务器通信实现了WS信任安全性。我们的应用程序被成千上万的客户使用,遍布世界各地。我们过去在安全通信方面遇到的问题之一是,使用不同步时钟的客户难以连接,从而导致客户呼叫和沮丧。不幸的是,在过去引起的反应是简单地禁用此检查或简单地将可接受的时钟倾斜增加到接近无穷大的数量。
我不希望我们的系统的安全受到损害,我也不想引起大量客户的抱怨,他们的时钟与我们服务器上的时间不同步(这些时间与互联网时间同步)。为了防止同步检查被有效地禁用,我必须首先能够向我的经理解释为什么这是一个坏主意,以及为什么时钟同步的好处超过了客户抱怨或混淆的成本。
发布于 2014-11-13 17:36:41
在SSL中,时钟用于证书验证。客户端需要确保它与正确的服务器对话;为此,客户机将验证服务器的证书。验证意味着要验证很多事情;其中两个涉及时钟:
notBefore
和notAfter
字段;当前时间必须介于这两个日期之间。thisUpdate
字段,说明它是何时生成的,而nextUpdate
字段或多或少是CRL的过期日期。如果客户端的时钟关闭,那么它将破坏这两种功能之一或两者之一。例如,服务器的证书将被视为“长期过期”或“尚未可用”,从而导致拒绝。
接受客户端时钟关闭意味着客户端被修改为忽略证书和CRL中的日期。安全的最终后果是,如果攻击者成功地窃取了服务器的私钥,那么攻击者将能够永远模拟该服务器。撤销的目的是有一个经过验证的方法从这样的妥协中恢复;证书过期的点是防止CRL无限期地增长。如果客户端忽略了撤销和/或过期,那么原始的结果就是,一旦妥协发生,那么您就永远失败了。通常被认为是一件坏事。
值得注意的是,这是客户端的问题,而不是服务器的问题。如果您操作服务器,那么正确验证您的证书是客户的职责,而不是您的工作。如果客户真的坚持不安全和易受攻击,那么您就不能真正防止它,至少在技术上是这样的(您可以以合同的方式做事情:如果客户的无能允许违约,那么客户应该为此付出代价)。
同样地,如果客户端可以与您的服务器对话,那么它们就连接到某种网络,这意味着基于因特网的时间同步是一种可能性。对一些嵌入式设备来说,需要精确的时钟是一项挑战,但对于联网的计算机(包括智能手机)来说,它不应该是挑战。
发布于 2014-11-13 17:03:30
简单版本(针对管理人员):时间同步可以防止重放攻击。没有它们,有人可以记录客户端和服务器之间发送的数据包,解密,修改数据,然后重新发送数据包流,没有人会更明智。但是,由于解密需要时间,时间戳(在双方验证)可以指示流是“重放”。
也许您可以考虑为您的公司/申请提供更长的超时时间?而不是狭窄的窗口,你可以认识到一些好处,扩大窗口。当然,必须对其对系统的全面影响进行分析。
https://security.stackexchange.com/questions/72866
复制相似问题