Sicurezza

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.

UI

Interfaccia (Reagire + Tauri)

  • Volta
  • Cartelle
  • Ricerca
  • Generatore
  • Codici monouso
  • Pannello di controllo
  • Sincronizzazione
  • Condivisione
  • Estensione del browser
Core

Nucleo antiruggine (QubKey Core)

  • Formato .rkvey v5
  • Derivazione Argon2id
  • Crittografia autenticata
  • Indice di ricerca
  • Impegni sicuri
  • Cancellazione della memoria
  • Recupero da incidente
Storage

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)
KDF

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).

MinacciaVettoreRisposta di QubKey
Accesso non autorizzato al fileFurto o copia di .rkveyCrittografia AEAD + derivazione Argon2id
Esfiltrazione di reteIntercettazione cloud / MITMLocal-first: QubKey non carica i tuoi segreti
Corruzione dei datiCrash durante la scritturaCommit append-only validati + recupero all'avvio
Manomissione del vaultModifica manuale del fileAutenticazione AEAD per compartimento + checksum
Dump di memoria (navigazione)Vault aperto, elenco / vistaI segreti restano crittografati finché non li visualizzi
Password principale deboleTentativi offlineArgon2id calibrato (~500 ms) + misuratore di entropia
Riutilizzo passwordLeak su altri sitiDashboard di sicurezza (rilevamento locale)
Perdite dagli appuntiCopiare un segretoTimeout degli appunti (30 s) + cancellazione al blocco
Attacco side-channelTiming nelle operazioni crittoImplementazioni 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

AreaCome QubKey protegge i tuoi dati
Dati a riposoAEAD (AES-256-GCM / XChaCha20), chiave Argon2id, chiavi dedicate per compartimento
Integrità del vaultCommit append-only validati, checksum e scritture atomiche
RiservatezzaZero-knowledge: i tuoi segreti restano crittografati sul tuo dispositivo
Decifratura differitaElenco e vista senza segreti; mostra / copia solo su richiesta
Derivazione chiaviArgon2id calibrato (~500 ms, 64 MB) per proteggere la password principale
ApplicazioneNucleo Rust isolato, interfaccia via Tauri-IPC, Zeroization al blocco
Estensione browserNative Messaging locale — l'estensione non riceve mai la password principale
SincronizzazioneSync 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.