- Сіль — це випадковий рядок, який додається до пароля перед хешем, щоб отримати унікальні хеші для кожного користувача.
- Linux Він зберігає хеш, сіль та алгоритм у /etc/shadow, посилюючи безпеку від атак за словником та райдужних таблиць.
- Належні практики вимагають довгих, випадкових та унікальних солей, а також надійних алгоритмів хешування. бази даних добре захищений.
- Використання солі для паролів слід інтегрувати в ширші політики безпеки, що включають надійні паролі, багатофакторну автентифікацію (MFA) та менеджери паролів.

Якщо ви працюєте з системами GNU/Linux або просто стурбовані безпекою своїх облікових записів, ви, ймовірно, чули про сіль у хеші пароляЦе одна з тих концепцій, про яку багато говорять, але часто розуміють лише наполовину: вона звучить технічно, але насправді вона визначає різницю між системою, яку легко зламати, та системою, яка набагато стійкіша до атак.
Коротше кажучи, сіль – це ключовий елемент для створення непередбачуваних хешів паролівВін працює шляхом додавання випадкових даних перед застосуванням алгоритму хешування, тож навіть якщо два користувачі мають однаковий пароль, результат, що зберігається в базі даних, буде різним. Звідси, конкретна реалізація в Linux, її зв'язок з /etc/shadow, такі інструменти, як mkpasswd, та сучасні передові методи безпеки – це цілий світ сам по собі, який ми детально розглянемо.
Що саме є «сіль» у хеші пароля?

У криптографії, а сіль (сіль) – це випадковий рядок символів який додається до пароля користувача перед застосуванням хеш-функції. Мета полягає в тому, щоб отриманий хеш був унікальним, навіть якщо пароль у відкритому тексті однаковий для кількох користувачів.
Коли користувач створює або змінює свій пароль, система генерує випадкова сільВін поєднує його з паролем (до, після або в певному форматі залежно від схеми) та застосовує до цієї комбінації алгоритм хешування, наприклад SHA-256 o SHA-512Пароль не зберігається в базі даних, а хеш (пароль + сіль), і в більшості схем сама сіль також зберігається разом із хешем.
Ця техніка відображає багато з методи атаки, засновані на попередньо обчислених хешах, як-от райдужні таблиці, і значно ускладнює словникові атаки та атаки методом перебору у великих масштабах. Зловмисник більше не може скористатися тим фактом, що кілька користувачів мають спільний пароль, оскільки кожен з них матиме різний хеш.
Важливо розуміти, що сіль сама по собі не є секретом: Це не пароль і не закритий ключЙого функція полягає у впровадженні випадковості та унікальності в процес хешування. Безпека все ще залежить від використання надійні паролі y відповідні алгоритми хешування, бажано спеціально розроблений для паролів (таких як bcrypt, scrypt, Argon2), хоча багато класичних систем Linux використовують варіанти SHA-256 або SHA-512.
Як працює підбір пароля соллю крок за кроком

Процес засолювання можна звести до низки досить простих кроків, але з величезний вплив на безпеку:
По-перше, коли користувач реєструється або змінює свій пароль, система генерує унікальна та випадкова сіль для цих облікових даних. Ця сіль зазвичай має достатню довжину (наприклад, 16 байтів або більше) та отримується з криптографічно захищеного генератора випадкових чисел.
Далі, пароль, обраний користувачем, поєднується з цією сіллю для формування проміжний ланцюгЦя комбінація може бути простою, як-от об'єднання salt + password, або ж мати складніший формат, визначений хеш-схемою. Важливо, щоб кожен користувач отримав різну комбінацію.
Тоді, а односторонній алгоритм хешуванняРезультатом є, здавалося б, випадковий рядок, хеш, фіксованої довжини, який буде збережено в базі даних разом із сіллю. У сучасних системах шукаються алгоритми, які створюють довгі та складні виходиЦе збільшує простір пошуку та робить атаки методом перебору дорожчими.
Зрештою, коли користувач входить у систему, система знову отримує введений пароль. пов'язана сіль З бази даних він повторює точно такий самий процес об'єднання та хешування та порівнює результат зі збереженим хешем. Якщо вони збігаються, він знає, що пароль правильний, без необхідності знати відкритий текст.
Цей механізм гарантує, що навіть у разі витоку бази даних зловмисник побачить лише окремі хеші з власними солямиЗамість набору порівнянних хешів, зупинка атаки не є магією, але вона стає значно більш обчислювально дорогою.
Переваги використання солі в хешах паролів

