¿Cómo almacenan las redes y los sistemas las contraseñas y otra información de inicio de sesión?

Hace años, las contraseñas aleatorias de ocho caracteres que consistían en letras mayúsculas y minúsculas, símbolos y números eran realmente difíciles de descifrar. En algunos casos, llevó años descifrar una contraseña como esta.

Gracias a la tecnología cambiante de hoy y al hardware de alquiler, este tiempo se ha reducido a horas. Pero, ¿cómo se almacenan estas contraseñas en primer lugar? Verificar Las contraseñas son cosa del pasado: por qué se eliminarán gradualmente este año.

¿Cómo se almacenan las contraseñas en Internet?

Los sistemas no almacenan las contraseñas de los usuarios directamente en archivos o bases de datos, porque un atacante puede controlar la base de datos en la que los sistemas guardan las contraseñas. En cambio, los sistemas encriptan los detalles del usuario, dejando al atacante frente a una versión encriptada de cada contraseña.

Hay algunos algoritmos avanzados que los sistemas usan para encriptar contraseñas. Uno de estos algoritmos es el algoritmo de cifrado simétrico. Que es un tipo de cifrado en el que puede usar la misma clave tanto para el cifrado como para el descifrado. La seguridad de los algoritmos de cifrado simétrico conlleva algunos riesgos, ya que solo hay una clave designada para el descifrado. Por esta razón, los sistemas generalmente no usan algoritmos de encriptación simétrica.

En general, el método que utilizan los sistemas para el cifrado son los algoritmos hash. Son para la verificación y representación de la integridad de los datos, no para el cifrado de datos. Los algoritmos hash convierten los datos en un hash de tamaño fijo. Por lo general, representa un hash único de datos. Lo que debería hacer la función hash es generar datos de longitud fija de una cantidad arbitraria de datos como su mapa.

Gracias al algoritmo hash, si un atacante se apodera de la base de datos que contiene la contraseña, no podrá volver a acceder a la contraseña desde aquí. Hay un matiz muy importante al que debes prestar atención aquí. Teóricamente, un atacante que irrumpe en un sistema utilizando el mismo algoritmo hash para todas las combinaciones de contraseñas puede comparar los resultados obtenidos. Si el atacante obtiene el mismo valor como resultado de estas comparaciones, entonces ha detectado la versión abierta de la contraseña. Este método se trata de prueba y error, y este tipo de ataque generalmente se denomina ataque de fuerza bruta.

A principios de la década de 8, llevaría cientos de años probar todas las combinaciones de contraseñas de 123456 caracteres encriptadas con algoritmos hash populares. Por supuesto, combinaciones muy simples como "XNUMX" o "mypassword" no están incluidas en esta combinación. Con el desarrollo de las tecnologías de software y hardware en la actualidad, la forma de descifrar contraseñas también ha cambiado mucho. Verificar ¿Puedes confiar en la seguridad de los administradores de contraseñas?

El efecto de la apariencia de las tarjetas gráficas.

Las capacidades de procesamiento de datos en paralelo de los procesadores gráficos (GPU) han mejorado con el tiempo. Las tarjetas gráficas no son capaces de realizar operaciones versátiles como las CPU de propósito general. Entonces, aunque hay muchos núcleos y potencia de procesamiento en paralelo, no tiene sentido usarlo para casi todos los problemas, como un procesador.

Sin embargo, es posible implementar algunos algoritmos hash utilizados para contraseñas de manera muy eficiente en una GPU. La cantidad de hashes por segundo que puede lograr con las CPU tradicionales ha crecido exponencialmente con las nuevas tarjetas gráficas.

Para tener una idea, examine la cantidad de hash por segundo (el término tasa de hash se refiere a la velocidad a la que una computadora puede realizar cálculos de hash) para algoritmos de hash como NTLM, MD5 y SHA1 en la siguiente tabla. Es suficiente, por ahora, saber que estos algoritmos son solo un algoritmo hash. Para crear esta tabla, utilicé un grupo de 25 GPU AMD Radeon.

algoritmo El número de hashes por segundo
NTLM 350.000.000.000
MD5 180.000.000.000
SHA1 63.000.000.000
SHA512Cripta 364.000
Bcript 71.000
Scrypt 33.000

Verá, con un sistema de este tipo, puede generar un hash NTLM de 350 mil millones de veces por segundo. Esto significa que puede probar todas las combinaciones de contraseñas de 8 caracteres en menos de 6 horas. Además, el hardware de este ejemplo es de años anteriores. Imagine el poder de descifrar contraseñas hoy.

¿Qué deben hacer los desarrolladores de software?

