Как работает функция сокращения, используемая с радужными столами?

Я внимательно прочитал о радужных таблицах и не может получить одно. Для построения хэш-цепочки используется функция сокращения. Это функция, которая каким-то образом отображает хэши на пароли. В этой статье говорится, что функция сокращения не является инверсией хеша, это просто некоторое отображение.

Я не понимаю - какое использование сопоставления не является даже обратным хеш-функции? Как такое сопоставление должно работать и помогать в выводе пароля?

Ответ 1

Радужный стол - это просто "умный метод сжатия" для большой таблицы предварительно вычисленных хэшей. Идея состоит в том, что таблица может "инвертировать" хэш-вывод тогда и только тогда, когда соответствующий столбец рассматривался при построении таблицы.

Каждая строка таблицы ( "цепочка" ) представляет собой последовательность вызовов хеш-функций. Хитрость заключается в том, что каждый вход вычисляется детерминистически из предыдущего выхода в цепочке, так что:

  • сохраняя начальную и конечную точки цепочки, вы "морально" сохраняете всю цепочку, которую вы можете перестроить по желанию (здесь таблица радуги может рассматриваться как метод сжатия);
  • вы можете начать восстановление цепочки с выхода функции хэш-функции.

Функция сокращения - это клей, который превращает хеш-функцию в соответствующий вход (например, символьная строка, которая выглядит как подлинный пароль, состоящий только из печатных символов). Его роль в основном состоит в том, чтобы иметь возможность генерировать возможные хэш-входы с большей или меньшей равномерной вероятностью, учитывая случайные данные для работы с (и хэш-выход будет приемлемо случайным). Функция сокращения не должна иметь какой-либо конкретной структуры, в частности, в отношении того, как работает сама хэш-функция; функция редукции должна просто поддерживать непрерывность построения цепочки, не создавая слишком много ложных столкновений.

Ответ 2

Причина, по которой функция редукции не является обратным хэшу, заключается в том, что истинный обратный хэш не будет функцией (помните, что фактическое определение "функции" требует одного выхода для одного входа).

Хэш-функции производят строки, которые короче, чем их соответствующие входы. По принципу "голубиная скважина" это означает, что два входа могут иметь одинаковый выход. Если произвольно длинные строки могут быть хэшированы, на самом деле бесконечное число строк может иметь одинаковый вывод. Однако таблица радуги обычно содержит только один вывод для каждого хэша - поэтому он не может быть истинным обратным.

Функция сокращения, используемая большинством радужных таблиц, "хранит самую короткую строку, имеющую этот хэш".

Ответ 3

Не имеет значения, будет ли то, что он производит, - это пароль: то, что вы получите, также будет работать как пароль, и вы можете войти в него как с оригинальным паролем.