Autenticación basada en contraseña: Eslabón débil en la autenticación

Las herramientas de robo de contraseñas demuestran debilidad para asegurar los servicios de almacenamiento en las nubes.

La tecnología se ha desarrollado tan rápidamente en la mayoría de las áreas de informática que es fácil pasar por alto las áreas que no se han desarrollado en las últimas décadas. La autenticación basada en contraseña es probablemente una de las funciones técnicas más importantes que todos usamos todos los días, sin embargo, no ha evolucionado mucho desde los primeros sistemas informáticos de usuarios múltiples. Seguimos usando esta forma arcaica de la autenticación de conveniencia, incluso cuando se desarrollan métodos más seguros. 

La Ley de Moore sigue su curso, así que continuamente ofrece procesadores más rápidos para romper las bases de datos de contraseñas en menos tiempo. Los pésimos resultados de este enfoque continuo en hacer de la seguridad algo común se demostraron con el robo de contraseñas de la red social LinkedIn, el servicio de radio streaming LastFM y el sitio de citas online eHarmony.

Estas violaciones demostraron un defecto potencialmente fatal en el uso de la autenticación de contraseñas para proteger los activos de la información de la nube. Mientras que las violaciones ocurrieron con servicios en la nube de los consumidores, los proveedores comerciales de nubes a menudo utilizaban la misma tecnología.

En consecuencia, las empresas que quieren guardar de forma segura su información confidencial con un proveedor basado en la nube tendrán que entender no sólo lo que tipo de autenticación de nube se está usando, sino la forma en que se implementa la autentificación detrás de las escenas. Este conocimiento, junto con una comprensión de las funciones de cifrado y métodos de ataque, ayudará a la empresa a comprender verdaderamente el riesgo de usar un proveedor de nube.

Probando la autentificación de nube basada en contraseña

Los proveedores de nube tienen muchas opciones disponibles para almacenar de forma segura la información de las contraseñas pero la mayoría utiliza las mismas bibliotecas de código abierto hash. Este es el caso de LinkedIn, LastFM, eHarmony y probablemente muchos otros sitios también. Un proveedor de nube siguiendo este modelo sólo almacena una versión cifrada de la clave utilizando un hash criptográfico unidireccional.

Hay algunas pruebas sencillas para comprobar que el proveedor de la nube está utilizando algún tipo de cifrado de contraseñas. La primera prueba consiste en solicitar un restablecimiento de contraseña. Si la contraseña es enviada de vuelta en texto claro, eso es un fracaso evidente que muestra que el proveedor almacena las contraseña en texto plano sin ningún tipo de encripción. La otra prueba es simplemente examinar los caracteres que se pueden utilizar para crear la contraseña. Si el sistema restringe los caracteres especiales que se utilizan en las contraseñas, es una buena posibilidad de que almacena las contraseñas en texto claro. La razón de esto es que las bases de datos SQL interpretan algunos caracteres especiales como funciones especiales y no simplemente como datos, por lo que necesitan ser restringidos. Un sistema que falla en cualquiera de estas pruebas no debe ser guardián de los datos confidenciales.

Hashing de contraseñas

Las herramientas de hashing están integradas en las distribuciones de Linux y ofrecen una buena plataforma para la comprensión de cifrado de contraseñas. Estas herramientas están disponibles para Windows y para los que no se sienten cómodos con la línea de comandos de Linux. Escriba lo siguiente en un símbolo del sistema en su distribución de Linux favorita para generar un hash MD5 cifrado:

echo –n 'asdfghj'|md5sum>password.txt

Esta combinación de comandos envía la cadena de texto "asdfghj" mediante el comando md5sum y redirige la salida a password.txt. La cadena de texto "asdfghj" ahora debe estar representada por el hash cifrado de "c83b2d5bb1fb4d93d9d064593ed6eea2". Así es como la contraseña estaría representada en la base de datos de un proveedor de nube, como eHarmony. El proveedor de la nube no sabe cuál es la clave original ni puede revertir la encripción para recuperar la contraseña.

Aquí es donde la Ley de Moore se convierte en un perjuicio en vez de una ventaja. El algoritmo unidireccional hash cifrado se concibió cuando los procesadores carecían de las prestaciones necesarias para calcular todas las combinaciones posibles en un tiempo razonable. En el pasado, la única manera de atacar estos hash era el uso de fuerza bruta, lo que llevaba meses o años. Hoy en día, las tablas de hashes cifrados que abarcan todas las posibles combinaciones están disponibles gratuitamente para su descarga. Un ataque a la autenticación basada en contraseñas se convierte en una función simple de comparación entre las tablas y los hashes de destino. Esta es una tarea fácil para el hardware de la computación moderna.

