数字指纹如何防止假 public 密钥被传递?
How do digital fingerprints prevent fake public keys from being passed?
我正在阅读 public 密钥密码学。考虑 Bob 想要将他的 public 密钥传递给 Alice 以便她可以向他发送只有他可以解密的消息的场景。现在假设有一个中间人攻击,其中 John 拦截了从 Bob 传递给 Alice 的 public 密钥并将他(John)的 public 密钥传递给 Alice。 Alice 认为她收到了 Bob 的 public 密钥,用它加密一条消息,然后发回。约翰截获它并用他的私钥解密,从而截获爱丽丝发给鲍勃的消息。
article 我读到的解决方案是使用数字指纹:Bob 将他的指纹传递给 Alice,这样当他稍后将他的 public 密钥传递给她时,她可以使用 Bob 的指纹来验证public 密钥有效。
我想知道的:
如果 John 能够通过发送他自己的 public 密钥而不是 Bob 的密钥来冒充 Bob,为什么他不能用数字指纹做同样的事情? Bob 会将他的数字指纹发送给 Alice,John 会拦截并发送他自己的指纹,然后当 Bob 发送他的 public 密钥时,John 会再次发送他自己的指纹,Alice 会认为这是 Bob 的,因为她验证了它(John 的 public 钥匙,以为是 Bob 的)使用 John 的数字指纹,以为是 Bob 的。
我在这里错过了什么?数字指纹如何解决public密钥冒充攻击?
你是对的——它们本身并没有帮助。有帮助的是在 Alice 和 Bob 之间有多种沟通渠道。 John 需要能够拦截和更改所有通道以实施 MITM 攻击。更多的渠道使这变得更加困难。因此,通过不同的(或多个不同的)额外通道发送指纹会给约翰可能错过的额外 "check",从而揭示他的攻击。
简短回答:如果 Bob 的证书是由证书颁发机构签署,则中间人攻击不可能(加利福尼亚州)。这就是现实中的情况,例如,如果您访问一个网站。
长答案:
Alice 应该有一个受信任的根 CA 列表(例如由网络浏览器或操作系统提供)。
Bob 应该有一个电子邮件地址或域来唯一标识他。
此电子邮件地址或域名已嵌入到他的证书中。
现在当 Alice 收到 public 证书时,她可以通过检查电子邮件地址或域名来检查它是否属于 Bob。她还可以检查该证书是否受到她的根 CA 之一的信任。如果证书来自 John,她会发现它不受信任,并且会检测到中间人攻击。
请注意,实际上也有中间 CA。
我的回答也不包括自签名证书。
你是对的,如果 Alice 收到了一个(消息,public 密钥,签名)三元组——并且没有其他信息——那么消息就可以被欺骗。
如果 Bob 和 Alice 过去见过面并交换了 public 密钥,那么 Alice 会知道随消息发送的密钥(现在不一定需要随消息发送)是不是 Bob 的。
或者,Bob 可以得到像 Notary Public 这样的东西来断言他们知道这个密钥确实属于 Bob。现在是爱丽丝是否愿意信任那个公证人的问题。在 PKI(Public 密钥基础设施)中,最常见的表示方式是 X.509 Public 密钥证书(“数字证书”)。公证人的角色由颁发证书的机构提供。该 CA 可能已被另一个 CA“公证”,Alice(的 OS)已经被告知该 CA 是可信的,只能信任可信赖的 CA。
我正在阅读 public 密钥密码学。考虑 Bob 想要将他的 public 密钥传递给 Alice 以便她可以向他发送只有他可以解密的消息的场景。现在假设有一个中间人攻击,其中 John 拦截了从 Bob 传递给 Alice 的 public 密钥并将他(John)的 public 密钥传递给 Alice。 Alice 认为她收到了 Bob 的 public 密钥,用它加密一条消息,然后发回。约翰截获它并用他的私钥解密,从而截获爱丽丝发给鲍勃的消息。 article 我读到的解决方案是使用数字指纹:Bob 将他的指纹传递给 Alice,这样当他稍后将他的 public 密钥传递给她时,她可以使用 Bob 的指纹来验证public 密钥有效。
我想知道的:
如果 John 能够通过发送他自己的 public 密钥而不是 Bob 的密钥来冒充 Bob,为什么他不能用数字指纹做同样的事情? Bob 会将他的数字指纹发送给 Alice,John 会拦截并发送他自己的指纹,然后当 Bob 发送他的 public 密钥时,John 会再次发送他自己的指纹,Alice 会认为这是 Bob 的,因为她验证了它(John 的 public 钥匙,以为是 Bob 的)使用 John 的数字指纹,以为是 Bob 的。
我在这里错过了什么?数字指纹如何解决public密钥冒充攻击?
你是对的——它们本身并没有帮助。有帮助的是在 Alice 和 Bob 之间有多种沟通渠道。 John 需要能够拦截和更改所有通道以实施 MITM 攻击。更多的渠道使这变得更加困难。因此,通过不同的(或多个不同的)额外通道发送指纹会给约翰可能错过的额外 "check",从而揭示他的攻击。
简短回答:如果 Bob 的证书是由证书颁发机构签署,则中间人攻击不可能(加利福尼亚州)。这就是现实中的情况,例如,如果您访问一个网站。
长答案: Alice 应该有一个受信任的根 CA 列表(例如由网络浏览器或操作系统提供)。
Bob 应该有一个电子邮件地址或域来唯一标识他。 此电子邮件地址或域名已嵌入到他的证书中。
现在当 Alice 收到 public 证书时,她可以通过检查电子邮件地址或域名来检查它是否属于 Bob。她还可以检查该证书是否受到她的根 CA 之一的信任。如果证书来自 John,她会发现它不受信任,并且会检测到中间人攻击。
请注意,实际上也有中间 CA。
我的回答也不包括自签名证书。
你是对的,如果 Alice 收到了一个(消息,public 密钥,签名)三元组——并且没有其他信息——那么消息就可以被欺骗。
如果 Bob 和 Alice 过去见过面并交换了 public 密钥,那么 Alice 会知道随消息发送的密钥(现在不一定需要随消息发送)是不是 Bob 的。
或者,Bob 可以得到像 Notary Public 这样的东西来断言他们知道这个密钥确实属于 Bob。现在是爱丽丝是否愿意信任那个公证人的问题。在 PKI(Public 密钥基础设施)中,最常见的表示方式是 X.509 Public 密钥证书(“数字证书”)。公证人的角色由颁发证书的机构提供。该 CA 可能已被另一个 CA“公证”,Alice(的 OS)已经被告知该 CA 是可信的,只能信任可信赖的 CA。