Радужная таблица - это оптимизация для инвертирования хеш-функций: поиск пароля, когда у вас есть только хеш. Хотя в этом нет особой необходимости, я рекомендую прочитать Что такое радужные таблицы и как они используются? , что дает очень хорошее объяснение, которое устраняет некоторые распространенные заблуждения.
Существует две части шифрования RAR (или почти все, что использует пароль для шифрования некоторых данных). Во-первых, ключ шифрования получается из пароля с использованием функции получения ключа (KDF). Затем ключ шифрования используется для шифрования или дешифрования данных.
Даже если KDF - это хеш-функция, радужная таблица не поможет: у злоумышленника нет вывода KDF. Когда для аутентификации используется пароль, вывод KDF - это то, что хранится в базе данных. Когда для шифрования используется пароль, вывод KDF - это секретный ключ, за которым следует злоумышленник.
В любом случае радужные таблицы помогают только против несоленых хэшей . WinRAR использует хороший KDF ( PBKDF2 ), который включает соль.
KDF преобразует строку переменной длины в ключ фиксированного размера. Ключевое свойство KDF заключается в том, что он должен различать входные строки для разных ключей. A криптографическая хеш-функция (SHA-1, SHA-256, ...) достигает этого. Когда входная строка является предоставленным человеком паролем, есть два других важных свойства, которые хеш-функция сама по себе не достигает:
- Если два человека выбирают один и тот же пароль, они не должны иметь один и тот же ключ.
- KDF должен быть медленным для вычисления, чтобы злоумышленник не мог найти пароль с помощью грубой силы.
Соль приобретает первое свойство. Второе свойство достигается с помощью чего-то вроде этого: взять пароль, добавить соль, хэшировать много; возьми этот хэш, добавь соль, хэш много; повторить много раз.
Радужная таблица - это оптимизация для вычисления прообразов с помощью «односторонних» функций: функций, которые легко вычислить в одном направлении, но практически невозможно инвертировать, т. Е. С учетом x легко вычислить y = f (x) но с учетом y не существует известного способа найти x, для которого y = f (x), кроме как угадать x и проверить. Хеш-функции такие. Шифрование с помощью симметричного ключа не таково: атакующий не может вычислить f больше, чем он может вычислить его обратное. Следовательно, радужные таблицы не могут помочь с нарушением симметричного шифрования.