Profundizando en los hash: Funciones, algoritmos y aplicaciones
¿Qué es un gestor de contraseñas derivativo?
En el mundo digital actual, la seguridad de las contraseñas es más importante que nunca. Debido a que los ciberdelincuentes están constantemente buscando nuevas formas de acceder a nuestras cuentas y robar nuestros datos, una de las mejores maneras de protegerse es usar contraseñas fuertes y únicas para cada cuenta.
Sin embargo, recordar contraseñas fuertes y únicas para todas nuestras cuentas puede ser difícil. Es por eso que el uso de gestores de contraseñas es una solución cada vez más popular. En forma general, los datos de autenticación en un gestor de contraseñas tradicional incorporan tanto el usuario como la contraseña en un único conjunto de datos que es encriptado con una contraseña maestra. El conocimiento de la contraseña maestra revela la totalidad de los datos de autenticación protegidos por el gestor tradicional y por tanto, un ataque dirigido a determinar un sólo dato crítico puede resultar en una falla catastrófica de seguridad.
LISTHASH implementa una nueva forma de administración de contraseñas que incorpora multiples puntos de control y permite una absoluta privacidad de los datos de autenticación del usuario. Empleando funciones de hash provee los mecanismos necesarios para crear contraseñas fuertes y seguras derivadas de datos provistos por el usuario en el proceso de generación de las contraseñas. Denominamos de esta manera a LISTHASH un gestor de contraseñas derivativo, ya que a partir de unos datos base se derivan de forma caótica pero determinista nuevos datos que son lo suficientemente complejos para su uso como contraseñas.
¿Qué es la derivación de contraseñas a partir de una semilla maestra?
La derivación de contraseñas a partir de una semilla maestra es un método para generar contraseñas seguras y únicas a partir de un solo dato secreto, conocido como semilla maestra. La semilla maestra puede ser una palabra, una frase, o una serie de datos cuya única condición es ser lo suficientemente largos y complejos para que sean difíciles de adivinar, pero que pueden ser de fácil recordación para el usuario.
Una vez se tiene una semilla maestra, se puede usar una función hash para generar contraseñas únicas para cada cuenta. Como ya hemos expuesto, una función hash es una función matemática que toma una entrada (en este caso, la semilla maestra) y la convierte en una salida (en este caso, la contraseña). La salida de la función hash es siempre la misma para la misma entrada, pero es imposible invertir la función para obtener la entrada a partir de la salida.
¿Cómo funcionan los hash para crear contraseñas?
Utilizar hash para crear contraseñas es una forma simple y efectiva de proteger datos de autenticación. Al combinar una frase, clave o conjunto de datos memorable con una función hash segura, se pueden crear contraseñas únicas y difíciles de adivinar que mantendrán sus datos a salvo de los ciberdelincuentes. El proceso básico a seguir es el siguiente:
1. Elegir una frase, clave o dato que representa una pieza de información que pueda ser fácil de recordar, pero que no es fácil de vincular al usuario, esta será la semilla.
2. Utilizar una función hash como SHA-256 para convertir la semilla en un valor hash. Este valor hash será una cadena de caracteres alfanuméricos única e irreconocible.
3. Agregar sal o "salting", para aumentar la seguridad. La sal es un valor secreto que se combina con la semilla antes de aplicar por segunda vez la función hash, esto hace que sea aún más difícil para los hackers descifrar la contraseña.
4. Mapear el resultado de la aplicación de la función de hash a una cadena de caráteres alfanuméricos que pueda ser empleada como contraseña.
¿Hay algún riesgo al usar la derivación de contraseñas a partir de una semilla maestra?
El principal riesgo de usar la derivación de contraseñas a partir de una semilla maestra es que si pierde su semilla maestra o no la recuerda, le será imposible acceder a sus cuentas. Por lo tanto, es importante elegir una semilla maestra que pueda ser recordada fácilmente y almacenarla en un lugar seguro.
Puntos de control de LISTHASH
Para lograr una absoluta privacidad y la generación de contraseñas fuertes y seguras, LISTHASH establece tres puntos de control en su proceso de derivación:
1. Semilla: Inicialmente, se utiliza una semilla que no solo proporciona un dato único y memorable, sino también el conjunto de caracteres que serán empleados por el gestor para la generación de contraseñas.
2. Listado de cuentas: Cada cuenta registrada en LISTHASH posee un identificador único y se representa con los datos de servicio, usuario y la longitud de la contraseña a generar.
3. Códigos secretos: Finalmente, para la generación, el usuario proporciona códigos secretos fáciles de recordar. Estos códigos tienen el papel de añadir "sal" a la obtención final de la contraseña, incrementando la incertidumbre del resultado de las funciones de hash.
Importante: No contar con la información específica en cualquiera de los puntos de control mencionados implica la imposibilidad de acceder a los datos de autenticación correctos. Por tanto, solo el conocimiento completo de los datos específicos en cada punto de control permitirá recuperar una contraseña. Este proceso garantiza que una vulneración de hasta dos puntos de control sea inútil para un atacante en su intento de obtener los datos de autenticación del usuario.
Además, los gestores de contraseñas convencionales proporcionan una señal clara a un atacante cuando logran comprometer la contraseña maestra, ya que solo el descifrado genera un resultado legible que permite acceder a los datos de autenticación. Por el contrario, los datos de control de LISTHASH siempre producen valores de autenticación legibles pero inválidos, ya que solo los datos precisos y correctos en cada punto de control coincidirán con un dato de autenticación válido. Un ataque de fuerza bruta en estas condiciones es inútil, ya que requiere probar cada combinación posible directamente en el servicio ligado a una cuenta, y este tipo de ataque se detiene al superar los errores admisibles por el servicio.
Con LISTHASH, el usuario del gestor no se ve obligado a renunciar a su privacidad ni a confiar la seguridad de sus datos a un servicio en la nube susceptible de ser hackeado.