5.2. Stronger Mixing Functions (Stärkere Mischfunktionen)
5.2. Stronger Mixing Functions (Stärkere Mischfunktionen)
Der US Government Advanced Encryption Standard [AES] ist ein Beispiel für eine starke Mischfunktion für Mehrbit-Größen. Er nimmt bis zu 384 Bits Eingabe (128 Bits "Daten" und 256 Bits "Schlüssel") und produziert 128 Bits Ausgabe, von denen jedes von einer komplexen nicht-linearen Funktion aller Eingabebits abhängt. Andere Verschlüsselungsfunktionen mit dieser Eigenschaft, wie [DES], können ebenfalls verwendet werden, indem man sie so betrachtet, dass sie alle ihre Schlüssel- und Dateneingabebits mischen.
Eine weitere gute Familie von Mischfunktionen sind die "Message Digest"- oder Hash-Funktionen wie die US Government Secure Hash Standards [SHA*] und die MD4, MD5 [MD4, MD5] Serie. Diese Funktionen nehmen alle eine praktisch unbegrenzte Menge an Eingabe und produzieren eine relativ kurze Ausgabe mit fester Länge, die alle Eingabebits mischt. Die MD*-Serie produziert 128 Bits Ausgabe, SHA-1 produziert 160 Bits, und andere SHA-Funktionen produzieren bis zu 512 Bits.
Obwohl die Message-Digest-Funktionen für variable Eingabemengen ausgelegt sind, können AES und andere Verschlüsselungsfunktionen auch verwendet werden, um eine beliebige Anzahl von Eingaben zu kombinieren. Wenn 128 Bits Ausgabe ausreichend sind, können die Eingaben in eine 128-Bit-Datengröße und sukzessive AES-"Schlüssel" gepackt werden, wobei bei Bedarf mit Nullen aufgefüllt wird; die Größe wird dann sukzessive mit den "Schlüsseln" unter Verwendung von AES im Electronic Codebook-Modus verschlüsselt. Alternativ könnte die Eingabe in einen 128-Bit-Schlüssel und mehrere Datenblöcke gepackt werden, und ein CBC-MAC könnte berechnet werden [MODES].
Komplexeres Mischen sollte verwendet werden, wenn mehr als 128 Bits Ausgabe benötigt werden und man AES einsetzen möchte (aber beachten Sie, dass es absolut unmöglich ist, mehr Bits "Zufälligkeit" herauszubekommen, als hineingesteckt werden). Nehmen Sie zum Beispiel an, dass Eingaben in drei Größen gepackt werden: A, B und C. Man kann AES verwenden, um A mit B und dann mit C als Schlüssel zu verschlüsseln, um den ersten Teil der Ausgabe zu erzeugen, dann B mit C und dann A für mehr Ausgabe zu verschlüsseln und, falls nötig, C mit A und dann B für noch mehr Ausgabe zu verschlüsseln. Noch mehr Ausgabe kann produziert werden, indem die Reihenfolge der oben angegebenen Schlüssel umgekehrt wird. Dasselbe kann mit den Hash-Funktionen gemacht werden, indem verschiedene Teilmengen der Eingabedaten oder verschiedene Kopien der Eingabedaten mit verschiedenen Präfixen und/oder Suffixen gehasht werden, um mehrere Ausgaben zu produzieren.
Als Beispiel für die Verwendung einer starken Mischfunktion betrachten Sie erneut den Fall einer Zeichenkette von 308 Bits, von denen jedes zu 99% in Richtung null verzerrt ist. Die in Abschnitt 4.1 angegebene Paritätstechnik reduziert dies auf ein Bit, mit nur 1/1000 Abweichung davon, gleich wahrscheinlich null oder eins zu sein. Aber durch Anwendung der in Abschnitt 2 angegebenen Gleichung für Information enthält diese 308-Bit-verzerrte Sequenz über 5 Bits Information. Somit würde das Hashen mit SHA-1 und das Nehmen der unteren 5 Bits des Ergebnisses 5 unverzerrte Zufallsbits ergeben und nicht das einzelne Bit, das durch Berechnung der Parität der Zeichenkette gegeben ist. Alternativ könnte man für einige Anwendungen die gesamte Hash-Ausgabe verwenden, um fast alle der 5+ Bits Entropie in einer 160-Bit-Größe zu erhalten.