4

似乎有很多关于非对称公钥加密的炒作。RSA、PGP...等。您有一组两个密钥并分发一个,这样要么只有您可以加密消息,要么只有您可以解密消息。一种方法提供了一种验证发件人的方法,而另一种方法提供了一种保护消息的方法。(如果我错了,请随时纠正我。)

现在,我也一直在阅读 Diffie-Hellman 类的密钥交换。这似乎更安全,因为您可以验证发件人并使用密钥保护消息,因为每个“对话”都需要计算的“共享密钥”。

所以,我的问题是,使用 Diffie-Hellman 而不是更标准的公钥加密形式是否有任何主要缺点(除了设置要求)?

或者,说得更直白一点。如果 Diffie-Hellman 更有意义,为什么它不是标准的加密形式?

4

7 回答 7

5

Diffie-Hellman 密钥协议提供了一种建立公共密钥的方法,这实际上是被动对手无法确定的,即只听通信的人。

但是,基本 DH 容易受到中间人攻击。换句话说,您可以建立一个共享密钥,但在活跃的对手面前,您不知道与共享密钥。

这就是公钥密码学的位置。当您拥有某人的真正公钥时,您可以确定加密数据只能由该人读取。

确保给定的公钥确实属于某人是一个单独的问题,并且可以通过例如Public Key Infrastructure来解决。

于 2010-07-02T19:17:31.480 回答
3

对称加密比 PKI 快几个数量级/计算量小。此外,密钥大小也存在差异。由于加密/解密不仅必须发生在 CPU 功率和 RAM 没有问题的服务器端,在客户端,您的移动设备可能会受到更多限制。

于 2010-07-02T19:04:10.873 回答
3

对称和非对称密码是两个完全不同的东西。你不能直接比较它们。

对称密码用于加密具有共享秘密的消息。这些是 DES、AES、河豚等算法。

非对称密码处理另一个问题,即密钥共享和签名。通过能够拥有公钥,可以通过无法修改的渠道分发该密钥。其他人可以读取密钥;只要他们不能改变它就没有问题。

如果其他人可以更改消息(这通常是任何地方的情况),那么它就会变得更加复杂。然后你需要使用数字签名。基本上有一个中央机构签署公钥(证书也是公钥)。每个人都预先安装了证书颁发机构的公钥(通常与操作系统捆绑在一起),因此可以通过使用颁发机构的公钥检查签名来验证证书的真实性。这被称为 PKI(公钥基础设施),它被广泛使用。最突出的例子是 SSL。

阅读它。

于 2010-07-02T19:41:43.137 回答
2

正如 Krystian 所说,Diffie-Hellman 允许您建立安全连接,但不允许您验证该安全连接与谁相关。

但是,DH 可以与 RSA 等公钥算法结合使用。这允许您验证对方的身份(使用 RSA 签名),并且 Diffie-Hellman 密钥交换为该方带来了一个称为完美前向保密的属性。这意味着,如果你我今天谈话,明年有人窃取了你的 RSA 私钥,他们仍然无法回去解密今天的谈话。普通的 RSA 密钥交换没有此属性。

于 2010-07-05T00:25:02.267 回答
0

我可能错了,但维基百科上描述的算法在我看来就像一个公钥加密。

双方选择一个秘密(私钥)并共享另一个与私钥相关的密钥(这是公钥)。

只是为了提供一个完整的图片:在现实世界中,公钥加密用于交换秘密,然后使用对称算法加密主要通信,这比 PK 加密快得多

于 2010-07-02T19:06:41.520 回答
0

使用 Diffie-Hellman 通信方法必须注意的主要问题是它容易受到中间人攻击。

这对于 RSA 是不可能的,因为只有创建公钥的人才能解密消息,因此您可以完全确信正确的人正在阅读消息。

Diffie Hellman 对于与某人进行安全双向通信非常有用,只要您不太关心某人是谁。

于 2010-07-02T19:18:19.187 回答
0

RSA 的主要问题是速度很慢。事实上,PGP 的早期版本所做的(我不确定现代版本做了什么,可能它没有改变)是使用 Diffie-Hellman 密钥交换将密钥分配给一些快速对称密码,然后将其用于消息的主体。

于 2010-07-02T19:25:50.683 回答