Безопасный обмен открытыми ключами DSA для ручного использования в python

В моем проекте я работаю над безопасным TCP-соединением между клиентом и сервером через небезопасную сеть. Первоначально я думал о том, чтобы просто передать это openssl, но я пришел к выводу, что (по причинам, выходящим за рамки этого вопроса), я бы предпочел работать с ключами DSA вручную. Хотя эта часть достаточно проста, остается одна проблема: как мне отправить открытый ключ на сервер, убедившись, что MITM не перехватит этот ключ и не заменит его своим собственным?

Я изучал алгоритм обмена ключами Диффи-Хеллмана, но не нашел способа реализовать это в своем коде, не изобретая велосипед, и я изо всех сил пытаюсь найти для него существующую библиотеку, поэтому я решил сделать шаг назад. немного и просто спросить:

Есть ли библиотека или какой-либо другой метод, который позволяет мне безопасно обмениваться ключами, позволяя мне применять ключи вручную? По сути, я хочу сам выполнять фактическое шифрование/дешифрование с помощью ключей, но мне нужен надежный способ обмена задействованными открытыми ключами.

Использование Python 3.6.9 в Linux. У меня есть доступ к openssl и обычным linux-tools.


person Jarmund    schedule 01.05.2020    source источник
comment
Во-первых, рекомендации библиотек, к сожалению, не по теме. Во-вторых, вы говорите, что не можете использовать openssl, но вы также говорите, что не хотите изобретать велосипед. Это противоречие. Наконец, только Диффи-Хеллман (DH) полностью уязвим для атак типа «человек посередине». Почему вы думаете, что DH является решением?   -  person President James K. Polk    schedule 02.05.2020


Ответы (1)


Алгоритм Диффи-Хеллмена должен быть прост в реализации, простой пример в Википедии выделяет все шаги, которые легко выполнить программно.

введите здесь описание изображения

person Abhishek Malik    schedule 01.05.2020
comment
Верно, но когда мы говорим о 4096-битном DH, я почти уверен, что есть лучший способ сделать это, чем писать с нуля, так как я сомневаюсь, что я первый, кому нужно это сделать, и поэтому, по-видимому, есть больше эффективные методы там, чем все, что я могу вызвать в воображении. - person Jarmund; 01.05.2020
comment
Вы уверены, что хотите использовать криптографию с синхронным ключом? асинхронные методы безопаснее и проще - person Abhishek Malik; 01.05.2020
comment
Я использую синхронную криптографию только на начальном этапе обмена открытыми ключами DSA. Я посмотрел pyDH ранее, но обнаружил, что документации очень не хватает. Кроме того, я не настроен только на DH, так как мне также интересны альтернативы. - person Jarmund; 01.05.2020
comment
я ошибся в своих предыдущих комментариях, это симметрично, а не синхронно. и DH является асимметричным подходом для симметричной системы - person Abhishek Malik; 01.05.2020
comment
Это, кажется, не отвечает на вопрос, как я его понимаю. - person President James K. Polk; 02.05.2020