faecher:informatik:oberstufe:kryptographie:hashfunktionen:start

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
faecher:informatik:oberstufe:kryptographie:hashfunktionen:start [23.02.2022 18:36] – [Tabelle] sbelfaecher:informatik:oberstufe:kryptographie:hashfunktionen:start [20.04.2023 14:12] (aktuell) – [Bessere "Prüfsummen"-Methoden] sron
Zeile 7: Zeile 7:
  
  
-Für eine Microblogging Plattform möchtest du die Zugangsdaten deiner Nutzer in der einer Datenbank speichern, insbesondere den Benutzernamen und das Passwort, das die Benutzer zur Anmeldung verwenden. weil du in Informatik gut aufgepasst hast, ist dir sofort klar, dass es nicht in Frage kommt, die Passwörter unverschlüsselt in der Datenbank abzulegen.+Für eine Microblogging Plattform möchtest du die Zugangsdaten deiner Nutzer in der einer Datenbank speichern, insbesondere den Benutzernamen und das Passwort, das die Benutzer zur Anmeldung verwenden. Weil du in Informatik gut aufgepasst hast, ist dir sofort klar, dass es nicht in Frage kommt, die Passwörter unverschlüsselt in der Datenbank abzulegen.
  
 Dein erster Gedanke ist: Die speichere ich verschlüsselt in der Datenbank ab! Die Situation stellt sich also wie folgt dar: Dein erster Gedanke ist: Die speichere ich verschlüsselt in der Datenbank ab! Die Situation stellt sich also wie folgt dar:
Zeile 56: Zeile 56:
  
 ==== Bessere "Prüfsummen"-Methoden ==== ==== Bessere "Prüfsummen"-Methoden ====
 +
 +Deine Entwickler stimmen dir zu, dass das so keinen Sinn macht und schlagen weitere Prüfsummen vor:
  
 ^ Benutzername  ^ Passwort    ^ Methode 1   ^ Methode 2   ^ Methode 3  ^ ^ Benutzername  ^ Passwort    ^ Methode 1   ^ Methode 2   ^ Methode 3  ^
Zeile 71: Zeile 73:
  
   * Finde heraus, welche Methoden zur "Prüfsummenbildung" hier zum Einsatz kommen.   * Finde heraus, welche Methoden zur "Prüfsummenbildung" hier zum Einsatz kommen.
