
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
Háum site que pode fornecer um valor estimado de entropia para uma entrada de senha. Para o exemplo acima, sugere ~247 bits.
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.
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 bit
entropia (é 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 bits
você 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, e
ele é seguido por um símbolo:
e&
e&
e%
e%
Então 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 da informação a:
ln(24^36) / ln(2) = 165 bits
E notei 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 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^11
palavras 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