it-swarm.com.de

Woher wissen Sie, ob eine Textdatei bearbeitet oder manipuliert wurde?

Ist es möglich zu wissen, ob eine Textdatei, z. wurde im XML-Format im Laufe der Zeit bearbeitet oder manipuliert?

Der Kontext zu meiner Frage folgt:

Ich bin ein Wissenschaftler in der Industrie, der eine Technologie namens "Massenspektrometrie (MS)" verwendet. MS ist eine verwendete Analysetechnik, z. bei der forensischen Analyse, um zu bestimmen, ob eine bestimmte Verbindung in einer Probe vorhanden ist (z. B. Droge des Missbrauchs in Blut oder Urin).

Massenspez. Datendateien werden normalerweise im Flat-File-Format gemäß der privaten Binärspezifikation des Geräteherstellers gespeichert - ihre Software kann sie verarbeiten, sonst nichts. Es gibt jedoch offene Standards für MS-Daten, und die meisten Anbieter unterstützen den Export in mindestens eine offene Spezifikation. Diese offenen Standards basieren heutzutage hauptsächlich auf XML (z. B. mzML ) und ermöglichen die Verarbeitung mit Open Source-Anwendungen sowie die langfristige Speicherung (> 10 Jahre) der Daten in einem Format, das dies nicht tut erfordern, dass wir einen archivierten Computer und das Betriebssystem (oder die VM) und die Verarbeitungssoftware für lange Zeiträume warten.

Das Binärformat des Herstellers bietet zumindest eine gewisse Sicherheit gegen Datenmanipulationen, die XML-Formate jedoch nicht. Daher das Problem: Die offenen Formate sind sehr nützlich, um den Zugriff auf Daten über Archivierungszeiträume hinweg zu ermöglichen, aber die Sicherheit ist ein Problem.

38
Drew Gibson

Die Standardlösung wäre die Verwendung kryptografischer Signaturen. Lassen Sie jeden Techniker ein PGP-Schlüsselpaar erstellen, den öffentlichen Schlüssel veröffentlichen und den privaten Schlüssel sicher aufbewahren.

Wenn ein Techniker eine Analyse durchführt, signiert er die Ergebnisdatei mit seinem privaten Schlüssel. Jetzt kann jeder, der die Datei überprüfen möchte, die Signatur mit dem öffentlichen Schlüssel des Technikers überprüfen. Wenn jemand die Datei ändert, ist die Signatur nicht mehr korrekt.

Sicherheitsüberlegung: Sollte ein privater Schlüssel eines Technikers jemand anderem bekannt werden, kann diese Person die Dateien ändern und auch die Signatur in eine gültige ändern. Dieses Problem kann behoben werden, indem mehrere Personen jede Ergebnisdatei signieren. Ein Angreifer würde alle Schlüssel benötigen, um alle Signaturen durch gültige zu ersetzen.

Alternative Low-Tech-Lösung : Drucken Sie jede Ergebnisdatei aus, lassen Sie sie vom Techniker nach alter Schule (mit einem Stift) signieren und legen Sie die Datei in einem physisch sicheren Archiv ab.

Übrigens : Gehen Sie nicht davon aus, dass das herstellerspezifische Binärformat mehr Sicherheit gegen Manipulationen bietet als XML. Nur weil Sie es nicht lesen und bearbeiten können, wenn Sie es mit einem Texteditor öffnen, heißt das nicht, dass niemand anderes das Format rückentwickeln und einen Editor dafür erstellen kann.

81
Philipp

Jede Form der digitalen Signatur reicht aus. Hier einige Hinweise:

  • Für XML-Daten gibt es einen Standard für digitale Signaturen ( XMLSign ). Leider ist dieser Standard ziemlich schlecht und weist eine wichtige Sicherheitslücke auf (Dokumente müssen durch eine XML-Transformation normalisiert werden, bevor sie signiert werden können. Dies ist äußerst schwierig, da die Transformation selbst ein wichtiger Bestandteil der Signatur wird).

  • Sie können auch PGP oder S/MIME verwenden, um Dokumente digital zu signieren. Diese erzeugen jedoch neue, textbasierte und meist lesbare Dokumente noch manipulationssichere Dokumente.

  • Schließlich können Sie getrennte Signaturen verwenden. Grundsätzlich handelt es sich um eine andere Datei, die die mit einem anderen Dokument verknüpfte digitale Signatur enthält und zur Validierung der Originaldaten verwendet werden kann (unabhängig vom Originalformat).

