Как password_verify предотвращает атаки по времени?

На странице документации PHP говорится, что password_hash() возвращает алгоритм, стоимость и соль как часть возвращаемого хэша. Я предполагаю, что стоимость подразумевает максимальное время для выполнения сравнения, так что password_verify() может возвращать постоянное время, несмотря на количество совпадений. Так ли это?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
30
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Нет. password_verify нужно будет повторить тот же хеш, что и password_hash, и для этого ему нужно использовать те же параметры, что и password_hash, использованные для создания хэша. Все эти параметры встроены в хеш, и стоимость является одним из этих параметров. Стоимость определяет, насколько медленным должен быть хэш, обычно путем повторения хеширования, но точное значение может различаться в зависимости от разных алгоритмов хеширования.

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

password_verify возвращается в так называемое постоянное время длины, что делает его невосприимчивым к временным атакам.

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

Другие вопросы по теме