Modello di sicurezza

Ciò che non possiamo vedere, non possiamo perderlo.

Rempar è progettato perché una compromissione completa del server non riveli alcun segreto. Ecco come, senza giri di parole.

Derivazione della chiave

La password principale viene normalizzata (NFKC) e poi derivata con Argon2id. Da essa si ricavano due sottochiavi tramite HKDF: una per autenticarsi, una per avvolgere la chiave della cassaforte. L'una non permette mai di risalire all'altra.

master_key = Argon2id(password, salt, m=65536 KiB, t=3, p=4)
auth_key   = HKDF(master_key, "rempart/auth/v1")
wrap_key   = HKDF(master_key, "rempart/wrap/v1")

Chiave per elemento

Ogni scheda ha una chiave casuale di 32 byte, sigillata dalla chiave della cassaforte. Il contenuto è cifrato con XChaCha20-Poly1305 e l'identificativo della scheda è legato nei dati autenticati.

blob = { k: seal(vault_key, item_key), c: seal(item_key, content) }

Conoscenza zero

Il server memorizza l'hash di auth_key, i parametri pubblici del KDF e blob opachi. Non conosce né password, né chiavi, né nomi di elementi. Il pre-login restituisce un sale fittizio deterministico per le e-mail sconosciute: nessuna enumerazione degli account.

Account e dispositivi

Token di accesso per dispositivo, token di aggiornamento a rotazione. Un token riutilizzato revoca il dispositivo. La 2FA TOTP (Google Authenticator) protegge l'accesso. Può revocare un dispositivo perso da qualsiasi altro.

Kit di emergenza

32 byte casuali mostrati una sola volta in Crockford base32. Una copia della chiave della cassaforte viene sigillata con esso. Senza password principale e senza kit, nulla è recuperabile, da nessuno.

Gesti di sicurezza

Segreti mascherati per impostazione predefinita, mascherati di nuovo dopo 30 s. Appunti svuotati dopo 30 s. Blocco dopo 5 min, in sospensione e alla chiusura, con cancellazione della chiave dalla memoria. Ritardi progressivi dopo un errore: 30 s, 1 min, 5 min. Nessuna eliminazione silenziosa.

Ciò che il server non vede mai

    • La Sua password principale
    • La chiave principale, la chiave di avvolgimento e la chiave della cassaforte
    • Il contenuto o il nome di un elemento
    • Il Suo kit di emergenza
    • Più di 5 caratteri dell'impronta durante una verifica di violazione