En términos generales: sí, debería. La "sal" en ??? - CTR steram ciphers es en realidad el IV / NONCE utilizado para generar la corriente XOR. Como lo indica el nombre (NONCE = Número usado una vez), debe ser único y tener una cantidad razonable de entropía.
En una secuencia de cifrado no hay mensajes. Eso significa que el NONCE es teóricamente único por sesión / conexión. Pero si esa conexión permanece activa durante un período de tiempo más largo (por ejemplo, varias horas) y / o se transfieren mayores cantidades de datos con el mismo NONCE (por ejemplo, 100 MB y más), el cifrado de flujo puede llegar a ser sospechoso de criptoanálisis (según el tamaño de clave, la entropía de la NONCE y el algoritmo de cifrado en uso).
La mayoría de los protocolos tipo SSL (incluido el estándar TLS) sugieren que se regenere el valor NONCE cada X minutos o cada Y bytes transferidos.
Este es un ejemplo que consideraría lo suficientemente seguro para datos confidenciales:
- CTR AES-192 o AES-256
- NONCE se generó utilizando un CSPRNG (ver FIPS-140) con semilla de alta entropía (por ejemplo, / dev / random)
- Lo mismo ocurre con los números aleatorios de intercambio de claves
- Cada 2 horas o cada 200 MB intercambian una nueva clave y un nuevo NONCE.
En la práctica, tendrá que elegir estos parámetros si no confía en una conexión TLS estándar.
openssl rand_bytes () es suficiente para generar NONCEs.