Jak mogę udowodnić, że plik PDF nie został zmieniony?
Aby udowodnić, że plik PDF nie został zmieniony, zapisz kryptograficzny skrót pliku w znanym momencie, powiąż ten skrót z zaufanym znacznikiem czasu wystawionym przez stronę trzecią i prowadź weryfikowalny zapis wszystkiego, co od tego czasu działo się z dokumentem. Skrót ujawnia każdą zmianę, znacznik czasu ustala moment, a zapis pokrywa okres pomiędzy. Zgodność z PDF/A ani metadane pliku nie dowodzą żadnej z tych rzeczy.
Dlaczego oczywiste metody zawodzą
Najpierw przychodzą do głowy trzy podejścia i wszystkie trzy są słabsze, niż się wydaje.
Metadane pliku. Otwarcie właściwości dokumentu i porównanie daty utworzenia z datą modyfikacji wygląda na kontrolę. Nią nie jest. Samo pobranie pliku może zaktualizować czas modyfikacji, choć nie zmienił się ani jeden bajt, a wiele narzędzi edycyjnych pozostawia pola autora i producenta nietknięte. Metadane zapisuje ten, kto ostatni trzymał plik, czyli dokładnie strona, o której postępowanie chodzi.
Zgodność z PDF/A. PDF/A to format archiwalny. Usuwa funkcje, które mogłyby sprawić, że dokument w przyszłości wyświetli się inaczej, na przykład osadzone skrypty i odwołania do zewnętrznych czcionek. To wartościowe i nie mówi nic o tym, czy treść się zmieniła. Plik PDF/A można edytować i zapisać ponownie jako w pełni zgodny plik PDF/A.
Wklejony podpis. Zeskanowany podpis wstawiony do dokumentu jest obrazkiem. Nie ma żadnego kryptograficznego związku z otaczającymi go bajtami.
Co naprawdę działa
Trzy mechanizmy, które odpowiadają na trzy różne pytania. Pominięcie jednego zostawia lukę.
1. Skrót kryptograficzny, aby wykryć zmianę. Funkcja skrótu sprowadza plik do odcisku o stałej długości. Zmiana jednego bitu w dowolnym miejscu całkowicie zmienia odcisk. SHA-256 lub SHA-384 to dziś rozsądny wybór. Skrót dowodzi, że plik, który masz teraz, jest bajt po bajcie tym samym plikiem, z którego go wyliczono.
Sam w sobie nie dowodzi nic o kiedy ani o tym, kto go wyliczył. Skrót, który sam obliczyłeś i zapisałeś we własnej bazie, pozostaje twoim słowem.
2. Zaufany znacznik czasu, aby ustalić moment. RFC 3161 opisuje, jak wysłać skrót do urzędu znacznika czasu i otrzymać podpisany token zawierający ten skrót oraz czas. Na zewnątrz wychodzi wyłącznie skrót, więc sam dokument nigdy nie opuszcza twoich systemów.
To jest część, która zamienia twoje twierdzenie w dowód od strony trzeciej, ponieważ poświadczenie podpisuje ktoś, kto nie ma interesu w twoim dokumencie.
3. Łańcuch nadzoru, aby pokryć lukę. Skrót i znacznik czasu dowodzą stanu pliku w jednym momencie. Audytor pyta o okres między tym momentem a dniem dzisiejszym. Łańcuch nadzoru na to odpowiada: każda czynność na dokumencie, kto ją wykonał, kiedy i skąd, zapisywana wyłącznie przez dopisywanie, aby żaden wpis nie mógł po cichu zniknąć.
Powiązanie każdego wpisu ze skrótem poprzedniego sprawia, że usunięcie w środku łamie łańcuch. To właśnie czyni brak manipulacji możliwym do wykazania, a nie jedynie deklarowanym.
Co przechowywać w praktyce
Przechowuj razem dokument, skrót, token znacznika czasu i łańcuch nadzoru, w formacie, który otworzysz jeszcze za dziesięć lat. W praktyce oznacza to PDF/A-3 dla dokumentu, bo ten format dopuszcza załączniki i może przenosić dowód obok pliku.
Zachowaj także materiał weryfikacyjny. Token znacznika czasu weryfikuje się względem łańcucha certyfikatów urzędu, a certyfikaty wygasają. Jeśli chcesz w 2035 roku zweryfikować to, co oznaczyłeś w 2026, musisz zachować łańcuch i status unieważnienia w takiej postaci, w jakiej były wtedy. Ten materiał jest dostępny dziś, a później już nie będzie.
Gdzie mieści się SealDoc
SealDoc automatyzuje te trzy mechanizmy. Każdy przetwarzany dokument staje się plikiem PDF/A-3B zwalidowanym względem ISO 19005-3, domyślnie opatrzonym znacznikiem czasu RFC 3161, z łańcuchem skrótów SHA-384 i zapisem łańcucha nadzoru. Eksport to pakiet dowodowy dla każdego dokumentu na żądanie: dokument, ścieżka audytu oraz manifest pieczętujący zarówno poszczególne pliki, jak i cały zestaw.
Ostatnio sprawdzono: