Как создать систему с E2EE без MITM уязвимости?

Если говорить про схему клиент-сервер, то клиент может проверить сертификат в СА, публичный ключ зашит в сертификате, поэтому левый публичный ключ он сможет распознать. Доменное имя тоже можно сверить с тем что в сертификате. В этой схеме клиенту важно следить за доменным именем.

Если рассмотреть систему мессенджера где происходит коммуникация клиент1-сервер-клиент2, то тут вроде нет доменного имени по которому необходимо сверять клиента с которым коммуницируешь. Тут вместо этого наверно стоит использовать номер телефона, который считаем известным заранее.

Из Википедии про E2EE:

Для предотвращения MITM-атак большинство криптографических протоколов используют аутентификацию. Для этого могут использоваться, например, центры сертификации.

  1. То есть все таки используют так же сертификаты СА, но без доменного имени, а с номером телефона к примеру? То есть СА дают возможность самим выбрать какие данные будут в сертификате?
  2. Как такие сертификаты устанавливать браузерным/мобильным/десктопным клиентам при регистрации? Возможно ли это?
  3. Запрос на генерацию в СА может происходить как на сервере так и на клиенте?
  4. Как вообще видите архитектуру E2EE решения?

Если говорить о популярных мессенджерах, то при таких масштабах похоже что сертификаты должны быть бесплатными с авто генерацией новый при истечении срока действительности старых.

Из Википедии:

Альтернативным методом является создание отпечатков открытого ключа на основе общедоступных открытых ключей пользователей или общих секретных ключей.

Кажется что такое возможно только если клиенты встречались для обмена открытыми/отпечатками откр.ключей/закрытыми ключами. А если есть возможность обмена ключами, то можно использовать обычную симметричную криптографию без всяких хитростей. Вроде такой подход не сложен в плане реализации и тут все понятно.


Ответы (0 шт):