这是验证公钥的安全方法吗?

信息安全 密钥生成 密钥交换
2021-08-27 03:29:16

我想验证这样的公钥:

  1. Alice 生成用于加密的公钥/私钥对
  2. Alice 生成用于签名的公钥/私钥对
  3. 爱丽丝使用她的私人签名密钥签署一个随机的 4 字母单词 + 公开加密密钥
  4. Alice 将她的公钥(两者)和签名发送给 Bob
  5. Alice 使用安全可信的方式将 4 个字母的单词发送给 Bob
  6. Bob 以上述方式通过验证签名是用 4 个字母的单词创建的来验证 Alice 的公共加密密钥。

这是我不确定的:

  1. 4个字母的单词够吗?
  2. 当原始消息是秘密时,验证签名是否验证公钥是原始密钥并且没有被“中间人”更改?

背景:我想存档保存各方之间的公钥交换。但是我没有可以依赖的受信任的第三方权威。

但相反,两方将在开始时亲自见面。那一刻,他们完全信任对方。一方可以给另一方一个秘密(例如在一张纸上)。

当然理论上对方可以有所回报。但出于用户友好的原因,我想避免这种情况。

当然,公钥的指纹可能是秘密。但同样,为了使其用户友好,我想让秘密尽可能短。

1个回答

1. 4个字母的单词够吗?

这个词有多长并不重要,只要它可以被认为是独一无二的并且是保密的。攻击者用大量 4 个字母的随机序列签署他的公钥,其中一个包含正确的序列不太可能成功,因为随机组合的数量使攻击相当明显。

2.当原始消息是秘密时,验证签名是否验证公钥是原始密钥并且没有被“中间人”更改?

如果签名有效,您肯定知道(签名对)私钥的所有者也知道秘密的 4 字母序列给您一个公钥,仅此而已。它不检查里面的密钥是否是一个有效的证书,如果 4 个字母序列是正确的或者这是正确的公钥(签名密钥对的所有者可以签署任何他想要的)。

现在让我们假设您在第 4 步有一个中间人(MITM),此时 Alice 将公钥和签名的 4 个字母单词转移给 Bob。由于没有 CA,我们假设 Bob 无法区分 Alice 的证书和 MITM 的证书,MITM 可以简单地用他自己的公钥替换公钥,读取 4 个字母的单词并用他自己的密钥签署同一个单词也。签名字很容易访问,因此在您发送它的那一刻,MITM 可以简单地读取它并使用它来替换所有未来的数据并由 Bob 进行身份验证。因此,这不是验证公钥的安全方法。

可能的解决方案

  • 在第 5 步交换指纹的哈希(sha1 fe)。如果 Bob 只记住哈希的开头和结尾几个字母,则仍然可以认为足够安全,因为 MITM 不可能创建指纹哈希开始的证书并以相同的几个字母结尾。
  • 使用对称加密。将您的公共证书放入受密码保护的 (zip fe) 存档并交换此密码。

顺便说一句,您不需要两个密钥对,您可以使用相同的密钥进行签名和加密。