Хэш-функции и защита паролей - PullRequest
1 голос
/ 13 января 2012

Мне было очень интересно узнать о различных формах хеширования и подобных паролях. Да, я знаю о солении и, вероятно, добавил бы это к хэшу, но это без соления. Я бы, наверное, использовал технику динамического посола.

Кроме всего прочего, мне было интересно, логично ли было делать то, что я показываю ниже?

<?php

$data = "David";
$hash_crc32 = crc32($data);
$hash_md5 = md5($data);
$hash_sha1 = sha1($data);
echo '<br /><br />' .$hash_crc32. '<br /><br />' .$hash_md5. '<br /><br />' .$hash_sha1;

?>

Эхо выводит следующее:

1180170431

464e07afc9e46359fb480839150595c5

d27937f914ebe99ee315f04449678eccfb658191

$hash_crc32_md5 = $hash_md5 + $hash_crc32 + $hash_sha1 . $hash_md5 . $hash_crc32 . $hash_sha1;

<?php echo '<br /><br />' .$hash_crc32_md5; ?>

что выводит эхо:

5820170431464e07afc9e46359fb480839150595c51180170431d27937f914ebe99ee315f04449678eccfb658191

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

Как вы думаете, насколько сложнее будет столкнуться с хэшированием и т. Д. С помощью этой формы?

Спасибо за любые ответы! :)

Ответы [ 2 ]

4 голосов
/ 13 января 2012

Это перебор?Я не могу комментировать это.Я скажу , что это, вероятно, менее безопасно, чем использование только одного из методов (с точки зрения теории информации).

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

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

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

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

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

Криптография не для слабонервных или для тех, кто не имеет докторскую степень в этой области: -)

1 голос
/ 13 января 2012

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

Слабость хеширования в значительной степени двояка: может быть возможным перебор хеша, если его обходится относительно недорого.все возможные пароли, хэшируйте их и сравнивайте с сохраненным хешем.В этом смысле ваша техника добавляет крошечную защиту, поскольку вычисление тройного хеша занимает немного больше времени, чем один простой хеш, поэтому злоумышленнику требуется больше времени, чтобы попробовать все комбинации.Это не очень важно, хотя.Лучший способ добиться этого - использовать более медленный алгоритм хеширования и / или просто повторить операцию хеширования определенное количество раз (100-1000 + раз).

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

Итак, то, что вы делаете, не делаетдействительно добавьте что-нибудь, что еще не было сделано лучше, и наиболее критически все еще не хватает уникальной соли.

...