28 Июня, 2013

То, о чём все знают..

Артем Агеев
Безопасность интернета основана на https. Надежную защиту каналов связи, на которую опирается вся коммерция, почта, социальные сети и т.д., удалось построить благодаря инфраструктуре открытых ключей ( PKI ). На каждом клиентском девайсе существует жестко зашитый перечень удостоверяющих центров, сертификатам которых наше устройство верит и разрешает подписывать защищенные вебсайты. Если вдруг кто-то захочет перехватить ваш трафик и устроить MITM атаку - браузер тут же вас предупредит.

name='more'>

Вот например сертификат Гугла выдан GeoTrust'ом.
Мы верим Гуглу, потому что мы верим GeoTrust'у (WinKey+R -> certlm.msc -> Enter)
Если вдруг злоумышленник подпишет его своим собственным сертификатом, то мы увидим вот такое сообщение:


Но что будет, если сайт https://mail.google.com в один прекрасный день будет подписан сертификатом другого доверенного корневого Центра Сертификации?
А ничего!

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

Современные браузеры реализуют технологию public key pinning - фиксация открытых ключей распространенных вебсайтов (например, google.com). Однако если в локальном хранилище сертификатов имеется пользовательский сертификат корневого CA, то защита отключается ...

В перечне доверенных корневых центров на моём windows 8 на данный момент 43 сертификата. Кроме массы американских компаний, там есть еще .. Правительство Нидерландов.
В хранилище доверенных сертификатов Android много интересного. Например сертификат Правительства (какого не уточняется...).


Если открыть перечень доверенных корневых CA iOS , то там вы найдете Правительство Японии,
Правительство Китая, 

пять сертификатов Правительства США (в том числе сертификат DoD )...

и многое многое другое...

Т.о. имея доступ к одному закрытому ключу из сотен подходящих, можно организовать локальный перехват всего шифрованного трафика путем подмены сертификата на сертификат нужного УЦ. Этим часто пользуются разработчики DLP систем и службы корпоративной безопасности, когда добавляют с помощью групповой политики на ПК пользователя собственный сертификат и подписывают все защищенные соединения с его помощью. Под это есть даже специализированные скоростные железки (гражданская версия, есть и спец.версия для государственных заказчиков), способные работать с большими объемами трафика.

Часть приложений (например браузеры Chrome, Firefox) могут правда обнаружить подмену с помощью public key pinning. Гугл в таких случаях вывешивает окошко-предупреждение о "атаках, проспонсированных государством" .
Но это не всегда и не на всех платформах срабатывает.

Поэтому чтобы нашим спецслужбам получить доступ к facebook или gmail достаточно просто где-нибудь раздобыть закрытый ключ какого-нибудь коммерческого удостоверяющего центра из списка доверенных УЦ, либо добавить на компьютер пользователя свой сертификат (договорится с Microsoft) и обновить ПО на СОРМах :)