Является ли MD5 менее безопасным, чем SHA et. и др. в практическом смысле? - PullRequest
9 голосов
/ 21 апреля 2009

Я видел a несколько вопросов и ответов на SO, предполагающих, что MD5 менее безопасен, чем что-то вроде SHA.

Мой вопрос: Стоит ли беспокоиться в моей ситуации?

Вот пример того, как я его использую:

  1. На стороне клиента я предоставляю «безопасную» контрольную сумму для сообщения, добавляя текущее время и пароль, а затем хешируя его с помощью MD5. Итак: MD5(message+time+password).
  2. На стороне сервера я проверяю этот хеш против отправленного сообщения, используя мои данные о времени, когда оно было отправлено, и пароль клиента.

В этом примере мне действительно лучше использовать SHA вместо MD5?

При каких обстоятельствах выбор хэш-функции действительно будет иметь практическое значение?

Edit:

Просто чтобы уточнить - в моем примере , есть ли какая-то выгода от перехода на алгоритм SHA?

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

Больше правок:

Извиняюсь за повторное редактирование - я не совсем понял, о чем спрашиваю.

Ответы [ 11 ]

0 голосов
/ 21 апреля 2009

Нет ничего небезопасного в использовании MD5 таким образом. MD5 был сломан только в том смысле, что существуют алгоритмы, которые при наличии набора данных A могут генерировать дополнительные данные B для создания желаемого хэша. Это означает, что если кто-то знает хэш пароля, он может создать строку с этим хэшем. Тем не менее, эти сгенерированные строки обычно очень длинные, поэтому, если вы ограничите пароли 20 или 30 символами, вы все равно, вероятно, в безопасности.

Основная причина использования SHA1 вместо MD5 заключается в том, что функции MD5 постепенно сокращаются. Например, библиотека Silverlight .Net не содержит поставщика криптографии MD5.

...