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

Подпись: PAdES B-LT / B-LTA, DSS, метки времени документа

NextPDF Enterprise добавляет к подписи Core на базе Cryptographic Message Syntax (CMS) модуль долгосрочного формирования: Document Security Store (DSS), сведения для проверки каждой подписи (VRI) и метки времени документа. Эти структуры переводят базовую подпись PDF Advanced Electronic Signatures (PAdES) с уровня B-B на B-LT, а затем на B-LTA. На этой странице описано поведение: что записывает модуль формирования, какие решения он не принимает и где проходит граница Pro.

Окно терминала
composer require nextpdf/enterprise

nextpdf/enterprise зависит от nextpdf/core и nextpdf/pro. Настройте доступ к пакету в Private Packagist с учётными данными лицензии NextPDF.

В PAdES есть четыре базовых уровня. Каждый следующий добавляет данные к предыдущему. B-B — это подпись CMS с подписанными атрибутами. B-T добавляет доверенную метку времени по RFC 3161 для значения подписи. B-LT добавляет DSS с сертификатами, ответами Online Certificate Status Protocol (OCSP) и списками отозванных сертификатов (CRL), которые нужны проверяющей стороне после истечения срока действия сертификата подписи. B-LTA добавляет метку времени документа поверх всего состояния документа, включая DSS, благодаря чему данные для проверки остаются привязанными ко времени.

Core формирует CMS SignedData и сохраняет его в DER-кодировке в записи Contents словаря подписи — ISO 32000-2 §12.8.1. Для долгосрочной проверки используются два типа словарей: document security store и словарь метки времени документа — ISO 32000-2 §12.8. Модуль формирования Enterprise записывает DSS с данными о сертификатах, OCSP и CRL — ISO 32000-2 §12.8.4.3, а для B-LTA — словарь метки времени документа — ISO 32000-2 §12.8.5. ETSI EN 319 142-2 описывает ту же долгосрочную структуру: записи DSS плюс метки времени документа для долгосрочных подписей — §5.5, которые поддерживает обработчик подписи — §6.3.3.3.

Модуль формирования собирает данные об отзыве для каждого сертификата цепочки. Сначала он обращается к ответчику OCSP; ответ OCSP сообщает good, revoked или unknown — RFC 6960 §2.2, а поля thisUpdate и nextUpdate ограничивают свежесть статуса — RFC 6960 §4.2. Если OCSP недоступен, модуль переходит к CRL. Он проходит цепочку от подписавшего к якорю доверия, используя входные данные для проверки пути — RFC 5280 §6.1.

Метка времени документа B-LTA — это обмен по RFC 3161 со службой меток времени (TSA). Запрос возвращает значение Time Stamp Information (TSTInfo) — RFC 3161 §2.4.1, где genTime — это момент во Всемирном координированном времени (UTC), когда был создан токен — RFC 3161 §2.4.2. Токен встраивается в словарь /DocTimeStamp с /SubFilter /ETSI.RFC3161 так, чтобы он охватывал весь файл.

Проверяющая сторона решает, проходит ли сформированная подпись проверку, используя настроенные якоря доверия и политику отзыва. Модуль формирования только встраивает данные; он не объявляет результат доверенным. Эта граница ниже повторяется в местах, где она важна.

Порядок имеет значение: DSS должен быть записан до метки времени документа B-LTA, потому что метка времени должна охватывать состояние документа, уже содержащее данные для проверки. Схема ниже показывает эту последовательность действий модуля формирования.

RFC 3161 TSAOCSP or CRL responderEnterprise LtvManagerCore CMS SignerRFC 3161 TSAOCSP or CRL responderEnterprise LtvManagerCore CMS SignerB-LT — embed validation materialalt[OCSP available][OCSP unavailable]B-LTA — anchor the DSS in timeCallersign byteRange1CMS SignedData — B-B or B-T2OCSP request per chain certificate3OCSP response — good, revoked or unknown4CRL fetch — fallback5CRL6Write DSS — certs + OCSP + CRL7TimeStampReq over file incl. DSS8TimeStampToken9Verify token, embed /DocTimeStamp10Long-term PDF — B-LT or B-LTA11Caller
Diagram

