Как bcrypt идет в ногу с законом Мура? - PullRequest
5 голосов
/ 17 сентября 2011

Я получаю рекомендации по использованию bcrypt для хэширования паролей, поскольку он соответствует требованиям закона Мура.

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

Как это возможно? Как алгоритм может быть намеренно медленным, несмотря на закон Мура?

Ответы [ 2 ]

5 голосов
/ 09 октября 2012

Злоумышленник захочет попробовать все 216,553 английских слов .

Плюс еще 12 бит усилий для общих вариантов , что, скажем, дает список887 001 088 (2 29 ) возможных паролей.

BCrypt выполняет около 4 342 912 (то есть 2 22 * ​​1013 *) операций для вычисления одного хэша (по стоимости = 12) .

Сегодня ядро ​​обеспечивает около 2 31 циклов / сек;Уровень техники составляет 8 = 2 3 ядер на процессор в общей сложности 2 3 * 231 = 2 34 циклов / сек.Сервер обычно имеет 4 процессора, увеличивая общее количество до 2 2 * 2 34 = 2 36 циклов / сек.2 22 * ​​1032 * циклов для вычисления одного хеша * 2 29 возможных (общих) паролей = 2 51 циклов для выполнения всех (общих) паролей.

Это означает, что потребуется 4-процессорный, octo-core, сервер около 2 51 / 2 36 = 2 15 секунд (9 часов)для запуска всех распространенных паролей.

На самом деле мой пароль не является обычным и использует около 44 бит.2 44 пароли * 2 22 * ​​1050 * циклов на пароль = 2 66 циклов, чтобы попробовать все необычные пароли.2 66 / 2 36 циклов / секунду = 2 30 секунд (34 года), чтобы найти мой пароль.

Закон Мура говорит, что обработкамощность удваивается каждые 18 месяцев.

  • сегодня: 34 года, чтобы найти мой необычный пароль
  • 1,5 года: 17 лет
  • 3 года: 8,5 года
  • 4,5: 4,25 года
  • 6 лет: 2,125 года
  • 7,5 года: 1 год
  • 9 лет: 6 месяцев
  • 10,5 года: 3 месяца
  • 12 лет: 6 недель
  • 13,5 года: 3 недели
  • 15 лет: 10 дней
  • 17,5 года: 5 дней
  • 19 лет: 63 часа
  • 20,5 года: 31 час

Это сейчас bcrypt противостоит закону Мура.

Увеличение стоимость множитель от 12 до 13 , и это будет вдвое время, необходимое.

5 голосов
/ 17 сентября 2011

bcrypt настраивается с помощью параметра, называемого «коэффициент работы». Внутренне он будет выполнять операцию, аналогичную хешированию, много раз подряд. «Много» - это часть, которую можно настроить, до нескольких миллиардов. Итак, чтобы справиться с законом Мура, просто проверь это. Еще одна функция, которая может быть сделана так медленно, как хотелось бы, это PBKDF2 (см. Параметр «счетчик итераций»).

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

...