Zitat:
Wozu braucht man dann noch MD5 Verschlüsselungen ?
Eigentlich braucht man sie tatsächlich nicht da sich durch die Hash-Funktion NICHTS an der Qualität der "Unvorhersagbarkeit" und "Unreproduzierbarkeit" der "Zufalls"-Daten ändert.
ABER! es ist ein Unterschied ob man diese Eigenschaften "beweisen" oder nur als "logisch" annehmen kann. Die Hash Funktion ist eine klar mathematisch beweisbare Einweg Funktion. Somit wird durch die obige Hash-Funktion folgende logische Annahme ganz klar auch bewiesen:
1.) der Input kann nur vom gleichen Menschen mit exakt gleichen Umweltbedinungen reproduziert werden, so wie ein Fingerabdruck der bei gleicher Temaratur mit gleicher Seife gewaschen wurde.
2.) der durch die Hash Funktion erzeugte Output kann mit exakt berechnenbarem Aufwand zurück in seine möglichen Inputs berechnet werden. D.h. die Sicherheitsschranken der Einwegfunktion sind bekannt und ermöglichen es exakt die Aussage zu treffen das es mit heutiger Technik und Wissenstands mindestens 4 Milliarden Jahre dauert um die Hashfunktion umzukehren. Da die Hashfunktion auch eine "Kompressionsfunktion" ist, nützt selbst dieses nichts. Denn aus einem 1024 Bytes Buffer erzeugen wir einen 16 Bytes Hashdigest. Dieser Hashdigest ist mit einer Wahrscheinlichkeit von 1 zu 2^128 eindeutig zum 8192 Bit Input. Dennoch MUSS es 2^(8192 -128) verschiedene Buffer geben die den gleichen 128 Bit Digest erzeugen !! D.h. selbst wenn man 2^8192 verschiedene Buffer durchprobiert so findet man 2^(8192 - 128) Buffer die zum gegebenen 128 Bit Digest passen. Der nächste Aufruf der Zufallsfunktion würde also ausgehend von 2^(8192 - 128) möglichen Seeds trotzdem nur EINEN gültigen benötigen damit der Angreifer die Zufallsfolge vorhersagen kann. Die Wahscheinlichkeit das als der Angreifer aus den 2^(8192 -128) möglichen Buffern zum aktuellen Digest den einen richtigen findet um daraus den nachfolgenden Zufallwert-Digest zu errechnen beträgt somit 1/2^(8192 -128). Aber, in der Zwischenzeit wurde ja der Buffer erneut mit Maus/Keyboard Koordinaten gefüttert. Diese Änderungen kann der Angreifer aber niemals 100%'tig simulieren, da jeder Mensch ganz individuelle Signaturen erzeugt.
D.h. es ist im kryptographischen Sinne nicht wichtig
1.) unvorhersagbaren Zufalls zu erzeugen, sondern man muß nicht reproduzierbaren Zufall benutzen
2.) mit enorm rießigen Datenmengen und Wahrscheinlichkeiten zu arbeiten, stattdessen muß man mit mathematisch beweisbaren Sicherheitsschranken rechnen können.
Eben diese beiden Gründe bedingen die Anwendung einer Hashfunktion, da genau sie es ist die das Verfahren mathematsich logisch absichert und beweisbar macht.
In kurz:
Unser Buffer ist 8192 Bits groß. Die Hashfunktion mappt alle diese 8192 Bits in einen Digitalen Wert von 128 Bits. Dieses Mapping ist derart das es mit absoluter Gleichverteilung alle seine 2^128 möglichen Digests auf den Bereich der 2^8192 möglichen Inputs mappt. Man reduziert also die 8192 Bits auf 128 Bits die relativ eindeutig sind. Ausgehend vom einem 128 Bit Digest gibt es also 2^(8192-128) gleich wahrscheinlich mögliche Input Buffer, aber nur EINER von diesen ist der richtige. Die Hashfunktion stellt nun sicher das der Angreifer ALLE der möglichen Inputs berechnen MUSS um mit 100%'tiger Wahrscheinlichkeit den EINEN richtigen zu finden. Dies ist die oberste Schranke. Die untere Schranke ist das der Angreifer minimal 2^128 verschiedene Buffer durchprobieren muß. Aber alleine diese 2^128 möglichen Testfälle übersteigt die heutige Rechenpower. Zudem ist die Wahscheinlichkeit das einer der 2^128 Testfälle auch der eine Treffer ist nur 1/(8192-128). Exakt diese Aufwandsanalysen werden möglich weil die mathematischen Grundlagen der Hashfunktionen diese bedingen.
Das Neu-Einberechnen von individuellen Maus/Keyboardsignaturen in den Buffer stellt sicher das selbst wenn der Angreifer den EINEN richtigen Inputbuffer zum gegebenen 128 Bit Digest findet, er dennoch NICHT den nächsten 128 Bit Digest berechnen kann.
Dieses System kann VORRAUSGESAGT werden, ist aber NICHT reproduzierbar, da die nötigen Simulationsbedinungen nicht reproduzierbar sind.
Gruß Hagen
PS: wenn die reine Verwendung des Mouse/Keyboard Inputs die Programmierer-Lösung ist so ist das Einfügen der Hash Funktion die Lösung des Kryptoanalytiker's, Kryptologen's und Mathematiker's.