5 или 6 символов легко. 6 байт выполнимо (это 2 комбинаций), даже с ограниченным оборудованием.
А именно, простой процессор Core2 от Intel сможет хэшировать один пароль примерно за 150 тактов (при условии, что вы используете реализацию SSE2, которая будет бить четыре пароля параллельно в 600 тактов). Благодаря четырехъядерному процессору с тактовой частотой 2,4 ГГц (это мой компьютер, а не совсем новейшая машина), я могу попробовать примерно 2 паролей в секунду. Для такого рода работ массивная параллельная архитектура прекрасна, поэтому имеет смысл использовать графический процессор. Возможно, за 200 $ вы можете купить видеокарту NVidia, которая будет примерно в четыре раза быстрее (т. Е. 2 паролей в секунду). 6 буквенно-цифровых символов (в верхнем, нижнем регистре и цифрах) близки к 2 комбинации; пробовать их все, то вопрос 2 (36-28) секунд, который меньше, чем пять минут. С 6 случайными байтами потребуется 2 секунд, то есть чуть меньше двух недель.
Это для стоимости процессора. Если вы хотите ускорить фактическую атаку, вы сохраняете результаты хэша: таким образом, вам не нужно будет перекомпилировать все эти хэшированные пароли каждый раз, когда вы нападете на пароль (но вы все равно должны сделать это один раз). 2 хэш-результаты (по 16 байт) означают 1 терабайт. Вы можете купить жесткий диск, который будет стоить 100 долларов. 2 Результаты хэша предполагают 4096 раз, что место для хранения; в простых жестких дисках это будет стоить столько же, сколько дома: немного дорого для среднего скучного студента, но доступного для большинства видов правительственных или преступных организаций.
Радужные столы - это трюк оптимизации для хранения. Грубо говоря, вы хранить только один каждый т результатов хэширования, в обмен того, чтобы сделать T поисках, и T 2 хэш вычислений для каждой атаки. Например, вы выбираете t = 1000, вам нужно купить только четыре жестких диска вместо четырех тысяч, но вам нужно будет сделать 1000 поисковых запросов и миллион хэшей каждый раз, когда вы захотите взломать пароль (это потребует дюжины секунд в большинство, если вы это сделаете правильно).
Следовательно, у вас есть два вида издержек:
CPU стоить о вычислении хэшей для полного пространства паролей; с таблицей (радуга или нет) вы должны сделать это один раз, а затем можете повторно использовать это вычислительное усилие для каждого атакованного пароля.
Стоимость хранения - это хранение результатов хэширования, чтобы легко атаковать несколько паролей. Жесткие диски не очень дороги, как показано выше. Таблицы Rainbow помогут вам снизить затраты на хранение.
Salting поражения стоимость обмена через предварительно вычисленные таблицы (являются ли они радужные таблицами или просто таблицы не имеют никакого эффекта здесь: таблицы о повторном использовании предвычисленных значений для нескольких нападали паролей и соль предотвращения такой переработки).
Стоимость ЦП может быть увеличена путем определения того, что хеш-процедура - это не только один хэш-расчет; например, вы можете определить «хэш пароля» как применение MD5 по конкатенации 10000 копий пароля. Это заставит каждого злоумышленника угадать один тысяч в несколько раз дороже. Он также делает законную проверку пароля в тысячу раз дороже, но большинство пользователей не будут возражать (пользователь только что набрал свой пароль, он не может действительно проверить, не была ли проверка пароля занятой 10 мс или 10 мкс).
Современные Unix-подобные системы (например, Linux) используют пароли «MD5», которые фактически сочетают солевое и итерированное хеширование, как описано выше. (На самом деле, современная система Linux может использовать другую хеш-функцию, такую как SHA-256, но это ничего не меняет здесь.) Таким образом, предварительно вычисленные таблицы не помогут, а взлом паролей «на лету» стоит дорого. Пароль с 6 буквенно-цифровыми символами может быть взломан в течение нескольких дней, потому что в любом случае 6 символов слабы. Кроме того, многие более длинные пароли являются взломанными, потому что оказывается, что люди начинают плохо, помня пароли; поэтому они не будут выбирать какую-либо случайную последовательность символов, они будут выбирать пароли, которые имеют некоторое «значение». Это уменьшает пространство возможных паролей.
MD5 официально сломан, а SHA-1 находится на полпути. Избежать их. –
@Steven SHA-1 далеко не сломан. То, что они сделали, уменьшает количество попыток найти столкновение от 2^80 до 2^51, что по-прежнему довольно неплохо. – NullUserException
@NullUserException: Uhm, это как раз определение «сломан». Если он принимает * меньше * чем грубая сила, он сломан. –