Как нам всем известно, особенно в свете последних скандалов с АНБ, что использование подписанных сертификатов даже крупными центрами сертификации далеко не исключает возможность атаки MitM. Корень проблемы в том, что при использовании SSL/TLS браузер (и не только) безпрекословно доверяет подписанным сертификатам. Для того, чтобы он доверял, нужно наличие отпечатка сертификата конкретного центра сертификации в браузере или в ОС в качестве корневого. Все сертификаты, подписанные им, автоматически становятся доверенными и валидными (если всё верно с временем действия, именем домена и некоторыми другими, менее существенными параметрами) для пользователя. Т.е., если центр сертификации с дулом у виска и зажатыми в тисках йайцами подпишет подставной сертификат на какой-то конкретный домен (т.е., выпустит с технической точки зрения легитимный сертификат), то его можно будет подсунуть пользователю и совершить атаку MitM. Обнаружить её можно только сверив отпечатки сертификатов, которые внезапно изменились. Но так же может быть и внезапное плановое обновление, запланированное самой компанией (сайтом/сервисом). Это так, очерк проблемы вкратце.
Т.е., уязвимость не технического характера, а чисто из-за человеческой некомпетентности или предательства, так как схема изначально построена на доверии.
//В тексте я периодически мешаю то сайты, то сервисы, то домены. В общем случае, идёт разговор о ПО или сервисе, который использует TLS/SSL шифрование, не обязательно только сайты.
То, что я предлагаю, наверное и не ново, но найти что-то подобное и близкое в этих ваших интернетах я не сумел. Ткните носом, где я ошибаюсь. Всё несет чисто академический
параноидальный характер и я надеюсь на поддержку шифропанков и криптоанархистов.
Возьмём к примеру схему распространения публичных ключей GPG/PGP. Есть десятки серваков, куда можно заливать эти ключи, делать поиск и просматривать отпечатки. В данном случае нам не нужна анонимность, наоборот, мы должны раструбить всему миру, что этот отпечаток сертификата принадлежит этому домену. Нам понадобится:
1. Кучи серваков по всему миру, чем больше, тем лучше. Аналог серваков с публичными ключами PGP/GPG. В разных странах, в разных континентах. Туда будут заливаться отпечатки сертификата, предварительно проверив действительную принадлежность домена или сервиса тому, кто заливает сертификат. Это может быть конкретный файл на сервере (в случае веб-сервера), или специфическая запись в DNS, и т.д. Желательно, чтобы это всё можно было автоматизировать, как со стороны серваков с отпечатками, так и со стороны сайта, который хочет обновить сертификат.
2. Тулза для админов, которая позволит одним движением руки пачкой обновить отпечатки сертификатов на кучи серверов, с проверкой принадлежности, и с возможностью отзыва сертификата, и т.д.
3. Клиентская утилита, интегрирующаяся в браузер или в ОС, которая после соединения с сервером проверяет его отпечаток с кучами других серверов, и если выявленно несоответствие отпечатков, то делать то или иное действие. Можно вначале сверить отпечатки только с несколькими «приоритетными» серваками (для более быстрого первого соединения), а дальше продолжить проверки в фоне, кешировать локально результаты и периодически в фоне обновлять, чтобы работа
Если выявлены несоответствия отпечатков, то в зависимости от количества серверов, которые подтвердили или не подтвердили идентичность, делать эвристический вывод: или обнаружена атака MitM, или некоторые сервера с отпечатками дискредитированы, или на некоторых серверах инфа не обновляется, или... В итоге, клиент должен быть в курсе проверки, будь это зеленый значек прошедшего валидацию сертификата, или предупреждение. Инфа с проблемами (опционально и с позволения пользователя) может отправляться владельцам сайтов.
И владельцы сайтов могут относительно легко быть в курсе, не пытаются ли где-то перехватывать инфу их пользователей, или вовремя обнаруживать дискредитированные публичные серваки с отпечатками.
Какие я вижу проблемы:
- Надо базовый список серверов для «бутстрапа», т.е., проверки отпечатков. Он может быть интегрирован в ОС или браузер, и периодически обновляться (кем? как? как исключить исключение неугодных серверов мэнтейнером-злоумышленником?)
- Более медленное первое соединение с сервером. Дальше результаты проверки кешируются и повторные соединения происходят без оверхеда на проверки.
- Это потенциально лишит хлеба существующие сертификационные сервисы, которые получают баснословные суммы из воздуха, хотя так же не гарантирующие соблюдения сетевой этики, если на них надавят государства и спецслужбы (ведь неоднократные преценденты были).
- Нужна простая (и автоматизируемая), но надежная схема подтверждения владельца домена.
- Проблемы DNS-спуфинга остаются на всех этапах обмена отпечатками.
- Будет ещё одно решения, которым воспользуются три с половиной шифропанка.