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.
Interface (Reageren + Tauri)
- Kluis
- Mappen
- Zoekopdracht
- Generator
- Eenmalige codes
- Dashboard
- Synchroniseren
- Delen
- Browser-extensie
Roestkern (QubKey Core)
- .rkvey v5-formaat
- Argon2id-afleiding
- Geauthenticeerde encryptie
- Zoekindex
- Veilige commits
- Geheugen wissen
- Crash-herstel
.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)
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).
| Dreiging | Vector | QubKey-antwoord |
|---|---|---|
| Ongeautoriseerde bestandstoegang | Diefstal of kopie van .rkvey | AEAD-versleuteling + Argon2id-afleiding |
| Netwerkexfiltratie | Cloud-onderbreking / MITM | Local-first: QubKey uploadt uw geheimen niet |
| Gegevenscorruptie | Crash tijdens schrijven | Gevalideerde append-only commits + herstel bij opstarten |
| Kluismanipulatie | Handmatige bestandswijziging | AEAD-authenticatie per compartiment + checksums |
| Geheugenafbeelding (navigatie) | Kluis open, lijst / weergave | Geheimen blijven versleuteld tot u ze bekijkt |
| Zwak masterwachtwoord | Offline-pogingen | Gekalibreerde Argon2id (~500 ms) + entropiemeter |
| Wachtwoordhergebruik | Lekken op andere sites | Beveiligingsdashboard (lokale detectie) |
| Klembordlekken | Kopiëren van een geheim | Klembord-timeout (30 s) + wissen bij vergrendeling |
| Side-channel-aanval | Timing bij crypto-operaties | Constanttijd-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
| Gebied | Hoe QubKey uw gegevens beschermt |
|---|---|
| Gegevens in rust | AEAD (AES-256-GCM / XChaCha20), Argon2id-sleutel, eigen sleutels per compartiment |
| Kluisintegriteit | Gevalideerde append-only commits, checksums en atomische schrijfbewerkingen |
| Vertrouwelijkheid | Zero-knowledge: uw geheimen blijven versleuteld op uw apparaat |
| Vertraagde ontsleuteling | Lijst en weergave zonder geheimen; bekijken / kopiëren alleen on demand |
| Sleutelafleiding | Gekalibreerde Argon2id (~500 ms, 64 MB) ter bescherming van het masterwachtwoord |
| Applicatie | Geïsoleerde Rust-kern, UI via Tauri-IPC, zeroization bij vergrendeling |
| Browserextensie | Lokaal Native Messaging — de extensie krijgt nooit het masterwachtwoord |
| Sync | Optionele 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:
-
U beheert de toegang — masterwachtwoord en eventueel herstelsleutel sturen de kluistoegang. QubKey kan ze niet lezen of resetten.
-
Systeemintegratie — QubKey gebruikt uw OS-beveiliging: bestandsrechten, schijfversleuteling (FileVault, BitLocker, LUKS), veilige opslag (Keychain, Credential Manager) en procesisolatie.
-
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.
-
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.
-
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.