Кратко

  • abc, "abc", #616263#, 3:abc и |YWJj| могут задавать три одинаковых октета, но только каноническая форма даёт единственную последовательность для подписи.
  • Подсказка отображения может попасть в подписанный объект, не становясь доказательством типа, доверия или разрешения.
  • Надёжная квитанция отдельно связывает вход, профиль парсера, канонический выход, подпись, интерпретацию, решение политики и наблюдаемый результат.

Экран показывает запись, подпись охватывает байты

Терминал выводит abc, файл хранит "abc", трасса содержит #616263#, сообщение несёт 3:abc, а диагностика печатает |YWJj|. RFC 9804 показывает, что все варианты могут разобрать в одну трёхоктетную строку. Снимок одного варианта не сообщает, какие байты находились на границе подписи.

S-expression — это строка октетов либо конечный список. Стандарт различает четыре среды. Расширенная форма нужна человеку и отладчику. Базовый транспорт переносит канонический объект через каналы с ограничениями. Каноническая форма уникальна и предназначена для подписи. Структуру в памяти выбирает реализация.

Каноническая строка состоит из десятичной длины, двоеточия и точных байтов; в списках нет оформительских пробелов. Всё выражение можно передать как Base64 в фигурных скобках. Это оболочка канала: после декодирования должны вернуться те же канонические байты.

Расширенная запись допускает токены, кавычки, шестнадцатеричный вид, Base64, длину и пробелы. Поддерживать её необязательно. Приложение принимает её по профилю или после проверки возможностей. Строка журнала «разобрано» без версии, разрешённых форм, пределов глубины и длины и правил приложения не воспроизводит допуск.

Подписанная подсказка остаётся подсказкой

Подсказка отображения сообщает приложению, как показать данные, и, по RFC 9804, не имеет иной функции. Если она есть, то включается в каноническую форму и может быть подписана. Подпись доказывает включение подсказки, но не истинность типа, безопасность обработчика или право на действие.

Без подсказки приложение выбирает локальное значение; общее значение — application/octet-stream. Два приложения могут по-разному показывать одни октеты. Равенство тоже задаёт профиль: стандарт рекомендует сравнивать подсказку и данные, но позволяет подсказку игнорировать. Аудиту нужна точная версия этого правила.

Грамматика — только первая дверь. RFC 9804 позволяет запрещать расширенные формы, подсказки, пустые строки и списки, а также вводить пределы ресурсов. В SPKI RFC 2693 сужает правила: сертификат не содержит пустых списков, а первый элемент списка — строка типа.

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

После проверки появляется смысл. RFC 2692 говорит, что значение авторизации SPKI определяет автор прикладного кода. RFC 2693 описывает доверенные кортежи и свёртку, однако итоговое разрешение принимает приложение. Квитанция называет обработчик, версию политики, субъект, действие, ресурс и решение. Фактический эффект наблюдается отдельно.

Получение, допуск, разбор, канонизация, подпись, интерпретация, авторизация и выполнение нельзя свести к одному зелёному статусу. При расхождении парсеров сравнивают вход и канонический хеш; при одинаковой подписи и разных исходах — обработчик и политику. RFC 9804 обеспечивает согласие о байтах, но не переносит полномочия дальше.

Источники