As senhas geradas por computador são seguras?

5

Lembrando que ser uma máquina determinística que um computador atual é incapaz de produzir seqüências aleatórias e todas as seqüências "aleatórias" geradas por computador são pseudo-aleatórias, na verdade, as senhas aleatórias geradas por computador não são seguras? Não é mais seguro apenas pressionar teclas aleatoriamente para criar uma senha aleatória do que usar um algoritmo de geração digital?

    
por Ivan 09.07.2010 / 01:23

6 respostas

5

Os humanos normalmente fazem um trabalho muito ruim na geração de aleatoriedade . É possível obter números verdadeiramente aleatórios para senhas geradoras de computadores. Uma maneira seria configurar o computador para se propagar a partir de random.org que gera números monitorando o ruído atmosférico. Um computador em geral faz um trabalho tão bom ou melhor do que a pessoa comum que provavelmente não se importa muito com a aleatoriedade da senha.

Hoje em dia, as senhas não são realmente úteis assim mesmo. Se você fizer uma busca, pode multar vários profissionais de segurança, argumentando que as pessoas estão exagerando em suas expectativas sobre senhas. Acho que você descobrirá que está se tornando muito mais comum a aquisição de senhas por phishing, registradores de teclado e outros tipos de ataques em que o tamanho da senha e o nível de aleatoriedade são completamente irrelevantes.

Qualquer sistema bem projetado impedirá que um intruso execute qualquer tipo de ataque de dicionário remotamente usando bloqueios e tentativas de autenticação limitadoras de taxa. Os hashes secretos estarão bem protegidos contra interceptação.

Claro que isso, como todas as coisas relacionadas à segurança, depende da quantidade de risco. Para um sistema de baixo valor, com senhas razoavelmente seguras, as senhas geradas por computador são quase certamente boas. Se você é responsável pela segurança dos códigos para as armas nucleares, provavelmente vai querer gastar um pouco mais de esforço com boas senhas.

Are computer-generated passwords secure?

Eu sinto muito, mas seguro nunca teve e provavelmente nunca será binário. Nada estará em um estado 100% seguro ou não. Senhas geradas corretamente em muitos casos serão muito mais seguras que as alternativas.

    
por 09.07.2010 / 01:48
3

Seu argumento tem algumas premissas:

Dado: Boas senhas são completamente aleatórias
Dado: As senhas geradas por uma máquina determinista não são aleatórias

SE determinista ENTÃO não aleatório Se não aleatório, então não é bom

Portanto: senhas geradas não são boas. QED.

Sua premissa de que boas senhas são completamente aleatórias está incorreta. A experiência mostrou que boas senhas têm várias características. Boas senhas têm que resistir a certos tipos de ataques, dos quais apenas um é a adivinhação de senhas. Mais de 50 anos de experiência com senhas demonstraram que boas senhas têm vários traços:

  • Tempo suficiente para que adivinhações aleatórias demorem demais.
  • Tenha entropia suficiente para tornar cada personagem significativamente não dependente de outros caracteres na senha.
  • Podem ser memorizados.

A morte (bem-vinda) do limite de 8 caracteres nas senhas abriu um novo universo de boas possibilidades de senha. Ele também dividiu o que conta como uma boa senha.

Uma boa senha no Solaris: 1ŤŁ $ $ R =
Uma boa senha no Windows: 0123456789abcefBubba2pAantz

O primeiro tem entropia muito alta com oito caracteres. O segundo tem entropia risível para 16 caracteres, mas entropia aceitável depois disso. O segundo seria uma senha insana para o Solaris, uma vez que seria truncado após o 8º caractere, onde o primeiro seria lamentável no Windows se aquele hash de senha já tivesse sido descoberto (farejado em vôo, sugado de um controlador de domínio, esse tipo de coisa ) graças ao Rainbow Tables. (Eu tive uma postagem no blog sobre isso há algum tempo que entra em mais detalhes sobre esse problema no contexto das políticas de senha entre plataformas. Link )

Portanto, uma boa senha tem alta entropia AND length. Quando você não pode usar o comprimento (aquele limite de 8 caracteres novamente) você está preso com alta entropia. Quando você tem um comprimento muito grande (512 caracteres!), A senha pode incluir significativamente menos entropia para a mesma resistência de ataque.

Em resumo, boas senhas podem ser completamente aleatórias. Não deve ser .

Quanto ao seu segundo ponto, sobre a incapacidade de uma máquina determinista de produzir saída aleatória. Uma máquina determinística usando uma entrada aleatória pode produzir saída contendo zero para a quantidade de entropia que ela obteve como entrada, mas não introduz qualquer nova entropia. Desta forma, um gerador de senhas usando 2 bytes de entropia de / dev / random (não / dev / urandom) pode produzir uma senha de 40 caracteres de alta aleatoriedade aparente. É claro que, se esses dois bytes e o algoritmo usado para gerar senhas forem conhecidos pelo invasor, a senha real poderá ser derivada.

