Wo wird MD5 noch verwendet außer im privaten Datencheck oder Webservern?

...komplette Frage anzeigen

4 Antworten

In etlichen Backup-Programmen ist der "gute" alte MD5 noch drin. Und zwar einfach zu dem Zweck, schnell datenbankgestützt prüfen zu können, ob sich eine Datei geändert hat, und dann eine Inkrementalsicherung machen zu können.

Da nimmt man die Restunsicherheit inkauf, die sich durch MD5 ergibt. Denn rein statistisch gesehen ist die Chance, sechs Richtige im Lotto zu haben, immer noch größer, als bei einer Dateiänderung exakt wieder den selben MD5-Hash der Vorversion zu haben.

Die genannten werden und wurden zur Berechnung von Prüfsummen großer Dateien verwendet.

Wenn du dir also eine mehrere GB große Datei herunter geladen hast, dann kannst du einfach z. B. den MD5-Hash derselben berechnen, und damit vergleichen, was auf der Download-Website steht, bzw. den Inhalt der ebenfalls dort herunterladbaren MD5SUMS oder *.md5 Datei vergleichen.

Die MD- und SHA-Familien wurden als kryptografische Hashalgorithmen konzipiert, aber andere einfachere Hashverfahren - bei denen bewusst häufige Kollisionen in Kauf genommen werden - spielen eine wichtige Rolle innerhalb von grundlegenden Datenstrukturen bei nahezu jeder Software. (Stichwörter: Set, Map, Tree, usw.) Hierbei wären "sichere" Hash-Algorithmen ein nutzloser Overkill mit teuren Performance-Einußen.

PS: Ich nutze MD5 recht häufig zum Auffinden von Datei-Doubletten. Das Verfahren ist relativ schnell und in der Praxis kollisionsfrei (zumindest, wenn man es nicht drauf anlegt). :)

Wepster 25.02.2017, 23:40

Was bedeutet "Kollision"

1
TeeTier 26.02.2017, 00:04
@Wepster

Eine "Kollision" tritt auf, wenn unterschiedliche Eingangsdaten den selben Hash erzeugen.

Wenn du also zwei verschiedene Dateien hast, welche die gleiche MD5 Summe erzeugen, hast du eine sog. Kollision. :)

1
Wepster 26.02.2017, 00:31
@TeeTier

Das wäre doch "kaum möglich". Sowas muss man dann doch errechnen. Ich verstand "Kollision" als Angriff den Hash zu knacken um dann den Namen der Datei zu haben. Mehr nicht, nur den Name.

Es geht ja auch nur um den Namen der Datei nicht um die Datei itself. Denn man kann ja keine Datei erzeugen aus einem Hash.

Wenn eine Datei mit MD5 gehasht wurde, lohnt s dann den Hash zu knacken? Was würde man den da raus bekommen in Klarsicht? Sagen wir ich hab n Hash von ubuntukylin-16.04.2-desktop-amd64.iso dann würde ein Hash davon auch nur den Name der Datei beinhalten. Eine relativ unnütze Information. Daher würde ich ja schon noch MD5 als Prüfsumme verwenden insofern die Kollisionswahrscheinlichkeit gering ist, also tatsächlich ist.

No-go bei allen Texten.

Was ist eigentlich mit mehrschichtigen MD5?

TEXT->MD5->MD5->MD5=Hash

Ist das sicher? Natürlich nicht wenn man weiß dass das Ergebnis 1 auch eine Hash ist. Ich glaube hier kommt SALT and PEPPER ist Spiel...???

1
TeeTier 26.02.2017, 03:06
@Wepster

Das wäre doch "kaum möglich". Sowas muss man dann doch errechnen

Richtig! Zwei unterschiedliche Dateien mit dem selben MD5-Hash muss man errechnen. Das ist aber alles andere als unmöglich. Im Internet gibt es dafür Programme und im Schnitt rechnet ein moderner PC weit weniger als eine Minute daran. :)

Ich verstand "Kollision" als Angriff den Hash zu knacken um dann den Namen der Datei zu haben. Mehr nicht, nur den Name.

Es ist egal, ob es sich um den Namen einer Datei, ein Passwort, oder gar den Inhalt einer Datei handelt. Sobald zwei unterschiedliche Eingangsdaten den selben Hash produzieren, hast du eine Kollision.

Mit dem Namen einer Datei hat das Ganze aber erst mal nichts zu tun.

Wenn du eine ISO-Datei mit MD5 hashst, wird nur der Inhalt dieser großen Datei gehasht. Der Dateiname ist dabei egal. Auch herbei kann man eine Kollision finden, indem man z. B. an die ISO Datei ein paar hundert Byte zusätzlichen Müll ranhängt, der dafür sorgt, dass der MD5-Algorithmus den selben Hash erzeugt, wie den der ursprünglichen ISO.

Die Dateien haben dann einen unterschiedlichen Inhalt (einmal mit und einmal ohne Müll am Dateiende), aber produzieren den selben MD5 Hash. Wenn man dann zusätzlich noch mit einem anderen Verfahren (z. B. SHA1) hasht, stellt man plötzlich fest, dass sich die neuen Hashwerte unterscheiden. :)

Zwangsläufig muss es auch bei geschachteltem MD5-Hashing ebenfalls zu Kollisionen kommen, sodass ...

Passwort -> MD5 -> MD5 -> c972119ef24f720e7aca864ff7e07c06

... und ...

ISO-Datei -> MD5 -> MD5 -> c972119ef24f720e7aca864ff7e07c06

