首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL和Diffie-Hellman

SSL和Diffie-Hellman
EN

Stack Overflow用户
提问于 2013-05-08 04:22:10
回答 3查看 846关注 0票数 6

因此,我正在阅读this,并对Remus的回答感到惊讶。因为我以为这完全是另一回事。

所以,关于我的问题。为什么程序使用diffie-hellman密钥交换来确定共享密钥来加密/解密消息(通常)不如SSL安全?

编辑:我知道SSL使用数字证书,但是因为我的程序只与自己(客户端-服务器)通信,所以这并不重要,对吧?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-08 04:36:13

Remus post主要告诫不要创建自己的加密协议(因为你可能会犯一些致命的错误),而不是使用现有的解决方案SSL。

您可以仅使用Diffie-Hellman作为非对称加密以及一些对称加密来编写安全网络协议。我最喜欢的安全网络协议就是这样工作的。使用DH的程序本身并不比SSL弱,而是一个由非密码专家设计协议的程序。

但是,如果您设计自己的协议,您将需要学习一些密码才能正确完成它。你可能也需要对你的设计和代码进行专家审查,以防你在哪里犯了错误。但是,获得评论并不容易,除非你的产品足够出名,或者你付钱给他们。

SSL握手主要做两件事:

  1. 它使用证书来验证服务器是否有权代表您要与之通信的域。

在最常见的情况下,证书颁发机构保证某个密钥对的所有者是某个域的合法所有者(这采取证书的形式)。此部分仅与最弱的公认CA一样安全。

如果你只需要与一台服务器通信,你可以硬编码服务器的指纹,去掉整个CA和PKI部分。这种方法类似于您通常处理SSH指纹的方式。

  • 它会生成会话密钥

强SSL套件使用证书对服务器进行身份验证,并使用DH生成会话密钥。较弱的套件对两者都使用证书。

朴素的基于DH的协议可能会忘记验证服务器,从而允许主动攻击者MitM连接。您需要以某种方式对服务器进行身份验证,即使只是通过在客户端中硬编码服务器的公钥。

票数 4
EN

Stack Overflow用户

发布于 2013-05-08 04:54:32

Remus并没有对特定加密算法的优缺点发表评论。

相反,他是在评论需要避免编写自己的加密协议。我同意他的观点,100%。

编写加密协议非常困难,而且充满了危险。任何数量的异常细微的bug都可以很容易地潜入并使您的整个系统不安全。即使是专家也经常犯错误,需要在未来的日期补丁。

这也是平台成熟的标志,使用WCF其他平台组件来使用库存工具是如此容易。

票数 2
EN

Stack Overflow用户

发布于 2013-05-08 04:31:26

SSL使用数字证书来防止中间人攻击。如果黑客不仅可以截获消息,而且可以修改消息,那么基于DH加密将失败,因为您的程序将与黑客建立密钥,而黑客将与服务器建立密钥。您可以使用RSA密钥对来创建密钥-客户端的公钥,服务器的私钥。因为黑客不知道私钥,所以他无法解密私钥。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16427894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档