Login per Smartphone mit QR-Code + Public-Key Cryptography
Der eigentliche Gedanke dahinter ist schon etwas älter und ich hab schon öfter drüber nachgedacht. Meine ursprüngliche Idee war es mit einem asymmetrischen Verfahren per Bluetooth ein Login an einem PC vorzunehmen.
Allerdings hat es da fast immer ein Problem mit der Authentifizierung des PCs, an dem man sich anmelden möchte, gegeben. Es muss einen einfachen und schnellen Weg geben, mit dem Handy den PC zu identifizieren.
Ich denke mit QR-Codes dürfte das schnell und einfach gehen. Die Sequenz des Einloggens sähe dann wie folgt aus:
- Der PC generiert einen zufälligen Wert sicherer Länge. Dieser Wert wird dann mit einer Names-ID (bei Bluetooth) oder einer IP (bei WLAN) in einem QR-Code kodiert. Dieser Code ist auf dem Login-Bildschirm zu sehen.
- Der Nutzer kommt zum PC, startet auf seinem Smartphone sein Login-App und scannt damit den QR-Code. Das Handy entnimmt die "Kontaktinformationen", stellt eine Verbindung her (muss dabei nicht einmal verschlüsselt sein) und signiert mit dem privaten Schlüssel des Nutzers diesen zufällig vom PC generierten Code. Dann wird dieser signierte Text an den PC übermittelt. Das Zertifikat für den Schlüssel muss natürlich von einer speziellen CA (wie z.B. der Uni) ausgestellt sein.
- Anhand der Signatur erkennt der PC, welcher Nutzer sich da anmeldet und die Authentizität des Nutzers ist hergestellt. Anhand des Wertes der signiert wurde erkennt der PC, dass auch wirklich dieser PC gemeint ist. Außerdem wird dieser Wert nach jedem Login neu zufällig erzeugt. Damit ist er nur einmal gültig und das Login kann nicht dupliziert werden. Wenn alles stimmt, wird der Besitzer des Zertifikates eingeloggt.
Wenn die Authentizität des PCs sichergestellt werden muss, kann beim Verbindungsaufbau in Schritt 2 der PC den Wert auch nocheinmal mit einem speziellen, nur von offiziellen PCs genutzten Zertifikat signieren. Dann muss dieses Zertifikat dem Handy jedoch vorher bekannt sein, was nicht wirklich schwer wäre.
Ich hab das ganze jetzt noch nicht verifiziert; noch nicht einmal richtig durchdacht. Das ist mir nur gerade noch so eingefallen und ich wollts schnell runterschreiben, bevor ich es wieder vergesse. Auf Anhieb hört es sich jedoch recht gut an. Das wäre sogar mal ein interessantes neues Hobby-Projekt. Meinungen?
Update: Ich sollte vielleicht noch dazu schreiben, dass das vom Umfeld her auf die öffentlich verfügbaren Terminals in den Pools der Uni gerichtet ist. Also nicht wie im Büro, wo man seinen eigenen Rechner hat. Da bräuchte man ja nicht so viel mit der Identifikation rumhantieren.
Das Ziel des ganzen soll halt vor Allem sein, Passwörter abzuschaffen und durch wesentlich sichere Verfahren (basierend auf Public-Key Cryptography) zu ersetzen ohne neue Hardware (z.B. Smart Cards, Smart Card Reader), sondern nur neue Software einzusetzen.
Zugegebener Maßen basieren meine Überlegungen auf Smartphones. Ich weiß nicht wie gut das ganze mit älteren Handys umzusetzen wäre.