Authentifizierung

Lernziele

Ganz allgemein bedeutet authentifizieren: zu prüfen, ob eine Behauptung zutrifft. Zum Beispiel wird geprüft, ob ein Kunstwerk hinsichtlich der behaupteten Identität, des behaupteten Alters oder der behaupteten Herkunft authentisch, das heisst echt ist(1). Im Bereich der Computerwissenschaften – unserem Bereich – geht es fast immer um die Prüfung der Identität oder Berechtigung einer Person.

Wie geht das? Wie prüfen wir, ob die Person „auf der anderen Seite“ auch die ist, die sie zu sein behauptet? Diese Frage war auch für die sieben Geisslein im Märchen der Gebrüder Grimm relevant. Dass es sich bei dem Wesen hinter der Tür nicht um ihre Geissen-Mutter, sondern um den Wolf handelte, erkannten Sie zunächst an biometrischen Daten: Stimme und Pfoten-Farbe. Der einigermassen schlaue Wolf schaffte es aber, mit Täuschungsmanövern beide Prüfungen zu bestehen, sodass die Geisslein ihm die Türe öffneten.

In der realen Welt, in der wir uns mit unseren Körpern begegnen, sind solche Täuschungen nicht so einfach: Menschen, die wir kennen, erkennen wir ziemlich gut an Stimme, Aussehen und Verhalten. Es wäre schwierig, jemandem glaubhaft zu machen, z. B. seine Schwester oder sein Bruder zu sein. Wenn wir uns aber als unbekannte Personen vorstellen, könnten wir leicht behaupten, jemand anderes zu sein. Deshalb ist es in manchen Situationen erforderlich, dass wir uns (zum Beispiel mit einer Identitätskarte) ausweisen: So kann die Behauptung „Ich bin X“ authentifiziert werden.

Auch in der virtuellen Welt, in der wir uns über Bildschirme und/oder Lautsprecher begegnen, werden Täuschungen einfacher. Vor allem dann, wenn keine Bilder oder Töne vorliegen. Woher weiss ich, dass die Person, mit der ich gerade im Chat schreibe, wirklich diese Person ist? Ob nicht jemand anderes gerade das Smartphone oder den Laptop am anderen Ende bedient?

Auf vielen Webseiten und Plattformen reicht die Angabe eines korrekten Passworts, um zu „beweisen“, dass man eine bestimmte Person oder ein bestimmter Benutzer ist (2). Wer es schafft, an mein Passwort zu kommen, kann auf der jeweiligen Webseite auf mein Benutzerkonto und alle dort vorhandenen Informationen zugreifen. Eine Authentifizierung, die nur auf ein Passwort schaut, gilt daher als relativ unsicher. Dazu mehr weiter unten.

  • (1) Jemand könnte mit einem Gemälde daher kommen und sagen: „Seht her: Dieses Bild ist von Vincent van Gogh!“ – Nun gibt es einige Möglichkeiten, seine Behauptung zu prüfen. Wird festgestellt, dass das Bild tatsächlich (bzw. sehr wahrscheinlich) von Van Gogh ist, ist es als Van-Gogh-Bild authentifiziert. Vielleicht wird auch festgestellt, dass es bloss eine Kopie, nicht echt, nicht authentisch ist.
  • (2) („Benutzer/Benutzerin“ und „Person“ meinen etwas völlig Unterschiedliches. Das wird auch dadurch klar, dass eine Person mehrere Benutzer sein kann und theoretisch für jedes Konto andere Namen und E-Mail-Adressen angeben könnte. Oft aber sind die Informationen, die zu einem Benutzer gespeichert sind, sehr zahlreich und deckungsgleich mit den Informationen über die Person, zu der das Benutzerkonto gehört.)

Ziele:

  • 'richtiges' Python installieren
  • Python-Module mit pip installieren können
  • Mit Brute Force Passwörter hacken

In dieser Aufgabe geht es darum, geheime Passwörter mithilfe der Brute-Force Methode zu hacken, über welche man Zugriff auf geheime Nachrichten (Achtung: Flachwitz Alarm!) erhält. Insgesamt gibt es mind. fünf solcher Passwörter / Nachrichten, die man hacken kann. Beachte, dass alle Passwörter ausschliesslich die Grossbuchstaben 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' verwenden. Es gibt also keine Kleinbuchstaben, Umlaute, Leerzeichen, Zahlen, Sonderzeichen, …

