The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA, opennews (?), 17-Май-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


30. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +/
Сообщение от Зябор (?), 19-Май-19, 14:01 
А скажите пожалуйста. Вот я так понимаю проблема хранения хеша пароля в виде bcrypt предпочтительней в первую очередь из-за скорости вычисления, что приводит например в случае утекания базы хешей, к неподъёмному времени взлома.

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

А скажите насколько допустим такой например двух-этапный способ, когда например в БД хранить вариант bcrypt'а, а вместе с тем ещё хеш например substr(md5($u.$s.$p)), 0, 8) и сперва проверять md5 вариант, если он корректен, то уже делать проверку bcrypt'ом?

Или это просто дикий костыль?

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

31. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +1 +/
Сообщение от solardiz (ok), 19-Май-19, 15:38 
"bcrypt предпочтительней в первую очередь из-за скорости вычисления" - да. "к неподъёмному времени взлома" - это зависит еще и от выбора паролей.

"Тут или городить капчи, или бороться с кол-вом коннектов в единицу времени." - да, но еще нужно учесть что у сервиса и до внедрения "тяжелого" хеширования паролей почти наверняка были другие аналогичные с точки зрения риска DoS слабые места, так что чтобы не сделать сервер более уязвимым к DoS достаточно настроить хеш так, чтобы он не был медленнее обработки другого самого медленного запроса, также доступного до аутентификации. Например, переход с быстрого не-парольного хеша вроде MD5, занимавшего 1 микросекунду, на bcrypt, настроенный на время 10 ms, на типичном веб-сервисе не повысит уязвимость к DoS (зачастую найдутся и другие запросы, занимающие 10+ ms или требующие больше I/O), но замедлит подбор паролей по украденным хешам на порядки. А с DoS можно бороться отдельно, для всех типов запросов.

"сперва проверять md5 вариант, если он корректен, то уже делать проверку bcrypt'ом" - это бессмысленно, так как атакующий сделает то же самое и получит не меньшее ускорение. Быстрый хеш, даже усеченный, хранить не следует.

Ответить | Правка | Наверх | Cообщить модератору

33. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +/
Сообщение от Зябор (?), 19-Май-19, 16:59 
Спасибо за пояснения.
Ответить | Правка | Наверх | Cообщить модератору

34. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +1 +/
Сообщение от Зябор (?), 19-Май-19, 18:56 
Ещё один возможно глупый вопрос, по этой же теме. А вариант всё-таки хранения в БД "быстрого" хеша вдобавок к "правильному". Но этот "быстрый" если допустим формируется "чёрным ящиком"?

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

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

Велосипед?

Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

35. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +2 +/
Сообщение от solardiz (ok), 19-Май-19, 21:46 
Таких случаев, чтобы не было ресурсов на хоть насколько-то медленный хеш, вычисляемый всегда, не бывает. Всегда можно, например, заменить микросекунду на миллисекунду без заметного ущерба для производительности всего сервиса. Поэтому хранить не-парольный быстрый хеш совершенно ни к чему.

Если есть ресурсы на внедрение черного ящика (и не одного - для отказоустойчивости), то тем более они есть и на медленный хеш. Эти вещи хорошо использовать вместе - см. слайды от https://www.openwall.com/presentations/Passwords12-The-Futur... и далее (а можно и предыдущие тоже) и реализацию https://github.com/SUNET/VCCS. Там используется HMAC на HSM поверх вычисляемого на обычном сервере медленного хеша, хотя есть определенные преимущества (а в некоторых случаях и недостатки) использования вместо этого обратимого шифрования "черным ящиком" медленных хешей, вычисленных на обычном сервере. Мы (Openwall) консультируем по таким внедрениям, так что если интересует всерьез - обращайтесь.

Хранить и проверять еще и какой-то более "правильный" хеш, не требующий "черного ящика", при этом не следует. Это лишь снижает пользу от применения "черного ящика". Насчет "поставил свой всегда дающий "истину" на запросы авторизации" - "черный ящик" не должен отвечать да/нет (он и не может - у него нет доступа к БД), а лишь довычислять или шифровать хеши.

Ответить | Правка | Наверх | Cообщить модератору

37. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +/
Сообщение от Зябор (?), 20-Май-19, 07:43 
Спасибо!
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +/
Сообщение от PnDx (ok), 20-Май-19, 11:58 
> "сперва проверять md5 вариант, если он корректен, то уже делать проверку bcrypt'ом" - это бессмысленно, так как атакующий сделает то же самое и получит не меньшее ускорение. Быстрый хеш, даже усеченный, хранить не следует.

  Утверждение неверно. И вот почему:
При *совместной* проверке обоих хэшей необходимо предоставлять вектор (строку), для которого обе проверки валидны. Т.о., атакующий должен вместо подбора первой попавшейся коллизии найти пересечение на множествах коллизий обеих функций. Которое в "плохом" сценарии вообще может оказаться единственным. Но даже в "хорошем" случае решение задачи никогда не будет легче подбора коллизии на самый "сильный" хэш из пары.

Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

40. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +1 +/
Сообщение от solardiz (ok), 20-Май-19, 13:42 
Предполагается, что основной хеш (в данном контексте - bcrypt) достаточно устойчив к коллизиям, чтобы это не было проблемой. Вообще, коллизии в криптографических хешах - в частности, даже те что известны для MD5 и SHA-1 - обычно не являются проблемой при использовании этих хешей для паролей. (Чтобы это стало проблемой, коллизии должны были бы проявляться в отношении реальных паролей.) Реальной проблемой является быстрота вычисления таких хешей. В контексте выше, упомянутое мной ускорение подбора через проверку сначала быстрого хеша (и пропуск вычисления медленного) - очень серьезная проблема.
Ответить | Правка | Наверх | Cообщить модератору

41. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +/
Сообщение от PnDx (ok), 20-Май-19, 13:47 
> (Чтобы это стало проблемой, коллизии должны были бы проявляться в отношении
> реальных паролей.) Реальной проблемой является быстрота вычисления таких хешей. В контексте
> выше, упомянутое мной ускорение подбора через проверку сначала быстрого хеша (и
> пропуск вычисления медленного) - очень серьезная проблема.

  Да, в случае когда за приемлемое время решается задача "подобрать все коллизии вот на эту функцию". MD5? Да, Вы правы.

Ответить | Правка | Наверх | Cообщить модератору

42. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +/
Сообщение от solardiz (ok), 20-Май-19, 14:11 
Задача "подобрать коллизии вот на эту функцию" при подборе паролей обычно не ставится. Это не рационально. Вместо этого проверяются вероятные пароли. Чтобы задача именно подбора коллизий оказалась актуальной, хеш-функция должна быть очень плохой - никогда не предназначавшейся в качестве криптографической или с фатальной ошибкой в реализации.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру