AV>>>> А теперь подумай, чего не хватает в этом алгоритме :-) MW>>> Уверенности в отсутствии человека посредине. Для достижения таковой MW>>> уместно использовать две пары открытых ключей, то есть большое MW>>> случайное число также должно быть подписано секретным ключом MW>>> Виссарионова ещё до того, как попадёт к Мякотину -- а Мякотин должен MW>>> знать открытый ключ Виссарионова. AV>> Хорошо, вносим в протокол соответствующее изменение: AV>> -1. Я генерирую большое случайное число и отправляю его тебе. AV>> +1. Я генерирую большое случайное число, подписываю его и отправляю AV>> тебе. AV>> Для пущей наглядности - вот оно, в двоичном виде и с моей подписью: AV>> -----BEGIN PGP MESSAGE----- AV>> Переходим ко второму пункту? SD> А в чём проблема-то тут с MITM, помимо того, что подписываемое SD> случайное число может оказаться хэшем договора на продажу души SD> дьяволу?
А оно именно таким хешем и является - ну, разве что чуть поскромнее:
echo 'настоящим Сергей Соколов (aka Mithgol the Webmaster) обязуется перевести Алексею Виссарионову (aka Gremlin from Kremlin) 100500 рублей' | openssl sha256 (stdin)= a88a9a9b44ba2a68dc50b2f55fa864f885f97747a94a554a502f6aec90abc2db
И этот простейший оракул - только вторая из всего множества глупостей, которые можно начудесить при использовании, казалось бы, уже давным-давно проверенных криптографических средств. Причем в самом очевидном ейном варианте.
На случай, если кому-то интересно правильное решение: нужно прилепить к моему числу свое (например, конкатенацией), подписать результат и отправить в ответ это свое число вместе с подписью.
-- Alexey V. Vissarionov aka Gremlin from Kremlin gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii
... Чем меньше вы знаете, тем больше я зарабатываю --- /bin/vi * Origin: http://openwall.com/Owl/ru (2:5020/545)