Райдужна таблиця (rainbow table) — заздалегідь обчислена структура даних, що дає змогу відновлювати паролі за хешами без солі набагато швидше, ніж обчислюючи кожен хеш під час атаки.
Як працюють райдужні таблиці
Зламування хешу зазвичай означає хешування варіантів пароля, доки не знайдеться збіг. Готова таблиця «пароль — хеш» для всіх паролів працювала б миттєво, але потребувала б колосального обсягу пам’яті. Райдужні таблиці, запропоновані Філіпом Ошліном (Philippe Oechslin) 2003 року на основі компромісу «час — пам’ять» Мартіна Геллмана 1980 року, знаходять золоту середину:
- Таблиця складається з ланцюжків: пароль хешують, хеш за допомогою «функції редукції» перетворюють на новий варіант пароля, який знову хешують, — і так тисячі разів.
- Зберігаються лише перше й останнє значення кожного ланцюжка, що заощаджує величезний обсяг місця.
- Щоб зламати хеш, зловмисник будує від нього ланцюжок, шукає збіг кінцевої точки, а потім відтворює ланцюжок повністю й знаходить пароль.
Кожна таблиця придатна лише для одного алгоритму хешування й заданого набору символів і довжини. Метод популяризували RainbowCrack і Ophcrack — особливо проти LM- та NTLM-хешів Windows, які не використовують сіль.
Чому це важливо
Для швидких хешів без солі — MD5, SHA-1 чи NTLM — райдужні таблиці скорочують час зламування коротких паролів із кількох днів до хвилин. Саме такі хеші витікали під час багатьох давніх зламів сайтів. Сьогодні атаки за словником на відеокартах за допомогою Hashcat часто швидші й гнучкіші, але райдужні таблиці лишаються хрестоматійним прикладом того, чому так важливий правильний спосіб зберігання хешів.
Як захиститися
- Додавати до кожного пароля перед хешуванням унікальну випадкову сіль — вона робить заздалегідь обчислені таблиці марними.
- Використовувати спеціальні алгоритми хешування паролів: Argon2, bcrypt, scrypt або PBKDF2.
- Вимкнути застарілі LM-хеші й зменшити залежність від NTLM.
- Вимагати довгі паролі або парольні фрази.





