Что такое СОЛЬ и как его использовать?

Я искал вокруг, и я до сих пор не знаю, что такое «соль» и как его использовать / внедрять. Извините за вопрос noobish, я сам изучаю php.

Solutions Collecting From Web of "Что такое СОЛЬ и как его использовать?"

Я определенно не эксперт, но на самом деле короткий ответ заключается в том, что «соление» строки текста означает вставить несколько лишних символов в конце. Вы можете солить соль с помощью «abcdefg», чтобы получить «saltabcdefg». Это может быть полезно, если «соль» оказывается паролем, который вы хотите усложнить.

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

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

Для PHP вы можете посмотреть, как это реализовано в некоторых инфраструктурах. Две быстрые ссылки для CakePHP и Zend соответственно:

http://www.jotlab.com/2010/04/18/cakephp-rainbow-table-protection-behaviour/

http://www.zimuel.it/blog/2009/07/build-a-secure-login-with-zend-framework/

Когда я впервые задал этот вопрос, много лет назад меня спросили в ответ: «Что делает соль для еды?» Ответ заключается в том, что он добавляет разнообразие в пищу. Идея криптографической соли заключается в том, что это то, что вы добавляете в конец или начало строки, чтобы два идентичных пароля не имели хеша с одним и тем же криптографическим значением.

Подумайте об этом – если бы у меня был пароль, который был действительно распространен, например, «hello123», а затем он хэшировал точно так же криптографическим хешем, как и все другие пароли hello123, не мог бы я просто посмотреть в списке хэшированных паролей, чтобы увидеть кто еще имел тот же криптографический хеш и использовал мой пароль в своей учетной записи?

Ну его в комментариях, спасибо ceejayoz

http://en.wikipedia.org/wiki/Salt_(cryptography)

Соль – это то, что вы добавляете к строке, прежде чем вы ее используете, добавляет еще один уровень безопасности для паролей и тому подобное.

Соль – это (короткая) строка, которая добавляется к строке, которую вы хотите зашифровать или хешировать. Пример:

<?php $password = 'abcdefg'; $salt = 'anythingyouwant_'; $pw_hash = md5($salt.$password); ?> 

Это добавляет безопасность хешу, так как маловероятно, что «anythingyouwant_abcdefg» уже хранится в хэш-базе данных ( http://en.wikipedia.org/wiki/Rainbow_tables )

По какой-то причине. Соли обычно трудны для людей, новых для криптографии. Как только он нажимает, концепция чрезвычайно проста. Взгляните на эту статью. Я думаю, что это объясняет концепцию лучше, чем большинство.

http://cryptodox.com/Salt_%28cryptography%29

Давайте немного подправить вещи, объединив несколько алгоритмов для хэширования, создав двойной алгоритм хэширования:

 $password = "myPassword"; $salt = sha1(md5($password)).'k32duem01vZsQ2lB8g0s'; $password = md5($password.$salt); 

Как вы можете видеть, мы сначала хэшировали пароль, используя двойной алгоритм хэширования (md5 и sha1), и конкатенацию с ключом, созданным значением соли. После этого мы объединили настоящий пароль с генерируемым значением соли и снова хэшировали его с помощью md5. Преимущество заключается в том, что таким образом значение alt является случайным, и оно изменяется, что делает невозможным его разрыв. Я имею в виду, если вы можете подождать миллион лет и иметь суперкомпьютер на руках, попробуйте его сломать.