В моем проекте я работаю над безопасным TCP-соединением между клиентом и сервером через небезопасную сеть. Первоначально я думал о том, чтобы просто передать это openssl, но я пришел к выводу, что (по причинам, выходящим за рамки этого вопроса), я бы предпочел работать с ключами DSA вручную. Хотя эта часть достаточно проста, остается одна проблема: как мне отправить открытый ключ на сервер, убедившись, что MITM не перехватит этот ключ и не заменит его своим собственным?
Я изучал алгоритм обмена ключами Диффи-Хеллмана, но не нашел способа реализовать это в своем коде, не изобретая велосипед, и я изо всех сил пытаюсь найти для него существующую библиотеку, поэтому я решил сделать шаг назад. немного и просто спросить:
Есть ли библиотека или какой-либо другой метод, который позволяет мне безопасно обмениваться ключами, позволяя мне применять ключи вручную? По сути, я хочу сам выполнять фактическое шифрование/дешифрование с помощью ключей, но мне нужен надежный способ обмена задействованными открытыми ключами.
Использование Python 3.6.9 в Linux. У меня есть доступ к openssl и обычным linux-tools.