24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
Задача.
Условие: Есть сервер, отвечающий на запрос клиента - данными,
и есть клиент с браузером, загружающий данные, после запроса на сервер.
Проблема: данные, по пути их даставки (особенно по открытому каналу),
могут быть перехвачены - в результате MITM-атаки.
Вопрос: возможно ли как-то исключить возможность подмены данных?
Первое, что приходит в голову - это передать данные,
вычислить и них, и дать возможность клиенту сравнить этот хэш с хэшем данных на сервере.
Однако, и сам хэш может быть подменён в результате MITM-атаки.
Поэтому, можно было бы предварительно вычислить хэш строки, и опубликовать его так,
чтобы он был известен клиенту - ещё до запроса от него.
Но и в этом случае MITM-атакер может подменить хэш на свой.
Какие ещё могут быть варианты?
__________________________________
Ранее, анон предлагал использовать Pre-Shared public key, и приватным ключём - подписывать данные,
а затем проверять цифровую подпись на клиенте.
Проблема в том, что исходный код сервера может быть открыт, и MITM-атакер может полностью заменить сервер.
__________________________________
Этот анон: предложил использовать OTP-пароли (одноразовые пароли)
с доставкой их по совершенно-другому каналу связи.
Проблема в том, что канал связи один, и он ещё и открыт.
__________________________________
Как вариант, можно было бы использовать Gauth: https://gauth.apps.gbraad.nl/#add
но я чё-то не пойму, как там сгенерировать ключ.
__________________________________
На пикрил - MITM-атака, при обмене ключами по алгоритму Diffie-Hellman'a.
Очевидно, что MITM-атакер вынужден вычислять два ключа, в то время как обменивающиеся стороны - по одному ключу K.
Что если вместо ключа использовать длинную цепочку хэшей, как в этом вот warpwallet: https://keybase.io/warp/
hash(hash(hash(...ещё 65536 хэшей (K)))) - вычисление которой заняло бы довольно продолжительное время???
По разнице времени вычисления, и задержке отклика, можно было бы определить наличие MITM-атакера, и исключить MITM?
__________________________________
Каким ещё образом можно было бы исключить MITM-атаку, при обмене ключами?