TOTP-Code im Browser erzeugen: wofür das Werkzeug gedacht ist und wofür nicht
Ein Generator für die Einmalcodes gekaufter Konten, nicht für Ihre eigenen. Wie TOTP funktioniert, warum der häufigste Fehler an Ihrer Uhr liegt und wann eine App die richtige Wahl ist.
Michael Chen
Vorweg, weil es sonst missverstanden wird: Dieses Werkzeug ist für Einmalcodes von Konten gedacht, die Sie übernommen haben und deren Geheimnis Ihnen mit den Zugangsdaten übergeben wurde. Für Ihre eigenen dauerhaften Konten ist eine App auf dem Gerät die richtige Wahl, und weiter unten steht, warum. Ein zweiter Faktor auf dem HstockPlus-Konto selbst existiert übrigens nicht; das ist in den Sicherheitshinweisen erklärt.
Was ein TOTP-Geheimnis eigentlich ist
Der Sechsstellige, den eine Authenticator-App anzeigt, wird nicht von irgendwo abgerufen. Er wird gerechnet, und zwar aus genau zwei Zutaten: einer Zeichenkette, die Sie einmalig bei der Einrichtung bekommen haben, und der aktuellen Uhrzeit. Sonst nichts. Kein Netz, kein Server, keine Verbindung zum Dienst.
Das ist der Punkt, an dem das ganze Verfahren verständlich wird. Der Dienst kennt dieselbe Zeichenkette und rechnet dieselbe Rechnung. Wenn beide Seiten dasselbe Ergebnis bekommen, stimmt der Code. Die Zeichenkette heißt Geheimnis, und sie ist der eigentliche Schlüssel. Wer sie hat, kann jederzeit gültige Codes erzeugen, dauerhaft und ohne Ihr Zutun.
Daraus folgt das Wichtigste, was man über den zweiten Faktor wissen kann: Das Geheimnis ist nicht ein Zusatz zum Passwort, es ist ein zweites Passwort. Ein gekauftes Konto ist nicht übernommen, solange jemand anderes das Geheimnis noch besitzt.
Das Geheimnis begegnet Ihnen in zwei Formen. Entweder als Buchstabenblock aus Großbuchstaben und den Ziffern zwei bis sieben, manchmal in Vierergruppen gesetzt. Oder eingebettet in eine längere Adresse, die mit otpauth:// beginnt und die Sie bekommen, wenn Sie einen Einrichtungs-QR-Code auslesen statt ihn zu scannen. Beide Formen enthalten dasselbe.
Die Parameter, die das Werkzeug verwendet
Da ein Teil der deutschsprachigen Suche danach ausdrücklich nach der Spezifikation fragt, hier die Einstellungen offen statt versteckt. Der Generator rechnet mit dem Standardverfahren nach RFC 6238: Prüfsumme SHA-1, sechs Stellen, Zeitfenster von dreißig Sekunden, gezählt ab dem 1. Januar 1970. Das sind die Voreinstellungen, die praktisch alle großen Dienste benutzen.
Die Eingabe nimmt beide oben genannten Formen an. Bei einer otpauth://-Adresse wird das Geheimnis daraus gelesen, sodass Sie nichts heraussuchen müssen. Der Code wird angezeigt, ein Balken zeigt die Restzeit des laufenden Fensters, und beim Wechsel ins nächste Fenster wird neu gerechnet.
Die Rechnung passiert im Browser. Das Geheimnis wird nicht an einen Server geschickt, weil es dafür keinen Grund gibt: Wie oben beschrieben braucht die Rechnung nur die Zeichenkette und die Uhrzeit, und beides liegt auf Ihrem Gerät.
Der häufigste Fehler, und er liegt nicht am Code
Wenn ein erzeugter Code abgelehnt wird, ist die Ursache in den allermeisten Fällen nicht das Geheimnis, sondern die Uhr Ihres Geräts.
Der Code hängt an der Zeit. Geht Ihr Rechner oder Ihr Handy anderthalb Minuten falsch, rechnen Sie in einem anderen Dreißig-Sekunden-Fenster als der Dienst, und dann ist Ihr Code für dieses Fenster korrekt und für den Dienst trotzdem ungültig. Die meisten Dienste akzeptieren ein Fenster davor und danach, also etwa eine Minute Toleranz. Darüber hinaus wird abgelehnt.
Das erklärt eine Reihe von Beobachtungen, die sonst rätselhaft wirken: dass der Code auf dem Handy funktioniert und auf dem Rechner nicht, dass er nach einer Zeitumstellung plötzlich nicht mehr angenommen wird, oder dass er in einer virtuellen Maschine grundsätzlich scheitert, weil deren Uhr nach dem Aufwachen aus einem gespeicherten Zustand steht.
Die Abhilfe ist unspektakulär: automatische Zeitsynchronisation in den Systemeinstellungen einschalten, dann neu erzeugen. Wichtig ist die richtige Diagnose, weil der übliche Reflex, das Geheimnis noch einmal einzugeben oder ein anderes Werkzeug zu suchen, an dieser Ursache nichts ändert. Die Zeitzone ist dabei egal. TOTP rechnet mit der Weltzeit, und die Zeitzone ist nur eine Anzeigefrage.
Bleibt der Code auch bei gestellter Uhr falsch, gibt es zwei weitere Kandidaten. Erstens ein Tippfehler im Geheimnis: Es enthält nie die Ziffern null, eins und acht und nie die Buchstaben O und I, weil diese Zeichen im verwendeten Alphabet nicht vorkommen. Wer sie sieht, hat sie hineingelesen. Zweitens ein Dienst, der von den Voreinstellungen abweicht, etwa mit acht Stellen oder einem Sechzig-Sekunden-Fenster arbeitet. Das ist selten, kommt aber vor, und dann passt dieses Werkzeug nicht.
Wann eine App die bessere Wahl ist
Hier der Teil, der gegen das eigene Angebot spricht, und er gehört dazu.
Für ein Konto, das Sie dauerhaft behalten wollen, gehört das Geheimnis in eine App auf einem Gerät und nicht in ein Eingabefeld im Browser. Nicht weil die Rechnung eine andere wäre, sie ist identisch. Sondern wegen der Gewohnheit, die dabei entsteht: Wer sich angewöhnt, sein Geheimnis in ein Webformular zu tippen, tippt es irgendwann in das falsche. Nachgebaute Seiten, die genau darauf warten, sind der Normalfall und nicht die Ausnahme, und ein abgegriffenes Geheimnis merkt man nicht, weil danach alles weiter funktioniert, für Sie und für den anderen.
Sinnvoll ist ein Generator im Browser dort, wo eine App keinen Vorteil hat: bei der einmaligen Übernahme eines Kontos, dessen Geheimnis Sie ohnehin gerade im Klartext vor sich haben, und bei der Prüfung, ob ein übergebenes Geheimnis überhaupt gültig ist, bevor Sie eine Lieferung bestätigen.
Die Reihenfolge bei einer Übernahme
Dafür ist das Werkzeug gedacht, und die Reihenfolge entscheidet, ob die Übernahme etwas wert ist.
- Prüfen Sie mit dem Generator, ob das gelieferte Geheimnis überhaupt einen akzeptierten Code erzeugt. Tut es das nicht, ist das ein Lieferproblem und gehört in den Nachrichtenstrang zur Bestellung, solange das Garantiefenster läuft.
- Melden Sie sich mit Passwort und Code an.
- Ändern Sie die hinterlegte E-Mail-Adresse auf eine, die Ihnen gehört. Vor allem anderen, weil sonst jede weitere Änderung über die alte Adresse rückgängig gemacht werden kann.
- Ändern Sie das Passwort.
- Richten Sie den zweiten Faktor neu ein. Nicht die App neu koppeln, sondern beim Dienst deaktivieren und neu aktivieren, sodass ein neues Geheimnis entsteht. Erst damit wird das gelieferte Geheimnis ungültig, und erst damit gehört das Konto Ihnen allein.
- Erzeugen Sie neue Wiederherstellungscodes und beenden Sie alle fremden Sitzungen.
Schritt fünf ist der, der übersprungen wird, und der einzige, der zählt. Solange das alte Geheimnis gültig bleibt, hat der Verkäufer dieselben Codes wie Sie, und zwar dauerhaft. Erst danach ist der Generator für dieses Konto überflüssig, und das ist der beabsichtigte Zustand.

