Подпись: 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/enterprisenextpdf/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, потому что метка времени должна охватывать состояние документа, уже содержащее данные для проверки. Схема ниже показывает эту последовательность действий модуля формирования.
Поверхность API
Заголовок раздела «Поверхность API»Вы используете модуль долгосрочного формирования 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 и перечисление.
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»<?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.
Пример кода — рабочая среда
Заголовок раздела «Пример кода — рабочая среда»<?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 как к содержимому документа, а не журнала.
Поведение в режиме FIPS
Заголовок раздела «Поведение в режиме FIPS»Профиль криптографической политики 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-T | RFC 3161 signature-time-stamp на значение подписи (структурный; не квалифицированный по eIDAS) | Core, Pro, Enterprise (все редакции) |
| B-LT | Document 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.
Статус проверки на соответствие NDA
Заголовок раздела «Статус проверки на соответствие NDA»Эта публичная страница описывает только внешне наблюдаемое поведение модуля формирования. Она не содержит внутренних путей пространств имён, внутренних имён классов или трейтов, имён файлов runbook и внутренних префиксов заявок. Конкретные типы модуля долгосрочного формирования Enterprise упоминаются только через публичный контракт Core (LtvManagerInterface, SignatureLevel). Подробности внутренней сборки DSS и архивного цикла приведены в закрытом подробном справочнике в рамках соглашения о неразглашении (NDA).
Резервный режим Core
Заголовок раздела «Резервный режим Core»При развёртывании только с Core программный подписывающий модуль формирует PAdES B-B и B-T с локальным ключом или ключом, переданным через контракт стратегии подписания Core. Core поставляет путь меток времени по RFC 3161, поэтому B-T достижим без какого-либо премиум-пакета. У Core нет модуля формирования DSS, VRI или меток времени документа; запрос B-LT или B-LTA завершается защищённым отказом с именованной ошибкой. См. Безопасность / Подписание (Core).
Резервный режим Pro
Заголовок раздела «Резервный режим Pro»При развёртывании только с 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.
Замечание о границе Enterprise
Заголовок раздела «Замечание о границе Enterprise»Модуль формирования 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. По вопросам ваших нормативных обязательств обращайтесь к консультантам по комплаенсу и праву.
См. также
Заголовок раздела «См. также»- Безопасность / Подписание (Core) — CMS, RFC 3161, проверка пути RFC 5280, OCSP/CRL.
- Безопасность Pro — базовый уровень B-B и граница Enterprise.
- Архив: DSS, VRI, состояние LTV — долгосрочное архивирование и состояние LTV.
- Проверка подписи — сторона проверки: криптографическая проверка CMS / меток времени, TSA на момент genTime и проверка архивной цепочки.
- Сопоставление базовых уровней PAdES — B-B, B-T, B-LT, B-LTA по редакциям.
- PAdES · DSS · VRI · LTV — термины глоссария.