Запутался с шифровкой пароля

AmdY

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

grigori
вариант не гарантирует уникальность соли, обычно регятся везде под одним логином, если он доступен, я вот с ником прогадал (4-ре символа не везде можно).
 

fixxxer

К.О.
Партнер клуба
Почему статическую? Генерировать рандомную при установке или первом использовании. Польза в том, что делает угнанный дамп базы бесполезным в плане подбора паролей. А если нужна единая авторизация между приложениями, никто не мешает использовать $secret = '' (что сводится к /etc/shadow которому уже сто лет)
 

melo

однажды
proWoke
Код:
$password = $password."abr13";
не пиши так, вынеси в отдельную переменную.а вобще по хорошему соль генерировать на каждого нового пользователя, потому как узнав один раз твою соль, последующее её применение становица бесполезным.
 

melo

однажды
zerkms
зная соль, это ничем не помогает в расшифровке?
 

zerkms

TDD infected
Команда форума
melo: знание соли упрощает брутфорс. Но при этом любая произвольная (известная или нет, неважно) соль - сводит на нет атаки по словарю.
Если предположить, что и солёный хэш и соль лежат в базе, то будучи украденными - в руках злоумышленника так и так, будут все пароли и все соли.

Я не могу нарочно придумать ситуацию, когда вдруг ты смог узнать только 1 соль и все солёные хэши. Или ты узнал всё, или ты не узнал ничего.
 

zerkms

TDD infected
Команда форума
"потому как узнав один раз твою соль, последующее её применение становица бесполезным."

предложение: ты называешь соль, я солю ей пароль - ты доказываешь бесполезность соли, м? :)
 

SiZE

Новичок
РНР с версии 4.3 поддерживает sha1. У него выше стойкость к появлению коллизии в сравнении с md5. Пользуюсь им. Для каждого пароля генерирую уникальную соль.
 

zerkms

TDD infected
Команда форума
Более того - я даже облегчу тебе задачу, выбрав словарный пароль, который тупо находится гуглом в словарях md5. М? :)
 

melo

однажды
я этого делать не умею.
при знании соли время подбора пароля с помощью радужных таблиц не уменьшаеца?
 

zerkms

TDD infected
Команда форума
melo: наличие соли в принципе исключает возможность использования радужных таблиц. Как только ты добавил в хэш соль - можно радужные таблицы выкидывать на помойку.
 

melo

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

dr-sm

Новичок
melo: знание соли упрощает брутфорс. Но при этом любая произвольная (известная или нет, неважно) соль - сводит на нет атаки по словарю.
Если предположить, что и солёный хэш и соль лежат в базе, то будучи украденными - в руках злоумышленника так и так, будут все пароли и все соли.

Я не могу нарочно придумать ситуацию, когда вдруг ты смог узнать только 1 соль и все солёные хэши. Или ты узнал всё, или ты не узнал ничего.
честно говоря, я не знаю, что может быть проще брутфорса ).
соль, по определению, является известной злоумышленнику величиной.

также не следует путать атаки с помощью радужных таблиц с классической атакой по словарю.
использование константной "соли", a la $password = $password."abr13", если предположить что она известна,
криптостойкости никакой не добавляет, тк:
1. select count(id), hash from auth group by 2 order by 1 desc
исходя из http://ru.wikipedia.org/wiki/Парадокс_дней_рождения

и далее брутфорсим | пускаем через словарь по порядку.

2. из словаря A можно построить словарь В = A + "abr13" за линейное время.

с учетом нанотехнологий типа КУДА, напрашиваются два вывода:

1. соль должна быть независимой случайной величиной (только тогда не прокатит атака по словарю, точнее будет менее эффективна).
2а. желательно также подмешивать "секретную" константу ("соль") в хеш хранящийся в бд, для минимизации ущерба при тупом угоне базы.
2б. желательно также подмешивать "секретную" константу ("соль") в хеш который в куке "ремембер ми", для предотвращения "автологина" c любым юзер айди, при тупом угоне базы.

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

 

fixxxer

К.О.
Партнер клуба
РНР с версии 4.3 поддерживает sha1. У него выше стойкость к появлению коллизии в сравнении с md5. Пользуюсь им. Для каждого пароля генерирую уникальную соль.
Не надо говорить глупости, про коллизии это "слышал звон". То, что китайцы какие-то там нашли, как сгенерировать два текста с одинаковым md5(), не значит, что можно найти пару для произвольного текста, и никак не упрощает подбор; более того, для коротких текстов (а пароли не бывают длиной в несколько килобайт) коллизий никто не находил. Кстати, для sha1 такие пары тоже существуют для текстов примерно той же длины; тогда уж - sha256. :)
 

tz-lom

Продвинутый новичок
fixxxer
у md5 есть коллизия на XOR ,а именно

md5(DATA) = XOR(md5(XOR(DATA,RAND), RAND)

где естественно RAND одинаковое но не важно какое число
 

fixxxer

К.О.
Партнер клуба
И? Вот есть у тебя содержимое /etc/shadow, где в качестве crypt алгоритма используется md5, чем это тебе поможет?
 
Сверху