Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: MD5 и соль

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): [1] 2 3 4 »   

> Без описания
Hapson
Отправлено: 07 Июля, 2013 - 13:14:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Говорят что MD5 не надежен и нужно использовать так называемую соль. Но что-то я не пойму в чем ее смысл.
Например:
PHP:
скопировать код в буфер обмена
  1. $pass = 'password';
  2. $md = md5($pass);
  3. $salt = uniqid(rand(), 1);
  4. $md = md5($md . $salt);
  5. echo $md;
  6.  
  7. if(md5(md5('password') . $salt) == $md){
  8.         echo 'да';
  9. }else{
  10.         echo 'нет';
  11. }

И что? Я ведь должен записать куда-то сгенерированную соль, чтобы потом авторизовать пользователя. Если соль не сохранять, то потом невозможно будет сверить пароль.
Вопрос: где хранить соль? В базе? Тогда смысл...


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Denkill
Отправлено: 07 Июля, 2013 - 13:17:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 330
Дата рег-ции: Янв. 2013  
Откуда: Барнаул


Помог: 7 раз(а)




Соль ставишь статистическую типо $salt = "salt";

P.S ну понимаешь что salt слишком просто


-----
Хо-Хо-Хо
 
 Top
Hapson
Отправлено: 07 Июля, 2013 - 13:21:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Denkill пишет:
Соль ставишь статистическую типо $salt = "salt";

P.S ну понимаешь что salt слишком просто

Ну это понятно. Но эту переменную тоже нужно где-то сохранить. Где?
Там же где и проходит хеширование?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Denkill
Отправлено: 07 Июля, 2013 - 13:22:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 330
Дата рег-ции: Янв. 2013  
Откуда: Барнаул


Помог: 7 раз(а)




Лучше конечно хранит в отдельном файле (что бы было легче менять)

А при шифровки и расшифровки инклудить этот файл.

(Отредактировано автором: 07 Июля, 2013 - 13:22:58)



-----
Хо-Хо-Хо
 
 Top
DelphinPRO
Отправлено: 07 Июля, 2013 - 13:36:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Denkill пишет:
Соль ставишь статистическую типо $salt = "salt";

Необязательно.
Некоторые системы (например Joomla, а ее думаю не дураки писали?) хранят соль в базе, причем соль для каждого юзера уникальная.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Hapson
Отправлено: 07 Июля, 2013 - 13:36:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Denkill пишет:
Лучше конечно хранит в отдельном файле (что бы было легче менять)

А при шифровки и расшифровки инклудить этот файл.

А зачем ее менять?
Если к примеру зарегистрировался пользователь User с паролем password и я его пароль зашифровал с солью salt, то я должен хранить эту соль пока активен User.
(Добавление)
DelphinPRO пишет:
Denkill пишет:
Соль ставишь статистическую типо $salt = "salt";

Необязательно.
Некоторые системы (например Joomla, а ее думаю не дураки писали?) хранят соль в базе, причем соль для каждого юзера уникальная.

Вот и я о том же.
Соль-то для чего нужна? Если ломанули БД,то без соли пароли не расшифруют(наверно...). А если соль в БД лежит, и пусть даже уникальная для каждого пользователя, то в чем ее смысл?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
vanicon
Отправлено: 07 Июля, 2013 - 13:51:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




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

(Отредактировано автором: 07 Июля, 2013 - 13:53:25)



-----
Так было, так есть и так будет
 
 Top
roadster
Отправлено: 07 Июля, 2013 - 13:52:25
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Июль 2013  
Откуда: Ukraine


Помог: 0 раз(а)




Почитайте вот тут: http://forum[dot]antichat[dot]ru/showthread.php?p=128979
Вроде бы доступно подробно описано зачем оно нужно и с чем его едят.
 
 Top
OrmaJever Модератор
Отправлено: 07 Июля, 2013 - 14:01:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Hapson пишет:
Соль-то для чего нужна? Если ломанули БД,то без соли пароли не расшифруют(наверно...).

нет, суть в том что md5 можно подобрать только перебором по базе. Пароль 123456 подобрать очень легко т.к. он есть в любой базе по подбору, а вот 123456salt уже намного сложнее. Даже если взломщик узнает эту соль она ему никак не поможет.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vanicon
Отправлено: 07 Июля, 2013 - 14:04:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




OrmaJever пишет:
Даже если взломщик узнает эту соль она ему никак не поможет.

А это еще почему?
Если я знаю алгоритм и соль в чем проблема?


-----
Так было, так есть и так будет
 
 Top
Champion Супермодератор
Отправлено: 07 Июля, 2013 - 14:07:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Hapson, md5 имеет такое свойство, что во-первых из хеша невозможно вычислить исходное значение (только подобрать). Во-вторых, изменение входных данных ведет к непредсказуемому изменению на выходе. Соль - это как раз такое изменение данных на входе.
Соль, состящая из всякого бессмысленного набора символов с большой вероятностью делает хеш не словарным. И не важно - знаем мы соль или нет, нам это мало поможет.
 
 Top
EuGen Администратор
Отправлено: 07 Июля, 2013 - 14:07:04
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




OrmaJever
Это не совсем так. Дело в том, что md5 уязвим к атаке увеличением длины сообщения
Выжимка -
Цитата:
Если вы знаете значение md5('foo'), в силу способа вычисления MD5 можно очень легко посчитать значение md5('foobar'), даже не зная префикса 'foo'.
Так что если вы знаете значение md5('secretfoo:bar'), можно легко вычислить значение md5('secretfoo:bar&bar:baz'), даже не зная префикса 'secret'.

- иными словами, соль не спасёт от атаки по словарю, если есть база хешей (например, случай, когда взломали БД). Но вот сложные пароли не пострадают.
Почитайте ещё - много интересного.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
OrmaJever Модератор
Отправлено: 07 Июля, 2013 - 14:22:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




EuGen пишет:
Если вы знаете значение md5('foo'), в силу способа вычисления MD5 можно очень легко посчитать значение md5('foobar'), даже не зная префикса 'foo'.
Так что если вы знаете значение md5('secretfoo:bar'), можно легко вычислить значение md5('secretfoo:bar&bar:baz'), даже не зная префикса 'secret'.

Вопрос в том, как? Я не совсем это понимаю.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Hapson
Отправлено: 07 Июля, 2013 - 14:23:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


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


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
vanicon
Отправлено: 07 Июля, 2013 - 14:25:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Hapson
Зачем сохранять соль в бд?
Храните ее просто в php скрипте, разницы нет, что бд вскроют или же приложение...


-----
Так было, так есть и так будет
 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB