Eu recomendaria que as pessoas parassem de usar o pwgen - seu principal interesse era gerar "senhas que possam ser lembradas por humanos", mas mostrou várias vulnerabilidades ao fazer exatamente isso. E usá-lo para gerar seqüências completamente aleatórias também não é útil.
Escrevi um artigo detalhado sobre esse mesmo tópico, mas basicamente o essencial é usar o programa de diceware (ou, se você gosta de dados, o sistema real de diceware ) ou o xkcdpass . Para gerar senhas fortes e memoráveis, geralmente uso o diceware com o seguinte arquivo de configuração:
[diceware]
caps = off
delimiter = "-"
wordlist = en_eff
Exemplos:
$ 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
Eu desligo caps e espaços porque eles geram ruídos audíveis distintos que podem ser aproveitados por um invasor. O -
delimitador é um mal menor: seria melhor não usar nenhum separador e a lista de en_eff
palavras é especialmente criada para esse fim. Mas acho mais fácil comunicar e compartilhar senhas quando elas têm algum separador.
Para gerar uma senha completamente aleatória, eu uso a seguinte função 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
}
Menciono isso porque acredito que é importante memorizar menos senhas e, em vez disso, confie em um gerenciador de senhas para armazenar grandes seqüências de caracteres difíceis de adivinhar. Mais detalhes sobre a lógica por trás dessas opções são explicados no artigo mencionado acima e na revisão dos meus gerenciadores de senhas .