Hallo,
ich wollte mich mal erkundigen welche Lösungswege es überhaupt gibt die Datenintegrität von erhaltenden Dateien sicherzustellen.
Sagen wir Komponente A schickt eine Datei an Komponente B. Wie kann B feststellen das die Daten nicht verfälscht worden sind ?
Würde ein einfaches XML Dokument reichen und dann die Validierung per XSD ?
Oder braucht man Mechanismen wie Hashtabellen oder irgendwelche Checks ?
Ich bin da leider nicht so bewandert und soll es in einem Projekt realisieren.
Danke.
SUMMMM MACHT DIE NSU!
Sagen wir Komponente A schickt eine Datei an Komponente B. Wie kann B feststellen das die Daten nicht verfälscht worden sind ?
Das schreit doch geradezu nach Checksummen, schau dir dazu mal md5 oder SHA-1 an.
be the hammer, not the nail!
Danke für deine Antwort.
Hab nun ein wenig nachgelesen. Der MD5 scheint veraltet zu sein. Und der SHA-1 auch.
Was ist den de facto der Standard zur Zeit ?
SUMMMM MACHT DIE NSU!
Wo hast du die Info her, dass diese veraltet sein sollen?
Life is a short
Wo hast du die Info her, dass diese veraltet sein sollen?
Message-Digest Algorithm 5 (MD5) ist eine weit verbreitete kryptographische Hashfunktion, die aus einer beliebigen Nachricht einen 128-Bit-Hashwert (deutsch: Prüfsumme) erzeugt. MD5 wurde 1991 von Ronald L. Rivest entwickelt. Sie gilt inzwischen nicht mehr als sicher, da es mit überschaubarem Aufwand möglich ist, unterschiedliche Nachrichten zu erzeugen, die dieselbe MD5-Prüfsumme aufweisen.
Wikipedia
SHA-1, Am 15. Februar 2005 meldete der Kryptographieexperte Bruce Schneier in seinem Blog, dass die Wissenschaftler Xiaoyun Wang, Yiqun Lisa Yin und Hongbo Yu an der Shandong University in China erfolgreich SHA-1 gebrochen hätten. Ihnen sei es gelungen, den Aufwand zur Kollisionsberechnung von 280 auf 269 zu verringern. 269 Berechnungen könnten eventuell mit Hochleistungsrechnern durchgeführt werden. Kollisionen wurden aber bis heute nicht veröffentlicht.
Wikipedia
SUMMMM MACHT DIE NSU!
Dich interessiert ja die Integrität, du willst es nicht in einem kryptographischen Kontext einsetzen, daher ist Sha1 ok, MD5 denk ich auch.
Ansonsten such dir eins aus: http://de.wikipedia.org/wiki/Kategorie:Hash
Life is a short
Wenn du XML-Dateien signieren und verifizieren möchtest, hilft dir die SignedXml-Klasse (System.Security.Cryptography.Xml)
Hallo,
ja der kryptische Teil ist nicht zu beachten. Da dieser schon intern geregelt wird.
Eine XML zu Signieren gefällt mir. Leider kann ich keine C# Klassen verwenden, da die Systeme bzw. deren Anwendungen unter C++ entwickelt sind und ich erweitern soll.
Deshalb frage ich nach dem generellen Lösungsweg und die Technologie die zur Zeit State of the Art ist.
Danke
SUMMMM MACHT DIE NSU!
Signieren mit X.509 Zertificaten.
Kannst du mit jedem OS benutzen, und ist sowohl für .NET als auch für C++ unter windows einfach zu handhaben.
Hallo NSU-Ulli,
geht es um Übertragungsfehler oder um Angriffe auf die übertragenen Daten?
Außerdem heißt die Verringerung von 280 auf 269 keinesfalls, dass das Verfahren schon unbrauchbar oder veraltet ist. Das geht aber auch aus dem Wikipedia-Zitat direkt hervor.
Weitere Informationen, ob es bereits praktisch möglich ist, MD5 gezielt anzugreifen, gibt es in [erledigt] Wie "einmalig" ist ein MD5-Hash?.
herbivore
Hallo,
es geht nur darum das die Daten fehlerfrei versendet worden sind und vollständig vorhanden.
Danke
SUMMMM MACHT DIE NSU!
Hallo NSU-Ulli,
dafür kannst du so ziemlich jedes Prüfsummenverfahren verwenden. MD5 und SHA1 stellen Übertragungsfehler mit einer Wahrscheinlichkeit von praktisch 100% fest. Siehe auch [erledigt] MD5 vs. SHA1: Wie wahrscheinlich produzieren zwei Dateien den gleichen Hash?
Die Aussagen, dass MD5 und SHA1 nicht mehr zeitgemäß wären, beziehen sich ausschließlich auf gezielte Angriffe.
herbivore