Максимальная защита от хэша - обсуждение концепций

Итак, вся проблема с хешами в том, что пользователи не вводят пароли длиной более 15 символов. Большинство из них используют только 4-8 символов, что позволяет атакующим легко взломать радужный стол.

Решение: используйте пользовательскую соль, чтобы сделать ввод хешей более сложным и более 50 символов, чтобы они никогда не смогли сгенерировать таблицу (слишком большой для строк такого размера). Кроме того, они должны будут создать новую таблицу для каждого пользователя. Проблема: если они загрузят БД, они получат пользовательскую соль, так что вы вернетесь к исходной точке, если им все равно.

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

Итак, со всем этим известным - давайте предположим, что злоумышленник зайдет на ваш сайт и получит все, ВСЕ. Так что же вы делаете сейчас?

На этом этапе обсуждения большинство людей отвечают "кого это волнует?". Но это просто дешевый способ сказать: "Я не знаю, что делать дальше, так что это не может быть так важно". К сожалению, везде я задавал этот вопрос, который был ответом. Что показывает, что большинство программистов упускают очень важный момент.

Давайте представим, что ваш сайт похож на другие 95% сайтов, а пользовательские данные - или даже полный доступ - не стоит приседать. Злоумышленник, вероятно, преследует одного из ваших пользователей "Боб", потому что он знает, что "Боб" использует тот же пароль на вашем сайте, что и на сайте банка. Он также знает, что у Боба есть сбережения. Теперь, если злоумышленник сможет просто взломать наш сайт, хэши, остальное будет просто пирогом.

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

Есть другие идеи?

5 ответов

Решение: используйте пользовательскую соль, чтобы сделать ввод хешей более сложным и более 50 символов, чтобы они никогда не смогли сгенерировать таблицу (слишком большой для строк такого размера). Кроме того, они должны будут создать новую таблицу для каждого пользователя. Проблема: если они загрузят БД, они получат пользовательскую соль, так что вы вернетесь к исходной точке, если им все равно.

Это рассуждение ошибочно.

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

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

Разве это не то, о чем говорит хеш BCrypt на основе Blowfish? Увеличивать время, необходимое для вычисления хэша, чтобы взломать грубую силу (и создание радуги) стало невозможно?

"Мы представляем два алгоритма с адаптивной стоимостью (...)"

Подробнее об адаптируемых алгоритмах хэширования затрат: http://www.usenix.org/events/usenix99/provos.html

Как насчет того, чтобы взять идею "перца" и реализовать ее на отдельном сервере, предназначенном для хеширования паролей - и заблокирован, за исключением этой простой и максимально безопасной услуги - возможно, даже с ограничениями по скорости для предотвращения злоупотреблений. Предоставляет злоумышленнику еще одно препятствие, которое необходимо преодолеть: либо получение доступа к этому серверу, либо обратный инжиниринг перца, пользовательского алгоритма расширения ГСЧ и открытого текста.

Конечно, если у них есть доступ ко ВСЕМУ, они могут ненадолго отразиться на активности пользователей.

Хм... Хорошо, мой взгляд на это:

  • Вы не можете получить исходный пароль из хэша. У меня есть ваш хэш, я могу найти пароль, который соответствует этому хэшу, но я не могу войти на любой другой сайт, который использует этот пароль, при условии, что они все используют соление. Нет никакой реальной проблемы здесь.
  • Если кто-то получает вашу БД или даже ваш сайт, чтобы получить ваш конфиг, вы все равно облажались.
  • Для Администратора или других Супер-Аккаунтов внедрите второе средство проверки, т.е. ограничьте входы в систему определенными диапазонами IP-адресов, используйте Сертификаты SSL на стороне клиента и т. Д.
  • Для обычных пользователей у вас не будет большого шанса. Все, что вы делаете с их паролем, должно храниться в некоторой конфигурации или базе данных, поэтому, если у вас есть ваш сайт, у меня есть и ваше волшебное змеиное масло.
  • Сильные ограничения пароля не всегда работают. Некоторые сайты требуют, чтобы пароли имели числовой символ, и в результате большинство пользователей добавляют 1 к своему обычному паролю.

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

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

Другие вопросы по тегам