-  * Wenn du dich für eine dieser drei Methoden enstscheiden müsstest - welche wäre dies? Begründe deine Wahl. +  * Wenn du dich für eine dieser drei Methoden entscheiden müsstest - welche wäre dies? Begründe deine Wahl.  
 + 
 + 
 +===== Hashfunktionen ===== 
 + 
 +In der Kryptographie spielen sogenannte **Hashfunktionen** eine große Rolle (wie wir bei genauerer Betrachtung noch sehen werde...) 
 + 
 +Diese Hashfunktionen sind unseren "Prüfsummen" nicht unähnlich, haben aber noch eine erschwerende Randbedingung zu erfüllen: 
 +Es sollen beliebig große Eingaben auf eine feste Zahl von Zeichen abgebildet werden: 
 + 
 +{{ :faecher:informatik:oberstufe:kryptographie:hashfunktionen:hash.drawio.png |}} 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A4) === 
 + 
 +Überlege dir, welche Auswirkungen diese "Randbedingung" auf unsere beiden Wünsche an die "Prüfsummenfunktion" haben: 
 +  * Wunsch 1: Unsere Prüfsumme soll kollisionsfrei sein. 
 +  * Wunsch 2: Unsere Prüfsumme soll unumkehrbar sein. 
 + 
 +---- 
 + 
 +<WRAP center round box 90%> 
 +**Kryptographische Hashfunktionen:** 
 + 
 +  * … bilden eine beliebig große Eingabemenge auf Hashes fester Länge ab. Meist erfolgt die Ausgabe Hexadezimal. 
 +  * … sind nicht umkehrbar 
 +  * … sind kollisionsarm. Insbesondere soll es unmöglich sein Kollisionen zu konstruieren, also Eingaben finden zu können, die denselben Hash Wert haben 
 +</WRAP> 
 + 
 + 
 +**Beispiele:** 
 + 
 +  * MD5 (gebrochen – man kann Kollisionen konstruieren) 
 +  * SHA1 (unsicher, kommt derzeit bei GIT zum Einsatz) 
 +  * SHA2 (mehrere Varanten, gilt als weitgehend sicher) 
 +  * Bcrypt (wird zum Passworthashing verwendet) 
 + 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (A5) === 
 + 
 +Beschreibe stichwortartig, was bei der **Registrierung eines neuen Benutzers** an deinem sozialen Netzwerk geschehen muss, um den neuen Benutzer in der Datenbank einzutragen. Was gibt der Benutzer ein, was macht das Softwaresystem, was wird in die Datenbank eingetragen? 
 + 
 +Verfahre ebenso beim **Anmeldevorgang eine bestehenden Benutzers**:  Was gibt der Benutzer ein, was macht das Softwaresystem, was wird aus der Datenbank gelesen? 
 + 
 +{{ :faecher:informatik:oberstufe:kryptographie:hashfunktionen:abschlussaufgabe.drawio.png |}} 
 +===== Praktische Aufgaben ===== 
 + 
 +Unter Linux gibt es mehrere Kommandozeilenwerkzeuge, mit Hilfe derer man kryptographische Hashes bestimmen kann. Bearbeite die folgenden Aufgaben auf der Kommandozeile. Halte deine Ergebnisse in deinen Notizen fest. 
 + 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (P1) === 
 + 
 +Bestimme den Hashwert des Wortes "Hallo" indem du die Ausgabe des echo-Befehls an einen entsprechenden Hash-Befehl weiterleitest: 
 +<code> 
 +echo "Hallo" | md5sum  
 +echo "Hallo" | sha1sum 
 +echo "Hallo" | sha224sum  
 +</code> 
 + 
 +  * Gib für jeden Hash-Befehl die Länge des Hashs in Bit an. 
 + 
 +Vergleiche die Ausgabe der beiden folgenden Befehle:  
 +<code> 
 +echo "Hallo" | md5sum  
 +echo -n "Hallo" | md5sum  
 +</code> 
 + 
 +  * Was fällt auf, wenn man die Hash-Werte vergleicht? Woran liegt das? Die Manual-Page für den echo-Befehl kann dir weiterhelfen (''man echo''). 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (P2) === 
 + 
 +Man kann auch Hash-Werte für ganze Dateien bestimmen: 
 + 
 +<code> 
 +sha1sum <Dateiname> 
 +</code> 
 + 
 +z.B.: 
 +<code> 
 +sha1sum mail.txt  
 +6ce3fe1479a10edb2f1bdd6d181a5b0e210abe1a  mail.txt 
 +</code> 
 + 
 +  * Erstelle eine Datei mit dem Namen ''mail.txt'', schreibe einige Worte hinein. 
 +  * Bestime den SHA1-Hash der Datei 
 +  * Ändere ein Zeichen in der Datei, beispielsweise einen Punkt und bestimme erneut den SHA-Hash. 
 +  * Bestimme weitere Hash-Werte von Dateien, auch von Bildern, zip-Archiven oder anderen binären Dateiformaten. 
 + 
 +---- 
 +{{:aufgabe.png?nolink  |}} 
 +=== (P3) === 
 + 
 + 
 +Kannst du mit den gewonnenen Erkenntnissen ein Verfahren "erfinden", bei dem  kryptografische Hashfunktionen bei der Signatur unverschlüsselter Mails zum Einsatz kommen könnten? Du kannst dich hinsichtlich der folgenden Fragestellungen auch im Netz informieren: 
 + 
 +  * Wie kann man mit Hilfe des RSA-Verfahrens Informationen signieren? 
 +  * Wie kann eine Hashfunktion hier hilfreich sein? 
  
 +===== Material =====
  
 +{{simplefilelist>:faecher:informatik:oberstufe:kryptographie:hashfunktionen:*}}
  • faecher/informatik/oberstufe/kryptographie/hashfunktionen/start.1645637784.txt.gz
  • Zuletzt geändert: 23.02.2022 18:36
  • von sbel