【发布时间】:2020-08-16 09:45:57
【问题描述】:
在我的一个项目中,我正在努力通过不安全的网络实现客户端和服务器之间的安全 TCP 通信。最初我正在考虑将其传递给 openssl,但我得出结论(由于超出此问题范围的原因),我更愿意手动处理 DSA 密钥。虽然这部分很简单,但还有一个问题:我如何将公钥发送到服务器,同时确保没有 MITM 拦截此密钥并将其替换为自己的?
我一直在研究 Diffie-Hellman 密钥交换算法,但我还没有找到一种在我的代码中实现这个而不重新发明轮子的方法,我正在努力寻找一个现有的库,所以我决定退后一步,简单地问:
是否有库或其他方法可以让我安全地交换密钥,同时允许我手动应用密钥?基本上,我想自己使用密钥进行实际的加密/解密,但我需要一种可靠的方式来交换所涉及的公钥。
在 Linux 上使用 python 3.6.9。我可以使用 openssl 和常用的 linux-tools。
【问题讨论】:
-
首先,不幸的是,图书馆推荐是题外话。其次,你说你不能使用openssl,但你也说你不想重新发明轮子。这是一个矛盾。最后,仅 Diffie-Hellman (DH) 就完全容易受到中间人攻击。为什么您认为 DH 是一种解决方案?
标签: python-3.x encryption diffie-hellman man-in-the-middle