¿Por qué el cifrado es malo para las contraseñas?

-1

Usamos PGP para casi todo y es tan inviable para la fuerza bruta que se considera seguro. Este es el principio guía más allá de CryptoLocker. Pero para cosas como el correo electrónico, SSH y HTTPS, todavía se considera seguro a pesar de que el costo computacional del cifrado debería ser bajo, ya que estas son tareas comunes que tienen que suceder millones de veces al día. Ahora, si una contraseña encriptada con encriptación fuerte está abierta, el atacante no puede hacerle nada. Pero una contraseña con hash es vulnerable, puede ser forzada por una fuerza bruta. Entonces, ¿hay una política de contraseñas que pueda hacer que el cifrado de una contraseña con cifrado seguro sea seguro? ¿Puede un usuario usar sus claves PGP para cifrar la contraseña antes de enviarla al servidor? ¿Qué pasa con el cifrado de extremo a extremo?

    
pregunta user101387 16.02.2016 - 02:59
fuente

3 respuestas

13

Contraseñas correctamente hash

  • La aplicación web almacena el hash de sal y el resultado y el recuento de iteraciones (PBKDF2 / BCrypt / SCrypt, sal criptográfica aleatoria, altas iteraciones / factor de trabajo).

  • Para iniciar sesión, el usuario ingresa la contraseña

    • la aplicación web recupera el conteo de sal y la iteración y el hash de resultados

    • los hash de la aplicación web ingresaron la contraseña con sal y el recuento de iteraciones, compara el resultado. Si es igual, está bien.

    • un atacante sin conexión con una copia de la base de datos puede MEJOR obtener solo las contraseñas que el atacante adivina

    • El atacante sin conexión no gana ninguna ventaja si también roba el código ejecutable de la aplicación web

    • El atacante fuera de línea no gana ninguna VENTAJA si también roba el código fuente de la aplicación web

    • El atacante fuera de línea obtiene una VENTAJA MÍNIMA si roba todos los demás datos a los que puede acceder la aplicación web, ya que podrán usar nombres, datos de miembros de la familia, direcciones, etc. para ayudar a adivinar las contraseñas de las personas. quienes los usan para construir sus contraseñas.

Contraseñas cifradas correctamente

  • La aplicación web almacena el PW encriptado IV y el resultado en DB, e ingresa otra clave de almacenamiento de claves (AES / Camellia / Aria).

  • Para iniciar sesión, el usuario ingresa la contraseña

    • la aplicación web recupera IV y la clave y el PW cifrado

    • la aplicación web descifra el PW cifrado con IV y la clave, compara el resultado. Si es igual, está bien.

    • un atacante sin conexión con una copia de la base de datos de IV y PW encriptados puede SOLO MEJOR obtener solo las contraseñas para las que el atacante adivina la clave

    • Dicho atacante sin conexión gana POSIBLE EL 100% DE TODAS LAS CONTRASEÑAS DECRITAS si también roban el código ejecutable de la aplicación web, si es allí donde estaban las claves

    • Dicho atacante sin conexión gana POSIBLE EL 100% DE TODAS LAS CONTRASEÑAS DECRITAS si también roban el código fuente de la aplicación web, si es allí donde estaban las claves

    • El atacante fuera de línea gana GARANTIZADO EL 100% DE TODAS LAS CONTRASEÑAS DECRITADAS si roban todos los demás datos a los que puede acceder la aplicación web, ya que la aplicación web tenía que tener acceso a las teclas

Otros puntos importantes:

  • El cifrado significa que cualquier persona con acceso a las claves, IV y contraseñas cifradas puede, de forma silenciosa y sin rastro, suplantar a cualquier usuario, allí o desde el exterior, lo que generalmente se considera terriblemente malo.

  • Hashing hace que las contraseñas criptográficamente más sólidas, de más de 30 caracteres, sean prácticamente inmunes a ser adivinadas, porque son aleatorias criptográficas con un gran espacio de teclas.

    • Por otra parte, el cifrado hace que todas las contraseñas sean igualmente débiles, sin importar qué tan fuerte sea la contraseña real, porque todo lo que necesita es IV y la clave, y recupera incluso la contraseña más segura para probar en otros sitios o vender.
  • Si ya iba a almacenar las claves de cifrado por separado de las contraseñas cifradas reales, puede obtener resultados superiores en cada categoría almacenando las sales únicas criptográficamente aleatorias por usuario de las contraseñas con hash reales.

respondido por el Anti-weakpasswords 16.02.2016 - 04:41
fuente
4

El problema principal con el cifrado de contraseñas no es que el cifrado pueda romperse, sino que alguien con la clave de descifrado puede averiguar cuál es la contraseña.

Imagine este escenario. Arranco un servicio web de algún tipo y cifro las contraseñas con un cifrado AES de 256 bits y, por el bien de un argumento, supongamos que está implementado a la perfección, no hay fallas ni ataques de canal lateral, el único La forma de recuperar la contraseña es con la clave.

Así que vienes y te registras en mi servicio, ingresas tu dirección de correo electrónico y configuras tu contraseña.

Ahora me desvío, o tal vez es un empleado que tiene / tuvo acceso legítimo a la clave, o tal vez un pirata informático que abandonó la base de datos también robó la clave. Sea lo que sea, el punto es que de alguna manera la llave sale.

Ahora cualquiera con la clave puede ver que su correo electrónico es [email protected] y la contraseña que ha usado es "0pen 5esame", por lo que ahora me dirijo a facebook, twitter, instagram y así sucesivamente, intente ese correo electrónico y contraseña < sup> [1] .

Ahora, si imaginamos la misma situación, pero con PBKDF2 en lugar de AES, ahora no hay una clave para filtrar, y aunque puede ser forzado brutalmente, llevará días o semanas descifrar solo algunas contraseñas débiles. No hay forma de descifrar todas las contraseñas a la vez.

[1] se podría argumentar que el usuario no debería reutilizar las contraseñas en los sitios, pero este es el mundo en el que vivimos, y la mayoría de las personas solo tienen una contraseña que usan en todas partes.

    
respondido por el Hybrid 16.02.2016 - 03:29
fuente
0

Además de las buenas respuestas aquí, también quiero decir su declaración "Pero una contraseña con hash es vulnerable: puede ser forzada con una fuerza brutal" también está muy mal.

Bruteforce, o mejor usando tablas de arco iris, solo es útil para contraseñas débiles. Si genera una contraseña segura aleatoria con suficiente entropía, es probable que su hash no aparezca en ninguna tabla de arco iris (ni se puede forzar con fuerza bruta en ningún momento práctico).

Los algoritmos más antiguos (MD5, SHA1) pueden tener debilidad por la colisión, pero como es un vector que se defiende activamente en el diseño, es poco probable que le brinde una ventaja demasiado significativa en la fuerza bruta de un hash específico (solo en el arco iris generación de tablas realmente).

    
respondido por el billc.cn 16.02.2016 - 18:17
fuente

Lea otras preguntas en las etiquetas