Thread Unveränderbare Datei (11 answers)
Opened by bianca at 2019-10-26 11:35

haj
 2019-10-26 14:38
#190798 #190798
User since
2015-01-07
437 articles
BenutzerIn

user image
2019-10-26T09:35:15 bianca
Hallo!

Gibt es eine Möglichkeit, eine Datei (in diesem Fall eine Logdatei als einfache latin1 Textdatei) so zu sichern, dass ihr Inhalt niemals (zumindest nicht ohne sehr erheblichen Rechenaufwand) geändert werden kann, ohne dass das auffällt? Also auch ich als Urheber nicht!

Falls ja, wie stellt man das mit Perl 5 an? Falls es damit zu tun hat, hätte ich CPAN:Digest::Keccak am Start.

Danke

An dem Thema habe ich beruflich einige Jahre gearbeitet... das wird deshalb etwas länglich, wofür ich mich gleich entschuldigen möchte...

Mit CPAN:Digest::Keccak hast Du schon eine geeignete Komponente am Start. Jeder halbwegs aktuelle Hash-Algorithmus taugt "für private Zwecke", Keccak war der Gewinner des SHA-3-Wettbewerbs - somit sollte CPAN:Digest::SHA3 genau das gleiche tun.

Solche Algorithmen leisten folgendes: Zu einem beliebigen Datenobjekt, beispielsweise einer Textdatei, erstellen sie einen Hash-Wert. Der hat die Eigenschaft, dass es nicht ohne sehr erheblichen Rechenaufwand möglich ist, die Textdatei so zu verändern, dass die geänderte Variante den gleichen Hashwert ergibt.

Nun kann aber immer noch jeder die Datei verändern, für die geänderte Datei den neuen Hashwert berechnen und abspeichern. Bis hierher ist es also ausreichend, um versehentliche Veränderungen zu erkennen.

Der nächste Schritt ist es, die Log-Datei und/oder den Hashwert digital zu signieren, beispielsweise mit CPAN:GnuPG (auch wenn man eine Datei digital signiert, wird intern zunächst ein Hashwert berechnet und der dann signiert). Dazu brauchst Du ein Schlüsselpaar, bestehend aus einem privaten Schlüssel, den nur Du hast (technisch: eine Datei, die Du bei Gebrauch mit einem nur Dir bekannten Passwort "aktivierst") und einen öffentlichen, den jeder haben kann. Zur Signatur verwendest Du Deinen privaten Schlüssel, das heißt, nur Du kannst die Signatur erstellen. Aber jeder, der den öffentlichen Schlüssel hat, kann sich davon überzeugen, dass die Datei nicht gegenüber dem Zustand, den Du signiert hast, verändert wurde.

Das hindert Dich immer noch nicht daran, selber die Datei zu verändern, für die geänderte Datei eine neue Signatur zu erstellen und beides als die richtige Logdatei auszugeben. Wenn Du das auch verhindern willst, dann brauchst Du die Hilfe anderer.

Eine recht einfache Lösung dafür, für die es allerdings meines Wissens kein CPAN-Modul gibt, sind digitale Wikipedia:Zeitstempel nach RFC 3161. Damit signiert jemand anderer, dem Du vertrauen solltest, mit seinem privaten Key Deinen Hashwert zusammen mit der Uhrzeit. Wichtig ist dabei: Die Logdatei braucht er dafür nicht zu sehen! Für nicht gewerbliche Zwecke kann man solche Zeitstempel beim Zeitstempeldienst der DFN-PKI (DFN = Deutsches Forschungsnetz) bekommen.

Damit hast Du's beisammen: Der signierte Zeitstempel beweist, für jeden überprüfbar, dass eine Datei, auf die der Hashwert passt, zu einem bestimmten Zeitpunkt existiert hat. Die Datei selbst hast Du ja auch. Mit Deiner eigenen Signatur kannst Du zusätzlich bestätigen, dass Du für den Inhalt der Datei gradestehst - das tut der Zeitstempel nämlich nicht.

View full thread Unveränderbare Datei