Cómo elegir un tipo de contraseña que puedas recordar todo el tiempo.

[Descargo de responsabilidad: trabajo para AgileBits , creadores de 1Password , administrador de contraseñas y billetera segura]

Lo que Jonathan Baker-Bates escribió es acertado. Quiero tomar un momento para abordar el tipo de sistema descrito por Richard H. Schwartz.

De vez en cuando se nos pregunta cómo el uso de 1Password para generar contraseñas se compara con algo que no necesita ser almacenado en un dispositivo o respaldado. Existen versiones simples de algoritmos de hashing de contraseñas que no son imposibles de mantener en su cabeza.

Como un ejemplo extremadamente simple, puedes usar una contraseña base de “dogsR4me!” Y luego intercalar las letras del dominio con la contraseña base. Su contraseña para Amazon sería “daomgaszRo4nme!”, Y su contraseña para PayPal sería “dpoagyspRa4lme!”. Parece bastante sencillo, pero, ¿un sistema como este (incluso uno más complejo) resiste el escrutinio?

Cómo construir sistemas sin bases de datos (aunque no deberías)

La forma correcta de construir el tipo incorrecto de sistema es generar una contraseña para un sitio en particular con

truncar (b64encode (HMAC-SHA256 (contraseña maestra, información del sitio || nombre de usuario)))

La parte “HMAC-SHA256” es lo que hace la seguridad de la cosa. Generará una cadena de bits de apariencia aleatoria a partir de una “contraseña maestra” (que es secreta y que solo usted conoce), así como información sobre el sitio y su nombre de usuario (que no son secretos).

Esa cadena de 256 bits no es adecuada para una contraseña (que es una cadena de texto), por lo que debe convertirse en una cadena de caracteres ASCII. Por lo tanto, utilizamos algo como la codificación Base64, que le proporcionará una cadena de 45 caracteres.

La mayoría de los sistemas no aceptan contraseñas de 45 caracteres de longitud, por lo que necesitarías truncarlas a algo aún más corto en esos casos.

Esta técnica resuelve un par de problemas que las personas suelen pasar por alto cuando intentan diseñar tales sistemas. Pero no los resuelve todos …

Fallo catastrófico en una sola grieta

Si un atacante obtiene una de sus contraseñas (por ejemplo, un sitio no cifra las contraseñas), entonces ese atacante puede ejecutar un intruso de contraseñas en su sistema. Conocen la información del sitio, el nombre de usuario y el esquema de hash. Entonces, solo necesitan ejecutar pruebas automatizadas adivinando su contraseña base para ver si pueden encontrar algo que genere la misma contraseña para el sitio que capturó. Recuerda que pueden ejecutar millones de conjeturas por segundo. Una vez que han descifrado eso, tienen su contraseña básica y pueden reconstruir su contraseña para cada sitio y servicio que use.

Por lo tanto, la captura de una sola contraseña le permite a un atacante ejecutar un ataque fuera de línea en su contraseña base desde donde puede generar cada contraseña que tenga.

Algunas de sus contraseñas no serán permitidas

Algunos sitios tienen varios requisitos de contraseña: algunos no permiten cartas repetidas; otros requieren al menos 12 caracteres; algunos no aceptan más de 10; algunos no aceptan el símbolo “/”, y así sucesivamente. Debido a que este esquema de creación de contraseñas es determinista y no tiene bases de datos, será imposible garantizar que las contraseñas que genera funcionen en todos los sistemas.

Crackability

Una contraseña individual generada de esta manera nunca será crackeada. Pero puede ser expuesto a través de mecanismos que no se agrietan. Luego, la contraseña generada capturada se puede usar para “descifrar” la contraseña maestra, momento en el que se pierde todo.

Hacer que el craqueo sea más difícil al iterar el HMAC es bueno. Usar PBKDF2 en lugar de HMAC es un camino a seguir (bcrypt y scrypt también son alternativas a PBKDF2). Pero dado que cualquier contraseña generada capturada de tal esquema se convierte en una ruta para exponer todo, todavía no podemos recomendar este tipo de esquema.

Con 1Password, el atacante tiene que capturar primero la base de datos antes de poder intentar una grieta fuera de línea. Pero con un esquema sin base de datos, una única contraseña capturada es suficiente para poder iniciar un ataque sin conexión.

Seguridad y conveniencia

El uso de un sistema que usted mismo cree para crear contraseñas es mejor que reutilizarlo. Pero es mejor aún usar la generación de contraseñas verdaderamente aleatorias en todas partes. 1Password está diseñado para que lo más seguro sea lo más fácil de hacer. No solo es mucho más fácil que 1Password genere sus contraseñas para usted, sino que son más seguras. Y cuando necesita iniciar sesión en un sitio, no tiene que escribir sus contraseñas. 1Password los llena por usted con la integración directa del navegador.

Si tiene alguna pregunta o inquietud, por favor hágamelo saber. Incluso (y especialmente) si no terminas usando 1Password. Siempre estamos interesados ​​en saber qué es lo que impide que las personas den el paso.


