Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datendatei gegen Manipulation schützen (https://www.delphipraxis.net/86861-datendatei-gegen-manipulation-schuetzen.html)

messie 20. Feb 2007 17:38


Datendatei gegen Manipulation schützen
 
Moin,

ich habe eine Datei mit Daten, deren Daten nicht manipuliert werden sollen (Messdaten für eine DIN-Prüfung).
Ich wollte das mit einer Binärdatei lösen. Das ist an sich recht sicher, jedenfalls fummeln da die Laborleute nicht einfach dran rum wie an einer ASCII-Datei.
Der Nachteil ist, daß ich die Struktur durch die typisierte Datei dann weitgehend festsetze. In einer ASCII-Datei kann ich mal eben eine Spalte Daten danebensetzen, ohne daß die alten Dateien konvertiert werden müssen oder die Auswertung mit Dateiversionen etc. arbeiten muß.

Gibt es dafür Lösungen? Bei untypisierte Dateien müsste ich mit Kennzeichnern arbeiten und alles byteweise lesen und prüfen, also langsam und ähnlich groß wie ASCII-Dateien. Kann man ASCII-Dateien per Stream-Eintrag schützen?

Danke, Messie

Klaus01 20. Feb 2007 17:44

Re: Datendatei gegen Manipulation schützen
 
Willst Du sicherstellen, das die Datei nicht manipuliert werden kann?
Oder reicht es wenn Du mitbekommst, das die Datei manipuliert wurde?

Zum ersten Punkt: dann solltest Du die Datei verschlüsseln
Zum zweiten Punkt: einen Haswert (md5,sha) über die Datei bilden, bevor die Datei geöffnet wird
den neu ermittelten Haswert mit dem gespeicherten vergleichen.

Grüße
Klaus

messie 20. Feb 2007 18:28

Re: Datendatei gegen Manipulation schützen
 
Uff, das ist aber aufwendig! Die Verschlüsselung würde ich ausschließen. Und ein hash müßte ich ja irgendwo so speichern, daß es keiner findet, das ist für das Projekt nicht angemessen. Deshalb hatte ich ja die typisierte Binärdatei benutzt, weil die sich doch recht ordentlich selbst schützt.
Die Schutzhöhe muss nicht so hoch sein - da sind keine Hacker dran sondern ein paar QS-Typen, die ein Teil nicht in die Produktion zurückgeben wollen um pünktlich Feierabend zu machen. Da werden dann gerne mal die Daten im Grenzbereich etwas geschönt.
OT: Ich hab' ja selber mal in der QS gearbeitet.

Grüße, Messie

Kinimod8 20. Feb 2007 18:40

Re: Datendatei gegen Manipulation schützen
 
Zitat:

Zitat von messie
Und ein hash müßte ich ja irgendwo so speichern, daß es keiner findet

Nicht unbedingt. Den Hash kannst du auch offen abspeichern. Du musst ja nicht sagen, dass er der Hash der zu schützenden Datei ist.

Zitat:

Zitat von messie
Uff, das ist aber aufwendig! Die Verschlüsselung würde ich ausschließen.

Eine Verschlüsselung würde ich nicht als aufwändig betrachten. Muss ja keine bombensichere sein, oder? Anregungen z.B. hier.

himitsu 20. Feb 2007 18:48

Re: Datendatei gegen Manipulation schützen
 
Dann reicht also doch die Lösung mit dem Hash.

Wenn die Daten der Reihe nach in die Datei geschrieben werden, dann wäre es sogar möglich den Hash gleich wärend der Speicherung zu erstellen, ansonsten muß ja z.B. beim Schließen der Hash über die ganze Datei gebildet werden.

Für erstere Methode (beim Speichern gleich mit Hashen) könnte man zich z.B. die Schreibfunktion überladen und das Hashen da integrieren, damit müßte dann nur beim Erstellen und Schließen der Datei die Hashfunktion initialisiert und finalisiert
und natürlich der Hash gespeichert werden.

z.B.:
Delphi-Quellcode:
Var Hash: ...;

Function Write(aFile: TFile; Datensatz: TDatensatz);
  Begin
    UpdateHash(@Datensatz, SizeOf(TDatensatz), Hash);
    System.Write(aFile, Datensatz);
  End;
Den Hash kannst du z.B. in einer weiteren Datei abspeichern.
xyz.log < die zu schützenden Daten
xyz.sec < die Sicherheitsdaten (der Hash)

Wenn du den Hash mit in der Datendatei ablegen willst, dann geht das natürlich nicht wenn der Hash über die gesamte Datei errechnet wird ... der Hashwert muß da ausgeschlossen werden,
denn dieser würde ja sonst den errechneten Hash wieder verändern.

[add]
Was die Sicherheit angeht, dann solltest du natürlich nicht inen überallbekantes Hashverfahren über die gesamte Datei erstellen ;)

Nimm einen unbekannteren, oder ändere den Hash am ende noch etwas ab,
oder Rechner einfach noch weitere Werte mit ein.

Wenn die nicht wissen was das für ein Hashverfahren ist, oder wie/worüber es erstellt wurde, dann können die es auch nicht fälschen (wenn es keine "Profis" sind, so wie du sagtest)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz