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을 씁니다
| Factory | Generation | Validation | Encryption |
|---|---|---|---|
Compatibility | SHA-256 | 지원되는 여섯 다이제스트 모두 | AES-256 or AES-256-GCM |
Modern | SHA-384 | SHA-384, SHA-512, SHA3-384, or SHA3-512 | AES-256 or AES-256-GCM |
HighAssurance | SHA3-512 | SHA3-512 only | AES-256-GCM required |
Custom | Caller selected | Caller allowlist | Caller 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을 보십시오