Como determinar a entropia de uma senha

6

Como posso saber se uma senha tem entropia boa o suficiente para impedir a força bruta em uma escala de tempo realista? Por exemplo, se eu tiver a seguinte senha, como posso determinar se ela é strong o suficiente para impedir a força bruta?

"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
    
por abdadooo22 09.04.2011 / 10:39

4 respostas

13

um site que pode fornecer uma estimativa de entropia para uma entrada de senha . Para o exemplo acima, ele sugere ~ 210 bits.

Vocêpodeobterumaestimativamuitoaproximadadequantotempolevaráparadecifrar Quão segura é minha senha .

Ele sugere que um computador de mesa padrão 2 vigintillion anos para quebrar a senha no seu exemplo.

Umaanálisemaisdetalhadadasenhapodeservistaem O medidor de senha .

    
por 09.04.2011 / 11:01
4

Sua pergunta - "É strong o suficiente para impedir a força bruta?"

A resposta real - "não"

A resposta útil - "Provavelmente, pelo menos no futuro previsível"

O que você deveria perguntar:

Eu preciso proteger esse tipo de dados, que tem requisitos xey, e sensibilidade z para minha empresa. Este é um nível apropriado de entropia?

Ok, para ser sincero, 210 bits como @Gareth apontou provavelmente ficarão bem por muito tempo, mas isso pode ser um exagero, e existem boas razões para não passar por cima da criptografia se você não precisa.

    
por 09.04.2011 / 23:17
4

Do blog de tecnologia do Dropbox , este é o melhor artigo que eu vi recentemente, e ainda mostra em uma implementação sobre as teorias discutidas dentro. Por favor, sinta-se livre para me informar se isso é útil de alguma forma.

Outra coisa a ter em mente sobre segurança é a ideia expressa nesta história em quadrinhos do XKCD .

    
por 20.06.2012 / 21:10
2

Depende da aleatoriedade da sua senha.

Se você escolher uma senha na lista a seguir:

  • "?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
  • aSBsb3ZlIHlvdSBLaXJzdGVuIFNoZWxieSBHdXllcg==

Então você tem exatamente 1 bit de entropia (é a primeira senha ou a segunda).

É aí que você lê os quadrinhos XKCD que Dave vinculado .

Mas posso fazer algumas suposições sobre sua senha:

"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245  (40 characters)

Parece que você usa um alfabeto de:

  • maiúsculas A-Z (26 glifos)
  • minúscula a-z (26 glifos)
  • algarismos latinos 0-9 (10 glifos)
  • conjunto limitado de pontuação (assumindo os 30 símbolos em um teclado de 101 teclas)

Isso totaliza um alfabeto de 92 caracteres.

Mais assumindo que todas as suas senhas têm 40 caracteres, isso significa:

92^40 = 3.56+E78

ou 3,5 quinvigintillion possíveis senhas.

Para converter isso em bits você faz:

ln(92^40) / ln(2) = 260.94 bits

Isso supondo que o invasor tenha que forçar a senha.

Se quisermos apenas informações, o número de bits é realmente muito menor, porque você realmente usou um alfabeto muito mais curto:

  original: "?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
rearranged: aaaaacdeeeegnoorrtuwyHI2245""?&&!!!!%%#$
  alphabet: acdegnortuwyHI245"?&!%#$   (24 characters)

Executando o mesmo cálculo:

ln(24^40) / ln(2) = 183.4 bits

Realisticamente, há menos bits de informação lá porque eu posso ver que toda vez que você digita um e ele é seguido por um símbolo:

  • e&
  • e&
  • e%
  • e%

Portanto, substituímos e& pelo símbolo h e e% pelo símbolo i :

  original: "?hyhga!ruaa!na!ita!irc#Iod$woH"2245  (36 characters)
rearranged: aaaaacdghhiinoorrtuwyIH2245""?!!!!#$
  alphabet: acdghinortuwyIH2245"?!#$   (24 characters)

O que reduz o conteúdo das informações para:

ln(24^36) / ln(2) = 165 bits

E percebi que cada ! é precedido por um a e seguido por uma letra:

  • a!r
  • a!n
  • a!e

Substituindo a! por k :

  original: "?hyhgkruaknkitkirc#Iod$woH"2245  (32 characters)
  alphabet: acdghiknortuwyIH2245"?#$   (24 characters)

Reduzindo bits para ln(24^32)/ln(2) = 146.7 .

Isso reduz apenas os bits necessários para a codificação, pois descobrimos o conteúdo da informação da mensagem.

Esses truques não ajudam um invasor, que geralmente não pode presumir que todas as senhas tenham essas sequências conhecidas.

Mas existem algumas heurísticas que podem ser programadas em um algoritmo de busca de chave. As pessoas que tentam digitar aleatoriamente digitam muito as mesmas coisas. Por exemplo, muitas vezes recebo uma colisão quando digito aleatoriamente:

adfadsfadsf

junto com 18.400 outros resultados do Google.

Minha senha mais segura é 57 caracteres, com um alfabeto de 27 caracteres ( a-z , ), que vem em 266 bits ( ln(27^56) / ln(2) = 266.27 ).

Por outro lado, são onze palavras. Existem cerca de 2^11 de palavras comuns no idioma inglês. Isso dá:

(2^11)^11 = 2.66E36 passphrases => ln((2^11)^11)/ln(2) = 121 bits

Muito menos do que os 266 bits que seriam assumidos de uma senha aleatória de 57 caracteres.

eu poderia adicionar um bit se eu escolhesse entre:

  • espaços entre as palavras
  • nospacesbetweenthewords
por 15.04.2012 / 19:52