17Aug

Por qué debería preocuparse siempre que se filtre la base de datos de contraseñas de un servicio

click fraud protection

Ingresa tu contraseña

"Nuestra base de datos de contraseñas fue robada ayer. Pero no se preocupe: sus contraseñas fueron encriptadas. "Regularmente vemos declaraciones como esta en línea, incluido ayer, de Yahoo. Pero, ¿deberíamos realmente tomar estas garantías al pie de la letra?

La realidad es que la base de datos de contraseñas compromete a ya que es una preocupación, sin importar cómo una compañía puede intentar hilarlo. Pero hay algunas cosas que puede hacer para aislarse, sin importar cuán malas sean las prácticas de seguridad de una compañía.

Cómo deben guardarse las contraseñas

Así es como las empresas deben almacenar contraseñas en un mundo ideal: usted crea una cuenta y proporciona una contraseña. En lugar de almacenar la contraseña en sí, el servicio genera un "hash" a partir de la contraseña. Esta es una huella digital única que no se puede revertir. Por ejemplo, la contraseña "contraseña" puede convertirse en algo que se parece más a "4jfh75to4sud7gh93247g. ..".Cuando ingresa su contraseña para iniciar sesión, el servicio genera un hash y comprueba si el valor de hash coincide con el valor almacenado en la base de datos. En ningún momento el servicio guarda su contraseña en el disco.

instagram viewer

función criptográfica-hash

Para determinar su contraseña real, un atacante con acceso a la base de datos tendría que calcular previamente los valores hash de las contraseñas comunes y luego verificar si existen en la base de datos. Los atacantes hacen esto con tablas de búsqueda: enormes listas de hash que coinciden con las contraseñas. Los hashes se pueden comparar con la base de datos. Por ejemplo, un atacante conocería el hash de "contraseña1" y luego vería si hay cuentas en la base de datos que están usando ese hash. Si lo son, el atacante sabe que su contraseña es "contraseña1".

Para evitar esto, los servicios deberían "saldar" sus hashes. En lugar de crear un hash a partir de la contraseña en sí, agregan una cadena aleatoria al frente o al final de la contraseña antes de mezclarla. En otras palabras, un usuario ingresaría la contraseña "contraseña" y el servicio agregaría una contraseña que se parece más a "password35s2dg". Cada cuenta de usuario debería tener su propia sal única, y esto garantizaría que cada cuenta de usuariotendría un valor hash diferente para su contraseña en la base de datos. Incluso si varias cuentas usaban la contraseña "contraseña1", tendrían diferentes valores hash debido a los diferentes valores de sal. Esto vencería a un atacante que intentó precomputar hashes para contraseñas. En lugar de poder generar hashes que se aplicaban a cada cuenta de usuario en toda la base de datos a la vez, tendrían que generar hashes únicos para cada cuenta de usuario y su sal única. Esto tomaría mucho más tiempo de cálculo y memoria.

Es por eso que los servicios a menudo dicen que no se preocupen. Un servicio que utiliza procedimientos de seguridad adecuados debería decir que estaba usando hashes de contraseña salados. Si simplemente dicen que las contraseñas son "hash", eso es más preocupante. LinkedIn usó sus contraseñas, por ejemplo, pero no las saldaron, así que fue un gran problema cuando LinkedIn perdió 6.5 millones de contraseñas cifradas en 2012.

Prácticas de contraseñas

plaintext-password-database

