数字指纹如何防止伪造公钥被传递?



我正在阅读有关公钥加密的信息。考虑一下这样的场景:Bob 希望将他的公钥传递给 Alice,以便她可以向他发送只有他才能解密的消息。现在假设有一个中间人攻击,其中约翰拦截了从鲍勃传递给爱丽丝的公钥,并将他(约翰的(公钥传递给爱丽丝。爱丽丝认为她收到了鲍勃的公钥,用它加密了一条消息,然后将其发回。约翰拦截它并用他的私钥解密它,从而拦截了爱丽丝给鲍勃的消息。 我正在阅读的文章说解决方案是使用数字指纹:鲍勃将他的指纹传递给爱丽丝,以便他稍后将公钥传递给她时,她可以使用鲍勃的指纹来验证公钥是否有效。

我想知道的:

如果约翰能够通过发送自己的公钥而不是鲍勃的公钥来冒充鲍勃,为什么他不能对数字指纹做同样的事情?鲍勃会把他的数字指纹发给爱丽丝,约翰会拦截并发送自己的指纹,然后当鲍勃发送他的公钥时,约翰会再次发送他自己的,爱丽丝会认为这是鲍勃的,因为她用约翰的数字指纹验证了它(约翰的公钥,以为是鲍勃的(,以为是鲍勃的。

我在这里错过了什么?数字指纹如何解决公钥冒充攻击?

简短回答:如果 Bob 的证书由证书颁发机构 (CA(签名,则不可能进行中间人攻击。例如,如果您访问网站,现实中就是这种情况。

长答案: Alice 应该有一个受信任的根 CA 列表(例如,由 Web 浏览器或操作系统提供(。

Bob 应该有一个唯一标识他的电子邮件地址或域。 此电子邮件地址或域名嵌入到他的证书中。

现在,当 Alice 收到公共证书时,她可以通过检查电子邮件地址或域名来检查它是否属于 Bob。她还可以检查证书是否受其根 CA 之一的信任。如果证书来自 John,她将看到它不受信任,并且将检测到中间人攻击。

请注意,实际上也有中间CA。

我的回答也不涵盖自签名证书。

你是对的——他们本身根本没有帮助。 有帮助的是爱丽丝和鲍勃之间有多个沟通渠道。 John 需要能够拦截和更改所有通道以实施 MITM 攻击。 更多的渠道使这更加困难。 因此,通过不同(或多个不同(的附加渠道发送指纹会给约翰可能会错过的额外"检查",从而揭示他的攻击。

您是正确的,如果 Alice 收到(消息、公钥、签名(三元组 - 并且没有其他信息 - 则该消息可能是欺骗的。

如果 Bob 和 Alice 过去亲自见面并交换了公钥,那么 Alice 就会知道随消息一起发送的密钥(现在不一定需要随消息一起发送(不是来自 Bob。

或者,鲍勃可以得到类似公证人的东西来断言他们知道这个密钥确实属于鲍勃。现在的问题是爱丽丝是否愿意信任那个公证人。在 PKI(公钥基础结构(中,最常见的表示方式是 X.509 公钥证书("数字证书"(。公证人的角色由颁发证书颁发机构担任。该CA可能被另一个CA"公证",Alice(的操作系统(已经被告知只信任值得信赖的CA。

最新更新