Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen (https://www.delphipraxis.net/178030-xml-datei-zu-stream-%7C-stream-zu-hashwert-%7C-xml-gegen-manipulation-schuetzen.html)

himitsu 12. Dez 2013 12:22

AW: XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen
 
Man kann vor dem Haschen die XML nochmal "neu" formatiert in einen String/Stream kopieren und da hashen (den Hash entfernt/ersetzt).
Da wäre die Formatierung auch fast egal, abgesehn von der Groß-/Kleinschreibung, denn XML ist grundsätzlich erstmal CaseInsensitiv und auch die Reihenfolge der Parameter könnte interessant sein, welche ja praktisch auch egal ist, aber beim Haschen kommt es dann wieder auf die Reihenfolge drauf an.

Je nach Auswertung könnte auch die Reihenfolge der Nodes egal sein.

Auch kann ein Node so
Delphi-Quellcode:
<node></node>
oder
Delphi-Quellcode:
<node />
gespeichert sein, was aber vom Inhalt, bzw. aus Sicht des DOMs nahezu egal ist.

Und womöglich kann für die Auswertung auch egal sein, ob ein leerer Node vorhanden ist oder nicht.

p80286 12. Dez 2013 12:56

AW: XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen
 
Wäre es bei diesem aufwand nicht vllt. einfacher einen (verschlüselte) Zip-Datei mit den XML-Daten zu erstellen und vor Programmstart, diese zu entpacken?

oder aber die Daten gleich Binär speichern, und dort einen Hash dazu packen. GGf. kann man ja für Neugierige dann noch eine xml-Datei generieren.

Gruß
K-H

Sir Rufo 12. Dez 2013 13:03

AW: XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen
 
Zitat:

Zitat von p80286 (Beitrag 1239561)
Wäre es bei diesem aufwand nicht vllt. einfacher einen (verschlüselte) Zip-Datei mit den XML-Daten zu erstellen und vor Programmstart, diese zu entpacken?

oder aber die Daten gleich Binär speichern, und dort einen Hash dazu packen. GGf. kann man ja für Neugierige dann noch eine xml-Datei generieren.

Gruß
K-H

Das ist doch durch die Brust ins Auge und wieder zum Ohr rein.

Wenn ich aus einer wie auch immer gearteten Datei eine Datenstruktur auslesen kann, die vom Daten-Inhalt her identisch ist, dann sind die Daten unverändert.

So kann diese Datei dann auch in ein JSON, YAML, Ini, etc. Format überführt werden (inkl. dem Hashwert) und die Daten können zuverlässig auf Unversehrtheit/Änderung geprüft werden.

Darum würde ich in einen Hash niemals die Speicherstruktur aufnehmen, wenn es mir um die Daten geht.

Bei einem EAN13 Barcode wird ja auch nicht die Strichbreite, Höhe, Druckfarbe oder Papierart in der Prüfziffer berücksichtigt. Auch nicht der Karton, wo der dran draufklebt ;)

madas 12. Dez 2013 13:34

AW: XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen
 
Nur mal so am Rande: Wenn jemand eine Stelle im Hash ändert und die Messwerte nicht manipuliert, dann schlägt Deine Prüfung trotzdem fehl, obwohl die Messwerte noch korrekt sind.

Ich würde es daher auch wie p80286 machen und die XML-Datei in eine passwortgeschützte ZIP-Datei schmeißen und Ruhe ist. Das Passwort ist in geeigneter Form (nicht MD5) zu hinterlegen.

madas

Sir Rufo 12. Dez 2013 13:49

AW: XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen
 
Zitat:

Zitat von madas (Beitrag 1239567)
Nur mal so am Rande: Wenn jemand eine Stelle im Hash ändert und die Messwerte nicht manipuliert, dann schlägt Deine Prüfung trotzdem fehl, obwohl die Messwerte noch korrekt sind.

Ich würde es daher auch wie p80286 machen und die XML-Datei in eine passwortgeschützte ZIP-Datei schmeißen und Ruhe ist. Das Passwort ist in geeigneter Form (nicht MD5) zu hinterlegen.

madas

Wenn jemand den Hashwert ändert oder die Daten, dann ist genau der Fall eingetreten, dass man diesen Daten nicht mehr vertrauen kann.

Und der wird also zuverlässig erkannt.

Was soll denn jetzt die ZIP-Datei noch bringen? Ist die gegen Veränderungen geschützt?
Kann ich da etwa keine Bytes ändern?

:roll:

Und jetzt kennt einer das Hashverfahren, baut die Datei neu auf mit falschen Werten und löscht auch noch die ZIP-Datei ...

Und es fällt ein Klavier vom Himmel und alle Häuser fallen um, alle Kühe fallen um und es gibt kein Strom mehr ... ja, was denn dann?

Headbucket 12. Dez 2013 14:14

AW: XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen
 
:-D
Bevor die Diskussion in dieser Richtung ausartet möchte ich doch kurz auf diesen Thread verweisen:
Zitat:

Zitat von Bernhard Geyer (Beitrag 1239510)
Diskussion wurde schon im Entwickler-Forum geführt

Zippen kommt somit nicht in Frage. Auch soll die XML-Speicherung die bisherige binäre Speicherung ablösen.

In der Regel soll eigentlich Niemand etwas an den Daten verändert. Deshalb wäre es im Prinzip auch nicht schlimm, wenn man die Struktur im Hashwert mit berücksichtigt.
Es soll rein informativ jedoch möglich sein, sich die XML-Datei anzuschauen.

Möchte man wirklich Messwerte manipulieren, dann würde sich das auch deutlich leichter realisieren lassen als durch das "knacken" meines Hashwertes. So könnte man z.B. einfach "falsch" Messen, bis man seine Wunschwerte hat. Aus diesem Grund ist bereits MD5 als Hashfunktion mehr als ausreichend. Es soll somit lediglich gegen eine offensichtliche Manipulation schützen.

Es wird wohl nun auf die Methode mit den Streams und einer eventuellen Neuformatierung dieser Streams hinauslaufen.

generic 12. Dez 2013 14:29

AW: XML-Datei zu Stream | Stream zu Hashwert | XML gegen Manipulation schützen
 
Da gibt es u.a. auch einen Standard, welcher sich mit XML-Signaturen beschäftigt.
http://www.w3.org/TR/xmldsig-core/


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr.
Seite 2 von 2     12   

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