Кратко

  • RFC 9841 добавляет в Brotli общие словари, большое окно и фрейминг; компрессор и декомпрессор обязаны применять один и тот же словарь с точностью до байта.
  • Замена словаря способна изменить восстановленный контент, а наблюдение размера — раскрывать сведения в обоих направлениях между словарём и нагрузкой.
  • Рабочая единица доказательства связывает нагрузку, криптографический хеш словаря, происхождение, область, свежесть, версию декодера и решение о допустимости сжатия секретов.

Контрольная сумма сжатого объекта совпала, а результат в двух узлах оказался разным. Причина могла находиться не в передаче, а за пределами файла: одинаковое имя словаря разрешилось в разные байты. Хеш нагрузки подтвердил её неизменность, но не установил, какие внешние данные определили смысл.

Такую границу описывает RFC 9841, опубликованный в сентябре 2025 года как Informational RFC. Карточка RFC, текст и XML-источник фиксируют Shared Brotli Compressed Data Format. Документ обновляет Brotli из RFC 7932, но не доказывает внедрение или безопасность конкретного продукта.

Внешние байты определяют восстановление

Словарь может предоставить историю LZ77, заменить встроенный список слов и преобразования либо выбрать их сочетание по контексту. Поэтому стандарт требует не одинаковой метки, а полностью одинакового словаря. Путь latest не позволяет воспроизвести исторический результат.

Минимальная квитанция связывает хеш нагрузки с криптографическим дайджестом словаря, профилем, фреймингом и сборкой декодера. Она хранит источник создания, владельца, проверку, разрешённый класс трафика, активацию, вывод и rollback. Если словарь составлен из нескольких ресурсов, рецепт тоже становится зависимостью. RFC 8878 о Zstandard показывает, что проблема опеки над словарями шире одного формата.

В RFC 9841 есть 256-битный идентификатор на основе HighwayHash для доверенного известного набора. Спецификация прямо говорит: он не обеспечивает стойкости к коллизиям во враждебной среде. Быстрое распознавание не равно доказательству от подмены. На границе цепочки поставок нужен криптографический дайджест, например SHA-256, вместе с происхождением.

Утечка направлена в обе стороны

Длина сжатого результата может стать оракулом. Атакующий управляет частью ввода, наблюдает размер и проверяет совпадение выбранных фраз с секретом. RFC 7457 перечисляет CRIME среди известных атак, CVE-2012-4929 сохраняет публичную запись, а исследование побочных каналов сжатия рассматривает более широкий класс.

RFC 9841 важен тем, что считает сам словарь источником данных. Словарь может раскрывать нагрузку, а нагрузка — словарь. Материал, собранный из аутентифицированных страниц, клиентских выражений или внутренних шаблонов, не становится публичным от ярлыка «оптимизация». И наоборот, открытый словарь способен усилить пробы против закрытого значения в общем контексте.

Самая сильная защита — не сжимать приватные данные там, где противник влияет на ввод и видит вывод. Один origin, запрет междоменных словарей, ограничение контроля, медленное обновление и разделение контекстов снижают риск, но не доказывают безопасность. Сначала классифицируются нагрузка, словарь и управляемые префиксы; затем принимается решение о сжатии; лишь потом считается экономия.

HTTP добавляет происхождение, свежесть и разделение

Сопутствующий RFC 9842 с отдельной карточкой задаёт HTTP-согласование и content codings dcb и dcz. Значение Available-Dictionary содержит SHA-256. Ресурс обязан пройти проверки origin и читаемости ответа, а также быть свежим или явно допустимым в stale-состоянии. При нарушении обязательных мер ответ отбрасывается.

Эти правила живут в среде HTTP Semantics, HTTP Caching и управления устаревшими ответами. RFC 6265 даёт знакомое сравнение для области состояния. RFC 9842 предупреждает, что хеш словаря может стать токеном слежения, и требует разделять хранилище не слабее cookies.

Согласование в браузере, слежение и cache partitioning заслуживают отдельной будущей статьи. Для текущей темы достаточно: идентичность словаря включает origin, право чтения, свежесть и раздел хранилища. Имя файла не несёт этих свойств.

IANA ведёт реестры HTTP-параметров и кодирований и имён HTTP-полей. RFC 9651 демонстрирует дисциплину структурированных метаданных. Регистрация подтверждает координацию названий, но не поддержку или безопасную настройку.

До коэффициента следует испытать разрыв связи

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

Каждое измерение фиксирует оба хеша, профиль, фрейминг, сборку, origin и состояние кеша. Кроме коэффициента нужны детерминизм, пиковая память, задержка, разброс размера и восстановление. Число без точной версии словаря не является воспроизводимым доказательством.

Общий стандарт должен координировать минимальные идентификаторы и ограничения. Классы трафика, обращение с тайной и темп выпуска остаются локальными решениями, подтверждаемыми работающим кодом. Такой баланс не превращает центр в универсальную власть и не позволяет местной команде спрятать значимую зависимость под словом «кеш».

Граница вывода

Здесь не тестировались браузеры, серверы, CDN, библиотеки, словари или реальные нагрузки. Не измерялись коэффициент, CPU, память, объём утечки или успех атаки. Публикация RFC не равна внедрению.

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

Источники