¿Qué tan seguro es el algoritmo y el sistema PwdHash?

6

Uso el servicio PwdHash ( enlace ) y complementos para casi todas mis contraseñas. Creo que esto es más seguro porque:

  • Ningún servicio obtiene la misma contraseña que otro, por lo que si una cuenta está compuesta, no debería tenerla otra.
  • Las contraseñas con hash deben ser más seguras que las únicas que realmente puedo recordar.

Sin embargo, me preocupa que pueda exponerme a un riesgo al tener una contraseña maestra que, si está incluida, se puede usar para obtener acceso a todos mis servicios a través de PwdHash.

Si un atacante tiene el hash y sabe que se generó con PwdHash y conoce el dominio para el que se generó, ¿qué tan posible sería para ellos determinar la contraseña original a partir de eso?

    
pregunta Hugh Grigg 葛修远 27.02.2014 - 04:33
fuente

3 respuestas

7

Tener contraseñas únicas ingresadas en cada sitio ES más seguro que darle a cada sitio la misma contraseña, exactamente por la razón de compromiso independiente que sugirió.

  

Si un atacante tiene el hash y sabe que se generó con PwdHash y conoce el dominio para el que se generó, ¿qué tan posible sería para ellos determinar la contraseña original a partir de eso?

Bueno, hagamos un poco de investigación y algunas matemáticas! PwdHash parece estar utilizando efectivamente GoofyStuff (Base64 (HMAC-MD5 ())), por lo que estamos a la velocidad habitual del juego de adivinanzas MD5 (MD5 ()). Por oclHashcat , "PC5 (8x AMD R9 290Xstock core clock)" puede romper ~ 81 mil millones de MD5 por segundo, así que ~ 40 billones de intentos como PwdHash por segundo, lo que nos da los intentos más prácticos de 1E17 (algo más de 2 ^ 56) cada 30 días.

Baso lo anterior en este fragmento de un vistazo rápido a la fuente de la página PwdHash:

    var hash = b64_hmac_md5(password, realm);

