首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >证书钉扎与公钥钉扎的区别

证书钉扎与公钥钉扎的区别
EN

Security用户
提问于 2015-04-03 16:29:20
回答 3查看 21.3K关注 0票数 26

我明白钉钉是什么。我读过关于证书钉扎的文章,我很欣赏它的用例。但今天我学到了钉制可以分为两种-

  1. 将证书或
  2. 别针公用钥匙

证书和公钥钉扎

我想了解每个用例。有什么典型的场景我们更喜欢哪一种而不是另一种?

我的一个疑问是:假设我们固定了一个公钥。我们的连接容易受到MitM攻击。是否有CA认证的根证书具有与客户端中使用的证书相同的公钥?

如果两者之间的任何差异能帮助我更好地理解它们,我们将不胜感激。

EN

回答 3

Security用户

回答已采纳

发布于 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握手)。

票数 20
EN

Security用户

发布于 2018-09-26 16:48:33

证书钉扎的最大问题是,证书的保质期有限,而且往往要花钱。免费证书让我们只加密90天。如果你付钱的话,你可以得到两年多的时间,这是现在CA/Browser论坛设定的限制。没有被驱逐者,这将不会在未来进一步减少。

除非你买了证书,否则你不能把它钉起来。一旦你买了它,不管你是否使用它,它的一生都在滴答作响。因此,如果您持有证书,您可能最终会购买许多额外的证书,您可能会遇到问题,人们试图连接您的代码的旧版本。

另一方面,公钥没有任何生命周期限制。因此,如果您使用键钉,您可以生成一个键盘,把私钥放在您的金库和公共密钥在您的应用程序。几年后,你可以把私钥从你的金库里拿出来,得到一张证书并投入使用。

键钉扎的潜在缺点是没有撤销密钥。如果您的密钥被破坏,您可以撤销证书,但是具有友好CA的攻击者可能会使用被盗的密钥获得新的证书。OTOH证书撤销在一般情况下是相当脆弱的。

票数 4
EN

Security用户

发布于 2015-04-03 18:25:34

只是我两分钱中的一部分:

我可以想象,在证书被更新时(例如,在嵌入式系统或IoT应用程序中)很难更新应用程序的场景中使用公钥固定。否则,证书钉扎就更方便了。

如果公钥是以足够的熵生成的,则不太可能有两个相同的密钥。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/85209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档