Алгоритм Diffie–Hellman

173
25 апреля 2018, 05:22

Господа, прошу пояснить теорию ( математику ), дабы используя 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 -> Алиса ( Погон знает тоже самое )
Answer 1
.. теперь Погон знает столько же сколько и остальные .. [1]

А вот и нет. Ему по-прежнему неизвестны A=6 и B=15. Эти числа не передавались по каналам связи, передавались только "производные с потерями", сделать обратную операцию по которым невозможно за разумное время.

Посему эти два шага Погон осуществить не сможет, у него нет всех деталей:

Погон: вычисляет, 19^6/23 = что-то и остаток 2
                     ^ нету
Погон: вычисляет, 8^15/23 = что-то и остаток 2
                    ^^ нету
Answer 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.

READ ALSO
Не работают кастомные комманды Laravel

Не работают кастомные комманды Laravel

Есть команда: class DownloadSource extends Command { /** * The name and signature of the console command* * @var string */ protected $signature = 'convertor:download'; При выполнении

166
Массив json_decode - елемент значения firm_offer_id

Массив json_decode - елемент значения firm_offer_id

Помогите разобрать массив json_decodeИнтересует елемент значения firm_offer_id

127
PHP мусор из временных файлов php*.tmp в рабочей директории

PHP мусор из временных файлов php*.tmp в рабочей директории

наблюдаю раз в 2-3 месяца в рабочей директории мусор из PHP*tmp файлов, которые непонятно откуда появляются

139
массив или объект в base64

массив или объект в base64

В общем делаем общение с API сбербанка, по документации и в поддержке требуют передать пришедший к нам массив из сторонней системы в сбер в формате...

175