Использование пароля дважды при хешировании делает его более безопасным? - PullRequest
1 голос
/ 01 апреля 2012

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

<?php
function user_signup(){    // The normal way
    $this->load->database();
$new_user_insert = array(
    'password' => sha1($salt . $this->input->post('password')));

}
 function user_signup(){    // The double insert way
    $this->load->database();
$new_user_insert = array(
    'password' => sha1($this->input->post('password') . $salt . $this->input->post('password')));

}
}

EDIT: Я думаю, что это сделало бы ввод вдвое длиннее, например (имя пользователя: joe, пароль: 123456789). Таким образом, вместо радужного стола с моим хэшем 123456789, это будет 123456789123456789. Я знаю, что это чрезмерное упрощение, и хеш будет выглядеть как 01a967f5d27b9e910754729a669504a60d2aa865, но хакеру понадобится большая радужная таблица. Пожалуйста, исправьте меня, если я ошибаюсь.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 01 апреля 2012

а хакеру понадобится большой радужный стол

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

Предположим, для простоты, что ваш пароль должен быть четырехзначным числом. (Конечно, это обобщается на более сложные пароли.) Тогда есть 10 000 возможных паролей. Если вы объедините пароль с самим собой для получения 18-значного числа, злоумышленник может вывести вторые девять цифр из первых девяти: 1234salt1234 потенциально допустим, но 1234salt4321 не может быть, и он не будет включен в радужную таблицу. Дополнительные цифры, приносящие функцию известной информации, не добавляют дополнительной сложности.

Добавление специфичной для пользователя соли к паролю в качестве хэша защищает от злоумышленника, который может получить хэши паролей и который знает систему. В частности, злоумышленник знает алгоритм хеширования пароля пользователя. Предполагая, что, как и прежде, четырехзначный цифровой пароль, злоумышленнику, использующему стратегию грубой силы, все равно потребуется попытаться набрать только 10 000 комбинаций (0000salt0000, 0001salt0001, ..., 9999salt9999). Первоначальная стратегия (без объединения пароля с самим собой) также потребовала бы 10 000 комбинаций (0000salt, ..., 9999salt), поэтому будет не менее сложной (для практических целей).

0 голосов
/ 01 апреля 2012

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

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

зачем вводить пароль 2 раза?

0 голосов
/ 01 апреля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...