コンテンツにスキップ

PAdES ベースラインプロファイル

Spec: ETSI EN 319 142-1 Spec: ISO 32000-2, §12.8 Spec: RFC 3161 Evidence: Standard-backed

PAdES は 4 つのベースラインレベル — B-BB-TB-LTB-LTA — を定義しており、これらは順に積み重なる関係にあります。各レベルでは、特定の証拠が 1 種類ずつ追加されます。このページではこの段階構造を説明し、名前として知られている最上位レベルではなく、義務を満たせる最も低いレベルを選べるようにします。

最も手厚く見えるからと「B-LTA」を選ぶ人もいれば、最も手間が少ないからと「B-B」を選ぶ人もいます。どちらも当て推量です。必要なレベルを決めるのは好みではなく、次の問いです。この署名はどれだけの期間、誰によって検証可能であり続けなければならないか? 低すぎるレベルを選ぶと、署名日には有効だった署名が、証明書の有効期限が切れた時点で検証不能になります。高すぎるレベルを選ぶと、本来は不要だったタイムスタンプ局や検証用素材のインフラに加えて、維持し続けなければならないアーカイブ上の義務まで背負い込みます。後からレベルを変更できない側が、最終的に誤ったレベルの代償を払うことになります。

  • これら 4 つのレベルは累積的です。各レベルは、1 つ前のレベルに 1 つの要素を追加したものです。
  • B-B — 必須の署名属性を伴う署名。 誰が何に署名したかを証明します。
  • B-TB-B に署名への信頼できるタイムスタンプを加えたもの。署名者の時計とは独立に、いつ署名されたかを証明します。
  • B-LTB-T に埋め込みの検証用素材(証明書と失効データ)を加えたもの。この文書は、署名時点で証明書が有効であったことの証拠を自身の中に保持します。
  • B-LTAB-LT に、時間の経過に応じて繰り返される文書タイムスタンプを加えたもの。数十年や暗号アルゴリズムの変化をまたいで、全体を検証可能なまま保ちます。
  • 最も安全に見えるものではなく、義務の存続期間でレベルを選びます。

NextPDF は、レベルを明示的で順序付けられた選択としてモデル化し、曖昧に扱いません。利用者がレベルを要求すると、エンジンはまさにそのレベルを生成するか、対処可能なエラーで失敗します。低いレベルでひそかに署名しておきながら、コンプライアンス記録上は高いレベルとして報告することはありません。この設計は、インフラが不足しているときに B-LTA の要求が暗黙に B-T へダウングレードされないようにするためのものです。各レベルの要件は述語として符号化されています。つまり、タイムスタンプが必須か、埋め込みの検証用素材が必須か、文書タイムスタンプが必須か、です。エンジンはそれらの述語をたどり、満たせれば生成し、満たせなければ停止します。

以下の段階構造は、エンジンが強制し、標準が定義しているものと同じです。

レベル前のレベルに対する追加答える問いデプロイに必要なもの
B-B署名属性: content-typemessage-digestsigning-timesigning-certificate-v2誰が署名し、正確にはどのバイト列か?署名鍵と証明書
B-T署名値に対する信頼できるタイムスタンプいつ署名されたかを証明できるか?タイムスタンプ局(TSA)
B-LT埋め込みの証明書 + 失効データ(DSS)証明書が署名時に有効だったことを後から証明できるか?TSA + 署名時の失効データへのアクセス
B-LTA時間の経過に応じて更新できる文書タイムスタンプ数十年後も検証可能か?TSA + 再タイムスタンプを行うアーカイブプロセス

最も重要な飛躍は B-T から B-LT への移行です。B-Tいつを証明します。B-LT は、文書を信頼の面で自己完結させます。つまり、今後何年にもわたって認証局へ到達でき、問い合わせに応答し続けてもらえることへの依存を断ちます。

  1. Step 1 of 4: ISO 32000-2 §12.8 — signatures, LTV, document timestamp
  2. Step 2 of 4: ETSI EN 319 142-1 PAdES baseline levels B-B…B-LTA
  3. Step 3 of 4: RFC 3161 Timestamp token (introduced at B-T)
  4. Step 4 of 4: RFC 6960 OCSP revocation evidence (embedded at B-LT)
PAdES の段階構造を支える標準: ISO 32000-2 は署名と検証用素材が PDF 内にどう収まるかを定義し、ETSI EN 319 142-1 はベースラインレベルを定義し、RFC 3161 は B-T が導入するタイムスタンプを定義し、RFC 6960 は B-LT が埋め込む失効証拠を定義します。

Evidence: Standard-backed レベルを定義しているのは ETSI です。 Spec: ETSI EN 319 142-1 は PAdES ベースラインレベルを定義し、 Spec: ETSI EN 319 142-2, §5.3 signature-time-stamp 属性を、その存在がタイムスタンプ付きのレベルを B-B と区別する任意要素として示しています。 Spec: ETSI EN 319 142-2, §6.3.2.2 は、署名が作成された直後に信頼できるタイムスタンプを適用すべきだと述べており、それによって記録される時刻を実際の署名時刻にできるだけ近づけます。 Spec: ETSI EN 319 142-2, §5.5 は、長期レベルのサポートには文書セキュリティストアと文書タイムスタンプの両方が必要だとしています。 これらが B-LTB-LTA の追加要素です。

