Beveiliging

Beveiligingsarchitectuur

Rust/Tauri-stack, .rkvey-v5-formaat, compartimenten, vertraagde ontsleuteling en dreigingsmodel.

De beveiliging van QubKey is gebaseerd op een gelaagde architectuur en het principe van defense in depth: bestandssysteem, .rkvey-v5-formaat, cryptografie en de Rust-applicatiekern beschermen uw geheimen in elke fase — van opslag tot ontgrendeling.

Elke laag biedt een aanvullende garantie. Ontbreekt een systeembescherming (bijv. geen schijfversleuteling), dan beschermen de applicatie- en cryptolagen uw kluis nog steeds. Met formaat v5 worden de geheimen van een item alleen ontsleuteld wanneer u ze bekijkt of kopieert — niet bij het openen van de kluis en niet in de lijst.

UI

Interface (Reageren + Tauri)

  • Kluis
  • Mappen
  • Zoekopdracht
  • Generator
  • Eenmalige codes
  • Dashboard
  • Synchroniseren
  • Delen
  • Browser-extensie
Core

Roestkern (QubKey Core)

  • .rkvey v5-formaat
  • Argon2id-afleiding
  • Geauthenticeerde encryptie
  • Zoekindex
  • Veilige commits
  • Geheugen wissen
  • Crash-herstel
Storage

.rkvey v5-bestand op het bestandssysteem

  • Preambule
  • Gecodeerde koptekst
  • Gecodeerde index
  • Geheime compartimenten
  • Bijlagen
  • Geschiedenis vastleggen

Beveiligingslagen

Ontgrendelingsstroom

Ontgrendeling volgt een strikte pipeline: het masterwachtwoord gaat naar de Rust-kern, Argon2id leidt de mastersleutel af, subsleutels ontsleutelen header en B-Tree-index. Item-compartimenten (geheimen, bijlagen) blijven versleuteld en worden alleen on demand gelezen. Bij vergrendeling worden alle sleutels en geheimen uit het geheugen gewist.

Hoofdwachtwoord + Zout

.rkvey preambule (platte tekst)

  • Ingevoerd in Rust core (Tauri IPC) - nooit blootgesteld aan de WebView
  • Willekeurig zout opgeslagen in preambule (16 bytes)
KDF

Argon2id

  • 64 MB RAM · 3 iter · p=4 (standaard `KdfParams`)
  • GPU / ASIC-weerstand
  • Gekalibreerd ~250–500 ms, afhankelijk van platform

Hoofdsleutel

256 bits · `KeyManager::afleiden_master_sleutel`

Subsleutelafleiding

HKDF-SHA256(master, salt=bestand∥invoer, info=soort)

kop_sleutel

Veilige kop

index_sleutel

B-Tree-index

compartiment_sleutel

Compartimenten

AEAD-decodering

  • AES-256-GCM of XChaCha20-Poly1305
  • Koptekst · Index · Compartimenten (op aanvraag)

Geheugen na ontgrendelen

  • Lijst/weergave: alleen metadata
  • Geheimen en bijlagen worden alleen op verzoek gedecodeerd

Slot

  • `KeyManager::clear_keys()` + nul maken
  • Geheimen gewist en klembord gewist

Dreigingsmodel

QubKey is ontworpen voor de meest voorkomende dreigingsscenario's van een lokale manager. De tabel beschrijft aanvalsvector en ingebouwde tegenmaatregel (.rkvey-v5-formaat).

DreigingVectorQubKey-antwoord
Ongeautoriseerde bestandstoegangDiefstal of kopie van .rkveyAEAD-versleuteling + Argon2id-afleiding
NetwerkexfiltratieCloud-onderbreking / MITMLocal-first: QubKey uploadt uw geheimen niet
GegevenscorruptieCrash tijdens schrijvenGevalideerde append-only commits + herstel bij opstarten
KluismanipulatieHandmatige bestandswijzigingAEAD-authenticatie per compartiment + checksums
Geheugenafbeelding (navigatie)Kluis open, lijst / weergaveGeheimen blijven versleuteld tot u ze bekijkt
Zwak masterwachtwoordOffline-pogingenGekalibreerde Argon2id (~500 ms) + entropiemeter
WachtwoordhergebruikLekken op andere sitesBeveiligingsdashboard (lokale detectie)
KlembordlekkenKopiëren van een geheimKlembord-timeout (30 s) + wissen bij vergrendeling
Side-channel-aanvalTiming bij crypto-operatiesConstanttijd-implementaties (RustCrypto)

Best practices

Dit model dekt dreigingen af die QubKey rechtstreeks via zijn architectuur adresseert. Voor optimale bescherming combineert u QubKey met systeem-best practices: schijfversleuteling actief, actueel OS en sterk masterwachtwoord.

Geïntegreerde bescherming

GebiedHoe QubKey uw gegevens beschermt
Gegevens in rustAEAD (AES-256-GCM / XChaCha20), Argon2id-sleutel, eigen sleutels per compartiment
KluisintegriteitGevalideerde append-only commits, checksums en atomische schrijfbewerkingen
VertrouwelijkheidZero-knowledge: uw geheimen blijven versleuteld op uw apparaat
Vertraagde ontsleutelingLijst en weergave zonder geheimen; bekijken / kopiëren alleen on demand
SleutelafleidingGekalibreerde Argon2id (~500 ms, 64 MB) ter bescherming van het masterwachtwoord
ApplicatieGeïsoleerde Rust-kern, UI via Tauri-IPC, zeroization bij vergrendeling
BrowserextensieLokaal Native Messaging — de extensie krijgt nooit het masterwachtwoord
SyncOptionele versleutelde multi-apparaat-sync (cloud of self-host) of versleuteld .rkvey-bestand (cloud, USB, NAS)

Vertrouwensarchitectuur

Zero-knowledge

QubKey organiseert vertrouwen op meerdere aanvullende niveaus:

  1. U beheert de toegang — masterwachtwoord en eventueel herstelsleutel sturen de kluistoegang. QubKey kan ze niet lezen of resetten.

  2. Systeemintegratie — QubKey gebruikt uw OS-beveiliging: bestandsrechten, schijfversleuteling (FileVault, BitLocker, LUKS), veilige opslag (Keychain, Credential Manager) en procesisolatie.

  3. Rust- / UI-scheiding — Alle cryptografie draait in de Rust-kern met geheugenveiligheid op compiletijd. De React-UI communiceert via Tauri-IPC; de WebView heeft geen directe toegang tot het masterwachtwoord.

  4. Voorzichtig geheugenbeheer (v5) — Bij ontgrendeling worden alleen header en index ontsleuteld. Geheimen en bijlagen blijven versleuteld tot een expliciete actie (bekijken, kopiëren, downloaden). Bij vergrendeling: zeroization en leeg klembord.

  5. Browserextensie — Lokaal Native Messaging; de extensie krijgt nooit het masterwachtwoord.

Beschermingsfuncties

Automatische vergrendeling

Kluis wordt na configureerbare inactiviteit vergrendeld (standaard: 5 min.). Activeert zeroization en klembordwissen.

Vertraagde ontsleuteling

Geheimen van een item worden alleen ontsleuteld wanneer u ze bekijkt of kopieert. Lijst en weergave tonen geen beschermde velden.

Zeroization

Geheimen worden bij vergrendeling uit het RAM gewist (Rust-zeroize-crate); caches geleegd, alleen efemere ontsleuteling on demand.

Klembord-timeout

Klembord wordt na 30 seconden automatisch geleegd. Configureerbaar in de kluisinstellingen.