Перець (криптографія)
У криптографії, перець (англ. pepper) — це секрет, який додається до даних, таких як пароль, перед тим, як хешується функцією криптографічного хешу. Станом на 2017 рік, NIST рекомендує[1] використовувати таємний ввід при зберіганні таємниць, таких як паролі.
Перець виконує схожу роль солі, але, хоча сіль не є секретною (просто унікальною) і може зберігатися поряд із хешованим результатом, перець є секретним і не повинен зберігатися з вихідними даними. Хеш і сіль зазвичай зберігаються в базі даних, але перець потрібно зберігати окремо (наприклад, у файлі конфігурацій), щоб не допустити його отримання зловмисником у разі порушення бази даних. Якщо сіль має бути достатньо довгою, щоб бути унікальною, то перець повинен бути захищеним, щоб залишатися таємним (принаймні 112 біт, згідно з рекомендаціями NIST), інакше зловмиснику потрібен лише один відомий запис, щоб зламати перець. Зрештою, перець повинен генеруватися знову для кожної програми, в якій він розміщений, інакше порушення однієї програми призведе до зниження безпеки іншої.
Перець додає безпеку до бази солей та хешей, тому що, якщо зловмисник не зможе отримати перець, він не може зламати жодного хешу, незалежно від того, наскільки слабкий початковий пароль. Одним із недоліків хешування паролів замість шифрування паролів (якщо припустити, що алгоритм шифрування є сильним і використовується сильний ключ), полягає в тому, що зловмисник може грубою силою хешувати та відновлювати слабкі паролі. На противагу цьому, при сильному шифруванні, зловмисник повинен грубою силою отримати сильний ключ (що може бути фізично неможливим), перш ніж зможе розшифрувати єдиний пароль. Еквівалент шифру перцю - ключ шифрування. Включивши перець у хеш, можна отримати переваги обох методів: незламні паролі до тих пір, поки перець залишається невідомим для зловмисника, і навіть якщо перець порушений, зловмиснику все одно доведеться грубою силою отримати хеш. Для порівняння, при шифруванні паролів кожен, хто знає ключ шифрування (включаючи системних адміністраторів), може миттєво розшифрувати всі паролі; отже, завжди рекомендується хешувати паролі замість шифрування, навіть якщо не використовується перець.
- ↑ NIST Special Publication 800-63B. June 2017. Section 5.1.1.2. Процитовано 13 жовтня 2018.
... verifiers SHOULD perform an additional iteration of a key derivation function using a salt value that is secret and known only to the verifier ...