MFA/2FA: QR-Codes für TOTP erzeugen mit qrencode

Ich habe mir vor einiger Zeit den ReinerSCT Authenticator zugelegt – ein kleines praktisches Gerät, das 6-stellige Einmal-Codes auf Basis von TOTP erzeugen kann. Das bietet sich z.B. an wenn man es als Backup fürs Smartphone einsetzen möchte, sowie für Personen die für MFA/2FA ein separates Gerät bevorzugen.

Leider ist das Display recht eingeschränkt, sprich es passen nicht allzu viele Zeichen darauf. Daher sind die vorgefertigten QR-Codes wie man sie von den Hersteller-Seiten bekommt, auf dem kleinen Display oft nicht zu entziffern. Diese werden häufig abgeschnitten und man kann sie dann nicht mehr zuordnen. Um einen passenden QR-Code zu erzeugen (natürlich nicht nur für den ReinerSCT), bietet sich das Tool qrencode an.

Es lässt sich unter Debian/Ubuntu über die Pakerverwaltung installieren:

apt install qrencode -y

Wenn wir uns vorher das sog. „Seed“ (das Geheimnis auf dessen Basis die Codes erzeugt werden) irgendwo aufgeschrieben haben, können wir nun daraus den QR-Code erzeugen:

qrencode -t UTF8 -o - 'otpauth://totp/Benutzerkonto?secret=ABCDEFHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA&issuer=example.com'

Die geheime Zeichenfolge muss dabei natürlich durch das jeweilige Geheimnis ersetzt werden. Ebenso das Benutzerkonto und die Webseite/der Dienst.

Damit erhält man innerhalb der Konsolensitzung einen QR-Code, den man einfach abscannt:

Möchte man sich den QR-Code in eine PNG-Datei erzeugen lassen, geht das z.B. hiermit:

qrencode -t PNG -o qr.png -s 10 'otpauth://totp/Benutzerkonto?secret=ABCDEFHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA&issuer=example.com'

Benutzt der Aussteller einen anderen Hash-Algorithmus/Anzahl Zeichen/Gültigkeitsdauer, kann man diese Einstellungen ebenfalls in dem String mitgeben. Der Standard sind SHA1, 6 Zeichen und 30 Sekunden.

Hier als Beispiel SHA256, 4 Zeichen und 60 Sekunden.

qrencode -t UTF8 -o - 'otpauth://totp/Benutzerkonto?secret=ABCDEFHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA&issuer=Firma"&algorithm=SHA256&digits=4&period=60'

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.