“密钥签名”到底是什么意思?
例如,我有一个私人/公共 GPG 密钥,以便人们可以向我发送加密的电子邮件,因为他们知道我的公共密钥。但是:在这个例子中,密钥签名是什么意思?例如:“第三人签署我的公钥(如何?)。”
最重要的是:其他人在哪里可以看到我的密钥是由其他人签名的?
“密钥签名”到底是什么意思?
例如,我有一个私人/公共 GPG 密钥,以便人们可以向我发送加密的电子邮件,因为他们知道我的公共密钥。但是:在这个例子中,密钥签名是什么意思?例如:“第三人签署我的公钥(如何?)。”
最重要的是:其他人在哪里可以看到我的密钥是由其他人签名的?
好的,正如你所说,你有一个私钥/公钥对,所以我可以给你发送加密的电子邮件,因为我知道你的公钥。
但是如何才能知道你的公钥?显然,因为你告诉我它是什么,并且如果你通过安全渠道告诉我——例如,你把它写在一张纸上并私下交给我——那很好。
但是,如果您通过不安全的渠道通过电子邮件将其发送给我,我怎么知道 Eve 没有拦截您的电子邮件并用她的密钥替换您的密钥?然后 Eve 可以阅读我加密的电子邮件,因为我已经用她的密钥加密了它。
这是一个真正的问题,因为如果我们只将 Internet 作为我们的通信渠道,那么根据定义,用于交换密钥是不安全的。不可能,因为我们还没有交换密钥。
解决这个问题的一种方法是让我们都信任的第三方参与进来。我们就叫他鲍勃吧。
Bob 有很多安全的渠道。他有一个给我,所以我知道他的公钥。他有一个给你,Bob 知道你的公钥。
Bob 可以做的是获取你的公钥,并用他的私钥加密消息“Lance 的公钥是 18348273847473436”。然后,他将加密的消息提供给您。Bob 已经签署了您的密钥。
现在,如果您想将您的公钥发送给我,您只需通过不安全的通道将签名密钥发送给我。我知道它来自你,而不是 Eve,因为我可以用 Bob 的公钥解密它,而且我信任 Bob。
所以,我们把“Graham 和 Lance 之间需要一个安全通道”的问题变成了“Graham 需要一个通往 Bob 的安全通道”和“Lance 需要一个通往 Bob 的安全通道”的问题。
听起来我们并没有让事情变得更好,直到您意识到现在不必担心为 DW、Lucas、Schroeder、Thomas、Rory 和 Graham 以及 Internet 上的其他所有人安排安全通道,您只需要担心一次获得 Bob 的安全通道。
在 PGP 中,密钥签名是指通常称为 PGP(公共)密钥的东西不仅仅是公共密钥,而是证书。
公钥证书是公钥、标识符(可能还有其他属性)之间的签名组合。签署此文件的人有效地断言了公钥和标识符之间的绑定的真实性,就像护照签发机构断言照片和护照中的姓名之间的绑定一样。
X.509 证书是一种证书,最常用于 SSL/TLS 通信。它们只能有一个签名,这导致了一个分层的公钥基础设施。
相反,PGP 证书可以有多个签名。许多人实际上可以保证公钥和 PGP 证书中提到的身份之间的绑定。这些多重签名允许构建信任网络模型,因此您不必依赖单个层次结构来建立对证书的信任。
当您签署 PGP 密钥(更准确地说,是密钥及其关联的标识符)时,您将您的标识符和签名放入为此提供担保的人员列表中。与此相关有一定的责任,因为您需要通过其他方式(例如通过查看官方形式的 ID)相信此关联是正确的。
为了让其他人看到您的密钥是由其他人签名的,您可以自己给它更新版本(不方便)或将您的密钥发布到密钥分发服务器。愿意使用您的密钥的人偶尔会获取带有新签名的更新版本(或者当他们需要使用和验证它时)。
签署密钥实际上是一种表示您相信密钥是正确的并且与特定个人或身份相关联的方式(感谢@Bruno)。然后,信任您的人可能会根据您已签署的事实选择信任它。
签名意味着您对密钥证书进行数字签名。您不需要它,但您会看到例如 PGP,您的密钥环上的每个密钥都有一个与之关联的信任值。签署密钥可以让您将信任指标提高。
例如,对于 PGP,当您签署了密钥后,您可以将其上传到他们的 pgp 密钥库之一,以便其他人可以看到它。或者您在密钥签署方或亲自交换密钥。
用私钥加密公钥称为“签名密钥”