La forma en que los programadores deben actuar es muy simple: deben preferir algoritmos que tarden más en calcular valores hash al cifrar contraseñas. Los desarrolladores necesitan saber no solo cómo funciona el algoritmo que están usando en una CPU, sino también qué tan resistente es frente al reino de las tarjetas gráficas.

Si los desarrolladores están trabajando con un marco de software que también maneja la criptografía de contraseñas como Django, Ruby on Rails y Spring Security, deben verificar si se tomaron las decisiones correctas en el marco en términos de seguridad.

Por ejemplo, usado Ideamos , que es una de las bibliotecas más utilizadas para operaciones de usuario en Ruby on Rails, utiliza Bcrypt como el algoritmo hash predeterminado. También le permite utilizar otro método como algoritmo hash. El algoritmo Bcrypt es confiable porque la tarjeta gráfica aún tarda mucho en llegar al punto correcto.

En resumen, cuanto más tiempo calcule el valor hash, más seguro estará.

¿Cuántos caracteres debe contener su contraseña?

Cada carácter adicional que utilice aumentará geométricamente el número de pruebas y errores necesarios para descifrar la contraseña y hacerla más segura.

Consideremos esta situación bajo dos escenarios diferentes. Considere los valores dados en la tabla anterior para el algoritmo hash NTLM e imagine que va a intentar descifrar la contraseña. Imagine apuntar a contraseñas de ocho caracteres o más.

Número de letras Números y letras mayúsculas/minúsculas Mayúsculas/minúsculas, números y símbolos especiales
8 menos de un minuto Dos minutos
9 Dos minutos Dos horas
10 Dos horas Una semana
11 Seis días سنتين
12 Un año 200 سنة
13 Más de 100 años Más de 1000 años

Al examinar la tabla, puede ver que una contraseña de al menos 12 caracteres es segura cuando se usan todas las combinaciones de letras mayúsculas/minúsculas, números y símbolos especiales. Si no usa símbolos especiales, resulta que necesita usar 13 caracteres para obtener la longitud de una contraseña segura. Si usa el método hash Bcrypt en lugar del hash NTLM en este sistema, 8 caracteres serán suficientes. Sin embargo, no tiene la oportunidad de ver qué método de hashing utiliza el sistema al que ingresa a través de la web que contiene su contraseña. Es por eso que debes considerar todas las posibilidades.

El principal problema para los desarrolladores de software es que es casi imposible convencer a los usuarios de que tengan una contraseña de al menos 12 caracteres. Hoy en día, se puede decir que la tasa de uso de una contraseña de esta longitud es baja. Por lo tanto, según el escenario de uso del sistema desarrollado, será necesario encontrar un compromiso que los usuarios acepten para mejorar la seguridad de sus contraseñas.

Una sugerencia final para los desarrolladores es verificar no solo la longitud mínima sino también la longitud máxima de las entradas que llegan a través de los formularios que le ha dado al usuario. Especialmente cuando habilita el uso de un algoritmo hash computacionalmente lento como Bcrypt por motivos de seguridad, puede correr algunos riesgos si no controla la longitud máxima de la contraseña ingresada por el usuario. Por ejemplo, los atacantes pueden realizar ataques probando simultáneamente docenas de contraseñas de 100 XNUMX caracteres con algunas solicitudes especialmente diseñadas. En tal situación, es muy probable que su sistema deje de responder a otros usuarios. Verificar Cómo saber si tus contraseñas se venden en línea.

Consejos para el usuario final

Mantenga su contraseña de al menos 12 caracteres y asegúrese de incluir combinaciones de letras mayúsculas y minúsculas, números y símbolos especiales. Nunca olvide que los sistemas que almacenan su contraseña pueden ser pirateados y su información puede ser mal utilizada. No puede saber qué algoritmos utiliza el sistema para cifrar la contraseña, por lo que depende completamente de usted tomar precauciones y crear contraseñas seguras. Puedes ver ahora Cómo generar contraseñas seguras en línea que son difíciles de descifrar.

DzTech

Soy ingeniero estatal con amplia experiencia en los campos de programación, creación de sitios web, SEO y redacción técnica. Me apasiona la tecnología y me dedico a brindar información de calidad al público. Puedo convertirme en un recurso más valioso para los usuarios que buscan información precisa y confiable sobre reseñas de productos y aplicaciones especializadas en diversos campos. Mi compromiso inquebrantable con la calidad y la precisión garantiza que la información proporcionada sea confiable y útil para la audiencia. La búsqueda constante de conocimiento me impulsa a estar al día con los últimos avances tecnológicos, asegurando que las ideas compartidas se transmitan de forma clara y accesible.
Ir al botón superior