KeeChallenge für YubiKey — und warum Sie es vermeiden sollten
KeeChallenge ist ein Plugin, das KeePass 2 um YubiKey-Unterstützung erweitert. Allerdings hat es eine Reihe von Problemen. Dieser Artikel beschreibt diese Probleme und alternative Lösungen.
Wie KeeChallenge funktioniert
KeeChallenge verschlüsselt die Datenbank mit dem geheimen HMAC-Schlüssel (S). Dieser Schlüssel ist im YubiKey gespeichert und wird zur Erzeugung von Antworten (Responses) verwendet. Zusätzlich verschlüsselt KeeChallenge das Geheimnis S mit dem vorab berechneten Challenge-Response-Paar und speichert das verschlüsselte Geheimnis samt Challenge in einer zusätzlichen XML-Datei.
Beim Entsperren der Datenbank passiert Folgendes:
- KeeChallenge lädt die Challenge C aus der XML-Datei und sendet sie an den YubiKey
- Der YubiKey transformiert die Challenge (mithilfe des im Schlüssel gespeicherten Geheimnisses S) und liefert eine Response R zurück
- Die Response R wird verwendet, um das in der XML-Datei gespeicherte Geheimnis Senc zu entschlüsseln.
- Das entschlüsselte Geheimnis S wird zum Entschlüsseln der Datenbank verwendet. Wichtig: Es handelt sich um dasselbe Geheimnis, das auch im YubiKey gespeichert ist.
- KeeChallenge erzeugt die XML-Datei neu (generiert eine neue zufällige Challenge C, berechnet die neue Response R, verschlüsselt S mit R' und speichert die aktualisierten Werte C und Senc in der XML-Datei)
Weitere Details finden Sie im vollständigen Ablaufdiagramm.
Probleme mit KeeChallenge
Der Ansatz von KeeChallenge hat mehrere Sicherheitsprobleme:
- Der geheime Schlüssel ändert sich nie, er wird lediglich neu verschlüsselt. Aus Sicht von KeePass ist KeeChallenge nichts anderes als eine statische Schlüsseldatei, die jedes Mal dieselben Bytes liefert.
- Daraus folgt, dass KeeChallenge anfällig für Replay-Angriffe ist. Jede frühere XML-Datei kann zum Entschlüsseln der Datenbank verwendet werden. Das Randomisieren der Challenge und das Neuverschlüsseln des Geheimnisses sind also sinnlos — reines Sicherheitstheater.
- Das Geheimnis sollte den YubiKey niemals verlassen — genau das ist der Sinn eines nur beschreibbaren Hardware-Schlüssels. KeeChallenge verletzt dieses Prinzip, indem es das Geheimnis auf den Computer bringt. Theoretisch könnte ein Angreifer S aus dem Prozessspeicher kopieren, den YubiKey des Besitzers ohne dessen Wissen klonen und jede zukünftige Version der Datenbank entschlüsseln (da das Geheimnis statisch ist).
Darüber hinaus gibt es einige verwandte Probleme:
- Ein Entwickler von Yubico hat 2016 ein Sicherheitsbedenken geäußert. Stand 2024 ist das Problem weiterhin ungelöst.
- KeeChallenge wirkt aufgegeben — es gab seit 2016 keine nennenswerten Updates mehr.
- Der Betreuer reagiert nicht auf gemeldete Probleme.
Eine bessere Alternative
Ein alternativer Ansatz wurde in KeePassXC eingeführt und wird von allen kompatiblen Apps unterstützt:
In KeePassXC benötigen wir keinerlei Kenntnis des HMAC-Geheimnisses. Wir verwenden den Master-Seed der Datenbank (eine zufällige Bytefolge, die Teil Ihrer Datenbank ist) als Challenge und nutzen dann die Response, um die Datenbank zu verschlüsseln. So brauchen wir keine zusätzliche Datei und haben zudem den Vorteil, dass sich die erforderliche Response bei jedem Speichern ändert — was echter Zwei-Faktor-Authentifizierung deutlich näher kommt.
Dieser Ansatz hat gegenüber KeeChallenge mehrere wichtige Vorteile:
- Der vom YubiKey abgeleitete Schlüssel ist dynamisch und ändert sich bei jedem Speichern der Datenbank. (Bei KeeChallenge bleibt der Verschlüsselungsschlüssel gleich und simuliert damit faktisch eine statische Schlüsseldatei.)
- Das HMAC-Geheimnis verlässt den Hardware-Schlüssel nie, sodass der YubiKey nicht heimlich geklont werden kann.
- Es gibt keine zusätzliche XML-Datei, sondern nur die Datenbank selbst.
- Mehrere aktive Entwicklerteams unterstützen diesen Ansatz.
Aus den oben genannten Gründen setzt KeePassium den Ansatz von KeePassXC um. Es gibt keine Pläne, mit KeeChallenge verschlüsselte Datenbanken zu unterstützen.
Wenn Sie eine mit KeeChallenge geschützte Datenbank haben, sollten Sie stattdessen zu KeePassXC und KeePassium wechseln. Diese Kombination bietet Ihnen eine sicherere, kompatible und aktiv gepflegte Lösung.