The OpenNET Project / Index page

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



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

Оглавление

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

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


2. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +6 +/
Сообщение от solardiz (ok), 17-Май-19, 23:02 
Подобные хеши (кое-как составленные из небольшого количества вычислений быстрых хешей, также не предназначенных для паролей) - болезнь веб-приложений 2000-х, которая постепенно начала проходить в 2010-х. Ни одним из подобных способов хешировать пароли не следует. Для паролей следует использовать специально предназначенные хеши, такие как bcrypt, scrypt, yescrypt или Argon2. В веб-приложениях на PHP 5.5+, следует использовать интерфейс password_hash(): https://www.php.net/manual/en/function.password-hash.php

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

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

Вопрос про коллизии тем более не актуален по ряду причин.

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

5. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +1 +/
Сообщение от вот такая вот куйня (?), 18-Май-19, 02:00 
Ты ни черта не прав, кроме разве что быстрой криптографической функции.
Те же KDF в том или ином виде используют хеш функции.

Короче рассказываю накой хрен нужны KDF:

1) сделать преобразование в хеш тяжелой операцией, особенно для всяких асиков, например PBKDF2 неплохо справляется (только не берите вариант SHA1, берите какую-нибудь SHA512 на всякий случай)

2) сделать не просто сложным расчет, а плохо параллелизуемым, этим способом пошли в Argon,там все упирается кол-во памяти. Но я пока не использую, потому что уже 3-ая версия вышла помимо Argon2i и Argon2d. А это все реализации, которых еще много на каких платформах нет (точнее есть, но недостаточно хороши для продакшена).

И да Argon использует крипто хеш-функцию Black2.
Которая внимание(!) - быстрее по утверждению самих авторов чем например SHA512.

--

Насчет кастомной KDF, многие не рекомендуют, НО чисто теоретически...
Если есть соль ты можешь сделать бесконечно много итераций (миллион например) типа "sha1(md5($p).$s)", но используя хотя бы SHA256:

n-times x SHA256(userkey + salt)

если n=3, то SHA256(SHA256(SHA256(userkey + salt) + salt) + salt)

тебе же надо хотя бы лям какой-нибудь

Только вот зачем это всё, если есть KDF, которые исследованы и их явно не дураки делали?
---

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

--
Конкретно по MD5, это 128-bit, что в теории больше времени жизни вселенной

НО!!!!

Вот эти ребята доказали возможность атаки, сложность которой 2^24.1.
https://www.win.tue.nl/hashclash/On%20Collisions%2...

Т.е. получается у нас энтропия резко снижается с 128 бит до 24.1
А это значит 17 981 374 вариантов перебираются за доли секунды.

Атака на SHA1 сложнее намного, но гугл сделал это за 100 000 USD на серверах AWS (гуглите shattered).
--

В случае sha1(md5($p).$s) соль тебе не поможет потому что это всего лишь одна итерация.
И соль это то, что известно атакуемому. Поэтому предложенная KDF "легко" трахнется радужными таблицами.
Атакующий просто найдет коллизию, которая даст тот же хеш, что и оригинальный пароль (либо это и будет сам оригинальный пароль).

--

Многое зависит от скорости перебора. Если сеть, то сложнее, может там банят на 10 минут после кадой третьей неудачной попытки. и всё приехали...
Другое дело если ты можешь организовать перебор в оффлайне )))

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

7. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +2 +/
Сообщение от solardiz (ok), 18-Май-19, 02:53 
Про KDF ты в целом понимаешь правильно, а в моем комментарии упустил слова "из небольшого количества вычислений".

Упомянутые тобой атаки на MD5 и SHA-1 к теме не относятся.

Про "меркнет по скорости" перед rainbow tables не так просто - тут влияет много факторов. А соль начали использовать до появления rainbow tables (1970-е vs. 1990-е), так что предназначена она была не непосредственно против них, да и сейчас несет несколько функций.

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

18. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +/
Сообщение от хотел спросить (?), 18-Май-19, 11:54 
> Упомянутые тобой атаки на MD5 и SHA-1 к теме не относятся.

поиск коллизий основа взлома хешей

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

19. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +1 +/
Сообщение от пгуыыцрщ (?), 18-Май-19, 12:29 
[offtopic] Даешь спор с автором риппера! [/offtopic]
Ответить | Правка | Наверх | Cообщить модератору

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

27. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  –2 +/
Сообщение от анон (?), 18-Май-19, 22:21 
>Конкретно по MD5, это 128-bit, что в теории больше времени жизни вселенной

да хоть 512 или 1024 бит, причем здесь биты если сам алгоритм дырявый? коллизия к твоим 128 битам на обычных процах у МД5 находиться за время.... сюрпрайз МИНУТЫ!!!

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

29. "Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA"  +1 +/
Сообщение от хотел спросить (?), 19-Май-19, 02:43 
чукча - не читатель, чукча - писатель?

ты может для начала пост прочтешь целиком?

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

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
Добавить, Поддержать, Вебмастеру