Это зависит от того, насколько случайным является ваш пароль.
Если вы выбираете пароль из следующего списка:
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
aSBsb3ZlIHlvdSBLaXJzdGVuIFNoZWxieSBHdXllcg==
Тогда у вас ровно 1 bit
энтропии (это либо первый пароль, либо второй).
Именно тогда вы прочитали комикс XKCD, который связал Дейв.
Но я могу сделать некоторые предположения о вашем пароле:
"?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245 (40 characters)
Похоже, вы используете алфавит:
- прописные буквы
A-Z
(26 символов)
- строчная
a-z
(26 символов)
- латинские цифры
0-9
(10 символов)
- ограниченный набор знаков препинания (при условии 30 символов на клавиатуре из 101 клавиши)
Это составляет алфавит из 92 символов.
Далее, если предположить, что все ваши пароли состоят из 40 символов, это дает вам:
92^40 = 3.56+E78
или 3,5 quinviginllion возможных паролей.
Чтобы преобразовать это в bits
вы делаете:
ln(92^40) / ln(2) = 260.94 bits
Это предполагает, что ваш злоумышленник должен будет взломать пароль.
Если нам нужна только информация, то количество битов на самом деле намного меньше, потому что вы на самом деле использовали более короткий алфавит:
original: "?e&ye&ga!ruaa!na!e%ta!e%rc#Iod$woH"2245
rearranged: aaaaacdeeeegnoorrtuwyHI2245""?&&!!!!%%#$
alphabet: acdegnortuwyHI245"?&!%#$ (24 characters)
Выполняя тот же расчет:
ln(24^40) / ln(2) = 183.4 bits
Реально там меньше информации, потому что я вижу, что каждый раз, когда вы печатаете e
за ним следует символ:
Таким образом, мы заменяем e&
символом h
, а e%
символом i
:
original: "?hyhga!ruaa!na!ita!irc#Iod$woH"2245 (36 characters)
rearranged: aaaaacdghhiinoorrtuwyIH2245""?!!!!#$
alphabet: acdghinortuwyIH2245"?!#$ (24 characters)
Что уменьшает содержание информации до:
ln(24^36) / ln(2) = 165 bits
И я заметил, что каждый !
предшествует a
и сопровождается буквой:
Замена a!
с k
:
original: "?hyhgkruaknkitkirc#Iod$woH"2245 (32 characters)
alphabet: acdghiknortuwyIH2245"?#$ (24 characters)
Сокращение битов до ln(24^32)/ln(2) = 146.7
.
Это только уменьшает количество битов, необходимых для кодирования, так как мы выясняем информационное содержание сообщения.
Эти приемы не помогают злоумышленнику, который обычно не может предположить, что все пароли имеют эти известные последовательности.
Но есть некоторые эвристики, которые можно запрограммировать в алгоритм поиска ключа. Люди, пытающиеся печатать случайно, часто пишут одни и те же вещи. Например, я часто получаю столкновение при случайном наборе:
adfadsfadsf
наряду с 18 400 другими результатами Google.
Мой самый безопасный пароль - 57 символов, с алфавитом из 27 символов (a-z
,
), что соответствует 266 bits
(ln(27^56) / ln(2) = 266.27
).
С другой стороны это одиннадцать слов. В английском языке около 2^11
общих слов. Это дает:
(2^11)^11 = 2.66E36 passphrases => ln((2^11)^11)/ln(2) = 121 bits
Гораздо меньше, чем 266 бит, которые были бы предположительно получены из случайного пароля из 57 символов.
я мог бы добавить один бит, если бы я выбрал между:
- пробелы между словами
- nospacesbetweenthewords