Einmal Passworte

Einmal Passwörter mit OPIE (One Time Passwords in Everything)

Christoph Langbein, Bytesitter


Contents




1 Einführung

1.1 Worum geht es ?

Dieses Dokument beschreibt wie man einen Server einrichtet, um so genannte Wegwerf-Passwörter zu benutzen. Unter Client-Software wird beschrieben, wie Passwörter oder Listen mit Passwörtern zur Benutzung des Servers erstellt werden.

1.2 Plattformen

Das vorliegende HowTo beruht auf der Debian Distribution. Es sollte jedoch auf allen anderen Linux Distributionen funktionieren.

1.3 Copyright Informationen

Dieses Dokument ist Copyright (c) 2003 by Christoph Langbein und ist unter den Bedingungen der GNU Free Document License (http://www.gnu.org/licenses/fdl.txt) veröffentlicht. Dies bedeutet, dass dieser Text sowohl in elektronischer Weise wie auch auf physikalischem Weg verbreitet werden darf, solange der Copyright Vermerk nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt und erwünscht. Bei Veröffentlichung ist dies dem Autor mitzuteilen.

1.4 Haftungsausschlussklausel

Der Autor lehnt jegliche Haftung für das Resultat der Anwendung dieses Dokuments ab. Dies schließt auch Datenverluste infolge von eventuellen Fehlern in diesem Dokument mit ein. Die Anwendung erfolgt auf eigenes Risiko und Gefahr.

1.5 Neueste Version dieses Dokuments

Die neueste Version dieses Dokuments ist jeweils auf der Website http://www.bytesitter.de zu finden.



2 Wofür braucht man einmalige Passwörter ?

Wenn man hinreichend gute Passwörter nutzt, wozu sollte man sich die Mühe machen und ``Einmal Passworte'' verwenden ? Die Antwort ist einfach: Überall dort, wo man eine ``Remote-Verbindung'' zu seinem Heim Rechner aufbaut. Gerade in Internetcafes oder in fremden Netzwerken kann man nicht sicherstellen, dass keine Keylogger (wenn man z. B. den PC in einem Internetcafe benutzt) oder Netzwerk-Sniffer laufen, die Ihre POP3, IMAP etc. Passworte mithören und speichern. Diese Passwörter können vom Angreifer später dazu benutzt werden, um mit Ihren Zugangsdaten Zugriff auf Ihre Accounts des Heimrechners oder Servers zu bekommen.

Da mit ``Einmal Passworten'' jedes Passwort nur einmal benutzt wird, kann ein Angreifer mit dem Passwort nach erfolgreichem Mithören nichts mehr anfangen.



3 Die Serverseite

Nachdem man OPIE von der Webseite http://www.inner.net/opie heruntergeladen und installiert wurde, sollten auch noch die PAM Module(unter contrib) installiert werden. Unter Debian ist OPIE als Paket verfügbar. Hier muss man mit ``apt-get install opie-server opie-client libpam-opie'' die nötigen Programme und Module installieren.

Wir werden zur Authentifizierung PAM benutzten. Um einen Login für unseren IMAP Dienst mittels OPIE zu erreichen, wird die Datei /etc/pam.d/imap oder ssh wie folgt bearbeitet:

auth required pam_opie.so

account required pam_unix.so

auth required pam_deny.so
Will man auch den ``normalen'' Mail Login nutzen, um z. B. im internen Netz nur ein Passwort zu nutzen:

auth sufficient pam_unix_auth.so

auth sufficient pam_opie.so use_first_pass

account required pam_unix.so

auth required pam_deny.so
Danach müssen sequence number und seed erzeugt werden. Das einzugebende Passwort kann auch ein Satz sein, muss allerdings mindestens 10, maximal 257 Zeichen enthalten. Bei der erstmaligen Erstellung von sequence number und seed wird die Option -c übergeben. Sollte man keinen physikalischen Zugang zum Server haben, sondern über z. B. ssh eingeloggt sein, kann mit der Option -f die Erstellung erzwungen werden.

user@server:~$ opiepasswd -c -f

Adding user: Only use this method from the console; NEVER from remote. If you are using telnet, xterm, or a dial-in, type ^C now or exit with no password. Then run opiepasswd without the -c parameter. Using MD5 to compute responses.

Enter new secret pass phrase: <PASSWORT>

Again new secret pass phrase: <PASSWORT>

ID user OTP key is 499 gr0778

MAIL DATE NUDE WYNN GLUE WHEE
Für den Benutzer user stehen so 498 Einmal Passwörter mit dem seed gr0778 zur Verfügung. Wenn nur noch weniger als 20 Passwörter zur Verfügung stehen, sollte man einen neuen seed erzeugen, indem man sich auf dem Server einloggt und wieder den openpasswd Befehl ausführt (zur Erzeugung des Response Key siehe Clients):

user@server:~$ opiepasswd

Updating user:

You need the response from an OTP generator.

Old secret pass phrase:

otp-md5 020 gr0778 ext

Response: <LUSH BALI YEAH GOAL MERT STOW>

New secret pass phrase:

otp-md5 499 gr0779

Response: <GASH EAST SEA RECK PAP SLUM>

ID user OTP key is 499 gr0779

GASH EAST SEA RECK PAP SLUM
Will man sein Passwort ändern, kann man dieses, indem man opiepasswd noch einmal mit der Option -c aufruft (opiepasswd -c).

Somit ist die Serverseite fertig eingerichtet.



4 Die Client Software

Um jetzt ,,Einmal Passworte'' von einem beliebigen Client aus zu benutzen, braucht man sequence number, seed und sein Passwort. Aus diesen drei Teilen wird das Einmal Passwort berechnet.

4.1 *nix

4.1.1 Tcl/Tk Frontend

Unter http://www.inner.net/pub/opie/contrib/ gibt es die Datei opie.tk-v2.3.gz. Die Datei wird heruntergeladen und mit ,,gunzip opie.tk-2.3.gz'' entpackt. Danach kopiert man die Datei opie.tk-2.3 am besten nach /usr/bin/opietk und ändert die Zugriffsrechte (cp opie.tk-2.3 /usr/bin/opietk && chmod 755 /usr/bin/opietk). Zur Nutzung des Frontends muss wish installiert sein (unter Debian im Paket tk8.0 enthalten).

4.1.2 Terminal

Unter *nix benutzt man in einem Terminal einfach den Befehl ``opiekey sequence_number seed ``

user@client:~$ opiekey 459 gr0773

Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions.

Enter secret pass phrase:

GASH EAST SEA RECK PAP SLUM
Wenn man gleich mehrere Passwörter erzeugen will, um z. B. im Urlaub seine E-Mails abzurufen, kann man die Ausgabe auch direkt an einen Drucker leiten und sich n Passwörter ausdrucken lassen.

# opiekey -n 50 459 gr0773 | lpr

würde z. B. die Passwörter der Sequenznummern 459-409 auf dem lokalen Drucker ausgeben.

4.2 Pocket PC

Auf einem Gerät mit PocketPC kann man den One Time Password Generator von http://www.awe.com/mark/dev/otp/ benutzen. Die Benutzung ist selbsterklärend.

4.3 Web Anwendung (Java)

Ein Java Applet findet man unter http://www.cs.umd.edu/users/harry/jotp/ aber bedenken Sie, dass Web Anwendungen immer als unsicher anzusehen sind. Werfen Sie also unbedingt einen Blick auf den Source Code des Programms.

4.4 Windows

Unter http://www.inner.net/pub/opie/contrib/ findet man das Programm Winkey.exe. Nach einem Doppelklick kann man Winkey in einem Verzeichnis seiner Wahl entpacken. Auch dieses Programm ist selbsterklärend. Daten eingeben und das Einmal Passwort (Response) auslesen.

4.5 Perl (Postscript erstellen)

Nach dem Herunterladen der Datei opieprint.gz von http://www.inner.net/pub/opie/contrib/ wird die Datei mit ,,gunzip opieprint.gz'' entpackt. Danach müssen evtl. noch eine Pfade angepasst werden. Dazu öffnet man opieprint mit einem Editor seiner Wahl und ändert die Zeilen

#!/usr/local/bin/perl -

$dir="/usr/local/bin"; # dir containing opieinfo & opiekey

in

#!/usr/bin/perl -

$dir="/usr/bin"; # dir opieinfo & opiekey

Danach wird opieprint nach /usr/bin/ kopiert (cp opieprint /usr/bin) und ausführbar gemacht (chmod 755 /usr/bin/opieprint). Jetzt kann man sich eine druckbare Karte erstellen, indem man das Kommando opieprint ausführt:

# opieprint -5 -o keycard.ps -s sequence_number -S seed user

Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions.

Enter secret pass phrase: <PASSWORT>
Die keycard kann man danach noch ins pdf Format konvertieren

#ps2pdf keycard.ps keycard.pdf

oder direkt ausdrucken (lpr keycard.ps). Danach sollte man die erstellten keycard Dateien löschen !!

4.6 Macintosh

Unter http://www.inner.net/pub/opie/contrib/ gibt es die Datei OPIEcalc.sit.hqx, die für die Nutzung unter MacOS gedacht ist.

4.7 Handy (Java)

Unter http://student.dei.uc.pt/~subtil/paranoia/ existieren eine .jar und eine .jad Datei. Leider konnte ich das Programm nicht testen, da es auf den mir zur Verfügung stehenden Handys nicht funktionierte.