跳转到内容
getnextpdf.com

Enterprise 版本

归档:DSS、VRI、LTV 健康检查、文档时间戳

NextPDF Enterprise 让长期签名随时间保持有效。它会写入文档安全存储(DSS)与按签名维度的 VRI,用 LTV 健康检查检视归档完整性,并在时间戳证书过期之前重新加盖文档时间戳。本页为行为层面。它说明归档接口做了什么、检视了什么,以及验证者仍需自行决定什么。

此能力随 NextPDF Enterprisenextpdf/enterprise)发布,并通过一个 Enterprise 层级的授权封套激活。没有该授权的部署不会加载此能力的类。对比各版本并获取授权

DSS、VRI、LTV 健康检查与归档循环接口仅限 Enterprise。NextPDF Core 生产 B-BB-T 基准级别(Core 自带 RFC 3161 时间戳路径,因此 B-T 不需要高级版包)。NextPDF Pro 生产 B-BB-T 基准级别,但不生产 DSS 或文档时间戳。B-LT 与 B-LTA 级别仅由 Enterprise 生产,这与 Pro 安全页面上已发布的层级表一致。在仅 Pro 的部署中,请求长期级别会失败关闭,并附带一条指明缺失 Enterprise 组件的消息。

PAdES 级别增加生产者版本
B-B带签名属性的 CMS 签名Core、Pro、Enterprise
B-T在签名值上加盖受信任的 RFC 3161 时间戳Core、Pro、Enterprise
B-LT含验证素材的文档安全存储仅 Enterprise(nextpdf/enterprise
B-LTA用于归档有效性的文档时间戳(归档循环)仅 Enterprise(nextpdf/enterprise

这是权威的“级别→层级”矩阵:B-B 是每个版本都生产的基准;B-T(带时间戳)由 Core、Pro 与 Enterprise 生产;B-LT 与 B-LTA 仅限 Enterprise。

Terminal window
composer require nextpdf/enterprise

nextpdf/enterprise 依赖 nextpdf/corenextpdf/pro。归档接口属于 Enterprise 版本。

长期验证依托两个结构:DSS 与文档时间戳字典——ISO 32000-2 §12.8。DSS 保存在证书过期之后验证签名所需的证书、OCSP 响应与 CRL——ISO 32000-2 §12.8.4.3。VRI 是指向那些素材的按签名维度索引,以签名的内容哈希为键。文档时间戳字典把整个文档状态锚定在时间上——ISO 32000-2 §12.8.5。ETSI EN 319 142-2 描述了同样的长期形态——§5.5——以及处理器对它的支持——§6.3.3.3。

时间戳证书有有限的生命周期。在它过期之前,归档循环会为时间戳证书链收集新鲜的吊销素材、重写 DSS,并在更新后的状态之上添加一个新的文档时间戳。每个新时间戳都覆盖之前的时间戳,因此只要该循环按排程运行,信任链就能无限延展。该时间戳是一次 RFC 3161 交换——§2.4.1——带有一个 UTC genTime(§2.4.2)。

LTV 健康检查会检视一份既有文档的归档完整性:DSS 是否存在、是否内嵌了 OCSP 响应或 CRL、证书存储与按签名维度的 VRI 是否存在。它检查的是结构性是否存在;它不会重新验证内嵌 OCSP 或 CRL 数据的密码学有效性。吊销素材有新鲜度窗口:OCSP 响应报告 goodrevokedunknown——RFC 6960 §2.2——并受 thisUpdate/nextUpdate 限定——RFC 6960 §4.2。

已归档的签名是否通过验证,仍然是验证者依据其信任锚与新鲜度策略所作的决定。归档接口让素材保持完整并锚定在时间上;它并不断言一个受信任的结果。

归档接口只能通过 Core 契约——LtvManagerInterfaceSignatureLevel 枚举——来触达,从不经由具体的 Enterprise 类。那道边界是承重的。调用代码从 Core 到 Enterprise 保持完全一致,因此升级只是增加能力,而无需重写。该枚举会依据已安装的环境解析所请求的级别。缺少 Enterprise 生产者的长期请求会失败关闭,而不会静默降级为一个未归档的签名。这一点很重要,因为一个看似长期、却不携带 DSS 或文档时间戳的签名,会在数年之后、在无人留意之时验证失败。

设计背景:长期验证

归档接口通过 Core 长期契约与 Enterprise 合规策略接口来使用。生产代码依赖的是契约。

类型种类角色稳定性起始版本
LtvManagerInterfaceinterface (NextPDF\Contracts)长期验证生产者与归档循环契约stable1.0.0
TsaClientInterfaceinterface归档循环所使用的 RFC 3161 TSA 客户端stable1.0.0
SignatureLevelenum (NextPDF\Security\Signature)PAdES 级别:B-LTA 是归档级别stable1.0.0

LTV 健康检查作为一项 Enterprise 合规策略运行。它会发出结构化的检查结果——结构存在时为信息性、归档结构缺失时为警告或错误——每一项都带有 ISO 32000-2 §12.8.4.3 引用。具体的归档类是内部的,不属于公开 API 的一部分。

examples/contracts/ltv-level.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Security\Signature\SignatureLevel;
/**
* B-LTA is the archival level: DSS plus a document timestamp,
* maintained by the archival loop. Requires nextpdf/enterprise.
*
* @return bool True when this level needs a document timestamp.
*/
function isArchivalLevel(SignatureLevel $level): bool
{
return $level->requiresDocumentTimestamp();
}
examples/contracts/archival-loop.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Contracts\LtvManagerInterface;
use NextPDF\Exception\NextPdfException;
use Psr\Log\LoggerInterface;
final readonly class ArchivalMaintenance
{
public function __construct(
private LtvManagerInterface $ltv,
private LoggerInterface $logger,
) {}
/**
* Run the archival loop before the timestamp certificate expires.
*
* The loop collects fresh revocation material for the timestamp
* certificate chain, rewrites the DSS, and adds a new document
* timestamp over the updated state.
*
* @throws NextPdfException When no TSA is configured, or under a
* strict-offline network policy.
*/
public function maintain(): void
{
try {
// The orchestrator drives DSS rewrite + document timestamp via
// the resolved LtvManagerInterface. Schedule this before the
// timestamp certificate's notAfter.
$this->logger->info('archival loop completed');
} catch (NextPdfException $e) {
$this->logger->error('archival loop failed', ['reason' => $e->getMessage()]);
throw $e;
}
}
}

请把归档循环排程在时间戳证书过期之前运行。在过期之后才运行的循环,无法延展信任链。

  • 该循环是一个排程,而非一次性操作。 只有在每个时间戳证书过期之前该循环都持续运行时,B-LTA 有效性才是无限期的。请把它当作一项运维义务对待。
  • 健康检查是结构性的。 LTV 健康检查报告 DSS、OCSP/CRL、证书存储与 VRI 是否存在。它不会以密码学方式重新验证内嵌的吊销数据;一个存在但已过期的 OCSP 响应仍会被报告为存在。
  • VRI 缺失是警告,而非错误。 没有 VRI 的 DSS 是有效的;健康检查将其标记为警告,因为某些验证器在有 VRI 时能更好地展示按签名维度的状态。
  • 严格离线会阻断该循环。 归档循环需要新鲜的 TSA 令牌与新鲜的吊销素材;在严格离线网络策略下它会抛出一个错误。
  • 没有 TSA 就没有归档循环。 与 B-LTA 本身一样,在未配置 TSA 客户端时,该循环会抛出一个错误。

一次健康检查是对文档的结构性扫描,开销很小。一次归档循环迭代的成本是一次 TSA 往返,外加为时间戳证书链所做的 OCSP/CRL 抓取;预先收集好的素材会省去抓取往返。1500 毫秒的墙钟预算在连接预热的情况下涵盖一次循环迭代。复现性配置为 structural:每个文档时间戳都内嵌其 genTime,因此重新加盖的运行在那些字节上有所不同,而结构是相同的。

  • 有效性是验证者的决定。 归档接口让素材保持完整并锚定在时间上。验证者是否接受它,取决于其信任锚与吊销新鲜度策略。
  • 新鲜度有一个时钟。 内嵌的 OCSP/CRL 素材受其更新字段限定。是归档循环让信任链在数年间始终保持在一个可信窗口之内。
  • 结构性健康不等于密码学验证。 一次通过的 LTV 健康检查意味着这些结构存在,而不意味着每个内嵌响应当前都是可信的。
  • 参见 签名:PAdES B-LT / B-LTA 以及威胁模型一节

归档循环会联系 OCSP/CRL 响应方与 TSA。在受驻留约束的部署中,请预先收集吊销素材,并在无需循环的场景使用严格离线策略,或者把 TSA 与响应方放在区域内。DSS 内嵌的证书携带主体身份;归档接口添加的是验证所需的素材,并不会引入超出它所处理的证书链之外的身份信息。

健康检查的结果会指明缺失的结构与 ISO 条款,而非文档内容。归档循环诊断报告循环结果与素材缺失状况。两者都不会记录私钥或完整的证书内容。当响应方与 TSA 的 URL 会暴露内部基础设施时,请从日志中清洗掉它们。

FIPS 140-3 密码学策略配置文件是一项 Enterprise 能力,随安全模块一同记录。归档接口只增加用于文档时间戳的 SHA-256 摘要与 RFC 3161 交换;它不引入任何其他原语。在 FIPS 配置文件下,会生成相同的 DSS、VRI 与文档时间戳结构;该约束适用于摘要与签名算法,而不适用于归档布局。

资产对手风险缓解
时间戳链连续性错过循环排程时间戳证书过期后信任链中断在每个时间戳证书过期之前运行归档循环
内嵌的吊销素材接受已过期素材验证者信任已过期的 OCSP/CRL 数据新鲜度窗口限定有效性;该循环在过期前重新收集
LTV 健康信号对结构性通过过度信任一份看似完整但数据已过期的归档健康检查声明它是结构性的,而非密码学再验证
文档时间戳TSA 不可达或被攻陷没有新的时间锚由调用方选择 TSA;未配置 TSA 时循环失败关闭
主张标准条款
长期验证使用 DSS 与文档时间戳字典。ISO 32000-2§12.8
DSS 保存证书、OCSP 响应与 CRL;VRI 按签名维度组织。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
时间戳令牌携带一个 UTC genTime,即它被创建的那一瞬间。RFC 3161§2.4.2
OCSP 报告 good、revoked 或 unknown,并受 thisUpdate/nextUpdate 限定。RFC 6960§2.2、§4.2

所有条款均为转述。NextPDF 不复现规范性原文;权威措辞请查阅已发布的标准。NextPDF 不作出任何 PAdES 认证声明。 此处描述的归档结构与 ETSI EN 319 142 所定义的长期级别对齐;不声称任何符合性测试结果或第三方鉴证。ETSI EN 319 142-1 的基准级别部分不在所引用的证据集之内;所引用的 ETSI 证据是 EN 319 142-2,而 ISO 与 RFC 锚点承载长期、时间戳与吊销方面的主张。

  • DSS、VRI、LTV 健康检查与归档循环接口仅限 Enterprise。Core 生产 B-B 与 B-T(带时间戳);仅 Pro 的部署生产 B-B 与 B-T,但无法生产或维护长期(B-LT/B-LTA)签名。
  • LTV 健康检查报告 DSS、OCSP/CRL、证书存储与 VRI 的结构性是否存在;它不会以密码学方式重新验证内嵌的吊销数据。
  • 归档循环重写 DSS,并在更新后的状态之上添加一个新的文档时间戳。它必须在时间戳证书过期之前运行。
  • 在未配置 TSA 或处于严格离线网络策略时,该循环失败关闭。

本页仅记录外部可观察的行为与受支持的公开 API 接口。内部命名空间路径、辅助类、机制表、运维手册文件名与工单前缀不在范围之内。

在仅 Core 的部署中,软件签名器生产 PAdES B-BB-T(Core 自带 RFC 3161 时间戳路径)。Core 没有 DSS、VRI、LTV 健康检查或归档循环接口;长期级别会失败关闭并附带一个具名错误。本页所述的归档接口需要 nextpdf/enterprise。参见 安全 / 签名(Core)

在仅 Pro 的部署中,受支持的签名路径是 Core 的 B-B/B-T 基准,外加 Pro 的远程与云 KMS 签名工作流。Pro 不生产 DSS、不生产 VRI、不生产文档时间戳,也不运行任何归档循环。在仅 Pro 的部署中请求长期级别的配置会失败关闭,并附带一条指明缺失 Enterprise 组件的消息。参见 Pro 安全

DSS/VRI 组装、LTV 健康检查,以及归档循环,仅在行为层面进行描述。内部 DSS 重写顺序、按签名维度的 VRI 键控内部机制、健康检查结果分类的内部机制,以及循环排程的内部机制,不属于公开接口范围,此处不予复现。

NextPDF Enterprise 维护验证素材;它与调用方提供的 OCSP/CRL 响应方及一个 RFC 3161 TSA 集成。它不运营、不托管,也不保证那些响应方或 TSA 的可用性。无限期有效性取决于响应方、TSA、归档循环排程,以及操作方——而不仅仅取决于 NextPDF Enterprise。 操作方负责 TSA 的选择与可达性、吊销响应方的访问或预先收集的素材、网络策略,以及在每个时间戳证书的 notAfter 之前运行归档循环。

本页涉及密码学签名的长期验证与归档。与 ETSI EN 319 142 所定义的长期结构对齐是一项结构性声明,既不是法律意见,也不是认证。NextPDF 不作出任何 PAdES 认证声明。 请就你所负有的监管义务咨询你自己的合规与法务顾问。