Райдужні таблиці (rainbow tables)
Коротко: Райдужні таблиці — це заздалегідь обчислені таблиці пошуку, за допомогою яких із хешу пароля швидко відновлюють пароль. Сіль робить їх марними.
Докладніше: Замість того щоб щоразу перебирати всі паролі, вони міняють пам’ять на час обчислень: заздалегідь обчислюються ланцюжки з кроків хешування й редукції, а зберігаються лише початок і кінець.
Подробиці
- Ідея: Ланцюжок
пароль → хеш → пароль' → хеш → …зберігається як (початок, кінець). Під час злому ланцюжок будується заново від цільового хешу, доки не збігнеться кінцева точка, потім відновлюється від початку. - Контрзахід — сіль: Випадкове додаткове значення для кожного користувача перетворює однакові паролі на різні хеші. Таблиці довелося б перераховувати для кожної солі. Див. безпечне зберігання паролів.
- Повільні методи: Argon2, bcrypt і scrypt роблять кожну спробу дорогою.
- Сьогодні: Проти несолоних застарілих хешів (MD5, SHA-1, див. MD5 і SHA-1) вони ще працюють. Для стійких паролів практичніші словникові атаки на GPU.
- Урок: Ніколи не зберігати паролі зі швидким несолоним хешем.
Див. також: Гешування