<rmcreative>

RSS

Современный брутфорс и безопасный логин

2 октября 2011

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

Что же теперь делать?

  1. Можно и нужно сделать лимит на количество попыток ввода пароля. По достижении лимита можно, например, просить ввести капчу. Однако, если произойдёт «утечка» базы данных, что, конечно, бывает не так часто, но бывает, ограничение не поможет.
  2. Хорошим решением будет в дополнение сделать вычисление хеша более ресурсоёмкой операцией. Пользователь не заметит, а вот для взломщика перебор станет, если не невозможным, то, как минимум, финансово невыгодным. Реализуется, например, при помощи bcrypt. Выглядеть это может примерно как здесь.

Комментарии RSS

  1. №5445
    timlar
    timlar 02 окт. 2011 г., 6:03:59

    Интересное решение по ссылке

  2. №5449
    White-Shadow
    White-Shadow 02 окт. 2011 г., 12:55:24

    Salt наше все

  3. №5450
    Van Damm
    Van Damm 02 окт. 2011 г., 13:04:19

    Ещё есть http://www.openwall.com/phpass/

  4. №5451
    Максим
    Максим 02 окт. 2011 г., 13:07:15

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

  5. №5454
    Spider
    Spider 02 окт. 2011 г., 14:03:18

    А ещё можно в цикле 1000 (или 10 000) раз хешировать пароль

  6. №5456
    Sam
    Sam 02 окт. 2011 г., 14:45:42

    White-Shadow, Соль от перебора не спасает.

    Максим, верно, хотя от перебора безколлизионный хеш не спасёт.

    Spider, тоже вариант. Главное — сделать операцию дорогой.

  7. №5457
    Давид Мзареулян
    Давид Мзареулян 02 окт. 2011 г., 15:03:19

    Чтобы не бояться утечки базы, надо использовать схему, в которых по информации из базы в принципе невозможно произвести вход. Пример http://david-m.livejournal.com/1227846.html (и ссылки).

  8. №5460
    yareg
    yareg 03 окт. 2011 г., 11:30:47

    Соль от перебора не спасает.

    Sam, что имеешь в виду - если значение соли известно?)

  9. №5462
    Sam
    Sam 03 окт. 2011 г., 17:30:25

    yareg, нет, в любом случае. Соль спасает лишь от использования готовых rainbow table и частично от словарей. При переборе всё равно, есть там соль или нет.

  10. №5463
    Spider
    Spider 03 окт. 2011 г., 20:47:23

    Sam, даже если соль неизвестна? Как-то слабо в это верится :) Фактически в данном случае можно сказать, что это не соль, а просто длинный пароль, разве нет? Т.е. 8 символов пароль + 32 символа соль, итого 40 символов. Даже с современными мощностями этого многовато для перебора

  11. №5464
    Давид Мзареулян
    Давид Мзареулян 03 окт. 2011 г., 20:49:30

    Spider, а в каком случае вам может быть неизвестна соль?

  12. №5465
    Spider
    Spider 03 окт. 2011 г., 21:21:32

    Давид Мзареулян, мне или брутфорсеру?

  13. №5466
    Давид Мзареулян
    Давид Мзареулян 03 окт. 2011 г., 21:29:13

    Вам-брутфорсеру. Опишите ситуацию, в которой Вам надо что-то отбуртфорсить, но соль неизвестна.

  14. №5467
    Spider
    Spider 03 окт. 2011 г., 21:33:08

    Эммм.... ну, например, за счёт SQL-инъекции стянул хеши паролей из базы. А соль хранится в файле конфигурации, к которому у меня нет доступа

  15. №5468
    Давид Мзареулян
    Давид Мзареулян 03 окт. 2011 г., 21:33:53

    Одна соль на все пароли? А какой в ней смысл тогда?

  16. №5469
    Spider
    Spider 03 окт. 2011 г., 21:43:43

    Смысл как раз в том, что она никому неизвестна :)

  17. №5470
    Spider
    Spider 03 окт. 2011 г., 21:47:47

    P.S. Согласен, что security via obscurity — не очень хорошо. Но я просто привёл пример когда соль спасает

  18. №5471
    Давид Мзареулян
    Давид Мзареулян 03 окт. 2011 г., 21:48:28

    Одно из основных назначений соли — сделать разными хэши одинаковых паролей.

  19. №5473
    Sam
    Sam 04 окт. 2011 г., 18:49:40

    Это смотря какой алгоритм. Фиксрованная соль сейчас используется гораздо чаще.

  20. №5485
    yareg
    yareg 09 окт. 2011 г., 21:06:49

    Когда в vBulletin'е встретил рандомно генерирующуюся соль - э то выглядело как конкретная паранойя...

  21. №5486
    Давид Мзареулян
    Давид Мзареулян 09 окт. 2011 г., 21:46:30

    Рандомная соль, хранящаяся вместе с хэшем — это, вообще-то, стандартное решение.

  22. №5496
    White-Shadow
    White-Shadow 13 окт. 2011 г., 11:19:26

    даже если соль лежит рядом с хэшем, без кода сложно сказать каким образом оно "посолено".

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

    ну а если и код и база свободно доступны...

  23. №5497
    Давид Мзареулян
    Давид Мзареулян 13 окт. 2011 г., 12:21:03

    White-Shadow Ну конечно, security through obscurity — наше всё. Непонятно только, зачем тогда вообще пароли хэшировать.

  24. №5500
    White-Shadow
    White-Shadow 13 окт. 2011 г., 21:12:18

    так я и не хеширую бывает...

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

    так что если рассматривать устойчивость при доступе на чтение в базу вариант с солью - безопаснее.

  25. №5501
    Давид Мзареулян
    Давид Мзареулян 13 окт. 2011 г., 21:54:14

    К брутфорсу (угадыванию пароля, вероятно?) уязвима любая схема, в которой источник ключа — пользовательская голова. Но, по крайней мере, если у юзера хороший (трудно подбираемй) пароль, то данная схема его защитит. А пароль qwerty никаким алгоритмом защитить невозможно… На самом деле, это и есть основная проблема, а не то, как солить хэши.

  26. №5505
    Johnatan
    Johnatan 18 окт. 2011 г., 15:00:08

    Мой ответ брутфорсерам: sha-512 + salt + secret_key Пароль и соль хранятся в базе, ключ хранится на диске сервера (спрятан в скриптах). Для sha-512 на данный момент не существует "радужных таблиц", а брутфорс такого пароля даже при известных соли и ключе равен около 10^64 лет на домашнем компутере(с использованием GPU).. я хз сколько это на человеческом языке.

  27. №5521
    SpiLLeR
    SpiLLeR 20 окт. 2011 г., 22:50:37

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

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.