холодный синтез соления мой хэш - PullRequest
0 голосов
/ 06 октября 2011

В ColdFusion, как лучше всего сравнивать пароль для входа пользователя с базой данных, которая будет шифровать пароль между клиентом и сервером?

Я заметил, что есть версия javascript на http://pajhome.org.uk/crypt/md5/index.html

но что можно сделать для пользователей без включенного JavaScript?

1 Ответ

8 голосов
/ 06 октября 2011

Эти пункты не относятся только к Coldfusion, но я чувствую, что должен заявить о них:

  • Выполнить хеширование на стороне сервера.

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

  • Не используйте MD5.

Он сломан.Есть способы победить это.Не используйте его.

  • Если вы беспокоитесь о том, что пароль будет предоставлен на пути к серверу, используйте TLS.

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

  • Используйте безопасный хеш, такой как SHA-256.

AsНасколько нам известно, SHA-256 чертовски безопасен.Самая известная атака на нее уменьшает временную сложность на 2 бита, что не делает атаку практичной.

  • Используйте случайную соль, уникальную для каждого пользователя.

Предварительно вычисленная радужная таблица для 2 ^ 50-битного пространства заняла бы 256 петабайт памяти, а одна для 2 ^ 256 пространства заняла бы намного больше.Однако из-за проблемы с днем ​​рождения возможно, что некоторые учетные записи ваших пользователей могут быть скомпрометированы, если вы не засолите их хэши.

  • Хешируйте несколько раз.Порядка тысяч раз.

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

Некоторые дополнительные моменты, направленные на устранение заблуждений, похоже, что у вас есть:

  • Криптографический хеш - односторонний.Вы не можете расшифровать это.Если вы найдете практический способ расшифровки, вы станете богатыми и (не) знаменитыми.
  • Стандартный HTTP небезопасен.Любой может подслушать и перехватить ваш пароль, который отправляется в виде открытого текста или хэшируется.Если ваш сервер не требует зашифрованного соединения для конфиденциальных данных, вы запрашиваете повторную атаку (http://en.wikipedia.org/wiki/Replay_attack).
  • . Вы можете создать свой собственный сертификат SSL. Если вы беспокоитесь, что ваши пользователи увидят этот сертификат SSL,Я сам подписан! О, нет! »и, будучи напуганным, либо обойтись без риска, либо кашлянуть наличными.
...