Lassen Sie mich hier ein paar zusätzliche Informationen hinzufügen:

  • Die Auswahl der richtigen Eigenschaften für die Signatur (Algorithmus, Schlüsseltyp und -größe usw.) hängt stark von der von Ihnen festgelegten Bedingung ab: Wie lange möchten Sie die Daten schützen, gegen welche Art von Gegner möchten Sie sie schützen? Was ist der Wert einer Fälschung? Was wäre der Wert eines Angriffs, bei dem alle mit demselben Schlüssel signierten Dokumente beschädigt werden?) Gibt es gesetzliche Anforderungen? Dies bedeutet, dass Sie einen Spezialisten konsultieren sollten, der diese Geschäftsanforderungen übersetzen und in technische übersetzen kann.
  • Ich rate Ihnen dringend, Ihrer Signatur einen sicheren Zeitstempel hinzuzufügen. Auf diese Weise können Sie nicht nur nachweisen, dass ein Dokument nicht manipuliert wurde, sondern auch nachweisen, wann die Signatur erfolgt ist.
27
Stephane

Ich werde die drei Hauptoptionen und Vor-/Nachteile der einzelnen skizzieren.

Speichern Sie die Sicherungen der Dateien an einem sicheren Ort

Ziemlich selbsterklärend. Der "sichere Speicherort" kann ein schreibgeschütztes Medium (wie CDs) oder ein Netzlaufwerk sein, auf das jeder lesen kann, aber nur der Supervisor schreiben kann, oder ein Online-Speicherdienst (z. B. Dropbox), der das Fälschen von Dateien relativ schwierig macht Änderungsdaten.

Vorteile

  • Sie sollten sowieso ein Backup-System haben

Nachteile

  • Wenn die Dateien groß sind, kann das Herunterladen zur Überprüfung zeitaufwändig sein
  • Wenn der Fälscher in den sicheren Ort einbricht, kann er seine Spuren verwischen

Speichern Sie Hashes an einem sicheren Ort

Ein Hash ist ein Fingerabdruck einer Datei, die ungefähr so ​​aussieht 8f2e3f53aa90b27bda31dea3c6fc72f6;; Wenn zwei Dateien nur geringfügig voneinander abweichen, haben sie einen unterschiedlichen Hash. Nehmen Sie einen Hash der Originaldatei und speichern Sie ihn sicher. Um zu überprüfen, ob eine Datei nicht geändert wurde, nehmen Sie einen Hash und vergleichen Sie ihn mit dem gespeicherten Hash.

Vorteile

  • Sie müssen einen ~ 32-stelligen Code anstelle einer gesamten Datei sicher speichern/überprüfen

Nachteile

  • Sie müssen weiterhin auf eine externe Ressource zugreifen, um die Datei zu überprüfen
  • Wenn der Fälscher in den sicheren Ort einbricht, kann er seine Spuren verwischen

Kryptografische Signaturen

In diesem Fall können eine oder mehrere Personen die Datei "signieren". Wenn Änderungen vorgenommen werden, werden diese Signaturen ungültig. Wenn jeder, der die Datei signieren muss, bereit ist (oder betrogen wird), eine manipulierte Datei zu signieren, können Sie natürlich mit der manipulierten Datei davonkommen.

Vorteile

  • Die Sicherheitsinformationen können in der Datei selbst oder auf andere Weise auf demselben Laufwerk gespeichert werden, was eine einfachere Überprüfung bedeutet.

Nachteile

  • Jeder, der Dateien signiert, muss sehr vorsichtig sein, um zu verhindern, dass jemand seinen privaten Schlüssel stiehlt.
  • Jeder, der Dateien signiert, muss sehr vorsichtig sein und wissen , welche sie signieren.
6
Artelius

Nehmen Sie Ihre XML-Datei und Ihr Lieblings-Urlaubsfoto. Verketten Sie die Dateien und berechnen Sie mehrere Hashwerte der resultierenden Datei.

Das Urlaubsbild stellt sicher, dass es extrem schwierig ist, eine Kollision zu erzeugen, selbst wenn die Urlaubsfotodatei öffentlich ist. Wenn Sie mehrere Hash-Algorithmen verwenden, ist es unwahrscheinlich, dass alle diese Algorithmen innerhalb von 10 Jahren beschädigt werden.

