【问题标题】:Diffie-Hellman Parameters and safetyDiffie-Hellman 参数和安全性
【发布时间】:2017-11-15 16:34:46
【问题描述】:
我想为 VOIP 应用创建自己的安全连接。
现在我正在研究似乎比加密/解密更棘手的密钥交换。
在实践中是否有比 Diffie-Hellman 更好的方法?
我了解 Diffie-Hellman 的概念,但我认为它需要正确的值才能安全,因为对于自然数,它很容易被猜到。如何使用 python 获取这些值,它们是什么,是否真的可以避免密钥猜测?
请帮助我提供一些背景信息/启发性。
【问题讨论】:
标签:
python
diffie-hellman
【解决方案1】:
Diffie-Hellman 密钥交换,也称为指数密钥交换,是一种数字加密方法,它使用提升到特定幂的数字在从未直接传输的组件的基础上生成解密密钥,从而使任务在数学上成为密码破译者。
Diffie-Hellman 的基本或“纯”形式最严重的限制是缺乏身份验证。单独使用 Diffie-Hellman 的通信很容易受到中间人攻击。理想情况下,Diffie-Hellman 应该与公认的身份验证方法(例如数字签名)结合使用,以通过公共通信媒体验证用户的身份。
更多关于该主题的信息如下:
1 link 1
2link 2
3link 3
【解决方案2】:
DH 可以用于此目的,只需确保使用 2048 位或更多位密钥。
但是,对于 VoIP,标准是带有 SRTP/zrtp 的 TLS,因此如果您实施这些标准会更好。使用 DH,您会失去兼容性,并且会引入很多并发症。另请注意,DH 仅用于密钥交换,因此加密本身也需要一些东西。使用 TLS,您可以通过使用众所周知的实现一步来处理所有这些,而不是从头开始编写自己的加密堆栈。
【解决方案3】:
Diffie-Hellman 是一种密钥交换算法。所以任何人都可以访问您的公共参数。除了解密的私有参数,您可以使用安全性。创建共享密钥安全非常重要。如果你想更安全的系统,试试forward-secrecy