Пока не Россия. Но уже Казахстан. Как писал ValdikSS в своем посте Казахстан внедряет свой CA для прослушивания всего TLS-трафика:
Государственный провайдер Казахтелеком, в связи с нововведениями закона Республики Казахстан «О связи», намерен с 1 января 2016 года прослушивать весь зашифрованный TLS-трафик, подменяя сертификаты сайтов национальным сертификатом безопасности, выпущенным Комитетом связи, информатизации и информации Министерства по инвестициям и развитию Республики Казахстан.
Что нового произошло с тех пор? Beeline и Telecom.kz (основной провайдер-монополист) выкатили обновленные инструкции по установке государственного сертификата, который позволит осуществлять атаку man-in-the-middle с подменой сертификата. Ссылка на государственный сертификат.
Коротко о сертификатах
Как известно, современный интернет во многом опирается на сильную криптографию. Множество протоколов шифрования и областей их применения. Несколько десятилетий назад сильная криптография была исключительной прерогативой спецслужб и военных. Им можно хранить информацию зашифрованной надежно, остальным нельзя. До сих пор слышны отголоски этих времен в странных законах и подзаконных актах, которые де-факто уже не работают. Что же изменилось?
Пришел open-source, который дал в руки любого желающего алгоритмы, позволяющего сохранить приватность переписки и быть уверенным в том, что данные не утекут каким-то личностям по дороге к пункту назначения. Пока неповоротливая государственная машина раздумывала, что же делать с новой угрозой, внезапно сильные алгоритмы шифрования стали аппаратно поддерживаться каждым утюгом и стали доступны каждому. Более того, с каждым годом, несмотря на давление властей и спецслужб всех стран безопасность продолжала усиливаться. Протокол HTTPS стал стандартом для любых более или менее значимых соединений. Появился HSTS (HTTP Strict Transport Security) — механизм, активирующий форсированное защищённое соединение через протокол HTTPS.
Появился Certificate pinning (хранение списка разрешенных для домена сертификатов или CA в исходных текстах браузера) и HTTP Public Key Pinning. Эти методы позволяют избежать незаметной подмены сертификата за счет сравнения с эталонными в защищенном хранилище браузера. Благодаря тому, что браузеры стали преимущественно открытым ПО, повлиять на государственном уровне стало очень сложно. Особенно с учетом того, что любая страна не допустит наличие бекдоров от другой стороны.
Безопасность сертификатов строится на сертификационных центрах и иерархической структуре проверки его валидности. Сертификационный центр (CA) — центр, которому все доверяют как надежной третьей стороне, подтверждающей подлинность ключей шифрования с помощью сертификатов электронной подписи. При этом, единственный актив такого центра по торговле «воздухом» — это его репутация. Так как удостоверяющих центров много, то в случае, если CA будет замечен за сливом сертификатов для MitM, он будет немедленно добавлен в черные списки всех операционных систем и браузеров. Поэтому CA ведут себя крайне осмотрительно. Более того, махинации с подменой сертификата будут немедленно замечены браузерами, которые автоматически выбрасывают сообщение об угрозе и часто совсем не пускают пользователя дальше, если конечный ресурс активировал HSTS и Certificate pinning.
Что хочет государство?
Как обычно государство хочет контролировать своих граждан под любыми предлогами. Новый закон, принятый в Казахстане, по сути обязывает провайдеров осуществлять атаку man-in-the-middle. При этом варианте, вместо сертификата Gmail, выданного Google Inc, вы увидите Gamma Technologies Certificate Authority, который честно будет перепаковывать ваш TLS-шифрованный трафик, попутно прослушивая все что нужно, просматривая личную переписку, собирая ваши логины и пароли от любых сервисов. Разумеется, исключительно ради вашей безопасности. Как уже говорилось, браузеры такой беспредел незамеченным не пропустят и просто не пустят вас на целевой ресурс во избежание утечки данных. Однако, в данной ситуации и не ставится задача быть незаметным. Вас ставят перед фактом: либо вы устанавливаете государственный сертификат как доверенный и разрешаете MitM, либо вы лишаетесь всех сервисов, использующих TLS-шифрование. Апплодисменты, занавес. Особенно умиляет цинизм подачи необходимости установки данных сертификатов:
Сертификат безопасности обеспечивает защиту транзакций в сети Интернет и совершенно бесплатен. Просто благодетели. Как раньше без них жили.
Кто пострадает?
Помимо самого вопиющего факта государственной цензуры и возможности просмотра личной переписки, будут большие проблемы с устройствами и софтом, которые не позволяют добавить левый сертификат. Они превратятся в тыкву. Но это никого не волнует. Не менее важным фактором является потенциальная утечка личных данных, паролей к сервисам, которые наверняка будут централизованно собираться. Иначе смысла нет этот цирк с конями устраивать изначально.
Что с этим делать?
Паниковать и бегать кругами. Это уже очень-очень серьезно и техническими средствами почти не решается. Можно поднять VPN-канал на сервер извне страны, чтобы избежать перехвата сертификата. Однако тот же OpenVPN с TLS-шифрованием превратится в тыкву. Вероятнее всего, следующим этапом будут дропать шифрованные соединения VPN. Более того, если вам надо получить «чистый доступ» к Gmail или Twitter, то проблем нет. Однако, если сервис находится внутри страны с подменой сертификата, то ничего не поможет. Останется только смириться с прослушкой.
P.S. Все грустно, господа. Хотелось бы услышать хотя бы предложения по техническим вариантам решения проблемы.
UPD После публикации Казахтелеком резко удалил страницу и сертификат
Теперь вместо страницы на скриношоте из поста отдается ошибка 404.
Страница Билайна пока жива, но ссылки перестали быть ссылками, а стали просто подчеркнутыми словами.
UPD Ссылки на багрепорты по поводу сертификата
Спасибо ibmpc.
Сообщение о проблеме в Mozilla:
bugzilla.mozilla.org/show_bug.cgi?id=1229827
mozilla.dev.security.policy:
groups.google.com/forum/#!topic/mozilla.dev.security.policy/wnuKAhACo3E
Просьба добавить сертификат (root.gov.kz) в доверенные:
bugzilla.mozilla.org/show_bug.cgi?id=1232689