lehrkraefte:blc:informatik:glf22:security

Passwörter, Authentifikation

Am Schluss dieser Einheit sollten Sie einen Einblick in verschieden starke Möglichkeiten der Authentifizierung haben.

Für dieses Beispiel gehen wir davon aus, dass wir nur Kleinbuchstaben 'a' bis 'z' verwenden.

  1. Wie viele mögliche «Passwörter» der Länge 1 gibt es?
  2. Wie viele Passwörter der Länge der Länge 2 sind möglich?
  3. Wie viele mit Länge 8?
  4. Wie viele mit Länge 12?
  5. Wie sehen diese Zahlen aus, wenn wir auch noch Grossbuchstaben und Ziffern verwenden?

Lösungen

Lösungen

  1. $26$
  2. $26^2=676$ (für jeden möglichen ersten Buchstaben gibt es 26 Möglichkeiten für den zweiten, also $26\cdot 26$).
  3. $26^8 = 208'827'064'576 \approx 10^{11}$.
  4. $26^{12} = 95'428'956'661'682'176 \approx 10^{17}$
  5. $62$, $3844$, $218'340'105'584'896 \approx 10^{14}$, $3\cdot 10^{21}$.

Das Problem mit solchen Passwörtern ist, dass man die Buchstaben wirklich zufällig wählen sollte, damit man die berechnete Passwortstärke erhält. Tatsächlich verwenden Menschen aber meistens Wörter oder Namen, mit leicht abgeändert und mit Sonderzeichen angereichert werden. Das reduziert die Anzahl möglichen Passwörter wieder enorm. Und die Passwörter sind schwierig zu merken.

Einfacher zu merken sind Passwörter, wenn man 4 zufällige Wörter aneinander reiht. Wichtig ist, dass die Wörter zufällig ausgewählt werden!

  1. Wir nehmen an, wir hätten eine Liste mit 24'445 Wörtern. Wie viele Möglichkeiten gibt es, 4 Wörter hintereinander zu schreiben?
  2. Vergleichen Sie mit obigen Berechnungen.

Lösung

Lösung

  1. $24445^4 \approx 3\cdot 10^{17}$
  2. Die Passwortstärke ist also annähernd so gross, wie oben, nur dass diese nicht durch den Menschen verkleinert wird.

Hier finden Sie eine Liste mit 24'445 deutschen Wörtern: pwlist.txt.

Diese wurde aus folgender Liste gefiltert: https://sourceforge.net/projects/germandict/ (Häufige Wörter zwischen 6 und 9 Buchstaben lang).

Die Ursprüngliche Liste wurde aus Filmuntertiteln generiert.

Mit folgendem Python-Programm, können zufällige Wörter ausgewählt werden: pwgen.py

Generieren Sie einige Passwörter mit obiger Liste und obigem Programm. Versuchen Sie, das Python-Programm zu verstehen.

Womit steht und fällt die Sicherheit dieser Passwortgenerierung?

Antwort

Antwort

Die Vorraussetzung ist, dass die Auswahl wirklich zufällig erfolgt, und nicht irgendwie «nachhersagbar» ist. Würde der Zufallsgenerator bei jedem Programmstart das gleiche erzeugen, wäre das natürlich wertlos. Auch wenn z.B. nach 1000 Programmstarts wieder die gleichen Kombinationen erzeugt werden, ist die Sicherheit dahin.

Comicstrip zum Thema: https://xkcd.com/936/

Die Entropie eines Passworts ist die Anzahl der Ja/Nein-Fragen, die ein Angreifer nacheinander stellen muss, um das Passwort erst einzugrenzen und schließlich zu erraten. Da der Angreifer üblicherweise nicht auf jede dieser Ja/Nein-Fragen direkt eine Antwort bekommt, muss er die Ja/Nein-Fragen alle im Voraus kombinieren. Bereits bei 40 Ja/Nein-Fragen muss er dafür mehr als 1 Billion mögliche Passwörter ausprobieren.

Quelle: https://de.wikipedia.org/wiki/Passwort#Entropie

Nehmen wir an, Sie wollen sich bei der Webseite humpfdidumpf.ch anmelden.

  • Wie wird das Passwort übertragen? Was könnten da für Probleme auftauchen?
  • Wie wird das Passwort auf Korrektheit überprüft?
  • Die Webseite wird gehackt und der Angreifer bekommt die Daten zur Überprüfung der Benutzernamen/Passwörter in die Hände. Was könnte der Angreifer damit anstellen?
  • Wie kann man dem Angreifer sprichwörtlich die Suppe zum vornherein versalzen?

Lösungen

