Зачем нужно поле password_salt ?

Автор Snow_Irbis, 11 января 2015, 19:01:09

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Snow_Irbis

Зачем нужно поле password_salt  если хеш пароля как я понимаю получается только путем хеширования данных из поля member_name и введенного пароля?

GeorG

В Википедии хоть почитайте, как это все работает.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Snow_Irbis

#2
Цитата: GeorG от 11 января 2015, 20:46:45В Википедии хоть почитайте, как это все работает.

Ну так подскажите пожалуйста ссылку где почитать про это поле? А то совсем не понятно зачем это поле и как оно участвует в формировании хеш суммы пароля , если хеш имени пользователя и пароля в открытом виде идентичен данным в поле passwd.

GeorG

ЦитироватьА то совсем не понятно зачем это поле и как оно участвует в формировании хеш суммы пароля
ЦитироватьВ криптографии соль (модификатор) — это строка случайных данных, которая подается на вход хеш-функции вместе с исходными данными. Используется для удлинения строки пароля, что осложняет восстановление группы исходных паролей за один проход полного перебора или с помощью предварительно построенных радужных таблиц. При этом соль не защищает от полного перебора каждого пароля в отдельности

Там дальше тоже читайте, много интересного...
https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BB%D1%8C_%28%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F%29

Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Snow_Irbis

#4
Что такое "соль" и зачем она нужна при хешировании данных я прекрасно знаю. Вероятнее Вы не поняли мой вопрос. Допустим я беру имя пользователя тест и скажем 123456789 как пароль и получаю хеш сумму строки по алгоритму SHA1 которая будет такой 4ff771af4f838573bce83fd029686763adacd6cf, вставляю ее в поле passwd, и спокойно залогиниваюсь с паролем 123456789, вопрос зачем тогда соль записанная в поле password_salt если она не добавляется в строку для получения хеш суммы пароля?

GeorG

Цитата: Snow_Irbis от 11 января 2015, 22:01:51я беру имя пользователя тест и скажем 123456789 как пароль и получаю хеш сумму строки по алгоритму SHA1 которая будет такой 4ff771af4f838573bce83fd029686763adacd6cf,
А как вы её получаете? Путем добавления соли к паролю, что и выделено красным цветом в цитате.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Snow_Irbis

#6
Цитата: GeorG от 11 января 2015, 22:11:13А как вы её получаете? Путем добавления соли к паролю, что и выделено красным цветом в цитате.

Нет, в том то и дело что хеш сумма валидной получается только в том случае если ее получать из строки которая содержит имя пользователя и пароль в открытом виде, если к примеру получить хеш сумму из имя пользователя+пароля в открытом виде+соли записанной в поле password_salt и эту хеш сумму вставить в поле passwd то авторизация пользователя не происходит, а сама соль в поле password_salt меняется каждый раз после разлогинивания пользователя (что так же наталкивает на мысль что в получении хеш суммы пароля она не участвует, так как если другая соль то и другой хеш, а если будет несовпадения хеша в поле passwd с хешем полученным во время авторизации пользователя то и авторизации не должно быть). И вопрос который остается открытым где участвует эта "соль"?

Для примера если у Вас есть желание и возможность помочь мне разобраться в этом вопросе можете где нибудь на локалке добавить пользователя в форум и спокойно сможете зайти под именем и тест паролем 123456789. А если скажем в поле passwd записать хеш сумму полученную из строки имя пользователя+пароль в открытом виде+данные из поля password_salt (10ac32ad0b1e41aafb9fbf321ac62862a2f76e38) то авторизация пользователя не происходит, и логичный вопрос где и зачем используются данные из поля password_salt?

