Радужный стол? - PullRequest
       62

Радужный стол?

6 голосов
/ 19 февраля 2011

Кто-нибудь знает, почему он называется радужным столом?Только что вспомнили, что мы узнали, что есть атака под названием «словарная атака»Почему это не словарь вызова?

Ответы [ 4 ]

6 голосов
/ 19 февраля 2011

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

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

На этой картинке различные функции сжатия K1, K2, K3 имеют цвета, похожие на радугу: Таблица, хранящаяся в файле, содержит только первый и последний столбцы, поскольку средние столбцы можно пересчитать.

enter image description here

6 голосов
/ 19 февраля 2011

Поскольку он содержит весь «спектр» возможностей.

Атака по словарю - это метод грубой силы, просто пытающийся использовать возможности.Вот так (псевдокод Python)

mypassworddict = dict()

for password in mypassworddict:
    trypassword(password)

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

bin1, bin2, bin3, bin4, bin5, ...

, которые соответствуют двоичным частям выходной строки - так строка заканчивается в длину.По мере продолжения хэша он по-разному влияет на разные части бинов.Таким образом, первый байт (или любое другое поле ввода), входное значение влияет (скажем, упрощенно) на ячейки 3 и 4. Следующий вход влияет на 2 и 6. И т. Д.

Радужная таблица - это вычисление все возможности данного бина, т. Е. Все возможные инверсии этого бина, для каждого бина ... вот почему он так велик.Если первое значение bin равно 0x1, то вам нужен список поиска всех значений bin2 и всех значений bin3, работающих в обратном направлении через хеш, что в итоге дает вам значение.

Почему это не называется атакой по словарю?Потому что это не так.

Поскольку я видел ваш предыдущий вопрос, позвольте мне подробнее остановиться на деталях, которые вы ищете.Криптографически безопасный хеш должен быть идеально защищен от небольших входных размеров до целых файлов.Для предварительного вычисления значений хеша для весь файл будет длиться вечно.Таким образом, радужная таблица разработана на небольшом хорошо понятном подмножестве выходных данных, например, перестановки всех символов az над полем, скажем, 10 символов.

Вот почему совет по паролю для победы над атаками по словарям работает здесь.Чем больше подмножеств всего возможного набора входных данных, которые вы вводите в свой ввод для хэша, тем больше радуговой таблицы должно содержаться для его поиска.Требуемые размеры данных оказываются глупо большими, как и время поиска.Итак, подумайте об этом:

  • Если у вас есть ввод [a-z] для 5-8 символов, это не так уж плохо для радужной таблицы.
  • Если вы увеличите длинудо 42 символов, это огромный радужный стол. Каждый ввод влияет на хеш и, следовательно, на ячейки указанного хэша.
  • Если вы добавите числа в свое требование поиска [a-z][0-9], у вас будет еще больше поиска.
  • Аналогично [A-Za-z0-9].Наконец, введите [\w], т. Е. Любой печатный символ, который вы можете себе представить, и снова вы смотрите на массивный стол.

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

Цель здесь - опередить доступную вычислительную мощность.

1 голос
/ 30 мая 2013

К сожалению, некоторые из утверждений не верны. Вопреки тому, что приносят опубликованные радужные таблицы, НЕ содержат все возможности для данного пространства ключей, а не те, которые были сгенерированы для использования, которое я видел. Они могут быть сгенерированы для охвата 99,9, но из-за случайности хэш-функции нет никакой гарантии, что КАЖДЫЙ открытый текст будет покрыт.

Каждая цепочка состоит из звеньев или шагов, а каждый шаг состоит из функции хеширования и редукции. Если бы ваша цепочка была длиной в 100 ссылок, вы бы пошли на это число функций хеширования / редукции, а затем отбросили бы все промежуточное, кроме начала и конца.

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

Они не содержат словарей .... Ну, кроме традиционных таблиц, есть варианты радужных таблиц, которые включают использование словарей.

Вот и все. Существует множество способов оптимизации этого процесса, включая удаление объединяющих / дублирующих цепочек и создание идеальных таблиц, а также хранение их в разных упаковках для экономии места и времени загрузки.

1 голос
/ 19 февраля 2011

Я не знаю, откуда пришло название, но различия:

  • Словарь содержит несколько выбранных элементов (например, английские слова), а радужная таблица содержит все возможные комбинации.
  • Словарь содержит только входные данные, а радужная таблица содержит как входные, так и выходные данные.
  • Словарь используется для проверки различных входных данных, чтобы увидеть, является ли этот вывод действительным, в то время как радужная таблица используется для обратного просмотра, т. Е. Для определения того, какой вход дает определенный выход.
...