因此,我正在阅读this,并对Remus的回答感到惊讶。因为我以为这完全是另一回事。
所以,关于我的问题。为什么程序使用diffie-hellman密钥交换来确定共享密钥来加密/解密消息(通常)不如SSL安全?
编辑:我知道SSL使用数字证书,但是因为我的程序只与自己(客户端-服务器)通信,所以这并不重要,对吧?
发布于 2013-05-08 04:36:13
Remus post主要告诫不要创建自己的加密协议(因为你可能会犯一些致命的错误),而不是使用现有的解决方案SSL。
您可以仅使用Diffie-Hellman作为非对称加密以及一些对称加密来编写安全网络协议。我最喜欢的安全网络协议就是这样工作的。使用DH的程序本身并不比SSL弱,而是一个由非密码专家设计协议的程序。
但是,如果您设计自己的协议,您将需要学习一些密码才能正确完成它。你可能也需要对你的设计和代码进行专家审查,以防你在哪里犯了错误。但是,获得评论并不容易,除非你的产品足够出名,或者你付钱给他们。
SSL握手主要做两件事:
在最常见的情况下,证书颁发机构保证某个密钥对的所有者是某个域的合法所有者(这采取证书的形式)。此部分仅与最弱的公认CA一样安全。
如果你只需要与一台服务器通信,你可以硬编码服务器的指纹,去掉整个CA和PKI部分。这种方法类似于您通常处理SSH指纹的方式。
强SSL套件使用证书对服务器进行身份验证,并使用DH生成会话密钥。较弱的套件对两者都使用证书。
朴素的基于DH的协议可能会忘记验证服务器,从而允许主动攻击者MitM连接。您需要以某种方式对服务器进行身份验证,即使只是通过在客户端中硬编码服务器的公钥。
发布于 2013-05-08 04:54:32
Remus并没有对特定加密算法的优缺点发表评论。
相反,他是在评论需要避免编写自己的加密协议。我同意他的观点,100%。
编写加密协议非常困难,而且充满了危险。任何数量的异常细微的bug都可以很容易地潜入并使您的整个系统不安全。即使是专家也经常犯错误,需要在未来的日期补丁。
这也是平台成熟的标志,使用WCF其他平台组件来使用库存工具是如此容易。
发布于 2013-05-08 04:31:26
SSL使用数字证书来防止中间人攻击。如果黑客不仅可以截获消息,而且可以修改消息,那么基于DH加密将失败,因为您的程序将与黑客建立密钥,而黑客将与服务器建立密钥。您可以使用RSA密钥对来创建密钥-客户端的公钥,服务器的私钥。因为黑客不知道私钥,所以他无法解密私钥。
https://stackoverflow.com/questions/16427894
复制相似问题