コンテナ側の根拠は Spec: ISO 32000-2, §12.8.3.3 です: PAdES 署名は、長期検証と組み合わされた CAdES CMS プロファイルであり (§12.8.4)、さらに文書タイムスタンプ辞書(§12.8.5)を伴い、まさに ETSI EN 319 142-1 が記述するとおりです。B-LT が重要である理由は次にあります Spec: RFC 6960, §4.4.4 : アーカイブされた失効証拠は、 署名が作成された日に証明書を信頼できたことを示す助けになります たとえ証明書がとうの昔に有効期限切れになっていてもです。それを埋め込む目的は、まさにそこにあります。

NextPDF のエンジンは各レベルを要件述語として符号化し、要求されたレベルを生成するか失敗します — 生成していないレベルをうたうことはありません。

API はこの段階構造を反映しています。レベルを指定すると、エンジンはそれを契約として扱います。

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// The level is an explicit, ordered choice — not a flag you hope is honoured.
$level = SignatureLevel::PAdES_B_T;
// The level itself tells you what it requires, before you sign:
$level->requiresTimestamp(); // B-T and above → true
$level->requiresDss(); // B-LT and above → true
$level->requiresDocumentTimestamp(); // B-LTA only → true
// Ask for B-LTA only if the deployment can actually fulfil it.
// The engine produces exactly the requested level or fails with an
// actionable error — it never silently signs lower and reports higher.

B-LTA を要求し、デプロイが B-LTA に必要なものを供給できない場合、既定では失敗し、到達できた可能性のある最上位レベルを伝えます — B-T のファイルに B-LTA とラベルを付けて黙って返すことはありません。

よくある落とし穴は、「B-LTA は単に最良のものだから、常にそれを選べばよい」という考えです。B-LTA は抽象的に優れているわけではありません。それは単により多くを含むということであり、より多くを含めば義務も増えます。それはタイムスタンプ局、署名時に収集される失効素材、そして文書を保護している暗号アルゴリズムやタイムスタンプ証明書が弱くなる前に文書を再タイムスタンプする継続的なアーカイブプロセスを必要とします。誰も再タイムスタンプしない B-LTA ファイルは将来にわたって安全ではありません — それは余分な手続きを伴う B-LT ファイルにすぎません。逆に、10 年存続しなければならない契約に対する B-B は「軽量」ではありません。それは証明書の有効期限が切れる日に検証に失敗する署名です。正しいレベルとは、義務が要求するものであり、それ以上でもそれ以下でもありません。

NextPDF は要求された PAdES レベルを生成しますが、そのレベルが依存する当事者を提供することはしません。タイムスタンプ局、証明書チェーン、トラストアンカー、そして署名時に失効データを取得するための接続性は、デプロイの責任です。エンジンは構造を実装し、レベル契約を強制しますが、TSA を信頼できるものにしたり証明書を有効にしたりはできません。生成される構造は、そのレベルが要求する要素を保持し、エンジン自身のテストおよび引用された条項に照らして検証されています。これは第三者による適合性認証ではなく、このページは eIDAS 上の法的効力を主張するものでもありません。これは証明書、署名者、そして管轄区域に依存します。署名時刻が独立して信頼されるかどうかは次で扱います タイムスタンプと信頼できる時刻。長期証拠が署名をどのように有効に保つかは次で扱います 長期検証

期待値を正確に合わせるための境界は次のとおりです:

  • B-LTB-LTA は長期検証の構造を出力するものであり、適合性を判定するものではありません。 エンジンが書き出すのは、文書セキュリティストア辞書と文書タイムスタンプのリビジョン — Type = DocTimeStamp を持つ署名辞書( Spec: ISO 32000-2, §12.8 に準拠)です。ここでは、その構造をプロファイル適合性テスト済みとしては宣伝していません。ETSI EN 319 142-1 のプロファイルチェックは Pro および Enterprise の CI レーンでリリース時にゲートされるため、このページは生成されたファイルについて ETSI EN 319 142-1 への適合を主張しません。
  • 暗号化された文書は B-LT および B-LTA に対してフェイルクローズします。 暗号化された文書で長期レベルを要求すると、部分的な長期リビジョンを書き出すのではなく、対処可能なエラーで停止します。

各レベルのティア別提供状況 — 4 つすべてに、同じ高レベルのシームである setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save() から到達できます:

PAdES baseline level — edition availability
Edition Availability
Core

PAdES B-B — 署名属性のベースライン。Core のシームです。

Pro

PAdES B-T を追加 — 署名値に対する信頼できるタイムスタンプ。これを駆動するのは TsaClient です。

Enterprise

PAdES B-LTB-LTA を追加 — 埋め込みの検証用素材(DSS)と更新可能な文書タイムスタンプのアーカイブループです。これらは同じ高レベルのシームを通じて動作しますが、Pro と Enterprise の両パッケージがインストールされている場合だけです。どちらかが欠けていると、呼び出しは部分的な長期リビジョンを書き出すのではなくフェイルクローズします。

  • PAdES — PDF Advanced Electronic Signatures。PDF 向けに CMS 署名をプロファイル化した ETSI EN 319 142 シリーズ。
  • ベースラインレベルB-BB-TB-LTB-LTA のいずれか。定義された累積的な必須署名要素の集合。
  • B-B — 必須の署名属性を伴うベースライン署名。
  • B-TB-B に署名値への信頼できるタイムスタンプを加えたもの。
  • B-LTB-T に埋め込みの長期検証用素材(DSS)を加えたもの。
  • B-LTAB-LT にアーカイブ有効性のための更新可能な文書タイムスタンプを加えたもの。
  • DSS — 文書セキュリティストア。埋め込みの証明書と失効データを保持する PDF 構造。
  • TSA — タイムスタンプ局。RFC 3161 タイムスタンプトークンを発行する信頼できるサービス。