Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Что значит стоимость вычисления при хэшировании пароля?

#php #хеширование


В мане по php столкнулся с такой функцией хэширования password_hash()
в эту функцию передается три аргумента: пароль, алгоритм шифрования, дополнительные опции

Дополнительные опции здесь передаются как ассоциативный массив...в одном примере
мана написано так:

$options = [
    'cost' => 11,
    'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];


Понятно что salt - это соль и под значением понимается функция которая генерирует
эту соль, но мне неясно одно, что такое cost, и какую роль оно играет при шифровании?
    


Ответы

Ответ 1



Вот достаточно развернутый ответ на английском языке. А на Wiki есть описание алгоритма, где вы можете понять, в каком месте используется cost. Если коротко, то cost влияет на количество операций при получении хэша, как степень числа 2. При cost = 11 у вас будет 2**11 повторений алгоритма для вычисления.

Ответ 2



Раньше различные хэширующие алгоритмы как MD5, SHA1 и SHA256 были спроектированы очень быстрыми и эффективными. При наличии современных технологий и оборудования, стало довольно просто выяснить результат этих алгоритмов методом "грубой силы" для определения оригинальных вводимых данных. Появилось такое понятие как Cost - стоимость вычисления хеша. Чем выше стоимость вычисления хэширующего алгоритма, тем больше времени требуется для взлома его вывода методом "грубой силы". По сути при cost = 13. Стоимость вычислений равна 2^13 итераций функции формирования ключа. Стандартный cost = 10 и вычисляется за миллисекунды, увеличение cost на 1, увеличивает время выполнения примерно в 2 раза. Например cost = 13 выполняется за 0.2 ms, а вот cost = 16 уже будет выполнен за несколько секунд.

Комментариев нет:

Отправить комментарий