コンテンツにスキップ
getnextpdf.com

Enterprise エディション

証拠

NextPDF Enterprise は、ドキュメントごとの検証の検出結果を、決定論的な JSON 形式と安定した SHA-256 ダイジェストを持ち、オプションで RFC 3161 タイムスタンプトークンを保持する、封緘された不変のパッケージにまとめます。証跡のキャプチャは監査ワークフローをサポートします。法的証明、監査認証、またはドキュメントが準拠しているという証明ではありません。

この機能は NextPDF Enterprisenextpdf/enterprise)に同梱されており、Enterprise ティアのライセンスエンベロープで有効化されます。そのエンタイトルメントのないデプロイメントでは、この機能のクラスはロードされません。エディションを比較してライセンスを取得

Terminal window
composer require nextpdf/enterprise:^3

EvidencePortal がエントリーポイントです。generateEvidence($documentHash, $records, $tsaTimestamp) は、EvidenceRecord インスタンスのリストを EvidencePackage にまとめ、合格/不合格の統計を計算し、EvidenceStoreInterface を通じてパッケージを永続化し、封緘されたパッケージを返します。EvidenceRecord は、1 件のポリシーチェックをキャプチャします。ポリシー名、合格フラグ、詳細、それを生成したバリデーターバージョン、およびタイムスタンプです。

EvidencePackage は、いったん構築されると不変です。パッケージ ID、検証されたドキュメントの SHA-256、レコード、集計カウント、生成時刻、およびオプションの RFC 3161 タイムスタンプトークンを保持します。allPassed()passRate() がそれを要約します。その不変性により、パッケージは write-once-read-many (WORM) ストレージに適したものになります。

EvidenceExporter は、パッケージを決定論的な JSON 文字列 — 固定されたキー順序で再現可能 — にシリアライズするため、exportHash() は完全性検証のための安定した 64 文字の SHA-256 ダイジェストを返します。同じパッケージは、いつどこで計算されるかに関係なく、常に同じダイジェストを生成します。

ContinuousMonitor は、ドキュメントを再検証し、現在の証跡を保存された以前の証跡と不合格ポリシー名で差分し、問題を新規、解決済み、または変更なしに分類し、スケジュールチェック (isDue() / MonitorSchedule / MonitorFrequency) を公開します。これは時間をまたいだドリフト検出をサポートします。何が変わったかを報告するものであり、いかなる時点でも法的ステータスを主張するものではありません。

このモジュールは、監査ワークフローのために検証の検出結果をパッケージ化してタイムスタンプを付与します。何かを認証するものではありません。

  • RFC 3161 タイムスタンプトークンは、パッケージのデータを時刻値にバインドします。データがその時刻より前に存在したという証跡を提供します。法的証明ではなく、タイムスタンプが付与されたコンテンツが準拠している、または有効であると主張するものでもありません。
  • allPassed() === true の封緘されたパッケージは、含まれるチェックが、それらが実装するルールに対して合格したことを記録します。監査認証ではありません。
  • 決定論的なダイジェストは、パッケージバイトの完全性を証明します。ドキュメントの規制上の十分性を証明するものではありません。

証跡のキャプチャは監査ワークフローをサポートします。法的証明でも監査認証でもありません。有効性と適合性は、最終ファイルとバリデーターの組み合わせの性質のままです。

証跡のパッケージ化は Enterprise 専用のサーフェスです。Core と Pro は検出結果とレポートを生成します。Enterprise Evidence は、それらの検出結果を不変で決定論的、オプションでタイムスタンプが付与されたパッケージに封緘し、リグレッションを追跡します。これは別の場所 (Validation または Compliance のサーフェス) で生成された検出結果に依存します。それ自体が適合性チェックを実行することはありません。

証跡は、後から密かに書き換えられないことによってのみ有用であるため、EvidencePackage はミューテーターを持たない封緘された readonly の値であり、write-once-read-many ストレージにとって安全です。エクスポーターの toJson() 出力は、実行時のソートではなく固定されたキー挿入順序に従うため、同じパッケージは常に同一のバイトにシリアライズされます。そのバイトの安定性により、保存された exportHash() は後で完全性を検証できます。パッケージへのいかなる変更もダイジェストを変えるからです。RFC 3161 トークンは、判定ではなく時刻の埋め込み証跡として保持されるため、パッケージはドキュメントが準拠していると主張することなく、チェックが いつ 実行されたかを証明します。次いでリグレッション追跡は、以前のパッケージに対して不合格ポリシー名で差分するため、ドリフト検出はチェックの順序やカウントから独立したままです。

設計の背景:監査人に手渡せるコンプライアンス

クラス責務
EvidencePortal証跡パッケージのまとめ、永続化、取得。
EvidencePackage集計統計を伴うレコードの不変の封緘されたバンドル。
EvidenceRecordバリデーターバージョンとタイムスタンプを伴う 1 件のポリシーチェック結果。
EvidenceExporter決定論的な JSON シリアライズ。安定した SHA-256 ダイジェスト。
EvidenceStoreInterface永続化コントラクト。
InMemoryEvidenceStoreリファレンスのインメモリストア実装。
ContinuousMonitor再検証し、以前の証跡と差分する。
MonitorResult新規 / 解決済み / 変更なしの問題分類。
MonitorSchedule / MonitorFrequencyスケジュールベースのポーリング。
$package = $portal->generateEvidence($documentHash, $records);
$digest = $exporter->exportHash($package); // 64-char SHA-256
$package = $portal->generateEvidence($documentHash, $records, $tsaToken);
$logger->info('evidence.sealed', [
'package' => $package->packageId,
'digest' => $exporter->exportHash($package),
'pass_rate' => $package->passRate(),
]);
$delta = $monitor->check($package, $documentHash);
if ($delta->newIssues !== []) {
$logger->warning('evidence.regression', ['count' => count($delta->newIssues)]);
}
// The package is audit-supporting evidence, not an attestation of compliance.
  • 検出結果がない場合、passRate() は 0.0 を返します。空のパッケージは合格ではありません。
  • エクスポートが決定論的なのは EvidenceExporter を通じた場合のみです。任意のシリアライズをハッシュ化すると、安定ダイジェストの保証が破られます。
  • TSA トークンのないパッケージも依然として有効な証跡です。トークンは判定ではなく時刻のバインディングを追加します。

