Zwinność algorytmów PDF MAC i profile polityk

HotPDF potrafi tworzyć i walidować wartości PDF MAC ISO/TS 32004 — samodzielne i doczepione do podpisu — z sześcioma algorytmami digestu dokumentu i egzekwowaniem polityk w trybie fail-closed

Obsługiwane digesty dokumentu

THPDFPDFMACDigestAlgorithm dostarcza pmdaSHA256, pmdaSHA384, pmdaSHA512, pmdaSHA3_256, pmdaSHA3_384 i pmdaSHA3_512

Wybrany digest chroni kompletny ByteRange PDF, hermetyzowane informacje o integralności, algorytm digestu CMS i atrybut CMSAlgorithmProtection

Uwierzytelnianie HMAC-SHA-256, wyprowadzanie klucza HKDF-SHA-256 i opakowanie klucza AES-256 pozostają sztywno ustalone przez format PDF MAC i nie zmieniają się wraz z wyborem digestu dokumentu

Wbudowane profile

Wymagania wbudowanych profilów są stałe i nie da się ich osłabić przez zmianę pól rekordu; gdy aplikacja potrzebuje innego algorytmu generowania, allowlisty lub wymogu szyfrowania, użyj pmppCustom

FabrykaGenerowanieWalidacjaSzyfrowanie
CompatibilitySHA-256Wszystkie sześć obsługiwanych digestówAES-256 lub AES-256-GCM
ModernSHA-384SHA-384, SHA-512, SHA3-384 lub SHA3-512AES-256 lub AES-256-GCM
HighAssuranceSHA3-512Tylko SHA3-512Wymagany AES-256-GCM
CustomWybiera wywołującyAllowlist wywołującegoWybiera wywołujący

Przykład w 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;

Decyzje walidacji

Walidacja wykrywa zakodowany digest, zanim zacznie strumieniować chronione zakresy, odrzuca algorytmy spoza AllowedDigestAlgorithms i egzekwuje RequireAESGCM po uwierzytelnionym odzyskaniu klucza pliku

THPDFPDFMACValidationInfo raportuje DigestAlgorithm, PolicyProfile, PolicyAccepted i UsedAESGCM; pmsPolicyRejected jest odrębny od źle uformowanego wejścia albo nieudanego taga uwierzytelniającego

Dla /AttachedToSig wybrany digest chroni też surową wartość podpisu CMS przez PdfMacIntegrityInfo.signatureDigest, a ValidatePDFMAC weryfikuje aktywne bezpośrednie AuthCode, pośrednie SigObjRef, powiązanie pola podpisu i kompletną podpisaną rewizję

ValidatePDFMACChain stosuje wybraną politykę do każdej chronionej rewizji przyrostowej, odrzuca osłabienie siły digestu, wymaga stabilnego KDFSalt po pierwszym MAC i raportuje dokładną rewizję oraz offset xref, na których się nie powiodło

Atomowy workflow podpisywania PFX opisuje strona SignPDFWithPFXAndAttachedPDFMAC