специализированного аппаратного обеспечения, такие как используемые в Bitcoin горнодобывающей промышленности, может выполнять свыше 50 млрд хэшей в секунду (по состоянию на начало 2013 года. Это движущаяся цель, так как аппаратное ускорение).
Если вы делаете 1000 итераций PBKDF2, то это уменьшит атаку с 50 до 50 миллионов в секунду до 50 миллионов в секунду. 10 000 итераций будут составлять 5 миллионов в секунду.
Типичный веб-сервер, однако, не будет таким быстрым. Это будет лот медленнее для вас. Вам нужно провести какое-то тестирование на своем собственном производственном сервере и может найти, что 10 000 итераций слишком медленные.
Так что дело не в том, насколько быстро PBKDF2 может быть перенаправлен грубо, так как ваш сервер может проверить пароль PBKDF2. Вам нужно решить, как долго вы думаете, что это займет (полсекунды - десятая часть секунды - сотая секунды?), А затем отрегулируйте количество раундов PBKDF2 в соответствии с этим.
Также учитывайте силу паролей, используемых вашими клиентами. Если у всех у них отличные пароли, то действительно не имеет значения, какая система хэширования вы используете. Если все они используют ужасные пароли, то PBKDF2 недостаточно хорош для их защиты - вам нужно будет стать более экзотичным, например, аппаратный солевой хеш Apple использует в iPhone, чтобы попытаться превратить 4-значное число в нечто, имеющее хотя бы некоторые (в основном они заставляют все хеширование выполняться специальным аппаратным чипом, который намеренно замедляется, перемещает данные на любое другое оборудование и невозможно расшифровать).
Предполагая, что пароль не находится в словаре (большинство паролей), тогда сила пароля вычисляется путем умножения числа возможных символов в алфавите на один hibe для каждого символа. Поэтому, если у пароля есть буквы (26-символьный алфавит) и цифры (еще 10 символов), тогда у вас есть 36-символьный алфавит, и если он длится 6 символов, вы умножаете его на 6 раз.
Таким образом, 6-значный буквенно-цифровой пароль 36 * 36 * 36 * 36 * 36 * 36, или если вы предпочитаете: 36^6. Это дает вам около 2,1 миллиарда возможных паролей ... обычно мы предполагаем, что хакер найдет реальный пароль примерно на полпути, так что назовите его 1 миллиард.
Если вы используете PBKDF2 и имеете 1000 итераций, тогда хакер со специализированным оборудованием угадает 1 миллиард паролей за 20 секунд. Это не очень хорошая безопасность.
Вы можете улучшить безопасность, используя либо больше раундов PBKDF2 (что замедлит работу вашего сайта), либо убедив ваших пользователей иметь более надежные пароли. Просто переключившись на 7 цифр вместо 6 или добавив буквы верхнего регистра или даже символы, они значительно улучшат их безопасность.
Wolfram Alpha полезен для выполнения математики: ((36^6)/50 million) seconds
где 36 - размер алфавита, а 6 - длина пароля, а 50 миллионов - количество догадок в секунду, которое может использовать хакер (50 миллионов - это серьезный атакующий после PBKDF2 с 1000 раундами).
Сколько паролей у вас в базе данных? Если понадобится 20 секунд, чтобы взломать отдельный пароль, будет ли у меня 30 дней математики или 30 лет? Это зависит от того, сколько у вас клиентов.
Это, предположительно, один из самых сложных, если не самый трудный для перебора силы. (* и он разработан как таковой *). У меня нет никаких цифр. – ZJR
Связанный http://security.stackexchange.com/questions/12114/aes-encryption-choice-of-password – CodesInChaos
@ZJR PBKDF2 намного дешевле, чем scrypt. – CodesInChaos