パッケージ化と決定論的なシリアライズは、レコード数に対して線形にスケールします。ダイジェストの計算は、シリアライズされた JSON に対する単一の SHA-256 パスです。

パッケージのダイジェストは、パッケージバイトの改ざん検知性を提供します。オプションの RFC 3161 トークンは、信頼できる TSA から取得されなければなりません。このモジュールはトークンを埋め込むものであり、TSA を保証するものではありません。レコードの詳細は機密の可能性があるものとして扱ってください(下記参照)。

証跡レコードとドキュメントハッシュは、規制対象コンテンツを参照する場合があります。パッケージ化はインプロセスです。永続化はお客様の EvidenceStoreInterface 実装に委譲されるため、レジデンシーはお客様のストアに従います。保存されたパッケージに対して、保持および最小化の管理策を適用してください。

パッケージのメタデータ(ID、ダイジェスト、カウント)はログに記録しても安全です。レコードの詳細には、抽出されたドキュメント文字列を含む検出結果メッセージがそのまま含まれる場合があります。共有シンクへ転送する前にそれらをスクラブしてください。

挙動参照ステータス
タイムスタンプトークンがデータを時刻にバインドするIETF RFC 3161 §2トークン埋め込み (TSA 提供)
DSS / 長期検証コンテキストISO 32000-2:2020 §12.8参照済み (ここでは生成ではなく利用)

この表は、このモジュールが合わせて構築されている仕様を記録したものです。タイムスタンプトークンは時刻の証跡であり、認証でも法的証明でもありません。

このモジュールは、パッケージバイトに対して SHA-256 を計算し、呼び出し元が提供する RFC 3161 トークンを埋め込みます。署名や鍵の保管は行いません。暗号操作と FIPS モードの挙動は、Security および Signature モジュールが処理します。

入力は検出結果とオプションの TSA トークンです。緩和策は、不変のパッケージ、安定した完全性ダイジェストを伴う決定論的なシリアライズ、および、ストアが WORM とアクセス制御を強制するための委譲された永続化です。

  • ポータルは、検出結果を、パッケージ ID、検証されたドキュメントの SHA-256、レコード、集計カウント、生成時刻、およびオプションの RFC 3161 タイムスタンプトークンを持つ、不変の封緘されたパッケージにまとめます。
  • エクスポーターは、パッケージを固定されたキー順序を持つ決定論的な JSON 文字列にシリアライズするため、ダイジェストは、いつどこで計算されるかに関係なく同一の、安定した 64 文字の SHA-256 になります。
  • 継続的モニターは、再検証し、現在の証跡を保存された以前の証跡と不合格ポリシー名で差分し、問題を新規、解決済み、または変更なしに分類します。
  • 検出結果がない場合、passRate() は 0.0 を返します — 空のパッケージは合格ではありません。TSA トークンのないパッケージも依然として有効な証跡です。
  • タイムスタンプトークンは、データがある時刻より前に存在したことの証跡です。法的証明ではなく、コンテンツの準拠性や有効性について何ら主張しません。

このページは、外部から観測できる挙動とサポート対象の公開 API サーフェスのみを説明します。内部の名前空間パス、ヘルパークラス、メカニズムの表、ランブックのファイル名、およびチケットプレフィックスは範囲外です。

Core と Pro は検出結果とレポートを生成します。それらの検出結果を、リグレッション追跡を伴う不変で決定論的、オプションでタイムスタンプが付与されたパッケージに封緘する機能には、Core ティアの同等品はありません。Enterprise サーフェスは別の場所で生成された検出結果に依存します。それ自体が適合性チェックを実行することはありません。

Pro フォールバック — ありません。この機能には Pro ティアの同等品はありません。封緘された証跡パッケージ、決定論的なエクスポーター、および継続的モニターは、nextpdf/enterprise パッケージにのみ同梱されています。このサーフェスは、Validation または Compliance のサーフェスからの検出結果を利用します。

ポータル、パッケージ、エクスポーター、およびモニターは、挙動レベルで記述しています。リファレンスのインメモリストアは文書化されています。永続的な永続化はホストが提供し、内部のストアの内部仕様は公開サーフェスの範囲外です。このモジュールは、呼び出し元が提供する TSA トークンを埋め込みます。TSA を保証するものではありません。

パッケージ化とシリアライズはインプロセスです。オペレーターは、永続的なストア実装を提供し、WORM の強制とアクセス制御に対して責任を負い、信頼できる TSA からの TSA トークンを提供します。証跡レコードとドキュメントハッシュは、規制対象コンテンツを参照する場合があります。レジデンシーはオペレーターのストアに従い、保持および最小化の管理策はオペレーターの責任です。

証跡のキャプチャは監査ワークフローをサポートします。法的証明でも監査認証でもなく、有効性と適合性は最終ファイルとバリデーターの組み合わせの性質のままです。このドキュメントは法的見解ではありません。ご自身のコンプライアンスおよび法務の助言者にご相談ください。