Основан 26 Июля 2013 года
freehacks.ru fhacks.me fhacks.pw fhacksnplmzxaaoo.onion
HashFlare

Показано с 1 по 4 из 4
  1. #1
    Trust
    TopicStarter
    Красава
    Аватар для Develop

    Статус
    Offline
    Регистрация
    27.07.2013
    Сообщений
    397
    Репутация
    77 + / -
    Web-программист

    Хеш от хеша уменьшает стойкость к брутфорсу — так ли это?

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

    И, в принципе, это правда. Если количество этих вариантов изначально было большим.

    А если нет?

    Предположим, что речь идёт о паролях. Из-за них и возник весь сыр-бор — я хочу повысить безопасность тех наивных польователей, которые используют один и тот же пароль на нескольких сайтах. Сделать же это я намерелся с помощью хеширования пароля на клиентской стороне. В таком случае и в открытый канал, и, соответственно, на сервер уйдёт уже солёный хеш секретной фразы.

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

    Начитавшись вдоволь мнений «хешировать хеш — фе, так делают только непрофессионалы, ибо брутфорсом поломают!!!», я задумался: а был ли мальчик? а действительно ли это ухудшит стойкость к подбору? А может ли быть такое, что даже улучшит?

    И решил это проверить.

    Что такое брутфорс? (для тех, кто не в курсе)

    Перебирать пароли можно по-разному.

    Например, можно составить список наиболее часто употребляемых в качестве пароля комбинаций, таких как «1234567890», «qwerty», «пароль» и пробовать выдать их поочерёдно система авторизации. По-сути, это будет словарный перебор.

    Ещё можно перебирать с более умным использованием большого, заранее сгенерированного словаря слов для данного языка, используя слова как символьную единицу. То есть, пароль «КвартирныйГрудь» с точки зрения такого перебора состоит не из пятнадцати символов, а всего лишь из двух.
    Ещё использование словаря можно улучшить, если учитывать популярные варианты замены букв (leet, ошибки, etc: «haxor» => «hax0r»; «жираф» => «}|{UPAф») и, например, ранжировать слова по частоте употребления (слово «квартирный» встретится в пароле с большей вероятностью, чем «лаптевидный»).

    Такой перебор усложняется количеством вариантов, но всё равно лучше, чем перебор «в лоб» — брутфорс. При этом варианте происходит полный перебор всех возможных комбинаций. Так, например, для цифренного пароля с минимальной длиной в четыре символа и максимальной в пять будут перебираться такие комбинации:

    0000
    0001
    0002
    ...
    9999
    00000
    ...
    99999



    Брутфорс — самый долгий вид перебора, но он гарантирует нахождение комбинации. Если вы до этого доживёте.

    Множество вариантов

    Итак, будем считать, что мы не перебираем по словарю, а именно брутфорсим.

    Я написал небольшой скрипт на PHP (да простят меня за выбор языка), который подсчитывает максимальное количество комбинаций для разных паролей.
    Подсчитываю я по простой формуле из комбинаторики — (n)^i + (n)^(i — 1) +… + (n)^1, где n — размер используемого набора символов. Я взял три набора: один (Hex, 0-f, 16 символов) для хеша и два (типичные символы, 70 штук, и такой же, но добавил туда ещё 70 символов кирилицы) для паролей.

    Сам скрипт...

    Результат...


    То есть, сравнимое количество комбинаций находится где-то в районе 72-символьного пароля для набора из 140 символов и 84-символьного пароля для набора из 70 символов. Перенос границы минимального размера пароля с 1 символа до, скажем, 8, хоть и влияет на результат, но не особо.

    Иными словами: хеширование уменьшает количество возможных комбинаций только для строк длиннее 72-80 символов с достаточно большим (70+) набором вариантов каждого символа.

    Теперь давайте взглянем на эти данные с учётом реальной обстановки: я считаю, что перебрать обычный пароль проще, чем хеш. Почему? Вот список причин:

    Видели ли вы пользователя, который сделал бы себе действительно разнообразный пароль из 70 символов? Я, например, не генерирую пароли больше 64-х символов.
    Видели ли вы пользователя, который бы настолько извращался с паролем и использовал бы те символы, которые я указал в примере?
    Распределение в хеше, всё-таки, лучше, так что мы более защищены от слабого и глупого пароля вроде «1234567890», который будет подобран ну очень быстро. SHA-512 хеш этого пароля с солью «hax0r» (просто добавленной в конец) — «5a2b2bfad9e0a8f25cde91849f8c5ce8a3795f2296a0bca3 f0b75835a77b039c80a0c1532db8d7ce6012aa306967f8297f 4e4ae2e72be3bf9d05cb140f1ce849». Согласитесь ли вы, что прямым перебором подобрать такое труднее?
    Словарный перебор хеша невозможен. Вариант с радужными таблицами отметается использованием хорошей соли.



    А если?..

    Возможно ли ускорить перебор при помощи такой хитрой комбинации: перебираем известные комбинации, хешируем их с солью, сверяем? В этом случае, каждая операция занимает на столько больше времени, на сколько долго выполняется хеширование выбранным алгоритмом. Таким образом, чем «тяжелее» алгоритм — тем лучше.

    В комментариях к описанию функции hash() на php.net есть код для проверки скорости генерации хеша для килобайта случайных данных.

    Скрипт проверки скорости генерации разных хешей


    Результаты для AMD E-450, php 5.4.8, Arch Linux, x86_64, ядро 3.6.5-1-ARCH


    На моей машине whirlpool выполняется дольше большинства других и имеет при этом хорошую длину результата. То есть, для хеширования пароля это вполне подходящий вариант.

    Вывод

    Если вы хешируете «Войну и мир» или пароли с минимальной длиной в 50-60 символов на международном сайте, в котором допустимы все символы юникода — хеш от хеша действительно может подпортить вам стойкость к брутфорсу.
    В случае типичных же паролей, количество оригинальных входных комбинаций меньше, чем количество выходных комбинаций достаточно длинной хеш-функции — смело используйте хеширование хеша. Даже если оно не улучшит ситуацию — то уж точно не ухудшит.

    UPD 0: В комментариях указали на наличие этой статьи, опубликованной в 2010-м году.

    UPD 1: Я прочитал указанную статью и хотел бы указать на различия:

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

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

    Источник

    http://habrahabr.ru/post/158491/
    [свернуть]
    Последний раз редактировалось admin; 27.08.2013 в 18:36. Причина: Источник

  2. #2
    Trust
    Аватар для ul1k317

    Статус
    Offline
    Регистрация
    26.08.2013
    Сообщений
    823
    Репутация
    395 + / -
    Web-программист
    надо указывать источник статьи

    Скрытый текст, необходимо выполнение следующих условий: [hide=0]
    Быть зарегистрированным на форуме
    Последний раз редактировалось admin; 27.08.2013 в 18:37.

  3. #3
    Аватар для Th3Inferno

    Статус
    Offline
    Регистрация
    11.11.2013
    Сообщений
    84
    Репутация
    16 + / -
    Другое
    Цитата Сообщение от dsda Посмотреть сообщение
    надо указывать источник статьи

    [-private-data-212-0-]
    странно что habrahabr.ru ещё не прикрыли.

  4. #4
    Lord
    of the two universes
    Аватар для •Lexx•

    Статус
    Offline
    Регистрация
    24.10.2013
    Сообщений
    296
    Репутация
    167 + / -
    Другое
    странно что habrahabr.ru ещё не прикрыли.
    Было бы желание =D
    [Только зарегистрированные могут видеть это. ]
    Мудрый знает не многое, а нужное (с) Эсхил.
    «
    Это планета 13-го типа. Такие уничтожают сами себя, путем внутреннего военного конфликта, экологической катастрофы, но чаще всего — когда их ученые пытаются определить массу бозона Хиггса
    »
    — 790 про Землю.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Информация на сайте предоставлена исключительно в ознакомительных целях, использование знаний в противозаконных целях преследуется по закону! Администрация не несет ответственности за ваши деяния.