Вы используете модуль долгосрочного формирования Enterprise через контракт Core. Рабочий код зависит от контракта, а не от конкретного типа реализации Enterprise.

ТипВидРольСтабильностьНачиная с
SignerInterfaceинтерфейс (NextPDF\Contracts)Базовый контракт подписания для вызывающего кодастабильный1.0.0
SignatureLevelперечисление (NextPDF\Security\Signature)Селектор уровня PAdES: B-B, B-T, B-LT, B-LTAстабильный1.0.0
LtvManagerInterfaceинтерфейс (NextPDF\Contracts)Контракт модуля долгосрочной проверки, разрешаемый во время выполнениястабильный1.0.0
TsaClientInterfaceинтерфейсКлиент TSA по RFC 3161, к которому модуль формирования обращается за метками времени документастабильный1.0.0

SignatureLevel::requiresDss() возвращает true для B-LT и B-LTA; SignatureLevel::requiresDocumentTimestamp() возвращает true только для B-LTA. Метод Core SignatureLevel::isAvailableInEnvironment() возвращает false для B-LT и B-LTA, когда модуль долгосрочного формирования Enterprise не установлен; тогда оркестратор Core завершает операцию защищённым отказом. Конкретные классы модуля формирования Enterprise являются внутренними и не входят в публичный API; опирайтесь на LtvManagerInterface и перечисление.

examples/contracts/pades-blt-quickstart.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Security\Signature\SignatureLevel;
/**
* Select the PAdES level for a long-term signature.
*
* B-LT embeds a DSS. B-LTA also adds a document timestamp.
* Both require the nextpdf/enterprise long-term producer at runtime.
*
* @return SignatureLevel The requested PAdES baseline level.
*/
function longTermLevel(): SignatureLevel
{
return SignatureLevel::PAdES_B_LTA;
}

Конфигурация подписания содержит уровень. Во время выполнения оркестратор Core разрешает модуль долгосрочного формирования через LtvManagerInterface, поэтому код приложения не ссылается на тип Enterprise.

examples/contracts/pades-blt-production.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Contracts\LtvManagerInterface;
use NextPDF\Contracts\SignerInterface;
use NextPDF\Exception\NextPdfException;
use Psr\Log\LoggerInterface;
final readonly class LongTermSigner
{
public function __construct(
private SignerInterface $signer,
private LtvManagerInterface $ltv,
private LoggerInterface $logger,
) {}
/**
* Sign, then embed the DSS and the B-LTA document timestamp.
*
* The order matters: the DSS is written first, then the document
* timestamp is taken over the document state that already includes it.
*
* @param string $byteRange The PDF byte range to sign.
*
* @throws NextPdfException When revocation material is missing under the
* fail-closed enforcement default, or when no TSA
* is configured for B-LTA.
*/
public function sign(string $byteRange): string
{
try {
$contents = $this->signer->sign($byteRange)->toHex();
// The orchestrator drives DSS collection and the document
// timestamp through the resolved LtvManagerInterface; revocation
// freshness and TSA reachability are operational inputs.
return $contents;
} catch (NextPdfException $e) {
$this->logger->error('long-term signing failed', ['reason' => $e->getMessage()]);
throw $e;
}
}
}

DSS должен быть записан до метки времени документа. Метка времени B-LTA охватывает весь файл, включая DSS, благодаря чему сами данные для проверки привязываются ко времени.

  • При отсутствии данных об отзыве по умолчанию срабатывает защищённый отказ. Если режим принудительной проверки не задан, модуль формирования считает отсутствие ответа OCSP и CRL для любого некорневого сертификата ошибкой, а не предупреждением. Это не даёт записать документ, заявляющий долгосрочный уровень, без данных об отзыве в DSS. Разрешающий сценарий включается явно и ограничивается предупреждениями.
  • B-LTA требует TSA. Метка времени документа — это полный цикл обмена по RFC 3161. Если клиент TSA не настроен, шаг B-LTA завершается ошибкой; B-LT молча не формируется.
  • Порядок имеет значение. Добавляйте метку времени документа только после записи DSS. Метка времени, взятая до DSS, не охватывает данные для проверки.
  • Запуск в изолированной сети. При строгой офлайн-политике сети модуль формирования не выполняет запросы OCSP/CRL и не обращается к TSA; он использует только данные, уже встроенные в DSS. B-LTA, для которого нужен свежий токен TSA, недоступен в строгом офлайн-режиме.
  • VRI включается явно. По умолчанию VRI для каждой подписи не записывается. Некоторые валидаторы лучше отображают долгосрочный статус при наличии VRI; включайте его, если он нужен целевой проверяющей стороне.

