2010-12-04 1 views

ответ

14

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

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

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

Что касается MySQL, особенно если вы предоставляете соль при хешировании пароля, убедитесь, что вы записываете, какая именно соль была где-то. Затем, когда пользователь пытается выполнить аутентификацию, вы объединяете это записанное значение соли с паролем (например, во время вызова crypt), и если итоговый хеш совпадает, то они ввели правильный пароль. (Обратите внимание, что ни в коем случае не происходит хеширование пароля, и, таким образом, один из способов.)

4

Соль добавляется к открытому тексту (или наоборот) перед хэшированием, чтобы сделать поиск в словарях более дорогостоящим.

+0

К примеру, вы даете мне пример? – 2010-12-04 03:08:26

+0

+1 - справа. Например, это означает, что злоумышленник, у которого есть доступ к кучу хэшированных паролей, не может только SHA1-хешировать словарь один раз и сравнивать его со всеми паролями навалом; из-за соли, хеширование должно быть переделано (с правильной солью) для каждого пароля. – 2010-12-04 03:12:39

9

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

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

$salt = "this is a salt"; 
$password = 'this is an password'; 
$hash = sha1($salt.$password); 

Вот как вы в принципе можете солить пароль