... tatsächlich den gleichen Hash liefern werden, auch wenn sich die Hashes des ersten Durchlaufes grundlegend unterscheiden. Das ist aber rein theoretischer Natur und wird in der Praxis vermutlich niemals anzutreffen sein. Trotzdem ist es statistisch möglich, wenn auch ohne jeden Praxis-Bezug. :)

Wenn du Passwörter hashen willst, und das mit ...

Salz + Passwort + Pfeffer -> MD5

... machst, dürfte das auch langfristig (bei ausreichend großen Gewürzen) unknackbar sein. Trotzdem hat es ein Geschmäckle und ich würde anstatt geschachtelter MD5-Summen eher moderne Ansätze verwenden.

PS: Ich habe mir mal ein Programm geschrieben, was Dateien an vorher definierten erlaubten Stellen manipuliert, und dafür sorgt, dass die MD5-Summe danach mit 0123456789 oder 0000000000 oder ababababab anfängt oder endet. :)

Das fand ich lustig, weil Hashwerte ja immer so durcheinander aussehen, aber man mit genügend Rechenaufwand sehr lustige Muster in den resultierenden MD5-Summen erzeugen kann. :)

Allerdings steigt der Rechenaufwand exponentiell an und einen kompletten Wunschhash zu berechnen ist zwar theoretisch machbar, praktisch aber ein Ding der Unmöglichkeit!

1

1. Das ist keine Verschlüsselung sondern ein einmalverfahren

2. Sha1 ist noch zugelassen für zur HMAC-Berechnung und als
Komponente der PRF (siehe BSI-TR02102-02)

3. Die können vielfältig eingesetzt werden. In ssl/tls, zum hashen von daten wie passwörtern/ips etc oder auch für alles andere. Es gibt keine grenzen theoretisch

Finde ja persönlich die Diskussion um das Thema "Sha1 ist tot" nervig. Google hat tausende von Jahren an CPU/GPU Zeit da rein gesteckt. Natürlich findet man bei JEDEM Hashverfahren Kollisionen, egal wieviele Zeichen und Iterationen verwendet werden, wenn man genug Rechenkraft einsetzt. In diesem Sinn sind auch die SHA2 Verfahren "schwach". Aber wir reden hier von Zahlen, welche man praktisch gegen unendlich gehen.

MD5 ist bis heute das meistverwendeste Hashverfahren, viele waren damals zu faul auf SHA512 (o.ä.) umzustellen und benutzten MD5 weiter (Stichwort: Never change a running system). Fast alle Datenbanken legen ihre Hashwerte als MD5 ab. SHA1 wurde schon damals kaum genutzt, da SHA seinen Bekanntheitsgrad mit Version 2 machte, wie gesagt, bis dahin haben fast alle MD5 genutzt. Ein Witz ist übrigens der SQL-Hash. Diesen kann man recht simpel mit Rekursion brechen.

Daher: SHA512 + Salt und man ist aktuell ohne großen Aufwand auf einer recht sicheren Seite.


Wepster 25.02.2017, 00:10

Ich hab das als "outsider" erst gelesen, ist mir halt unter die augen gekommen und fand das interessant, SHA3 wird bisher empfohlen und Google und noch wer, haben SHA1 offiziell verbschiedet...klar ist es immer eine Frage der Zeit, bis man wieder das neue knacken kann.

Wie war das noch mit ROT13 in windows? Ist doch auch sowas. Was ist mit AES oder RSA, JA okay ich schmeiß das alles in einen Top, sind ja alles Abkürzungen thihi*

0
TeeTier 25.02.2017, 00:57

Finde ja persönlich die Diskussion um das Thema "Sha1 ist tot" nervig.

Naaajaaa ... sooo unberechtigt ist das nicht. Bei MD5 dachten auch alle "is nich so schlimm" als die ersten theoretischen Angriffe veröffentlicht wurden und kurze Zeit später konnte man binnen Sekunden Kollisionen erzeugen.

Bei MD5 wurden anfangs ja auch massivst Großrechner eingesetzt um eine Kollision zu finden. Heute dauert das auf einem handelsüblichen PC keine 10 Sekunden unterschiedliche Dateien mit gleicher MD5-Summe zu generieren.

Du magst recht damit haben, wenn du die Diskussion JETZT übertrieben findest, aber schon in wenigen Monaten würde ich meine Hand dafür nicht mehr ins Feuer legen. :)

Und dass CRC oder Adler Algorithmen innerhalb von Datenstrukturen oder DBs kollidieren, hat deutlich mehr Vorteile als Nachteile! :)

1
mattmattmattmat 28.02.2017, 08:49
@TeeTier

Auf dem klassischen Argumentationspunkt "Die Technik schreitet stehts vorran und CPU-/GPU-Leistung wird immer bezahlbarer" (wunderbares Zitat, dessen erste 5 Wörter in jeder dritten Veröffentlichung zu finden sind, gepaart mit "mit der stetigen Globalisierung" *würg) gebe ich dir recht.

Wie gesagt, umso erschreckender, dass MD5 heute noch zu weit verbreitet ist. Ich habe auch in einem Betrieb gearbeitet, da wurde der SQL-Hash verwendet (zur Sicherheit: siehe oben) und es sollte zur Umstellung kommen. Und satt hier gleich einen SHA mit Salt zu verwenden, wurde tatsächlich angefangen über MD5 zu reden. Manche sollten ihren Job vielleicht überdenken. ;)

Und dass CRC oder Adler Algorithmen innerhalb von Datenstrukturen oder
DBs kollidieren, hat deutlich mehr Vorteile als Nachteile! :)

Erkläre dich bitte, du hast mich neugierig gemacht. :) (so sarkastisch das klingt, ist es nicht)

0

Was möchtest Du wissen?