ACTUALIZACIÓN: Richard H. Schwartz me señaló que tal vez no haya respondido la pregunta. En mi defensa, la pregunta parece poco clara en el mejor de los casos. Había entendido que el autor de la pregunta estaba tratando de encontrar una contraseña única que se usaría en todas partes. Sin embargo, a menos que el autor tenga alguna aclaración adicional, sería prudente agregar algunos consejos sobre la creación de una contraseña maestra. Suponiendo que un administrador de contraseñas es el camino a seguir, tal contraseña tendrá que ser memorable. ¡Gracias por hablar de esto, Richard!

Recordando contraseñas

La cognición humana juega un papel importante en lo que podemos pedir a las personas con sus contraseñas. El número de contraseñas seguras distintas que una persona puede recordar es mucho menor que el número de contraseñas distintas que necesita.
Como mencioné anteriormente, la reutilización de la contraseña es un gran problema de seguridad. En 2013, varias cuentas de Dropbox se vieron comprometidas porque las personas usaron la misma contraseña que usaron para los sitios que sufrieron violaciones. Lo mismo sucedió con Best Buy. No hubo una violación real de Best Buy, pero las contraseñas de los clientes se descubrieron a través de violaciones de otros sitios. Como siempre queremos recordar a las personas, “los amigos no permiten que los amigos reutilicen las contraseñas”.

Disculpas por sonar como un registro roto, pero recomendamos encarecidamente que la gente use un buen sistema de administración de contraseñas , y esa es la razón por la que se creó 1Password. Como dice el investigador de contraseñas, Troy Hunt, “la única contraseña segura es una que no puede recordar”.

Las contraseñas que necesitamos recordar

Pero esto todavía nos deja con una pequeña cantidad de contraseñas que necesitamos recordar. Y porque tanto depende de esto, necesitamos que sean muy fuertes. Lo que la gente no suele reconocer es que no solo necesitamos estas pocas contraseñas seguras para que los humanos normales las puedan recordar, sino que necesitamos que se creen. Si los humanos son malos para recordar cosas al azar, son mucho peores para generar aleatoriedad.

En nuestra publicación del blog “Hacia mejores contraseñas maestras”, vemos que si seleccionamos palabras de forma aleatoria (por ejemplo, tirando los dados) podemos obtener una serie de palabras que podemos recordar y escribir, pero que siguen siendo enormemente difíciles de adivinar. como se explica en nuestro blog de seguimiento.

El crédito original para esto debe ir a Arnold Reinhold. Y después de que Revivió “Hacia mejores contraseñas maestras”, se hizo famoso por Randall Munroe, quien resumió la parte matemática del argumento en un solo cómic: Seguridad de la contraseña.

Consulte “Hacia mejores contraseñas maestras” para saber por qué es crucial que use algún proceso aleatorio que no esté en su cabeza para crearlos. Hemos visto personas que intentan inventar ejemplos de este tipo de contraseñas, y generalmente es fácil saber si se utilizó un proceso aleatorio o no. (Por ejemplo, las personas que intentan encontrar una secuencia aleatoria de palabras casi siempre elegirán nombres concretos).

Espero que eso ayude. Mantente a salvo ahí fuera!

Jonathan Baker-Bates y Khad Young son absolutamente correctos: las contraseñas que no puede recordar son superiores a las que puede recordar, pero como preguntó específicamente sobre las contraseñas que puede recordar, y dado que los administradores de contraseñas no son tan perfectos como ellos Debería estarlo, y muchas personas no están listas para dar el salto para usarlas, aquí hay algunas ideas que abordan directamente lo que ha pedido:

  • No lo pienses como recordar contraseñas. Se trata de recordar patrones y valores.
  • Recuerde un conjunto de patrones, no un solo patrón.
    Nunca encontrará un solo patrón que funcione en todos los sitios y que sea lo suficientemente fuerte.
  • Cada patrón debe tener múltiples componentes.
    Por ejemplo, un patrón con seis componentes sería algo así como . Por supuesto, eso solo funcionará para sitios que permitan contraseñas bastante largas. Si no puede evitar utilizar un sitio que impone un límite corto en la longitud de la contraseña, es posible que tenga que reducir solo dos o tres componentes. (Sin embargo, es mejor evitar esos sitios. Si lo restringen a contraseñas de ocho caracteres, están haciendo algo mal).
  • Recuerde un conjunto de valores para cada componente, no un solo valor.
    Es decir, no use el mismo valor para cada componente cada vez. Si sus patrones usan dos componentes , elija al menos tres (y preferiblemente cinco o más) secuencias de letras que sean significativas para usted, y elija un par de ellas para los componentes que utiliza para cada sitio.