Lösungen

  • Die Übertragung muss verschlüsselt erfolgen (https), was heute praktisch immer der Fall ist.
  • Es gibt verschiedene Varianten, das zu bewerkstelligen:
    • Ganz schlecht: Die Passwörter sind im Klartext gespeichert und werden damit verglichen.
    • Schlecht: Es wird ein Hash der Passwörter gespeichert und dann die Hashes verglichen.
    • Gut: Neben dem Hash wird eine zufällige Zeichenkette (>10 Zeichen) gespeichert und dem Passwort angehängt. Erst dieses erweiterte Passwort wird gehasht.
    • Sehr gut: Anstatt einfach einen Hash aus dem gesalzenen Passwort zu berechnen, wird während knapp 1 Sekunde immer wieder der Hash vom Hash berechnet (eine bestimme Anzahl mal). Damit wird Passwörter durchprobieren zwecklos, weil der Rechenaufwand enorm ist. Für den Betreiber stellt das kein Problem dar, da sich die Benutzer ja nur punktuell anmelden.
  • Der Angreifer könnte sich als vertrauenswürdige angemeldete Personen ausgeben und damit
    • andere Leute zur Installation von Malware animieren.
    • zur Überweisung von Crypto oder anderen Werten veranlassen (Freund in Not).
    • die Benutzernamen/Passwort Kombination auf weiteren Seiten durchprobieren.
  • Je nachdem ist es trivial bis sehr schwierig an die Passwörter zu kommen, siehe oben.

Die grundlegensten Funktionen eines Passwortmanagers sind:

  • Information geschützt durch ein Masterpasswort (oder anderen Mechanismums)
  • Kann Passwörter sicher generieren und vorschlagen.
  • Kann zusätzliche Information zu Username/Passwort speichern (typischerweise URLs oder Notizen).

Überaus nützliche Funktionen:

  • Import/Export in einem allgemein lesbaren Format (z.B. CSV, JSON), falls mal umgezogen werden möchte.
  • Interaktion mit Browsern (automatisch Passwörter einfüllen).
  • Synchronisation über Geräte hinweg

Die Synchronisation erfolgt meist über eine Cloud, wobei dabei hoffentlich nur die verschlüsselte Passwortdatei synchronisiert wird. Wer das nicht möchte, kann oft auch einfach die verschlüsselte Datei, die die Passwörter enthält auf verschiedene Geräte kopieren. Dazu braucht es allerdings entweder viel Disziplin oder rudimentäre Programmierkenntnisse, um die Datei zu synchronisieren.

Ich persönlich verwende Buttercup und das nur auf meinen Linux-Rechnern, meinem Android-Handy vertraue ich keine Passwörter an.

Ich habe gesehen, dass der Microsoft Authenticator ebenfalls als Passwortmanager fungieren kann. Zur Funktionsweise kann ich leider keine Ausküfte geben.

Passwörter haben inhärente Probleme. Ein Ansatz um die Probleme zu mindern ist die Zweifaktorauthentifizierung. Die Idee ist, über einen zusätzlichen, unterschiedlichen Kanal eine Bestätigung anzufordern. Z.B. via SMS (unsicher) oder eine sichere Hardware (z.B. Yubi-Key oder Biometrie-Chip im Handy).

Aktivieren Sie wo möglich die Zweifaktorauthentifizierung. Siehe z.B. https://www.srf.ch/sendungen/kassensturz-espresso/espresso/identitaetsdiebstahl-gauner-klauen-digitec-login-und-bestellen-waren-ueber-1000-franken

Alternative zu Passwörtern

Anstatt Passwörter können public/private keys verwendet werden.

Der Vorteil ist, dass der private Schlüssel nie herausgegeben werden muss, sondern nur der öffentliche im Nutzerprofil abgelegt wird. Der Server schickt dann dem Benutzer Zufallsdaten, die der Benutzer mit seinem privaten Schlüssel verschlüsselt. Die verschlüsselten Daten schickt der Benutzer an der Server zurück, der diese mit dem öffentlichen Schlüssel entschlüsselt. Wenn wieder die gleichen zufälligen Daten entstehen, hat der Benutzer bewiesen, im Besitz des privaten Schlüssels zu sein, ohne diesen herauszugeben.

Einige von Ihnen haben ein solches Schlüsselpaar für ssh und scp für das login auf unseren Webserver generiert.

Google ist dabei «Security keys» für Google-Accounts auszufahren.

Um den privaten Schlüssel zu schützen, wird spezielle Hardware verwendet, aus der der Schlüssel nicht ausgelesen werden kann und die direkt Daten mit dem privaten Schlüssel ver- und entschlüsseln kann. In vielen Smartphones und modernen Computern sind solche Chips verbaut, typischerweise gekoppelt mit Biometrie. D.h. diese Chips lassen Ver- und Entschlüsselung von Daten nur nach erfolgreicher Biometrieüberprüfung zu. Normalerweise sind die Chips so gebaut, dass auch die Biometrie-Daten den Chip nicht verlassen können.

Hackme-Challenge

  • lehrkraefte/blc/informatik/glf22/security.txt
  • Last modified: 2023/06/04 08:52
  • by Ivo Blöchliger