O algoritmo é mais fácil de descobrir do que os bytes aleatórios reais usados para semear o algoritmo. Eles são bem publicados, já que a pseudo-aleatoriedade de alta qualidade é uma coisa valiosa para todos. Isso significa que os invasores precisam tentar (neste caso) todas as combinações possíveis de 2 bytes para cada comprimento permitido. (Veja também: Rainbow Tables )

Até, Senhas geradas por uma máquina determinista podem ter alta aleatoriedade.

E, finalmente, o que torna as senhas geradas por máquinas ruins é não a sua capacidade de serem derivadas pós-facto, é o terceiro ponto que fiz sobre o que faz uma boa senha: ser memorizado . Senhas geradas por computador, especialmente as longas, podem ser MUITO difíceis de memorizar, o que, por sua vez, leva a que sejam escritas em algum lugar inseguro. Ou mudado rapidamente para outra coisa com menor comprimento / força de entropia.

    
por 11.07.2010 / 06:00
2

Isn't it more secure to just press keys randomly to create a random password than to use a digital generation algorithm?

Não.

Para um determinado comprimento de senha, um que é gerado aleatoriamente a partir do conjunto completo de símbolos possíveis será significativamente mais seguro do que apenas pressionar teclas aleatoriamente.

    
por 11.07.2010 / 05:05
1

Isn't it more secure to just press keys randomly to create a random password than to use a digital generation algorithm?

Na prática, pode ser, embora enquanto pressiona as teclas aleatoriamente, as chances de você mudar de turno para fazer alguns símbolos é improvável:)

Para senhas pseudo-aleatórias, tudo depende de como você as está gerando. Há uma infinidade de fontes que você pode usar como entrada em um algoritmo e muitos algoritmos para utilizar. As coisas que tornariam fraca uma senha longa e gerada aleatoriamente são:

  • Os dados usados como uma semente para o algoritmo
  • O próprio algoritmo

essencialmente, é um quebra-cabeça de 2 peças que leva um tempo para ser concluído. Se eles têm os detalhes, é só uma questão de tempo antes de ser quebrado. Falando de tempo, é uma das sementes mais comuns usadas na geração pseudo-aleatória.

Se houver uma dica que eu possa dar a você para manter uma senha segura, gerada por computador ou não, seria usar uma senha muito longa, que levará muito tempo para decifrar. Além disso, não use ferramentas on-line para gerar senhas. Em uma linha simples de código, as pessoas que hospedam o gerador podem inserir as senhas geradas em um banco de dados.

    
por 09.07.2010 / 01:50
0

Você disse isso, depende de quão "aleatórias" são as senhas.

Um programa de senha gerado por computador que se parece com isso:

string generatePassword(){
    return "asdf";
}

não vai ser muito bom.

A desvantagem de "pressionar aleatoriamente" é que sua proporção de caracteres "especiais" (! @ # $% ^ < > etc) será baixa, pois é improvável que você esteja pressionando o deslocar a tecla ao mesmo tempo em que você pressiona '-0 ou qualquer uma das outras chaves não alfa.

    
por 09.07.2010 / 01:45
0

Eu vou te pagar 200 US $ por quebrar minha senha de símbolos de 25 símbolos de 22 a 25 símbolos (o comprimento também é aleatório) Eu uso no ServerFault.

Agora, seriamente, um hacker pode provavelmente encontrar uma senha gerada aleatoriamente se:

  • Ela tem um conhecimento enorme em segurança de computadores e algoritmos usados para gerar números aleatórios,
  • Ela sabe exatamente qual aplicativo usou um alvo para gerar aleatoriamente uma senha,
  • Ela pode encontrar quando a senha foi gerada (até μs.)
  • Ela tem sorte.

Então, tenho algumas dúvidas de que todo hacker pode fazer isso.

Agora, a maneira mais óbvia usada para quebrar senhas é a força bruta.

Se um alvo digitar sua senha "aleatoriamente" no teclado, a senha terá grandes chances de corresponder a um padrão: por exemplo, se a primeira letra digitada estiver no lado esquerdo de um teclado, a segunda será provavelmente esteja do lado direito ou seja um número ou um símbolo.

Seria interessante testá-lo pedindo que as pessoas digam uma coisa "aleatória" usando apenas quatro dígitos. Minha expectativa é que, primeiro, os números digitados não sejam aleatórios, e alguns serão muito mais freqüentes do que os outros (por exemplo, se formos solicitados a digitar algo "aleatório", nunca digitaremos "1234" ou "7458" ou "3197" ou "5555").

Como as senhas geradas por máquina e as digitadas pelo homem vazam alguma aleatoriedade, IMHO, o melhor seria combinar as duas. Por exemplo, a senha será gerada a partir de uma entrada do usuário ou combinada com ela. By the way, algum tipo de implementação é um sal (por exemplo, onde uma senha de um usuário enviado em um site é combinada a um conjunto de símbolos gerado aleatoriamente antes de calcular e armazenar um hash: neste caso, se dois usuários têm o mesma senha, o hash ainda será diferente).

    
por 09.07.2010 / 01:47

Tags