Glossario

Cos'è Nonce?

Un nonce (number used once) è un valore univoco, tipicamente casuale o sequenziale, che viene usato esattamente una volta in un'operazione crittografica per garantire che input identici producano output diversi, prevenendo attacchi di replay e analisi di pattern.

Noto anche come: number used once, cryptographic nonce

Se cifri lo stesso plaintext con la stessa chiave e senza nonce, ottieni ogni volta un ciphertext identico. Un attaccante che osserva più messaggi potrebbe rilevare degli schemi — ciphertext identici rivelano che è stato inviato lo stesso messaggio, anche senza decifrarlo. Un nonce elimina questo problema introducendo un valore univoco in ogni operazione di cifratura, garantendo che lo stesso plaintext cifrato con la stessa chiave produca sempre ciphertext diversi.

I requisiti di sicurezza per i nonce variano in base all'algoritmo. Alcuni algoritmi (come AES-GCM) richiedono che un nonce non venga mai riutilizzato con la stessa chiave — il riutilizzo può compromettere catastroficamente sia la riservatezza che l'autenticazione. Per questi algoritmi, i nonce casuali devono essere abbastanza grandi da rendere le collisioni accidentali trascurabilmente improbabili. Un nonce casuale a 96 bit (come usato in AES-GCM) fornisce una resistenza alle collisioni sufficiente per un massimo di circa 2^32 cifrature sotto una singola chiave.

I nonce appaiono nei protocolli crittografici con nomi diversi. In AES-GCM vengono chiamati vettori di inizializzazione, nell'autenticazione challenge-response sono sfide, e nella blockchain sono mining nonce. Il denominatore comune è l'unicità: il valore non deve ripetersi nel contesto in cui viene usato.

Come Vaulted usa Nonce

Ogni segreto cifrato con Vaulted usa un nonce casuale univoco da 12 byte (96 bit), generato dal generatore di numeri casuali crittograficamente sicuro della Web Crypto API. Questo nonce funge da vettore di inizializzazione per la cifratura AES-256-GCM. Viene archiviato insieme al ciphertext sul server e trasmesso al destinatario per la decifratura. Poiché Vaulted genera anche una chiave univoca per ogni segreto, la coppia chiave-nonce è sempre unica.