Website beweissicher archivieren, statt einen Screenshot zu machen
WARC-Kopie, Fremdarchiv und Zeitstempel: der Ablauf, der eine Website prüfbar dokumentiert. In zehn Minuten im Browser oder ausgebaut mit einem Skript.
Über den Autor
Christopher Helm arbeitet seit 2014 mit maschinellem Lernen. Hier schreibt er privat über KI, Sicherheit im Netz und Medien.
Mehr über den AutorDiesen Blog bei Google als bevorzugte Quelle wählenGoogle zeigt Beiträge dieser Seite dann häufiger unter Top Stories. Die Wahl lässt sich jederzeit zurücknehmen.Presseschau
Worüber deutsche Medien gerade berichten, geordnet nach Ereignis. So sieht man, wer eine Nachricht bringt und wer nicht.
Zur PresseschauEine Seite steht online, jemand liest sie, notiert den Wortlaut und fragt beim Betreiber nach. Am nächsten Tag steht dort ein anderer Satz, manchmal steht die Seite gar nicht mehr. Die Änderung dauerte zehn Sekunden, die Antwort auf die Anfrage drei Tage.
Das trifft Anwälte mit einer Bewertung, Mieter mit einem gelöschten Inserat, Beschäftigte mit einer Stellenanzeige, deren Bedingungen sich nachträglich verschoben haben, und jeden, der über Websites schreibt. Der kleinste Weg dauert zehn Minuten und braucht nichts als den Browser. Wer öfter sichert, richtet einmal eine halbe Stunde lang ein Skript ein, das die Umstände der Aufnahme mitschreibt. Gesichert wird vor der ersten Anfrage, nicht danach.
Warum der Screenshot allein nicht trägt#
Jeder Bildeditor öffnet ein PNG, ändert es und speichert es wieder; die neue Datei sieht aus wie die alte. Die Erstellungszeit daneben ist ein Attribut des Dateisystems, das ein Einzeiler in der PowerShell überschreibt. Und das Bild hält die gerenderte Ansicht fest, während die Auslieferung im HTML und in den Antwortkopfzeilen steht: das Datum des Servers, die Weiterleitungen, die nachgeladenen Skripte, dazu jede Kennzeichnung, die eine Seite per CSS ein- und ausblendet.
Wie ein Gericht damit umgeht, steht in einem Urteil des Thüringer Oberlandesgerichts vom 28. November 2018 (Az. 2 U 524/17). Der Ausdruck eines Bildschirmfotos zählt danach als Augenscheinsobjekt1, sein Beweiswert unterliegt der freien Beweiswürdigung nach § 286 ZPO. Im eBay-Fall, den das Gericht entschied, hielt die Aufnahme dieser Würdigung nicht stand: Der Verkäufername am abgebildeten Link gehörte zu jemand anderem als der Beklagten, ein Hinweis auf nicht geleerte Cache-Daten kam hinzu, und die Allgemeinen Geschäftsbedingungen waren nur unvollständig abgebildet.
Was eine WARC-Aufzeichnung stattdessen festhält#
Das Format dafür ist WARC, seit 2009 als ISO 28500 genormt und die Grundlage jedes ernsthaften Webarchivs. Gespeichert wird der Verkehr: Anfrage, Antwortkopfzeilen, HTML, CSS, Skripte, Schriften, Bilder, jede Ressource mit ihrem Zeitpunkt und ihrer Herkunfts-URL.
In den Kopfzeilen steht oft mehr als in der Seite. Date hält die Uhrzeit des Servers fest, unabhängig von der des eigenen Rechners. Last-Modified und ETag verraten bei statisch ausgelieferten Seiten, wann der Betreiber die Datei zuletzt angefasst hat; ein späterer Abruf mit anderem ETag zeigt, dass sich zwischen beiden Abrufen etwas geändert hat.
Aufgezeichnet wird im eigenen Browser. Die Erweiterung ArchiveWeb.page schneidet den Netzwerkverkehr eines Tabs mit und bringt deshalb auch dort etwas mit, wo ein Crawler scheitert: hinter einer Anmeldung, bei Inhalten, die erst ein Skript nachlädt, und auf Seiten, die automatisierte Abrufe blockieren. Der Export ist eine WACZ-Datei, technisch ein ZIP-Archiv mit den WARC-Dateien unter archive/, den Indizes unter indexes/ und einer datapackage.json, die laut Spezifikation2 für jede enthaltene Datei eine eigene SHA-256-Summe führt; deren Prüfsumme wiederum steht in der datapackage-digest.json. Wer eine einzelne Ressource austauscht, muss die ganze Kette nachziehen. Angesehen wird das Ergebnis auf replayweb.page, das die Datei lokal im Browser abspielt.
Warum es drei Ebenen braucht: Kopie, Fremdarchiv, Zeitstempel#
Die eigene Kopie ist vollständig und stammt von der Partei, die damit etwas beweisen will. Ein Fremdarchiv wie archive.today, Perma.cc oder die Wayback Machine erfasst weniger, weil es an Anmeldung, Bezahlschranke und nachgeladenen Skripten scheitert; dafür hat es ein Dritter aufgenommen, der am Ausgang kein Interesse hat. Der Zeitstempel arbeitet auf einer dritten Ebene und hält fest, dass eine bestimmte Datei zu einer bestimmten Zeit in genau dieser Form vorlag. Das Fremdarchiv belegt also, was auf der Seite stand; der Zeitstempel belegt, dass die Datei seitdem unverändert ist.
Wenn das Fremdarchiv nichts hergibt, liegt es meistens an einem von vier Gründen: Die Seite steht hinter Anmeldung oder Bezahlschranke, sie baut ihren Inhalt erst per Skript zusammen, sie sperrt automatisierte Abrufe, oder die robots.txt hält den Archivierer fern. Dann trägt die eigene Aufzeichnung den Fall allein; sie ist auch der einzige der drei Wege, der hinter einer Anmeldung noch etwas aufnimmt.
Wayback Machine und archive.today zeigen jeden Eintrag samt Abrufzeit öffentlich an; wer die URL kennt, sieht, dass sich an diesem Tag jemand für die Seite interessiert hat. Wer den Betreiber noch nicht angefragt hat, zeichnet deshalb zuerst lokal auf und reicht das Fremdarchiv nach der Anfrage nach.
Die Minimalversion: alles im Browser#
Wer einen einzelnen Fall sichern will und nichts installieren mag, kommt mit einer Erweiterung und zwei Webseiten aus. Von Hand passiert ohnehin nur der Anfang, und der fühlt sich an wie normales Surfen: die Seite in ArchiveWeb.page aufrufen, durchscrollen und jede Unterseite öffnen, die in der Kopie stehen soll. Was nicht durch den Tab gelaufen ist, fehlt später. Dann als WACZ in einen frischen Ordner exportieren, der ab hier nur noch wächst.
Den Zeitstempel holt die Datei sich selbst. Wer sie auf opentimestamps.org oder auf das Online-Formular von freetsa.org zieht, gibt sie nicht aus der Hand: Beide Seiten rechnen die Prüfsumme im Browser aus und schicken nur diese Zahl an den Dienst. Zurück kommt eine kleine Begleitdatei, bei OpenTimestamps mit der Endung .ots, bei freetsa die Antwort des Zeitstempeldienstes, und die gehört in denselben Ordner wie die Aufzeichnung. Bleibt die dritte Ebene, und die ist bei der Wayback Machine und archive.today ein Formularfeld. Zehn Minuten, kein Programm.
Wo die Minimalversion aufhört#
Der kryptografische Kern ist derselbe: eine signierte Zeit über einer Prüfsumme. Und ein gutes Stück Dokumentation liefert die Aufzeichnung selbst. Der Index führt jede erfasste URL mit ihrer Abrufzeit, der Browser steht als User-Agent in den mitgeschriebenen Anfragen, und die datapackage.json hält fest, welche Software die Datei wann gebaut hat.
Nur hört das genau dort auf, wo die Fragen eines Dritten anfangen. Die WACZ-Spezifikation kennt keine Felder für den Erfassungskontext; sie beschreibt ihn als das, was jemand braucht, um ein Archiv zu verstehen, und überlässt ihn dem, der es anlegt. Der Index zeigt, welche Unterseiten aufgezeichnet wurden, nicht welche fehlen und aus welchem Grund. Aus welchem Netz die Aufnahme kam, ob eine Anmeldung bestand und unter welchem Konto, ob die Seite personalisiert ausgespielt wurde: nichts davon steht in der Datei, und die letzte Frage lässt sich aus ihr auch gar nicht beantworten. Dazu kommt die Klammer. Gestempelt ist die eine Datei; alles, was später danebenliegt, eine Notiz, ein zweiter Abruf, die Stempeldatei selbst, hängt ungebunden daneben, und ein Prüfbefehl zum Abtippen steht auch nicht dabei. Der Stempel hängt außerdem an einem einzigen Dienst. Bei OpenTimestamps bestätigt zunächst nur der Kalenderserver, die Verankerung in der Blockchain folgt später; wer die .ots-Datei danach wieder auf dieselbe Seite zieht, sieht, ob sie inzwischen steht.
Die Ausbaustufe: ein Skript, das mitschreibt#
Ab dem zweiten Fall lohnt der Umbau. Zu installieren sind dann Git für Windows, das openssl.exe mitbringt, und wahlweise der OpenTimestamps-Client. Dazu ein PowerShell-Skript, das als Gist auf GitHub3 liegt und alles übernimmt, was nach dem Export kommt. Es läuft nur unter Windows, mit der PowerShell 5.1, die dort ohnehin liegt. Blockiert Windows die geladene Datei beim ersten Start, weil sie aus dem Netz stammt, hilft der Rechtsklick auf Eigenschaften und der Haken bei „Zulassen“. Zusammen eine halbe Stunde, einmal.
Bedient wird es, indem man es als Sichern.ps1 in den Ordner legt, in dem die WACZ liegt, und dort per Rechtsklick mit PowerShell ausführt. Danach läuft alles im Dialog. Das Skript sucht die Archivdatei im Ordner, bildet ihre Prüfsumme, holt Zeitstempel bei mehreren RFC-3161-Diensten und prüft jede Antwort gegen die Datei. Für das Erfassungsprotokoll fragt es die Umstände der Aufnahme ab: Quelle, Zahl der Seiten, Browser, angemeldet oder nicht, Netz, und wie die URL-Liste zustande kam. Manches davon steht auch in der Aufzeichnung; im Protokoll steht es an einer Stelle, die ein Empfänger ohne Werkzeug liest. Am Ende liegen drei zusätzliche Dateien im Ordner: das Protokoll, eine Leseanleitung mit allen Prüfbefehlen im Klartext und ein Manifest mit den Prüfsummen sämtlicher Dateien, das selbst noch einen eigenen Zeitstempel bekommt. In einem Ordner, in dem schon ein Nachweis liegt, weigert das Skript sich zu starten.
Wie der Zeitstempel an den Hash gebunden wird#
Ein Zeitstempeldienst nach RFC 3161 bekommt die Datei nie zu sehen. Die Anfrage enthält ihren SHA-256-Wert, der Dienst hängt seine Zeit daran und signiert beides. Wer die Antwort später mit openssl ts -reply -in seite.wacz.tsr -text öffnet, findet unter „Message data“ genau diesen Hash wieder und hält ihn gegen die Datei, auch ohne die Signaturkette des Anbieters zu besitzen.
Der Stempel reicht damit genau so weit: Diese Datei lag zu diesem Zeitpunkt vor und ist seitdem unverändert. Über das Aussehen der Website sagt er nichts. Eine Aufzeichnung aus dem eigenen Browser trägt keine Signatur des Servers, und wer sie fälschen will, baut die Datei einfach, bevor er sie stempeln lässt. Diese Lücke schließen die anderen beiden Ebenen zum Teil: das Fremdarchiv, weil dort ein Dritter denselben Inhalt gesehen hat, und das Protokoll, weil es die Bedingungen der Aufnahme festhält. Eine offene Flanke bleibt die personalisierte oder ortsabhängige Ausspielung. Erfasst ist, was dieser Rechner in diesem Netz zu dieser Zeit bekommen hat.
Was die eIDAS-Verordnung von einem Zeitstempel verlangt#
Artikel 41 der eIDAS-Verordnung eur-lex.europa.eu ↗ trennt zwei Fälle. Absatz 1 hält fest, dass ein elektronischer Zeitstempel seine Rechtswirkung behält, auch wenn er elektronisch vorliegt oder die Anforderungen an qualifizierte Zeitstempel verfehlt. Absatz 2 gibt allein dem qualifizierten Zeitstempel die gesetzliche Vermutung: Datum und Zeit sind richtig, die damit verbundenen Daten unversehrt.
Freetsa und OpenTimestamps sind einfache Dienste, keine qualifizierten Vertrauensdienste. Wer die Vermutung aus Absatz 2 will, braucht einen Anbieter aus der Vertrauensliste der Bundesnetzagentur, und der kostet Geld. Alles andere landet bei der freien Beweiswürdigung, dort also, wo auch der Screenshot liegt, nur mit erheblich mehr in der Hand.
Was in die Ablage gehört, damit Dritte nachrechnen können#
Ein Dritter muss die Sicherung nachrechnen, ohne dem Urheber zu glauben. Dafür gehören drei Dinge in die Ablage: das Manifest mit den Prüfsummen aller Dateien, die Prüfbefehle im Klartext daneben, und der SHA-256-Wert der Aufzeichnung in der Fußnote des Textes, der sie verwendet. Den Zeitstempel dazu liefert ein Dienst, an dem der Urheber nichts ändert. Der Empfänger tippt einen Befehl und bekommt dieselbe Zahl heraus; wer die Datei später anzweifelt, zweifelt gegen eine Zahl, die seit dem Stempel öffentlich steht.
Der Aufwand ist bescheiden gemessen an dem, was ohne ihn passiert. Eine Recherche über Seiten, deren Autorin nie existiert hat4, oder über eine Betrugsdomain, die wenige Stunden nach dem Fund tot war5, hat genau das, was vorher gesichert wurde. Wer erst nach der Anfrage sichert, sichert die geänderte Fassung.
Rechtsprechung: Thüringer Oberlandesgericht, Urteil vom 28. November 2018, Az. 2 U 524/17, zur Einordnung des ausgedruckten Bildschirmfotos als Augenscheinsobjekt. Rechtsrahmen: Verordnung (EU) Nr. 910/2014 (eIDAS), Artikel 41. Technische Grundlagen: WARC (ISO 28500), WACZ-Spezifikation 1.1.1 von Webrecorder, RFC 3161. Werkzeuge, hier ohne Empfehlung genannt: ArchiveWeb.page und replayweb.page (webrecorder.net), freetsa.org, opentimestamps.org, archive.today, perma.cc, web.archive.org. SHA-256 des verlinkten Skripts: ad9a5230f4c73356218a37e8eabb659e5e062025626ce0ea36e8af94af77fc1d. Dieser Text ersetzt keine Rechtsberatung.
Quellen
- OLG Jena: Bildschirmfoto als Beweismittel beck-aktuell ↗
- Web Archive Collection Zipped (WACZ) specs.webrecorder.net ↗
- Sichern.ps1 - Beweissicherung fuer Web-Archive (WACZ/WARC): SHA-256, RFC-3161-Zeitstempel bei mehreren Diensten, Verifikation, Erfassungsprotokoll, Manifest / Artikel: https://christopher-helm.com/screenshot-beweis-website-beweissicher-archivieren/ Gist ↗
- eIDAS-Verordnung eur-lex.europa.eu ↗
Über den Autor
Christopher Helm arbeitet seit 2014 mit maschinellem Lernen. Hier schreibt er privat über KI, Sicherheit im Netz und Medien.
Mehr über den AutorDiesen Blog bei Google als bevorzugte Quelle wählenGoogle zeigt Beiträge dieser Seite dann häufiger unter Top Stories. Die Wahl lässt sich jederzeit zurücknehmen.Presseschau
Worüber deutsche Medien gerade berichten, geordnet nach Ereignis. So sieht man, wer eine Nachricht bringt und wer nicht.
Zur Presseschau