Shared Secret,是公钥还是私钥?

信息安全 密码学 不对称
2021-08-17 08:00:17

阅读 Diffie-Hellman 非数学解释,我发现对私钥和接收者的公钥执行了一些数学运算,以在通信的两端生成“共享秘密”;两端的共享密钥相同。

我读到共享密钥在数学性质上是不对称的;所以公钥和私钥的概念也必须在这里应用。

所以我的问题是“共享秘密是公钥还是私钥”或中间的东西。

3个回答

如果是公开的,那就不能保密了……

密钥是“算法的参数,它集中保密” 这意味着密钥不仅是秘密的,而且通常没有其他秘密(算法是每个人都知道的)。

公钥是一个自相矛盾的术语,它是在发明非对称密码学时创造的。“真正的”密钥就是我们所说的私钥它是秘密参数,它允许执行只有密钥所有者才能执行的操作(例如,解密一段数据,计算签名......)。非对称密码学的神奇之处在于,任何人都可以使用与私钥相关联的数学对象来完成反向操作加密一段数据,验证签名......),并且可以在不泄露的情况下公开私钥. 你可以把公钥想象成一个人的脸:它是独特的,可以传达信息,但识别出这张脸并不能告诉你大脑里有什么。因此,严格意义上的“公钥”并不是真正的“密钥”;并且“私钥”可以简单地称为“密钥”或“密钥”,因为它就是这样。

然而,传统规定我们将非对称类型的密钥称为“私钥”(具有足够数学结构的密钥以具有公开面,可以在不危及私钥保密性的情况下公开),而只是用于对称加密和类似算法的比特串称为“密钥”(或“对称密钥”)。那是传统的,不是最终理性的;术语总是这样。

非对称密码学非常酷,但它不适合对千兆字节数据进行批量加密。为此,对称密码学要好得多,它带有“秘密密钥”(即没有公开面孔的密钥,它们是 100% 秘密的)。Diffie-Hellman 是一种非对称密钥交换算法,其中两方进行 DH 的数学运算并最终得到一个共享的秘密,即一个密钥:他们都知道它(因此“共享”),但没有其他人(因此“秘密” )。有了它,他们可以进行对称加密,这就是重点。

阅读 Thomas Pornin 的非常好的答案我认为还有一个额外的混乱来源可能会让你绊倒。

Diffie-Hellman密钥交换被称为公钥协议,因为它涉及一对值(实际上是两个这样的对:每一方一个),其中一个值保持秘密,另一个公开发送。

  • 首先,双方就一些公共参数(p,g)达成一致。
  • 然后每一方选择一个秘密值(a,b),并发送一个公开值(g^a mod p,g^b mod p)。原则上,秘密价值可以从公共价值中推导出来,但没有已知的方法可以用现实世界的计算能力来做到这一点。当这些值用于帮助交换更多数据时,可以很容易地从另一个计算出来但反之亦然的这种值对被称为公钥/私钥对。
  • Diffie-Hellman 的神奇之处在于,即使只交换了公共值,各方也设法独立计算出一个秘密值 g^{ab}(只有双方知道的值)。

很多时候,共享秘密值本身被用作基于对称加密(即使用共享密钥)的某个第二加密协议中的密钥,例如基于AES的加密协议。更准确地说,该秘密值的一部分被用作对称密码学的密钥,并且该部分被称为秘密密钥,因为它被用作第二协议的一部分。

共享密钥是对称的,因此这里没有公共和私有。相同的密钥用于加密和解密消息。这就是为什么它需要在发送给合作伙伴之前使用他的公钥进行加密。只有您的合作伙伴可以解密您的加密对称密钥,因为只有他拥有与他的公钥一起使用的私钥,因此您的秘密被安全地共享。

在以安全方式共享对称密钥后,您可以开始使用对称密钥在双方加密消息,并确保没有人可以解密它。理论上。