Architettura di sicurezza
Stack Rust/Tauri, formato .rkvey v5, compartimenti e decifratura differita per proteggere i tuoi segreti.
La sicurezza di QubKey si basa su un'architettura a strati e sul principio della difesa in profondità: il file system, il formato .rkvey v5, la crittografia e il nucleo applicativo Rust proteggono i tuoi segreti in ogni fase — dall'archiviazione allo sblocco.
Ogni strato offre una garanzia complementare. Se manca una protezione di sistema (ad esempio, nessuna crittografia del disco), gli strati applicativo e crittografico proteggono comunque il tuo vault. Con il formato v5, i segreti di una voce vengono decifrati solo quando li visualizzi o copi — non all'apertura del vault e non nell'elenco.
Interfaccia (Reagire + Tauri)
- Volta
- Cartelle
- Ricerca
- Generatore
- Codici monouso
- Pannello di controllo
- Sincronizzazione
- Condivisione
- Estensione del browser
Nucleo antiruggine (QubKey Core)
- Formato .rkvey v5
- Derivazione Argon2id
- Crittografia autenticata
- Indice di ricerca
- Impegni sicuri
- Cancellazione della memoria
- Recupero da incidente
File .rkvey v5 sul file system
- Preambolo
- Intestazione crittografata
- Indice crittografato
- Scompartimenti segreti
- Allegati
- Commetti la cronologia
Strati di sicurezza
Flusso di sblocco
Lo sblocco segue una pipeline rigorosa: la password principale arriva al nucleo Rust, Argon2id deriva la chiave principale, le sottochiavi decifrano l'intestazione e l'indice B-Tree. I compartimenti delle voci (segreti, allegati) restano crittografati e vengono letti solo quando necessario. Al blocco, tutte le chiavi e i segreti vengono cancellati dalla memoria.
Password principale + Sale
.rkvey preambolo (testo in chiaro)
- Inserito nel core Rust (Tauri IPC) — mai esposto a WebView
- Sale casuale memorizzato nel preambolo (16 byte)
Argon2id
- 64 MB di RAM · 3 iter · p=4 (predefinito `KdfParams`)
- Resistenza GPU/ASIC
- Calibrato ~250–500 ms a seconda della piattaforma
Chiave maestra
256 bit · `KeyManager::derive_master_key`
Derivazione della sottochiave
HKDF-SHA256(master, salt=file∥entry, info=tipo)
chiave_intestazione
Intestazione protetta
chiave_indice
Indice B-Tree
compartimento_chiave
Compartimenti
Decrittazione dell'AEAD
- AES-256-GCM o XChaCha20-Poly1305
- Testata · Indice · Scomparti (su richiesta)
Memoria dopo lo sblocco
- Elenco/visualizzazione: solo metadati
- Segreti e allegati decifrati solo su richiesta
Serratura
- `KeyManager::clear_keys()` + azzera
- I segreti sono stati cancellati e gli appunti cancellati
Modello delle minacce
QubKey è progettato per gli scenari di minaccia più comuni di un gestore locale. La tabella descrive il vettore di attacco e la contromisura integrata (formato .rkvey v5).
| Minaccia | Vettore | Risposta di QubKey |
|---|---|---|
| Accesso non autorizzato al file | Furto o copia di .rkvey | Crittografia AEAD + derivazione Argon2id |
| Esfiltrazione di rete | Intercettazione cloud / MITM | Local-first: QubKey non carica i tuoi segreti |
| Corruzione dei dati | Crash durante la scrittura | Commit append-only validati + recupero all'avvio |
| Manomissione del vault | Modifica manuale del file | Autenticazione AEAD per compartimento + checksum |
| Dump di memoria (navigazione) | Vault aperto, elenco / vista | I segreti restano crittografati finché non li visualizzi |
| Password principale debole | Tentativi offline | Argon2id calibrato (~500 ms) + misuratore di entropia |
| Riutilizzo password | Leak su altri siti | Dashboard di sicurezza (rilevamento locale) |
| Perdite dagli appunti | Copiare un segreto | Timeout degli appunti (30 s) + cancellazione al blocco |
| Attacco side-channel | Timing nelle operazioni critto | Implementazioni a tempo costante (RustCrypto) |
Buone pratiche
Questo modello copre le minacce che QubKey affronta direttamente tramite la sua architettura. Per una protezione ottimale, combina QubKey con le buone pratiche di sistema: crittografia del disco attiva, SO aggiornato e password principale robusta.
Protezione integrata
| Area | Come QubKey protegge i tuoi dati |
|---|---|
| Dati a riposo | AEAD (AES-256-GCM / XChaCha20), chiave Argon2id, chiavi dedicate per compartimento |
| Integrità del vault | Commit append-only validati, checksum e scritture atomiche |
| Riservatezza | Zero-knowledge: i tuoi segreti restano crittografati sul tuo dispositivo |
| Decifratura differita | Elenco e vista senza segreti; mostra / copia solo su richiesta |
| Derivazione chiavi | Argon2id calibrato (~500 ms, 64 MB) per proteggere la password principale |
| Applicazione | Nucleo Rust isolato, interfaccia via Tauri-IPC, Zeroization al blocco |
| Estensione browser | Native Messaging locale — l'estensione non riceve mai la password principale |
| Sincronizzazione | Sync multi-dispositivo crittografato opzionale (cloud o self-host) o file .rkvey crittografato (cloud, USB, NAS) |
Architettura della fiducia
Zero-knowledge
QubKey organizza la fiducia su più livelli complementari:
-
Controlli tu l'accesso — la password principale e, se applicabile, la chiave di recupero controllano l'accesso al vault. QubKey non può leggerle né reimpostarle.
-
Integrazione di sistema — QubKey sfrutta la sicurezza del tuo SO: permessi file, crittografia del disco (FileVault, BitLocker, LUKS), archivio sicuro (Keychain, Credential Manager) e isolamento dei processi.
-
Separazione Rust / interfaccia — Tutta la crittografia avviene nel nucleo Rust con sicurezza della memoria a compile-time. L'interfaccia React comunica via Tauri-IPC; il WebView non ha accesso diretto alla password principale.
-
Gestione prudente della memoria (v5) — Allo sblocco, vengono decifrati solo intestazione e indice. Segreti e allegati restano crittografati fino a un'azione esplicita (visualizza, copia, scarica). Al blocco: Zeroization e appunti vuoti.
-
Estensione browser — Native Messaging locale; l'estensione non riceve mai la password principale.
Funzioni di protezione
Blocco automatico
Il vault si blocca dopo inattività configurabile (predefinito: 5 min). Attiva Zeroization e cancellazione degli appunti.
Decifratura differita
I segreti di una voce vengono decifrati solo quando li visualizzi o copi. Elenco e vista non mostrano campi protetti.
Zeroization
I segreti vengono cancellati dalla RAM al blocco (crate Rust zeroize); cache svuotate, decifratura effimera solo su richiesta.
Timeout degli appunti
Gli appunti vengono svuotati automaticamente dopo 30 secondi. Configurabile nelle impostazioni del vault.