Für diese Aufgabe gibt es zwei Versionen:

  1. Online-Hack: Hier wird eine Website gehackt, die auf einem Schulserver läuft. Achtung: Man hat nur Zugriff über das Netzwerk der Schule, also nicht von zuhause.
  2. Offline-Hack Die (verschlüsselten) Daten, die gehackt werden sollen, werden auf den Computer heruntergeladen, es ist also kein Zugriff auf eine Website nötig. Daher kann man diesen Hack von überall aus machen.

Wähle eine der beiden Optionen (online oder offline) und löse die Aufgaben weiter unten. Für jede Option gibt es ein Template mit vordefiniertem Code, den man verwenden soll. Lasse dich von diesem Code nicht einschüchtern: Du musst diesen nur anwenden aber nicht verstehen.

Online (Website)

https://if.ksr.ch/sca/hackme/

  • Benötigt Python-Modul Selenium: pip install selenium
  • Benötigt aktuelle Version von Google Chrome
  • Erklärung:
    • Jedes Mal, wenn man auf der Website ein Passwort eingibt und den Button drückt, wird im JavaScript-File die Funktion check_pw(...) ausgeführt, die überprüft, ob das eingegebene Passwort korrekt ist oder nicht. Die Funktion gibt zwei Werte zurück:
      • Code: $201$ falls korrekt, $401$ falls falsch
      • Message
    • Der Code unten verbindet sich mit der Website und ruft die Funktion check_pw(...) auf und erhält den Code und die Message zurück.

Code

Offline (verschlüsselte Daten)

  • Benötigt Python-Modul PyCryptoDome: pip install pycryptodome
  • Erklärung: Die Python-Funktion check_pw(...) überprüft ein Passwort und erhält einen Code und eine Message (gleich wie bei Online-Version oben) zurück.

Code

Ziel: richtiges Python & VSCode einrichten

  1. Entscheide dich für eine Hack-Variante („Online“ oder „Offline“) …
  2. … und installiere das benötigte Modul (siehe oben, welches Modul benötigt wird).
  3. Optional aber empfohlen: Finde heraus, wie man Jupyter-Notebooks verwendent. Mit diesen kann man Code und Text miteinander kombinieren.
  1. Lade das passende Template oben herunter / kopiere es in ein Python oder Jupyter-Notebook File und führe es aus.
  2. Finde das erste Passwort durch ausprobieren heraus: Passwort 1: ein einziger Grossbuchstabe
  3. Schreibe nun den Code, der das zweite Passwort hackt: Passwort 2: drei zufällige Grossbuchstaben

Das folgende Dokument enthält kapp $10000$ der am meisten verwendeten deutschen Wörtern: woerter_top10000de_upper.txt.zip (muss zuerst entzippt werden!)

  1. Finde heraus, wie man in Python ein Text-File einliest und Zeile für Zeile durchgeht. Verwende dazu KI als Tutor.
  2. Hacke damit Passwort 3: Besteht aus einem Wort (nur Grossbuchstaben) aus der Liste oben.

Hacke die verbleibenden Passwörter:

  • Passwort 4: besteht aus mehr also drei zufälligen Grossbuchstaben.
  • Knacke Passwort 4 mithilfe einer rekursiven Funktion. Recherchiere selbst, was dies bedeutet.
  • Passwort 5: besteht auf zwei aneinandergereihten Wörtern aus der Liste von oben

Andere Aufgaben:

  • Mache eine Laufzeitanalyse: Mithilfe des time Moduls (import time, kein pip nötig) kann man bestimmen, wie lange die Ausführung eines Codes dauert. Wie lange dauert es im schlechtesten Fall, um ein Passwort mit $1,2,3,4,5,\ldots$ Zufallszeichen (Grossbuchstaben) zu bestimmen?
  • Versuche, einen (oder beide) der Codes, die für diese Aufgaben zur Verfügung gestellt werden, zu verstehen.
  • gf_informatik/web_sca/authentifizierung.1708335106.txt.gz
  • Zuletzt geändert: 2024-02-19 09:31
  • von sca