Kurz um, es geht um folgendes :
ein User hat eine Login-Maske, auf seinem Rechner liegt ein ID-File welches auch dem Server bekannt ist (und auch übereinstimmen muss !) und das ganze soll jetzt noch durch ein zweites System gesichert werden.
Die Login-Maske zeigt einen QR an, welcher dann von einem Android-Gerät gelesen werden muss (sinniger weise Smartphone) um so den Auth-Code zu erhalten der zusätzlich eingegeben werden muss.
Dabei wird der Auth-Code mit einem zweiten ID-File, nämlich dem der Android-App, “verschlüsselt” (mit ist kein besserer Begriff eingefallen) womit sichergestellt wird das der richtige Auth-Code auch nur von dem User gelesen werden kann.
Dabei müsste man mal testen ob man bei den ID-Files eher auf symetrisch (wie AES) geht oder eher a-symetrisch (wie RSA).
Jetzt kommen aber gewisse Probleme :
- wenn eines (oder beide) der ID-Files verloren geht ist der Zugang unweigerlich verloren > Neuerzeugung aller ID-Files (sowohl Client- als auch Server-seitig nötig) > wie in diesem Fall den “rechtmäßigen” User korrekt authentifizieren ?
- mir fällt kein wirklich praktikables Pattern ein wie man die Daten vor Manipulation schützen könnte (völlig egal ob einfaches Kopieren oder bewusstes Ändern um Zugriff auf andere Accounts zu erhalten)
Prinzipiell gibt es sowas schon : SteamGuard
Es wird ein eindeutiger Key für jeden Client erzeugt den der Auth-Server mit den zugelassenen vergleicht. Wird ein neue Key gefunden so wird per Mail der Auth-Code versand.
Dieses Prinzip würde ich halt gerne auf QR und Android-Smartphone umlagern.
Bevor Einwände wie “Ausschluss mehrerer User-Gruppen” oder ähnliche kommen : das ganze soll erstmal proof-of-concept werden und lässt sich später auf weitere Systeme erweitern.
Es geht eher weniger um das “Wie erzeuge ich QR und lese sie mit Android?” sondern eher um “Macht das ganze so überhaupt Sinn?”.
Mich würden mal eure Ideen dazu interessieren. Vielleicht kann man ja das eine oder andere noch verbessern.