Можно ли использовать 6 как стоимость bcrypt algortihm для строки из 64 символов?

Что должно быть в идеале $cost быть в этом случае, чтобы предотвратить атаку грубой силой и даже ASIC или FPGA

$cost = '06';
$secret_key = bin2hex(random_bytes(64);
$store_data = crypt($secret_key), '$2a$.$cost.$'.bin2hex(random_bytes(16)).'$')

Scenerio

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

$store_data это строка, которую мы сохранили в нашей базе данных.

Так что если злоумышленник получит доступ к базе данных и узнает $store_data переменная он не должен иметь возможность доступа $secret_key,

Я использовал алгоритм bcrypt для хэширования, но я не уверен, что в этом случае cost = 6 достаточно безопасен.

1

Решение

В 1999 году, когда был разработан bcrypt, факторы стоимости в то время были установлены так, чтобы он по крайней мере 250 мс для вычисления хэша.

Это было основано на том факте, что в 1977 году на VAX-11/780 крипту можно было оценивать примерно в 3,6 раза в секунду. (т.е. 277 мс на пароль)

  • В 1999 г. стоимость 6 заняла 300 мс
  • Но сегодня фактор стоимости 6 waaay слишком низкий (4,9 мс)

На моем настольном ПК:

  • Стоимость 6: 4,9 мс
  • Стоимость 7: 10,1 мс
  • Стоимость 8: 20,8 мс
  • Стоимость 9: 41,6 мс
  • Стоимость 10: 83,2 мс <- текущая стоимость по умолчанию (слишком низкая на моем ПК)
  • Стоимость 11: 166,8 мс
  • Стоимость 12: 333,4 мс <- соответствующая стоимость
  • Стоимость 13: 667,9 мс
  • Стоимость 14: 1336,5 мс
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector