6

Как я могу определить, имеет ли пароль достаточно хорошую энтропию, чтобы предотвратить грубое взлом в реальном масштабе времени? Например, если у меня есть следующий пароль, как я могу определить, является ли он достаточно надежным, чтобы предотвратить перебор?

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

4 ответа4

13

Есть сайт, который может дать вам приблизительную энтропию для ввода пароля. Для приведенного выше примера предлагается ~ 210 бит.

Вы можете получить очень грубое предположение о том, сколько времени потребуется для взлома Насколько безопасен мой пароль.

Он предполагает, что стандартному настольному ПК потребуется 2 года, чтобы взломать пароль в вашем примере.

Более подробный анализ пароля можно увидеть на Password Meter.

4

Ваш вопрос - «Достаточно ли он силен, чтобы предотвратить грубую силу?"

Реальный ответ - "нет"

Полезный ответ - «Наверное, хотя бы на обозримое будущее»


Что вы должны спросить:

Мне нужно защитить данные такого типа, которые имеют требования x и y и чувствительность z для моей компании. Это соответствующий уровень энтропии.

Ладно, чтобы быть справедливым, 210 бит, как указал @Gareth, вероятно, будут хороши в течение длительного времени, но это может быть излишним, и есть веские причины не переходить на верхний уровень шифрования, если вам это не нужно.

4

В техническом блоге Dropbox, это лучшая статья, которую я видел за последнее время, и даже показывает в реализации теорий, которые обсуждались внутри. Пожалуйста, не стесняйтесь, дайте мне знать, если это поможет в любом случае.

Еще одна вещь, о которой следует помнить о безопасности, - это идея, выраженная в этом комиксе XKCD.

2

Это зависит от того, насколько случайным является ваш пароль.

Если вы выбираете пароль из следующего списка:

  • "?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&
  • e&
  • e%
  • 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!r
  • a!n
  • a!e

Замена 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .