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

Pro エディション

Security — 詳細リファレンス

これは、NextPDF Pro のセキュリティサーフェスに関する詳細リファレンスです。生成時マスキング、テキストレイヤーの PII 検出、リモートおよびクラウド KMS の署名セッション、複数当事者による逐次署名、CAdES および XAdES の取り込みパス、PAdES B-B ベースラインレベル、そして PAdES B-T 署名サポート(B-B 署名に加えて、署名値に対する 1 つの RFC 3161 signature-time-stamp)を扱います。パブリック API コントラクト、外部から観測可能な挙動、そして Enterprise の B-LT/B-LTA 境界を記載します。挙動レベルの内容であり、内部の実装パスは一切引用しません。

このケーパビリティは NextPDF Pronextpdf/pro)に同梱され、Pro ティアのライセンスエンベロープで有効化されます。そのエンタイトルメントを持たないデプロイメントでは、このケーパビリティのクラスはロードされません。エディションを比較してライセンスを入手する

Core はソフトウェア CMS 署名者、RFC 3161 タイムスタンプクライアント、RFC 5280 パス検証、そして OCSP と CRL の失効チェックを同梱します。Pro は、ここで説明するマスキング、PII 検出、リモートおよびクラウド KMS の署名サーフェス、そして PAdES B-T 署名サポート(Core の RFC 3161 スタックを組み合わせて signature-time-stamp を追加します)を追加します。このサーフェスのケーパビリティフラグは pro です。有効な Pro エンタイトルメントを持たないデプロイメントでは、これらのクラスはロードされず、Core の署名コントラクトは変更なく動作し続け、Core コントラクトに依存するコードはエンタイトルメントが存在しなくても壊れません。

Terminal window
composer require nextpdf/pro:^3

マスキングエンジンは、ページが書き込まれる前にテキストへ順序付きルールリストを適用します。ルールは PCRE パターンにマッチし、3 つのモードのいずれかでマッチを置換します。

  • BlackBox — マッチしたテキストをコンテンツストリームから削除し、塗りつぶし領域を予約します。このモードは、テスト済みのとおり、基となるテキストオブジェクトを削除します。
  • Asterisks — マッチした各文字をアスタリスクに置換し、文字数を保持します。
  • FixedLabel — マッチ全体を、設定可能なラベル(デフォルトは [REDACTED])に置換します。

ルールは、MaskingRule::exactMatch(リテラルは正規表現エスケープされます)による厳密なリテラルから、または MaskingRule::regex によるカスタム PCRE パターンから構築されます。MaskingConfig は、順序付きルールリスト、デフォルトモード、塗りつぶし色を保持します。MaskingConfig::fromArray は設定マップを解析し、使用可能な文字列パターンを持たないルールエントリは、インポート全体を失敗させるのではなく、暗黙のうちに破棄します。

PII サーフェスは PDF のテキストレイヤーを抽出し、メールアドレス、電話番号、米国の社会保障番号、クレジットカード番号に対する組み込みパターンを適用します。構造化された結果を返します。マッチが見つかったかどうかを示すブール値、マッチ数、マスクされたテキストビュー、スキャンされたタイプのリストです。呼び出し元は、スキャンを 4 つのタイプのサブセットに制限できます。このサーフェスはレンダリングされたページのグリフを上書きしません。テキストレイヤーを持たないスキャン済みページではマッチは得られません。結果は、設定されたタイプのテキストレイヤーのパターン検出として扱ってください。完全な個人データの削除ではなく、規制準拠の表明でもありません。

署名セッションは 2 フェーズです。RemoteSigningSession::create はセッションを開きます。prepare は 2 つの ByteRange 領域にわたってドキュメントダイジェストを計算し、CMS の署名付き属性を構築します。complete はストラテジーを呼び出して結果を埋め込みます。suspend はセッションをシリアライズするため、ワーカーは後で resumecompleteWithRawSignature でそれを再開できます。セッションは CMS SignedData を組み立て、それを署名ディクショナリの Contents エントリに DER エンコードして格納します — ISO 32000-2 §12.8.1。解析可能な X.509 証明書が与えられた場合、セッションは PAdES B-B の必須署名付き属性セット一式を出力します。content-type、message-digest、signing-time、signing-certificate-v2、そしてアルゴリズム保護属性です — RFC 5652 §5.3 および RFC 5652 §5。検証者はコンテンツダイジェストを再計算し、それを message-digest 属性と比較します。署名が有効であるためには、この比較が一致しなければなりません — RFC 5652 §5.4。

設定された PAdES レベルが B-T の場合(RemoteSigningConfig::default->withLevel(SignatureLevel::PAdES_B_T)、または SequentialSigner::withTimestamping 経由)かつタイムスタンププロバイダーが配線されている場合、セッションは追加で、最初の SignerInfo に対し、ちょうど 1 つの RFC 3161 signature-time-stamp を CMS の 署名なし 属性として埋め込みます。signature-time-stamp は、署名者のデジタル署名値に対して計算された 1 つの time-stamp token を保持する署名なし属性です — ETSI EN 319 122-1 §5.3。その MessageImprint は、ASN.1 のタグと長さを除いた SignerInfo signature フィールド値のハッシュです — ETSI EN 319 122-1 §5.3 および RFC 3161 Appendix A(OID id-aa-timeStampToken = 1.2.840.113549.1.9.16.2.14)。タイムスタンプは 署名なし 属性であるため、B-B の署名付き属性、message-digest、SignerInfo の signature 値、そして PDF の /ByteRange は B-B 出力とバイト単位で同一です。CMS が署名なし属性の分だけ大きくなるだけであり、トークンが収まるように B-T の予約済み /Contents スペースが引き上げられます。トークンは、設定されたタイムスタンププロバイダー(デフォルトの Core RFC 3161 クライアント、または呼び出し元が提供するプロバイダー)から要求されます。デフォルトプロバイダーのパスでは imprint ダイジェストは SHA-256 です。SHA-1 にバインドされたレガシーの ESSCertID v1 形式は拒否され、ESSCertIDv2 が必須です — RFC 5816 §1。TSA の障害、拒否されたリクエスト、不正な nonce または message-imprint のエコー、不正な形式またはサポートされないアルゴリズムのトークン、あるいは暗号検証に失敗するトークンは、型付き PadesBt 例外として表面化し、元となった Core 例外は previous スロー可能オブジェクトとして保持されます。NextPDF Pro は、ETSI EN 319 122-1 §5.3、RFC 3161、RFC 5652、RFC 5816 に従って PAdES B-T 署名サポートを実装しており、フィクスチャで検証されています。独立した ETSI EN 319 142-1 認証を主張するものではなく、ドキュメントの法的有効性も主張しません。

SequentialSigner は複数当事者による署名を調整します。各署名者は別々の差分更新リビジョンです。最初の署名者は、certifyFirst を通じて設定された DocMDP 制限を伴う認証署名にできます。PadesWrapper は既存の署名を取り込みます。fromCades は CMS 構造を直接埋め込み、fromXades は XAdES ドキュメントを解析してそのコア署名マテリアルを再利用し、detect はフォーマットによって自動選択します。XAdES パスは証明書、チェーン、署名値、アルゴリズムを再利用します。XAdES の qualifying properties は転送しません。

Terminal window
composer require nextpdf/pro:^3
種別役割安定性導入バージョン
RemoteSigningSessionclass2 フェーズのリモートまたは非同期署名セッションstable1.9.0
RemoteSigningConfigclassPAdES レベルとアルゴリズムを含む、イミュータブルなセッション設定stable1.9.0
SequentialSignerclassDocMDP サポートを備えた複数当事者の逐次署名stable1.9.0
SequentialSigningResultclass逐次実行の結果: PDF バイト列、チェーン、件数、完全性stable1.9.0
SigningStrategyinterfaceセッションが呼び出す署名メカニズムのコントラクトstable1.9.0
PadesWrapperclassPAdES 埋め込みのために既存の CAdES または XAdES 署名をラップstable1.9.0
KmsSignerInterfaceinterface (SPI)サードパーティの HSM および KMS ドライバーコントラクト。Core の HSM 署名者コントラクトを拡張stable2.1.0
SignatureAlgorithmenumPro の署名アルゴリズム OID とダイジェスト名stable2.1.0
GenerationTimeMaskerclassページが書き込まれる前に適用されるルール駆動マスキングstable1.9.0
MaskingConfigclassイミュータブルなマスキング設定stable1.9.0
MaskingRuleclass単一のマスキングルール(リテラルまたは PCRE)stable1.9.0
MaskingModeenumBlackBox、Asterisks、FixedLabelstable1.9.0

ストラテジーは DER エンコードされた署名付き属性を操作し、生の署名バイト列を返します。CMS SignedData を組み立てるのは、ストラテジーではなくセッションです。ストラテジーは、署名者証明書 DER、リーフからルートへ順序付けられたチェーン DER、署名アルゴリズム OID、ダイジェストアルゴリズム名、そしてセッションをシリアライズして再開できるストラテジーを示す isAsync フラグを公開します。

KmsSignerInterface は Core の HSM 署名者コントラクトを拡張します。レジストリ検索用の安定した providerId、呼び出しごとに明示的なキーバージョンパラメーターを持つ signWithVersion メソッド、そして呼び出し元が sign 呼び出しの前にアルゴリズム互換性を発見できるよう supportsAlgorithmsupportedAlgorithms を追加します。予約された組み込みプロバイダー識別子は、aws-kmsazure-keyvaultgcp-kmspkcs11openssl-cliopenssl-engine です。サードパーティのドライバーは、衝突を避けるために識別子に名前空間を付けなければなりません。デフォルトのキーバージョンセマンティクスはプロバイダーによって異なります。エイリアスを解決するプロバイダーは、バージョンが null のときにエイリアスからアクティブなキーを解決します。最新の有効なバージョンを選択するプロバイダーは、そのトランスポートを通じてそれを行います。サーバー側にアクティブバージョンの概念を持たないプロバイダーは、設定にピン留めされたバージョンを使用しなければならず、呼び出しと設定のいずれもバージョンをピン留めしていない場合はキー管理エラーを発生させなければなりません。空でないバージョンはそのバージョンをピン留めし、プロバイダーは、そのバージョンが不明、無効化、または失効している場合にキー管理エラーを発生させなければなりません。

  • 生成された署名は検証済みの署名ではありません。パス検証は、検証者のトラストアンカーと基本制約のチェックを用いて、検証者側で実行されます — RFC 5280 §6.1。生成者はその結果を主張できません。
  • セッションには、非 X.509 の合成証明書バイト列に対するレガシーの 3 属性フォールバックがあります。本番ストラテジーは常に実際の X.509 DER を提供するため、B-B 属性セット一式が本番パスです。フォールバックは、歴史的な DER メカニクスのテストサーフェスのためにのみ存在します。
  • CMS 構造は予約された Contents スペースに収まらなければなりません。完全な証明書チェーンを持つ B-B SignedData にはサイズがあります。組み立てられた CMS が予約済みの 16 進スペースを超えると、セッションはオーバーフローエラーを発生させます。それに応じて予約スペースをサイジングしてください。B-T の場合、埋め込まれる RFC 3161 トークン(TSA の証明書チェーンが支配的)が CMS を拡大します。B-T の予約スペースは自動的に引き上げられ、サイズ不足の設定済みスペースは、切り詰めるのではなく型付き設定エラーでフェイルクローズします。
  • MaskingConfig::fromArray は、使用可能な文字列パターンを持たないエントリを、インポートを失敗させるのではなく破棄します。暗黙の破棄が許容できない場合は、設定ソースを検証してください。
  • マスキングの black-box モードは、マッチした連続部分に対して空の置換を出力し、基となるテキストを削除します。値にマッチしないルールはそれをマスクしません。エンジンは、すべての機密コンテンツが見つかることを主張しません。
  • B-T には配線されたタイムスタンププロバイダーが必要です。デフォルトの Core RFC 3161 プロバイダーのパスでは imprint ダイジェストは SHA-256 です。そのパス上の SHA-256 以外の imprint ダイジェストは、暗黙のうちにダウングレードされるのではなく型付き設定エラーで拒否されます。呼び出し元が提供するカスタムプロバイダーは、別の承認済みダイジェストを正当に使用できます。タイムスタンプの serialNumber は、所与の Time-Stamping Authority からのトークンごとに一意であり、genTime はトークンが作成された UTC 時刻です — RFC 3161 §2.4.1、§2.4.2。B-LT/B-LTA の長期検証マテリアルは引き続き Enterprise 境界の関心事です。Pro は DSS、VRI、ドキュメントタイムスタンプを一切生成しません。
  • OCSP の unknowngood ではなく、ステータスの鮮度は thisUpdatenextUpdate によって範囲が定められます — RFC 6960 §2.2、§4.2。

