Mastodon Mastodon Mastodon Mastodon

Сіль

Оновлено: · CyberSecureFox Editorial Team

Сіль — унікальне випадкове значення, яке додають до кожного пароля перед хешуванням, щоб однакові паролі давали різні хеші.

Як працює сіль

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

  • hash("password123" + "Q3v9...") — в одного користувача,
  • hash("password123" + "Lm81...") — в іншого, і результати зовсім різні.

Сіль не є секретом. Її завдання — зробити кожен хеш унікальним, щоб зламувати їх доводилося поодинці. Рекомендації NIST вимагають сіль не коротшу за 32 біти; на практиці бібліотеки використовують 16 байт. Перець (pepper) — інше поняття: секретне значення, яке зберігають окремо від бази, наприклад в апаратному модулі безпеки.

Чим сіль важлива для безпеки

Сама сіль не захищає слабкі паролі від перебору: сучасні відеокарти перевіряють мільярди швидких хешів на кшталт MD5 чи SHA-256 за секунду. Тому сіль треба поєднувати з повільною, вимогливою до пам’яті функцією хешування паролів. У багатьох витоках розкривалися паролі без солі або зі слабким хешуванням, і їх зламували за лічені дні.

Рекомендації

  • Використовуйте спеціальні алгоритми хешування паролів: Argon2id, scrypt, bcrypt або PBKDF2 з великою кількістю ітерацій — вони самі генерують сіль.
  • Ніколи не зберігайте паролі у вигляді простого MD5, SHA-1 чи SHA-256.
  • Генеруйте сіль криптографічно стійким генератором, унікальну для кожного пароля.
  • Користувачам — довгі унікальні паролі та менеджер паролів: сіль не врятує «123456».
Синоніми:
Криптографічна сіль, Salt