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:
WebseitePasswort
ZalandoloveZA4tea
TicketcornerloveTC4tea
TeemondoloveTM4tea

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.

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:

BenutzernamePasswortIterierte QuersummeAlternierende Quersumme
alice123451+2+3+4+5 = 15, 1+5 = 61-2+3-4+5 = 3
bob123456
charlie12345678
donald123456789
eve1234567890
frederick11111111
grace123123
hannapassword
ianpicture1

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

  1. Vervollständige die oben stehende Tabelle. Anstelle der in den Passwörtern enthaltenen Buchstaben kannst du die unten stehenden Zahlen einsetzen.
  2. Welche der beiden Funktionen würdest du wählen, um die Passwörter zu speichern?
  3. Welche Probleme siehst du bei beiden Funktionen?
BuchstabeZahl
A1
B2
C3
D4
E5
F6
G7
H8
I9
J10
K11
L12
M13
BuchstabeZahl
N14
O15
P16
Q17
R18
S19
T20
U21
V22
W23
X24
Y25
Z26
 
Lösung: Tabelle vervollständigen
  1. Berechnete Quersummen

    BenutzernamePasswortIterierte QuersummeAlternierende Quersumme
    alice1234563
    bob1234563-3
    charlie123456789-4
    donald12345678995
    eve123456789095
    frederick1111111180
    grace12312330
    hannapassword737
    ianpicture13-3
  2. Ganz klar die zweite Funktion (alternierende Quersumme). Bei der iterierten Quersumme sind nur 10 verschiedene Werte möglich, nämlich die Ziffern 0 - 9.

  3. 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.

Injektivität

Bessere Prüfsummen?!

Nachfolgend eine weitere Liste mit Vorschlägen für Prüfsummen.

BenutzernamePasswort?????????
alice1234567765432134567895040
bobqwertyytrewqsygtva17595000
charlieabc123321cbacde34536
donaldmillion22noillimoknnkqp463685440
eve0000000000002222220
frederick12344321345624
graceiloveyouuoyevoliknqygaqw1403325000
hannapassword11drowssaprcuuyqtf3143475840
ianqqww11222211wwqqssyy3344611524

Aufgabe: Funktionen erkennen

Erkennst du, wie die Prüfsummen in den hintersten drei Spalten berechnet werden?

Lösung: Funktionen erkennen
BenutzernamePasswortrückwärtsüberall +2Werte multiplizieren
alice1234567765432134567895040
bobqwertyytrewqsygtva17595000
charlieabc123321cbacde34536
donaldmillion22noillimoknnkqp463685440
eve0000000000002222220
frederick12344321345624
graceiloveyouuoyevoliknqygaqw1403325000
hannapassword11drowssaprcuuyqtf3143475840
ianqqww11222211wwqqssyy3344611524

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.

Hashfunktion

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


wie ein Fingerabdruck[1]

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:

PasswortHashwert
123456720eabe5d64b0e216796e834f52d61fd0b70332fc
qwertyb1b3773a05c0ed0176787a4f1574ff0075f7521e
abc1236367c48dd193d56ea7b0baad25b19455e529f5ee
000000c984aed014aec7623a54f0591da07a85fd4b762d
iloveyouee8d8728f435fd550f83852aabab5234ce1da528
password1e38ad214943daad1d64c102faec29de4afe9da3d
password22aa60a8ff7fcd473d321e0146afd9e26df395147

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.


  1. pogoneo via Openclipart (PD) ↩︎