Entre múltiples patrones y múltiples valores para seleccionar para cada uno, tienes la capacidad de crear docenas, incluso cientos, de contraseñas distintas de un conjunto relativamente pequeño de cosas para recordar. Si uno de los sitios que usa es pirateado y se revela esa combinación de partículas, no corre automáticamente un riesgo elevado en todos los demás sitios, pero sigue corriendo el riesgo y debe eliminar esos valores particulares de su conjunto de opciones.

Yendo más lejos con esto, quiere que los componentes sean fáciles de recordar, pero difíciles de adivinar.

  • No use palabras o nombres de diccionarios para ninguno de los componentes .
    Incluso con los dígitos comunes que parecen una sustitución de letras, o con errores ortográficos comunes deliberados, se encontrarán palabras y nombres de diccionarios. Las variantes personales en las palabras y los nombres del diccionario pueden estar bien. Sé creativo al respecto. Por ejemplo, intente agregar algunas letras adicionales a una palabra o nombre real, la forma en que un niño podría convertirla en una rima, o mejor aún, la forma en que lo hizo de niño, lo que lo hace más memorable para usted. Si habla varios idiomas, o simplemente sabe algunas palabras en otros idiomas, usar variaciones que mezclan o combinan palabras de los diccionarios de varios idiomas también es un truco razonable.
  • Utilice estuche mixto.
    Si tiene dos componentes , uno podría ser todo en mayúsculas, uno podría ser todo en minúsculas, o ambos podrían estar mezclados. En varios sitios, puede usar un pequeño conjunto de componentes distintos, cada uno de tres a cinco letras y variando el patrón de mayúsculas y minúsculas. Es decir, si usa “abc” como valor (¡no lo haga!), Como mínimo puede cambiar entre “abc”, “ABC” y “Abc” en diferentes sitios.
  • No utilice dígitos individuales como un componente.
    Utilice dos o más dígitos consecutivos. Elija secuencias de dígitos que sean significativas para usted, pero evite usar la fecha de nacimiento o el año de nacimiento en un componente. Un ejemplo de una buena secuencia de dígitos que podría ser fácil de recordar podría ser el número uniforme de un atleta favorito, seguido de una estadística que está asociada con ese atleta. Por ejemplo, “556” es una secuencia que puedo recordar fácilmente. Algunas personas descubrirán por qué lo considero significativo, pero es probable que nadie adivine que realmente lo usaría, lo que, por cierto, no lo hago. (Usar el nombre o el apodo de ese mismo atleta como uno de sus componentes de , o incluso dividirlo en dos o más componentes, es una forma de hacer que una contraseña completa sea más memorable, pero evite hacer eso con todas sus contraseñas. Siempre debe tener múltiples opciones para cada componente.
  • No solo use los mismos caracteres especiales individuales como un componente cada vez.
    No importa qué personaje elijas, algunos sitios no lo van a permitir. Cambie entre un conjunto de valores de caracteres y utilice dos o más caracteres especiales en una secuencia, lo que en realidad no es mucho más difícil de recordar que una única especial.

Puede que esta no sea la respuesta que espera, pero es la que necesita:

No trates de recordar las contraseñas.

Hay dos razones para esto:

1. Cada vez más, los sistemas a los que necesita acceso exigirán múltiples tipos de contraseñas u otra autenticación que probablemente no se ajuste a ningún sistema “uno para todos” que pueda tener. Por ejemplo, una identificación de usuario numérica junto con uno de varios “desafíos” (por ejemplo, ¿cuál es su comida favorita?).

2. Si un atacante encuentra su fórmula para recuperar contraseñas, tienen muchas más posibilidades de adivinar con éxito todas las demás contraseñas.

Es mucho mejor almacenar las contraseñas en una base de datos cifrada que puede desbloquear utilizando una contraseña única (preferiblemente utilizando dos factores). Si bien esto no es infalible, las contraseñas son demasiado importantes en la vida moderna para dejarlas en cualquier otro sistema.

Los sistemas que puedes probar incluyen KeePass y 1Password

( Descargo de responsabilidad : uso KeePass, nunca he usado 1Password y no tengo ninguna afiliación con los creadores de ninguno de los dos )

Bueno, esto, por supuesto, difiere de una persona a otra, pero le sugiero que elija una contraseña que no tenga que recordar … en cambio, cuando visite la aplicación más tarde, piense “¿qué elegiría como contraseña?” .. si mantiene una lógica consistente y parámetros considerados, probablemente puede elegir la misma contraseña que ya eligió la primera vez.

Para explicarlo, haga que sea una función de la aplicación para la que está eligiendo una contraseña. no es demasiado genérico como para que cualquiera pueda adivinarlo fácilmente, sino algo que refleje sus pensamientos ocultos sobre la aplicación. una expresión de varias palabras, con algunos patrones de cifrado (por ejemplo, haciendo la última letra de cada palabra de la contraseña uppeRcasE, usando cierto dígito o letra en lugar de espacio) Elija sus propios patrones, manténgalos en secreto y aplíquelos a lo oculto, fácil (para usted) para recordar, frase. y úsalos para crear, y recuerda contraseñas.