Ken*_* R. 5 gpg pgp cryptography public-key
我试图围绕公钥密码术如何真正以安全的方式工作。
据我所知,您可以访问 example.com 并下载他们的 PGP/GPG 公钥并将其添加到您的密钥环中。然后他们向您发送一个用他们的私钥签名或用您的公钥加密的文本文件(或诸如此类);您可以验证其真实性和/或解密它。
如果攻击者修改了传输给您的网站并以他们的名义签署了他们自己的假密钥,然后您将其放入您的密钥环中怎么办?然后您继续验证和解密被篡改的文件,假设它是有效的。
我假设我在谈论中间人对整个网络流量的篡改,或类似的事情。我只是不确定“签名”如何防止密钥和数据在传输过程中被伪造。
您描述的场景需要信任网络中的多次失败:
攻击者必须破坏密钥服务器并在那里放置一个伪造的公钥副本。
大概如果您足够偏执以使用 PGP,您就会让其他人签署您的密钥,因此攻击者必须让这些人签署假密钥(或污染整个密钥链)。
其他用户将不得不接受泄露的公钥才能使用
。真正的偏执狂只会从他们的所有者手中拿走钥匙。常规的偏执狂(像我一样)只在签署密钥时坚持这一点。
攻击者必须破坏数据流(解密它 - 简单的部分,因为它是用他们被破坏的密钥加密的),修改它,重新加密它并用发件人的私钥签名
大概如果您足够偏执以使用 PGP,您会坚持要求您收到所有已签名的内容。
签名是用发件人的私钥制作的,所以要么攻击者泄露了发件人的密钥,要么让你接受他们公钥的泄露版本,你将用它来检查假签名。
关于这个主题有一本很棒的书——应用密码学——它解释了更多关于这个系统崩溃所需的妥协类型。
一般来说,您需要先验证密钥,然后才能信任它们。
在您概述的情况下,这意味着仅信任通过安全通道(例如,经过验证的 SSL)或以您信任的其他方式(通过不同方式传递的指纹哈希)提供给您的密钥验证,例如)。