【问题标题】:How to make sure the public key's authenticity如何确定公钥的真实性
【发布时间】:2020-06-01 05:54:42
【问题描述】:
我是非对称密码学(公私钥)的新手,有一个基本的困惑:
我知道,一旦一个人向网络广播了他的公钥,使用公钥-私钥范式,以下通信就会变得安全。
但是,您如何确保收到的公钥一开始就有效?例如,如果 Bob 想与 Alice 建立安全通信,而 Eve 在中间窃听,那么如何确保 Bob 收到 Alice 的真实公钥,而不是 Eve 伪造的假公钥?
谢谢!
干杯,
M.
【问题讨论】:
标签:
security
cryptography
private
public
asymmetric
【解决方案1】:
公钥基础设施 (PKI)。
您有一个第三方受信任的权威机构向不同的人/公司颁发证书。您不仅信任人,而且信任证书颁发机构 (CA)。
证书颁发机构必须确保并验证购买证书的人员/公司确实是其声称的身份。
验证是通过使用私钥(来自此 CA)签署证书来完成的,然后连接中的两个对等方将检查证书是否由受信任的 CA 签署并验证连接。
在您的示例中,Bob 将在 Alice 信任的 CA 中签署证书。
如果 Eve 试图在这个 CA 中签署证书,声称自己是 Bob,这将被拒绝,因为 CA 将验证其真实性。尝试在这里购买客户端证书看看:https://www.verisign.com/
另一个例子是你的浏览器,它只显示一个受信任的连接是通过 StackOverflow 完成的,因为它信任颁发 StackOverflow.com 证书的Let´s Encrypt。
每个浏览器都有一些已被信任的默认 CA。
【解决方案2】:
公钥将由另一个权威机构签署。检查这个权威是否真实和有名。如果未知,请尝试进一步检查其签名权限,看看它是否知名。
信任此公钥的概念是基于您对签署此证书的权威的固有信任。签名在数学上是可验证的,因此除非实现或数学算法本身存在问题,否则它们不能被伪造。
因此,简而言之,尝试查看证书的签名机构,以及它是否是您信任的。
【解决方案3】:
证书颁发机构 (CA) 或信任网络 (WOT) 模型将帮助您确保公钥的真实性。
证书颁发机构是一个中心化实体,它颁发数字证书,该证书由证书的指定主体证明公钥的所有权。它充当受信任的第 3 方,受到证书主体(所有者)和依赖证书的一方的信任。
信任网络是一种去中心化信任模型,用于建立公钥与其所有者之间绑定的真实性。在信任网络中,每个人都是一种 CA。每个用户都为他想要的任何人签署证书。它依赖于普通用户之间的信任价值或信任关系。
Web Of Trust 模型的运作方式是,如果我们验证 A 的证书实际上是给 A 的,并且我们验证 B 的证书来自 B,A 和 B 都可以验证 C 实际上是 C。现在,当 C 想要交互时与我们一起,他可以提供他的证书,该证书受到 A 和 B 的信任。由于我们信任 A 和 B ,我们可以得出结论,C 实际上是 C 的可能性很大。这是有效的,因为我们预计 A 和 B 不是两人一起工作,C 必须让他们都相信他没事。