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:
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:
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