2009-05-02 3 views
-2

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

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

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

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

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

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

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

Любые другие идеи?

+1

Это уже обсуждалось несколько раз. См. Другие темы в области соли соли. –

+2

Простое решение: требуйте более длинные пароли. – jalf

+0

Я боюсь, что длина пароля требуется слишком долго, чтобы спросить пользователей. Вам понадобится 15 + символов с разными символами и т. Д. Большинству сайтов повезло получить сильный 8-символьный пароль. – Xeoncross

ответ

2

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

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

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

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

+0

Вы отправили ссылку BCrypt для шифрования файлов - не хеширование. Однако методы BCrypt также доступны в алгоритмах хеширования. Проблема в том, что радужные таблицы могут быть сгенерированы с использованием Bcrypt так же легко, как MD5. То, о чем вы говорите, это тот факт, что сложнее CRACK алгоритм BCrypt, который является истинным, но мы не пытаемся его взломать - только сопоставляем его с простым для создания радугой. – Xeoncross

+1

Blowfish имеет дорогостоящую настройку ключа, которая используется как базовый строительный блок для BCrypt. BCypt - это дизайн, который должен быть дорогостоящим. Таким образом, построение хэш-таблицы занимает гораздо больше времени, чем, например, создание хеш-таблицы MD5. – Jacco

+0

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

1

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

Конечно, если у них есть доступ ко всему, что они могли бы просто evesdrop от активности пользователя на некоторое время ..

+0

Это на самом деле отличная идея. +1 – Zifre

+0

Да, об этом уже говорилось - чем больше слоев в вашей системе, тем лучше. Однако я не уверен в возможности реализации этой программы для большинства людей. Я ищу концепцию, которую могут преподавать и использовать многие люди по всему миру. Кроме того, вы правы. Если они имеют доступ ко ВСЕМ, то они также могут отслеживать данные POST, отправленные на сервер, и получать четкие текстовые пароли. – Xeoncross

+0

Добавление большего количества слоев в систему также увеличивает изменение ошибок и открывает новые дыры в безопасности. – Jacco

1

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

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

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

+0

Покрытие ваших очков, начиная с первого. Во-первых, я не уверен, как вы пришли к мысли, что я не могу войти с помощью пароля. Думаю, вам лучше передумать. Во-вторых, снова я не беспокоюсь о том, что мой сайт разбит - это пользователи, которых я пытаюсь защитить. В-третьих, эти меры предосторожности связаны с входами пользователей - это не то, что мы обсуждаем. Мы говорим о том, что атакующий набирает ваши хеши, соли и перец. Затем посещение Bank of America и вход в систему как Bob с первой попытки с совпадающим паролем пароля. В-четвертых, вот в чем смысл этой темы - найти лучший способ – Xeoncross

+0

В-пятых, да, люди, вводящие пароли короче и легче, чем 15 буквенно-цифровых + паролей символов, снова проблема - мы пытаемся найти решение. – Xeoncross

+0

Я не говорю, что люди не могут войти на ваш сайт - я просто говорю, что это, возможно, уже не имеет значения, потому что у меня уже есть все. И я ожидаю, что Bank of America будет иметь второе второе удостоверение подлинности для любого важного действия, которое обычно является вторым секретным номером для перевода средств, поддерживаемых в отдельном месте. Я не вижу большой альтернативы, если она должна противостоять полному краже вашего сайта и базы данных, сохраняя при этом данные более безопасными, чем соленый хеш. –

6

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

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

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

+0

См. Также: http://stackoverflow.com/questions/348109/is-double-hashing-a-password-less-secure-than-just-hashing-it-once/348140#348140 – erickson

+0

Боюсь, что вы неверен. Если у меня есть соль пользователя, мне придется потратить всего один день на создание таблицы радуги значений 0-12chars и добавить соль пользователя к каждому из них. Пользователь Hash Cracked. – Xeoncross

+1

Не нужно угадывать. Почему бы вам не доказать это? Используйте «erickson» в качестве соли, добавьте пароль и используйте одну итерацию SHA-1. Например, если пароль ABCDEFGHIJKL, можно использовать следующую команду: 'echo -n 'ericksonABCDEFGHIJKL' | openssl sha1' для создания хэша "9c1121a99b6b5afeaa02684093f4c766f94212d2".Я выбрал секретный пароль, который вместе с солью «erickson» производит хэш SHA-1 «0c67c6eb301bb6df94af524f98305cb2648d25eb». Если в течение 72 часов вы можете найти любой пароль, который создает правильный хеш, как показано выше, я буду отмечать ваши сообщения в течение недели. – erickson

-1

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