Publicité
Publicité

Contenu connexe

Dernier(20)

Publicité

Hash.pdf

  1. Crypto Workshop Hashes und MACs Christoph Egger Dominik Paulus 19. April 2022
  2. Hash = Prüfsumme? Prüfsumme 6= Kryptographische Hashfunktion 2 / 17
  3. Hashes Sicherheit I collision-resistance – Es ist schwierig, zwei Eingaben mit dem gleichen Hashwert zu finden I (second) preimage resistance – Wenn ich eine Prüfsumme (Eingabe) habe ist es schwierig, eine weitere EIngabe mit gleicher Prüfsumme zu finden 3 / 17
  4. Hashes Sicherheit I collision-resistance – Es ist schwierig, zwei Eingaben mit dem gleichen Hashwert zu finden I (second) preimage resistance – Wenn ich eine Prüfsumme (Eingabe) habe ist es schwierig, eine weitere EIngabe mit gleicher Prüfsumme zu finden Eigenschaften I Trivial erfüllt von id(x) = x 3 / 17
  5. Hashes Sicherheit I collision-resistance – Es ist schwierig, zwei Eingaben mit dem gleichen Hashwert zu finden I (second) preimage resistance – Wenn ich eine Prüfsumme (Eingabe) habe ist es schwierig, eine weitere EIngabe mit gleicher Prüfsumme zu finden Eigenschaften I Trivial erfüllt von id(x) = x I Feste (kurze) Ausgabelänge 3 / 17
  6. Komprimierungsfunktion Ausgabe kürzen, ein Ansatz: f : {0, 1}2k → {0, 1}k Muss auch nicht 2k sein, SHA256: shacompress : {0, 1}768 → {0, 1}256 4 / 17
  7. Merkle-Damgård Immer noch gesucht: f : {0, 1}∗ → {0, 1}k 5 / 17
  8. Merkle-Damgård Immer noch gesucht: f : {0, 1}∗ → {0, 1}k f M1 f M2 f M3 0k · · · f Mn 5 / 17
  9. Verlängerungsangriff Hashes zum Authentifizieren von Daten Idee: sha(x) sichert Integrität von x. 6 / 17
  10. Verlängerungsangriff Hashes zum Authentifizieren von Daten Idee: sha(x) sichert Integrität von x. Aber: Jeder (auch der Angreifer) kann den Hash berechnen. Idee: sha(keykx) – wer key kennt kann immer noch Integrität verifizieren aber der Angreifer kennt key nicht 6 / 17
  11. Verlängerungsangriff Hashes zum Authentifizieren von Daten Idee: sha(x) sichert Integrität von x. Aber: Jeder (auch der Angreifer) kann den Hash berechnen. Idee: sha(keykx) – wer key kennt kann immer noch Integrität verifizieren aber der Angreifer kennt key nicht Ist das jetzt sicher? 6 / 17
  12. Merkle-Damgård f M1 f M2 f M3 0k · · · f extend 7 / 17
  13. MAC “Message Authentication Code” “So was ähnliches wie eine Signatur” 8 / 17
  14. MAC “Message Authentication Code” “So was ähnliches wie eine Signatur” I Parteien haben ein gemeinsames Geheimnis (key) I Sicherstellen, dass Nachricht unverändert von einer Partei kommt, die das Geheimnis kennt I Alle Parteien können durchaus die selbe sein – Nachricht extern lagern und sicherstellen, dass nichts verändert wurde I TLS, SmartCard, TCP SYN-COOKIE, … 8 / 17
  15. HMAC “MAC aus Hash bauen” HMAC(K, M) = H(K ⊕ opad k H(K ⊕ ipad k M)) Standardisiert (RFC2104), funktioniert für jede kryptographische Hash-Funktion (Annahme: Kollisionsresistenz) 9 / 17
  16. Fragen? 10 / 17
  17. Hash Extension I Funktioniert mit meinem kaputten SHA2 hervorragend I Normalerweise: Sinnvolles Padding ist im Weg! 11 / 17
  18. Merkle-Damgård f M1 f M2 f M3 0k · · · f pad 12 / 17
  19. Hash Extension I Funktioniert mit meinem kaputten SHA2 hervorragend I Normalerweise: Sinnvolles Padding ist im Weg! I Macht das ganze etwas frickeliger I Trotzdem unsicher. Nehmt HMAC! 13 / 17
  20. Unhiding Mac CANDIDATES = ( 'Mihir Bellare', ... ) for cand in CANDIDATES: mac = telnet.read_until(b'n') .rstrip().split(b' ')[2] candidates_by_mac[mac] = cand for i in range(20): mac = telnet.read_until(b'n') .rstrip().split(b' ')[2] telnet.write(candidates_by_mac[mac]) 14 / 17
  21. Abschließend I Kollissionsresistenz sagt erstmal nichts über Hashes ähnlicher Eingaben 15 / 17
  22. Abschließend I Kollissionsresistenz sagt erstmal nichts über Hashes ähnlicher Eingaben I Hashes und MACs fürfen beliebiges über den Inhalt verraten! Gerade wenn die Eingabe Informationsarm ist, ist das auch praktisch ein Problem! 15 / 17
  23. Was nun? Verschlüsselung + MAC war eine schlechte Idee, ohne MAC sowieso. Wie mache ich das jetzt richtig? 16 / 17
  24. Was nun? Verschlüsselung + MAC war eine schlechte Idee, ohne MAC sowieso. Wie mache ich das jetzt richtig? I MAC des Ciphertextes! 16 / 17
  25. Was nun? Verschlüsselung + MAC war eine schlechte Idee, ohne MAC sowieso. Wie mache ich das jetzt richtig? I MAC des Ciphertextes! I Keine Informationen mehr übrig ⇒ MAC kann nichts verraten I Wer den Ciphertext nicht ändern kann kann auch nicht verändern was beim entschlüsseln herauskommt 16 / 17
  26. Was nun? Verschlüsselung + MAC war eine schlechte Idee, ohne MAC sowieso. Wie mache ich das jetzt richtig? I MAC des Ciphertextes! I Keine Informationen mehr übrig ⇒ MAC kann nichts verraten I Wer den Ciphertext nicht ändern kann kann auch nicht verändern was beim entschlüsseln herauskommt I “Authenticated Encryption” – AES-GCM, ChaCha20/Poly1305, AES-OCB, … 16 / 17
  27. Fragen? 17 / 17
Publicité