In diesem Artikel stelle ich Euch eine Lösung vor, bei der ein Zeitstempel in die Datei eingebettet wird und später ganz bequem überprüft werden kann. Der einzige Nachteil dieser Lösung ist allerdings – sie funktioniert ausschließlich mit PDF-Dateien. Der Vorteil dieser Lösung ist die Kostenfreiheit – wir arbeiten ausschließlich mit Freeware-Programmen.
Ihr benötigt dafür ein PDF-Programm, welches auch die Signatur von PDF-Dateien ermöglicht. Bei vielen Programmen ist dies nur mit der „Pro“ Version möglich aber der Foxit-Reader kann unsere Anforderungen erfüllen. Die portable Version könnt Ihr über die Plattform von „chip.de“ laden, hier mal der Direktlink: „https://www.chip.de/downloads/Foxit-Reader-Portable_41966128.html„. Nach dem Start wird die englischsprachige Oberfläche angezeigt, Ihr könnt aber über „File – Preferences – Languages“ eine deutsche Sprachdatei installieren [sofern diese bereits vorliegt…]. Zum Zeitpunkt der Artikelerstellung ist die Version 9.7.1 aktuell.
Möchtet Ihr eine ähnliche Funktionalität mit einem Java-Programm nutzen, empfehle ich Euch mein Programm „PDF-iText 7-Signatur Timestamp„.
Wie funktioniert das Timestamping mit einer Signatur? Hier folgt die Schritt für Schritt Anleitung. Bitte erschreckt nicht über die Vielzahl der Schritte, ich zeige und erkläre hier jeden einzelnen Klick.
Schritt 1: Öffnet die gewünschte PDF-Datei mit dem Programm („File – Open – Computer – browse“), z.B. meine Demonstrationsdatei „java-crypto_bplaced_net.pdf“:
Schritt 2: Wir benötigen einen Timestampserver und erfassen ihn in den Voreinstellungen, dazu klickt Ihr „File – Preferences – Time Stamp Servers“, klickt auf „New“ und dann erfasst Ihr „http://tsa.swisssign.net“ in beide Eingabefelder. Zum Abschluss wählt Ihr „OK“ und verlasst die Einstellungen:
Schritt 3: Ihr wählt im Menü „Protect“ (siehe Screenshot von Schritt 1) den Punkt „Sign & Certify“ (bitte nicht direkt auf „Time Stamp Document“ klicken!) und dann „Place Signature“:
Wir lernen jetzt eine ganz neue Crypto-Art kennen – die sogenannten Zertifikate.
Schritt 4: Dieser Punkt ist am Anfang etwas kniffelig – wir müssen nämlich einen bläulich gefüllten (leeren) Rahmen in das PDF-Dokument malen und dann öffnet sich ein Fenster. Dort wählt Ihr unter „Sign as“ eine „New ID…“ aus:
Schritt 5: Da wir bislang kein Zertifikat (hier auch „Digital ID“ genannt) haben müssen wir erst eines erstellen „… create now“. Bei späteren Versuchen können wir die Einstellung „My existing digital ID…“ („meine bestehende digitale ID nutzen“):
Schritt 6: Wir erzeugen uns einen Schlüsselspeicher („Keystore“) im Format „PKCS12“ – dieser hat den großen Vorteil einer leichten Übertragbarkeit zu anderen Programmen:
Schritt 7: Nun erfassen wir einige Daten unserer Identität – diese werden später im PDF-Dokument angezeigt werden. Das erleichtert einem Dritten später auch die Zuordnung der PDF-Datei zu einer Person, was ja der Sinn und Zweck einer Signatur ist:
Schritt 8: Wenn Euch der vorgeschlagene Dateiname und der Speicherort nicht gefallen sollte wählt Ihr „Browse“, ansonsten vergebt Ihr noch das Zugangspasswort für Euren Zertifikate Speicher. Dieses Passwort solltet Ihr Euch gut notieren, ansonsten kommt Ihr an Eurer Zertifikat (für weitere Signaturen und Timestamps) nicht mehr heran. Ihr könnt meine Demo-Zertifikatsdatei aus meinem GitHub-Archiv (https://github.com/java-crypto/Timestamping/tree/master/PDF-Signatur) herunterladen, das Passwort ist „123456“ (und der Alias „1“):
Schritt 9: Ihr könnt bei „Location“ und „Reason“ noch Daten erfassen und oben (!) bei „Password“ das gerade vergebene Passwort einzutippen, dann beendet Ihr den Vorgang mit „Sign“:
Schritt 10: Unmittelbar danach öffnet sich Dateispeicherdialog – ich empfehle die Speicherung unter einem abweichenden Dateinamen, um die signierte Datei PDF-Datei von der nicht signierten PDF-Datei unterscheiden zu können:
Schritt 11: An der gewählten Stelle erscheint unsere Signatur und das Programm versucht sofort, den Timestamp über unseren gewählten Serivce zu erzeugen, was wir mit „Allow“ („erlauben“) bestätigen:
Schritt 12: Wir werden auf der rechten Seite darüber informiert, das das PDF-Dokument signiert ist und die Signatur(en) gültig sind. Auf der linken Seite sind ergänzende Angaben dazu zu finden:
Damit ist die Erstellung des signierten PDF-Dokumentes abgeschlossen. Wir gehen jetzt noch einen Schritt weiter und schauen uns das signierte Dokument etwas genauer an. Dazu schließen wir das PDF-Dokument und öffnen es gleich wieder. In der rechten oberen Ecke finden wir einen Hinweis:
Schritt 13: Der Hinweis besagt, das die Unterschrift bislang nicht zu den Signaturen gehört, denen wir auch vertrauen. Ich klicke auf den Link von „Manage Trust“ und kann mir als Erstes das Zertifikat des Signierers anschauen „Show Certificate…“):
Schritt 14: Der „Certificate Viewer“ zeigt uns mit „Show Certificate“ das Zertifikat, anschließend fügen wir das Zertifikat zu den Zertifkaten hinzu, denen wir vertrauen:
Schritt 15: Das Zertifikat ist 5 Jahre gültig und Ihr solltet es nur in den Speicher der vertrauenswürdigen Zertifikate aufnehmen, wenn Ihr den Aussteller kennt! Schaut Euch auch die Daten im Tab „Details“ an – hier findet Ihr technische Informationen zum erzeugten Zertifikat.
Schritt 16: Nach „Add to Trusted Certificates“ erscheint noch eine Warnmeldung:
Nun landen wir wieder im Fenster von Schritt 14 und nach dem Klick auf „OK“ haben wir wieder das Fenster von Schritt 13 („Manage Signature Trust“) vor uns. Nun klicken wir auf „Trust Signer for Future Signatures“ oder auf Deutsch: „vertraue dem Signierer für künftige Signaturen“.
Schritt 17: Das PDF-Programm kann nun die Signatur als „Echt“ prüfen und zeigt dieses auch an:
Schritt 18: Im „Signatur Panel des PDF-Programms findet Ihr nun weitere Informationen zur Gültigkeit der Signatur. Ein Manko bleibt noch – der eingebettete Zeitstempel ist noch nicht verifiziert, der er kommt mit einem eigenen Zertifikat.
Schritt 19: Um das Timestamp-Zertifikat zu prüfen klicken wir einfach auf unsere Signatur:
Schritt 20: Wir wissen ja bereits, das die Signatur gültig ist und schauen uns die „Signature Properties…“ an:
Schritt 21: Unser Zertifikat haben wir uns bereits angeschaut, aber das Zertifikat des Timestamps noch nicht. Dazu klicken wir ganz unten auf die erweiterten Eigenschaften („Advanced Properties“):
Schritt 22: Damit wir auch dem Aussteller des Timestamp-Zertifikates vertrauen wählen wir „Show Certificate“:
Schritt 23: Wir sehen, dass das Zertifikat von der „SwissSign“ ausgestellt ist und nachdem wir uns das Zertifikat angeschaut haben nehmen wir es ebenfalls als „vertrauenswürdiges Zertifikat“ auf:
Schritt 24: Nun ist auch der Timestamp verifiziert:
Schritt 25: Auch im „Signature Panel“ findet sich die Bestätigung, dieses Dokument ist unverändert, hat eine gültige Signatur von Michael Fehr und der Zeitstempel der Signatur ist ebenfalls gültig:
Letzte Bearbeitung: 21.04.2020