seegongsik
Mis palabras
Seguridad

cómo Qué es el salting de contraseñas

La lección pasada aprendimos que una contraseña no se guarda tal cual sino convertida en hash. Pero, qué pasa si dos personas usan la misma contraseña? La misma contraseña da el mismo hash. Si dos valores idénticos quedan uno al lado del otro en la lista guardada de hashes, queda al descubierto que dos personas comparten contraseña. Por eso hace falta una forma de mezclar una pizca distinta para cada persona.

01

La misma contraseña se vuelve el mismo hash

Un hash da siempre el mismo resultado para la misma entrada.
Por eso justamente, al volver a introducir la misma contraseña,
se puede comparar con el hash guardado.
Pero esta propiedad arroja una sombra.
Si dos personas usan la misma contraseña,
sus dos hashes salen iguales también.
Con solo mirar la lista guardada de hashes,
si hay valores idénticos uno al lado del otro,
se nota que las contraseñas son iguales.
Quizá no sepas la contraseña misma, pero el hecho de que coinciden se filtra.

persona Aelige una contrasena
persona Belige una contrasena
hashes guardados
1f8ba1f8ba
misma contrasena, así los hashes salen identicos uno junto al otro

Pon las contraseñas de las dos personas iguales o distintas. Cuando coinciden, los hashes salen idénticos, uno junto al otro.

Al elegir la misma contraseña,
los dos hashes se veían idénticos.
Solo con los hashes, la igualdad se nota de una.
Por qué es eso un problema?
Aprendimos que un hash es difícil de revertir,
pero el punto de que el mismo valor da el mismo hash no cambia.
Entonces, qué pasa si alguien hashea contraseñas comunes
de antemano y las anota?

02

Por qué una tabla ya hecha es riesgosa

Las contraseñas de uso común son menos variadas de lo que crees.
Así que esas contraseñas
y sus hashes pueden anotarse de antemano, una línea cada una.
Con una tabla de búsqueda ya hecha a mano,
un hash guardado puede buscarse en la tabla
y la contraseña adivinarse de vuelta.
No es romper el hash en sí
sino comparar con respuestas escritas por adelantado.
Por eso una contraseña común corre más riesgo:
es más probable que ya esté en la tabla.

hashes guardados
toca un hash guardado
una tabla ya escrita
?1a3f7c
?4b8e21
?9d0c55

Toca un hash guardado. Fíjate en que si el mismo hash está en una tabla ya escrita, la contraseña puede adivinarse de vuelta.

Cuando un hash de la tabla coincidía con el guardado,
la contraseña de la casilla contigua quedaba al descubierto.
Un hash que no estaba en la tabla bloqueaba la adivinanza.
Aquí podemos captar el núcleo.
La raíz del riesgo es que la misma contraseña
siempre se vuelve el mismo hash.
Así aparece también la forma de bloquearlo.
Si se hace que la misma contraseña se hashee distinto por persona,
ninguna tabla ya hecha por sí sola puede coincidir.
Ese método es justamente el salting.

03

Añade una sal a la contraseña

Una sal es un valor pequeño fijado distinto para cada persona.
En vez de hashear la contraseña tal cual,
primero pegas la sal de esa persona a la contraseña.
Luego hasheas las dos combinadas.
Lo que importa es que la sal difiere por persona.
Una sal no es un secreto que ocultar.
Está bien guardarla justo al lado del hash,
porque saber solo la sal
no te deja saber la contraseña.
La sal hace una sola cosa: vuelve el hash distinto por persona.

persona A
apple+ __=apple
hash1f8ba
persona B
apple+ __=apple
hash1f8ba
por ahora solo se hashea la contrasena

Toca para añadir la sal de cada persona a la contraseña. La sal se pega a la contraseña, y luego esa combinación se hashea.

