¿Qué es el «salting»?
• La técnica de «salting» permite que el hash de la contraseña sea más seguro. Si dos
usuarios tienen la misma contraseña, también tendrán los mismos hashes de la
contraseña. Un salt, que es una cadena aleatoria de caracteres, es una entrada
adicional a la contraseña antes del hash. Esto crea un resultado distinto de hash para
las dos contraseñas como se muestra en la figura. Una base de datos almacena el
hash y el salt.
• En la figura, la misma contraseña genera un hash diferente porque el «salt» en cada
instancia es diferente. El «salt» no tiene que ser secreto ya que es un número
aleatorio.
Prevención de ataques
La técnica de «salting» evita que un atacante utilice un ataque de diccionario para
adivinar las contraseñas.
Tablas de búsqueda
Una tabla de búsqueda almacena los hashes previamente computados de las contraseñas
en un diccionario de contraseñas junto con la contraseña correspondiente.
Tablas de búsqueda inversas
Este ataque permite que el delincuente cibernético inicie un ataque de diccionario o de
fuerza bruta en muchos hashes sin la tabla de búsqueda previamente computada. El
delincuente cibernético crea una tabla de búsqueda que grafica cada hash de
contraseña de la base de datos de la cuenta vulnerada a una lista de usuarios.
Tablas de arcoíris
Las tablas de arcoíris sacrifican la velocidad de descifrado de hash para que las tablas
de búsqueda sean más pequeñas. Una tabla más pequeña significa que la tabla puede
almacenar las soluciones para más hashes en la misma cantidad de espacio.
Implementación de la técnica de «salting»
Para implementar correctamente la técnica de «salting», utilice las siguientes
recomendaciones:
El salt debe ser único para cada contraseña de usuario.
Nunca reutilice un salt.
La longitud del salt debe coincidir con la extensión del resultado de la función
de hash.
Siempre realice el hash en el servidor en una aplicación web.
¿Qué es un HMAC?
El siguiente paso en prevenir que un delincuentes cibernético
inicie un ataque de diccionario o un ataque de fuerza bruta en
un hash es agregar una clave secreta al hash. Solo la persona
que conoce el hash puede validar una contraseña.
Una manera de lograrlo es incluir la clave secreta en el hash
mediante un algoritmo de hash llamado código de autenticación
de mensajes de hash con clave (HMAC o KHMAC).
Los HMAC utilizan una clave secreta adicional como entrada a la función de hash. El uso
de HMAC va un paso más allá de garantizar la integridad al incorporar la autenticación.
Funcionamiento del HMAC
Considere un ejemplo en el que un emisor desea asegurarse de que un
mensaje permanezca sin cambios y en tránsito, y desea proporcionar una
manera de que el receptor autentique el origen del mensaje.
el algoritmo de hash y calcula el compendio o huella digital de HMAC de
longitud fija.
En la Figura 2, el dispositivo receptor elimina la huella digital del mensaje y
utiliza el mensaje de texto simple con su clave secreta como entrada a la
misma función de hash. Si el dispositivo receptor calcula una huella digital
igual a la huella enviada, el mensaje aún se encontrará en su formato
original.
Aplicación del uso de HMAC
Como se muestra en la figura, los productos de Cisco utilizan el hash para la
autenticación de la entidad, la integridad de datos y para la autenticidad de
datos:
Los routers de Cisco IOS utilizan el hash con las claves secretas utilizando el
HMAC como la manera de agregar información de autenticación a las
actualizaciones de protocolo de routing.
Los gateways y los clientes de IPsec utilizan algoritmos de hash, como MD5 y
SHA-1 en el modo HMAC, para proporcionar integridad y autenticidad del
paquete.
Las imágenes del software de Cisco en Cisco.com tienen un checksum basado
en MD5 disponible para que los clientes puedan verificar la integridad de las
imágenes descargadas.