Los programas modernos de craqueo utilizan tarjetas de gama alta de video para aumentar el rendimiento de la CPU para reducir aún más el tiempo necesario para hacer coincidir hashes. Estas unidades de procesamiento de gráficos (GPU) fueron diseñadas para hacer los cálculos de alto nivel necesarios para hacer los juegos modernos de video 3D. A menudo son más rápidos que la CPU en estas tareas predefinidas y contienen memoria mucho más rápida y canales más amplios I/O para facilitar el cálculo rápido. Este elemento de diseño tiene una consecuencia no deseada: Estos GPU son muy adecuados para el crackeo de cifrado. Por ejemplo, una sola GeForce GTX 680 contiene 1536 núcleos que pueden poner a trabajar las tablas de hashes.

Autenticación basada en crackeo de contraseñas

Evalué varias herramientas que utilizan las GPU a fin de acelerar el proceso. Cada herramienta tiene sus fortalezas y debilidades, algunos son fuertes en hashes SHA1 o MD5, mientras que otros se centran en la formación de grietas, Microsoft Windows NTLM utiliza hashes en las redes empresariales. Me concentré en Crytpohaze Ya que GRT Crack soporta múltiples tipos de algoritmos de hash, así como los dos fabricantes de GPU de AMD y NVIDIA. También funciona igual de bien en 64-bit Windows o Linux y es bastante fácil de configurar con las tablas. Incluso se puede ejecutar en una instancia de Amazon EC2, si el hardware adecuado no está disponible.

Cryptohaze GRT Crack utiliza las tablas descargables, pero sólo longitudes limitadas están disponibles debido a restricciones de tamaño. La longitud de la contraseña determina el número de posibles combinaciones de contraseñas; estos tamaños de archivo varían mucho de 41 GB para una tabla de siete caracteres a la friolera de 1,4 TB para una tabla de ocho caracteres. La adición de un solo carácter aumenta el tamaño del tamaño del archivo en más de 3.400%. El aumento masivo de tamaño muestra cómo la longitud de la contraseña es crucial cuando se utilizan servicios basados ​​en la nube; es mucho más rápido evaluar 41 GB de hashes que 1,4 TB.

Ahora tenía todos los componentes en lugar de ejecutar Cryptohaze contra el archivo de contraseñas .txt que se generó anteriormente. El formato del comando es: GRTCrack-OPenCL -h MD5 -f password.txt /pathtorainbowtables/rainbowtable.grt.

Los resultados se presentaron en mi modesto banco de pruebas en apenas 15 segundos con la contraseña descifrada "asdfghj". Los hashes de contraseñas son fácilmente dejados de lado, incluso con hardware de gama baja.

Fortalecimiento de la autenticación basada en contraseña

Hay varias maneras de limitar la eficacia de estas poderosas herramientas para crackeo de contraseñas. La primera es utilizar hashes SAL. Una SAL se genera aleatoriamente de la información que se añade a los datos antes de ejecutar el proceso de troceo. De esta manera el valor cifrado no puede ser pre-calculado, haciendo tablas inútiles para el crackeo de la contraseña. La SAL tendrá que ser almacenada en la base de datos, la cual podría verse comprometida. Sin embargo, la SAL debe ser diferente para cada contraseña, lo que aumentará dramáticamente la cantidad de tiempo necesario para descifrar cada registro. LinkedIn esta añadiendo SAL a todas las cuentas, y solicitando la creación o modificación de para aumentar la seguridad, después del incidente sufrido.

La autenticación de dos factores es otro método que puede ser necesario para aumentar la seguridad en la autenticación para servicios basados ​​en la nube. Google Authenticator es una herramienta libre para añadir autenticación de dos factores a cuentas de Google, pero también puede ser añadido a los sistemas Linux. Muchas de las recientes distribuciones de Linux ya incluyen el código necesario para utilizar Google Authenticator. Esta es una forma económica de añadir seguridad adicional para evitar el acceso no autorizado, incluso en el caso de una violación de contraseñas con algoritmo hash.

Una cosa es cierta: la tecnología seguirá avanzando, haciendo autenticaciones basadas en contraseñas para servicios de nube menos viables en el futuro. La longitud de la contraseña tendrá que aumentar hasta el punto de que sea poco práctico de manejar. Las empresas que buscan utilizar los servicios en la nube deben investigar el tipo de codificación de contraseñas y el uso de hashes con SAL en la evaluación de los posibles proveedores de nube. Los profesionales de seguridad deben estar al día en las tecnologías de hashing de contraseñas, así como nuevos vectores de ataque con el fin de gestionar eficazmente este riesgo en constante evolución.

Sobre el autor: Joseph Granneman, CISSP, tiene más de 20 años en tecnologías de la información y seguridad con experiencia tanto en la asistencia sanitaria y los servicios financieros. Ha estado involucrado en la Seguridad de la Información de la Salud y el Grupo de Trabajo de privacidad de Illinois, en el Grupo de Trabajo de Seguridad de la Comisión de Certificación de Tecnología de Información en Salud (CCHIT), y es un miembro activo de InfraGard.

Investigue más sobre Seguridad de la información

ComputerWeekly.com.br
Close