Перейти к содержимому

Сопоставление базовых уровней 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.

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

+ RFC 3161 sig time-stamp

(Core / Enterprise
+ Document Security Store

(Enterprise only)
+ archive doc time-stamp

(Enterprise only)

B-B

CMS signature + signed attributes

B-T

+ signature time-stamp (over the signature value)

B-LT

+ DSS validation material (cert, OCSP, CRL)

B-LTA

+ archive document time-stamp (over the DSS)

;

not

Pro)

Diagram

Для выбора уровня используйте перечисление 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/ используют эту структуру в проверках. Это не означает, что внешний валидатор сертифицирует результат на этом уровне. См. раздел о соответствии.

examples/contracts/signing-quickstart.php
<?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). Код вызывающей стороны не меняется при смене редакции.

examples/contracts/signing-level.php
<?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 — термины глоссария.