Jak naprawdę działa szyfrowanie PDF — i jego granice
Spec: ISO 32000-2, §7.6ISO 32000-2 §7.6
W skrócie
Dział zatytułowany „W skrócie”Szyfrowanie PDF miesza słowa i obrazy wewnątrz dokumentu, tak by mógł je odczytać tylko ktoś z właściwym hasłem. To prawdziwa kryptografia i jest dobra w jedynym zadaniu, które ma. Jest też powszechnie źle rozumiana, ponieważ ta sama funkcja niesie drugi mechanizm — flagi uprawnień — który wygląda jak blokada, a nią nie jest.
Ta strona rozdziela te dwie rzeczy. Wyjaśnia, co naprawdę chroni AES-256, do czego naprawdę służą dwa hasła i gdzie leży uczciwa granica.
Dlaczego to ma znaczenie
Dział zatytułowany „Dlaczego to ma znaczenie”Ludzie sięgają po szyfrowanie, gdy dokument jest wrażliwy: umowa, pasek wypłaty, list lekarski. Oczekiwanie jest rozsądne — zachowaj to w tajemnicy i powstrzymaj ludzi przed drukowaniem lub kopiowaniem. PDF spełnia pierwszą połowę tego życzenia przekonująco, a drugą tylko na zasadzie zaufania.
Pomylenie tych dwóch rzeczy to miejsce, gdzie spada koszt. Zespół oznacza plik „bez kopiowania”, ufa, że platforma to egzekwuje, i wysyła. Miesiące później ktoś kopiuje tekst w trzydzieści sekund w innym czytniku, a założenie, które nigdy się nie trzymało, po cichu zamienia się w wyciek. Szyfrowanie nigdy nie zostało złamane. Po prostu poproszono je o zrobienie czegoś, czego nie robi.
Wersja skrócona
Dział zatytułowany „Wersja skrócona”- Szyfrowanie chroni poufność. Z AES-256 zawartość ciągów znaków i strumieni PDF to prawdziwy szyfrogram. Bez klucza jest nieczytelna.
- Hasło użytkownika otwiera dokument. Podaj je, a możesz zobaczyć treść. Bez niego nie ma czego czytać.
- Hasło właściciela rządzi uprawnieniami. To klucz „pełnych praw”. Flagi uprawnień, których strzeże — drukowanie, kopiowanie, modyfikowanie — są zapisane wewnątrz zaszyfrowanego dokumentu.
- Flagi uprawnień zależą od współpracy czytnika. To prośba do dobrze zachowującego się czytnika, a nie egzekwowanie. Czytnik, który je ignoruje, może i tak drukować, kopiować lub edytować.
- Struktura pozostaje widoczna. Szyfrowanie ukrywa treść, a nie szkielet dokumentu — liczba stron i układ obiektów nie są tajemnicą.
Jak podchodzi do tego NextPDF
Dział zatytułowany „Jak podchodzi do tego NextPDF”Szyfrowanie PDF jest zdefiniowane przez Spec: ISO 32000-2, §7.6ISO 32000-2 §7.6. Model jest precyzyjny: procedura obsługi zabezpieczeń wyprowadza klucz szyfrowania pliku z hasła, ciągi znaków i strumienie dokumentu są szyfrowane tym kluczem, a słownik szyfrowania — wskazywany z trailera pliku — zapisuje, którego szyfru użyto, jak długi jest klucz i które uprawnienia autor zadeklarował.
Nowoczesnym, zalecanym szyfrem jest AES z kluczem 256-bitowym. Gdy szyfrujesz PDF w ten sposób, czytelny ładunek — tekst, który wyciągnąłbyś, bajty obrazu, dane czcionki — jest przekształcany w szyfrogram. Zewnętrzny kształt dokumentu pozostaje czytelny z założenia: czytnik musi znaleźć słownik szyfrowania i poznać długość klucza, zanim poprosi Cię o hasło. Dlatego szyfrowanie najlepiej rozumieć jako poufność treści, a nie nieprzejrzystość całego pliku.
Dwa hasła leżą w różnych warstwach, a to rozróżnienie jest częścią najbardziej wartą zrozumienia.
- A password is suppliedEither the user password (open) or the owner password (full rights).
- The security handler derives the keyISO 32000-2 §7.6.4 turns the password into the file encryption key.
- Content is decryptedAES-256 turns the encrypted strings and streams back into readable bytes.
- Permissions are consultedThe owner key grants all rights; the user key is bound by the declared permission flags — if the reader chooses to honour them.
Hasło użytkownika to hasło otwierające. Odpowiada na jedno pytanie: czy w ogóle możesz zobaczyć treść? Bez hasła użytkownika nie ma czytelnego dokumentu — ta część jest egzekwowana kryptograficznie, ponieważ bez wyprowadzonego klucza nie ma czego odszyfrować.
Hasło właściciela to hasło uprawnień. Plik może otworzyć ktokolwiek (bez hasła użytkownika), a mimo to deklarować hasło właściciela, które bramkuje działania „pełnych praw” — drukowanie w wysokiej rozdzielczości, kopiowanie tekstu, modyfikowanie pliku. Co istotne, bity uprawnień chronione hasłem właściciela są chronione pod kątem integralności przez standardową procedurę obsługi zabezpieczeń: manipulowanie nimi jest wykrywane i odrzucane przez zgodny czytnik, ponieważ procedura wiąże zadeklarowane uprawnienia z kluczami szyfrowania. Bity nie są dosłownie nieczytelnymi ani nieedytowalnymi bajtami — atakujący może je zmienić — ale zmieniona kopia nie przejdzie weryfikacji, więc zgodny czytnik traktuje ją jako uszkodzoną. Są tamper-evident. Po prostu nie są samoegzekwujące.
Praktyczny przykład
Dział zatytułowany „Praktyczny przykład”Ustawienia szyfrowania prosto się wyraża. Liczy się uczciwe odczytanie wyniku: to konfiguruje intencję, a część dotycząca uprawnień tej intencji ma charakter doradczy.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Security\Encryption\EncryptionMode;use NextPDF\Security\Encryption\Permission;
$document = Document::createStandalone();$document->setTitle('Confidential Offer');$document->addPage();
// Confidentiality is real: AES-256 means the content is unreadable// without the user password. This half is cryptographically enforced.$document->encrypt( userPassword: 'open-sesame', ownerPassword: 'full-rights-key', mode: EncryptionMode::Aes256, // Permissions are a declared request to a cooperating reader, // recorded inside the encrypted document — not a hard lock. permissions: Permission::Print->value | Permission::CopyContent->value,);
$document->save('offer.pdf');Hasło użytkownika i hasło właściciela to różne klucze o różnych zadaniach. Argument
permissions mówi, na co dobrze zachowujący się czytnik powinien pozwolić. To
uczciwe metadane, chronione pod kątem integralności przez procedurę obsługi zabezpieczeń, tak by manipulacja
była wykrywalna — i to jest pułap tego, co biblioteka wytwarzająca może obiecać.
Częste nieporozumienie
Dział zatytułowany „Częste nieporozumienie”Pułapką jest odczytywanie „uprawnień” jako „egzekwowania”. To intuicyjne: flaga mówi drukowanie niedozwolone, więc z pewnością drukowanie jest zablokowane. Ale nic w PDF nie może sięgnąć i wyłączyć przycisku drukowania czytnika. Liczba całkowita uprawnień jest zapisana po to, by współpracujący czytnik jej posłuchał. Czytnik, który decyduje się nie współpracować — a kilka tego nie robi — może swobodnie drukować, kopiować i edytować.
NextPDF jest w tym celowy. Rdzeniowa ścieżka szyfrowania traktuje flagi uprawnień jako zadeklarowaną intencję i nigdy nie udaje, że je egzekwuje. Jeśli potrzebujesz, by działania były naprawdę uniemożliwione, ta kontrola musi mieszkać poza plikiem — w tym, komu wręczasz dokument, lub w systemie kontroli dostępu wokół niego.
Ograniczenia i granice
Dział zatytułowany „Ograniczenia i granice”Bądź precyzyjny co do tego, co gwarantuje każda połowa. Szyfrowanie (warstwa hasła użytkownika) to prawdziwa kontrola poufności: silna, jeśli hasło jest silne, i tak dobra, jak tylko sekret, który wybierzesz. Uprawnienia (warstwa hasła właściciela) to tamper-evident metadane, a nie kontrola dostępu.
| Czego możesz oczekiwać | Co szyfrowanie faktycznie dostarcza |
|---|---|
| Nikt nie może odczytać treści bez hasła | Prawda. Z AES-256 i silnym hasłem użytkownika ciągi znaków i strumienie są nieczytelne bez klucza. Naprawdę egzekwowane. |
| Nikt nie może przepisać „bez kopiowania” na „kopiowanie dozwolone” | Tamper-evident, a nie niemożliwe. Flagi uprawnień są chronione pod kątem integralności przez standardową procedurę obsługi zabezpieczeń: osoba z zewnątrz może zmienić bajty, ale zmieniona kopia nie przejdzie weryfikacji, więc zgodny czytnik wykrywa i odrzuca zmianę. |
| Czytnik zostanie powstrzymany przed kopiowaniem lub drukowaniem | Niegwarantowane przez żaden producent PDF. Niewspółpracujący czytnik może zignorować flagi. To właściwość formatu, a nie ograniczenie NextPDF. |
Dwie dalsze granice warto wyrazić wprost. Po pierwsze, szyfrowanie chroni
treść, a nie strukturę dokumentu: układ obiektów i liczba stron pozostają
widoczne, co jest normalne i konieczne, by czytnik zlokalizował słownik
szyfrowania. Po drugie, zaszyfrowany PDF nie może jednocześnie deklarować archiwalnej zgodności
PDF/A — ten profil zakazuje wpisu Encrypt, więc wybierasz jedno
albo drugie.
Strona rozwiązywania problemów z szyfrowaniem i uprawnieniami
omawia szczegółowo konkretne wyjątki i odmowę PDF/A.
Powiązana dokumentacja
Dział zatytułowany „Powiązana dokumentacja”- Krajobraz standardów — gdzie ISO 32000-2 i jego klauzule szyfrowania leżą wśród standardów PDF.
- Szyfrowanie i flagi uprawnień — praktyczne wpisy: błędy odszyfrowania oraz granica uprawnień w kodzie.
- Czym naprawdę jest PDF — model obiektów, który chroni szyfrowanie, i struktura, którą pozostawia widoczną.
- Jak podpisy są osadzone w pliku PDF — druga połowa zaufania do dokumentu: szyfrowanie ukrywa, podpisy dowodzą.
Słowniczek
Dział zatytułowany „Słowniczek”- AES-256 — Advanced Encryption Standard z kluczem 256-bitowym, zalecany nowoczesny szyfr do szyfrowania treści PDF.
- Hasło użytkownika (hasło otwierające) — sekret wymagany do otwarcia i odczytania zaszyfrowanego dokumentu. Bez niego treść nie może zostać odszyfrowana.
- Hasło właściciela (hasło uprawnień) — sekret „pełnych praw”, który rządzi flagami uprawnień. Dokument może mieć je bez wymagania hasła użytkownika do otwarcia.
- Flagi uprawnień — zadeklarowana intencja drukowania/kopiowania/modyfikowania przechowywana w słowniku szyfrowania. Chronione pod kątem integralności, tak by manipulacja była wykrywalna, ale honorowane tylko przez współpracujący czytnik.
- Procedura obsługi zabezpieczeń — komponent, który wyprowadza klucz szyfrowania pliku z hasła, zdefiniowany przez standardową procedurę obsługi zabezpieczeń w ISO 32000-2.
- Zależny od współpracy czytnika — kontrola, która zależy od tego, czy oprogramowanie konsumujące zdecyduje się jej posłuchać, a nie jest egzekwowana przez sam plik.