« Отговор #10 -: Mar 22, 2016, 00:15 »
Diffie-Hellman без значение дали е с фиксирана или с ефемерна публична стойност, по дефиниция е податлив на mitm атаки, т.е ако някой стои между двете страни няма никакъв проблем да представи собствена публична стойност, сметките да минат и да сдоговорят с двете страни два, макар и различни, но известни на атакуващият сесийни ключове.
Сега ако въпроса е защо след като е уязвим въпреки всичко се ползва в TLS или SSH протоколите примерно, това е защото не се ползва само DH, малката тайна е че сървъра там подписва публичната си стойност и клиентът проверява сигнатурата, при това положение няма как някой по средата да мами. Обаче това вече влачи и последствията като например нуждата клиента да има налични публични ключове (или сертификати) срещу които да проверява дали това отсреща е сървъра с който иска да си говори или не, и тези трябва по някакъв сигурен канал да му бъдат доставени. В случаят с SSH това обикновено не се случва (първият път когато се връзваш ти се вади fingerprint-а на сървърния ключ и ако искаш връзваш, ако не искаш - не - но ако вържеш оттам нататък се помни и при промяна реве). Сега обаче в 99.999% от случаите на никой не му пука да проверява това, което е разбираемо - излишна параноя, а човек бърза да си свърши работата в крайна сметка.
Та както и да е - оттук и идея - няма ли да е далеч по-лесно да ползваш готова (и доказана) TLS имплементация, вместо сам да си измисляш криптосистема (което не е лесно и е твърде вероятно да се оплеска) ? С PyOpenSSL примерно не е толкова сложно, има и примери из нета. "Стандартната" ssl библиотека на питон е дори още по-лесна за ползване, единствено не дава достъп до разни неща, които с много голяма вероятност изобщо няма да ти трябват.