Herramienta de línea de comando para generar contraseñas memorables?

20

Estoy buscando una herramienta, línea de comando o GUI para Linux que genere contraseñas memorables.

Un equivalente de lo que estoy buscando serían contraseñas que pueda generar el llavero Mac OS X, algo así apples12$/fourteen. Algo fuerte, pero fácil de memorizar por un usuario.

James McMahon
fuente

Respuestas:

22

Desde entonces, pasé a las frases de estilo XCKD para la mayoría de mis contraseñas. Aquí hay un liner de commandlinefu para generar una frase de contraseña:

shuf -n4 /usr/share/dict/words | tr -d '\n'
James McMahon
fuente
2
en realidad, hay un problema con esta frase: puede usar palabras como "el", "ellos", "su" y "foso", "iris", "él". ¿Ves el problema? Hay una superposición entre prefijos y sufijos, lo que reduce la entropía real de la contraseña generada y puede generar contraseñas bastante débiles si las cadenas no son lo suficientemente largas (especialmente con 4 palabras). Esta es la razón por la cual los generadores de contraseñas basados ​​en palabras usan listas de palabras diseñadas. De acuerdo, las contraseñas generadas con lo anterior son bastante buenas: 14 caracteres como mínimo en mis pruebas, con un tamaño medio de 34. Pero su entropía no es confiable.
anarcat
¿Cuál es el problema de tener prefijos / sufijos superpuestos? Puedo entender tu punto sobre la longitud, pero tendrás que explicar el otro punto.
James McMahon
simplifiquemos al extremo. usted tiene un dictionnary hecha de tres palabras: the, mey theme. normalmente, esperaría tener la entropía igualmente de esas tres palabras, pero en este caso, no puede contar themeporque es una combinación de las otras dos palabras. en efecto, en themerealidad agrega cero entropía a la contraseña.
anarcat
¿Pero no es "el yo" distinto del "tema"? Entiendo que las letras posibles agregan entropía, pero este enfoque es más sobre el tamaño de las contraseñas. No entiendo cómo "el tema yo" sería más fácil de adivinar que una secuencia sin caracteres superpuestos como "do ray music"
James McMahon
1
@wbg mi respuesta está aquí superuser.com/a/1246245/177019
anarcat
11

2020: publiqué esta respuesta en 2011. En los años que han pasado, la cara de la seguridad cibernética y sus demandas han cambiado rápida y enormemente. Como ha sido señalado por anarcat, pwgen puede no ser (o ya no) adecuado para asegurar sistemas de alta seguridad. Se propone describir los detalles técnicos sobre cómo pwgen puede, en algunas circunstancias, utilizar métodos inseguros de derivación de contraseñas a partir de la entropía disponible en su artículo . Aunque ya no creo en generar contraseñas para luego intentar recordarlas yo mismo, no tengo la capacidad técnica para validar, y mucho menos responder por el contenido del artículo como se cita, así que léalo y saque sus propias conclusiones. Dicho esto, estoy convencido de que pwgen será suficiente para sistemas de baja seguridad donde el ataque es muy poco probable.

Es posible que desee revisar la pwgenaplicación. Sé que estará disponible en los repositorios Ubuntu, Fedora, Debian y Suse.

Desde la página del manual :

El programa pwgen genera contraseñas diseñadas para que los humanos las memoricen fácilmente, a la vez que es lo más seguro posible. Las contraseñas memorables para humanos nunca serán tan seguras como las contraseñas completamente aleatorias. En particular, las contraseñas generadas por pwgen sin la opción -s no deben usarse en lugares donde la contraseña pueda ser atacada mediante un ataque de fuerza bruta fuera de línea. Por otro lado, las contraseñas generadas completamente al azar tienden a escribirse y están sujetas a ser comprometidas de esa manera.

El programa pwgen está diseñado para usarse tanto de forma interactiva como en scripts de shell. Por lo tanto, su comportamiento predeterminado difiere dependiendo de si la salida estándar es un dispositivo tty o una tubería a otro programa. Utilizado de forma interactiva, pwgen mostrará una pantalla llena de contraseñas, lo que permite al usuario elegir una sola contraseña y luego borrar rápidamente la pantalla. Esto evita que alguien pueda "navegar por los hombros" con la contraseña elegida por el usuario.