INSERT INTO `smf_members` (`id_member`, `member_name`, `date_registered`, `posts`, `id_group`, `lngfile`, `last_login`, `real_name`, `instant_messages`, `unread_messages`, `new_pm`, `buddy_list`, `pm_ignore_list`, `pm_prefs`, `mod_prefs`, `message_labels`, `passwd`, `openid_uri`, `email_address`, `personal_text`, `gender`, `birthdate`, `website_title`, `website_url`, `location`, `icq`, `aim`, `yim`, `msn`, `hide_email`, `show_online`, `time_format`, `signature`, `time_offset`, `avatar`, `pm_email_notify`, `karma_bad`, `karma_good`, `usertitle`, `notify_announcements`, `notify_regularity`, `notify_send_body`, `notify_types`, `member_ip`, `member_ip2`, `secret_question`, `secret_answer`, `id_theme`, `is_activated`, `validation_code`, `id_msg_last_visit`, `additional_groups`, `smiley_set`, `id_post_group`, `total_time_logged_in`, `password_salt`, `ignore_boards`, `warning`, `passwd_flood`, `pm_receive_from`) VALUES
(10000, 'тест', 1421004705, 0, 0, '', 1421004705, 'тест, 0, 0, 0, '', '', 0, '', '', '4ff771af4f838573bce83fd029686763adacd6cf', '', 'gmail[at]gmail.com', '', 0, '', '', '', '', '', '', '', '', 1, 1, '', '', 0, '', 1, 0, 0, '', 1, 1, 0, 2, '127.0.0.1', '127.0.0.1', '', '', 0, 1, '', 3, '', '', 4, 0, 'ocyt', '', 0, '', 2);

GeorG

Это называется "усилением ключа", т.е., увлечение размера ключа путем добавки рандомной соли...
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Snow_Irbis

Цитата: GeorG от 12 января 2015, 00:19:09
Это называется "усилением ключа", т.е., увлечение размера ключа путем добавки рандомной соли...

Ну если бы использовались данные из поля password_salt для вычисления хеша то логично предположить что бы менялся и хеш в поле passwd, более того если бы использовались данные из поля password_salt то присваивание значения хеш суммы логина пользователя и пароля в открытом виде для поля passwd не приводило бы к авторизации пользователя , так как хеш сумма логина пользователя + пароля в открытом виде + соли совсем другая. Используя Гугл нашел вот такую тему где кто то еще в 2012 подымал этот вопрос, что соль вроде как не используется для получения хеша пароля (как в прочем что и я наблюдаю у себя и описываю тут). Поэтому все же мне до сих пор не ясно зачем используются данные password_salt.

Жека

Поиск в исходных файлах форума по строке password_salt выдает вот что:

LogInOut.php
$sha_passwd = sha1(strtolower($user_settings['member_name']) . un_htmlspecialchars($_POST['passwrd']));

setLoginCookie($timeout - time(), $user_info['id'], sha1($user_settings['passwd'] . $user_settings['password_salt']));

setLoginCookie(60 * $modSettings['cookieTime'], $user_settings['id_member'], sha1($user_settings['passwd'] . $user_settings['password_salt']));


ManageServer.php
setLoginCookie(60 * $modSettings['cookieTime'], $user_settings['id_member'], sha1($user_settings['passwd'] . $user_settings['password_salt']));


Profile-Modify.php
setLoginCookie(60 * $modSettings['cookieTime'], $memID, sha1(sha1(strtolower($cur_profile['member_name']) . un_htmlspecialchars($_POST['passwrd2'])) . $cur_profile['password_salt']));


Register.php
setLoginCookie(60 * $modSettings['cookieTime'], $memberID, sha1(sha1(strtolower($regOptions['username']) . $regOptions['password']) . $regOptions['register_vars']['password_salt']));


Subs-OpenID.php
$user_settings['passwd'] = sha1(strtolower($user_settings['member_name']) . $secret);

$user_settings['password_salt'] = substr(md5(mt_rand()), 0, 4);

Т.е. хеш состоит из склеенной пары логин + пароль, а соль, я так понял, используется, чтобы нельзя было по украденной куке сбрутить пароль.

Snow_Irbis