Криптография

PKI и сертификаты

2011 год: иранские хакеры компрометировали DigiNotar CA и получили *.google.com сертификат. Сотни тысяч иранских пользователей Gmail были под MITM атакой несколько недель. DigiNotar обанкротился. Это показало и силу PKI (можно отозвать CA), и его слабость (один CA = глобальный риск).

  • **Let's Encrypt**: 360+ млн сертификатов в 2024. HTTPS распространённость выросла с 35% (2015) до 95%+ (2024) во многом благодаря бесплатным сертификатам.
  • **Certificate Transparency**: все публичные CA обязаны логировать сертификаты. Google, Cloudflare, DigiCert запускают CT логи. Позволило обнаружить тысячи мошеннических сертификатов.
  • **Apple/Chrome Root Store**: браузеры и OS контролируют список доверенных Root CA. Добавление нового Root - многолетний процесс с аудитом. Удаление - мгновенно при нарушениях.
  • **47-дневный план (2025)**: CA/Browser Forum рассматривает снижение максимального срока до 47 дней. Автоматизация (cert-manager, Caddy) делает это практичным.

X.509: формат цифрового сертификата

X.509 - стандарт ITU-T для цифровых сертификатов. Сертификат связывает публичный ключ с идентичностью (domain, organization). Подписан Certification Authority - третьей доверенной стороной. Браузер доверяет ключу сервера потому что CA проверил владение доменом.

Certificate Transparency (RFC 9162): все публично выданные сертификаты должны логироваться в открытые append-only логи. Браузеры Chrome и Safari требуют SCT (Signed Certificate Timestamp) как доказательство логирования. Это позволяет обнаруживать мошеннические сертификаты.

Зачем в X.509 сертификате поле Subject Alt Names (SAN)?

Certification Authority: иерархия доверия

CA (Certification Authority) подписывает сертификаты после проверки владения доменом (DV), организации (OV) или личности (EV). Root CA хранит ключ в HSM offline. Intermediate CA выдаёт конечные сертификаты - если он скомпрометирован, Root CA отзывает только intermediate, не перестраивая всё доверие.

CA compromises: Diginotar (2011) выдал 531 мошеннических сертификатов включая *.google.com, перехватывался иранскими спецслужбами. Diginotar обанкротился за 3 недели. CNNIC (2015) выдал промежуточный CA Wosign, который выдавал неавторизованные сертификаты. Chrome и Firefox удалили CNNIC из доверенных. CA system centralizes trust - это и сила, и слабость.

Зачем Root CA держит ключ offline в HSM и редко его использует?

Цепочка доверия и отзыв сертификатов

TLS-рукопожатие включает цепочку: Leaf -> Intermediate -> Root. Браузер проверяет каждую подпись и строит цепочку до доверенного Root. Если сертификат скомпрометирован - нужно его отозвать: CRL или OCSP.

CRLite (Firefox): полный CRL всех сертификатов сжимается в ~10 MB через Bloom filter cascade. Загружается ежедневно. Нет OCSP запросов к CA -> нет утечки browsing history. Chrome использует CRLSets - аналогичный механизм для блокировки скомпрометированных сертификатов.

Почему OCSP Stapling предпочтительнее обычного OCSP с точки зрения приватности?

Let's Encrypt: автоматизация PKI

Let's Encrypt (запущен 2015, ISRG) - некоммерческий CA с автоматическим выпуском сертификатов через протокол ACME. 360+ млн активных сертификатов (2024). Сделал HTTPS бесплатным и автоматическим - до 2015 DV-сертификат стоил $50-200/год.

ACME (Automatic Certificate Management Environment, RFC 8555) - протокол автоматизации. Certbot, acme.sh, Caddy (встроенный ACME), Traefik (встроенный ACME) - клиенты. Kubernetes cert-manager интегрируется с Let's Encrypt для автоматического управления сертификатами в кластере. CA/Browser Forum планирует снизить максимальный срок сертификата до 47 дней в 2025.

Почему Let's Encrypt выдаёт сертификаты на 90 дней, а не 2 года как коммерческие CA?

Итоги

  • **X.509**: сертификат связывает публичный ключ с доменом. SAN для multiple domains. CT SCT - доказательство логирования.
  • **CA иерархия**: Root (offline HSM) -> Intermediate (online) -> Leaf (90 дней). Компрометация Intermediate не затрагивает Root.
  • **Отзыв**: CRL (медленно), OCSP (утечка приватности), OCSP Stapling (компромисс). CRLite/CRLSets - Bloom filter полного CRL.
  • **Let's Encrypt**: ACME автоматизирует DV сертификаты. 90 дней = короткое окно компрометации. certbot/cert-manager для автоматического renewal.

Связанные темы

PKI - инфраструктурная основа для всей интернет-криптографии:

  • TLS 1.3 — TLS использует X.509 сертификаты для аутентификации сервера. PKI даёт цепочку доверия для проверки сертификатов в TLS handshake.
  • Цифровые подписи — Сертификат содержит публичный ключ + подпись CA. CA подписывает ECDSA или RSA-PSS.
  • Управление ключами — Приватные ключи CA в HSM - пример key management. CRL и OCSP - lifecycle management сертификатов.

Вопросы для размышления

  • Если Let's Encrypt выдаёт ~4 млн сертификатов в день, как ACME HTTP-01 challenge гарантирует, что только владелец домена получает сертификат?
  • Certificate Transparency логирует все сертификаты публично. Какие privacy риски это создаёт и как они смягчаются?
  • Если CA скомпрометирован, отзыв занимает часы. За это время MITM атаки возможны. Как Certificate Transparency помогает обнаружить их быстро?

Связанные уроки

  • net-23-https-tls
PKI и сертификаты

0

1

Войти