PDF MAC アルゴリズムの柔軟性とポリシープロファイル
HotPDF は、6 つのドキュメントダイジェストアルゴリズムとフェイルクローズのポリシー適用を備えた、ISO/TS 32004 スタンドアロン PDF MAC 値を生成および検証できます
サポートされるドキュメントダイジェスト
THPDFPDFMACDigestAlgorithm には、pmdaSHA256、pmdaSHA384、pmdaSHA512、pmdaSHA3_256、pmdaSHA3_384、pmdaSHA3_512 があります
選択されたダイジェストは、完全な PDF ByteRange、カプセル化された整合性情報、CMS ダイジェストアルゴリズム、CMSAlgorithmProtection 属性を保護します
HMAC-SHA-256 認証、HKDF-SHA-256 鍵導出、AES-256 鍵ラップは PDF MAC 形式によって固定されたままであり、ドキュメントダイジェストの選択では変更されません
組み込みプロファイル
組み込みプロファイルの要件は固定されており、レコードフィールドを変更しても弱めることはできません。アプリケーションが異なる生成アルゴリズム、許可リスト、または暗号化要件を必要とする場合は pmppCustom を使用してください
| ファクトリー | 生成 | 検証 | 暗号化 |
|---|---|---|---|
Compatibility | SHA-256 | サポートされる 6 つのダイジェストすべて | AES-256 または AES-256-GCM |
Modern | SHA-384 | SHA-384、SHA-512、SHA3-384、または SHA3-512 | AES-256 または AES-256-GCM |
HighAssurance | SHA3-512 | SHA3-512 のみ | AES-256-GCM 必須 |
Custom | 呼び出し側が選択 | 呼び出し側の許可リスト | 呼び出し側が選択 |
Delphi の例
uses HPDFDoc, HPDFPDFMAC;
var
Options: THPDFPDFMACOptions;
Info: THPDFPDFMACValidationInfo;
begin
Options := THPDFPDFMACOptions.HighAssurance;
if not PDF.AddStandalonePDFMAC('encrypted.pdf', 'authenticated.pdf',
'user-password', Options) then
raise Exception.Create('PDF MAC creation failed');
if not PDF.ValidatePDFMAC('authenticated.pdf', 'user-password',
Options, Info) then
raise Exception.Create(Info.Message);
end;
検証決定
検証では、保護範囲をストリーミングする前にエンコード済みダイジェストを突き止め、AllowedDigestAlgorithms 以外のアルゴリズムを拒否し、認証済みファイル鍵の復元後に RequireAESGCM を強制します
THPDFPDFMACValidationInfo は DigestAlgorithm・PolicyProfile・PolicyAccepted・UsedAESGCM を報告します。pmsPolicyRejected は、不正な入力や認証タグの失敗とは区別されます
/AttachedToSig では、選択されたダイジェストが PdfMacIntegrityInfo.signatureDigest を通じて生の CMS 署名値も保護し、ValidatePDFMAC が有効な直接 AuthCode・間接 SigObjRef・署名フィールドの束縛・完全な署名リビジョンを検証します
ValidatePDFMACChain は、選択されたポリシーを保護されたすべてのインクリメンタルリビジョンに適用し、ダイジェスト強度の格下げを拒否し、最初の MAC の後に安定した KDFSalt を要求し、失敗したリビジョンと xref オフセットを正確に報告します
アトミックな PFX 署名ワークフローについては、SignPDFWithPFXAndAttachedPDFMAC を参照してください