BloodPhilia
fuente
3
Las contraseñas como 'Zei7jool' u 'Oowee6ei' no me parecen muy memorables. Tal vez me falta una bandera?
James McMahon
3
@James Se generan de acuerdo con un algoritmo que pone las letras en un sentido, sin embargo, porque son lógicas en la lingüística humana, orden recordable. Probablemente tendrá que hacer un esfuerzo similar para recordar la apples12$/fourteencontraseña. Solo inténtalo.
BloodPhilia
1
Expulsa una lista gigante de contraseñas, solo elija la más memorable: hay algunas gemas allí ;-)
virtualeyes
44
Las contraseñas de pwgen tienen serios problemas de seguridad por defecto, y no son muy memorables. use dados o xkcdpass en su lugar.
anarcat
1
@anarcat gracias! Estoy de acuerdo en que pwgen puede no ser la mejor opción (más) pero dejaré mi respuesta con el descargo de responsabilidad que agregué para abordar sus inquietudes en el lugar para fines históricos.
BloodPhilia
8

Recomendaría que las personas dejen de usar pwgen: su principal interés era generar "contraseñas recordables por humanos", pero mostró múltiples vulnerabilidades al hacer exactamente eso. Y usarlo para generar cadenas completamente aleatorias tampoco es tan útil.

Escribí un artículo detallado sobre ese mismo tema, pero básicamente, lo esencial es usar el programa de dados (o, si te gustan los dados, el sistema de dados real ) o xkcdpass . Para generar contraseñas fuertes y memorables, generalmente uso dados con el siguiente archivo de configuración:

[diceware]
caps = off
delimiter = "-"
wordlist = en_eff

Ejemplos:

$ diceware
turkey-eligibly-underwire-recite-lifter-wasp
$ diceware
lend-rubdown-cornflake-tint-shawl-ozone
$ diceware
syndrome-ramp-cresting-resolved-flinch-veneering
$ diceware
alto-badass-eclipse-surplus-rudder-quit

Apago las mayúsculas y los espacios porque generan ruidos audibles distintos que un atacante podría aprovechar. El -delimitador es un mal menor: sería mejor no usar ningún separador y la en_efflista de palabras está especialmente diseñada para ese propósito. Pero me resulta más fácil comunicar y compartir contraseñas cuando tienen algún separador.

Para generar una contraseña completamente aleatoria, uso la siguiente función de shell:

# secure password generator or, as dkg puts it:
# high-entropy compact printable/transferable string generator
# a password generator would be pwqgen or diceware
pwg() {
    ENTROPY=${1:-20} # in bytes
    # strip possible newlines if output is wrapped and trailing = signs as they add nothing to the password's entropy
    head -c $ENTROPY /dev/random | base64 | tr -d '\n='
    echo
}

Lo menciono porque creo que es importante memorizar menos contraseñas y en lugar de depender de un gestor de contraseñas para almacenar grandes cadenas que son difíciles de adivinar. En el artículo mencionado anteriormente y en la revisión de mi administrador de contraseñas se explican más detalles sobre la razón detrás de esas opciones .

anarcat
fuente
4

Prueba 'gpw'. Produce contraseñas como estas: ubsonsin morimplo demenump esselymn kidentst anenterg essonsuf iesssssi bestruss tnestese

Descripción: Trigraph Password Generator Este paquete genera contraseñas pronunciables. Utiliza las estadísticas de combinaciones de tres letras (trigrafos) tomadas de los diccionarios que le proporcione. Por lo tanto, la pronunciabilidad puede variar de un idioma a otro. Basado en las ideas del generador de contraseñas de Morrie Gasser para Multics y el generador de Dan Edwards para CTSS. El estándar 181 de FIPS describe un
generador similar basado en un dígrafo, derivado de Gasser.

Thomas
fuente
1

Una buena opción que ha aparecido desde que pregunté esto es el generador de contraseñas XKCD de Redacted .

Es un buen script de Python para generar contraseñas de estilo XKCD que tiene algunas opciones avanzadas como soporte acróstico.

James McMahon
fuente
0

sf-pwgen es una herramienta de línea de comandos que genera contraseñas utilizando el marco SecurityFoundation en OS X.

vdm
fuente