Sicherheit

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

KDF

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

Metadaten
Geheimnisse
Att. Manifest
AES-256-GCM

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)

Argon2idmaster_key (256 Bit) mit zufälligem Salt

HKDF-SHA256index_key für den B-Tree

HKDF-SHA256compartment_key pro Eintrag und Kompartimenttyp (Metadaten, Geheimnisse, Anhang…)

ParameterWertBeschreibungStandard
VariantArgon2idVon OWASP empfohlene Hybridvariante — resistent gegen GPU- und Side-Channel-Angriffe
Memory64 MBSpeicher pro Ableitung — erhöht die Hardwarekosten paralleler Angriffe65536 KB
Iterations3Durchläufe über den Speicher — Sicherheit/Leistung (~500 ms)
Parallelism4Parallele Threads
Output32 bytesLänge des abgeleiteten Schlüssels
Salt16 bytesZufä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

preamble
header.enc
btree_root.enc
btree_nodes.enc
core_meta.enc
protected_secrets.enc
attachment_manifest.enc
attachment_blob_*.enc
commit_N
footer (validated)

Strukturbeschreibung (v5):

  • preamble — Magic Bytes, Formatversion, Argon2id-Salt
  • header.enc — verschlüsselte Tresor-Metadaten (Name, Erstellungsdatum, Einstellungen)
  • index/ — verschlüsselter B-Tree für O(log-n)-Suche ohne Geheimnis-Entschlüsselung
  • compartments/ — AEAD-Blöcke nach Typ: Metadaten, geschützte Geheimnisse, Manifest, Anhänge
  • append/ — Commit-Region: neue Kompartimente + Index-Snapshot + validierter Footer

Integrität und Commits

Widerstandsfähigkeit

Append-only-Commits garantieren Integrität bei Unterbrechung:

  1. Neue Kompartimente werden ans Dateiende angehängt
  2. Ein verschlüsselter Index-Snapshot wird geschrieben
  3. Daten werden auf die Festplatte synchronisiert (fsync)
  4. 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

PrimitivVerwendungBibliothek
Argon2idPasswort → Schlüsselableitungargon2 (RustCrypto)
HKDF-SHA256Schlüssel → Unterschlüsselableitunghkdf (RustCrypto)
AES-256-GCMAEAD-Verschlüsselungaes-gcm (RustCrypto)
XChaCha20-Poly1305AEAD-Verschlüsselung (alt)chacha20poly1305 (RustCrypto)
HMAC-SHA256Dateiintegritäthmac (RustCrypto)
CSPRNGZufallsgenerierunggetrandom (OS)