In generale: sì, dovrebbe. Il "sale" in ??? - CTR steram ciphers è in realtà l'IV / NONCE utilizzato per generare il flusso XOR. Come indicato dal nome (NONCE = Numero usato una volta), dovrebbe essere univoco e avere una quantità ragionevole di entropia.
In un codice di streaming non ci sono messaggi. Ciò significa che NONCE è teoricamente univoco per sessione / connessione. Ma se quella connessione rimane attiva per un periodo di tempo più lungo (diciamo diverse ore) e / o quantità maggiori di dati vengono trasferite con la stessa NONCE (ad esempio 100 MB e più) il codice stream può diventare sospetto per la criptoanalisi (a seconda di keysize, entropia degli algoritmi NONCE e Cipher in uso).
La maggior parte dei protocolli SSL-like (incluso lo standard TLS) suggerisce di rigenerare il NONCE ogni X minuti o ogni Y byte trasferiti.
Ecco un esempio che considererei abbastanza sicuro per i dati sensibili:
- AES-192 o AES-256 CTR
- NONCE creato utilizzando un CSPRNG (vedi FIPS-140) con seme ad alta entropia (ad esempio / dev / random)
- Lo stesso vale per i numeri casuali di Scambio chiavi
- Ogni 2 ore o ogni 200 MB si scambiano una nuova chiave e una nuova NONCE.
In pratica, dovrai scegliere autonomamente questi parametri se non ti stai affidando a una connessione TLS standard.
openssl rand_bytes () è sufficiente per generare NONCE.