Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:daten_sca:hash_tables [2023-05-29 08:48] – [Aufgabe 1: Einfache Hash-Funktion] scagf_informatik:daten_sca:hash_tables [2023-08-01 10:41] (aktuell) – [Lösungen] sca
Zeile 1: Zeile 1:
 ====== Hashfunktionen ====== ====== Hashfunktionen ======
  
-Theorie: Slides+Theorie:{{ :gf_informatik:daten_sca:gfif_hashing.pdf |Hashing}} 
 + 
 +++++Lernziele| 
 + 
 +Prüfungsrelevant ist alles, was in den Lektionen und Übungen behandelt wurde. Die Lernziele unten dienen als Gradmesser und sind nicht unbedingt komplett. 
 + 
 +   * Erklären, was Hashes und Hash-Funktionen sind uns was die Idee hinter diesen ist. 
 +   * Wichtigste Eigenschaften kennen von Hash-Funktionen. 
 +   * Beispiele machen für einfache Hash-Funktionen. 
 +   * Wissen, welcher Hash-Algorithmus heute der Standard ist. 
 +   * Versch. Anwendungsbereiche kennen von Hash-Funktionen. 
 +   * Sind Hash-Funktionen für das Verschlüsseln von Nachrichten geeignet? Warum (nicht)? 
 +   * Hashes generieren mit Python. 
 +   * Erklären, was eine Rainbow-Table ist, wie man sie erstellt, wie Hacker diese verwenden und wie man sich dagegen schützen kann. 
 + 
 +++++
  
 ==== Aufgaben ==== ==== Aufgaben ====
Zeile 95: Zeile 110:
    1. Erkläre, was ist eine **Rainbow-Table** ist und wozu solche benutzt werden.    1. Erkläre, was ist eine **Rainbow-Table** ist und wozu solche benutzt werden.
    1. Erstelle eine solche Rainbow-Table für die zehn sehr beliebten Passwörter unten mit SHA-256. *Tipp*: Verwende die Passwort-Liste anstelle Copy-Paste.    1. Erstelle eine solche Rainbow-Table für die zehn sehr beliebten Passwörter unten mit SHA-256. *Tipp*: Verwende die Passwort-Liste anstelle Copy-Paste.
-   1. Hanna die Hackerin hat die Datenbank von www.feldwaldwiesenshop.ch gehackt. Zum Glück (resp. Pech für Hanna) werden die Passwörter darin nicht im Klartext sondern als Hashes gespeichert. U.a. hat sie folgenden Eintrag erbeutet: mail "gerdiderromantiker@bluewin.ch", PW-Hash: "". Was kann Hanna nun damit machen?+   1. Hanna die Hackerin hat die Datenbank von www.feldwaldwiesenshop.ch gehackt. Zum Glück (resp. Pech für Hanna) werden die Passwörter darin nicht im Klartext sondern als Hashes (aber ohne Salt) gespeichert. U.a. hat sie folgenden Eintrag erbeutet: mail "gerryderromantiker@bluewin.ch", PW-Hash: "e4ad93ca07acb8d908a3aa41e920ea4f4ef4f26e7f86cf8291c5db289780a5ae". Was kann Hanna nun damit machen?
  
 Liste sehr beliebter Passwörter:  Liste sehr beliebter Passwörter: 
Zeile 115: Zeile 130:
  
    1. siehe Slides    1. siehe Slides
-   1.  +   1. Tabelle unten 
-   1. Hash sollte in deiner Rainbow-Table vorkommen, Hanna kann damit einfach Passwort im Klartext ermitteln und sich so in Gerdis Account einloggen. Die Wahrscheinlichkeit ist gross, dass er das gleiche Passwort auch für andere Accounts verwendet. Hanna kann also das Login für verschiedene Websites (z.B. bluewin.ch) ausprobieren.+   1. Hash kommt in deiner Rainbow-Table vor, Hanna kann damit einfach Passwort im Klartext ermitteln und sich so in Gerrys Account einloggen. Die Wahrscheinlichkeit ist gross, dass er das gleiche Passwort auch für andere Accounts verwendet. Hanna kann also das Login für verschiedene Websites (z.B. bluewin.ch) ausprobieren. 
 + 
 +^ **Password** ^ **Hash** ^ 
 +| 123456 | 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 | 
 +| qwertz | d482ba4b7d3218f3e841038c407ed1f94e9846a4dd68e56bab7718903962aa98 | 
 +| password | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 | 
 +| admin | 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 | 
 +| a1b2c3 | 4f32044a655f32e8528edea64dbfd11cba810b8790e6e6e23d28ad3a75980734 | 
 +| iloveyou | e4ad93ca07acb8d908a3aa41e920ea4f4ef4f26e7f86cf8291c5db289780a5ae | 
 +| football | 6382deaf1f5dc6e792b76db4a4a7bf2ba468884e000b25e7928e621e27fb23cb | 
 +| monkey | 000c285457fc971f862a79b786476c78812c8897063c6fa9c045f579a3b2d63f | 
 +| abc123 | 6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090 | 
 +| guest | 84983c60f7daadc1cb8698621f802c0d9f9a3c3c295c810748fb048115c186ec | 
  
 ++++ ++++
 +
 +=== Aufgabe 6: Hash von Buch ===
 +
 +Finde heraus, wie man von einem ganzes Buch (z.B. die Bibel) einen Hash berechnen kann. Da ein Buch aus vielen Zeichen besteht, kann man es nicht in einem Durchgang hashen, sondern man muss dies in vielen kleinen 'Chunks' machen.
 +
 ==== Lösungen ==== ==== Lösungen ====
  
Zeile 126: Zeile 159:
  
 <code python> <code python>
 +def hash_simple(cleartext):
 +    summe = 0
 +    for b in cleartext:
 +        summe = summe + ord(b)
 +    return summe % 16
 +
 +print(hash_simple("ACDC"))
 </code> </code>
  
Zeile 133: Zeile 173:
  
 <code python> <code python>
 +import hashlib
 +
 +def hash_sha256(key):
 +    # Convert the string to bytes as hashlib functions expect bytes input
 +    string_bytes = key.encode('utf-8')
 +     
 +    # Create a SHA-256 hash object,
 +    # different variants are:  hashlib.sha256(), hashlib.sha224(), hashlib.sha384() or hashlib.sha512()
 +    sha2_hash = hashlib.sha256()
 +     
 +    # Update the hash object with the string bytes
 +    sha2_hash.update(string_bytes)
 +     
 +    # Get the hexadecimal representation of the hash digest
 +    hash_result = sha2_hash.hexdigest()
 +    return hash_result
 +
 +passwords = ["123456","qwertz","password","admin","a1b2c3","iloveyou","football","monkey","abc123","guest"]
 +
 +print("^ Password ^ Hash ^" ) # header for wiki table
 +
 +for pw in passwords:
 +    ha = hash_sha256(pw)
 +    print("|",pw,"|",ha,"|")
 </code> </code>
  
Zeile 138: Zeile 202:
  
 </nodisp> </nodisp>
- 
  
  • gf_informatik/daten_sca/hash_tables.1685350132.txt.gz
  • Zuletzt geändert: 2023-05-29 08:48
  • von sca