Кратко

  • Редакция 12 — активный Experimental Internet-Draft, не RFC и не свидетельство внедрения.
  • HTTPS-документ сообщает желаемые параметры origin; регистрацию и право записи сохраняет политика zone factory.
  • Доверять адресному hint и проверять личность только через тот же hint — не независимая проверка.
  • JSON, endpoint-тест, DNS commit, кэш, ECH и результат приложения образуют разные чеки.

Один источник не должен закрывать два контроля

SVCB и HTTPS распространяют через DNS параметры подключения. Для часто меняющихся ECH-настроек проект предлагает, чтобы origin публиковал JSON, а zone factory получала, проверяла и превращала его в записи.

Если злоумышленник временно контролирует backend и JSON, он может выбрать ipv4hint или ipv6hint. Когда эти адреса одновременно становятся маршрутом проверки webPKI, скомпрометированный ввод начинает подтверждать сам себя.

Проект требует осторожности при расхождении hints с A/AAAA и рекомендует проверять аутентификацию backend на всех relevant addresses. CAA может дать дополнительный исторический контекст. Маршрутизация и идентичность должны иметь независимые опоры.

Это модель риска, а не сообщение об атаке

Источники не устанавливают ни одного реального компромета, выпуска сертификата или захвата DNS. Они описывают возможность: webPKI часто использует DNS или HTTP для доказательства контроля, поэтому временное влияние на опубликованные значения может участвовать в более долгой цепочке.

Операционный вывод — сохранять происхождение каждого hint, сравнение с A/AAAA, результаты по адресам, сертификат, CAA-состояние, решение и срок действия. Нельзя записывать «HTTPS аутентифицирован» как универсальное разрешение.

Файловая реализация well-known тоже должна отделять публичный ECH-материал от закрытых ключей. Traversal или enumeration не должны превращать каталог публикации в доступ к private key.

Публичный файл не является DNS-делегацией

По умолчанию zone factory не должна синтезировать записи из найденных документов; включение требует изменения оператором. Это оставляет право записи у DNS governance.

Регистрация связывает origin, port, owner name, record type, policy и ответственного. Для произвольного SVCB-имени обычно нет HTTP-origin, который естественно уполномочен им управлять; нужен явный mapping к URL или локальной source.

Origin говорит только за себя. Файл на 443 не получает власть над 8443 лишь из-за общего host. В split mode передача параметров от CFS к backend и публикация backend для zone factory — два разных доверительных перехода.

Полученный JSON — желаемое состояние

Успешный fetch доказывает получение документа под принятым сертификатом. Он не доказывает регистрацию, parse, policy, endpoint validation, zone update или client observation.

Нужно разделять desired document, validation decision, generated fragment, authoritative RRset и distributed client state. У каждого свой hash и timestamp.

Если dashboard хранит только HTTP 200, он не различает отказ, ожидающий commit и полную конвергенцию.

Синтаксис не закрывает проверку

Объект имеет regeninterval и endpoints; неизвестные top-level keys игнорируются, пустой массив — ошибка. ServiceMode и AliasMode всё равно должны создавать допустимый SVCB/HTTPS fragment.

При неизвестном SvcParamKey, ошибке преобразования или валидации DNS обновлять нельзя. Origin может не увидеть отказ, поэтому zone factory обязана иметь reporting.

Журнал сохраняет certificate identity, body hash, parse, normalized endpoints, rejected fields, RRset hash, policy version и решение. «Нет изменения», «изменение неверно» и «верно, но запрещено» не совпадают.

Список требует покрытия

Перед публикацией zone factory должна проверить ECH с представленными endpoints, возможно специальным клиентом для ещё не опубликованной ECHConfigList.

Некоторые значения могут намеренно не работать из-за GREASE. В multi-CDN один тест может коснуться только одного адреса. Поэтому receipt перечисляет endpoint, family, ECHConfig, GREASE expectation, certificate, ALPN, port и result.

Один успех не подписывает весь список, а ожидаемый GREASE failure не отвергает всё целиком.

Пять часов не показывают одно время

regeninterval — частота возможной генерации, не точная дата окончания. TTL должен быть короче, а refresh — выполнен заранее.

Но origin generation, polling, zone commit, authority replication, resolver cache и client cache идут независимо. retry_configs допускает version skew. Момент изменения JSON не означает завершение rotation.

Несколько zone factories могут создать разные RRsets из-за поддержки параметров или local policy. Сверять следует semantics, serials и probes, а не только текст.

Уход нуждается в явной власти

Проект не задаёт добавление и удаление origins из polling list и запрос удаления всех HTTPS records. Старый JSON может продолжать публиковаться после ухода.

404 не всегда команда удаления: он может быть временным. Бесконечное сохранение тоже опасно. Withdrawal contract задаёт authority, effective time, replacement, serial и cache drain.

ECH, hints и aliases могут иметь разные fail states. Руководство определяет их заранее.

Клиент не заменяет DNS прямым fetch

Обычный HTTP-client не должен использовать well-known вместо HTTPS/SVCB query через preferred resolver. Bootstrap ещё не использует ECH и раскрывает имя.

Origin может вернуть уникальную конфигурацию конкретному клиенту и создать tracking vector. DNS distribution и cache имеют другие свойства агрегации.

Client receipt включает resolver path, RRset generation, cache age, endpoint, ECHConfig, handshake и application result. JSON остаётся control-plane интерфейсом.

Источники и границы

Пакет включает редакцию 12, официальную историю, TLS WG, SVCB/HTTPS, ECH bootstrap, ECH, well-known URI, TLS 1.3, ACME, CAA, IANA registries и key-share prediction.

Источники устанавливают текст и модель угроз. Они не доказывают zone factory, DNS update, ECH, cache convergence, certificate issuance, tracking, compromise или outcome. Вступление — сконструированный случай.

Источники