2

Adressierung der Sicherheit im Dateiformat des Anbieters, Erweiterung der Aussagen von @Philipp in den Kommentaren.

Ich habe mich in einem Hersteller-Dateiformat umgesehen (keine Massenspezifikation, aber nahe genug für diese Zwecke). Es wurde durch die Installation der Software viel einfacher, aber ich bin kein Experte in diesen Dingen. Ich könnte Metadaten leicht ändern (das Extrahieren der Metadaten war in erster Linie mein Ziel). Echte Daten wären schwieriger gewesen, aber keineswegs unmöglich zu ändern. Da Metadaten Dinge wie die Proben-ID und das Testdatum enthalten, ist dies eine ausreichend große Sicherheitslücke für Dinge wie "wessen Probe war sauber und wann?", wie es für Sie relevant erscheint, oder "wer zuerst" dieses Medikament entdeckt? " in anderen Bereichen.

Einige Software bietet einige Manipulationsschutzfunktionen (z. B. interne Verwendung von - nicht unbedingt Krypto-Grade - Hashes; Benutzerberechtigungen beim Bearbeiten nter Verwendung ihrer Software). Reverse Engineering wäre für jemanden mit einigem Können in den meisten Fällen kaum mehr als trivial. Wenn die Software installiert ist, kann das Umgehen der integrierten Funktionen so einfach sein wie das Schreiben eines Frontends zum Aufrufen der DLLs des Anbieters, da diese Manipulationsschutzfunktionen normalerweise optionale Add-Ons sind (in vielen Bereichen sind sie nicht erforderlich oder veraltet ).

(Dies hätte eine Folge von Kommentaren sein können, aber da mein Ziel darin bestand, das Problem mit der Herstellerdatei klarer zu machen, schien es besser, es richtig zu schreiben.).

2
Chris H

Wie wäre es, wenn die Techniker Paare eindeutiger Datei-IDs und ihrer Hashs über ihre eigenen Konten auf Twitter veröffentlichen?

Dies wird beweisen, dass:

  • Die Datendatei mit dieser ID und diesem Hash war zum Zeitpunkt der Veröffentlichung vorhanden
  • Die Person, die Zugriff auf das Konto hat, vertraut zu diesem Zeitpunkt dem Inhalt der Datei
  • Die Datei wird nachträglich nicht geändert, da Twitter die Bearbeitung von Tweets nicht zulässt

Diese Methode bietet mindestens vergleichbare Sicherheit wie viele der auf digitalen Signaturen basierenden Antworten und Vorteile wie:

  • Viel einfacher zu erlernen und zu verwenden (keine komplizierten Verfahren zum Generieren, Öffnen oder Sichern privater Schlüssel)
  • Hohe Redundanz (durch Twitter-Backups und Twitter-Scraping-Sites von Drittanbietern)
  • Eingebauter Zeitstempel (der wahrscheinlich in einem Gerichtsverfahren ohne viel Erklärung stehen wird)

Ich empfehle mindestens SHA256 als Hash-Algo zu verwenden.

1
billc.cn

Eine der einfachsten Möglichkeiten besteht darin, einen Hash der Datei zu erstellen und an einer anderen Stelle zu speichern, damit Sie wissen, ob sie geändert wird. Intrusion Detection-Programme verwenden diese Technik ständig, um die Integrität zu überprüfen (oder zumindest anzuzeigen, ob ein Angreifer mit Systemdateien herumgespielt hat).

Schauen Sie sich ein Programm wie AIDE an. Sie können dies für das Verzeichnis ausführen, das die Dateien enthält (und es möglicherweise bei Bedarf ausführen, wenn eine Datei hinzugefügt wird) Aktualisieren Sie die Datenbank der Hashes. Führen Sie es jeden Abend aus, um einen Bericht mit allen Dateiänderungen zu überprüfen und per E-Mail zu versenden.

Wenn Sie das Original kennen müssen, ist ein versioniertes Dateisystem möglicherweise eine gute Idee. Jede Änderung, die an einer Datei vorgenommen wird, wird aufgezeichnet und alte Versionen können extrahiert werden. Alternativ könnte ein Sicherungssystem verwendet werden, das neue Dateien erkennt und an einem sicheren Ort sichert (und alle alten Versionen beibehält - oder ein Angreifer kann die Datei einfach wiederholt ändern, bis das Original gelöscht wird).

1
gbjbaanb