Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:web_sca:authentifizierung [2024-02-19 12:52] – [Online (Website)] sca | gf_informatik:web_sca:authentifizierung [2024-03-11 10:22] (aktuell) – [Authentifizierung] sca | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Authentifizierung ====== | ====== Authentifizierung ====== | ||
- | <nodisp 2> | ||
- | ++++Plan| | ||
- | |||
- | * Lektion 1: Märchenstunde, | ||
- | * Lektion 2: Brute Force | ||
- | * Lektion 3: Brute Force II, Laufzeitanalyse | ||
- | * Lektion 4: Mehrfaktorauth. | ||
- | * Lektion 5: eigene Sicherheit verbessern | ||
- | |||
- | ++++ | ||
- | |||
- | </ | ||
++++Lernziele| | ++++Lernziele| | ||
Zeile 25: | Zeile 13: | ||
* Welche Massnahmen kann man im Bezug auf Passwörter treffen, um möglichst sicher zu sein? | * Welche Massnahmen kann man im Bezug auf Passwörter treffen, um möglichst sicher zu sein? | ||
* Wie kann man herausfinden, | * Wie kann man herausfinden, | ||
- | | + | |
- | * Programmiere eine solche mit Python. | + | |
* Was sind die Stärken und Schwächen einer solchen Attacke? | * Was sind die Stärken und Schwächen einer solchen Attacke? | ||
* Was ist eine **Drei-Faktor-Authentifizierung**? | * Was ist eine **Drei-Faktor-Authentifizierung**? | ||
Zeile 34: | Zeile 21: | ||
* Was kann man selbst unternehmen, | * Was kann man selbst unternehmen, | ||
* Analysiere eine Situation (Bsp. Geschichte mit sieben Geisslein) und gebe Tipps, wie man die Sicherheit erhöhen könnte. | * Analysiere eine Situation (Bsp. Geschichte mit sieben Geisslein) und gebe Tipps, wie man die Sicherheit erhöhen könnte. | ||
+ | * **Programmieren: | ||
+ | * Brute-Force Attacke und ähnliche Codes **Programmieren** können. | ||
+ | * Wissen, wie File eingelesen wird. | ||
+ | |||
++++ | ++++ | ||
Zeile 227: | Zeile 218: | ||
1. Lade das passende Template oben herunter / kopiere es in ein Python oder Jupyter-Notebook File und führe es aus. | 1. Lade das passende Template oben herunter / kopiere es in ein Python oder Jupyter-Notebook File und führe es aus. | ||
1. Finde das erste Passwort durch *ausprobieren* heraus: **Passwort 1**: ein einziger Grossbuchstabe | 1. Finde das erste Passwort durch *ausprobieren* heraus: **Passwort 1**: ein einziger Grossbuchstabe | ||
- | 1. Schreibe nun den Code, der das zweite Passwort hackt: **Passwort 2**: drei zufällige Grossbuchstaben | + | 1. Schreibe nun den Code, der das zweite Passwort hackt: **Passwort 2**: drei zufällige Grossbuchstaben. Schreibe deinen eigenen Code, verwende keine Module wie itertools. |
==== Aufgabe 2: Deutsches Wort ==== | ==== Aufgabe 2: Deutsches Wort ==== | ||
Zeile 249: | Zeile 240: | ||
* Versuche, einen (oder beide) der **Codes**, die für diese Aufgaben zur Verfügung gestellt werden, zu **verstehen**. | * Versuche, einen (oder beide) der **Codes**, die für diese Aufgaben zur Verfügung gestellt werden, zu **verstehen**. | ||
+ | ===== - Multifaktor-Authentifizierung | ||
+ | |||
+ | Angenommen, du hast einen Gegenstand (z.B ein Tagebuch, ein Foto oder ein Superkräfte verleihender Trank), der **auf keinen Fall** in die Hände von jemand anderem gelangen darf. Du verschliesst den Gegenstand in einem bombensicheren Safe. Um den Safe zu öffnen, braucht es einen Pin Code. | ||
+ | Was aber, wenn irgendjemand den Code herausfindet? | ||
+ | Was aber, wenn jemand heimlich eine Kopie deines Schlüssel anfertigt? Du erhöhst die Sicherheit nochmal: Ein weiteres Schloss mit Fingerabdruck-Scanner öffnet sich nur, wenn du deinen Daumen hinhältst. | ||
+ | |||
+ | Dein Safe verfügt nun über eine Drei-Faktor-Authentifizierung. Zwar ist es auch möglich, eine Fingerabdruck-Überprüfung zu täuschen, aber es ist für jemanden ausser dir äusserst schwierig, alle drei Schlösser zu öffnen! Dieser jemand müsste etwas besonderes <color # | ||
+ | |||
+ | Das ist die Idee hinter einer Authentifizierung mit mehreren Faktoren: Es sollen Einzelheiten aus // | ||
+ | |||
+ | * <color # | ||
+ | * <color # | ||
+ | * <color # | ||
+ | |||
+ | Bei einer // | ||
+ | |||
+ | Ein **entscheidender Vorteil der Mehrfaktor-Authentifzierung** im Internet besteht darin, dass //mehrere Anfgriffsvektoren// | ||
+ | * Es ist wohl einfach, ein einzelnes Token oder Mobiltelefon zu stehlen, aber schwierig, gleich 1000 oder mehr davon zu stehlen. Diese Art des Angriffs lässt sich also nicht leicht skalieren. | ||
+ | * Dagegen ist es sehr einfach, ein Virus oder Keylogger auf tausenden von Geräten zu verbreiten oder eine Phishing-Mail an tausende von Benutzer: | ||
+ | * Für die meisten Betrüger: | ||
+ | |||
+ | |||
+ | === Aufgabe 1 – Prüfe und verbessere deine IT-Sicherheit === | ||
+ | |||
+ | 1. **Analyse: | ||
+ | 1. Erstelle eine Liste aller Webseiten, die du (seltener oder öfter) besuchst und die eine Authentifizierung erfordern. | ||
+ | 1. Überlege, bei wie vielen du die gleiche E-Mail-Adresse und das gleiche Passwort nutzt. | ||
+ | 1. Du nutzt wohl auch Apps, die eine Authentifizierung verlangen, jedoch nur einmalig, bei jedem erneuten Öffnen ist keine neue Authentifizierung nötig. Was ist die Überlegung dahinter? Was wird vorausgesetzt? | ||
+ | 1. **Schwachstellen schliessen: | ||
+ | 1. Überlegen, welche Lösung dir am sinnvollsten erscheint: Passwortmanager im Browser? Andere Passwortmanager? | ||
+ | 1. Nötige Änderungen vornehmen: Zweifaktor-Authentifzierung aktivieren, evtl. PW-Manager installieren, | ||
+ | 1. Mindestens folgende Sicherheitsmassnahmen sollten umgesetzt werden: | ||
+ | 1. Besonderes Passwort und 2FA beim E-Mail-Konto (Achtung: wahrscheinlich muss ein Key ausgedruckt werden, der unbedingt aufbewahrt werden muss). | ||
+ | 1. Laptop und Smartphone mit Passwort/ | ||
+ | |||
+ | |||
+ | ===== Lösungen ===== | ||
+ | |||
+ | <nodisp 1> | ||
+ | |||
+ | ++++Brute-Force| | ||
+ | |||
+ | <code python> | ||
+ | ### requires: `pip install selenium` | ||
+ | |||
+ | ### DON'T CHANGE CODE FROM HERE ... | ||
+ | from selenium import webdriver | ||
+ | from selenium.webdriver.common.by import By | ||
+ | |||
+ | # url to website | ||
+ | url_website = " | ||
+ | |||
+ | # Open the webpage | ||
+ | driver = webdriver.Chrome() | ||
+ | driver.get(url_website) | ||
+ | |||
+ | # Enter text and click button -> not relevant for our hack | ||
+ | input_field = driver.find_element(By.ID," | ||
+ | input_field.send_keys(" | ||
+ | button = driver.find_element(By.ID," | ||
+ | button.click() # ... and click it | ||
+ | |||
+ | ### ... UNTIL HERE | ||
+ | ### WRITE YOUR CODE BETWEEN HERE ... | ||
+ | |||
+ | alphabet = " | ||
+ | |||
+ | ## PASSWORD 1 | ||
+ | print(" | ||
+ | for pw in alphabet: | ||
+ | code, | ||
+ | if code == 201: | ||
+ | print(pw) | ||
+ | print(message) | ||
+ | |||
+ | ## PASSWORD 2 | ||
+ | print(" | ||
+ | for x in alphabet: | ||
+ | for y in alphabet: | ||
+ | for z in alphabet: | ||
+ | pw = x + y + z | ||
+ | code, | ||
+ | if code == 201: | ||
+ | print(pw) | ||
+ | print(message) | ||
+ | |||
+ | ## PASSWORD 3 | ||
+ | print(" | ||
+ | |||
+ | with open(" | ||
+ | for line in file: | ||
+ | pw = line.strip() # strip entfernt Leerschläge und Zeilenumbrüche am Anfang und Ende | ||
+ | code, | ||
+ | if code == 201: | ||
+ | print(pw) | ||
+ | print(message) | ||
+ | |||
+ | ### ... AND HERE. DON'T CHANGE LAST LINE: | ||
+ | driver.quit() # Close the browser | ||
+ | </ | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | |||
+ | </ | ||