Anteriormente expliqué de qué forma era posible generar contraseñas aleatorias desde línea de comandos leyendo directamente desde el dispositivo /dev/random. En esta oportunidad voy a demostrar el uso de la herramienta pwgen, la cual permite generar contraseñas aleatorias, también desde línea de comandos, pero que sean fáciles de pronunciar.

Las contraseñas memorizables nunca van a ser tan seguras como aquellas completamente aleatorias y no se recomienda su uso en lugares donde la contraseña puede ser atacada mediante fuerza bruta offline (cuando el atacante tiene acceso al hash). Sin embargo, las contraseñas completamente aleatorias tienen una tendencia a ser anotadas, con lo cual su seguridad se ve comprometida de esa forma.



El programa pwgen genera contraseñas diseñadas para ser fácilmente memorizadas por humanos, al mismo tiempo que son lo más seguras posibles. En Debian y derivados es provisto por el paquete homónimo:

# apt-get install pwgen

pwgen puede ser utilizado de forma interactiva o desde scripts. De este modo, el programa se comporta diferente dependiendo si la salida estándar es una tty o un pipe.

Cuando se usa de forma interactiva, muestra un pantallazo completo de contraseñas. El usuario puede elegir una del montón y luego borrar la pantalla, de forma de evitar el shoulder surf (o "pispeo" de la contraseña):

# pwgen
aetaGeo4 Hoh4Aech IeNa8xoh co8ieKee uuCh6kai Xoong5Ee fah9ohBa Xo6wequi
ahS8quoh paitof6N OoQu8hai eaN5zeeY Cu4ri6al Haich5Oh au5PeiYa ieHoh6ik
Teifae5t beig4AoN oiph1TaP eeY5ceol aiN7aeth eeC7uvaw io4uYin0 ixooSh0c
ju6uFeix aibaHe8a Ee3ieQu3 aKa5it3u bairo7Bi air0Xeij av7Eechu Tair6jah
Gaex8Cee Uleo7OoM aph7Jei0 ooVae2je xo9ooG9w oob0eeK7 Ika5orid JaeVaye4
Ahdoh2ah via1Shee kitee2Re Ro7heiQu Doaqu4ph IefoLas7 thai4Maf ooToh8lo
vae2deeP thuNge8o Ei5eiquu maeX3puz eich2Iez vooYoo0e ohjae7Aw achoLai3
Ohzee5ah koF2Aeha Ashohho5 dai9ohWa Ariel5oc ieSee9oh waiNga0B eKohn9ye
tiu3yo7M waeD5zie Eigaoph8 iY7aap5d Aeka9ohX eiPiesh9 pahMi2ee wi0Ea3Bo
Gaod7pah ieB4Iere Dai9Ezie Xa1zoije ueR5eide ahk2Eesh yo7Quahs Xee2phio
ieFoo4ic AiTheo4r eeD2xoh8 eiNuifi9 Eequ9gee eicoo8De aiZ6ui0n eeJ9vaph
iek9EeGi Eeje8xah Qui3ahTo iegh4Vo0 Aegho7oo ooghei3E Azei4Aiy ai0Jei8c
ge9ieJae ohy7eeGh au3Xiero on7ish5A Chos6xoh Lez3hiek soo1taiM moNa3nae
Ii4AhJoh tiu0cohM Eisa6Eed ehoo0Jai zae7iToa Chei0ush gie2Chic Eey6Mij3
AF5yaip4 oSho2gie ZeiP0gay roh6Echa weeS7lee maiCa4oh iequ5Eer oaM5eibo
Zuxahl3o eeGhai3i roo4oc1I jai5aeD2 Sooso7yo ea6moriJ AeZ3Phae XieW4ei9
keMuwah2 tahp9Axe eeSaij1e Xahlah5W Uph2Eiwa zaeN0ofa oVe5oos5 Iesh4shi
yeeG4IYu Eil8eSha cie6eeFe TaNgu2qu Ohsho6om eeC1Kohz thuyaa9G ohk5Ieve
kohc9Sei aeheePh1 bo2VoG5u Ohph1up0 AeX6eev0 yaiph2Te ohc3tooK oox4Chi8
da8aiSai BiThohp7 Shohgeo1 bie3Wish eiN3Quo4 yaeyiS6e iYaipur1 kohXooc2

Cuando la salida estándar (stdout) no es una tty, pwgen genera una sola contraseña, lo cual es conveniente para utilizar desde scrips:

# pwgen | cat
Iexevah5

Por defecto genera contraseñas de 8 caracteres, sin embargo es posible indicar la longitud deseada junto con la contraseña a generar:

# pwgen 10 4
Zudee4aesh ieJahxah0t aiBu1ailah eighuiZuo6

Agregar la opción -1 si se desea una contraseña por línea (en lugar de filas y columnas):

# pwgen -1 10 4
Re6Iileera
neiVee0Oow
aiTh5Afoob
niph9veiG3

Una opción muy interesante es -B. Esta elimina el uso de caracteres ambiguos que se prestan a confusión (según el tipo de fuente utilizado), como es el caso de la letra L minúscula con el 1 (l y 1), o el número 0 y la O mayúscula (0 y O):

# pwgen -B 10 1
uzohm9Aixo

Obviamente al quitar estos caracteres la fortaleza de las contraseñas generadas se ve afectada, y no se recomienda utilizarla. Pero puede ser de gran utilidad para personas con problemas de visión.

Si en lugar de contraseñas fáciles de memorizar y pronunciar se desean obtener contraseñas seguras y completamente aleatorias, emplear la opción -s:

# pwgen -s 10 1
AZjZtEvB8t

Para mayor seguridad, agregar la opción -y, la cual incluye símbolos imprimibles dentro del conjunto de caracteres utilizado:

# pwgen -1 -s -y 10 4
XJ9*AnN{&&
%jK+##r0$l
FCqb:n"7.(
6QAd(_~P<d

No hace falta aclarar que no se debe usar ninguna de las contraseñas mostradas en este artículo en ningún sistema.


Tal vez pueda interesarte


Compartí este artículo