Затраты на сборку DSS растут с длиной цепочки и числом запрошенных ответов об отзыве. Каждый запрос OCSP или CRL — это один сетевой цикл обмена; заранее собранные или кешированные данные устраняют эти циклы. Запуск B-LTA добавляет один цикл обмена с TSA для метки времени документа. Бюджет времени в 1500 мс покрывает одну долгосрочную подпись при прогретых соединениях OCSP/CRL и TSA; холодные соединения или медленные ответчики определяют итоговое время. Профиль воспроизводимости — structural: метки времени встраивают моменты подписания и проставления штампа, поэтому два запуска различаются в этих байтах, тогда как структура документа идентична.

  • Доверие — это решение проверяющей стороны. Модуль формирования встраивает сертификаты, OCSP и CRL. Пройдёт ли подпись проверку, зависит от проверяющей стороны, её якорей доверия и политики свежести отзыва. NextPDF не поставляет встроенного списка доверия.
  • Свежесть данных об отзыве ограничена во времени. Поля OCSP thisUpdate/nextUpdate и сроки действия CRL ограничивают, как долго встроенные данные остаются пригодными. Архивный цикл повторно проставляет штамп до истечения срока действия сертификата метки времени; вы отвечаете за его выполнение по расписанию.
  • Защищённый отказ по умолчанию. По умолчанию строгий режим принудительной проверки отзыва не даёт заявить долгосрочный уровень без данных, которые его подтверждают.
  • См. раздел о модели угроз Enterprise и Архив: DSS, VRI, состояние LTV.

При получении OCSP и CRL модуль обращается к ответчикам, указанным в каждом сертификате; эти конечные точки и TSA видят метаданные запроса. Если у развёртывания есть ограничения по размещению данных, заранее соберите данные об отзыве и работайте по строгой офлайн-политике, чтобы во время подписания не было обращений ни к ответчикам, ни к TSA. Сертификаты содержат идентификационные данные субъекта. Модуль формирования встраивает сертификаты, необходимые для проверки, и не добавляет идентификационных данных сверх цепочки; он не удаляет поля субъекта из предоставленного вами сертификата.

Безопасная телеметрия и очистка журналов

Заголовок раздела «Безопасная телеметрия и очистка журналов»

Диагностика модуля формирования сообщает уровень, позицию в цепочке и причину отсутствия данных. Она не записывает в журнал закрытые ключи или полные тела сертификатов. При подключении логгера PSR-3 держите диагностические журналы потоков подписания на уровне подробности для непроизводственной среды и очищайте URL ответчиков, если они раскрывают внутреннюю инфраструктуру. Относитесь к встроенным байтам OCSP/CRL как к содержимому документа, а не журнала.

Профиль криптографической политики Federal Information Processing Standards (FIPS) 140-3 — это возможность Enterprise, описанная вместе с модулем безопасности. Модуль долгосрочного формирования не добавляет собственных криптографических примитивов, кроме дайджеста SHA-256, используемого для метки времени документа и обмена по RFC 3161; примитив подписания относится к подписывающему модулю Core. Когда профиль FIPS активен, формируются те же структуры DSS и метки времени документа; ограничение применяется к нижележащим алгоритмам подписи и дайджеста, а не к структуре DSS.

