Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:kryptographie:hashfunktionen:start [23.02.2022 19:32] – [Praktische Aufgaben] sbel | faecher:informatik:oberstufe:kryptographie:hashfunktionen:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Hashfunktionen ====== | ||
- | |||
- | ===== Ein kleines soziales Netz ===== | ||
- | |||
- | ==== Passwörter speichern ==== | ||
- | |||
- | |||
- | |||
- | 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: | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A1) === | ||
- | |||
- | Fritz Mayer meldet sich durch Eingabe seines Benutzernamens und seines Klartextpassworts am Login Formular an. | ||
- | |||
- | * Überlege dir, wie der Vorgang ablaufen könnte, der dazu führt, den Anmeldeversuch bei Eingabe des richtigen Passworts als " | ||
- | * Welche Probleme erkennst du, wenn das Passwort verschlüsselt in der Datenbank gespeichert wird? | ||
- | |||
- | ==== Die Prüfsummenstrategie ==== | ||
- | |||
- | Du überlegst dir, anstatt des verschlüsselten Passworts eine **Prüfsumme** in der Datenbank zu hinterlegen. Jetzt kannst du die Prüfsumme eines eingegebenen Passworts berechnen und mit der gespeicherten Prüfsumme vergleichen: | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | Dein Entwicklungschef schlägt dir zwei Möglichkeiten vor: | ||
- | |||
- | * Die **iterierte Quersumme** ist die Quersumme, die entsteht, wenn man solange immer wieder die Quersumme ausrechnet, bis nur noch eine einzige Ziffer übrig bleibt. Beispiel: Für die Zahl 97 lautet die normale Quersumme 16, berechnet man davon wiederum die Quersumme, so entsteht die iterierte Quersumme: 7. | ||
- | * Die **alternierende Quersumme** entsteht durch abwechselndes Subtrahieren und Addieren der einzelnen Ziffern. Beispiel: Für die Zahl 1234 ist die alternierende Quersumme 1 - 2 + 3 - 4 = -2). | ||
- | |||
- | Um unsere Überlegungen einfach zu halten, lassen wir fürs Erste nur Kennwörter zu, die aus Zahlen bestehen. | ||
- | ^ Benutzername | ||
- | | martin | ||
- | | susi | 123456 | ||
- | | franzi | ||
- | | karle | 123456789 | ||
- | | eva | 1234567890 | ||
- | | kathrin | ||
- | | hubertus | ||
- | |||
- | |||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A2) === | ||
- | |||
- | * Ergänze die Tabelle für die weiteren Zeilen. | ||
- | * Entscheide für welche Methode der Passwortspeicherung du dich entscheiden würdest. Begründe deine Entscheidung. | ||
- | * Welche Eigenschaft würdest du dir von einer optimalen Prüfsumme wünschen? Erläutere, warum diese auf deiner Wunschliste stehen würde. | ||
- | |||
- | ==== Bessere " | ||
- | |||
- | Deine Entwickler stimmen dir zu, dass das so keinen Sinn macht und schlagen weitere Prüfsummen vor: | ||
- | |||
- | ^ Benutzername | ||
- | | martin | ||
- | | susi | 123456 | ||
- | | franzi | ||
- | | karle | 4534567 | ||
- | | eva | 657703 | ||
- | | kathrin | ||
- | | hubertus | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A3) === | ||
- | |||
- | * Finde heraus, welche Methoden zur " | ||
- | * Wenn du dich für eine dieser drei Methoden enstscheiden 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 " | ||
- | Es sollen beliebig große Eingaben auf eine feste Zahl von Zeichen abgebildet werden: | ||
- | |||
- | {{ : | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A4) === | ||
- | |||
- | Überlege dir, welche Auswirkungen diese " | ||
- | * Wunsch 1: Unsere Prüfsumme soll kollisionsfrei sein. | ||
- | * Wunsch 2: Unsere Prüfsumme soll unumkehrbar sein. | ||
- | |||
- | ===== Praktische Aufgaben ===== | ||
- | |||
- | Unter Linux gibt es mehrere Kommandozeilenwerkzeuge, | ||
- | |||
- | |||
- | ---- | ||
- | {{: | ||
- | === (P1) === | ||
- | |||
- | Bestimme den Hashwert des Wortes " | ||
- | < | ||
- | echo " | ||
- | echo " | ||
- | echo " | ||
- | </ | ||
- | |||
- | Gib für jeden Hash-Befehl die Länge des Hashs in Bit an. | ||
- | |||
- | Vergleiche die Ausgabe der beiden folgenden Befehle: | ||
- | < | ||
- | echo " | ||
- | echo -n " | ||
- | </ | ||
- | |||
- | Was fällt auf, wenn man die Hash-Werte vergleicht? Woran liegt das? Die Manual-Page für den echo-Befehl kann dir weiterhelfen ('' | ||
- | |||