Hash vs cifrado: cómo deben guardarse las contraseñas en un servidor

Escrito por Rubén Velasco

A lo largo de todo 2018, y lo que llevamos de 2019, estamos viendo cómo piratas informáticos están haciéndose con grandes bases de datos de contraseñas de webs y plataformas online, bases de datos que están poniendo a la venta en la Deep Web y que están poniendo en riesgo la seguridad de todos los usuarios de Internet. La mayoría de estos robos de datos se deben, o bien a una mala configuración del servidor, o bien a que las compañías, como le ha ocurrido a Facebook, están guardando las contraseñas en texto plano de manera negligente.

Desde luego, la forma más insegura y menos recomendable de guardar las contraseñas es hacerlo en texto plano, algo que no se nos debería pasar por la cabeza pero que a día de hoy aún muchas webs lo hacen. En texto plano, la contraseña se guarda tal cual en la base de datos, por ejemplo, si la contraseña es «RedesZone», esta se guarda como «RedesZone» en el servidor, por lo tanto, cualquiera que tenga acceso a él, ya sea interno como externo, puede hacerse con esta.

Login Gmail

¿El cifrado refuerza la seguridad de las contraseñas?

En un principio, el cifrado impide que las contraseñas se puedan leer tal cual, aunque la verdad es que tampoco ofrecen la máxima seguridad. Para cifrar una contraseña se utiliza una clave de cifrado que, aunque en un principio las protegen, si el pirata informático la adivina o roba de cualquier otro sitio, no servirá de nada, ya que podrían descifrarse sin demasiada dificultad.

El cifrado está un paso por delante en cuanto a la seguridad de las contraseñas, aunque es insuficiente.

El hash es un cifrado irreversible

Cuando un servidor utiliza hash para guardar las contraseñas significa que está utilizando un tipo de cifrado de una sola dirección, es decir, irreversible. Cuando el usuario introduce la contraseña por primera vez, esta se cifra con un algoritmo que no permite la vuelta atrás y se guarda en la base de datos de forma segura.

A la hora de iniciar sesión, el usuario introduce la contraseña en la página web, esta se cifra de nuevo y se compara si el hash coincide. Si es así se permite el acceso, si no coincide se rechaza.

Si un pirata accede a la base de datos de una web, este puede robar las contraseñas en formato hash, viendo solo una serie de letras y números sin sentido y que, además, no se pueden descifrar, en teoría. Si hemos utilizado una contraseña débil, mediante fuerza bruta se podría llegar a deducir, pero si esta era robusta entonces no hay de qué preocuparse.

Técnicas de hash mejoradas para la seguridad de las contraseñas

Partiendo de que el hash es más seguro que las contraseñas en texto plano o cifradas, también existen otras técnicas mediante las cuales es posible guardar estas claves de manera aún más segura. Una de estas técnicas es, por ejemplo, añadiendo un pequeño texto plano al principio de la clave ya guardada en hash que dificulte mucho más los ataques de fuerza bruta.

Otra técnica en hacer un doble hash de las contraseñas que, aunque aumenta la seguridad, se pierde bastante rendimiento en el proceso. Por último, también se suelen recurrir a técnicas que mezclan varias de las anteriores, todo con el fin de evitar que los piratas informáticos pongan en peligro las contraseñas de los usuarios.

¿Qué podemos hacer nosotros para reforzar la seguridad de nuestras claves de acceso?

Guardarlas de forma segura es responsabilidad de los propios administradores de la web o plataforma donde nos registramos. Por desgracia, nosotros no podemos hacer mucho para mejorar la seguridad si la web, por ejemplo, las guarda en texto plano.

Lo único que depende de nosotros es usar una contraseña segura y robusta (para impedir que mediante un ataque de fuerza bruta se pueda recuperar nuestra clave), además de asegurarnos de usar contraseñas únicas y diferentes de manera que, si roban la clave de un sitio web, los demás sigan estando protegidos.

¿Sueles cuidar la seguridad de las contraseñas cuando te registras en una página web?

Vía > mte