PDF MAC 演算法靈活性與原則設定檔

HotPDF 可產生並驗證 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

工廠產生驗證加密
CompatibilitySHA-256全部六種支援摘要AES-256 或 AES-256-GCM
ModernSHA-384SHA-384、SHA-512、SHA3-384 或 SHA3-512AES-256 或 AES-256-GCM
HighAssuranceSHA3-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