2019-10-26T09:35:15
biancaHallo!
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
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
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
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
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
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.