Насколько я знаю E2E шифрование в современных мессенджерах в общих чертах реализовано так:
1. Пользователи генерируют пару публичный-приватный ключ
2. Пользователи отсылают друг другу публичные ключи (через сервер разумеется)
3. Пользователи шифруют отсылаемые сообщения чужим публичным ключом и расшифровывают полученные сообщения своим приватным ключом.
Что мешает в данной схеме серверу мессенджера подменить публичные ключи на свои и провести MITM атаку?
Да, я понимаю что энтузиасты могут связаться по независимому каналу и понять что сгенерированные и полученные публичные ключи различаются, но ведь сервер может проводить такие атаки не на всех подряд, а только на интересных ему личностей.
я не эксперт, но уверен что это не так работает. Асимметричная криптография вообще в основном используется для подписей, а не для, собственно, шифрования. Для E2E, как и для TLS, скорее всего используется какая-то из вариаций Diffie-Hellman.