Gerador de senha que combina palavras reais

5

Eu me inspirei nessa webcomic xkcd:

O tópico também é discutido aqui: link

Agora eu me pergunto:
Como posso criar uma senha com quatro palavras aleatórias do dicionário sem usando a internet?

    
por dessert 15.11.2017 / 21:48

4 respostas

3

O aspecto do computador

Use um método que forneça entropia de aleatoriedade suficiente, geralmente medida em bits.

Aceite a primeira escolha oferecida do processo aleatório. Caso contrário, a entropia diminui (geralmente mais do que você imagina) e seu nível de segurança será menor.

O aspecto humano

Considerando o aspecto humano, é importante que você possa

  • aceitar

  • lembre-se

  • soletrar

as palavras na senha / senha.

Para preservar a aleatoriedade, entropia, é muito importante que você aceite a primeira escolha oferecida, e a lista de palavras pode fazer a diferença.

Usar uma lista de palavras grande fornece mais entropia por palavra, mas é provável que você ou os usuários do grupo, cuja segurança de TI você está gerenciando, se recusem a usar a primeira senha / frase secreta oferecida. Seu nome, cidade ou outros dados pessoais podem ser selecionados da lista de palavras em um caso extremamente raro, mas com mais frequência você pode se sentir ofendido por uma palavra política, étnica, religiosa, sexual ou geralmente rude. É claro que, se você gosta dessas palavras, pode adicioná-las à sua própria lista de palavras ;-), mas não as force a outras pessoas.

Isso tornará mais fácil aceitar, lembrar e soletrar a senha / senha, se você usar uma lista das palavras mais comuns, onde as palavras são selecionadas para esse fim específico .

Crie uma lista de palavras você mesmo

Você mesmo pode criar essa lista (e em seu próprio idioma e remover palavras com caracteres especiais, porque elas podem causar problemas em alguns softwares).

O seguinte script pruner pode ajudar. Você obtém apenas palavras minúsculas, o que facilita a digitação (caracteres especiais são removidos) e apenas palavras no intervalo [4,10] letras (não muito curtas, nem muito longas). Mas não há classificação desses arquivos de acordo com a facilidade de aceitação. Você precisa de outras informações para remover palavras incomuns, difíceis e potencialmente ofensivas, ou pode fazê-lo manualmente.

#!/bin/bash

LANG=C

for wordlist in \
$(find /usr/share/dict/ /usr/lib/python3/dist-packages/xkcdpass/static -type f -size +10k) \
$(ls -1 word-list.txt 2> /dev/null)
do
# prunedlist="${wordlist##*/}"
 prunedlist="${wordlist//\//_}"
 prunedlist="${prunedlist/.txt}-pruned.txt"

 echo "source:  $wordlist"
 echo -n "Total number of words in list:              "
 < "$wordlist" wc -l

 echo "target:  $prunedlist" 
 echo -n "Used lower case words ( 4 < length < 10 ):  "

 < "$wordlist"  tr -d '5'| \
 grep '^[a-z]\{4,10\}$' | \
 tee "$prunedlist" | \
 wc -l
 echo "-------"
done

O shellscript encontrará as listas de palavras padrão e também listas de palavras para xkcdpass e cracklib , se instalado.

Agora você pode executar sua linha de comando shuf para testar as listas de palavras removidas,

$ for i in *pruned*; do echo "$i:";shuf -n4 "$i"| awk NF=NF RS= OFS=' ';echo "-----";done

mas eu preferiria xkcdpass .

Faça o download de uma lista de palavras

Você pode fazer o download de uma lista desse tipo (verifique se ela consiste de palavras únicas e se é longa o suficiente, pelo menos 2048 palavras = 2 ^ 11 palavras, o que corresponde a 11 bits de entropia).

O download, a verificação e o uso desse arquivo da Internet devem ser seguros. Como de costume, você deve usar somente sites confiáveis.

O importante para a segurança não são as próprias palavras, mas você deixa um processo aleatório (por exemplo, um dado) ou um bom processo de computador pseudo-aleatório seleciona as palavras . Não adultere o processo aleatório selecionando ou modificando a senha manualmente.

Nesta página wiki da ajuda do Ubuntu: O método XKCD - xkcdpass você pode encontrar um

Lista de palavras personalizadas - 'word-list.txt'

Linhas de comando úteis com xkcdpass

Decida o que funciona melhor para o nível de segurança necessário no seu caso específico,

  • menor número de palavras que são estranhas e complicadas
  • maior número de palavras comuns e fáceis

Pode variar entre pessoas (e grupos de pessoas, se você estiver pensando em como definir uma política ou uma ferramenta personalizada para uma organização).

Você pode permitir que xkcdpass compute aleatoriedade entropia em bits adicionando a opção verbosity -V . Estes exemplos usam a lista de palavras padrão e a lista de palavras personalizadas da página de ajuda do Ubuntu word-list.txt ,

xkcdpass -V -n 3
xkcdpass -V -n 4 --min 4 --max 10 -d . -w word-list.txt

Usando o arquivo de palavras padrão: menor número de palavras que são estranhas e complicadas

# Normal security level at home, entropy = 45 bits;

$ xkcdpass -n 3
demeanour basely extrude

# Next security level, entropy = 60 bits:

$ xkcdpass -n 4
metal cottager advocacy soursop

# High security level, entropy = 76 bits:

