Tests mit signierten Dokumenten
Das Fazit von Nachfolgendem zuerst:
Ein via Validator https://www.validator.admin.ch geprüftes Dokument MUSS komplett grün erscheinen, ansonsten ist nicht sichergestellt, dass es seit der ersten Signatur unverändert geblieben ist.
Das überprüfen einer Signatur im PDF-Programm ist völlig wertlos, nur die Überprüfung auf https://www.validator.admin.ch bringt die notwendige Gewissheit.
Zertifizieren
Beim Signieren, zumindest bei PrivaSphere, gibt es eine Option „Zertifizieren“. Damit wird das Dokument wie versiegelt und es kann nichts mehr dazugefügt werden. Grundsätzlich ist ja genau das das Ziel von derjenigen Person, die zuletzt ein Dokument signiert. Somit ist bei einem Dokument sofort klar, dass es sich um ein signiertes Dokument handelt, das nicht mehr geändert werden soll. Ein solches Dokument könnte versehentlich nicht mehr mit einer Notiz versehen werden usw. Nur: ein „zertifiziertes“ Dokument besteht die Validierung nicht, siehe Beispiel nachfolgend unter Testserie 1! Deshalb die Empfehlung: die Option „Zertifizieren“ NIE verwenden.
Angespornt von obiger Feststellung, habe ich diverse Tests durchgeführt und auf https://www.validator.admin.ch/ überprüft, ob ein signiertes und nicht zertifiziertes Dokument verfälscht werden kann.
Testserie 1 (dazufügen):
Ich habe verschiedene Tests gemacht indem ich bei einem signierten Testdokument
-einen kleinen Text eingefügt habe
-einen Kommentar eingefügt habe (Kommentarfunktion die man ein- und ausblenden kann und der eingeblendete Text verschoben werden kann)
-eine kleine schwarze Linie eingefügt habe
-eine weisse Fläche über einen bestehenden Text eingefügt habe
Der Validator gibt bei obigen vier Tests viermal dasselbe Ergebnis aus: Report_veränderterText.pdf. Es ist auch genau dasselbe Ergebnis, wie wenn ein Dokument „zertifiziert“ ist. Das heisst wenn ein Dokument dieses Ergebnis des Validators hervorruft, dann ist ein solches Dokument als gefälscht anzusehen!
Testserie 2 (extrahieren):
Obige „Dokumentfälschungen“ waren mit meinem PDF-Programm „PDF-XChange Editor“ (https://pdf-xchange.de/) problemlos möglich. Was aber bei signierten Testdokumenten nicht mehr zur Verfügung steht, sind fast alle Dokumentbearbeitungsfunktionen wie „Seite löschen“, „Seite einfügen“ usw. Das einzige was in dieser Kategorie übrig blieb ist „Seite extrahieren“, womit man eine oder mehrere Seiten in ein neues PDF exportieren kann. Damit habe ich zwei Tests gemacht:
-Alle Seiten extrahiert
-Alle Seiten ausser die letzte extrahiert
Der Validator erkennt bei solchen Dokumenten KEINE Signatur mehr: Report_extrahiertesDokument.pdf, was ja gut ist. Optisch sind die Signaturen nach wie vor sichtbar (!), aber auch mein PDF-Programm erkennt es nicht mehr als Signaturen.
Testserie 3 (zusammenfügen):
Da Seiten einfügen innerhalb des PDF-Programms nicht mehr geht, habe ich einfach mit einem PDF-Drucker-Tool ein zweifach signiertes Dokument an ein anderes zweifach signiertes Testdokument angehängt. Somit wären eigentlich vier Signaturen enthalten (in diesem Test waren es zweimal von denselben Personen signierte Dokumente). Der Validator reagiert genau wie oben (Testserie 2) und erkennt KEINE Signatur mehr im Dokument. Im PDF-Programm sind sie sichtbar aber auch nicht mehr als Signatur erkennbar.
Wenn man mit dem PDF-Drucker-Tool ein Dokument das nur von Person A signiert ist an ein Dokument anfügt, welches nur von Person B signiert ist, erhält man ein neues PDF mit ursprünglich einer Signatur von Person A und einer Signatur von Person B. Das Ergebnis ist dasselbe, der Validator erkennt KEINE Signatur und auch im PDF-Programm sind die Signaturen nur sichtbar aber nicht mehr als Signaturen erkennbar für das PDF-Programm.
Testserie 4 – jetzt wird es skurril:
Eine weitere Funktion meines PDF-Programms ist unter Datei – Kopie speichern unter (Speichert das Dokument in eine neue Datei). Wenn ich diese Funktion nutze, ist die Dateigrösse anders und logischerweise gibt es deshalb auch Unterschiede, wenn man die Dateien Byte für Byte vergleicht. Immerhin findet dieser Byte-Vergleich erst ganz am Schluss des Dokumentes Unterschiede. Ich habe dieses „Kopie speichern unter“ mehrmals benutzt, wobei fast jedes Mal die Dateigrösse anders wird.
Was maximal verwirrend ist, ist dass der Validator diese Dokumente als perfekt signierte Dokumente erkennt!!! Das stimmt zwar und ich weiss es, weil ich es selber gemacht habe. Wenn ich aber der Empfänger wäre und ich zwei Dateien unterschiedlicher Grösse desselben Dokumentes vor mir hätte, wäre ich maximal verwirrt und skeptisch.
Weil die Dateigrösse unterschiedlich ist, haben die Dateien auch total unterschiedliche Hashwerte (siehe innerhalb des Reports, Seite 1 „Hash der Datei“ – Was Hashwerte sind und die Sicherheit dieser Dokumentenstempel sind ganz unten bei „Exkurs Hashwerte“ erklärt). Die Dateigrössen waren wie folgt:
1’184’787 Originaldatei
1’189’548 siehe Report_KopieSpeichernUnter1.pdf
1’189’854 siehe Report_KopieSpeichernUnter2.pdf
Wenn ich vor dem „Kopie speichern unter“ ins Original eine weisse Fläche einfüge und erst dann „Kopie speichern unter“ ausführe, ist das Ergebnis wie bei der Testserie 1 oben – das Dokument wird im Validator als ungültig signiert angezeigt: Report_veränderterText.pdf
Testserie 5 – jetzt wird es gefährlich:
Und vielleicht die gefährlichste Variante zum Schluss: Für diesen Test habe ich ein nur von Person A signiertes Dokument genommen und einen Text eingefügt und anschliessend signiert (Person B) – also im Grunde genommen das Dokument total verfälscht!!! Das Ergebnis des Validators ist: Report_verändert_und_dann_signiert.pdf. Der Report sieht ziemlich harmlos aus mit einmal gelb und Ausrufezeichen, aber nichts Rotes – aber ein solches Dokument kann komplett verfälscht sein!!!
Deshalb das Fazit: Ein geprüftes Dokument MUSS komplett und ausnahmslos grün erscheinen!!!
Im Anschluss an die Überprüfung im Validator kann man das Ergebnis als PDF-Report abspeichern. Daher kommen obige Reports. Diese Reports sind mit einem Siegel signiert sobald eine Signatur erkannt wird und daher fälschungsssicher.
Aber die obigen Beispiel-Reports habe ich dahingehend abgeändert (und somit die Signatur des Reports gelöscht), dass ich bei „Prüfdetails Signatur 1“ den Namen bei „Zertifikat ausgestellt für:“ gelöscht habe. Die „Prüfdetails Signatur 2“ ist unverändert.
Um einen unveränderten Report hier zu zeigen, habe ich den Originalreport Report_veränderterText.pdf validiert und dieser Report sieht so aus: Prüfreport.pdf. Darin ist rechts oben das elektronische Siegel ersichtlich.
Exkurs Hashwerte:
Ein „Hash der Datei“ kann man vereinfacht auch als Quersumme einer ganzen Datei betrachten, nur viel komplizierter. Die „Quersumme“ wird mit SHA-256 ermittelt, was ein komplizierter kryptographischer Algorithmus ist der im Internet oft angewandt wird.
Es ist bei SHA-256 unglaublich schwierig (praktisch unmöglich), zwei verschiedene Eingaben zu finden, die denselben Hashwert ergeben. Diese Eigenschaft stellt sicher, dass jede eindeutige Eingabe einen eindeutigen Hash hat, was für die Datenintegrität entscheidend ist. Sonst wäre es möglich, Daten zu fälschen. SHA-256 wird weltweit in verschiedenen kritischen Anwendungen eingesetzt, von der Sicherung der Internetkommunikation bis zum Schutz digitaler Währungen. Seine umfassende Verwendung und die Prüfung durch die kryptographische Gemeinschaft tragen zu seiner Vertrauenswürdigkeit bei.
Im obigen Beispiel Testserie 4 ist ersichtlich, dass zwei Dateien mit „gleichem“ Inhalt die sich in wenigen Bytes unterscheiden, einen ganz anderen Hash haben.