Стоит ли MD5 каждая буква пароля? - PullRequest
3 голосов
/ 05 января 2011

Привет,

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

Что я спрашиваюесть, стоило ли бы MD5 каждый элемент в массиве char (полученный из поля Password), с помощью которого вы добавляете соль к каждому элементу char, который нужно хэшировать с помощью MD5, после завершения добавьте все хэши от каждого символаи затем добавьте к этому отдельную соль, а затем снова MD5?

Это действительно безопасно или просто перебор?

Ответы [ 9 ]

16 голосов
/ 05 января 2011

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

Правильное решение - использовать правильный алгоритм хэширования паролей (например, bcrypt, scrypt или pbkdf2) и избегать создания собственных алгоритмов.

MD5 (и SHA-1, SHA-2,и т. д.) настолько быстро, что все равно очень легко взломать пароли.

Редактировать

И сегодня мы видим замечательный пример того, почему: хакер iPhone публикует секретную Sony PlayStation 3key

Однако Sony разработала собственное программное обеспечение для подписи, в котором для каждой подписи использовалось постоянное число.

2 голосов
/ 05 января 2011

Вероятно, было бы лучше использовать более современный алгоритм хеширования, например SHA-1 / SHA-2 .В MD5 есть известные уязвимости (и даже в более современных SHA-1 есть некоторые).

1 голос
/ 05 января 2011

MD5 имеет недостатки:

http://www.kb.cert.org/vuls/id/836068

Похоже, что с вашим предложением вы только увеличите безопасность на O (n + 1), где n - длина пароля, котораяэтого недостаточно.

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

1 голос
/ 05 января 2011

Для меня это не очень хорошая идея, равно как и использование MD5.Вместо этого используйте современный алгоритм SHA (например, SHA256).

0 голосов
/ 05 января 2011

Хороший алгоритм хеширования и хорошая соль будут хорошим началом. Как только хакер узнает, что вы поместили отдельные символы в хеш, его легко расшифровать. Радужные таблицы для отдельных персонажей могут быть сгенерированы в течение нескольких секунд;).

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

Если ваши пароли необходимо отправлять из одного приложения (клиента) в другое (сервер), возможно, даже более важно использовать безопасный протокол для связи.

0 голосов
/ 05 января 2011

Стоит ли MD5 каждая буква пароля?

Это сделало бы пароль МЕНЬШЕ безопасным.Чтобы перебить полный пароль, вы должны попробовать каждую комбинацию каждой буквы (или иметь хороший словарь). Если вы шифруете одну букву за раз, вам нужно будет попытаться взломать только одну букву за раз (что является триальным)

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

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

Рабочие гробницы для фараонов также погребены, чтобы никто из них не узнал о местонахождении гробницы, и, тем не менее, AFAIK, только одна гробница была найдена неповрежденной.;)

Вы можете попробовать Seeded SHA для повышения безопасности.

0 голосов
/ 05 января 2011

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

Взгляните на http://en.wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions

0 голосов
/ 05 января 2011

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

0 голосов
/ 05 января 2011

Это на самом деле не будет более безопасным.

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

Если вы используете что-то более сложное, например SHA-512,добавлю гораздо больше безопасности.

...