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

Я делаю радужную атаку для домашнего задания, и у меня возникают проблемы с взломом паролей разной длины. Это означает, что я могу взломать любой пароль фиксированной длины 8, например, за +-2 минуты. Однако я не знаю, как обрабатывать пароли длиной от 5 до 8, не теряя при этом много времени.

Предполагая, что невозможно узнать длину пароля только по хэшу, я уже пытался взломать хэш, перебирая каждую длину по очереди. Это означает, что я трачу 2 x 4 минуты, чтобы взломать только 1 пароль.

Должен ли я сократить все возможные пароли до максимальной длины, а затем проверять только первые символы, или это плохая идея?

Я использую радужную таблицу в нижнем буквенно-цифровом регистре, алгоритм sha256 и 50 000 различных функций R. Я хотел бы найти способ ускорить эту операцию. Спасибо всем, кто может помочь.


person kalistawe    schedule 20.04.2019    source источник
comment
Прежде всего, SHA-256 имеет заполнение. что ввод становится кратным 512. Вывод криптографической хеш-функции является случайным, поэтому, если вы ограничите вывод, скажем, 10 битами, любой вывод будет происходить почти одинаково. Итак, только вам нужна хорошая функция сокращения для себя. Я не рекомендую вам ограничивать от 5 до 8, выбирайте ‹9. Но если вы хотите ограничить, если длина строки меньше 5, используйте функцию для отображения от 1 до 4 в 5-8 после функции сокращения.   -  person kelalaka    schedule 21.04.2019
comment
Спасибо за ваш ответ, но я не понял, как проверить длину пароля, потому что я получаю только хэш пароля для взлома.   -  person kalistawe    schedule 21.04.2019
comment
После сокращения у вас будет новый вход для следующего вычисления хеша, там проверьте длину и обработайте.   -  person kelalaka    schedule 21.04.2019
comment
Я предполагаю, что моя функция R плохая, потому что мне нужно указать длину, чтобы сгенерировать сокращение. Для примера даю хешированный пароль: ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae и длину сокращения в параметрах. Как функция R может сама угадать длину, чтобы я мог знать, что этот пароль имеет длину 7?   -  person kalistawe    schedule 21.04.2019
comment
Почему бы просто не обрезать после функции сокращения?   -  person kelalaka    schedule 21.04.2019


Ответы (1)


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

Важным моментом является то, что пространство из 7 символов в 36 раз меньше, чем пространство из 8 символов (строчные буквы и цифры), а пространство из 6 символов в 36 раз меньше. Таким образом, проверка всего 6-символьного пространства стоит около 0,1% от 8-символьного пространства, а меньшие пробелы практически бесплатны.

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

person Rob Napier    schedule 21.04.2019