Cos'è Key Wrapping?
Il Key Wrapping è un'operazione crittografica che cifra una chiave (la chiave payload) usando un'altra chiave (la wrapping key o chiave di cifratura della chiave), fornendo riservatezza e protezione dell'integrità al materiale crittografico durante l'archiviazione o il trasporto.
Noto anche come: key wrap, AES-KW, key encryption key
Il Key Wrapping risolve un problema pratico nei sistemi crittografici: come proteggere le chiavi di cifratura stesse? Se una chiave di cifratura dei dati viene archiviata in chiaro, chiunque abbia accesso allo storage può usarla. Il Key Wrapping risolve questo problema cifrando la chiave dati con una wrapping key separata, creando una gerarchia di chiavi in cui l'accesso ai dati cifrati richiede sia la chiave wrapped sia i mezzi per de-wrapparla.
AES-KW (AES Key Wrap, definito nell'RFC 3394) è l'algoritmo di Key Wrapping più diffuso. A differenza delle modalità di cifratura generiche, AES-KW è progettato specificamente per il wrapping di materiale crittografico. Offre sia riservatezza sia integrità: se la wrapping key è errata o i dati wrapped sono stati manomessi, l'operazione di unwrap fallisce invece di produrre materiale crittografico scorretto. Questa verifica di integrità è fondamentale perché una chiave silenziosamente errata porterebbe a decifrare i dati producendo dati corrotti senza alcun messaggio di errore.
Il Key Wrapping è alla base dei sistemi di gestione delle chiavi, degli HSM (Hardware Security Module) e degli schemi di envelope encryption usati dai cloud provider. Nell'envelope encryption, i dati vengono cifrati con una data key, e la data key viene wrapped con una master key. Questo pattern consente una rotazione efficiente delle chiavi: quando la master key cambia, occorre ri-cifrare solo le piccole wrapped key, non l'intero dataset.
Wrap a data key with a passphrase
A random AES-256 data key gets encrypted by a wrapping key derived from your passphrase via PBKDF2. Change the unwrap passphrase to see AES-KW reject the wrong key cleanly.
This is exactly the flow Vaulted runs when you set a passphrase. The wrapping key never leaves your browser; only the wrapped key and salt travel — in the URL fragment, so the server sees neither.
Come Vaulted usa Key Wrapping
Vaulted usa il Key Wrapping AES-KW quando viene impostata una passphrase su un segreto. Il flusso funziona così: il browser genera una chiave AES-256-GCM casuale per cifrare il segreto, poi deriva una wrapping key dalla passphrase usando PBKDF2. La chiave AES-256-GCM viene wrapped (cifrata) con AES-KW e la wrapping key derivata. La wrapped key, il salt e l'IV vengono inclusi nel frammento dell'URL. Il destinatario inserisce la passphrase, rideriva la wrapping key tramite PBKDF2, de-wappa la chiave AES-256-GCM e decifra il segreto.