todo/nuc/nuc-root-mitm-threat-model.md
loop-uh 08b4491545
Some checks failed
Published content check / validate (push) Failing after 3s
Завершить переезд базы знаний на Forgejo
Обновить правила репозитория и подписи исходников в 99 заметках, не затрагивая пользовательские незакоммиченные файлы. Сделать Forgejo Actions содержательным: проверять опубликованный commit, а не пустое рабочее дерево после checkout.
2026-08-07 08:27:28 +03:00

185 lines
34 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date: 2026-06-14
tags:
- tls
- certificates
- nuc
- mitm
- threat-model
- rkn
- privacy
aliases:
- Модель угроз корня НУЦ
- Что можно сделать через государственный корневой сертификат
- HTTPS-перехват через НУЦ
- Атаки через доверенный корень CA
- Российские сертификаты безопасности опасность
- Сертификаты Минцифры модель угроз
link: https://www.gosuslugi.ru/crt
---
# 🕳️ Что технически возможно через корень НУЦ: модель угроз HTTPS-перехвата
> [!info] О чём заметка
> Подробный разбор того, какие атаки становятся возможны, если в твоё хранилище доверия попадает корневой сертификат государственного удостоверяющего центра — НУЦ (Национальный удостоверяющий центр) — и/или если такой центр взломают. Это **модель угроз** (что становится возможным технически) и документированные прецеденты, а не утверждение, что это уже делается. Контекст и почему государство вообще предлагает ставить этот корень — в [[nuc/mincifry-nuc-certs-danger-june-2026|большой статье про опасность сертификатов Минцифры]].
> [!note] Как они называются официально (это всё — одно и то же)
> На Госуслугах, у Сбербанка и в материалах Минцифры их называют «**российскими сертификатами безопасности**», «**сертификатами безопасности**» или «**сертификатами Минцифры**»; полное имя центра — «**Национальный удостоверяющий центр (НУЦ) Минцифры РФ**». Технически это обычные TLS/SSL-сертификаты от государственного удостоверяющего центра (в промышленной эксплуатации с 2021 года; с 2025 на Госуслугах доступен и вариант с шифрованием по ГОСТ). Бесплатно их получают **юрлица — владельцы сайтов**, а пользователю предлагают либо поставить в систему **корневой и выпускающий** сертификаты, либо пользоваться «Яндекс Браузером», где они встроены по умолчанию. В этой заметке для краткости они зовутся «корень НУЦ» / «сертификат Минцифры» — речь об одном и том же.
> [!warning] Возможность ≠ доказанное злоупотребление
> На дату заметки (июнь 2026) нет публичных доказательств массового перехвата трафика через корень НУЦ. Опасность здесь **структурная и подтверждена прецедентами в других странах**, а не репортажем о конкретном факте в России. Дальше речь о том, что *становится возможным*, а не о том, что *уже происходит*.
---
## TL;DR
1. Доверенный корневой сертификат в твоём устройстве может выписать «настоящий» сертификат **на любой домен**`sberbank.ru`, `google.com`, `gosuslugi.ru`.
2. Сложи это с контролем над каналом (операторское оборудование фильтрации, [[DPI/post-pochemu-legli-ru-sajty-iyun-2026|ТСПУ]]) — и получается **прозрачный перехват HTTPS (MITM)**: трафик читают и могут менять, а замочек остаётся зелёным.
3. Главный технический нюанс: **вручную установленный корень обходит защиты**, которые ловят подлог у публичных УЦ (Certificate Transparency, требования браузеров). Поддельные сертификаты от такого корня **не видны** в публичных логах.
4. Возможные последствия: кража паролей, cookie и одноразовых кодов (OTP), чтение переписки, подмена страниц, **внедрение кода в обновления ПО**, точечная слежка за конкретными людьми.
5. Как это выглядит на бытовом действии — разобрано по шагам на примере комментария под новостью: что именно видит перехватчик (текст, аккаунт, cookie сессии) и почему пользователь ничего не замечает.
6. Это уже было: **DigiNotar (2011)** — взлом УЦ и массовый перехват ~300 тыс. иранцев; **Казахстан (20192023)** — государство навязывало свой корень для MITM, браузеры его заблокировали.
7. Для обычного гражданина это не абстракция: под ударом деньги (перехват одноразовых кодов), переписка (материал для дел за публикации) и устойчивость устройства к чужим взломам — разбор в разделе про риски для гражданина ниже.
8. Чего перехват НЕ ломает: соединения с **пиннингом** сертификата (банковские приложения, Telegram, встроенные пины Chrome), сквозное шифрование (E2E) внутри приложений, и — если ты **просто не ставишь** корень.
---
## Предусловия атаки
Чтобы всё нижеперечисленное стало возможным, нужны три условия. Опасность ровно в том, что в текущей ситуации они складываются:
1. **Корневой и выпускающий сертификаты НУЦ установлены** в твоём хранилище доверия (на «Госуслугах» и у Сбербанка предлагают поставить именно оба; государство активно подталкивает к этому, потому что иначе госсертификаты дают красный экран).
2. **Центр контролируется или может быть принуждён** — государственный УЦ под национальной юрисдикцией обязан исполнить законное требование выписать нужный сертификат.
3. **Контроль над каналом** — весь трафик в стране уже проходит через операторское DPI-оборудование (ТСПУ), которое технически может встать «в разрыв».
---
## На пальцах
> [!example] Аналогия
> Доверенный корень — это **нотариус, чьей подписи браузер верит без вопросов**. Обычные публичные нотариусы (УЦ) работают под надзором: каждую заверенную бумагу они обязаны публиковать в открытом реестре, а за подлог их лишают лицензии — и браузеры выкидывают их из доверия. Государственный нотариус под «своей» юрисдикцией такому надзору не подчиняется. Установив его корень, ты выдаёшь ему **чистый бланк со своей подписью**: он может задним числом выписать «подлинный» сертификат на `gosbank.ru` или `google.com` — и браузер покажет зелёный замочек на подделке.
---
## Конкретные атаки, которые это открывает
- **Прозрачный перехват HTTPS (man-in-the-middle).** Узел в разрыве (ТСПУ) на лету предъявляет тебе валидный сертификат сайта, расшифровывает трафик, читает/меняет его и пересылает настоящему серверу. Замочек зелёный, предупреждений нет.
- **Кража учётных данных и сессий.** В расшифрованном потоке видны логины, пароли, токены и cookie сессий, **одноразовые коды (OTP)** из СМС/пушей, передаваемые на сайт. Двухфакторка на основе кода в этом канале не спасает.
- **Чтение и подмена переписки** в веб-версиях мессенджеров и почты, не использующих сквозное шифрование.
- **Точечная (таргетированная) слежка.** Не обязательно перехватывать всех — можно выборочно конкретных людей (журналистов, активистов). Такой точечный перехват трудно заметить со стороны.
- **Фишинг с «настоящим» замочком.** Поддельный портал банка или госуслуг с валидным сертификатом — пользователь не отличит его от настоящего по замочку.
- **Подмена обновлений и установщиков ПО.** Очень много софта качает обновления по HTTPS. Перехват позволяет **подсунуть троянизированную версию** обновления/пакета — это путь к компрометации устройства, а не только к чтению трафика.
- **Внедрение контента и скриптов** прямо в страницы на лету (инъекция, цензура отдельных фрагментов, подмена реквизитов для оплаты).
- **Обход HSTS.** HSTS заставляет браузер ходить только по HTTPS, но он **доверяет цепочке сертификатов**. Если сертификат «валиден» через доверенный корень, HSTS не мешает перехвату.
---
## Разбор одного случая: комментарий под новостью
Список атак выше выглядит абстрактно, поэтому вот одно бытовое действие, разобранное по шагам: человек пишет комментарий под новостью на обычном сайте. Ничего секретного, ничего «шпионского» — ровно та ситуация, про которую говорят «мне скрывать нечего».
**Как это происходит без корня НУЦ.** Браузер устанавливает TLS-соединение с сайтом: сайт предъявляет сертификат, браузер проверяет, что этот сертификат выдан доверенным УЦ **именно на этот домен** и что срок не истёк. Только после этого включается шифрование, и всё, что уходит на сервер, — текст комментария, cookie сессии, заголовки — уже не читается посторонними на пути. Если оборудование оператора попробует встать посередине и притвориться сайтом, ему нечего предъявить: сертификат на чужой домен ни один публичный УЦ ему не выпишет. Браузер покажет красный экран, и перехват станет **видимым**.
**Что меняется, если корень НУЦ установлен.** Корень в хранилище означает буквально: «я верю любому сертификату, который подписал этот центр». А подписать этот центр технически может сертификат на **любой** домен — новостного сайта, соцсети, почты. Дальше схема разворачивается так:
1. Ваш трафик и так проходит через операторское оборудование фильтрации ([[DPI/post-pochemu-legli-ru-sajty-iyun-2026|ТСПУ]]), стоящее в разрыве канала.
2. На ваш запрос к сайту это оборудование отвечает **вместо сайта** и предъявляет сертификат на его домен, подписанный НУЦ. Браузер проверяет цепочку, находит доверенный корень — сертификат валиден. Замочек зелёный, предупреждений нет.
3. Перехватчик расшифровывает ваш поток, читает и при желании меняет его, а параллельно поднимает **своё** соединение с настоящим сайтом и пересылает данные дальше. Ни вы, ни сайт разрыва не замечаете: страница открывается, комментарий публикуется.
**Что конкретно видно в этот момент:** текст комментария в момент отправки (он уходит обычным POST-запросом), аккаунт, под которым вы пишете, и **cookie сессии** — их можно не только прочитать, но и забрать, получив доступ к аккаунту без пароля и без второго фактора; сюда же — привязка «этот IP-адрес и это устройство = этот аккаунт», а также черновики и личные сообщения в веб-версиях сервисов без сквозного шифрования. Обратное направление тоже открыто: страницу можно изменить на лету — не доставить комментарий, подменить чужой, встроить скрипт.
> [!note] Возражение «сайт и так видит мой комментарий»
> Видит — он его и публикует. Разница в трёх вещах. Во-первых, читает **третья сторона**, которой вы данных не давали и которая по TLS видеть их не должна. Во-вторых, это работает на **любых** сайтах сразу, включая зарубежные, куда российский оператор иначе доступа не имеет: не «сайт знает своё», а один наблюдатель собирает всё в одном месте. В-третьих, вместе с текстом утекают **сессии** — то есть возможность действовать от вашего имени.
**Почему это не заметить.** Единственный внешний след — строка «Издатель» в свойствах сертификата (`Russian Trusted Sub CA` вместо привычного западного УЦ), куда обычный человек не заглядывает никогда. В публичные логи Certificate Transparency такой сертификат не попадает — вручную добавленные корни от этой проверки освобождены (следующий раздел). Оповещения браузера не будет: с его точки зрения всё в порядке, вы же сами внесли этот корень в доверенные.
> [!warning] Это описание возможности, а не зафиксированного случая
> Публичных доказательств, что комментарии россиян перехватывают через корень НУЦ, на август 2026 нет — как и вообще доказательств массового MITM через него. Разбор выше показывает, что установка корня **снимает техническое препятствие** для такого перехвата, и ровно этот механизм задокументирован в Казахстане в 20192023 (раздел ниже). Оценивать стоит не «делают ли это прямо сейчас», а «что станет возможным без вашего ведома, если вы корень поставите».
---
## Почему обычные УЦ так не могут — и почему ручная установка это ломает
У публичных УЦ есть несколько внешних предохранителей, и государственный корень в обход них:
- **Certificate Transparency (CT).** Публичные УЦ обязаны публиковать каждый выданный сертификат в открытые append-only логи; Chrome и Safari **требуют** доказательство публикации (SCT). Поэтому подлог публичного УЦ виден независимым наблюдателям почти сразу.
- **Программы доверия браузеров** (Mozilla, Chrome, Apple, Microsoft) с аудитом и правом исключить УЦ за нарушения.
> [!important] Ключевой нюанс: локальный корень обходит CT
> Требование Certificate Transparency в Chrome распространяется на корни **из его собственной программы доверия**. Сертификаты, выписанные **вручную добавленным** (или корпоративным/государственным) корнем, от проверки CT **освобождаются**. Именно поэтому ручная установка корня НУЦ так опасна: поддельные сертификаты от него **не попадают в публичные логи и не вызывают предупреждений** — внешний контроль, на котором держится вся система, к нему просто не применяется. Это же и есть причина, по которой мировые браузеры отказались включать корень НУЦ в свои списки доверия — и почему его приходится ставить руками.
---
## А если сертификаты «взломают» (компрометация УЦ)
Принуждение государством и взлом третьей стороной дают **один и тот же результат** — способность выписать валидный сертификат на любой домен:
- При **компрометации инфраструктуры/закрытого ключа** УЦ атакующий получает то же «всемогущество» по отношению ко всем, кто доверяет этому корню.
- Чем шире распространён корень (предустановлен на устройствах, в браузерах), тем больше масштаб ущерба от единичного взлома.
> [!quote] Прецедент: DigiNotar, 2011
> Нидерландский УЦ DigiNotar был взломан; атакующий выписал сотни мошеннических сертификатов, включая `*.google.com`, и они использовались для **перехвата почты примерно 300 000 пользователей в Иране**. После раскрытия DigiNotar исключили из доверия все браузеры, и компания обанкротилась. Это хрестоматийный пример того, что значит «взломали УЦ»: один скомпрометированный доверенный центр = массовый незаметный MITM.
---
## Это уже навязывали как госполитику: Казахстан
> [!quote] Прецедент: Казахстан, 20192023
> Власти Казахстана несколько раз пытались обязать граждан установить **государственный корневой сертификат** («Qaznet» / «сертификат безопасности»): провайдеры требовали поставить его для доступа в интернет, после чего трафик к ряду сайтов (Google, Facebook, Twitter и др.) можно было расшифровывать. Ответ был однозначным: Google, Mozilla и Apple **внесли этот корень в чёрные списки** своих браузеров, чтобы защитить пользователей даже после установки. Сценарий «государство ставит свой корень → MITM граждан» — не гипотеза, а описанный и пресечённый случай.
Параллель прямая: установка корня НУЦ на территории РФ функционально повторяет казахстанскую схему — с той разницей, что весь трафик уже идёт через ТСПУ.
---
## Почему это опасно именно для обычного гражданина РФ
Частый ответ на все предупреждения выше — «мне скрывать нечего, я не активист и не журналист». Но модель угроз корня НУЦ бьёт не по «шпионам», а по повседневной жизни, и вот что конкретно ставит на кон обычный человек:
- **Деньги.** Перехват HTTPS вскрывает логины, сессии и одноразовые коды (см. список атак выше) — это прямой путь к счетам. Причём «контролирует корень и канал» — это не абстрактное государство, а конкретная инфраструктура с конкретными сотрудниками и подрядчиками: доступ к возможности перехвата получает каждый, кто законно или незаконно дотянулся до неё. Прецедент DigiNotar показывает, что бывает, когда такую точку ломают третьи лица.
- **Переписка и «слова».** В России ведутся административные и уголовные дела за публикации, комментарии и личные сообщения (по данным правозащитных организаций, счёт таких дел идёт на сотни в год). Расшифрованный трафик превращает историю посещений, веб-переписку и черновики в потенциальный материал — даже задним числом: то, что сегодня нейтрально, завтра может быть переквалифицировано.
- **Единая точка отказа.** Чем больше устройств доверяет одному государственному корню, тем разрушительнее единственный взлом или инсайдер. Российские государственные и окологосударственные системы регулярно фигурируют в сообщениях об утечках данных — расширять на эту инфраструктуру ещё и доверие своего HTTPS значит привязывать свою безопасность к её самому слабому звену.
- **Необратимость и бесконтрольность.** У обычных УЦ подлог ловится публичными логами Certificate Transparency и наказывается исключением из браузеров. У вручную установленного корня НУЦ таких предохранителей нет: перехват не оставляет следов, которые пользователь мог бы увидеть, а оспорить злоупотребление в независимой инстанции внутри той же юрисдикции малореально.
- **Нормализация.** Каждый установленный корень — аргумент в пользу того, чтобы сделать установку обязательной («все уже поставили»). Отказ от установки — это ещё и коллективный тормоз для сценария, в котором корень зашивают всем принудительно ([[nuc/mincifry-nuc-certs-danger-june-2026#Пять сценариев ответа российских властей|сценарий 3 в большой статье]]; к августу 2026 обсуждаемый реестр браузеров с обязательными сертификатами НУЦ делает его заметно ближе).
Проще говоря: «нечего скрывать» не работает, потому что на кону не тайны, а деньги, приватность переписки и устойчивость твоего устройства к чужим ошибкам и злоупотреблениям. Все эти риски человек включает сам, одним действием — установкой корня.
> [!danger] Вывод: корень НУЦ ставить нельзя
> Установка корня НУЦ в систему — это добровольная выдача технической возможности незаметно читать и подменять твой HTTPS стороне, которую нельзя ни проверить извне, ни привлечь к ответу изнутри. Госсайты, которым он «нужен», открываются и без него — через [[nuc/safe-usage|изоляцию доверия]] (отдельный браузер, профиль или устройство). Если корень уже стоит — [[nuc/check-remove|проверь и удали]].
---
## Чего такой перехват НЕ может
Важно не впадать в панику — атака не всесильна:
- **Пиннинг сертификата (certificate pinning).** Приложения, которые «прибивают» ожидаемый сертификат/ключ (многие банковские приложения, Telegram, а также встроенные пины Chrome для доменов Google), **не примут** сертификат, выписанный корнем НУЦ, — соединение просто оборвётся, а не перехватится.
- **Сквозное шифрование (E2E).** TLS-перехват вскрывает транспорт, но не внутренний слой E2E: содержимое Signal, секретных чатов Telegram, WhatsApp остаётся закрытым (хотя метаданные и не-E2E сервисы — нет).
- **Если ты не установил корень.** Без корня в хранилище ни одна из этих атак не работает — ты просто получишь честное предупреждение браузера вместо незаметного перехвата.
- **Firefox со своим хранилищем.** Firefox по умолчанию использует **собственный** список доверия, отдельный от системного, поэтому установка корня в систему не обязательно затрагивает его (нюанс: настройка `security.enterprise_roots.enabled` может подтягивать системные корни — проверяй).
---
## Что делать
- [ ] **Проверить, не установлен ли корень уже** — на всех устройствах и во всех хранилищах: пошаговая инструкция для Windows/macOS/Linux/Android/iOS и браузеров — в [[nuc/check-remove|«Как проверить и удалить корень НУЦ»]].
- [ ] **Не ставить корень НУЦ** без острой необходимости.
- [ ] Если он нужен для одного конкретного госсайта — понимать, что доверие распространяется на **весь** HTTPS-трафик устройства, а не на один портал; варианты изоляции (отдельный браузер, отдельный профиль Firefox, точечное исключение, виртуалка) — в [[nuc/safe-usage|«Как пользоваться госсайтами без корня НУЦ в системе»]].
- [ ] Для чувствительных сайтов — проверять **издателя сертификата** вручную (кто выдал) и предпочитать приложения с пиннингом.
- [ ] Помнить, что обходы блокировок ([[mtproxy/mtproto-zig|MTProxy]], VLESS) и E2E-мессенджеры снижают, но не отменяют риск, если корень установлен.
---
## 📚 См. также
- [[nuc/00-overview|Раздел «Сертификаты Минцифры (НУЦ)»]] — обзор темы и практика: [[nuc/check-remove|проверка и удаление корня]], [[nuc/safe-usage|изоляция доверия]], [[nuc/gost-tls|ГОСТ-TLS]], [[nuc/embedded-trust|встроенное доверие в «Яндекс Браузере»]]
- [[nuc/mincifry-nuc-certs-danger-june-2026|Почему сертификаты Минцифры (НУЦ) опасны]] — общий контекст: кризис доверия, хроника MAX, сценарии властей
- [[DPI/post-pochemu-legli-ru-sajty-iyun-2026|Почему «легли» ру-сайты в июне 2026 (ТСПУ)]] — про оборудование фильтрации, которое и есть «контроль над каналом»
- [[VLESS/dpi-tls-june-2026|Сибирская схема: подсеть + фингерпринт + частота]] — как ТСПУ анализирует TLS-трафик
- 🔗 [DigiNotar (Wikipedia)](https://en.wikipedia.org/wiki/DigiNotar) — взлом УЦ и перехват иранцев в 2011
- 🔗 [Kazakhstan man-in-the-middle attack (Wikipedia)](https://en.wikipedia.org/wiki/Kazakhstan_man-in-the-middle_attack) — навязывание государственного корня и ответ браузеров
- 🔗 [Минцифры: о сертификатах безопасности](https://digital.gov.ru/activity/kiberbezopasnost/sertifikaty-bezopasnosti) · [Госуслуги](https://www.gosuslugi.ru/crt) · [Сбербанк](https://www.sberbank.ru/ru/certificates) — официальные страницы: как предлагают ставить корневой и выпускающий сертификаты Минцифры
---
> [!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ
> При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: [исходник этой заметки](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/nuc/nuc-root-mitm-threat-model.md) · [весь репозиторий](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main).