我明白钉钉是什么。我读过关于证书钉扎的文章,我很欣赏它的用例。但今天我学到了钉制可以分为两种-
我想了解每个用例。有什么典型的场景我们更喜欢哪一种而不是另一种?
我的一个疑问是:假设我们固定了一个公钥。我们的连接容易受到MitM攻击。是否有CA认证的根证书具有与客户端中使用的证书相同的公钥?
如果两者之间的任何差异能帮助我更好地理解它们,我们将不胜感激。
发布于 2015-04-29 02:18:40
这实际上取决于您的应用程序/站点如何管理证书和公钥,即密钥和证书旋转的频率。例如,如果您的站点经常旋转证书,那么如果您要固定证书,也需要经常更新应用程序。然而,在这个用例中,固定公钥将是一个更好的主意,因为与证书关联的公钥将保持不变。
来自您在问题中提到的OWASP链接:
证书--证书是最容易引脚的。您可以从网站上获取证书,让IT人员给您的公司证书发送电子邮件,使用openssl s_client检索证书等。当证书过期时,您将更新应用程序。假设您的应用程序没有错误或安全缺陷,应用程序将每隔一两年更新一次。在运行时,可以在回调中检索网站或服务器的证书。在回调中,您可以将检索到的证书与嵌入在程序中的证书进行比较。如果比较失败,则失败方法或函数。将证书钉在一起有一个缺点。如果站点定期旋转其证书,则需要定期更新您的应用程序。例如,Google旋转其证书,因此您需要每月更新一次应用程序(如果它依赖于Google服务)。即使Google旋转它的证书,底层的公钥(在证书中)仍然是静态的。公钥公钥钉扎更灵活,但由于从证书中提取公钥所需的额外步骤,所以比较棘手。与证书一样,该程序检查提取的公钥及其嵌入的公钥副本。有两个缺点,两个公钥钉。首先,使用密钥(相对于证书)比较困难,因为通常必须从证书中提取密钥。在Java和.Net中,提取是一个很小的不便,但是在Cocoa/CocoaTouch和OpenSSL中却很不舒服。第二,键是静态的,可能违反密钥旋转策略。
关于MitM,不,只要正确地实现了证书定位,TLS连接就不会受到任何MitM攻击的攻击。即使攻击者能够使用您的应用程序固定的相同公钥(例如,通过rouge CA )获得自己域的有效证书,他们仍然没有相应的私钥。因此,无法与应用程序创建有效的TLS连接(因为它们本身无法执行TLS握手)。
发布于 2018-09-26 16:48:33
证书钉扎的最大问题是,证书的保质期有限,而且往往要花钱。免费证书让我们只加密90天。如果你付钱的话,你可以得到两年多的时间,这是现在CA/Browser论坛设定的限制。没有被驱逐者,这将不会在未来进一步减少。
除非你买了证书,否则你不能把它钉起来。一旦你买了它,不管你是否使用它,它的一生都在滴答作响。因此,如果您持有证书,您可能最终会购买许多额外的证书,您可能会遇到问题,人们试图连接您的代码的旧版本。
另一方面,公钥没有任何生命周期限制。因此,如果您使用键钉,您可以生成一个键盘,把私钥放在您的金库和公共密钥在您的应用程序。几年后,你可以把私钥从你的金库里拿出来,得到一张证书并投入使用。
键钉扎的潜在缺点是没有撤销密钥。如果您的密钥被破坏,您可以撤销证书,但是具有友好CA的攻击者可能会使用被盗的密钥获得新的证书。OTOH证书撤销在一般情况下是相当脆弱的。
发布于 2015-04-03 18:25:34
只是我两分钱中的一部分:
我可以想象,在证书被更新时(例如,在嵌入式系统或IoT应用程序中)很难更新应用程序的场景中使用公钥固定。否则,证书钉扎就更方便了。
如果公钥是以足够的熵生成的,则不太可能有两个相同的密钥。
https://security.stackexchange.com/questions/85209
复制相似问题