Сопоставление базовых уровней PAdES
PDF Advanced Electronic Signatures (PAdES) — это семейство профилей, стандартизированных в ETSI EN 319 142. В нём определены четыре базовых уровня соответствия — B-B, B-T, B-LT и B-LTA, — где каждый более высокий уровень добавляет материал к уровню ниже. Эта страница сопоставляет эти уровни с тем, что создаёт NextPDF. Здесь отдельно показаны поверхность Core и редакции Pro и Enterprise. Сопоставление поведенческое: оно описывает то, что выдаёт движок, а не внутренние классы.
Коротко: NextPDF Core создаёт структуры подписи, согласованные с уровнями B-B и B-T. Путь создания B-LT и B-LTA поставляется в редакциях Pro и Enterprise. Будет ли созданная подпись принята как соответствующая на данном уровне, зависит от верификатора и настроенных в нём якорей доверия. Создатель не может подтвердить соответствие вместо верификатора.
Установка
Заголовок раздела «Установка»composer require nextpdf/core:^3Концептуальный обзор
Заголовок раздела «Концептуальный обзор»Цифровая подпись PDF — это структура Cryptographic Message Syntax (CMS) SignedData, хранящаяся в записи Contents словаря подписи. Массив ByteRange задаёт диапазоны байтов, по которым вычисляется дайджест, — ISO 32000-2 §12.8.1. CMS SignerInfo содержит подписанные атрибуты, включая атрибуты content-type и message-digest, — RFC 5652 §5.3. Дайджест сообщения для этих атрибутов вычисляется по процедуре из §5.4. PAdES использует модель атрибутов CMS Advanced Electronic Signatures (CAdES) внутри словаря подписи PDF.
Четыре базовых уровня строятся аддитивно:
- B-B содержит базовую подпись с её обязательными подписанными атрибутами.
- B-T добавляет атрибут отметки времени подписи, вычисленной по значению подписи. Атрибут отметки времени доказывает, что подпись существовала в указанный момент времени, — ETSI PAdES §5.4.3. Токен создаёт служба меток времени (Time-Stamping Authority) согласно RFC 3161 — RFC 3161 §2.4.1.
- B-LT добавляет материал для долгосрочной проверки — данные сертификата, Online Certificate Status Protocol (OCSP) и списка отзыва сертификатов (CRL), — который размещается в Document Security Store. См. ETSI PAdES §6.2.2, ISO 32000-2 §12.8.4.3 и описание размещения данных проверки в ETSI EN 319 142-2 §6.3.
- B-LTA добавляет архивную отметку времени документа для сохранения действительности в течение длительного времени — ETSI PAdES §6.2.2.
Четыре уровня строго аддитивны: каждый более высокий уровень сохраняет всё, что было на уровне ниже, и добавляет ровно один новый слой материала. Метки переходов показывают редакцию, в которой доступно создание на каждом шаге.
Поверхность API
Заголовок раздела «Поверхность API»Для выбора уровня используйте перечисление SignatureLevel. Оно определяет варианты PAdES_B_B, PAdES_B_T, PAdES_B_LT и PAdES_B_LTA. Методы requiresTimestamp(), requiresDss(), requiresDocumentTimestamp() и isAvailableInEnvironment() сообщают, что требуется каждому уровню и может ли текущая среда выполнения это обеспечить. В дистрибутиве Core isAvailableInEnvironment() возвращает true для B-B и B-T и false для B-LT и B-LTA. Метод возвращает false для B-LT и B-LTA, поскольку создатель материала для долгосрочной проверки разрешается во время выполнения и не входит в пакет с открытым исходным кодом. В production-коде следует использовать контракт SignerInterface, а не эти внутренние типы.
Матрица поддержки уровней
Заголовок раздела «Матрица поддержки уровней»| Уровень | Что добавляет | Core (nextpdf/core, редакция) | Pro / Enterprise (редакции) |
|---|---|---|---|
| B-B | Базовая подпись с обязательными подписанными атрибутами | Создаёт согласованную структуру; протестировано на синтетических эталонных образцах | Та же поверхность |
| B-T | Отметка времени подписи по значению подписи | Создаёт согласованную структуру, если предоставлена служба меток времени RFC 3161 | Та же поверхность |
| B-LT | Данные проверки в Document Security Store | Создатель не поставляется в Core; выбор B-LT без пакета Enterprise завершается отказом по принципу fail-closed | Создатель поставляется |
| B-LTA | Архивная отметка времени документа | Создатель не поставляется в Core; завершается отказом по принципу fail-closed, как указано выше | Создатель поставляется |
“Создаёт согласованную структуру” означает, что NextPDF выдаёт подпись, структура которой соответствует процитированным пунктам. Артефакты проекта tests/Corpus/pades/ и tests/Golden/baselines/ используют эту структуру в проверках. Это не означает, что внешний валидатор сертифицирует результат на этом уровне. См. раздел о соответствии.
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Contracts\SignerInterface;
/** * Sign a byte range with any SignerInterface implementation. * * @param SignerInterface $signer A Core or Premium signer. * @param string $byteRange The PDF byte range to sign. * * @return string Hex-encoded CMS SignedData for the PDF /Contents field. */function signByteRange(SignerInterface $signer, string $byteRange): string{ return $signer->sign($byteRange)->toHex();}Функция зависит от контракта SignerInterface, а не от конкретного класса. Его реализуют как программный подписант Core (B-B или B-T), так и подписант Premium на аппаратном модуле безопасности (HSM). Код вызывающей стороны не меняется при смене редакции.
Пример кода — промышленное применение
Заголовок раздела «Пример кода — промышленное применение»<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Security\Signature\SignatureLevel;
/** * Resolve the highest baseline level the current runtime can produce. * * B-B and B-T are produced by the Core distribution. B-LT and B-LTA * require the Enterprise long-term-validation package; without it the * level reports unavailable so callers fail closed rather than emit a * structure that does not carry the validation material the level names. * * @return SignatureLevel The highest level available in this runtime. */function highestAvailableLevel(): SignatureLevel{ foreach ([ SignatureLevel::PAdES_B_LTA, SignatureLevel::PAdES_B_LT, SignatureLevel::PAdES_B_T, SignatureLevel::PAdES_B_B, ] as $level) { if ($level->isAvailableInEnvironment()) { return $level; } }
return SignatureLevel::PAdES_B_B;}isAvailableInEnvironment() возвращает true для B-B и B-T без дополнительного пакета. Он возвращает true для B-LT и B-LTA только когда установлен пакет долгосрочной проверки Enterprise. Если выбрать недоступный уровень без явного согласия на понижение, NextPDF выбрасывает типизированное исключение о недостижимом уровне; в сообщении назван отсутствующий пакет. Поэтому неправильно настроенное развёртывание завершается отказом по принципу fail-closed, а не молча выдаёт уровень ниже, чем запросила вызывающая сторона.
Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Структурно подпись B-T — это не то же самое, что подпись, проверенная как B-T. Проверка выполняется в верификаторе с его якорями доверия и актуальными данными об отзыве. Создатель не может утверждать её результат.
- PAdES B-LT и B-LTA требуют пакета NextPDF Enterprise (
nextpdf/enterprise). Если он не установлен, подписант завершает работу отказом по принципу fail-closed, а B-LT/B-LTA недоступны. Core предоставляет B-B/B-T через публичныйNextPDF\Contracts\SignerInterface; долгосрочная проверка остаётся заLtvManagerInterface. Выбор недоступного уровня в Core по умолчанию завершается отказом по принципу fail-closed. В типизированном исключении назван отсутствующий публичный пакет, а не внутренний тип. Корректное понижение до более низкого уровня включается явно и никогда не действует по умолчанию. - Дайджест диапазона байтов должен исключать значение подписи. Если дайджест также охватывает октеты
Contents, проверка никогда не сможет завершиться успешно — ISO 32000-2 §12.8.1. - В B-T отметка времени подписи вычисляется по значению подписи, а не по байтам документа. В B-LTA архивная отметка времени — это отдельная отметка времени документа. Они не взаимозаменяемы — ETSI PAdES §5.4.3 и §6.2.2.
- ETSI EN 319 142-1 (часть с базовыми уровнями) отсутствует в корпусе доказательств этого проекта. Утверждения о структуре уровней здесь опираются на ETSI EN 319 142-2, документ профиля
pades, ISO 32000-2 §12.8 и RFC 5652 / RFC 3161. Названия уровней и аддитивная структура заявлены как реализованные в v3.x. Эта страница не заявляет ни результатов испытаний на соответствие, ни сторонней аттестации.
Производительность
Заголовок раздела «Производительность»Стоимость растёт с уровнем. B-B — это одна операция подписания, которая для программного ключа занимает единицы миллисекунд. B-T добавляет один сетевой обмен со службой меток времени (Time-Stamping Authority). B-LT добавляет по одному запросу данных об отзыве на каждый сертификат в цепочке. B-LTA добавляет ещё одну отметку времени документа. Бюджет времени 1500 мс охватывает одну подпись B-T с удалённой службой меток времени (TSA) на прогретом соединении. B-LT или B-LTA при медленной конечной точке отзыва превышают его и должны выполняться вне пути обработки запроса. Профиль воспроизводимости — structural, а не bitwise. Отметка времени встраивает момент подписания, поэтому два запуска различаются в байтах отметки времени, тогда как структура документа остаётся идентичной.
Замечания по безопасности
Заголовок раздела «Замечания по безопасности»Уровень, который заявляет подпись, и уровень, на котором её проверяют, — это разные факты. Эта страница описывает только поверхность создателя. Долгосрочная проверка зависит от данных проверки, собранных во время подписания, и от того, будет ли верификатор позже доверять тем же якорям. Создатель не может гарантировать ни один из этих фактов. Доверие к отметке времени сводится к доверию к службе меток времени (Time-Stamping Authority), которую развёртывание закрепляет через внедряемый провайдер. Эта страница помечена export_control_class: legal-review-required, поскольку касается профилей криптографической подписи. Все нормативные источники изложены своими словами, и ни один не воспроизводится — в соответствии с гигиеной цитирования.
Соответствие
Заголовок раздела «Соответствие»| Утверждение | Стандарт | Пункт | Доказательство |
|---|---|---|---|
Значение подписи хранится в DER-кодировке как CMS SignedData или TimeStampToken в записи Contents словаря подписи. | ISO 32000-2 | §12.8.1 | |
Дайджест вычисляется по диапазонам ByteRange и исключает значение подписи. | ISO 32000-2 | §12.8.1 | |
| Атрибут отметки времени подписи вычисляется по значению подписи (B-T). | ETSI PAdES (EN 319 142) | §5.4.3 | |
| Материал для долгосрочной проверки хранится в Document Security Store (B-LT). | ETSI PAdES (EN 319 142) / ISO 32000-2 | §6.2.2 / §12.8.4.3 | , |
| Данные проверки размещаются в словарях DSS и VRI. | ETSI EN 319 142-2 | §6.3 | , |
| Архивная отметка времени документа сохраняет действительность в течение длительного времени (B-LTA). | ETSI PAdES (EN 319 142) | §6.2.2 | |
| SignerInfo несёт подписанные атрибуты content-type и message-digest. | RFC 5652 | §5.3 | |
| Дайджест сообщения вычисляется по подписанным атрибутам в DER-кодировке (процесс §5.4). | RFC 5652 | §5.4 | |
| Отметка времени запрашивается у RFC 3161 TSA и возвращает структуру TSTInfo. | RFC 3161 | §2.4.1 |
Все пункты изложены своими словами. NextPDF не воспроизводит нормативный текст. За официальной формулировкой обращайтесь к опубликованным стандартам. ETSI EN 319 142-1 отсутствует в корпусе доказательств. Структурные утверждения о базовых уровнях опираются на перечисленные выше источники и заявлены как реализованные в v3.x.
Коммерческий контекст
Заголовок раздела «Коммерческий контекст»Core создаёт структуры подписи B-B и B-T. Путь создания B-LT и B-LTA, хранение ключей в HSM и PKCS#11, а также профиль криптополитики FIPS 140-3 поставляются в редакциях Pro и Enterprise. Core получает создателя материала для долгосрочной проверки во время выполнения, поэтому движок с открытым исходным кодом не несёт коммерческих зависимостей. API SignerInterface не меняется при обновлении.
См. также
Заголовок раздела «См. также»- Security / Signing — реализация CMS, меток времени, долгосрочной проверки (LTV), цепочки доверия и отзыва.
- Contracts / Signing — интерфейс поставщика услуг (SPI)
SignerInterfaceи уровни стабильности. - Security — поверхность реализации шифрования и подписи.
- Conformance — поддержка соответствия PDF/A и профилям, дополняющая подписанное архивирование.
- PAdES · PAdES B-T · DSS · CAdES — термины глоссария.