Звернутися до підтримки

Відповідаємо електронною поштою, зазвичай протягом двох днів.

Google reCAPTCHA перевіряє це звернення на зловживання; дані передаються до Google. Скрипт завантажується лише тоді, коли ви відкриваєте цю форму.

← Усі записи

Скільки коштує пароль на Raspberry Pi

Сторінки статистики тут можна закрити паролем. Обчислення хешу цього пароля — єдина дія в цій службі, яка має бути повільною: саме це робить викрадений хеш дорогим для зламу. Питання в тому, наскільки повільною, на цьому залізі.

Виміряно на машині, де працює цей сайт, PHP 8.4.21 на aarch64:

PASSWORD_DEFAULT560 мс(дає cost 12)
cost 12595 мс
cost 11277 мс
cost 10138 мс

Параметр вартості в bcrypt — це показник степеня: кожен крок подвоює роботу. Вимірювання показують саме це подвоєння, що добрий знак: ніщо стороннє не втручається.

Чому усталене значення тут хибний вибір

PHP підняв усталену вартість bcrypt із 10 до 12. На сервері в центрі обробки даних це розумне підвищення — кілька десятків мілісекунд. На маленькій платі ARM це понад півсекунди чистого процесора, на машині, яка в цей самий час малює зображення лічильників для всіх інших.

Півсекунди на один вхід погані самі собою. Гірші вони як запрошення: точку входу може викликати будь-хто, і кожен виклик з’їдає 560 мс єдиного процесора, що обслуговує весь сайт. Так перевірка пароля стає найдешевшим способом перевантаження з тих, що тут є.

Тому вартість закріплено на 10, а не залишено усталеному значенню. Це навмисне слабше за те, що PHP обирає сьогодні, і це варто сказати прямо, а не закопувати: хеш із вартістю 10 вчетверо дешевше зламати, ніж із вартістю 12. Викуповує це те, що пароль насправді захищає — видимість сторінки з числами відвідувань, не обліковий запис, не гроші, не особу. За нею немає нічого, чим можна заволодіти.

Частина, яку легко проґавити

PASSWORD_DEFAULT — за задумом рухоме значення. Код, написаний роки тому і який його використовує, мовчки ставатиме повільнішим з кожним оновленням PHP: той самий вихідний текст, той самий ввід, кратний час виконання. Так і задумано, і для більшості програм це правильно.

Хибно це лише тоді, коли машина цього не витримує, і ніщо не попереджає, коли не витримує. Оновлення проходить, випробування проходять, сторінка й далі працює. Просто триває на півсекунди довше, і на це число ніхто не дивиться, доки не піде й не виміряє.

Реклама