Añadir la sal cambió la propia entrada que alimenta el hash.
Aun con la misma contraseña,
si la sal pegada delante difiere,
los ingredientes que entran al hash difieren entre sí.
Aprendimos que un hash, con un cambio mínimo en la entrada,
da un resultado del todo distinto.
Así que si las sales difieren, los hashes no pueden sino diferir.
Ahora comparemos directamente cómo se ven los hashes guardados
cuando dos personas usan la misma contraseña.

04

Hasta la misma contraseña se vuelve un hash distinto

Recuerda cuando no había sal.
Los hashes de dos contraseñas idénticas eran iguales.
Enciende la sal y la historia cambia.
Aunque las contraseñas de dos personas sean iguales,
las sales difieren, así que los hashes guardados difieren entre sí.
Ahora, aun mirando la lista guardada de hashes,
no puedes distinguir quién usó la misma contraseña.
Además, una tabla ya hecha queda sin fuerza.
Esa tabla se hizo con hashes de contraseñas sin sal,
así que no coincide con un hash mezclado con sal.
Como la sal difiere por persona, en la práctica haría falta una tabla aparte para cada persona.

hashes guardados
persona A1f8baapple
persona B1f8baapple
tabla ya hechala tabla coincide, en riesgo
misma contrasena, así los hashes son identicos

Compara con la sal apagada y encendida. Apagada: misma contraseña, mismo hash. Encendida: hasta la misma contraseña tiene un hash distinto, y la tabla queda sin fuerza.

En cuanto la sal se encendió,
los dos hashes antes idénticos se partieron en valores distintos.
La tabla ya hecha tampoco coincidía más.
Una pequeña pizca resolvió dos cosas a la vez.
Bloquea tanto saber la misma contraseña solo con los hashes guardados
como rastrear contraseñas comunes de vuelta por una tabla.
Y lo hace sin ocultar ningún secreto nuevo,
solo añadiendo un valor que difiere por persona.
Ahora resumamos todo.

05

Resumamos

Reunido en una línea, es esto.
La misma contraseña se vuelve el mismo hash.
Así los hashes guardados revelan una contraseña compartida,
y una tabla ya hecha arriesga rastrear contraseñas comunes de vuelta.
La solución es añadir una sal por persona
a la contraseña antes de hacer el hash.
Una sal no es un secreto; solo necesita diferir por persona.
Añade una sal y hasta la misma contraseña da hashes todos distintos,
así la tabla queda sin fuerza y los hashes idénticos ya no aparecen.
Deshaz la trampa con sal, la misma contraseña en un hash distinto. Eso es el salting.

Toca los puntos clave en orden para repasar

Toca los puntos clave en orden para repasar. (misma contraseña es mismo hash -> el riesgo de una tabla ya hecha -> añade una sal -> hasta la misma contraseña un hash distinto)

Ahora sabes por qué la misma contraseña se vuelve una trampa,
y cómo una sola pizca de sal
deshace esa trampa.
Es elegante que sin ocultar más secretos,
solo haciendo que las cosas difieran por persona,
la defensa se vuelve mucho más firme.
Esta idea de crear a propósito una pequeña diferencia
la volverás a encontrar una y otra vez en seguridad.
La próxima, cómo se superponen estas protecciones
cada vez más estrechamente?
Sigamos explorando juntos.

En una líneaLa misma contraseña se vuelve el mismo hash. Así que con solo mirar los hashes guardados se puede saber quién usó la misma contraseña, y surge el riesgo de que una contraseña se adivine de vuelta con una tabla que lista de antemano contraseñas comunes y sus hashes. La solución es simple. Añade una pizca de un valor aleatorio, distinto por persona, a la contraseña antes de hacer el hash. Esta pizca se llama sal. Una sal no es un secreto; solo necesita diferir por persona. Añade una sal y hasta la misma contraseña da un hash del todo distinto. Entonces una tabla ya hecha deja de coincidir de un golpe, y los hashes guardados dejan de verse iguales. En resumen, la trampa donde la misma contraseña se vuelve el mismo hash se deshace con una sal por persona, haciendo de la misma contraseña un hash distinto. Eso es el salting.
Seguridad
¿Te fue útil? Apoyar seegongsik