Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#27

Re: Verschlüsselungsverfahren, welches?

  Alt 10. Okt 2004, 13:05
Zitat:
Da Du gerade das DEC angesprochen hast, sprichst Du da von Part II, da in Part I ja keine asym. Verfahren drin sind?
Gibt es den zweiten Teil schon irgendwo zum Runterladen oder kommt der erst noch?
DEC Part I enthält keine asymmetrischen Verfahren.
DEC Part II ist offiziell nicht erhältlich, aber eine binäre "Distributation" für Delphi 5,6 und 7 kann man hier im Forum finden. Sie enthält auch die ECC in GF(p) samt Schlüssel- und Kurvenerzeugung nach IEEE P1565 Standard. Ich betone dies weil die meisten ECC Libraries es eben nicht ermöglichen eigene und sicherer Kurven zu erzeugen. Für Delphi selber kenne ich keine andere als meine Library die das kann.


Zitat:
Vielleicht solltest Du bei Deinen künftigen "Rundumaufklärungen" darauf hinweisen, daß Hash-Codes und MD5 eigentlich nichts anderes als mathematische Quersummen (CRCs?) sind, wobei:
Jay, das ist falsch. Hash Funktionen sind Hash Funktionen, eben so wie eine Addition eine Addition ist und nicht XOR, obwohl man in GF2 mit XOR addiert.

Ein wesentlicher Unterschied zwischen Hash Funktionen und CRC's oder Quwersummen, ist eben der Punkt das man NICHT vom Hashdigest auf die Daten zurückschließen kann. Selbst wenn also nur EIN Bit an den Inputdaten verändert wurde so muß ein komplett anderer Hashdigest rauskommen. Auf Grund eines Hashdigest + einem fehlerhaftem Input kann und sollte man nicht die korrekten Daten "berechnen" können. Ich betrachte hier eine Brute Force Suche NICHT als Berechnung.
So, nun Checksummen und Quersummen sollen es aber ermöglichen exakt und direkt das Fehlerhafte Bit in einem Datenstrom zu erkennen und zu korregieren. Wenn man also Checksummen mit irgendwas vergleichen wollte dann nur mit deren Nachfahren -> den Fehlerkorrektur-Algortihmen wie dem Red Salomon Code.
CRC's sind also die Vorläufer er ECC == Error Correction Codes.

Wenn es eine Gruppe von Algorithmen gibt die mit Hashfunktionen bestimmte Eigenschaften teilen, dann sind es die Komprimierungsfunktionen und Kombinatorische Verwürflungen == Combinatoric Shuffling. Denn Hash Funktionen sollten eine kleine Entropie von Daten in eine große Entropie im Hashdigest umwandeln. Nun Komprimierungen machen das gleiche, sie entfernen Redundanzen und somit sollte der Ausgabestrom kleiner als der Eingangsdatenstrom sein.
Desweiten solten Hashfunktionen bei Änderungen von nur EINEM Bit in den Eingangsdaten über deren Lawineneffekt kombinatorisch die Internen Register so verwürflen das zum Schluss zu diesen Daten ein komplett anderer Hashdigest rauskommt.
ABER, zu beiden Verfahren gibt es einen WICHTIGEN Unterschied zu den Hashfunktionen. Beide Verfahren können direkt die Ausgangsdaten zu deren entsprechenden Eingangsdaten zurückrechen,und das sollte bei Hashfunktionen nur, und ausschließlich nur, über eine Brute Force Suche möglich sein. Wenn also die hashfunktion 128 Bit breit ist, so müsste man per Brute Force Suche 2^128 verschiedene Kombinationen durchrechnen um die daten zu erhalten. Aber die gilt natürlich nur für Datenmengen <= 128 Bit. Bei Datenmengen > 128, zB. 129 bit wird es also schon 2 komplet verschiedenen Nachrichten geben die den gleichenHashdigest teilen. Bei Daten mit 256 Bits wird es also 2^128 verschiedene Nachrichten geben die sich jeweils EINEN der Hashdigest von 2^128 Digest teilen.

Mathematisch kann man daran erkennen das man bei Hashfunktionen mit 128 Bit Breite die Eingangsdaten bei 256 Bit Länge ihren Sicherheits-Breakeavenpoint haben. Man sollte also um beste Sicherheit mit einer 128 Bit Hashfunktion zu erlangen mit Daten größer 256 Bit arbeiten. Denn angenommen ein Angreifer versucht eine Brute Force Suche so hat er bei 256 Bit Inputdaten einerseits 2^128 verschiedene Hashdigest zu durchsuchen, wobei aber ein Hashdigest selber auf 2^128 verschiedene Eingangsnachrichten mappt. D.h. neben der dem Durchsuchen von 2^128 hashdigest müssen pro Digest noch 2^128 Nachrichten durchsucht weren, ergo: 2^256 Kombinationen effektiv.


@RC4:

tja, wenn es nur englische Literatur zu RC4 gibt dann muß man englisch lernen, ist leider mal so.
Im RC4 sich ganz verschiedene kryptographische Operationen enthalten, wie Transposition, Rekombination und eben die Substitution mit Hilfe einer veränderlichen und variablen Tabelle. Diese Tabellen nennt man meisten SBOX = Shuffling Box. RC4 kombiniert alle diese Verfahren nun sehr clever und das mit nur sehr sehr wenigen Operationen. Dies führt dazu das RC4 eben leicht zu codieren und denoch relativ effizient ist. Desweiteren ist es auch wichtig zu analysieren auf welcher Datenebene die einzelnen Operationen (Transposition, Substitution, Rekombination) stattfinden,ob eben auf Bit, Byte, Word Ebene. Nun RC4 arbeitet da auf Bit und Byte Ebene, was zusätzlich eine bessere Gesamtstärke ergibt. Dann fehlt noch die Fragestellung ob diese Operationen Linear oder Nichtlinear sind. Linear ist im Grunde schwächer, wenn man es schafft die Operationen nichtlinear auszulegen ohne die Gleichverteilung und Wahrscheinlichkeiten damit negativ zu beeinflussen. Nun, RC4 enthält solche Nichtlinearitäten. Eine solche Nichtlineare Operation könnte eine dynamische SBOX Indizierung sein (wie im RC4 auf den Inputdaten basierend) odr auch nur eine Multiplikation wie beim IDEA Cipher. Die Multiplikationhat abr den Nachteil das die nicht gleichverteilt auf den Schlüsselraum arbeitet, es ist also schwierige sie so zu kompensieren das sie wieder gleichverteilt arbeitet. Desweiteren ensteht ein Problem bei der Entschlüsselungen,d.h. die Multilikation bei der Verschlüsselung MUSS invertierbar sein. Nun, IDEA ist ein ideales Beispiel für die Anwendung einer solchen Multiplikation, und zwangsläufig ist IDEA ein Cipher der zur Verschlüsselungen einen komplett anderen Algorithmus benutzt als zur Entschlüsslung. D.h. beide Algorithmen sind nicht invers zueinander. Obwohl RC4 nun auch eine solche nichtlineare Operation enthält ist er denoch symmetrisch, man benutzt zur Ver- und Entschlüsselung den gleichen Algorithmus. Das funktioniert weil RC4 dafür den Datenstrom benutzt.


Ich könnte hier noch viel mehr erzählen, aber ab einer gewissen Stufe sprengt das den Rahmen für die Delphi Praxis. Dafür gibt es geeignetere Foren im WEB und natürlich viel viel bessere Experten mit weit mehr Wissen als ich es je haben werde.

Gruß Hagen
  Mit Zitat antworten Zitat