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

Enterprise редакция

Подпись: 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.

Эта возможность поставляется в составе NextPDF Enterprise (nextpdf/enterprise) и активируется лицензионным конвертом уровня Enterprise. Развёртывание без этого права доступа не загружает классы этой возможности. Сравните редакции и получите лицензию.

NextPDF Core формирует базовые уровни PAdES B-B и B-T: 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-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. Это соответствует опубликованной таблице редакций на странице безопасности 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

У долгосрочной действительности есть одно жёсткое правило порядка: метка времени документа должна охватывать данные для проверки. Поэтому DSS всегда записывается первым, а метка времени B-LTA берётся поверх состояния файла, которое его уже включает. Обратите этот порядок — и метка времени не защитит ничего из того, что проверяющая сторона прочитает годы спустя: сертификаты, OCSP и CRL окажутся вне её охвата. Поэтому модуль формирования встраивает данные и привязывает их ко времени, но не доходит до утверждения доверенного результата; это решение принадлежит проверяющей стороне и её якорям доверия. Защищённый отказ при отсутствии данных об отзыве означает, что документ, заявляющий долгосрочный уровень, никогда не выпускается без доказательств, которые подтверждают это заявление. Итог — подпись, которую третья сторона может перепроверить спустя долгое время после истечения срока действия сертификата подписи, не обращаясь к исходным ответчикам.

Предыстория проектирования: Долгосрочная проверка.

Вы используете модуль долгосрочного формирования 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/security/pades-blta-production.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Core\Document;
use NextPDF\Exception\NextPdfException;
use NextPDF\Security\Signature\CertificateInfo;
use NextPDF\Security\Signature\SignatureLevel;
use NextPDF\Security\Timestamp\TsaClient;
use Psr\Http\Client\ClientInterface;
use Psr\Log\LoggerInterface;
/**
* Produce a PAdES B-LTA signature through the high-level Document seam, which
* drives the Core PadesOrchestrator and the Enterprise long-term producer in the
* load-bearing order: sign, write the DSS (LtvManager::enableLtv), then add the
* /DocTimeStamp over the state that already includes it (::addDocumentTimestamp).
*/
final readonly class LongTermSigner
{
public function __construct(
private TsaClient $tsa, // RFC 3161 TSA client (required for B-T and above).
private ClientInterface $http, // PSR-18 client that fetches OCSP/CRL for the DSS.
private LoggerInterface $logger,
) {}
/**
* Sign at B-LTA and return the long-term-signed PDF bytes; requesting B-LTA
* without the nextpdf/enterprise producer fails closed rather than downgrading.
*
* @throws NextPdfException Fail-closed: enterprise producer absent
* (SignatureLevelUnreachableException), no HTTP client
* (SignatureException), or missing material (LtvException).
*/
public function sign(CertificateInfo $certInfo): string
{
try {
$document = Document::createStandalone();
$document->addPage();
$document->setSignature($certInfo, SignatureLevel::PAdES_B_LTA, $this->tsa, $this->http);
return $document->getPdfData();
} catch (NextPdfException $e) {
$this->logger->error('long-term B-LTA 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 с заявленной «долгосрочностью», но без данных об отзывеЗащищённый отказ по умолчанию вызывает ошибку вместо предупреждения
Проверка подписиНеправильно настроенное доверие проверяющей стороныВидимая действительность, которую проверяющая сторона не должна утверждатьМодуль формирования указывает, что только встраивает данные; решение о доверии принимает проверяющая сторона
УтверждениеСтандартПункт
Значение подписи (или токен метки времени) хранится в 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.

  • И 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.

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

При развёртывании только с 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, доступ к ответчикам отзыва или заранее собранные данные, политику сети и выполнение архивного цикла до истечения срока действия каждого сертификата метки времени.

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