Warnung
Auf dieser Seite findet ihr das Skript von fts. Diese Lektion wurde aber von Frau Helmy unterrrichtet!
Die Unterlagen von Frau Helmy findet man hier:
https://sites.google.com/view/praktikuminformatik/kryptologie/hashfunktionen
Authentifizierung
Authentifizierung (engl. authentication) ist das Überprüfen einer Berechtigung. Die zu überprüfende Person authentisiert sich dabei.
Es gibt drei verschiedene Wege, wie sich eine Person authentisieren kann:
Wissen
Die Person weiss etwas, z.B. ein Passwort oder eine PIN.
Besitz
Die Person besitzt etwas, z.B. eine Kreditkarte oder einen Schlüssel.
Merkmal
Die Person wird über körperliches Merkmal identifiziert, z.B. einen Fingerabdruck oder die Iris.
Jede dieser drei Methoden hat Vor- und Nachteile. Um die Nachteile auszugleichen kann eine sogenannte Zwei-Faktor-Authentifizierung verwendet werden, welche sich gleichzeitig auf zwei der drei Methoden abstützt.
Wissen
Mit dieser Methode authentisiert sich die Person, indem sie eine bestimmte Information weiss, beispielsweise
- ein Passwort,
- eine Zahlenkombination für ein Fahrradschloss,
- ein persönliche Identifikationsnummer (PIN) oder
- die Antwort auf eine Sicherheitsfrage.
Die Information muss vor der Authentifizierung vereinbart worden sein. Wenn die Information erraten oder abgefangen worden ist, kann sie problemlos geändert werden.
Diese Authentifizierungsmethode hat folgende Schwachpunkte:
- Die Information kann vergessen werden.
- Sie kann erraten oder abgefangen werden.
Besitz
Diese Methode überprüft, ob die Person einen bestimmten Gegenstand besitzt. Typische Gegenstände sind:
- Schlüssel
- Chipkarten (z.B. Bankkarten)
- SIM-Karte
- Smartphone
Solche Gegenstände müssen eindeutig identifizierbar sein, deshalb ist die Erstellung oder das Ersetzen mit Kosten verbunden.
Diese Methode hat folgende Schwachpunkte:
- Der Gegenstand kann verloren gehen oder gestohlen werden.
- Er kann gefälscht werden.
Merkmal
Die Person kann auch über ein köperliches oder biometrisches Merkmal identifiziert werden. Es werden viele unterschiedliche Merkmale verwendet:
- Handschrift
- Fingerabdruck
- Gesichtsform
- Tippverhalten
- Stimme
- Iris
- Retina
- Venenmuster
- Erbinformation (DNS)
Die biometrische Authentifizierung ist sehr bequem, da keine Gegenstände mitgeführt und keine Informationen gemerkt werden müssen.
Viele biometrische Merkmale sind jedoch öffentlich zugänglich und einfach fälschbar. Dadurch sind Authentifizierungsmethoden wie Fingerabdruck- oder Gesichtserkennung sehr unsicher.
Sichere Passwörter
Tipps für gute Passwörter
- Wähle für jede Webseite ein individuelles Passwort
- Das Passwort ist mindestens 10 Zeichen lang
- Es kommen Buchstaben (gross und klein), Zahlen und Sonderzeichen vor
Gute, merkbare Passwörter
Es gibt Strategien, um gute Passwörter zu erstellen, die man sich einfach merken kann.
- Anfangsbuchstaben
- «Jeden Abend vor dem Schlafen trinke ich eine Tasse Kräutertee!»
JA4dStieTKt!
- Vier zufällige Wörter
- Wähle vier zufällige Wörter. Verwende beispielsweise einen Webdienst dazu. Überlege dir anschliessend eine Visualisierung, mit welcher du dir diese Wörter merken kannst.
- Individualisierung
- Wähle ein gutes Passwort, welches du dir merken kannst. Füge für jeden Webdienst eine Zeichenfolge in dein Passwort ein, z.B. «ZA» für Zalando, «TM» für Teemondo:
Webseite | Passwort |
---|---|
Zalando | loveZA4tea |
Ticketcorner | loveTC4tea |
Teemondo | loveTM4tea |
Passwortmanager
Am sicherstent ist es, zufällige Passwörter zu verwenden, welche du in einem Passwortmanager verwaltest. So musst du dir nur ein Passwort merken, dasjenige für den Passwortmanager. Im Manager kannst du für jeden Dienst automatisch ein sicheres Passwort erzeugen lassen.
- LastPass: Online-Passwortmanager
- KeePassX: Passwortmanager für Windows, macOS, Linux
- Password Safe: Passwortmanager für Windows
Passwörter speichern
Passwörter sind wichtig, wir sollten sie beschützen. Doch dies gilt nicht nur für unsere eigenen Passwörter, auch Firmen sollten die Passwörter ihrer Kunden schützen.
Passwörter speichern
Wie würdest du die Passwörter deiner Kunden speichern, falls du einen Webshop erstellen müsstest? Natürlich nicht im Klartext, oder?
Dass die Passwörter «verschlüsselt» werden müssen, scheint logisch. Also sollten die Passwörter wohl auf dem Firmenserver verschlüsselt werden, damit sie nicht ausgelesen werden können – weder von Hackern noch von neugierigen Mitarbeitenden.
Doch gerade dies ist ein grosses Problem: Der Firmenserver soll die Kunden anhand ihres Passwortes authentifizieren können, die Mitarbeitenden dürfen allerdings keinen Zugriff auf die Kundenpasswörter haben. Alle bisherigen Verschlüsselungsverfahren arbeiten mit einem Schlüssel (oder mit mehreren). Wer den richtigen Schlüssel kennt, kann die Passwörter entschlüsseln. Wird der Schlüssel auf den Firmenservern gespeichert, so haben zumindest gewisse Mitarbeitende Zugriff.
Hier kommen wir momentan nicht weiter. Wir tasten uns von einer anderen Seite an die Lösung heran.
Prüfsumme
Wir können doch – anstelle eines Passwortes – eine Prüfsumme speichern:
Benutzername | Passwort | Iterierte Quersumme | Alternierende Quersumme |
---|---|---|---|
alice | 12345 | 1+2+3+4+5 = 15, 1+5 = 6 | 1-2+3-4+5 = 3 |
bob | 123456 | ||
charlie | 12345678 | ||
donald | 123456789 | ||
eve | 1234567890 | ||
frederick | 11111111 | ||
grace | 123123 | ||
hanna | password | ||
ian | picture1 |
Die iterierte Quersumme ist die Quersumme, die entsteht, wenn man solange immer wieder die Quersumme ausrechnet, bis nur noch eine einzige Ziffer übrig bleibt. 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 abwechslungweises Addieren und Subtrahieren der einzelnen Ziffern (für 1234
lautet diese 1 - 2 + 3 - 4 = -2
).
Aufgabe: Tabelle vervollständigen
- Vervollständige die oben stehende Tabelle. Anstelle der in den Passwörtern enthaltenen Buchstaben kannst du die unten stehenden Zahlen einsetzen.
- Welche der beiden Funktionen würdest du wählen, um die Passwörter zu speichern?
- Welche Probleme siehst du bei beiden Funktionen?
Buchstabe | Zahl |
---|---|
A | 1 |
B | 2 |
C | 3 |
D | 4 |
E | 5 |
F | 6 |
G | 7 |
H | 8 |
I | 9 |
J | 10 |
K | 11 |
L | 12 |
M | 13 |
Buchstabe | Zahl |
---|---|
N | 14 |
O | 15 |
P | 16 |
Q | 17 |
R | 18 |
S | 19 |
T | 20 |
U | 21 |
V | 22 |
W | 23 |
X | 24 |
Y | 25 |
Z | 26 |
Lösung: Tabelle vervollständigen
Berechnete Quersummen
Benutzername Passwort Iterierte Quersumme Alternierende Quersumme alice 12345 6 3 bob 123456 3 -3 charlie 12345678 9 -4 donald 123456789 9 5 eve 1234567890 9 5 frederick 11111111 8 0 grace 123123 3 0 hanna password 7 37 ian picture1 3 -3 Ganz klar die zweite Funktion (alternierende Quersumme). Bei der iterierten Quersumme sind nur 10 verschiedene Werte möglich, nämlich die Ziffern 0 - 9.
Wir möchten keine Kollisionen (d.h. mehrmals dieselbe Prüfsumme) erhalten.
Hinweis: Wunsch: Injektiviät
Zu jeder Prüfsumme gehört höchstens ein Passwort. Oder anders formuliert: Kollisionen sollen vermieden werden. Das bedeutet, dass jedes Passwort eine andere Prüfsumme erhalten soll.
Bessere Prüfsummen?!
Nachfolgend eine weitere Liste mit Vorschlägen für Prüfsummen.
Benutzername | Passwort | ??? | ??? | ??? |
---|---|---|---|---|
alice | 1234567 | 7654321 | 3456789 | 5040 |
bob | qwerty | ytrewq | sygtva | 17595000 |
charlie | abc123 | 321cba | cde345 | 36 |
donald | million2 | 2noillim | oknnkqp4 | 63685440 |
eve | 000000 | 000000 | 222222 | 0 |
frederick | 1234 | 4321 | 3456 | 24 |
grace | iloveyou | uoyevoli | knqygaqw | 1403325000 |
hanna | password1 | 1drowssap | rcuuyqtf3 | 143475840 |
ian | qqww1122 | 2211wwqq | ssyy3344 | 611524 |
Aufgabe: Funktionen erkennen
Erkennst du, wie die Prüfsummen in den hintersten drei Spalten berechnet werden?
Lösung: Funktionen erkennen
Benutzername | Passwort | rückwärts | überall +2 | Werte multiplizieren |
---|---|---|---|---|
alice | 1234567 | 7654321 | 3456789 | 5040 |
bob | qwerty | ytrewq | sygtva | 17595000 |
charlie | abc123 | 321cba | cde345 | 36 |
donald | million2 | 2noillim | oknnkqp4 | 63685440 |
eve | 000000 | 000000 | 222222 | 0 |
frederick | 1234 | 4321 | 3456 | 24 |
grace | iloveyou | uoyevoli | knqygaqw | 1403325000 |
hanna | password1 | 1drowssap | rcuuyqtf3 | 143475840 |
ian | qqww1122 | 2211wwqq | ssyy3344 | 611524 |
Hinweis: Wunsch Unumkehrbarkeit
Aus der Prüfsumme soll nicht auf das Passwort geschlossen werden können.
Zusatzaufgabe: Sicheres Einloggen
Wie funktioniert der Anmeldevorgang an den Computern der Schule, wenn Benutzername und Passwort von einem Server überprüft werden muss? Was wird in welcher Form übertragen?
Hashfunktionen
Tipp: Hashfunktion
«Eine Hashfunktion ist eine Abbildung, die eine grosse Eingabemenge auf eine kleinere Zielmenge abbildet.»
Da eine Eingabe beliebiger Länge auf eine Ausgabe mit fester Länge abgebildet, ist Injektivität unmöglich. Die Eingabemenge ist folglich unendlich gross (Texte, Videos und Tonaufnahmen beliebiger Länge, Bilder beliebiger Grösse, …). Die Ausgabemenge ist allerdings endlich, da die Hashwerte (also die Prüfsummen) eine fixe Länge haben.
In der Abbildung oben sieht man, dass die Menge der Passwörter nur eine Teilmenge aller theoretisch möglichen Eingaben darstellt. Es ist nicht zu verhindern, dass Kollisionen auftreten.
Tipp: Kollisionsresistenz
Um genügend Sicherheit zu bieten, soll eine gute kryptographische Hashfunktion folglich kollisionsresistent sein. Das heisst, es soll praktisch unmöglich sein, Kollisionen zu finden.
Hashwert
Die Ausgabe der Hashfunktion – also die Prüfsumme – wird Hashwert genannt.
Man kann einen Hashwert mit einem Fingerabdruck vergleichen, weil er gewissermassen eindeutig zu einem Passwort passt wie ein Fingerabdruck zu einem Menschen.
Aktuelle Beispiele
Es gibt verschiedene aktuelle Hashfunktionen. Nachfolgend einige mit SHA-1 (Secure Hash Algorithm) berechnete Hashwerte:
Passwort | Hashwert |
---|---|
1234567 | 20eabe5d64b0e216796e834f52d61fd0b70332fc |
qwerty | b1b3773a05c0ed0176787a4f1574ff0075f7521e |
abc123 | 6367c48dd193d56ea7b0baad25b19455e529f5ee |
000000 | c984aed014aec7623a54f0591da07a85fd4b762d |
iloveyou | ee8d8728f435fd550f83852aabab5234ce1da528 |
password1 | e38ad214943daad1d64c102faec29de4afe9da3d |
password2 | 2aa60a8ff7fcd473d321e0146afd9e26df395147 |
Die letzten beiden Beispiele zeigen, dass bereits kleinste Änderungen zu komplett anderen Hashwerten führen. Kryptographische Hashfunktion sind so konstruiert, dass bei einer Änderung an einem Bit ca. 50% der Hashwert-Bits ändern.
pogoneo via Openclipart (PD) ↩︎