Кратко
- Редакция 03 присваивает каждой типизированной ссылке одно из четырёх состояний: Malformed, Unresolved, Failed или Verified. Корректная структура в подписанной области ещё не подтверждает связь с указанным артефактом.
- Для Verified нужен ровно один разрешённый профилем контекст хеширования, получение артефакта, выполнение предписанной конструкции и равенство в заданном представлении.
- Действительность подписи, аутентификация эмитента, квитанция SCITT, оценка артефакта и разрешение на действие остаются отдельными выводами.
Что опубликовано, а что пока нет
5 сентября 2026 года Steven Mih и Anton Sokolov выпустили редакцию 03 документа Canonical Payload Binding: A Signed Statement Construction Profile. Datatracker отмечает его как активный индивидуальный Internet-Draft. Авторы указывают SCITT как предполагаемую рабочую группу, однако у документа нет потока IETF, ответственного AD, решения о принятии или зафиксированного консенсуса. Текст может измениться, быть заменён или утратить актуальность.
Поэтому речь не идёт о развёртывании или готовом стандарте. Практический интерес редакции в другом: она превращает привычную неопределённость слова «проверено» в явный набор исходов. По сравнению с -02 нейтральный механизм CPB отделён от форматов конкретной полезной нагрузки. Типизированная ссылка описана как информационная модель из четырёх элементов. Профиль нагрузки может задать собственный способ переноса, а cpb-refs остаётся необязательным вариантом в защищённом заголовке COSE.
Редакция также отказывается от универсального реестра типов артефактов внутри CPB. Потребляющий профиль должен стабильной нормативной ссылкой определить допустимые типы и контексты хеширования. Текст разводит режим Full-Payload из RFC 9943 и Hash Envelope из RFC 9995, запрещает два способа переноса ссылок в одном Signed Statement и закрепляет четыре результата обработки.
Четыре состояния сохраняют причину
Malformed означает отказ на входе. Может отсутствовать обязательный элемент, использоваться неверный тип CBOR, превышаться лимит размера или количества, повторяться ключ либо та же четвёрка значений, появляться неизвестный ключ в закрытой карте. Для cpb-refs ключи, кроме 1–4, нельзя трактовать как безобидные расширения. Если одна запись некорректна, верификатор не должен спасать другую запись того же заголовка и объявлять её Verified. Результат подписи при этом можно сообщить отдельно.
Unresolved возникает уже после успешного синтаксического разбора. Верификатор не смог выбрать ровно один разрешённый контекст. Либо контекст определён, но артефакт нельзя получить. Либо доступны и контекст, и объект, однако реализация не умеет выполнить конструкцию. Расхождение не установлено, но связь также не доказана.
Failed находится дальше по пути. Единственный контекст выбран, однако алгоритм или представление с ним несовместимы, идентификатор окончательно не назначен или запрещён, либо расчёт по полученному артефакту не совпал со значением в ссылке. Если смешать Failed с Unresolved, аудит больше не отличит провал хранения, нехватку возможностей, нормативную неоднозначность и материальное расхождение.
Verified закрывает всю последовательность: разрешённый контекст, полученный артефакт, выбор и исключение полей, канонизация, разделение доменов при необходимости, кодирование preimage, хеширование, представление результата и равное сравнение. Даже этот исход утверждает только одно: конкретный артефакт связан с конкретной ссылкой в конкретном контексте.
Названия алгоритма недостаточно
Контекст хеширования — не просто «SHA-256». В него входят включённые и исключённые поля, алгоритм канонизации, возможное разделение доменов, кодирование preimage и представление результата. Одинаково выглядящие шестнадцатеричные строки образуют доказательную связь лишь тогда, когда совместимы все эти параметры.
Выбор начинается с type и, при необходимости, purpose. Если профиль допускает для типа один контекст, purpose можно опустить; если оно указано, то должно совпадать. Если разрешено несколько контекстов, каждому нужен отдельный непустой purpose, а ссылка обязана сделать выбор. Ноль совпадений или более одного совпадения дают Unresolved.
Нельзя угадывать по порядку списка, длине хеша, внешнему виду нагрузки, привычке библиотеки или снимку реестра, который профиль не включил нормативно. Реализация может уметь выполнять JCS по RFC 8785, но из этого не следует знание о полях, которые организация решила исключить, и о версии профиля, обладающей полномочием.
Производный идентификатор в полезной нагрузке проект также считает лишь подсказкой. Верификатор обязан пересчитать его после применения нормативного набора исключений и предписанных преобразований. Копирование значения производителя в локальное поле verified повторяет заявление, но не создаёт независимого наблюдения.
Один способ переноса — один входной граф
Профиль выбирает либо cpb-refs в защищённом конверте, либо собственный carrier в полезной нагрузке. Они не могут присутствовать вместе, даже если ссылаются на разные артефакты. Обнаружив оба варианта, знающий профиль верификатор признаёт statement несоответствующим. Он не объединяет списки и не отдаёт предпочтение первому разобранному.
Иначе ссылка в нагрузке могла бы будто бы исправлять защищённую ссылку, повторы стали бы голосами, а две реализации строили бы разные графы. Одна поверхность ввода делает приём и его квитанцию понятными.
В варианте конверта cpb-refs находится только в защищённом заголовке. Массив содержит от одной до 64 ссылок. Каждая закрытая карта связывает целочисленные ключи с type, необязательным purpose, digest_alg и digest и подчиняется ограничениям размера. Дубликаты ключей нужно обнаружить до преобразования CBOR в модель, которая может их отбросить. Подходы first-wins, last-wins, частичный успех и больший вес повтору исключены.
CDDL ограничивает модель данных, а не единственную сериализацию CBOR. Вектор теста вправе зафиксировать байты ради воспроизводимости, но совместимый верификатор не должен отклонять другое корректное кодирование лишь из-за отличия от fixture. Это дополняет прежний материал о множестве кодировок CBOR: здесь исследуется не допуск байтов, а переход от принятой ссылки к доказанной внешней связи.
Представление и получение — разные проверки
32 необработанных байта, 64 строчных шестнадцатеричных символа и форма с префиксом — разные представления. Молчаливое преобразование между ними не является обычным удобством совместимости. Это недекларированная операция протокола. Она допустима только тогда, когда спецификация или профиль определяет и конверсию, и форму сравнения.
У получения артефакта есть собственная временная шкала. Однозначный контекст при недоступном объекте даёт Unresolved. Сетевой сбой, отказ в доступе, пробел хранения или неподдерживаемая схема извлечения не доказывают неверный digest. Более поздняя попытка может завершиться успешно без изменения исходного statement; журнал должен сохранить оба наблюдения и их время.
Если реализация понимает контекст, но не выполняет конструкцию, локальная политика может направить работу способному верификатору, отложить решение, установить одобренную возможность или отказать. Нельзя заимствовать только зелёный статус другого компонента, отбрасывая его входные данные, версию, контекст и квитанцию.
Подпись, эмитент, ссылка и квитанция
Поскольку cpb-refs расположен в защищённом заголовке, корректная подпись COSE покрывает его целостность. Это не подтверждает, что ключ был уполномочен говорить от имени заявленного эмитента. Поэтому редакция различает Signature-Valid и Issuer-Authenticated; второе зависит от локальной политики ключей и идентичности.
Statement с действительной подписью может содержать Unresolved- или Failed-ссылку. Совпадение digest, со своей стороны, не исправляет недействительную подпись и не устанавливает автора. API, журнал и интерфейс должны показывать результат подписи и результат каждой ссылки раздельно.
Квитанция SCITT отвечает на ещё один вопрос. RFC 9943 позволяет Transparency Service зарегистрировать statement и выпустить receipt, управляемый verifiable data structure. Для доверия нужно проверить квитанцию ключом доверенной службы и прочитать идентификатор VDS в её защищённом заголовке. Регистрация не получает указанный артефакт и сама по себе не превращает Unresolved в Verified.
Наконец, CPB не доказывает полномочия эмитента, действительность, область, свежесть или отзыв артефакта, его смысловую приемлемость, соответствие политике или разрешение применить действие. Профиль артефакта задаёт смысл совпадения. Организация, несущая последствия, принимает решение.
Защищённый заголовок не является секретным
Защищённый заголовок COSE обладает целостностью после проверки подписи, но не зашифрован. cpb-refs раскрывает тип, purpose, алгоритм, значение digest и форму графа ссылок. Стабильные значения позволяют коррелировать statements. Для артефактов с низкой энтропией возможен словарный перебор.
Если такая видимость неприемлема, проект рекомендует не использовать cpb-refs либо определить в профиле конфиденциальный carrier внутри нагрузки. Выбор делается до распространения. Добавленный позже контроль доступа не возвращает уже опубликованный граф.
Запрос IANA ещё не распределение
Редакция 03 просит создать Canonicalization Algorithm Registry и зарегистрировать параметр COSE cpb-refs. Это запросы проекта, а не доказательство того, что IANA уже выделила значения. Эксперимент должен фиксировать редакцию, временные номера и путь миграции.
Принцип минимальной начальной спецификации Heng Lu задаёт здесь полезную границу. Общему слою достаточно переносить небольшой воспроизводимый факт: объявленный контекст был применён к полученному артефакту и дал конкретный результат сравнения. Будущие профили и локальные органы могут решать вопросы смысла, свежести и использования. Running code имеет приоритет, когда сохраняет байты, выборы и квитанции, позволяющие повторить вывод.
Ограничения и неопределённость
Этот анализ не утверждает принятие IETF, консенсус SCITT, действие IANA, поддержку продуктом или развёртывание. Примеры экземпляров в приложении не доказывают общую совместимость. Не тестировались сервисы, продукты, библиотеки, реестры, инциденты, уязвимости, производительность или распространённость.
Канонизация также не делает нагрузку истинной или безопасной. Четыре состояния описывают ограниченное доказательство. Подпись, идентичность, квитанция, привязка, оценка, локальное решение и наблюдаемый эффект остаются раздельными, потому что у них разные владельцы и последствия.
Источники
- Текущая карточка Datatracker
- История в Datatracker
- Текст редакции 03
- Текст редакции 02
- Объявление редакции 03
- RFC 8785 — JSON Canonicalization Scheme
- RFC 8949 — CBOR
- RFC 9052 — Структуры COSE
- RFC 9162 — Certificate Transparency Version 2.0
- RFC 9942 — Архитектура SCITT
- RFC 9943 — Statements и receipts SCITT
- RFC 9995 — COSE Hash Envelope
- Heng Lu — Minimum Initial Specification
- Heng Lu — On Reality Layers
- Heng Lu — Running Code Is Primary
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
