Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 最有效的公钥加密方法_Security_Language Agnostic_Encryption_Performance_Public Key - Fatal编程技术网

Security 最有效的公钥加密方法

Security 最有效的公钥加密方法,security,language-agnostic,encryption,performance,public-key,Security,Language Agnostic,Encryption,Performance,Public Key,关于非对称公钥加密似乎有很多炒作。RSA,PGP。。。等等。您有一组两个密钥并分发一个密钥,这样,要么只有您可以加密消息,要么只有您可以解密消息。一种方法提供了验证发送者的方法,而另一种方法提供了保护消息的方法。(如果我错了,请随时纠正。) 现在,我也在读关于Diffie Hellman密钥交换类的文章。这似乎更安全,因为您可以验证发件人并使用密钥保护消息,因为每个“对话”都需要计算出的“共享密钥” 所以,我的问题是,使用Diffie Hellman比使用更标准形式的公钥加密有什么主要缺点(除了

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

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

所以,我的问题是,使用Diffie Hellman比使用更标准形式的公钥加密有什么主要缺点(除了设置要求之外)


或者更直截了当地说。如果Diffie Hellman更有意义,为什么它不是加密的标准形式?

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

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

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

只是为了提供一个比较完整的画面:
在现实算法中,公钥加密用于交换秘密,然后使用对称算法对主通信进行加密,PK加密

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

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

这就是公钥密码术的地位所在。当您拥有某人的真实公钥时,您可以确保加密数据只能由此人读取


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

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

这在RSA中是不可能的,因为只有创建公钥的人才能解密消息,因此您可以完全放心地说,是正确的人在阅读消息


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

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

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

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

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

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


请仔细阅读。

正如Krystian所说,Diffie Hellman允许您建立安全连接,但不允许您验证与谁建立了安全连接


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

RSA也易受MITM攻击。如果您不认识与您通信的人(如他的公钥),则无法验证您是否与正确的人交谈。攻击者只需发送他的公钥,然后假装是您要与之交谈的人。这是千真万确的。也许更好的说法是,RSA保证只有创建公钥的人才能读取消息。您得到答案仅仅是因为描述性。但是,我给了Krystian一个同样有效的答案。唉。得到两个好答案总是让人很难做出决定。