Рейтинг:2

Хэширование паролей и хеш-функций

флаг es

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

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

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

Рейтинг:1
флаг us

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

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

Однако можно включить «секретную» информацию в качестве входных данных для хэша — информацию, которой злоумышленник не имеет.

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

  • Перец это дополнительная информация, используемая в качестве входных данных для хэша, которая не хранится вместе с выходными данными хэша. Pepper действительно является секретным, поскольку можно украсть хэши паролей, не воруя перец. Систему аутентификации необходимо настроить, чтобы разрешить использование перца. Сервер №1 хранит хэши паролей и собирает пароль от пользователя. Отдельный сервер № 2 (как правило, гораздо более закрытый от внешнего мира, чем сервер № 1) хранит перец и вычисляет хэш. Затем сервер №1 сравнивает вновь вычисленный хэш с сохраненным хэшем и принимает решение авторизовать пользователя.

Рейтинг:1
флаг in

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

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

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

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

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

  • контролируемая итерация для уменьшения массивного распараллеливания злоумышленника,
  • большой объем памяти, чтобы уменьшить массовое использование среды, подобной ASIC/GPU, и
  • регулируемые резьбы для уменьшения распараллеливания.

Некоторые хорошие алгоритмы хэширования паролей, на которые вы, возможно, захотите обратить внимание, — это хеширование Argon2, Scrypt и Balloon. В конце концов, хеширование пароля без уникальной соли не рекомендуется. Если их использовать, то Радужные столы — это монстры, скрывающиеся на соседней улице...

kelalaka avatar
флаг in
И прочитайте [Как безопасно хэшировать пароли?] (https://security.stackexchange.com/q/211/86735) на нашем уважаемом сайте информационной безопасности.

Ответить или комментировать

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