У статті Coda Hale "Як безпечно зберігати пароль" стверджується, що:
bcrypt має вбудовані солі для запобігання атак на веселковий стіл.
Він цитує цей документ , в якому йдеться про те, що у впровадженні OpenBSD bcrypt
:
OpenBSD генерує 128-бітну криптовалютну сіль з ключового потоку arcfour (arc4random (3)), засіяний випадковими даними, які ядро збирає під час синхронізації пристрою.
Я не розумію, як це може працювати. У моєму розумінні солі:
- Він повинен бути різним для кожного збереженого пароля, так що для кожного потрібно було б створити окрему таблицю веселки
- Його потрібно зберігати десь так, щоб це було повторюваним: коли користувач намагається увійти, ми робимо його спробу пароля, повторюємо ту саму процедуру соління, яку ми робили, коли ми зберігали свій пароль, і порівнюємо
Коли я використовую Devise (менеджер входу в Rails) з bcrypt, в базі даних немає соляного стовпця, тому я плутаюся. Якщо сіль є випадковою і ніде не зберігається, то як можна надійно повторити процес перемішування?
Коротше кажучи, як може bcrypt мати вбудовані солі ?