Имеют ли похожие пароли похожие хеши? - PullRequest
10 голосов
/ 21 апреля 2010

Наша компьютерная система на работе требует, чтобы пользователи меняли свой пароль каждые несколько недель, и вы не можете иметь тот же пароль, что и раньше. Он запоминает что-то вроде 20 ваших последних паролей. Я обнаружил, что большинство людей просто увеличивают цифру в конце своего пароля, поэтому «thisismypassword1» становится «thisismypassword2», а затем 3, 4, 5 и т. Д.

Поскольку все эти пароли хранятся где-то, я задался вопросом, есть ли слабость в самих хешах, для стандартных алгоритмов хеширования, используемых для хранения паролей, таких как MD5. Может ли хакер увеличить свои шансы на взлом пароля, если у него есть список хэшей схожих паролей?

Ответы [ 10 ]

11 голосов
/ 21 апреля 2010

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

Вы можете попробовать это с MD5 и различными строками.

"hello world" - 5eb63bbbe01eeed093cb22bb8f5acdc3
"hello  world" - fd27fbb9872ba413320c606fdfb98db1
10 голосов
/ 21 апреля 2010

Имеют ли похожие пароли одинаковые хэши?

номер

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

Конечно, нет способа узнать, есть ли у хэша необнаруженные слабости или слабости, известные злоумышленнику, но не опубликованные, и в этом случае наиболее вероятно, что злоумышленник является хорошо финансируемой правительственной организацией. У АНБ, конечно же, есть негласные теоретические атаки на некоторые крипто-компоненты, но пригодность этих атак - другой вопрос. GCHQ, вероятно, есть. Я предполагаю, что в нескольких других странах есть секретные криптографические программы с достаточным количеством математиков, чтобы сделать оригинальную работу: Китай будет моим первым предположением. Все, что вы можете сделать, это действовать на основе наилучшей имеющейся информации. И если в наилучшей имеющейся информации говорится, что хеш-код «хорош для крипто», то это означает, что подобного рода сходства не существует.

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

Может ли хакер увеличить свои шансы на взлом пароля, если у него есть список хэшей схожих паролей?

Косвенно, да, зная, что это ваши старые пароли. Не из-за какого-либо свойства хеша, но предположим, что злоумышленнику удается (очень медленно) перебором одного или нескольких ваших старых паролей с использованием этих старых хэшей, и он видит, что в прошлом это были «thisismypassword3» и «thisismypassword4» .

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

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

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

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

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

10 голосов
/ 21 апреля 2010

Зависит от алгоритма хеширования. Если это хорошо, похожие пароли не должны иметь аналогичные хэши.

6 голосов
/ 21 апреля 2010

Смысл криптографического хэша в том, что подобные пароли абсолютно не создают подобные хэши.

Что еще более важно, вы, скорее всего, запалите пароль, чтобы даже те же самые пароли не создавали один и тот же хеш.

4 голосов
/ 21 апреля 2010

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

Я использовал следующий код для запуска быстрого теста:

<?php
for($i=0;$i<5;$i++)
        echo 'password' . $i . ' - ' .md5('password' . $i) . "<br />\n";
?>

и я получил следующие результаты:

password0 - 305e4f55ce823e111a46a9d500bcb86c
password1 - 7c6a180b36896a0a8c02787eeafb0e4c
password2 - 6cb75f652a9b52798eb6cf2201057c73
password3 - 819b0643d6b89dc9b579fdfc9094f28e
password4 - 34cc93ece0ba9e3f6f235d4af979b16c
4 голосов
/ 21 апреля 2010

Различные входы могут приводить к одному и тому же хешу, это то, что называется хеш-конфликтом.

Проверьте здесь:

http://en.wikipedia.org/wiki/Collision_%28computer_science%29

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

http://en.wikipedia.org/wiki/Birthday_attack

4 голосов
/ 21 апреля 2010

Зависит от используемого алгоритма хеширования. Хороший будет распределять аналогичные входы по разным выходам.

1 голос
/ 21 апреля 2010

Как правило, «хороший хеш» не будет хэшировать две одинаковые (но неравные) строки с похожими хешами. MD5 достаточно хорош, что это не проблема. Тем не менее, существуют «радужные таблицы» (по сути, пароль: хэш-пары) для довольно большого числа распространенных паролей (и для некоторых хэшей паролей, например, для традиционных паролей unix на основе DES) существуют полные радужные таблицы.

1 голос
/ 21 апреля 2010

Нет, если вы хоть немного проверите пароль, он выдаст совершенно новый хеш

1 голос
/ 21 апреля 2010

Короткий ответ, нет!

Вывод хеш-функции сильно варьируется, даже если один символ увеличен.

Но это только если вы хотите отключить саму хэш-функцию.

Конечно, это плохая практика, так как облегчает брутфорс.

...