Основна причина використання солі полягає в тому, що посилює безпеку збережених паролів проти широкого спектру атак. Але варто детально розглянути конкретні переваги.
По-перше, засолювання забезпечує стійкість до атак словникаБез використання функції «саль» зловмисник може підготувати величезний список поширених паролів та їхніх хешів і просто порівняти їх із викраденою базою даних. З унікальною «сальт» для кожного користувача ці попередньо розраховані хеші стають марними, оскільки кожна комбінація пароля та «салі» генерує різне значення.
По-друге, вживання солі знижує ефективність райдужні столиЦе просто попередньо розраховані бази даних хешів популярних паролів для пришвидшення відновлення. Знову ж таки, оскільки результат залежить від конкретної солі, ці таблиці, розроблені для несолоних хешів, стають марними або, щонайменше, дуже неефективними.
Ще однією очевидною перевагою є те, що це покращує конфіденційність у разі витокуНавіть якщо зловмисник отримає доступ до таблиці користувачів з її хешем та сіллю, він не зможе швидко визначити, хто має той самий пароль, що й інші, або легко розпочати масові атаки. Кожен обліковий запис вимагає індивідуальної уваги, що зазвичай недоцільно у великих масштабах.
Крім того, соління додає складності атаки грубої силиЗамість того, щоб мати змогу перевірити пароль-кандидат на порівняння з усіма хешами одночасно, зловмисник змушений враховувати «саль» кожного користувача, множачи загальне робоче навантаження. Якщо це поєднати з повільним та параметризованим алгоритмом хешування (наприклад, bcrypt або Argon2), вартість атаки ще більше зростає.
Зрештою, засолювання – це техніка, яка добре адаптується до технологічної еволюції. Навіть попри вдосконалення комп’ютерного обладнання та появу нових атак, поєднання міцного гашишу та унікальної солі Він підтримує високий та масштабований рівень складності: ви можете збільшити довжину солі, посилити алгоритм, збільшити обчислювальні витрати тощо.
Як Linux реалізує засолення паролів (/etc/shadow)
У системах Linux та інших варіантах *NIX паролі користувачів зберігаються не в /etc/passwd, а у файлі / etc / shadowЦей файл, доступний лише суперкористувачу, зберігає хеші паролів разом з додатковою інформацією, і саме тут чітко видно використання солі та алгоритму хешування.
Рядки в /etc/shadow мають структуру, подібну до такої:
користувач:$id$sal$hash:додаткові_поля…
Символ $ Розділіть різні частини. Перша частина після імені користувача вказує на тип алгоритму використовується. Наприклад, $ 1 $ зазвичай представляє MD5, $ 5 $ SHA-256 та $ 6 $ SHA-512, який є найпоширенішим алгоритмом у сучасних дистрибутивах, оскільки він пропонує більшу безпеку, ніж старіші схеми на основі DES або MD5.
Після появи ідентифікатора алгоритму сільа потім результуючий хешВсе це знаходиться в одному полі. Коли пароль підтверджено, система зчитує цей ідентифікатор, сіль, застосовує алгоритм, що відповідає введеному паролю, та порівнює розрахований хеш із збереженим.
Якщо ви хочете швидко перевірити, які користувачі мають зашифровані паролі та який алгоритм використовується, ви можете скористатися командою типу grep '\$' /etc/shadowУ цьому контексті знак долара ($) використовується для пошуку рядків із хешами у сучасному форматі. Символ має бути екранований зворотною скісну рискою, оскільки в регулярних виразах він означає «кінець рядка».
Облікові записи без пароля або заблоковані облікові записи зазвичай відображають таке значення в цьому полі. ! o * замість хешу з доларами, що вказує на те, що його неможливо автентифікувати за допомогою стандартного пароля. Ця структура чітко пояснює одне: Linux інтегрує засолення у свій формат зберігання паролі рідно.
Різниця між хешуванням паролів та солінням
Важливо чітко розрізняти два поняття, які іноді плутають: хешування y засолюванняХешування паролів – це процес, за допомогою якого пароль перетворюється на нерозпізнаване значення за допомогою одностороннього алгоритму. Серверу ніколи не потрібно знати оригінальний пароль, лише потрібно перевірити, чи знає користувач правильний пароль, оскільки він генерує той самий хеш.
Проблема полягає в тому, що якщо два паролі однакові, Несолоний гашиш також буде ідентичнимЦе дозволяє зловмиснику порівнювати та групувати користувачів за паролем або використовувати попередньо розраховані таблиці. Крім того, якщо алгоритм хешування швидкий і розроблений для забезпечення цілісності даних (наприклад, простий SHA-256), він стає більш вразливим до масованих атак методом перебору.
Соління саме для того і допомагає вирішити цю слабкість: йдеться про додати випадкові дані до пароля перед хешуванням. У результаті навіть якщо два користувачі оберуть «casa» як пароль, хеші в базі даних будуть абсолютно різними, оскільки один матиме, наприклад, «casa+7Ko#», а інший — «casa8p?M» як рядок перед хешуванням.
Таким чином, хешування та засолення не конкурують, а радше доповнюють одне одного. Хешування забезпечує властивість односпрямованості та легкість перевірки; сіль забезпечує унікальність та стійкість до масованих атакРеалізація безпечного зберігання паролів поєднує обидва методи, в ідеалі використовуючи алгоритм, розроблений для цієї мети, з налаштовуваною вартістю.
Використання солі в Linux з mkpasswd
У середовищах GNU/Linux та інших системах ЮнексДуже практичний спосіб експериментувати з засолюванням – це інструмент mkpasswdЦя команда використовується для генерації зашифровані паролі безпечно та зазвичай інтегровано в процеси створення користувачів, сценарії адміністрування тощо.
Базовий синтаксис mkpasswd дозволяє вказати пароль для шифрування та низку опцій, таких як тип алгоритму (наприклад, des, md5, sha-256, sha-512), використовуючи опцію -mУ сучасних системах розумним рішенням є вибір SHA-512 як мінімум, або навіть за допомогою надійніших схем, якщо дистрибутив їх підтримує.
Особливо цікавим варіантом у контексті засолювання є -SЯкий дозволяє додати сіль до пароля перед його шифруванням. Якщо не вказано вручну, mkpasswd може згенерувати випадкова сіль у кожному виконаннітак що навіть при використанні одного й того ж пароля для входу результуючий хеш щоразу буде різним.
Це можна легко перевірити: якщо ви зашифруєте «password123» кілька разів за допомогою mkpasswd, використовуючи SHA-512 та випадкову соль, ви отримаєте абсолютно різні хеші. Однак, якщо ви передасте одне й те саме значення солі за допомогою -S, хеш завжди буде ідентичним, оскільки комбінація пароль + соль не змінюється.
Завдяки цьому інструменту це дуже легко Підготуйте паролі, зашифровані за допомогою солі додавати до файлів конфігурації, керувати користувачами вручну або тестувати поведінку засолення без необхідності програмування.
Пристрасний письменник про світ байтів і технологій загалом. Я люблю ділитися своїми знаннями, пишучи, і саме це я буду робити в цьому блозі, показуватиму вам все найцікавіше про гаджети, програмне забезпечення, апаратне забезпечення, технологічні тренди тощо. Моя мета — допомогти вам орієнтуватися в цифровому світі в простий і цікавий спосіб.