Was steckt in einer .kdbx-Datei – und wie wird sie geöffnet?
Eine KeePass-Datenbank ist eine Zwiebel aus Schichten: ein offener Header mit allen Parametern, ein HMAC-geschützter Blockstrom, AES-256 oder ChaCha20, gzip, ein innerer Header, das XML mit Gruppen und Einträgen – und darin die Passwörter noch einmal extra verschleiert. Diese App zeigt jede Schicht Byte für Byte und rechnet das Öffnen live in deinem Browser nach.
🗺️ Stationen
Signaturen, TLV-Header, VariantDictionary, SHA-256 und HMAC, HMAC-Blöcke, gzip, innerer Header und XML – jedes Byte farbig markiert und erklärt.
20 Schritte vor und zurück: Passwort → Composite Key → Argon2 → Schlüssel → Header-HMAC → Blöcke → AES/ChaCha20 → XML → Innenstrom.
Warum Argon2? Live-Benchmark in deinem Browser, grobe Brute-Force-Rechnung, Encrypt-then-MAC und der Schutz im Arbeitsspeicher.
Was sich zwischen den Versionen geändert hat: Feldlängen, KDF, HMAC-Blöcke, innerer Header, Anhänge, Tags und mehr.
Von AES-KDF bis VariantDictionary – alle Fachbegriffe kurz erklärt und durchsuchbar.
🔑 Vom Passwort zum Schlüssel (KDBX 4)
P = SHA-256( UTF-8(Passwort) ) F = Schlüssel aus Schlüsseldatei (optional) R = SHA-256( P ‖ F ) Composite Key T = Argon2d/id( R, Salt, m, t, p ) Transformed Key Kₑ = SHA-256( MasterSeed ‖ T ) → AES-256 / ChaCha20 K = SHA-512( MasterSeed ‖ T ‖ 0x01 ) → HMAC-Basis K_H = SHA-512( FF FF FF FF FF FF FF FF ‖ K ) Header Kᵢ = SHA-512( UInt64LE(i) ‖ K ) Block i
🧭 Was diese App zeigt
- Den unverschlüsselten Header jeder .kdbx – auch ohne Passwort (Version, Chiffre, KDF-Parameter).
- Wo KDBX 4 ein falsches Passwort erkennt: beim Header-HMAC, bevor irgendetwas entschlüsselt wird. KDBX 3.1 merkt es erst an den StreamStartBytes.
- Warum Blöcke eigene HMAC-Schlüssel haben und warum ein Block am falschen Platz auffällt.
- Wie
Protected="True"-Werte mit einem fortlaufenden ChaCha20-Strom verschleiert werden – auch die in der Historie. - Was Argon2 gegen Brute-Force bringt – mit einer Messung in deinem Browser.