Como determinar a entropia de uma senha

Como determinar a entropia de uma senha

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

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

Responder1

um site que pode fornecer um valor estimado de entropia para uma entrada de senha. Para o exemplo acima, sugere ~247 bits.

Ferramenta de força de senha


Você pode ter uma estimativa aproximada de quanto tempo levará para quebrarQuão segura é minha senha.

Ele sugere que um computador levaria 15 novemdecilhões de anos para quebrar a senha do seu exemplo.

Quão segura é minha senha


Uma análise mais detalhada da senha pode ser vista emO medidor de senha.

Responder2

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

A verdadeira resposta - "não"

A resposta útil - "Provavelmente, pelo menos no futuro próximo"


O que você deveria estar perguntando:

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 justo, 210 bits, como @Gareth apontou, provavelmente funcionarão por muito tempo, mas isso pode ser um exagero, e háboas razões para não exagerarna criptografia se você não precisar.

Responder3

DeBlog de tecnologia do Dropbox,este é o melhor artigoque tenho visto recentemente, e até mostra uma implementação das teorias discutidas nele. Fique à vontade para me informar se isso for útil de alguma forma.

Outra coisa a ter em mente sobre segurança é a ideia expressa nesteQuadrinhos XKCD.

Responder4

Depende de quão aleatória é sua senha.

Se você escolher uma senha da lista a seguir:

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

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

Foi quando você leu oQuadrinhos XKCDqueDave 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úsculas 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.

Avançarassumindoque todas as suas senhas tenham 40 caracteres, isso fornece:

92^40 = 3.56+E78

ou3,5 quinvigintillionpossíveis senhas.

Para converter isso em bitsvocê faz:

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

Isso pressupõe que o invasor teria que forçar a senha com força bruta.


Se quisermos apenas informações, então o número de bits é na verdade muito menor, porque na verdade você 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)

Fazendo o mesmo cálculo:

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

Realisticamente, há menos informações porque posso ver que toda vez que você digita um, eele é seguido por um símbolo:

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

Então substituímos e&pelo símbolo he 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 da informação a:

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

E notei que cada !é precedido por um ae 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 apenas reduz os bits necessários para a codificação, à medida que descobrimos oconteúdo informativoda mensagem.

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

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

adfadsfadsf

junto com 18.400 outros resultados do Google.


Minha senha mais segura tem 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 éonzepalavras. Existem cerca de 2^11palavras comuns na língua inglesa. 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 supostamente assumidos a partir de uma senha aleatória de 57 caracteres.

eu poderia adicionarum poucose eu escolher entre:

  • espaços entre as palavras
  • sem espaços entre as palavras

informação relacionada