安全地交换 public dsa 密钥以在 python 中手动使用

Securely exchanging public dsa keys for manual use in python

在我的一个项目中,我致力于在不安全的网络中实现客户端和服务器之间的安全 TCP 通信。最初我想把它传递给 openssl,但我得出的结论是(由于超出这个问题范围的原因),我更愿意手动处理 DSA 密钥。虽然这部分很简单,但仍然存在一个问题:我如何将 public 密钥发送到服务器,同时确保没有 MITM 拦截此密钥并将其替换为自己的密钥?

我一直在研究 Diffie-Hellman 密钥交换算法,但我还没有找到一种无需重新发明轮子就可以在我的代码中实现它的方法,而且我正在努力为它寻找一个现有的库,所以我决定退后一步,简单地问一下:

是否有库或其他方法允许我安全地交换密钥,同时允许我手动应用密钥?基本上,我想自己用密钥完成实际的 encryption/decryption,但我需要一种可靠的方法来交换所涉及的 public 密钥。

在 linux 上使用 python 3.6.9。我可以访问 openssl 和常用的 linux-tools.

Diffie-Hellman 算法应该很容易实现,维基百科上的简单示例突出显示了所有以编程方式易于执行的步骤。