Verschlüsselungsmodell
.rkvey-v5-Format: Präambel, AEAD pro Kompartiment, Append-only-Commits und Geheimnis-Isolation.
Das .rkvey-v5-Format (Rust Key Vault) implementiert ein mehrschichtiges Verschlüsselungsmodell nach HKDF- und AEAD-Best-Practices. Das mentale Modell: Master-Passwort → Masterschlüssel → Unterschlüssel → verschlüsselte Kompartimente.
Jeder Eintrag ist in Kompartimente unterteilt (Metadaten, geschützte Geheimnisse, Manifest und Anhangdateien), jeweils mit eigenem HKDF-Schlüssel. Die Entschlüsselung eines Kompartiments enthüllt die anderen nicht.
QubKey v5-Verschlüsselungsmodell
Master-Passwort
Benutzereingaben (UTF-8) – werden niemals im Klartext gespeichert
Argon2id
Salz
16 Bytes (Präambel)
Erinnerung
64 MB
Iterationen
3
Parallelität
4
Ausgabe
256 Bit
Hauptschlüssel
256 Bit · Tresor-Root-Schlüssel
HKDF-SHA256
info="hdr"
Kopfzeilenschlüssel
header_key
HKDF-SHA256
info="idx"
Indexschlüssel
index_key
HKDF-SHA256
info="Abteil"
Fachschlüssel
Fachschlüssel
Pro Eintrag (v5)
HKDF(master_key, salt=file∥entry_id, info=kind∥sub_id) → Fachschlüssel
Verschlüsselte Fächer
Schlüsselableitung
Die Ableitung wandelt Ihr Master-Passwort in nutzbare kryptografische Schlüssel um. Argon2id ist absichtlich zeit- und speicherintensiv (~500 ms, 64 MB), um Offline-Rate-Limits zu erzwingen. In v5 erhält jedes Eintrags-Kompartiment anschließend seinen eigenen Schlüssel via HKDF.
Benutzereingabe → Master-Passwort (UTF-8)
Argon2id → master_key (256 Bit) mit zufälligem Salt
HKDF-SHA256 → index_key für den B-Tree
HKDF-SHA256 → compartment_key pro Eintrag und Kompartimenttyp (Metadaten, Geheimnisse, Anhang…)
| Parameter | Wert | Beschreibung | Standard |
|---|---|---|---|
Variant | Argon2id | Von OWASP empfohlene Hybridvariante — resistent gegen GPU- und Side-Channel-Angriffe | — |
Memory | 64 MB | Speicher pro Ableitung — erhöht die Hardwarekosten paralleler Angriffe | 65536 KB |
Iterations | 3 | Durchläufe über den Speicher — Sicherheit/Leistung (~500 ms) | — |
Parallelism | 4 | Parallele Threads | — |
Output | 32 bytes | Länge des abgeleiteten Schlüssels | — |
Salt | 16 bytes | Zufälliges Salt in der Präambel | — |
AEAD-Verschlüsselung
AES-256-GCM (Standard)
- AES-NI-Hardwareunterstützung auf modernen Prozessoren
- Nonce: 12 Bytes, Authentifizierungs-Tag: 16 Bytes
- Theoretisches Limit: ~64 GB verschlüsselte Daten pro Schlüssel
Wann wählen: Maschinen mit AES-Hardwarebeschleunigung, täglicher Einsatz.
Standardchiffre auf den meisten Plattformen für optimale Leistung.
XChaCha20-Poly1305 (optional)
- Erweiterte Nonce: 24 Bytes (vernachlässigbare Kollisionswahrscheinlichkeit)
- Keine Hardwareabhängigkeit — konstante Leistung auf allen CPUs
- Empfohlen für langlebige Schlüssel
Wann wählen: archivierte Tresore, Maschinen ohne AES-NI, ChaCha20-Präferenz.
In den erweiterten Tresoreinstellungen aktivierbar.
Dateistruktur
Strukturbeschreibung (v5):
preamble— Magic Bytes, Formatversion, Argon2id-Saltheader.enc— verschlüsselte Tresor-Metadaten (Name, Erstellungsdatum, Einstellungen)index/— verschlüsselter B-Tree für O(log-n)-Suche ohne Geheimnis-Entschlüsselungcompartments/— AEAD-Blöcke nach Typ: Metadaten, geschützte Geheimnisse, Manifest, Anhängeappend/— Commit-Region: neue Kompartimente + Index-Snapshot + validierter Footer
Integrität und Commits
Widerstandsfähigkeit
Append-only-Commits garantieren Integrität bei Unterbrechung:
- Neue Kompartimente werden ans Dateiende angehängt
- Ein verschlüsselter Index-Snapshot wird geschrieben
- Daten werden auf die Festplatte synchronisiert (fsync)
- Ein validierter Footer schließt den Commit ab (Konsistenzpunkt)
Reales Szenario: Sie bearbeiten einen Eintrag und der Strom fällt während des Schreibens aus. Beim Neustart findet QubKey den neuesten gültigen Footer — kein Datenverlust, keine stille Korruption. Periodische Kompaktion schreibt eine saubere Datei, wenn zu viel veralteter Speicher anfällt.
Isolation pro Kompartiment
Über HKDF-SHA256 erhält jedes Kompartiment einen eigenen compartment_key, abgeleitet vom Masterschlüssel mit Eintrags-ID und Kompartimenttyp. Praktische Folgen:
- Das Anzeigen eines Eintrags entschlüsselt nur Metadaten; Geheimnisse bleiben maskiert bis zum expliziten Reveal
- Anhänge werden einzeln geladen (Download / Vorschau), nicht beim Öffnen des Tresors
- Der B-Tree-Index nutzt seinen eigenen
index_key, getrennt von den Daten - Das Ändern eines Geheimnisses schreibt unveränderte Anhangdateien nicht zwangsläufig neu
Diese Isolation ist nativ im .rkvey-v5-Format umgesetzt.
Kryptografische Primitive
| Primitiv | Verwendung | Bibliothek |
|---|---|---|
| Argon2id | Passwort → Schlüsselableitung | argon2 (RustCrypto) |
| HKDF-SHA256 | Schlüssel → Unterschlüsselableitung | hkdf (RustCrypto) |
| AES-256-GCM | AEAD-Verschlüsselung | aes-gcm (RustCrypto) |
| XChaCha20-Poly1305 | AEAD-Verschlüsselung (alt) | chacha20poly1305 (RustCrypto) |
| HMAC-SHA256 | Dateiintegrität | hmac (RustCrypto) |
| CSPRNG | Zufallsgenerierung | getrandom (OS) |