Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:kryptographie:hashfunktionen:start [23.02.2022 16:38] – [Bessere "Prüfsummen"-Methoden] sbel | faecher:informatik:oberstufe:kryptographie:hashfunktionen:start [20.04.2023 12: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. | + | 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. |
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 43: | Zeile 43: | ||
| eva | 1234567890 | | eva | 1234567890 | ||
| kathrin | | kathrin | ||
- | | hubertus | + | | hubertus |
Zeile 56: | Zeile 56: | ||
==== Bessere " | ==== Bessere " | ||
+ | |||
+ | Deine Entwickler stimmen dir zu, dass das so keinen Sinn macht und schlagen weitere Prüfsummen vor: | ||
^ Benutzername | ^ Benutzername | ||
Zeile 64: | Zeile 66: | ||
| eva | 657703 | | eva | 657703 | ||
| kathrin | | kathrin | ||
- | | hubertus | + | | hubertus |
---- | ---- | ||
Zeile 71: | Zeile 73: | ||
* Finde heraus, welche Methoden zur " | * Finde heraus, welche Methoden zur " | ||
- | * Wenn du dich für eine dieser drei Methoden | + | * Wenn du dich für eine dieser drei Methoden |
+ | |||
+ | |||
+ | ===== 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. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <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, | ||
+ | </ | ||
+ | |||
+ | |||
+ | **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) | ||
+ | |||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A5) === | ||
+ | |||
+ | Beschreibe stichwortartig, | ||
+ | |||
+ | Verfahre ebenso beim **Anmeldevorgang eine bestehenden Benutzers**: | ||
+ | |||
+ | {{ : | ||
+ | ===== 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 ('' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (P2) === | ||
+ | |||
+ | Man kann auch Hash-Werte für ganze Dateien bestimmen: | ||
+ | |||
+ | < | ||
+ | sha1sum < | ||
+ | </ | ||
+ | |||
+ | z.B.: | ||
+ | < | ||
+ | sha1sum mail.txt | ||
+ | 6ce3fe1479a10edb2f1bdd6d181a5b0e210abe1a | ||
+ | </ | ||
+ | |||
+ | * Erstelle eine Datei mit dem Namen '' | ||
+ | * 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. | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (P3) === | ||
+ | |||
+ | |||
+ | Kannst du mit den gewonnenen Erkenntnissen ein Verfahren " | ||
+ | |||
+ | * Wie kann man mit Hilfe des RSA-Verfahrens Informationen signieren? | ||
+ | * Wie kann eine Hashfunktion hier hilfreich sein? | ||
+ | ===== Material ===== | ||
+ | {{simplefilelist>: |