KeePass + YubiKey: Mehr Sicherheit durch OTPs

Solltest du noch nicht wissen, was ein YubiKey ist oder macht, dann lies bitte zuvor meinen Testbericht. Weißt du bereits Bescheid, kannst du hier ohne weiteres anknüpfen. Der YubiKey bietet verschiedene Möglichkeiten, um deine KeePass-Datenbank besser zu schützen. Eine weitere Methode, neben Challenge-Response, stellen Einmalkennwörter dar. Bei jeder Entsperrung der Passwortdatenbank werden zusätzlich zum Kennwort einmalige Kennwörter generiert. Das System gilt als besonders sicher.

Enigma (Quelle: Michael Himbeault, Liz. CC BY 2.0)
Enigma (Quelle: Michael Himbeault, Liz. CC BY 2.0)

YubiKey konfigurieren

Zunächst benötigst du einen YubiKey und das Personalization Tool. Erstelle ein neues Advanced OATH-HOTP-Profil in Slot 1 mit folgenden Einstellungen:

  • entferne den Haken bei “OATH Token Identifier”
  • HOTP Length: 8 Digits
  • Moving Factor Seed: Fixed zero
  • generiere einen neuen Secret Key
OATH-HOTP auf dem YubiKey einrichten
OATH-HOTP auf dem YubiKey einrichten

Den Secret Key speicherst du an einem sicheren Ort zwischen und schreibst das Profil anschließend wie oben beschrieben auf deinen YubiKey.

OATH-HOTP in KeePass einrichten

Um deine KeePass-Datenbank mit OTPs öffnen zu können, brauchst du das Plugin OtpKeyProv. Entpacke das Archiv ins Hauptverzeichnis deiner KeePass-Installation. Öffne danach deine Passwortdatenbank und gehe über “Datei” auf “Masterschlüssel ändern …”. Gib zunächst dein Masterkennwort ein und bestätige es anschließend. Setze bei “Schlüsseldatei / Provider” einen Haken und wähle “One-Time Passwords (OATH HOTP)” aus. Anschließend öffnet sich ein neues Fenster. Dort stellst du sicher, dass die Passwortlänge 8 Zeichen beträgt. Im Feld “Secret Key” gibst du den gesicherten Schlüssel ein. Der Counter bleibt auf Null. Danach kannst du festlegen, wie viele Einmalpasswörter du bei jeder Anmeldung eingeben möchtest. Drei sollten es mindestens sein.

OATH-HOTP in KeePass einrichten
OATH-HOTP in KeePass einrichten

OTP ist besonders sicher, daraus ergibt sich aber zugleich ein Nachteil. Die Kennwörter folgen einer genauen Reihenfolge. Kommt diese durcheinander, dann bekommst du deine Datenbank nur noch mit dem Secret Key entsperrt. Um diese Gefahr zu minimieren, gibt es den Look-ahead count. Dieser bestimmt, wie viele Einmalkennworte du “verschwenden” kannst.

Hier ein einfaches Beispiel: Steht der Wert auf 3, können 4 Passwörter verballert werden. Man kommt immer noch in die Datenbank rein. Sind es mehr als vier, war’s das. Warum eigentlich vier, fragst du dich vielleicht? Ganz einfach, im YubiKey und in KeePass läuft ein Zähler mit. Daher kennt KeePass das nächste gültige Kennwort. Den Look-ahead count würde ich persönlich klein halten. Das Plugin speichert die Passphrasen verschlüsselt in einer XML-Datei.

Das bedeutet: Generiert der YubiKey beispielsweise bei jedem Entsperren drei Einmalpasswörter und ich habe den Look-ahead count auf 6 gesetzt, dann speichert das Plugin 7 OTPs verschlüsselt ab. Ein Angreifer könnte diese möglicherweise entschlüsseln. Beträgt der Look-ahead count 1, fehlt dem Angreifer das dritte Kennwort.

Ich gebe zu, das Thema ist etwas verwirrend. Man gewöhnt sich aber schnell an OTP und dann ist der Counter eigentlich sogar unnötig. Mit dem Secret Key kommt man ja immer wieder an seine Passwörter. Hast du alles eingerichtet, speicherst du deine Datenbank. Von nun an, musst du bei jeder Anmeldung dein Kennwort eingeben und die passende Anzahl an Einmalkennwörtern mit dem YubiKey generieren.

Beim ersten Anmelden kannst du unter “Options”, noch die beiden Haken bei “Auto-Accept” und “Auto-Tab” setzen. Dann läuft die Anmeldung noch etwas geschmeidiger.

Auto-Accept und Auto-Tab aktivieren
Auto-Accept und Auto-Tab aktivieren

Du kannst deine KeePass-Datenbank noch mit weiteren einfachen Tipps effektiv schützen.


Avatar von reraiseace
Autor: Markus Werner (reraiseace) Twitterreraiseace, Google+reraiseace, Twittercb_werner
Ich bin Redaktionsvolontär bei der COMPUTER BILD in Hamburg, Fernstudent am Deutschen Journalistenkolleg und schreibe auf re{raise}ace privat über Webdesign und Programmierung. Seit 2015 schrieb ich auch regelmäßig für andere Medien.

8 Kommentare – Schreib mir deine Meinung!

Fülle bitte die nachstehenden Felder aus. Angaben mit einem Sternchen sind Pflichtangaben. Deine E-Mail-Adresse wird nicht veröffentlicht.

  1. Kommentar von Cypherpetz · · #

    Besten Dank für die klare Darstellung! Ohne deinen Artikel wäre mir das Einrichjten des Yubikey für Keepass HOTP nicht gelungen. Die offizielle Dokumentation ist einfach nicht ausreichend, wenn man kein Programmierer ist (oder der erforderliche technische Background einfach nicht vorhanden ist).

    Eine Frage hätte ich: Benutzt du Keepass in dieser Konfiguration? Meiner Meinung nach ist das Handling mit mindestens 3 x Drücken doch zu umständlich …

  2. Kommentar von reraiseace · · #

    Bitte, bitte ^^ Ich geb dir Recht, die offizielle Dokumentation ist nicht unbedingt die verständlichste.

    Ich habe den YubiKey in dieser Konfiguration eine Zeit lang mit KeePass so verwendet. Mittlerweile bin ich aber auf Challange-Response umgestiegen, weil mir das auch etwas zu nervig war. Die Anleitung findest du hier: KeePass per YubiKey über Challenge-Response absichern. Das Verfahren gilt auch als sicher, aber OTP ist noch sicherer. Man muss eben einen Kompromiss zwischen Komfort und Sicherheit finden, der einem selbst zusagt.

  3. Kommentar von FriedhelmFunkel · · #

    hallo
    ich habe alles genau nach der Anleitung gemacht allerdings erhalte ich eine Fehlermeldung nachdem die otp Passwörter eingefügt sind und ich ok drücke “Failed to create OTP key! Make sure you’ve entered the correct OTPs” leider hab ich bisher im netz nichts brauchbares gefunden woran es liegt
    hat jemand vieleiucht ne Idee

    danke schonmal

  4. Kommentar von Andreas · · #

    Hi,
    Ich habe aktuell Keypass nur mit der Schluesseldatei gesichert und möchte, dass ich beim anmelden in der Datenbank OTP nutze. Ist das, was du hier beschreibst der Weg dahin?
    Viele Grüße
    Andreas

  5. Kommentar von reraiseace · · #

    Richtig, das ist der Weg zum zusätzlichen Entsperren der Datenbank per OTP.

  6. Kommentar von Gerhard Gappmeier · · #

    Hallo Markus,

    sehr schöner Artikel, aber ich glaube nicht das OTPs sicherer sind als Challenges-Response wenn es um KeyPass geht.
    Während OTPs eine super Sache sind bei Remote Kommunikation, macht es wenig Sinn für lokale Verwendung. Die Sicherheit bei OTP beruht darauf, dass ich den Counter auf der Gegenseite als Angreifer nicht unter Kontrolle habe, d.h. sich das OTP garantiert immer ändert.
    Keepass muss aber den Zustand lokal speichern.
    Als Angreifer (Trojaner) muss ich also nur die aktuelle Datei(en) kopieren und mittels Key-Logger die 1-3 Passwörter abgreifen. Diese funktionieren dann immer wieder wenn ich die Backup-Datei wiederherstelle.
    Die Sicherheit geht also nicht wesentlich über die eines normalen Passwortes hinaus.

    Währenddessen ist für das Challenge-Response-Verfahren dass Passwort und der Yubikey notwendig. Zumindest reicht Key-Logging nicht aus. Man müsste als Angreifer die Response am USB-Bus abgreifen, was zumindest etwas schwieriger sein sollte als Tastatur-Eingaben abzufangen.
    Zu guter letzt liegt die Sicherheit also am Betriebssystem wie gut diese Ressourcen geschützt sind.

  7. Kommentar von reraiseace · · #

    Sorry für die verspätete Antwort auf deinen Kommentar. Ich gebe dir Recht, dass das Potential von OTP bei der Verwendung bei KeePass für den Login in Datenbank nicht sein volles Potential ausschöpft. Der Zustand wird lokal gespeichert, das ist korrekt. Allerdings hängt die Sicherheit von OTP in diesem Fall weitestgehend von zwei Faktoren ab:

    1. Die Übermittlung der OTPs sollte immer auf dem sicheren Desktop erfolgen (In den KeePass-Settings einstellbar). Das macht es Angreifern unmöglich Eingaben auf dem sicheren Desktop abzugreifen. Ich habe das selbst mit einem Keylogger getestet. Es geht wirklich nicht.
    2. Der Look-ahead Count ist entscheidend. Wird dieser Wert sehr niedrig gesetzt, schrumpft die Gefahr, dass aus der gespeicherten Datei OTPs entwendet werden können. Demnach darf der Counter niemals gleich oder größer der eingegebenen OTPs sein. Andernfalls kann man sich das alles sparen.

    Somit sind OTPs schon sicherer als ein normales Kennwort, wenn es richtig umgesetzt wird. Die Sicherheit von Challenge-Response ist aber auch so eine Sache. Hier werden ebenfalls in einer Datei Challenge und Verification gespeichert (es soll aber AES256 verschlüsselt sein). Das kann unter Umständen auch ein Risiko bergen. AES256 gilt zwar als sicher, aber man soll ja niemals nie sagen. Die Sicherheit hängt nicht alleine nur am OS, sondern genauso an KeePass, den Plugins und wie man die Sicherheitsmechanismen implementiert.

  8. Kommentar von Chris · · #

    Gibt es irgendwo eine Dokumentation zu OtpKeyProv? Nirgendwo konnte ich bisher Informationen darueber finden, was genau mit dem OTP nach dessen Eingabe passiert.

    Was passiert, nachdem der Yubikey das OTP in die Maske getippt hat? Ist die Keepass-Datenbank mit dem OTP verschluesselt, oder gibt OtpKeyProv nur ein ja/nein an Keepass zurueck, das naechste Fenster aufzumachen?

    Fuer mich einzig relevant ist das Szenario indem ein Angreifer Zugriff auf all meine Dateien hat und das Masterpasswort per Keyboardsniffer erfasst hat. In wieweit hilft da der Yubikey da genau?

    Ich bin dankbar fuer jeden Hinweis auf technische Dokumentation.