## 🧠 GRUNDLAGEN DER HASHFUNKTIONEN ### Was ist eine Hashfunktion? - Einwegfunktion: beliebig lange Eingabe → fester Hashwert (Ausgabe). - Ziel: Aus Hashwert **kann nicht** auf Eingabe geschlossen werden. - Ein Hashwert = „digitaler Fingerabdruck“. ### Eigenschaften einer **kryptografisch sicheren Hashfunktion** 1. **Einweg-Eigenschaft**: h(M) einfach berechenbar, aber M aus h(M) unberechenbar. 2. **Kollisionsresistenz**: - _Schwach_: Für gegebenes x ist es schwer, x′ ≠ x mit h(x) = h(x′) zu finden. - _Stark_: Es ist schwer, zwei beliebige x ≠ x′ mit h(x) = h(x′) zu finden. --- ## 🛠️ ANWENDUNGEN - **Passwort-Speicherung** (nur Hash, kein Klartext) - **Signaturen**: Signiere h(M), nicht M. - **Integritätsprüfung**: Prüfsummen, Manipulationserkennung (MIC, MDC) - **Authentifizierung**: MAC, HMAC --- ## 🔐 HASH-FUNKTIONSTYPEN |Typ|Beschreibung| |---|---| |UHF|Unkeyed Hash Function: h(M)| |KHF / MAC|Keyed Hash Function: h(M, k) oder h(M, s)| --- ## 📌 MDC & MAC UNTERSCHEIDUNG ### MDC – Manipulation Detection Code - **OWHF**: One-Way Hash Function = Einweg + schwache Kollision - **CRHF**: Collision Resistant Hash Function = schwache + starke Kollision ### MAC – Message Authentication Code - nutzt Schlüssel + Nachricht - Anforderungen: - einfache Berechnung - Kompression - resistent gegen Manipulation --- ## 🔁 AUFBAU EINER HASHFUNKTION 1. Nachricht in Blöcke fester Länge teilen. 2. Padding auf Vielfaches der Blocklänge. 3. Iterative Verarbeitung mit Kompressionsfunktion. 4. Ergebnis: finaler Hashwert. --- ## 📚 HASH-ALGORITHMEN IM VERGLEICH |Algorithmus|Hashlänge|Status / Schwächen| |---|---|---| |**MD2/MD4**|128 Bit|Veraltet, unsicher| |**MD5**|128 Bit|Kollisionen bekannt, nicht mehr sicher| |**SHA-1**|160 Bit|Kollisionen möglich (ab 2005), deprecated| |**SHA-2**|224–512 Bit|Aktuell sicher| |**SHA-3**|224–512 Bit|Alternative zu SHA-2 (Keccak)| |**RIPEMD-160**|160 Bit|Sicher, europäische Alternative| |**WHIRLPOOL**|512 Bit|Sicher, aber wenig untersucht| --- ## 🔁 HMAC (Hash-based MAC) - **Verwendet Hash + geheimen Schlüssel** - Schritte: 1. Schlüssel ggf. kürzen/padden auf Blockgröße 2. Zwei Pads: `ipad = 0x36`, `opad = 0x5C` 3. HMAC = H(opad ⊕ k ∥ H(ipad ⊕ k ∥ M)) - Einsatz in TLS, IPsec etc. - **Sichert Authentizität & Integrität**, **keine digitale Signatur** --- ## 💥 ANGRIFFE ### Geburtstagsparadoxon - Wahrscheinlichkeit für Kollision steigt stark mit Anzahl an Inputs. - 50%-Kollisionschance bei ca. √(2^n) = 2^(n/2) ### Angriffstypen |Typ|Beschreibung| |---|---| |**Pre-Image**|Gegeben h(x), finde ein x| |**Second Pre-Image**|Gegeben x, finde x′ ≠ x mit h(x) = h(x′)| |**Collision**|Finde x, x′ ≠ x mit h(x) = h(x′)| --- ## ❌ SICHERHEITSSCHWÄCHEN ### MD5 - Viele Kollisionen gefunden (z. B. durch Dobbertin, Wang, Stach) - Nicht mehr vertrauenswürdig ### SHA-1 - Kollisionen mit 2^63 Berechnungen möglich (statt 2^80) - Seit 2010 in den USA und vom BSI abgelehnt --- ## 📌 MERKREGELN FÜR DIE KLAUSUR - **Hash = Fingerabdruck**, nicht rückrechenbar - **Kollision = 2 verschiedene Eingaben → gleicher Hash** - **MDC = prüft Integrität**, **MAC = prüft Integrität + Authentizität** - **SHA-2 & SHA-3 = derzeit sicher** - **HMAC ≠ Signatur**, da symmetrisch! --- Wenn du willst, kann ich dir auch Lernkarten (Flashcards), ein Quiz oder eine Mindmap aus diesem Material erstellen. Sag einfach Bescheid!