$ xkcdpass -n 5
hostile impounder Caledonia ramie Goddard

# Very high security level, entropy = 91 bits:

$ xkcdpass
ambrosia Cossack vivify Barbudan royal Campinas

Por favor, note que esta é a configuração padrão. Mas o nível de segurança é muito alto somente se o usuário

  • pode aceitar a primeira senha / frase secreta oferecida,
  • pode lembrá-lo sem um adesivo post-it no monitor / laptop (ou outro 'atalho'),
  • pode soletrá-lo sem um adesivo post-it no monitor / laptop (ou outro 'atalho').

Usando um arquivo de palavras personalizado: maior número de palavras comuns e fáceis

# Normal security level at home, entropy = 47 bits:

$ xkcdpass -n 4 --min 4 --max 10 -d . -w word-list.txt
sharp.hockey.steal.backyard

# Next security level, entropy = 59 bits:

$ xkcdpass -n 5 --min 4 --max 10 -d . -w word-list.txt
initially.assistant.barely.framework.regional

# Next security level, entropy = 71 bits:

$ xkcdpass -n 6 --min 4 --max 10 -d . -w word-list.txt
snake.food.dress.perception.club.waste

# High security level, entropy = 83 bits:

$ xkcdpass -n 7 --min 4 --max 10 -d . -w word-list.txt
stand.mentor.know.cream.automatic.treatment.effect
    
por sudodus 16.11.2017 / 15:56
4

Os dicionários instalados localmente são armazenados em /usr/share/dict/ , por exemplo:

$ ls -1 /usr/share/dict/
american-english
british-english                                                                                                          
cracklib-small                                                                                                             
README.select-wordlist                                                                                                  
words                                                                                                                    
words.pre-dictionaries-common

Aqui os dois primeiros são interessantes, esses dicionários são simples listas de palavras com uma palavra por linha. Podemos usar shuf para gerar 4 linhas aleatórias de um deles (e awk para substituir novas linhas por espaços):

shuf -n4 /usr/share/dict/american-english | awk NF=NF RS= OFS=' '

Veja alguns exemplos de saída:

contributions autumn's catalepsy's hemline's
footlights Levi's awfuller rascals
fogies flavoring preregistering requital's
Coleman's cartel halfpennies Williamson
étude's maintainers reviler's dapperest
pizazz Galahads McDowell derby
corroborate bureaucracies anchovy meager
filet Tawney feudalistic backstabbing
Beatriz sitcom surpasses guttural's
warehouse's unfamiliarity's Ashlee's sanguinary
    
por dessert 15.11.2017 / 21:48
3

Provavelmente, existe um grande número de implementações de geradores de senha XKCD por aí:

  • xkcdpass , disponível no pacote xkcdpass , Python (parece não usar um CSPRNG)

    $ xkcdpass
    baroque viand blindfold hooch notion ravening
    $ xkcdpass -n4
    useless elated liveable overfly
    
  • xkcd-password , módulo NodeJS
  • dezenas de sites
  • diceware , que segue um processo semelhante, mas usando sites
  • ...

Escolha seu veneno.

Veja também:

por muru 16.11.2017 / 02:05
2

Por favor, não faça isso.

  • Talvez algumas ferramentas apenas adivinhem senhas usando caracteres, mas algumas adivinham várias palavras comuns em breve, se ainda não o são.
  • Se você está se lembrando de suas senhas, você está quase certamente reutilizando-as (talvez com variações) para sites diferentes. Se você tem 30 contas na internet, aposto que pelo menos uma de suas senhas é comprometida a cada ano. Alguém com sua senha de um site tentará isso com variações nas outras contas. Portanto, sua senha do horseBatteryStapleLinkedIn permite que alguém adivinhe que sua senha do Gmail é horseBatteryStapleGoogle, horseBatteryStapleGmail, horseBatteryStapleLiamg (o Gmail soletrou de trás para frente). Se você puder pensar nisso, outra pessoa também pode.

Eu sei que é um saco, mas use um gerenciador de senhas. Crie senhas únicas e aleatórias para cada site. Se você é paranoico como eu, pode alterar alguns caracteres na senha sugerida, caso o algoritmo (pseudo) aleatório do gerador seja comprometido. Eu gosto do KeePassX com o banco de dados do DropBox, mas o LastPass é mais fácil para algumas pessoas usarem. Existem muitos gerenciadores de senhas pagos também.

Boas notícias

O cérebro humano é bom em impor ordem, mesmo quando não há nenhum. Você pode se lembrar de personagens aleatórios olhando para eles até perceber a ordem no caos. Não há ordem. Isso é exatamente o que seu cérebro faz. Por exemplo:

bJbRpZ2S9

Significa algo para você. Se você digitar várias vezes, surgirá algo assim para lembrar:

black Jack beyond Re post Zaps 2 Surly 9's

Você pode eventualmente se lembrar de 2 ou 3 senhas mestres dessa maneira. Um para o seu sistema operacional e outro para o gerenciador de senhas. Isso é tudo que você precisa.

P.S. Ao usar um gerenciador de senhas, imprima periodicamente suas senhas e coloque-as em um envelope inviolável em um local seguro para que você não as perca. Idealmente, onde seus parentes próximos podem obtê-los se algo acontecer com você, como um cofre.

    
por GlenPeterson 16.11.2017 / 17:24