信任链中其他证书的已过期工作的叶子证书的公钥固定吗?

问题描述 投票:1回答:1

场景:

  • 我在我的Android应用程序中固定了3个证书的公钥引脚SHA:根CA,中级CA和叶CA。

我所了解的(如果我还是错了,请纠正我):

  • 使用公钥固定,因此我们可以检查我们服务器发布的证书的公钥是否已更改。 source

  • 如果证书的公钥SHA是我们在应用程序中“固定”的证书,则该证书有效。要检查公共密钥,首先它将使用公共密钥解密签名,并确保该签名的数据中也包含相同的公共密钥。

  • 当Leaf证书过期但与有效的“固定”公钥SHA对应时,将检查证书链以查看它们是否有效,如果其中一个有效,则接受证书并进行连接建立。

  • 当我获得的Leaf证书具有无效的公共密钥但没有过期时,则意味着我从可能是攻击者的人那里获得了错误的证书。

问题:

  • 如果攻击者破坏了客户端并安装了自己的受信任CA,然后通过提供由CA签名的伪造证书,客户端上的MITM会截获所有通信,则公钥固定对安全性有任何帮助吗?已安装在客户端设备上。

  • 直接证书固定与VS公钥固定如何在这里有所不同?

  • 在上述问题中使用自签名证书的含义是什么。

请帮助我尽可能详细地了解这一点...

ssl https ssl-certificate tls1.2 starttls
1个回答
0
投票

[Leaf证书已过期但与有效的“固定”公钥SHA对应,将检查证书链以查看它们是否有效,如果其中一个有效,则接受证书并建立连接。

没有不接受过期的证书。固定不会覆盖TLS的基本原理,但会对其进行增强以减少接受的证书数量。

如果攻击者破坏了客户端并安装了他自己的受信任的CA,然后在客户端上执行MITM,以通过出示由自己安装的CA签名的伪造证书来对所有通信进行拦截,那么公钥固定对安全性是否有任何帮助?在客户端设备上。

对于浏览器,手动安装的受信任CA不受固定要求。对我来说,这是固定的根本缺陷。坦白地说,一旦您有权在计算机上安装根证书,那么游戏就结束了。无论如何,此例外对于使病毒扫描程序,公司代理和其他拦截代理起作用是必不可少的-否则,虽然隐藏在我的代理中的一个削弱了HPKP(HTTP公钥锁定)功能,但无法访问任何被锁定的站点。 >

对于应用程序(您的用例)固定可能有助于防止MITM攻击。

直接证书固定与公共密钥固定如何在这里有所不同?

不明白吗?当您固定直接证书时,基本上就固定了该证书的公钥(实际上也链接了证书所链接的私钥的SHA)。

这意味着您可以从相同的私钥重新发行证书(恕我直言,这是不好的做法,而不必更新引脚。)>

您还可以从中间甚至根公共密钥固定。这意味着您可以让CA重新颁发证书,而不必再次更新图钉。那当然可以将您绑定到该CA,但至少不允许某些随机CA为您的站点颁发证书。

在上述问题中使用自签名证书的含义是什么。

对于浏览器,固定基本上不能与自签名证书一起使用。因为它无法被浏览器识别(因此无法进行固定),或者是通过手动安装发行者来信任它-在此情况下,根据以上几点,固定将被忽略。

对于应用程序(针对您的用例),我知道可以固定自签名证书。尽管这取决于您使用的HTTP库以及如何配置。

固定证书本身的缺点(如果是单个泄漏自签名证书,则可能是这样做的唯一方法)是,重新发行证书会使旧的PIN无效(除非您重复使用相同的私有证书密钥,但是如果重新发布原因是由于密钥泄露而导致的,则可能无法执行此操作)。因此,如果您的应用程序进行了HTTP调用以检查是否有新版本等,则如果重新颁发证书并且尚未下载新版本的应用程序,则该调用可能会失败。

几乎所有的浏览器都已弃用HPKP,因为与收益相比,HPKP的风险很高,而且由于钉扎而导致破损的情况很多。参见维基百科:https://en.m.wikipedia.org/wiki/HTTP_Public_Key_Pinning。通过Certificate Transparency监视错误签发的证书被认为是更安全的选择。

固定在移动应用程序领域中似乎仍然很流行,因为您可以更好地控制应用程序,并在出现问题时可以重新发布新版本。但是它仍然是复杂且有风险的。

© www.soinside.com 2019 - 2024. All rights reserved.