Pro は、設定された署名アルゴリズムとストラテジーからアルゴリズムを選択します。FIPS 検証済みの KMS または HSM に対して設定された場合、暗号操作はその検証済み境界内で実行され、アルゴリズムセットはその境界が許可するものになります。NextPDF Pro は構造的な CMS の組み立てとダイジェスト計算を実行します。それ自体は FIPS 検証済みの暗号モジュールではなく、FIPS 認証の主張も行いません。FIPS 姿勢を必要とするデプロイメントは FIPS 検証済みの KMS または HSM を設定しなければならず、FIPS 140-3 暗号ポリシープロファイルは Enterprise のケーパビリティです。

このモジュールは暗号機能に関わるものです。ご自身のレビューにおいてセキュリティ上の機微を含むものとして扱ってください。

NextPDF Pro は B-B ベースラインと B-T レベルを生成します。B-B の場合、セッションは B-B の署名付き属性セットを持つ CMS SignedData を組み立て、タイムスタンプは適用しません。B-T の場合、署名者のデジタル署名値に対して計算された、ちょうど 1 つの RFC 3161 signature-time-stamp を CMS の署名なし属性として追加します — ETSI EN 319 122-1 §5.3。NextPDF Pro は、ETSI EN 319 122-1 §5.3、RFC 3161、RFC 5652、RFC 5816 に従ってこれを実装しており、フィクスチャで検証されています。独立した ETSI EN 319 142-1 の認証、適合性、または準拠を主張するものではなく、ドキュメントの法的有効性も主張しません。

B-LT および B-LTA レベルは Enterprise のケーパビリティであり、Pro によって生成されることはありません。B-LT と B-LTA は、長期アーカイブ検証のために Document Security Store とドキュメントタイムスタンプを追加します — ETSI EN 319 142-2 §5.5。それらのレベルを生成する署名ハンドラーは、DSS エントリとドキュメントタイムスタンプをサポートします — ETSI EN 319 142-2 §6.3.3.3。Pro の RemoteSigningConfig は、Document Security Store を要求する B-T より上のレベル(B-LT または B-LTA)を保持できますが、Pro はそのプロデューサーを同梱せず、それに対して動作しません。そのようなレベルは前方宣言された値です。Core の署名フローは、Core コントラクトを通じて実行時に長期プロデューサーを解決し、そのプロデューサーは nextpdf/enterprise パッケージに同梱されます。Pro のみのデプロイメントでは、B-LT または B-LTA のリクエストは、欠落している Enterprise コンポーネントを名指しするメッセージとともにフェイルクローズします。Pro は DSS、VRI ディクショナリ、ドキュメントタイムスタンプ、アーカイブループを一切生成せず、長期検証 (LTV) の主張も行いません。PKCS#11 によるハードウェアキー保管、および FIPS 140-3 暗号ポリシープロファイルも Enterprise のケーパビリティです。このページは Enterprise の長期検証実装を文書化するものではなく、境界とパブリックパッケージ名のみを記載します。

PAdES レベル追加内容プロデューサーエディション
B-B署名付き属性を持つ CMS 署名Core, Pro
B-T署名値に対する 1 つの RFC 3161 signature-time-stamp 署名なし属性Core, Pro
B-LT検証マテリアルを持つ Document Security StoreEnterprise (nextpdf/enterprise)
B-LTAアーカイブ有効性のためのドキュメントタイムスタンプEnterprise (nextpdf/enterprise)

このページは、外部から観測可能な挙動と、サポートされるパブリック API サーフェスのみを文書化します。内部の名前空間パス、ヘルパークラス、メカニズムテーブル、ランブックのファイル名、チケットのプレフィックスは範囲外です。

Pro エンタイトルメントを持たないデプロイメントは、Core の署名コントラクトを維持します。Core の SignerInterface コントラクトに依存するコードは、B-B ベースラインでソフトウェア CMS 署名者による署名を続行します。マスキング、PII 検出、リモートおよびクラウド KMS のストラテジーは Pro パッケージなしでは存在せず、それらの型への呼び出しは、暗黙の no-op ではなく、ハードな依存関係エラーになります。

マスキングと PII のサーフェスはインプロセスで実行されます。マスキングや PII 検出のためにドキュメントコンテンツがホストを離れることはありません。クラウド KMS ストラテジーは、署名操作のために、ドキュメントではなく署名付き属性のダイジェストをプロバイダーへ送信します。PII 検出は、設定されたタイプに対するパターンマッチであり、テスト済みのとおり、black-box モードでは基となるテキストオブジェクトを削除します。完全な個人データ削除の保証ではなく、規制準拠の表明でもありません。

ライブラリは、構造的なメッセージを持つ型付き例外を発生させます。ドキュメントコンテンツや検出された PII の値を、例外メッセージやログに書き込むことはありません。署名パスの周辺でログを記録するデプロイメントは、ドキュメントバイト列ではなく構造的なフィールドをログに記録すべきです。

クレーム標準
CMS 署名は、署名ディクショナリの Contents エントリに DER エンコードされて格納されます。ISO 32000-2§12.8.1
メッセージダイジェスト計算プロセス。署名付き属性は content-type と message-digest を保持します。RFC 5652§5.4
検証者は発信者が計算したダイジェストに依存してはならず、独立して再計算して比較します(署名検証プロセス)。RFC 5652§5.6
SignerInfo は、ダイジェストアルゴリズム識別子と署名付き属性ブロックを保持します。RFC 5652§5
タイムスタンプリクエストは TSTInfo 構造を返します。RFC 3161§2.4.1
タイムスタンプの serialNumber は、所与の TSA からのトークンごとに一意です。RFC 3161§2.4.2
タイムスタンプの genTime は、トークンが作成された UTC 時刻です。RFC 3161§2.4.2
PAdES B-T の signature-time-stamp は、署名者のデジタル署名値に対して計算された 1 つの time-stamp token を保持する署名なし属性です(Pro は B-T を生成します)。ETSI EN 319 122-1§5.3
signature-time-stamp の imprint は、ASN.1 のタグと長さを除いた SignerInfo signature フィールド値のハッシュです。ETSI EN 319 122-1§5.3
signature-time-stamp トークンは id-aa-timeStampToken OID を使用します。その MessageImprint は SignerInfo signature フィールド値のハッシュです。RFC 3161Appendix A
検証側では、NextPDF は signature-time-stamp の MessageImprint を SignerInfo の signature 値にバインドし、不一致、トークンの欠落/重複、または SHA-1 imprint があった場合にフェイルクローズします(厳密な検証であり、認証ではありません)。RFC 3161Appendix A
ESSCertIDv2 は SHA-1 にバインドされたレガシーの ESSCertID を置き換えます。厳密な B-T パスは ESSCertIDv2 を必須とします。RFC 5816§1
認証パス検証は、基本制約と、トラストアンカーへのパス入力をチェックします。RFC 5280§6.1
OCSP は certStatus を good、revoked、または unknown として報告します。RFC 6960§2.2
OCSP ステータスの鮮度は thisUpdate と nextUpdate によって範囲が定められます。RFC 6960§4.2
B-LT と B-LTA は、長期検証のために Document Security Store とドキュメントタイムスタンプを追加します(Enterprise 境界)。ETSI EN 319 142-2§5.5
長期レベルを生成する署名ハンドラーは、DSS エントリとドキュメントタイムスタンプをサポートします(Enterprise 境界)。ETSI EN 319 142-2§6.3.3.3

すべての節は言い換えです。NextPDF は規範的なテキストを複製しません。権威ある文言については、公開された標準を参照してください。NextPDF Pro は、ETSI EN 319 122-1 §5.3(signature-time-stamp)、RFC 3161、RFC 5652、RFC 5816 に従って PAdES B-T 署名サポートを実装しており、フィクスチャで検証されています。ETSI EN 319 142-1(PAdES のベースラインレベルに関する部分)は引用した証拠セットの範囲外です。したがって NextPDF Pro は、独立した ETSI EN 319 142-1 の認証、適合性、または準拠を主張せず、ドキュメントの法的有効性も主張しません。このページは、生成される構造、B-T サポートが実装する標準、そして Enterprise の B-LT/B-LTA 境界を記載するものであり、認証された適合性レベルを記載するものではありません。