Насколько нас должны беспокоить атаки методом перебора при создании паролей? - PullRequest
0 голосов
/ 12 апреля 2020

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

1 Ответ

0 голосов
/ 12 апреля 2020

brute force, то есть исчерпывающий поиск ключа - это метод, который может работать с несколькими векторами атаки.

То, что вы описываете, это атака на службу путем аутентификации через службу. Служба здесь выступает в роли сторожа и может предотвратить атаку, ограничив ваши попытки и т. Д. c.

Однако это только один вектор атаки на систему:

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

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

, давайте посмотрим, что изменилось ...

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

единственный оставшийся привратник здесь - это сложность угадывания пароля

, если нам нужно только проверить значение == ha sh (пароль), мы можем легко увидеть, что есть другие способы эффективно атаковать это, чем грубой силой ...

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

значение == га sh (пароль, соль ) ... больше нет радужных таблиц ... но это все равно плохо, так как мы можем вычислить это очень быстро и распараллелить ... ограничивающий фактор остается аппаратным. .. если мы добавим количество (арендовали? ... взломали?) системы с перебором чисел с достаточным количеством ядер / графических процессоров ... как быстро мы можем взломать пароль с помощью грубой силы? ... давайте немного посчитаем здесь ...

скажем, у нас есть одна система, которая выполняет нашу работу ... выполняет примерно 1 000 000 попыток угадать пароль в секунду ... допустим, наш пароль имеет энтропию ~ 42 бита ... это примерно 9-значный пароль в нижнем регистре ... сколько времени это займет?

~ 51 дней до гарантированного положительного предположения, если злоумышленник знает разрешенный пул символов (в нашем случае нижняя альфа) )

Вы можете предположить, что после 50% этого времени вероятность правильного предположения составляет 50%, так что ... не очень долго ...

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

мы можем просто разделить на 10k ... и у нас примерно 7 минут 21 секунда ...

что это делает стоит арендовать 10 тыс. машин у облачного провайдера на 10 минут? ... в качестве примера (мы не указали сложность нашей функции ha sh, поэтому этот пример может не находиться в диапазоне этих предположений в секунду, но вы увидите, куда это идет) ... a1. xlarge экземпляр amazon ec2 по требованию стоит примерно 10 центов в час ... нам нужно это ... 10 минут ... так что разделите на 6 ... нам нужно 10 тысяч узлов ... примерно около 170 долларов США .. давайте подведем итоги ... 200 долларов США в качестве приблизительной оценки

так что ... вычислительные ресурсы стали доступны в огромных количествах за относительно небольшие деньги, если бы мы хотели их арендовать ... теперь подумайте о том, как вредоносное ПО захватывает вычислительные ресурсы. Ресурсы

итак ... со всеми этими вычислительными ресурсами на стороне плохого парня ... что мы можем сделать?

мы можем усложнить догадки ...

если мы увеличиваем сложность пароля с этих 42 бит выше до ... скажем, нижнего и верхнего алфавита c и длины 16 символов ... это энтропия примерно 96 бит ... и наша маленькая машина с 1 000 000 догадок второй потребуется около 2,5 квадриллионов лет, чтобы найти наш пароль (гарантированно ... если он не работает со сбоями, имеет достаточную мощность, и вы найдете способ, чтобы он пережил конец нашего солнца через несколько миллиардов лет ... но это другое история)

но вернемся к реальному миру ... мы берем другую облачную установку, которая может угадывать 100 000 000 000 000 паролей в секунду ... в 10 раз больше, чем 10 000 машин, которые мы рассчитывали ранее с ... это займет у нас 25 миллионов лет, чтобы иметь гарантированный хит ... вероятный успех через 50% этого времени ... так почему же это не противостоит увеличению этих дополнительных 54-битных энтропий? ... экспоненциальный рост ... каждый бит еще удваивает работу ...

Еще одна вещь, которую мы можем сделать, кроме увеличения нашей энтропии, состоит в том, чтобы увеличить сложность вычисления предположения

, если мы цепочки нашей функции ха sh, как ха sh (ха sh (ха sh (...))) для переменного числа раундов, мы можем увеличить время, необходимое для вычисления результата .. .

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

, когда речь идет о шифровании данных, мы обычно говорим не о паролях, а о ключах шифрования. ... несколько байтов энтропии ... на этом уровне это в основном те же вычисления, что и выше ... на уровне от 80 до 90 битов это довольно сложно и дорого ... на уровне примерно 40 ... блин это открыто ...

интересная часть, когда вам нужно использовать пароль для шифрования чего-либо ... как получить от пароля нужную связку байтов ключей? хеширования? возможно ... но как?

хорошо, что ... у других людей была та же самая проблема перед нами ... и это привело к хорошо документированным и проверенным функциям, таким как PBKDF2 (функция извлечения ключа из производного пароля. ... вы можете видеть это как функцию ha sh с выходом переменной длины ... она создает псевдослучайный поток битов, и вы можете взять столько битов, сколько вам нужно ... обычно размер ключа symetri c шифр)

PBKDF2 имеет параметр округления для увеличения времени вычислений ... так что в основном ... это то же самое, что и выше

...