¿Cómo diferenciamos entre el vector de salado, nonce e inicialización?

Esto no es definitivo, sino una revisión de nivel superior. No soy un experto en criptografía y estoy aprendiendo mucho más sobre esto, especialmente cuando tengo preguntas directas.

Salar un hash simplemente significa agregar algunos datos aleatorios al hash para que no sea tan simple que pueda adivinarse con una tabla de arco iris bien definida o un ataque de diccionario.

Un nonce es cuando se agrega un nuevo número secuencial para que no se pueda reproducir una contraseña. De hecho, el nonce ni siquiera necesita enviarse cada vez con la contraseña, porque una vez que comienza el intercambio, los datos secuenciales pueden derivarse matemáticamente en cada extremo y el paquete puede permanecer más pequeño.

Un vector de inicialización a menudo se denomina nonce aleatorio. Hay ventajas y desventajas en esto. Una ventaja sería que la aleatoriedad es menos probable de adivinar. Las desventajas son que los paquetes siguen siendo voluminosos y lentos y no hay forma de realizar un seguimiento de un nonce usado, por lo que es posible realizar repeticiones.

Entonces, ¿cómo los usamos?

Bueno, cuando una base de datos almacena una contraseña, también puede almacenar el hash salado de esa contraseña para reducir la probabilidad de que se rompa la contraseña robada. De hecho, la “sal” se puede almacenar al aire libre porque el truco es saber cómo se aplica al hash de contraseña para saber cómo descifrarlo. No es una hazaña imposible, solo lo hace más difícil y menos atractivo para el crack.

Ahora, cuando quiero transmitir esa contraseña, necesito una forma de mantenerla segura. Si envío a mi objetivo un nonce, o un número utilizado solo una vez, antes de mi contraseña, luego mi contraseña cifrada, puedo frustrar los ataques de repetición. Una repetición es cuando la información es capturada y repetida desde una intercepción a mitad de camino por alguien que escucha las transmisiones. Una vez que el cliente y el servidor legítimos conocen el nonce base, pueden calcular con cada transmisión cuál debe ser cada nuevo hash agregando la siguiente iteración y volviendo a calcular el hash.

Un IV funciona de manera similar a un nonce, pero la aleatoriedad en realidad hace posible que alguien capture la contraseña, vuelva a calcular con un número aleatorio y vuelva a enviar. Si el destinatario ya ha utilizado ese número, entonces puede detectar el ataque, pero si no, puede aceptarlo y la sesión ahora está secuestrada.