Einmalpasswörter für den Heimgebrauch

Seite 2: Zündung

Inhaltsverzeichnis

Zum Anmelden mit OTPs ist eine Initialisierung des OPIE-Dienstes mit dem Befehl opiepasswd -c notwendig. Dabei wird das Konto mit dem man gerade arbeitet, hinzugefügt. Zudem fragt der Generator nach einer mindestens 10-stelligen Passphrase, die als Parameter in die Erzeugung der Einmalpasswörter eingeht. Als Antwort wirft das Tool beispielsweise aus:

ID dab OTP key ist 499 wl3899
BUG KEEN SMOG MAP MOON TIDY

Die erste Zeile enthält die Sequenznummer (499) und das so genannte Seed (hier wl3899). Die zweite Zeile zeigt das dazugehörige, aus sechs Teilen bestehende OTP. Letzteres ist nur für Sonderfälle notwendig, da bei der nächsten Anmeldung am Server bereits das OTP mit der Sequenznummer mit der nächst niedrigeren Nummer abgefragt wird, in unserem Fall 498. Loggt man sich nun per SSH auf dem Server ein, zeigt der Login die Sequenznummer und das Seed an. Damit muss man nun einen OTP-Generator füttern, beispielsweise das in OPIE enthaltenen opiekey-Tool:

opiekey 498 wl3899

Leider gibt es dabei ein Problem: Ohne Zugriff auf einen Rechner mit opiekey sind wahrscheinlich nur Stephen Hawking und Bruce Schneier in der Lage, das Einmalpasswort auszurechnen. Der Rest der Menschheit muss weiter auf Hilfsmittel zurückgreifen. Am einfachsten ist die Zettelmethode. Dazu lässt man sich von opiekey mehrere OTPs im voraus berechnen, druckt die Liste aus und steckt sie sich in das Portemonnaie. Zwanzig solcher OTPs erzeugt etwa der Befehl, für die oben initialisierte Reihe:

dab@server:/etc/pam.d$ opiekey -n 20 499 wl3899
Using the MD5 algorithm to compute response.
Enter secret pass phrase:
480: HILL ELK AMOK NOOK CITY FIRM
481: MOOR BELT LYE JOB AHEM END
...
499: ROIL PEG LUKE RUSE DAWN ADD

Eleganter als eine OTP-Liste ist, auf einem Java-fähigen Handy die Java-Implementierung eines OTP-Rechners zu installieren und zu jeder abgefragen Sequenznummer und dem dazugehörigen Seed das OTP einzeln zu berechen. Eine davon ist jotp, die als abgespeckte Version selbst auf einfachen Handys mit der Java Micro Edition (JME) läuft [5].

Dummerweise gehört ein SSH-Client nicht zur Standard-Windows-Installation und das nachträgliche Einspielen ist meist nicht möglich. Doch auch für solche Hürden gibt es ein Sprungbrett: Ajaxterm [6]. Das in Python geschriebene Ajaxterm stellt über ein Webinterface wahlweise eine Login-Shell oder eine SSH-Shell zur Verfügung. Damit ist zum Einloggen auf dem heimischen Server nur ein Webbrowser notwendig – und der ist von der Stange in jedem Betriebssystem verfügbar.

Standardmäßig nutzt Ajaxterm in aktuellen Versionen die SSH-Shell als Login. Die für Ubuntu 6.10 verfügbare Ajaxversion-Version 0.7-3 ist veraltet und bietet noch keinen nativen SSH-Support. Ersatzweise installieren wir daher das für Debian Unstable verfügbare Paket, das auch die Start- und Stop-Skripte installiert.

wget http://ftp.de.debian.org/debian/pool/main/a/ajaxterm/ajaxterm_0.9-2_all.deb
dpkg -i ajaxterm_0.9-2_all.deb