Esto no es lo más difícil de implementar, pero muchos sitios webtodavía se las arreglan para desordenarlo de varias maneras:

  • Almacenamiento de contraseñas en texto sin formato : en lugar de molestarse con el hashing, algunos de los peores delincuentes pueden simplemente volcar las contraseñas en forma de texto plano en una base de datos. Si dicha base de datos se ve comprometida, sus contraseñas están obviamente comprometidas. No importaría lo fuertes que fueran.
  • Hashing las contraseñas sin saladarlas : Algunos servicios pueden descifrar las contraseñas y renunciar a ellas, optando por no utilizar sales. Tales bases de datos de contraseñas serían muy vulnerables a las tablas de búsqueda. Un atacante podría generar los hashes para muchas contraseñas y luego verificar si existían en la base de datos; podrían hacer esto para todas las cuentas a la vez si no se utilizó sal.
  • Reutilización de sales : algunos servicios pueden usar una sal, pero pueden reutilizar la misma sal para cada contraseña de cuenta de usuario. Esto no tiene sentido: si se utilizara la misma sal para cada usuario, dos usuarios con la misma contraseña tendrían el mismo hash.
  • Uso de sales cortas : si se utilizan sales de solo unos pocos dígitos, sería posible generar tablas de búsqueda que incorporaran todas las sal posibles. Por ejemplo, si se utilizara un solo dígito como sal, el atacante podría generar listas de hashes que incorporaran todas las sal posibles.

Las empresas no siempre le contarán toda la historia, por lo que incluso si dicen que se ha corregido una contraseña( o hash y salado), es posible que no estén utilizando las mejores prácticas. Siempre errar por el lado de la precaución.

Otras Preocupaciones

Es probable que el valor de la sal también esté presente en la base de datos de contraseñas. Esto no es tan malo: si se utilizara un valor de sal único para cada usuario, los atacantes tendrían que gastar cantidades masivas de poder de CPU rompiendo todas esas contraseñas.

En la práctica, muchas personas usan contraseñas obvias que probablemente sería fácil determinar las contraseñas de muchas cuentas de usuario. Por ejemplo, si un atacante conoce su hash y conocen su sal, pueden verificar fácilmente si está utilizando algunas de las contraseñas más comunes.

Si un atacante lo tiene para ti y quiere descifrar tu contraseña, puede hacerlo con la fuerza bruta siempre que conozcan el valor de la sal, lo cual es probable que hagan. Con acceso local, fuera de línea a bases de datos de contraseñas, los atacantes pueden emplear todos los ataques de fuerza bruta que deseen.

También es probable que se filtren otros datos personales cuando se roba una base de datos de contraseñas: nombres de usuario, direcciones de correo electrónico y más. En el caso de la fuga de Yahoo, también se filtraron preguntas y respuestas de seguridad, que, como todos sabemos, hacen que sea más fácil robar el acceso a la cuenta de alguien.

Ayuda, ¿qué debo hacer?

Lo que dice un servicio cuando se roba su base de datos de contraseñas, es mejor suponer que todos los servicios son completamente incompetentes y actuar en consecuencia.

Primero, no reutilice las contraseñas en varios sitios web. Use un administrador de contraseñas que genere contraseñas únicas para cada sitio web. Si un atacante logra descubrir que su contraseña para un servicio es "43 ^ tSd% 7uho2 # 3" y usted solo usa esa contraseña en ese sitio web específico, no han aprendido nada útil. Si usa la misma contraseña en todas partes, podrían acceder a sus otras cuentas. Así es como muchas cuentas de las personas se "piratean".

generar-contraseña-aleatoria

Si un servicio se compromete, asegúrese de cambiar la contraseña que utiliza allí.También debe cambiar la contraseña en otros sitios si la vuelve a usar allí, pero no debería hacer eso en primer lugar.

También debería considerar el uso de la autenticación de dos factores, que lo protegerá incluso si un atacante aprende su contraseña.

ARTÍCULOS RELACIONADOS
¿Por qué debería usar Password Manager y cómo comenzar
? ¿Qué es la autenticación de dos factores y por qué la necesito?

Lo más importante es no reutilizar contraseñas. Las bases de datos de contraseñas comprometidas no pueden perjudicarlo si usa una contraseña única en todas partes, a menos que almacenen otra cosa importante en la base de datos, como el número de su tarjeta de crédito.

Crédito de la imagen: Marc Falardeau en Flickr, Wikimedia Commons