Господа, прошу пояснить теорию ( математику ), дабы используя PHP я сам набросал код
есть статья как поменяться ключами, совершенно не понимаю почему описанный обмен данными безопасен с точки зрения тех, кто обменивается ключами. Прошу объяснить!
p.s.
Алиса: знает P=23, G=5, A=6
Боб: знает P=23, G=5, B=15
Погон: знает P=23, G=5 и прослушивает канал связи
.. погнали ..
Алиса: отсылает бобу 8 ( 5^6/23 = что-то и остаток 8 )
Погон: знает что отослала Алиса
Боб: видит 8
Погон: знает что получил Боб
Боб: отсылает Алисе 19 ( 5^15/23 = что-то и остаток 19 )
Погон: знает что отослал Боб
Алиса: видит 19
Погон: знает что получила Алиса
.. теперь Погон знает столько же сколько и остальные ..
Алиса: вычисляет, 19^6/23 = что-то и остаток 2
Погон: вычисляет, 19^6/23 = что-то и остаток 2
Боб: вычисляет, 8^15/23 = что-то и остаток 2
Погон: вычисляет, 8^15/23 = что-то и остаток 2
.. теперь Погон знает столько же сколько и остальные ..
если коротко:
Алиса -> 8 -> Боб -> 19 -> Алиса ( Погон знает тоже самое )
.. теперь Погон знает столько же сколько и остальные .. [1]
А вот и нет. Ему по-прежнему неизвестны A=6 и B=15. Эти числа не передавались по каналам связи, передавались только "производные с потерями", сделать обратную операцию по которым невозможно за разумное время.
Посему эти два шага Погон осуществить не сможет, у него нет всех деталей:
Погон: вычисляет, 19^6/23 = что-то и остаток 2
^ нету
Погон: вычисляет, 8^15/23 = что-то и остаток 2
^^ нету
В данном примере допущена ошибка:
Алиса: знает P=23, G=5, B=6
Боб: знает P=23, G=5, A=15
Погон: знает P=23, G=5 и прослушивает канал связи
.. погнали ..
лучше бы A=6 пометить прописной a=6, соответственно b=6.
Тогда исправленный пример выглядел бы так:
Алиса: знает P=23, G=5, a=6
Боб: знает P=23, G=5, b=15
Погон: знает P=23, G=5 и прослушивает канал связи
.. погнали ..
Алиса: отсылает бобу 8 ( A=P^a mod G = 5^6 mod 23 = 8 )
Погон: знает что A=8, но он не знает a
Боб: видит A=8
Погон: знает что получил Боб
Боб: отсылает Алисе B=19 ( B=P^b mod G = 5^15 mod 23 = 19 )
Погон: знает что отослал Боб
Алиса: видит B=19
Погон: знает что получила Алиса
.. Погон знает P, G, A, B. Алиса знает P, G, A, B, a. Боб знает P, G, A, B, b ..
Алиса: вычисляет, K = A^b mod P = 19^6 mod 23 = 2
Погон: для того, чтобы найти K ему нужно либо a, либо b. Он знает, что A=P^a mod G, но найти a можно только перебором, при достаточно большом a это нереально сделать за адекватное время.
Боб: вычисляет, K = B^a mod P = 8^15 mod 23 = 2
Погон: смотрите выше
.. теперь у Боба и Алисы есть общий ключ, а погон его не знает ..
То есть у нас есть алгоритм, который помогает вырабатывать общий секрентый ключ. Он защищен от прослушивания, но он не защитит нас в ситуации, когда человек посередине(Погон) сможет подменять сообщения: он сможет подменить пересланные A, B.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости