ความยืดหยุ่นของอัลกอริทึม PDF MAC และโปรไฟล์นโยบาย

HotPDF สร้างและตรวจค่า PDF MAC แบบ ISO/TS 32004 ทั้งแบบ standalone และแนบกับ signature ได้ ด้วย algorithm digest เอกสารหกตัว และการบังคับนโยบายแบบ fail-closed

สารสกัดเอกสารที่รองรับ

THPDFPDFMACDigestAlgorithm ให้ pmdaSHA256, pmdaSHA384, pmdaSHA512, pmdaSHA3_256, pmdaSHA3_384 กับ pmdaSHA3_512

digest ที่เลือกปกป้อง ByteRange ของ PDF เต็มชุด, integrity information ที่ห่อไว้, algorithm digest ของ CMS และ attribute CMSAlgorithmProtection

authentication แบบ HMAC-SHA-256, การ derive key แบบ HKDF-SHA-256 และ key wrap แบบ AES-256 ถูก fix ไว้ตามรูปแบบ PDF MAC และไม่ถูกเปลี่ยนโดยการเลือก digest ของเอกสาร

โปรไฟล์ในตัว

ข้อกำหนดของ profile ในตัวถูก fix ไว้ อ่อนลงไม่ได้ด้วยการแก้ field ของ record ถ้าแอปต้องการ algorithm การสร้าง, allowlist หรือข้อกำหนดการเข้ารหัสแบบอื่น ให้ใช้ pmppCustom

Factoryการสร้างการตรวจการเข้ารหัส
CompatibilitySHA-256ไดเจสต์ที่รองรับทั้งหกAES-256 หรือ AES-256-GCM
ModernSHA-384SHA-384, SHA-512, SHA3-384 หรือ SHA3-512AES-256 หรือ AES-256-GCM
HighAssuranceSHA3-512SHA3-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;

การตัดสินใจในการตรวจสอบ

การตรวจจะหา digest ที่เข้ารหัสไว้ก่อน stream ช่วงที่ถูกปกป้อง, ปฏิเสธ algorithm ที่อยู่นอก AllowedDigestAlgorithms และบังคับ RequireAESGCM หลังกู้ file key แบบ authenticated แล้ว

THPDFPDFMACValidationInfo รายงาน DigestAlgorithm, PolicyProfile, PolicyAccepted กับ UsedAESGCM pmsPolicyRejected แยกต่างจากอินพุตผิดรูปหรือ authentication tag ที่ล้ม

สำหรับ /AttachedToSig digest ที่เลือกยังปกป้องค่า signature CMS ดิบผ่าน PdfMacIntegrityInfo.signatureDigest ขณะที่ ValidatePDFMAC ตรวจ AuthCode แบบ direct ที่ใช้งานอยู่, SigObjRef แบบ indirect, การผูก signature field และ revision ที่ถูกลงนามทั้งชุด

ValidatePDFMACChain apply นโยบายที่เลือกกับ revision แบบ incremental ที่ถูกปกป้องทุกตัว, ปฏิเสธการลดความแข็งแกร่งของ digest, บังคับ KDFSalt ที่เสถียรหลัง MAC ตัวแรก และรายงาน revision ที่ล้มพร้อม xref offset แบบเป๊ะ

ดู SignPDFWithPFXAndAttachedPDFMAC สำหรับ workflow ลงนาม PFX แบบ atomic