Поскольку он содержит весь «спектр» возможностей.
Атака по словарю - это метод грубой силы, просто пытающийся использовать возможности.Вот так (псевдокод 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).
Цель здесь - опередить доступную вычислительную мощность.