Кратко

  • FCI.DelegatedCredentials объявляет предел и необязательный ключ шифрования downstream-CDN, а MI.DelegatedCredentials переносит учётные данные и, при необходимости, приватные ключи; ни один объект не является подтверждением установки на каждом сервере.
  • Объявленное число не обязано совпадать с числом узлов: одну учётную запись можно развернуть на многих endpoints, а приватный ключ может быть создан downstream локально.
  • Доказуемая эксплуатационная цепочка отдельно связывает полномочие сертификата, происхождение ключа, версию метаданных, установку, маршрутизацию, предложение клиента, выбранный алгоритм, handshake, резервный путь и HTTP-результат.

У короткого ключа длинная цепочка ответственности

Делегированные учётные данные сокращают власть ключа: вместо постоянного приватного ключа сертификата edge получает краткоживущий ключ, действующий в пределах делегирования. Но короткий срок не сокращает число операций. Ключ надо создать, связать с сертификатом, безопасно передать или сопоставить с локальной парой, установить, активировать и вовремя заменить.

RFC 9677 решает конкретную межоператорскую задачу. Upstream-CDN передаёт downstream-CDN объекты RFC 9345 через стандартные интерфейсы CDNI. Успешное получение показывает, что объект пересёк эту границу. Оно не сообщает, сколько процессов его загрузило и какой из них обслужил клиента.

Проблема возникает, когда контрольная система присваивает получению статус «развёрнуто». Тогда точное свидетельство расширяется до утверждения, которого источник не делал.

FCI объявляет возможность, а не топологию

Через FCI.Metadata downstream может указать поддержку MI.DelegatedCredentials. Объект FCI.DelegatedCredentials сообщает максимальное число поддерживаемых учётных данных и может включать PrivateKeyEncryptionKey в формате JWK.

Максимум помогает upstream подобрать объём выдачи. В RFC прямо сказано, что он обычно, но не обязательно соответствует числу серверов. Downstream вправе установить одну учётную запись на множество узлов либо использовать отдельную на каждом.

Поэтому число не является резервом, инвентарём или отчётом о готовности. Оно не показывает свободные слоты, активные регионы, завершённые когорты и текущий трафик. Диаграмма, которая превращает объявленный максимум в процент развёртывания, рисует сведения, отсутствующие в протоколе.

Происхождение приватного ключа меняет смысл свидетельства

MI.DelegatedCredentials содержит массив base64-кодированных CertificateEntry со структурой RFC 9345. Поле приватного ключа необязательно. Если ключ передаётся, он должен находиться в compact JWE, зашифрованном на объявленный ключ получателя.

Если поля нет, downstream мог самостоятельно создать пару и передать upstream только публичную часть вне CDNI. Секрет тогда не покидает его домен, но возникает внешний стык: запрос публичного ключа должен быть достоверно связан с локальным секретом и полученной позднее делегацией.

В первом варианте нужны данные о генераторе, JWK-получателе, расшифровщике и хранилище. Во втором — о локальной генерации и подлинности внепротокольного запроса. Единая отметка «получено» уничтожает это различие.

JWE защищает перенос, но не всю историю

RFC 9677 не рекомендует отправлять приватные ключи через MI. Если оператор всё же это делает, сила ключа шифрования должна быть не ниже силы защищаемого ключа. Конверт скрывает секрет при передаче, но не обеспечивает forward secrecy. Будущая компрометация ключа расшифрования может раскрыть сохранённые старые JWE.

Короткий срок действия ограничивает период пригодности украденной пары для impersonation. Он не доказывает удаление копий, отсутствие записанного ciphertext, неизвлекаемость JWK или импорт в нужную аппаратную границу.

Безопасный журнал хранит fingerprints, идентификаторы ключей, алгоритмы, время и решения проверки, но не секрет. Он также различает корректно разобранный публичный объект и реально доступный соответствующий приватный ключ.

Клиент задаёт условия после завершения CDNI-передачи

По RFC 9345 клиент должен предложить расширение делегированных учётных данных и допустимые схемы подписи. Сервер не вправе присылать делегацию, если клиент не заявил поддержку. Клиент по-прежнему проверяет цепочку сертификатов и ожидаемую идентичность сервиса, затем подпись делегации, срок, алгоритм и CertificateVerify.

