PKI, SHA und MD5
Public-Key-Infrastruktur
Mit Public-Key-Infrastruktur (PKI, englisch public key infrastructure) bezeichnet man in der Kryptologie ein System, das digitale Zertifikate ausstellen, verteilen und prüfen kann. Die innerhalb einer PKI ausgestellten Zertifikate werden zur Absicherung rechnergestützter Kommunikation verwendet.
Siehe: https://de.wikipedia.org/wiki/Public-Key-Infrastruktur
Kryptologische Hashfunktion
Snefru
wurde 1990 von Ralph Merkle entworfen. Der Kern der Hashfunktion ist ähnlich dem Blockchiffriersystem Khafre (Merkle). Snefru gilt als unsicher.
N-Hash
wurde 1990 bei Nippon Telephone and Telegraph entwickelt. Der Algorithmus ähnelt dem Blockchiffriersystem FEAL (Nippon T&T). N-Hash gilt als unsicher.
FFT-Hash
ist eine Hashfunktion auf der Basis der Fast-Fourier-Transformation. Sie wurde von Schnorr 1991 erstmals vorgestellt, aber bald geknackt. Später folgte eine zweite Version. Sie gilt als unsicher.
MD4
wurde 1990 von Ronald Rivest entwickelt. Sie erzeugt nach drei Runden einen 128 Bit langen Hashwert. Zu Beginn wird die Länge der Nachricht auf ein ganzzahliges Vielfaches von 512 Bit gebracht. Dazu wird sie mit einer „1“ und entsprechend vielen „0“ aufgefüllt, so dass M ≡ 448 ( mod 512 ) {\displaystyle M\equiv 448{\pmod {512}}} {\displaystyle M\equiv 448{\pmod {512}}} ist. Ihr wird die Länge der ursprünglichen Nachricht in 64-Bit-Darstellung angehängt. Als Nächstes wird der Puffer initialisiert. Die Hauptschleife besteht aus drei Runden mit je 16 Schritten. Jede Runde erhält als Eingabe einen 512 Bit langen Nachrichtenblock und den 128 Bit langen Pufferinhalt. Jede Runde benutzt 16-mal eine nichtlineare Rundenfunktion. Der ausgegebene Hashwert ist die Konkatenation (Verkettung) der letzten 32-Bit-Worte im Puffer. MD4 gilt als unsicher.
MD5
1992 veröffentlichte Rivest ein verbessertes Hash-Verfahren, noch bevor eine ernsthafte Schwäche von MD4 aufgedeckt wurde. Die wesentlichen Veränderungen sind:
- MD5 hat eine vierte Runde.
- Die vierte Runde hat eine neue Rundenfunktion
- Die der zweiten Runde wurde durch eine neue Funktion ersetzt.
- Die additiven Konstanten wurden neu definiert.
Der erste partielle Angriff auf MD5 von 1993 findet Pseudokollisionen, d. h. es können zu einem Nachrichtenblock zwei sich in nur wenigen Bits voneinander unterscheidende Verkettungsvariablen V1 und V2 gefunden werden, die denselben Output ergeben. Der Angriff hat allerdings keine schwerwiegenden Konsequenzen. Ein neuer effizienter Angriff erfolgte 2005. Hierbei suchten die Autoren nach einem Nachrichtenpaar mit je zwei Blöcken, die nach Verarbeitung des zweiten Blocks eine Kollision erzeugen. MD5 gilt daher als unsicher.
Siehe: https://hashkiller.co.uk/md5-decrypter.aspx
SHA
Das NIST schlug 1993 den Secure Hash Algorithm (SHA) vor. Zwei Jahre später wurde es durch SHA-1 ersetzt. SHA-1 unterscheidet sich von seinem Vorgänger nur durch eine zusätzliche 1-Bit-Rotation. Die Nachricht wird wie bei MD4 aufgefüllt. Der Puffer wird mit fünf Konstanten initialisiert. Die Hauptschleife besteht aus vier Runden mit je 20 Schritten.
- 1998 wurde eine differentielle Analyse gegen SHA-0 und SHA-1 durchgeführt.
- 2002 wurden vom NIST drei weitere Varianten des Algorithmus veröffentlicht, die größere Hashwerte erzeugen. Es handelt sich dabei um den SHA-256, SHA-384 und SHA-512 wobei die angefügte Zahl jeweils die Länge des Hashwerts in Bit angibt.
- 2004 ist ein verbesserter Angriff auf SHA-0 beschrieben.
Hier fanden die Autoren Beinahe-Kollisionen, sowie Kollisionen für eine auf 65 Runden reduzierte Version von SHA. Ein Jahr später berichten dieselben Autoren von einem Angriff auf die volle Rundenzahl von SHA-0 mit einer Komplexität von 251. Im selben Jahr gelingt ein verbesserter Angriff gegen SHA-0 mit einer Komplexität von 239 Hash-Operationen und gegen SHA-1 mit einer Komplexität von 269. Im Februar 2017 wurde die erste Kollision für SHA-1 veröffentlicht.
RIPEMD
RIPE-MD wurde 1992 im Rahmen des Projekts RACE Integrity Primitives Evaluation (RIPE) der Europäischen Union entwickelt. 1996 wurde die ursprüngliche Hashwert-Länge von 128 auf 160 Bits erweitert. Außerdem wurden die Varianten RIPEMD-256 und RIPEMD-320 eingeführt. Die Nachricht wird wie bei MD4 aufgefüllt. Der Puffer wird mit fünf Konstanten initialisiert. Die Hauptschleife besteht aus fünf Runden mit je 16 Schritten. Der Algorithmus läuft in zwei Ausführungen parallel. Nach jedem Block werden die beiden Ausgabewerte beider Linien zu den Verkettungsvariablen addiert. Im ursprünglichen RIPEMD konnten mit einer Komplexität von 2 16 {\displaystyle 2^{16}} 2^{16} Kollisionen gefunden werden, so dass es nicht verwendet werden sollte.
HAVAL
wurde 1992 vorgestellt und gehört ebenfalls zur MD4-Familie. Die Nachrichten werden in 1024 Bit langen Blöcken verarbeitet. Der Hashwert kann 128, 160, 192, 224 oder 256 Bit lang sein. Auch die Rundenzahl kann von drei bis fünf variieren. Jede Runde besteht aus 16 Schritten. 2003 konnte für HAVAL mit drei Runden Kollisionen gefunden werden. Der Angriff gelingt gegen alle möglichen Ausgabelängen. Die Komplexität entspricht dabei 2^29 Rechenschritten der Kompressionsfunktion. HAVAL sollte deswegen nicht für Applikationen verwendet werden, die Kollisionsresistenz erfordern.
TIGER
wurde 1996 von Anderson und Biham entwickelt. Nachrichtenpadding ist wie bei MD4, d. h. der Nachricht wird eine „1“ plus eine Folge von „0“, sowie die Nachrichtenlänge als ein 63-Bit-Wort angehängt. Das Resultat wird in 512 Bit lange Blöcke geteilt. Der Hashwert enthält 192 Bits. Aus Gründen der Kompatibilität sind TIGER/128 oder TIGER/160 definiert, die die ersten 128, bzw. 160 Bits von TIGER/192 verwenden.
PANAMA
ist von Daemen und Clapp und stammt aus 1998. Es verarbeitet Nachrichtenblöcke mit 256 Bit Länge und gibt einen Hashwert mit 256 Bit aus. Der Puffer ist ein lineares Schieberegister mit 32 Zuständen mit je acht Worten. Einer der Autoren konnte Kollisionen in nur 26 Auswertungen der Update-Funktion erzeugen, so dass Panama nicht als kollisionsresistent gelten kann.
Whirlpool
wurde von Rijmen und Barreto entworfen. Es beruht auf dem Miyaguchi-Preneel-Schema. Die Nachricht wird wie bei MD4 aufgefüllt. Die aufgefüllte Nachricht wird in 512 Bit lange Blöcke geteilt. Der Hashwert ist 512 Bit lang. Whirlpool verwendet als Funktion eine AES-Variante in 10 Runden.
SMASH
wurde 2005 von Knudsen entwickelt. Nach dem Nachrichtenpadding zu Beginn wird die Nachricht wahlweise in 256 bzw. 512 Bit langen Blöcken verarbeitet und liefert einen 256 bzw. 512 Bit langen Hashwert. Die Hauptrunde besteht aus mehreren Runden, die H-Runden und L-Runden genannt werden. Drei verschiedene H-Runden sind definiert. Jede H-Runde enthält eine eigene S-Box (Substitutionstabelle), die an die des Blockchiffrierverfahrens Serpent angelehnt sind. In der L-Runde werden Links- oder Rechtsverschiebungen durchgeführt. SMASH wurde bald erfolgreich angegriffen und gilt als unsicher.
FORK-256
wurde beim Cryptographic Hash Workshop von Hong et al. vorgestellt. Es verarbeitet 512 Bit lange Nachrichtenblöcke, unterteilt in 16 Worte, und liefert einen 256 Bit langen Hashwert. Die Hauptschleife besteht aus vier Verzweigungen und acht Schritten je Zweig. FORK-256 gilt als gebrochen.
SHA-3 (Keccak)
Das Design-Prinzip von SHA-3 unterscheidet sich von den Hash-Funktionen der MD-Gruppe einschließlich SHA-2. Es ist eine sog. sponge construction (Schwamm-Konstruktion). Die Sponge-Construction ist eine iterative Funktion, bei der der State (Anzahl Bits im internen Zustand) größer ist als das Output (Ausgabebits). Damit sollen generische Angriffe wie etwa eine Kollision mit Komplexität unter 2 n / 2 {\displaystyle 2^{n/2}} 2^{n/2} abgewehrt werden.
BLAKE
2008 von Jean-Philippe Aumasson, Luca Henzen, Willi Meier und Raphael C.-W. Phan entwickelt; war einer der Finalisten im SHA-3-Auswahlverfahren.