Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для ChildOfFlowers
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090

Соль для PASSWORD_BCRYPT

06.03.2020, 12:20. Показов 1912. Ответов 7

Студворк — интернет-сервис помощи студентам
Помогите разобраться. Читаю мануал по хешированию паролей. Там написано, что если не указать опцию salt,
то password_hash() будет генерировать случайную соль для каждого хешируемого пароля. Это предпочтительный режим работы
Что-то я не пойму, зачем отдельная соль для каждого хешируемого пароля, и как это должно улучшить безопасность. Если для каждого пароля будет генерироваться отдельная соль, значит все соли будут храниться в одной БД с паролями, и вытащить нужную соль злоумышленнику не составит труда. В то же время, если спрятать одну общую соль для всех паролей в php код, мне кажется, её будет гораздо сложнее найти. Или я что-то не так понял?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2020, 12:20
Ответы с готовыми решениями:

Соль
Доброго времени суток. Я создал соль и генерирую её, так же использую способ хеширования pbkdf2, вот код: $salt =...

соль в хеш
Попался чужой код $myname и $mypassword через post приходят из формы. date_default_timezone_set('US/Eastern'); $currtime =...

Авторизация. В чем соль?
Собственно недопонимаю такой вопрос. Есть код регистрации, в нём пароль хешируется <? if((strlen($pas) >= 8) &&...

7
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
06.03.2020, 12:48
Соль нужна, как дополнительный "фактор случайности". Когда у каждого хеша имеется своя уникальная соль, алгоритм восстановления пароля усложняется. Кроме того, это позволяет скрыть факт совпадения нескольких паролей. Если бы совпадали и пароли, и соли для них, то и хеши бы совпадали!
0
 Аватар для ChildOfFlowers
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
06.03.2020, 13:26  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
Соль нужна, как дополнительный "фактор случайности"
Но он же должен быть не очевидным. Какой от неё толк, если у меня, допустим, в базе будет таблица salts, из которой по тому же имени пользователя можно вытащить нужную соль? Это же как положить ключ рядом с закрытым замком в надежде, что вор не догадается его вставить и провернуть.
Цитата Сообщение от estic Посмотреть сообщение
это позволяет скрыть факт совпадения нескольких паролей
С одной стороны да. С другой стороны, это сыграет роль только если пользователь с совпадающим паролем скомпрометирует свой пароль. Но тогда, зная пароль, и зная соль, наверное, можно будет вычислить и алгоритм шифрования. В этом случае, опять же, желательно, чтобы соль находилась отдельно, чтобы её не смогли найти.
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
06.03.2020, 16:17
Вы не с той стороны смотрите. Здесь не так важно, хранится соль отдельно или нет (код может быть точно так же скомпрометирован, как и база данных). А важно именно то, что в одном случае она постоянная, а в другом (псевдо)случайная, часто уникальная для каждого пароля/хеша. Если следовать вашей аналогии, то конкретный замок как открыть, так и взломать не так сложно, а вот множество замков сложнее (дольше) открывать разными ключами, чем одним универсальным. К тому же подобрать универсальную отмычку к замкам, открываемым совершенно разными ключами, весьма проблематично. А в случае с универсальным ключом и подбирать ничего не надо. И не так важно, где он лежит, рядом с замком или тут же "под ковриком".
0
 Аватар для ChildOfFlowers
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
07.03.2020, 12:27  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
код может быть точно так же скомпрометирован, как и база данных
Да. Но, согласитесь, вероятность такого события меньше. К тому же, влезть в код - еще не значит найти в нём то, что нужно. Код умышленно можно сделать плохо читаемым. Если наличие соли не будет очевидным, злоумышленник может подумать, что она не использовалась вообще. Тем более, если ему попадутся одинаковые зашифрованные пароли.
Цитата Сообщение от estic Посмотреть сообщение
множество замков сложнее (дольше) открывать разными ключами
Это же будет делать скрипт. А для него действие "возьми соль из соседней ячейки" занимает тысячные доли секунд, если не меньше.
Возможно я не так понимаю механизм, о котором вы говорите. Но если таблица пользователей по-вашему должна иметь вид "login | password | salt", то это для меня очень странно.
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
07.03.2020, 13:11
Лучший ответ Сообщение было отмечено ChildOfFlowers как решение

Решение

Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Да. Но, согласитесь, вероятность такого события меньше.
Не знаю. Часто база данных "сливается" вместе с кодом (недобросовестными работниками и т.п.).

Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Это же будет делать скрипт. А для него действие "возьми соль из соседней ячейки" занимает тысячные доли секунд, если не меньше.
Тут дело не только в том, чтобы взять, но и в том, чтобы открыть. Замки с уникальными ключами могут по-разному открываться: количество оборотов/щелчков, направление поворота.

Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Возможно я не так понимаю механизм, о котором вы говорите. Но если таблица пользователей по-вашему должна иметь вид "login | password | salt", то это для меня очень странно.
Про password не понял. Соль хранится вместе с хешем. Причем не обязательно явно. Есть разные методы "подмешивания" соли в хеш, причем когда соль "уникальна", ее еще нужно суметь отделить от хеша (вот вам и привязка к коду выбора соли)!

Почитайте именно про соль и про преимущества использования "уникальной" соли, раз мои слова и фраза из документации по PHP вас не убеждают.
1
 Аватар для ChildOfFlowers
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
08.03.2020, 14:19  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
Про password не понял
Ну я имел в виду, что в поле password хранятся хешы паролей.
Цитата Сообщение от estic Посмотреть сообщение
Соль хранится вместе с хешем
А вот это меняет дело. Я же говорил, что чего-то недопонимаю. Я думал, что соль хранится отдельно от хеша в той же бд.
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
08.03.2020, 15:36
Цитата Сообщение от ChildOfFlowers Посмотреть сообщение
Я думал, что соль хранится отдельно от хеша в той же бд.
Она хранится вместе с хешем, но обычно легко отделима от него (это не сильно отличается от того, как если бы она хранилась отдельно). Т.е. в случае использования (только) стандартных функций вы не достигнете написанного мной:
Есть разные методы "подмешивания" соли в хеш, причем когда соль "уникальна", ее еще нужно суметь отделить от хеша (вот вам и привязка к коду выбора соли)!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.03.2020, 15:36
Помогаю со студенческими работами здесь

Узнать соль, зная hash и password
Имеется hash на sha1. Вероятно, без повторного хэширования, просто с солью. Можно как-то вытащить соль, зная хэш и хэшируемый пароль ? ...

Безопасность сайта - подбор cookie и соль
1.Здравствйте. Кто бы мог объяснить, пожалуйста, как нужно применять соль - на примере, мануалы php.net я не смог понять. Вот есть crypt...

Password_hash($password, PASSWORD_DEFAULT) соль больше не нужна?
Собственно вопрос, данная функция настолько надежна что мы ее используем для генерации хэша, а для проверки password_verify и больше не...

Соль в MD5
Хочу хранить пароли вида: пароль + соль такой алгоритм md5($salt) $passwordMD5 = md5(md5($password) . $salt) Стоит ли соль...

Регистрация не проходит на локалке! В чем тут соль?
Есть скрипты авторизации и регистрации. Логины и пароли записываются в файл register.txt. БД не подключаю. Собстно скрипты: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru