2015-02-27 3 views
2

Почему люди предлагают использовать алгоритмы растягивания ключей, такие как bcrypt/pbkdf2, которые требуют больше времени для вычисления (по назначению), вместо использования более быстрых алгоритмов, которые также являются безопасными, например, 256 или sha-512 и использовать механизм дросселирования для ограничения нападений грубой силы?Ключевые алгоритмы растяжения и дросселирования для пароля «хеширование»

Дросселирование не связано с ЦП и будет обеспечивать ту же самую «задержку» для атак грубой силы, при этом все еще быстро для среднего пользователя. С другой стороны, bcrypt/pbkdf2 связан с ЦП и всегда будет медленным.

ответ

5

Когда вы используете растяжение ключа, тогда вы готовитесь к делу, что злоумышленник украл хеши из вашей базы данных. Затем злоумышленник может начать атаку и грубую силу с полной скоростью своего GPU/CPU, чтобы взломать пароли.

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

Некоторые алгоритмы, такие как BCrypt/SCrypt, дополнительно сконструированы таким образом, что их трудно решить с помощью графического процессора.

+0

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

+0

@Climax - В идеальном мире, где никто не интересуется вашими хэшами, вы даже можете хранить их в виде открытого текста. В реальном мире, однако, существует так много способов, по которым ваши хэши могут протекать, что вы абсолютно должны использовать растяжение ключей (SQL-инъекция, выброшенные резервные копии, жесткие диски отброшенных серверов, хост или db-admin). Имейте в виду, что люди часто повторно используют свои пароли, поэтому даже если ваш сайт неважен, вы можете поставить под угрозу более важный сайт. Возможно, вы можете быть заинтересованы в моем [учебнике] (http://www.martinstoeckli.ch/hash/en/index.php) о безопасном хранении паролей. – martinstoeckli

+0

Спасибо, ваш учебник отличный. Я согласен с вашим ответом, поскольку он описывает сценарий, где bcrypt/scrypt необходим. Однако я хотел бы спросить, можно ли использовать какой-то эфемерный кеш-кеш, чтобы хотя бы повысить производительность? Вариант использования может быть для запросов API, где bcrypt должен выполняться в короткой последовательности для одного и того же пароля. – Climax

 Смежные вопросы

  • Нет связанных вопросов^_^