PDF MAC Algorithm Agility and Policy Profiles

HotPDF는 여섯 가지 문서 다이제스트 알고리즘과 fail-closed policy 강제로 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 key wrap은 PDF MAC 포맷이 고정하며 문서 다이제스트 선택에 따라 바뀌지 않습니다

내장 프로파일

내장 프로파일 요구는 고정되어 레코드 필드 변경으로 약화될 수 없습니다. 애플리케이션이 다른 생성 알고리즘, allowlist, 암호화 요구가 필요하면 pmppCustom을 씁니다

FactoryGenerationValidationEncryption
CompatibilitySHA-256지원되는 여섯 다이제스트 모두AES-256 or AES-256-GCM
ModernSHA-384SHA-384, SHA-512, SHA3-384, or SHA3-512AES-256 or AES-256-GCM
HighAssuranceSHA3-512SHA3-512 onlyAES-256-GCM required
CustomCaller selectedCaller allowlistCaller selected

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;

Validation decisions

검증은 보호 범위를 스트리밍하기 전에 인코딩된 다이제스트를 발견하고, AllowedDigestAlgorithms 밖 알고리즘은 거부하며, 인증된 파일 키 복구 뒤 RequireAESGCM을 강제합니다

THPDFPDFMACValidationInfo는 DigestAlgorithm, PolicyProfile, PolicyAccepted, UsedAESGCM을 보고합니다. pmsPolicyRejected는 malformed 입력이나 실패한 인증 tag와 별개입니다

/AttachedToSig의 경우 선택된 다이제스트가 PdfMacIntegrityInfo.signatureDigest로 raw CMS 서명 값도 보호하고, ValidatePDFMAC는 활성 직접 AuthCode, 간접 SigObjRef, 서명 필드 결합, 완전한 서명 revision을 검증합니다

ValidatePDFMACChain은 선택된 policy를 보호된 모든 증분 revision에 적용하고, 다이제스트 강도 하향을 거부하며, 첫 MAC 뒤 안정 KDFSalt을 요구하고, 실패한 revision과 xref 오프셋을 정확히 보고합니다

원자적 PFX 서명 워크플로는 SignPDFWithPFXAndAttachedPDFMAC을 보십시오