Стандартный максимальный срок — семь дней, причём делегация не переживает исходный сертификат. Она также связана с конкретной схемой подписи. Корректно переданный объект может быть отклонён из-за времени, предложения клиента, свойств сертификата или несовпадения алгоритмов.

Даже совместимый сервер может решить не отправлять делегированные данные. Обычный сертификат или remote signing может оставаться для legacy-клиентов и аварийного режима. Успешный TLS подтверждает доступность наблюдаемого пути, но без деталей handshake не подтверждает делегированный путь.

Между получением и использованием находится весь rollout

Примерный поток RFC показывает объявление возможностей, получение MI, TLS-соединение и обновление. Нормативного сообщения «все edge-узлы установили» между ними нет. Эту область заполняют проверка, расшифрование, secret store, сборка конфигурации, постепенное развёртывание, reload, health gate и перевод трафика.

Принятая задача в очереди не равна выполнению. Записанный ключ не обязательно активен. Активный ключ не обязательно попадёт под маршрутизацию. Выбранный узел не гарантирует совместимость клиента. Каждый переход требует собственного события.

Сходимость должна иметь именованный знаменатель: целевой набор узлов, исключения, drained endpoints, последняя проверка, fingerprint, активность и routing state. Высокий средний процент способен скрыть единственный старый узел, который всё ещё получает реальные запросы.

Истечение превращает скрытое расхождение в отказ

FCI не управляет продлением. Upstream должен отслеживать переданные данные и своевременно предоставлять новые. Если downstream-сервер располагает только истёкшими делегациями, он обязан отклонить новые соединения, которым требуется актуальная делегация.

Отказ является сильным локальным фактом, но не описывает парк. Другие узлы могут уже иметь преемника, оставаться в допустимом overlap, перейти на обычный сертификат, быть выведены из трафика или недоступны.

Короткая жизнь уменьшает окно злоупотребления и увеличивает частоту ротаций. SLO должен измерять готовность преемника на всём ещё маршрутизируемом наборе до окончания роли предшественника, а также проверенный fallback для несовместимых случаев.

Десять уровней не дают подменить смысл

Первый уровень — делегирующий сертификат: идентичность, fingerprint, разрешающее расширение и срок. Второй — делегация: публичный ключ, алгоритм, fingerprint и expiry. Третий — происхождение приватного ключа. Четвёртый — точный FCI, footprint, предел и ключ шифрования.

Пятый — получение конкретной версии MI и проверка целостности. Шестой — валидация и установка на каждом целевом узле. Седьмой — сходимость со списком старых, ошибочных, drained и fallback-узлов. Восьмой — решение маршрутизации к конкретному endpoint.

Девятый — наблюдаемый handshake с предложением клиента, TLS-версией, схемой, цепочкой, расширением и результатом проверки. Десятый — HTTP и прикладной результат. RFC определяет важные части, но не всю лестницу. Нижнее свидетельство нельзя переименовывать в верхнее.

Частичный отказ нужно репетировать заранее

Если возможность не объявлена, выбирают явно поддерживаемый путь. Если максимум меньше потребности, уменьшают набор или меняют архитектуру; максимум не называют резервом. Если нет подходящего ключа или JWE не расшифровывается, объект изолируют.

Смешанный парк требует drain старых узлов либо проверенного fallback. Canaries охватывают клиентов с расширением и без него, разные схемы, почти истёкшие данные и каждую когорту. Успех обычного сертификата остаётся успехом fallback, а не доказательством делегированного rollout.

При подозрении на компрометацию ключа получателя меняют ключ и делегации и оценивают исторические JWE. Семь дней ограничивают использование, но не заменяют incident response.

Точная граница делает стандарт сильнее

RFC 9677 не выпускает сертификаты, не выполняет отзыв, не выбирает маршруты, не аттестует парк и не доказывает доставку контента. Он даёт двум CDN общую форму для чувствительной передачи, которая иначе была бы частной и менее проверяемой.

Идеи Heng Lu о слоях реальности и приоритете работающего кода здесь практичны: намерение конфигурации, состояние выполняющего узла и клиентский результат — разные факты. Минимальная общая спецификация координирует общий слой, а rollout, fallback, хранение доказательств и полномочия при инциденте остаются явными локальными решениями.

Получение MI позволяет сказать «объект получен». Сказать «edge его применил» можно только после свидетельства edge и клиента.

Источники