Prev    Up    Next  

2.2 Die MD-Familie

Zu den Mitgliedern dieser Hash-Familie, welche von R. RIVEST entwickelt wurde, gehören unter anderem der MD2…MD5, SHA-1 und SHA-2 [Riv92NIS08ISO04]. Am Beispiel des SHA-1 soll deren prinzipielle Arbeitsweise verdeutlicht werden, wofür in Abbildung 2.2 die zugehörige Kompressionsfunktion C  dargestellt ist.


PIC

Abbildung 2.2: Hash-Funktion SHA-1


Der SHA-1 ist für 32-Bit Architekturen optimiert, d. h. alle Variablen in Abbildung 2.2 sind von entsprechender Breite. Die (Eingangs-) Blockbreite xi  beträgt 64 Byte, also 16 Worte zu je 32-Bit. Ein Hash-Wert yi  besteht aus 160-Bit (20 Byte, 5 Worte) und wird iterativ in 80 sogenannten Runden erzeugt. Speziell beim SHA-1 (nicht so bei SHA-2) werden jeweils 20 Runden mit den gleichen Konstanten und Funktionen realisiert, so daß man die Darstellung auf 4 Funktionsblöcke f1,...,f4  reduzieren kann. Der Algorithmus kann folgendermaßen beschrieben werden:

  1. Erzeuge im „Message Schedule” aus den 16 Eingangsworten, welche W0, ...,W15  zugeordnet werden, iterativ weitere 64 Worte Wi  nach folgender Vorschrift:17
    Wi = rol1(Wi−3⊕ Wi−8⊕ Wi−14⊕ Wi−16),    16≤ i≤ 79 .

    Darin steht rol  für „Rotate Left” und der zugehörige Exponent für die Anzahl der Bits, um die es nach links zu rotieren gilt.

  2. Sollte es sich um den ersten Block x1  handeln, dann initialisiere H0,...,H5  mit den Konstanten:
    pict
  3. Ordne (H0,...,H4 )  dem Vektor (A,B,C,D, E)  zu.
  4. Berechne 80 Runden (0≤ t ≤ 79  ), im speziellen Fall von SHA-1 genau 4 ⋅20  Runden (1 ≤ n≤ 4  ), nach folgender Vorschrift:
    pict

    wobei Additionen immer modulo 232  ausgeführt werden. Die Konstanten Kt  sind definiert als:

    pict

    Die Funktionen f1,...,f4  , welche für jeweils 20 Runden verwendet werden, sind folgendermaßen spezifiziert:

    pict
  5. Berechne die Ergebniswerte (H0,...,H4)  , welche letztlich den Hash-Wert yi  dieses Blocks ausmachen, wiefolgt:18
    pict

SHA-2 Bei den SHA-2 Hash-Funktionen ist dieses Prinzip erhalten geblieben, die Änderungen liegen im Detail [NIS08]: