Ландшафт стандартов
Spec: ISO 32000-2 ISO 32000-2 Spec: ETSI EN 319 142-1 ETSI EN 319 142-1 Spec: RFC 3161 RFC 3161 Spec: WCAG 2.2 WCAG 2.2 Evidence: Standard-backed
Краткий обзор
Заголовок раздела «Краткий обзор»Движок PDF подчиняется не одному документу, а небольшой федерации стандартов, написанных разными организациями и ссылающихся друг на друга. Эта страница описывает карту этой федерации в том виде, в каком её отслеживает NextPDF. Она также показывает путь, который проходит положение от “так сказано в стандарте” до “движок так и делает, и это подтверждено тестом”.
Она написана для опытного инженера, которому нужно знать, какой документ регулирует то или иное поведение, прежде чем решать, можно ли отстоять его трактовку в NextPDF.
Почему это важно
Заголовок раздела «Почему это важно»“Поддержка PDF” — утверждение, за которым скрывается вопрос: поддержка чего именно? Базовый синтаксис — это ISO 32000-2. Подписи проходят через ETSI. Метки времени — протокол IETF. HTML и CSS, которые отрисовывает движок, — W3C. Базовая криптография — NIST. Доступность итогового документа — снова W3C.
Если библиотека воспринимает всё это как единый нерасчленённый блок, разобраться в причинах сбоя невозможно. Когда валидатор отклоняет подписанный счёт, полезный первый вопрос — не “повреждён ли PDF?”. Он звучит так: “какое положение какого стандарта не выполнено и на чьей стороне?”. Чтобы задать этот вопрос, нужна карта с организациями и честное описание того, как положение становится поведением.
Кратко о главном
Заголовок раздела «Кратко о главном»- NextPDF отслеживает пять органов стандартизации. ISO отвечает за формат. ETSI — за европейские профили подписи. IETF — за сетевые протоколы (метки времени, криптографические примитивы по ссылке). W3C — за HTML, CSS и критерии доступности. NIST — за утверждённые криптографические алгоритмы.
- Эти документы образуют цепочки, а не список: одна возможность подписанного PDF проходит ISO → ETSI → IETF → NIST, и каждый уровень нормативно ссылается на следующий.
- Положение не становится поведением просто потому, что его прочитали. Оно становится поведением, когда его перефразируют и цитируют, сопоставляют с требованием, реализуют и закрепляют тестом. Страница, описывающая поведение, заявляет об этом через свой уровень доказательности.
- Если положение обязательно, оно содержит нормативное ключевое слово (
shall,must). NextPDF рассматривает такие ключевые слова как контракт.should— рекомендация, которую он документирует именно как рекомендацию, а не как гарантию.
Как к этому подходит NextPDF
Заголовок раздела «Как к этому подходит NextPDF»Федерация, а не монолит
Заголовок раздела «Федерация, а не монолит»ISO 32000-2 — центр этой системы. Он определяет, что такое соответствующий файл. Такой файл должен удовлетворять каждому требованию документа, но может опускать любую возможность, которую документ явно не требует Spec: ISO 32000-2, §6 ISO 32000-2 §6 . Он также возлагает обязательство на средство записи: всё, что NextPDF создаёт или изменяет в файле, должно соответствовать формату и сохранять согласованность с уже имеющимися элементами Spec: ISO 32000-2, §6 ISO 32000-2 §6 . Именно из-за этого положения движок отказывается выдавать структурно несогласованное инкрементное обновление. Это не предпочтение NextPDF, а собственное правило формата.
Из этого центра ISO 32000-2 указывает наружу. Обработка подписей в нём определяется “посредством ссылки” на серию ETSI EN 319 142 для PAdES. ETSI, в свою очередь, ссылается на IETF RFC 3161 для токена метки времени и на серию NIST FIPS для алгоритмов хеширования и подписи. Поэтому любая возможность — это путь через несколько документов, каждый из которых нормативен для своего уровня.
- Step 1 of 5: ISO 32000-2 §12.8 signatures
- Step 2 of 5: ETSI EN 319 142-1 PAdES baseline
- Step 3 of 5: RFC 3161 timestamp token
- Step 4 of 5: NIST FIPS 180-4 hash strength
- Step 5 of 5: WCAG 2.2 tagged output
Как положение становится поведением
Заголовок раздела «Как положение становится поведением»Опасный способ работать со стандартами — прочитать положение и затем писать код по памяти. Путь NextPDF намеренно длиннее, потому что именно такой путь можно проверить:
- Retrieve The clause is read from the standard, not from memory.
- Cite It is paraphrased and pinned with a chunk digest, never quoted.
- Classify Its keyword (shall / should / may) sets whether it is a contract or a recommendation.
- Map The obligation becomes a concrete engine requirement.
- Implement The requirement is built into the pipeline.
- Pin A test holds the behaviour against drift.
- Tag The page that describes it declares its evidence level.
Именно на шаге “классифицировать” снимается большая часть неоднозначности. Спецификации кодируют уровни своих требований ключевыми словами: хорошо известным набором MUST, SHALL, SHOULD, MAY. Значение этих ключевых слов закреплено соглашением IETF о ключевых словах требований, обновлённым для уточнения, что нормативны только формы в верхнем регистре, а затем накладывается на описательный текст каждой спецификации
Spec: RFC 2119 RFC 2119 Spec: RFC 8174 RFC 8174 .
NextPDF воспринимает shall как жёсткую границу, которую движок не пересекает, а
should — как рекомендацию, которой он следует и которую документирует как рекомендацию,
но никогда не как обещание. Именно это различие отделяет честное
заявление о возможностях от завышенного.
Соответствие градуированное, а не бинарное
Заголовок раздела «Соответствие градуированное, а не бинарное»“Соответствующий” редко сводится к одному биту. Стандарты подписи разбиты на уровни: например, европейский долговременный профиль с архивированием существует специально для добавления токенов меток времени, благодаря которым подпись остаётся проверяемой ещё долго после создания Spec: ETSI EN 319 122-1, §6 ETSI EN 319 122-1 §6 . Это гораздо более сильное заявление, чем просто базовая подпись. Стандарт доступности устроен так же: уровень соответствия достигается только при выполнении каждого критерия успеха на этом уровне, и заявление называет уровень, которого оно действительно достигло Spec: WCAG 2.2, §5.2.1 WCAG 2.2 §5.2.1 . Поэтому NextPDF указывает профиль и уровень, а не безоговорочное “совместимо”.
Что говорят доказательства
Заголовок раздела «Что говорят доказательства»Эта страница имеет уровень Evidence: Standard-backed : каждое утверждение привязано к положению, перефразировано и процитировано с дайджестом, чтобы следующий проверяющий мог заново сверить его с источником.
| Уровень | Организация | Опорное положение (перефразированное) | Что оно регулирует в NextPDF |
|---|---|---|---|
| Формат | ISO | Созданные или изменённые средством записи элементы должны соответствовать формату и сохранять согласованность Spec: ISO 32000-2, §6 ISO 32000-2 §6 | PDF, который выдаёт движок |
| Соответствие | ISO | Соответствующий файл удовлетворяет всем требованиям; дополнительные возможности необязательны Spec: ISO 32000-2, §6 ISO 32000-2 §6 | Что означает “корректный вывод” |
| Профиль подписи | ETSI | Долговременный уровень с архивированием добавляет метки времени для последующей проверки Spec: ETSI EN 319 122-1, §6 ETSI EN 319 122-1 §6 | Профиль PAdES, на который ориентирована подпись |
| Доверенное время | IETF | Служба меток времени доказывает, что данные существовали до определённого момента Spec: RFC 3161, §2 RFC 3161 §2 | Токен метки времени документа |
| Криптография | NIST | Утверждённые хеши различаются по уровню стойкости, который они обеспечивают Spec: NIST FIPS 180-4, §1 NIST FIPS 180-4 §1 | Алгоритм дайджеста, лежащий в основе подписи |
| Доступность вывода | консорциум W3C | Уровень соответствия требует выполнения каждого критерия на этом уровне Spec: WCAG 2.2, §5.2.1 WCAG 2.2 §5.2.1 | Заявления о доступности отрисованных PDF |
Процитированные дайджесты записаны во frontmatter citations этой страницы. Текст стандартов здесь не воспроизводится. Правило, определяющее этот выбор, вынесено на отдельную страницу. См. Дисциплина цитирования.
Практический пример
Заголовок раздела «Практический пример»Ландшафт стандартов не запускают; его читают, чтобы решить, что запрашивать у движка. В частности, вызов подписания с возможностью долговременной проверки — это заявление о том, какая точка на цепочке вам нужна:
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Security\Signature\CertificateInfo;use NextPDF\Security\Signature\DigitalSigner;use NextPDF\Security\Signature\SignatureLevel;
// The signature level is a coordinate on the ISO -> ETSI -> RFC trail.// PAdES B-B is the ETSI baseline CMS SignedData the Core engine produces;// B-T adds an RFC 3161 timestamp, and B-LT/B-LTA add the DSS and document// timestamps that keep a signature validatable after the certificate// expires. The level you name is the point on the trail you are asking for.$certInfo = CertificateInfo::fromFiles( certPath: 'signer-cert.pem', keyPath: 'signer-key.pem',);
// The functional signing path is the direct two-phase signing engine.// (Document::setSignature() records intent but its writer seam is not yet// wired and fail-fasts on output — see the PadesOrchestrator docblock.)$signer = new DigitalSigner( certInfo: $certInfo, level: SignatureLevel::PAdES_B_B,);
$result = $signer->sign(file_get_contents('agreement.pdf'));
printf( "PAdES %s CMS: %d bytes, timestamp=%s\n", SignatureLevel::PAdES_B_B->value, $result->getSize(), $result->hasTimestamp() ? 'yes' : 'no',);Указание PAdES_B_LTA вместо простого базового уровня — не рычаг производительности. Это решение о том, насколько далеко вниз по цепочке стандартов простирается обязательство. B-LT и B-LTA подключают уровни DSS и архивной метки времени и требуют корпоративного пакета LTV во время выполнения. Вместо тихой деградации движок отказывается делать вид, будто более низкий уровень обеспечивает более высокий.
Распространённое заблуждение
Заголовок раздела «Распространённое заблуждение»Ловушка в том, чтобы читать “NextPDF соответствует стандартам” как единую всеобъемлющую гарантию. Это не так, и ни один честный движок такой гарантии не даёт. Соответствие определяется по каждому стандарту, по каждому положению и по каждому уровню. NextPDF ориентируется на базовый уровень PDF 2.0, именованные профили PAdES и заявленные уровни доступности: каждый ограничен своей областью применения, каждый процитирован. Заявление, за которым не стоят положение и уровень, — это маркетинг, и Insider_ его не публикует.
Вторая, более тонкая ловушка — считать, что нормативное should означает обещание. Это рекомендация. NextPDF документирует рекомендации как рекомендации. Гарантии движка строятся на положениях shall, и это различие принципиально.
Пределы и границы
Заголовок раздела «Пределы и границы»Эта страница — карта, а не территория. Она не перечисляет каждое положение, которое реализует NextPDF, и не является сертификатом соответствия. Доказательство по каждому поведению находится на тематической странице, которой принадлежит это поведение, с её собственным уровнем доказательности: например, PDF 2.0: что изменилось для изменений формата.
Ландшафт стандартов тоже меняется. Выходят новые редакции. Ссылки обновляются. Положение, процитированное здесь, привязано к снимку корпуса, записанному в citations этой страницы. Когда вышестоящий стандарт пересматривается, цитата заново проверяется по новому положению, а не считается перенесённой автоматически. Там, где эта страница называет возможность уровня Premium, она говорит о том, какому стандарту она подчиняется, а не о внутреннем механизме.
Связанная документация
Заголовок раздела «Связанная документация»- PDF 2.0: что изменилось — конкретные изменения ISO 32000-2, на которые указывает уровень формата в этой карте.
- Документация как продукт — почему дисциплина сопоставления положений с поведением считается инженерной работой.
- Дисциплина цитирования — правило, определяющее, как здесь цитируется положение и что означает уровень доказательности.
Глоссарий
Заголовок раздела «Глоссарий»- Орган стандартизации — организация, публикующая спецификацию (ISO, ETSI, IETF, W3C, NIST). Каждый отвечает за свой уровень стека PDF.
- Нормативное положение — требование в стандарте, обозначенное ключевым словом (
shall/mustдля обязательного,shouldдля рекомендуемого,mayдля необязательного). - Цепочка стандартов — упорядоченная последовательность спецификаций, через которую проходит одна возможность, где каждый документ нормативно ссылается на следующий.
- Уровень соответствия — градуированная ступень соответствия (базовый профиль ETSI, уровень WCAG). Заявление называет уровень, который действительно достигнут, а не безоговорочное “совместимо”.
- PAdES — PDF Advanced Electronic Signatures, семейство профилей подписи ETSI EN 319 142, на которое ссылается ISO 32000-2 для подписания PDF.