У мене виникають проблеми з розумінням призначення солі до пароля. Наскільки я розумію, що основне використання - це стримувати атаку веселкового столу. Однак методи, які я бачив, щоб здійснити це, схоже, не ускладнюють проблему.
Я бачив багато навчальних посібників, які пропонують використовувати сіль як наступне:
$hash = md5($salt.$password)
Обґрунтування полягає в тому, що хеш зараз не відповідає оригінальному паролю, а комбінації пароля та солі. Але скажіть $salt=foo
і $password=bar
і $hash=3858f62230ac3c915f300c664312c63f
. Тепер хтось із райдужною таблицею міг би змінити хеш і придумати вхідний "foobar". Потім вони могли спробувати всі комбінації паролів (f, fo, foo, ... oobar, obar, bar, ar, ar). Може знадобитися ще кілька мілісекунд, щоб отримати пароль, але не дуже багато іншого.
Інше використання, яке я бачив, є в моїй системі Linux. У тіні / etc / shadow хешовані паролі фактично зберігаються з сіллю. Наприклад, сіль «Foo» і паролем «бар» буде хеш для цього: $1$foo$te5SBM.7C25fFDu6bIRbX1
. Якщо хакер якимось чином вдався до цього файлу, я не бачу, для чого служить сіль, оскільки, як te5SBM.7C25fFDu6bIRbX
відомо, зворотний хеш містить "foo".
Дякуємо за будь-яке світло, про який може пролитись кожен.
EDIT : Дякую за допомогу. Підсумовуючи те, що я розумію, сіль робить хешований пароль складнішим, таким чином, значно менше шансів існувати у попередньо розрахованій веселковій таблиці. Що раніше я неправильно зрозумів, це те, що я припускав, що райдужний стіл існує для ВСІХ хешей.