АктивПротивникРискМера противодействия
Данные об отзыве в DSSПринятие устаревших данныхПроверяющая сторона доверяет просроченным данным об отзывеПоля свежести OCSP/CRL ограничивают срок действия; архивный цикл повторно проставляет штамп до истечения срока
Метка времени документа B-LTAКомпрометация TSA или недоступность TSAНет надёжного якоря времениTSA выбирает вызывающий код; B-LTA завершается защищённым отказом, когда TSA не настроен
Заявление о долгосрочностиМолчаливое отсутствие данныхPDF с заявленной “долгосрочностью”, но без данных об отзывеЗащищённый отказ по умолчанию вызывает ошибку вместо предупреждения
Проверка подписиНеправильно настроенное доверие проверяющей стороныВидимая действительность, которую проверяющая сторона не должна утверждатьМодуль формирования указывает, что только встраивает данные; решение о доверии принимает проверяющая сторона
УтверждениеСтандартПунктreference_id (идентификатор)
Значение подписи (или токен метки времени) хранится в DER-кодировке в /Contents.ISO 32000-2§12.8.1
Долгосрочная проверка использует DSS и словарь метки времени документа.ISO 32000-2§12.8
DSS содержит сертификаты, ответы OCSP и CRL.ISO 32000-2§12.8.4.3
Метка времени документа использует словарь метки времени документа.ISO 32000-2§12.8.5
Записи DSS и метки времени документа поддерживают долгосрочные подписи.ETSI EN 319 142-2§5.5
Обработчик подписи поддерживает записи DSS и метки времени документа.ETSI EN 319 142-2§6.3.3.3
Токен метки времени несёт genTime в UTC — момент, когда он был создан.RFC 3161§2.4.2
OCSP сообщает good, revoked или unknown; свежесть ограничена thisUpdate/nextUpdate.RFC 6960§2.2, §4.2,

Все пункты приведены в пересказе. NextPDF не воспроизводит нормативный текст; за авторитетной формулировкой обращайтесь к опубликованным стандартам. NextPDF не делает заявления о сертификации PAdES. Описанные здесь структуры согласованы с уровнями B-LT и B-LTA, как они определены в ETSI EN 319 142; результат тестирования на соответствие и сторонняя аттестация не заявляются. Часть базовых уровней ETSI EN 319 142-1 находится вне приведённого набора доказательств, поэтому эта страница описывает формируемую структуру и границу Pro/Enterprise, а не сертифицированный уровень соответствия. Приведённое свидетельство ETSI — EN 319 142-2; ссылки ISO и RFC подтверждают заявления о долгосрочности и метках времени, как в справочнике по подписанию Core.

NextPDF Core формирует базовые уровни B-B и B-T стандарта PAdES: Core поставляет программный подписывающий модуль CMS и путь меток времени по RFC 3161, поэтому подпись B-T (с меткой времени) — возможность Core и не требует Enterprise. NextPDF Pro также формирует B-B и B-T: Pro компонует стек RFC 3161 из Core, чтобы добавить неподписанный атрибут signature-time-stamp к значению подписи (PadesBtTimestamper, проверено фикстурами). Уровни B-LT и B-LTA — модуль формирования DSS, VRI и меток времени документа — являются возможностью Enterprise и не формируются Core или Pro. Это соответствует опубликованной таблице уровней на странице безопасности Pro: B-B и B-T формируются Core и Pro, а B-LT и B-LTA — только Enterprise. Модуль формирования B-T является структурным: он компонует RFC 3161 signature-time-stamp согласно приведённым свидетельствам RFC 3161 / RFC 5652 / ETSI EN 319 122-1; это не сертифицированное заявление о соответствии ETSI EN 319 142-1 и не заявление о квалифицированности по eIDAS. При развёртывании только с Pro запрос B-LT или B-LTA завершается защищённым отказом с сообщением, называющим отсутствующий компонент Enterprise, потому что SignatureLevel::isAvailableInEnvironment() возвращает false, когда модуль долгосрочного формирования Enterprise отсутствует.

Уровень PAdESДобавляетРедакция модуля формирования
B-BПодпись CMS с подписанными атрибутамиCore, Pro, Enterprise (все редакции)
B-TRFC 3161 signature-time-stamp на значение подписи (структурный; не квалифицированный по eIDAS)Core, Pro, Enterprise (все редакции)
B-LTDocument Security Store с данными для проверкиТолько Enterprise (nextpdf/enterprise)
B-LTAМетки времени документа для архивной действительностиТолько Enterprise (nextpdf/enterprise)

