【问题标题】:Securely exchanging public dsa keys for manual use in python安全地交换公共 dsa 密钥以在 python 中手动使用
【发布时间】: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


【解决方案1】:

Diffie-Hellmen 算法应该易于实现,Wikipedia 上的简单示例突出了所有以编程方式易于执行的步骤。

【讨论】:

  • 没错,但是当我们谈论 4096 位 DH 时,我很确定有比从头开始编写更好的方法,因为我怀疑我是第一个需要这样做的人这样做,因此大概有比我能想到的更有效的方法。
  • 您确定要使用同步密钥加密吗?异步方法更安全、更简单
  • 我只在交换 DSA 公钥的初始步骤中使用同步加密。我之前给 pyDH 看了看,但我发现文档严重缺乏。另外,我并不仅仅局限于 DH,因为我也对替代方案感到好奇。
  • 我在之前的 cmets 中弄错了,它是对称的而不是同步的。 DH 是对称系统的非对称方法
  • 这似乎无法回答我理解的问题。
猜你喜欢
  • 2012-10-09
  • 2013-05-07
  • 1970-01-01
  • 2023-03-14
  • 2010-12-27
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
相关资源
最近更新 更多