Esto está en el rango de una búsqueda exhaustiva de espacios de teclas de 62 ^ 9 a 62 ^ 10 en esos 30 días, donde 62 es el espacio de teclas de mayúsculas, minúsculas y números (o mayúsculas, minúsculas y símbolos sobre los números, lo que quieras, y 9 o 10 es la longitud.

Por lo tanto, se encontrará una contraseña numérica mayúscula, minúscula y totalmente aleatoria, codificada con HMAC-MD5 en menos de aproximadamente 30 días (a menos que usted y el atacante estén usando conjuntos de caracteres diferentes (es decir, Cryllic vs. English)). Necesitará algo con un espacio de teclas total mayor que este para su contraseña maestra, ¡y eso es si es una contraseña verdaderamente aleatoria!

Ni siquiera desea pensar qué puede generar un ataque de diccionario basado en reglas a esta velocidad, si su contraseña no es, de hecho, completamente aleatoria. Mi conjunto de listas de palabras más completo tiene más de 40 GB de contraseñas únicas; si asumimos una longitud de palabra promedio de 9 más un separador de LF, eso es 4E9 palabras, lo que significa que si un atacante con esa PC pasó 30 días en su contraseña, podrían probar aproximadamente 2.5E7, es decir, 25 millones de variaciones diferentes ( reglas) para cada contraseña.

Tenga en cuenta que esta lista de palabras es demasiado lenta e incómoda para molestarse con ... a menos que el objetivo pueda ser atacado a velocidades increíbles, como puede hacerlo un solo HMAC-MD5.

Si usas PwdHash con una contraseña maestra, tienes uno realmente bueno: 15 caracteres o mejor, criptográficamente aleatorio, con un gran conjunto de caracteres (superior, inferior, número, símbolos sobre los números, símbolos no sobre los números) .

  

Otras consideraciones

Debería pensar en cómo cambiará su contraseña maestra después de que se filtre; tal vez se haya levantado tarde y esté tratando de darse prisa y escriba la contraseña maestra en un sitio web directamente en lugar de hacerlo en PwdHash, solo por costumbre, falta de cafeína, prisa y descuido. ¡Ahora necesitas cambiarlo!

Personalmente, me gusta el almacenamiento de contraseñas fuera de línea como KeePass , pero preferiría usar incluso OpenSSL básico que PwdHash, tan patético como insuficiente. , Pondré HMAC-SHA-512 contra HMAC-MD5 cualquier día de la semana.

 echo example.com2014 | openssl dgst -sha512 -hmac MyPassword -binary | openssl enc -base64

Como siempre, es mejor usar algo verdaderamente aleatorio y almacenarlo o, si insiste en una rutina de generación determinista, algo realmente, muy lento, especialmente porque esto es solo para usted, por lo tanto PBKDF2 / BCrypt / Scrypt con suficientes iteraciones / factor de trabajo que toma incluso un segundo o dos o cinco en su máquina estaría bien, y ralentizaría a un atacante a un rastreo.

Enchufe desvergonzado: estoy trabajando en la recopilación de una variedad de ejemplos de código PBKDF2 (y, posiblemente, más tarde, BCrypt y Scrypt) en mi Anti-weakpasswords git page , algunos de los cuales se compilan para que pueda ejecutarlos en la línea de comandos de Windows o Linux, y usarlos exactamente de la forma en que usa PwdHash ahora, pero con un mayor número de iteraciones de lo que casi cualquier sitio web podría usar, Si estás dispuesto a esperar un par de segundos. A partir de hoy, solo hay una versión de Python que Mitsuhiko escribió y Warner corrigió para un alto número de iteraciones, que aún no se han actualizado con mejores hashes, pero eso mejorará.

    
respondido por el Anti-weakpasswords 27.02.2014 - 05:37
fuente
3

Hay un nuevo documento de investigación de diciembre de 2016, por David Llewellyn-Jones y Graham Rymer de la Universidad de Cambridge sobre este tema:

Cita del artículo:

  

Resumen    [...] Demostramos cómo la herramienta de recuperación de contraseña de hashcat se puede extender para permitir que las contraseñas generadas utilizando PwdHash sean identificadas   y recuperado, revelando la contraseña maestra del usuario. Una fuga de un   Por lo tanto, un solo sitio web puede comprometer la cuenta de un usuario en otros   Sitios donde se usó PwdHash. [...].

     

Conclusión : Lo principal que queremos destacar de este trabajo es que PwdHash es tan seguro como la contraseña maestra que se usa   con. [...] Además, nuestros resultados sugieren que el mensaje no ha sido   absorbido por los usuarios de PwdHash, muchos de los cuales utilizan un maestro débil   contraseñas Aunque aparecen las contraseñas específicas del sitio generadas   fuertes, de hecho no son más fuertes que el maestro original   contraseña .

(enfatiza el mío)

    
respondido por el GWu 20.03.2017 - 16:04
fuente
0

Esto depende de la fortaleza de su contraseña. Al usar los datos de contraseñas débiles anteriores, una contraseña de 15 caracteres aleatorios tiene 62 ^ 15 = 768909704948766668552634368 contraseñas posibles. A 40 mil millones de intentos por segundo, esto es 768909704948766668552634368/40000000000 = 19222742623719166 segundos = 609549169 años = 6E8 años. Esto es básicamente irrompible usando la fuerza bruta.

Además, el número de caracteres en la contraseña es más importante que el tamaño del alfabeto de la contraseña, ya que la longitud de la contraseña es el exponente en la fórmula y el alfabeto (72) es la base. Entonces, solo usando caracteres en mayúsculas / minúsculas (52 caracteres) da 52 ^ 15 = 43569598 años = 4E7 años.

Uso un dispositivo que me proporciona una contraseña aleatoria de 15 caracteres y uso PwdHash. Estoy de acuerdo contigo, esto es mejor que tener una gran base de datos de contraseñas. Siempre y cuando tengas una contraseña aleatoria fuerte de 15 caracteres, deberías estar bien.

    
respondido por el Ken Clubb 18.07.2014 - 19:06
fuente

Lea otras preguntas en las etiquetas