Это каноническая матрица “уровень→редакция”: B-B — базовый уровень, формируемый каждой редакцией; B-T (с меткой времени) также формируется Core и Pro (Pro компонует стек RFC 3161 из Core); B-LT и B-LTA доступны только в Enterprise. Модуль формирования B-T является структурным; это не сертифицированное заявление о соответствии ETSI EN 319 142-1 и не заявление о квалифицированности по eIDAS.

Модуль долгосрочного формирования входит в редакцию Enterprise (license_feature_flag: enterprise). Он разрешается во время выполнения через контракт Core; публичный API не меняется при переходе с Pro на Enterprise.

  • И Core, и Pro формируют B-B и B-T (B-T добавляет RFC 3161 signature-time-stamp; Pro компонует стек RFC 3161 из Core). B-LT и B-LTA — это граница Enterprise; их запрос без nextpdf/enterprise завершается защищённым отказом с именованной ошибкой.
  • Модуль формирования записывает DSS (B-LT) и метку времени документа поверх DSS (B-LTA). Он встраивает данные для проверки; он не утверждает доверенный результат проверки.
  • Режим защищённого отказа, используемый по умолчанию для принудительной проверки отзыва, вызывает ошибку, когда данные об отзыве для некорневого сертификата отсутствуют, если вызывающий код не включил разрешающий сценарий.
  • B-LTA требует настроенного TSA; при его отсутствии шаг B-LTA завершается ошибкой, а не понижением до B-LT.

Эта публичная страница описывает только внешне наблюдаемое поведение модуля формирования. Она не содержит внутренних путей пространств имён, внутренних имён классов или трейтов, имён файлов runbook и внутренних префиксов заявок. Конкретные типы модуля долгосрочного формирования Enterprise упоминаются только через публичный контракт Core (LtvManagerInterface, SignatureLevel). Подробности внутренней сборки DSS и архивного цикла приведены в закрытом подробном справочнике в рамках соглашения о неразглашении (NDA).

При развёртывании только с Core программный подписывающий модуль формирует PAdES B-B и B-T с локальным ключом или ключом, переданным через контракт стратегии подписания Core. Core поставляет путь меток времени по RFC 3161, поэтому B-T достижим без какого-либо премиум-пакета. У Core нет модуля формирования DSS, VRI или меток времени документа; запрос B-LT или B-LTA завершается защищённым отказом с именованной ошибкой. См. Безопасность / Подписание (Core).

При развёртывании только с Pro поддерживаемый путь подписания — это базовый уровень Pro B-B и уровень Pro B-T (Pro компонует стек RFC 3161 из Core, чтобы добавить неподписанный атрибут signature-time-stamp), плюс его стратегии подписания через удалённую и облачную службу управления ключами (KMS). Pro не формирует DSS, VRI или метку времени документа. Конфигурация, запрашивающая B-LT или B-LTA при развёртывании только с Pro, завершается защищённым отказом с сообщением, называющим отсутствующий компонент Enterprise. См. Безопасность Pro для обзора поверхности подписания Pro.

Модуль формирования DSS, VRI и меток времени документа описан только на уровне поведения. Логика упорядочивания сборки DSS, внутренние детали формирования ключей VRI для каждой подписи и планирования архивного цикла находятся вне публичной поверхности и здесь не воспроизводятся.

NextPDF Enterprise встраивает данные для проверки; он интегрируется с предоставленными вызывающим кодом ответчиками OCSP/CRL и TSA по RFC 3161. Он сам не эксплуатирует, не размещает и не гарантирует доступность этих ответчиков или TSA. Долгосрочная действительность зависит от ответчиков, TSA, расписания архивного цикла и оператора — а не только от NextPDF Enterprise. Оператор отвечает за выбор и доступность TSA, доступ к ответчикам отзыва или заранее собранные данные, политику сети и выполнение архивного цикла до истечения срока действия каждого сертификата метки времени.

Эта страница помечена export_control_class: legal-review-required. Она касается криптографического подписания и долгосрочной проверки. Перед установкой флага publish требуется юридическое согласование. Согласованность со структурами B-LT и B-LTA, определёнными в ETSI EN 319 142, — это структурное утверждение, а не юридическое заключение и не сертификация. NextPDF не делает заявления о сертификации PAdES. По вопросам ваших нормативных обязательств обращайтесь к консультантам по комплаенсу и праву.