Пароль + Соль + Секретный соус?Полезно или просто немного безвестности? - PullRequest
1 голос
/ 26 января 2011

Стандартная защита паролем включает генерацию случайной соли для каждого пользователя, каким-то образом комбинируя эту соль с их паролем и хэшируя их вместе, а затем сохраняя в базе данных и хэш, и соль.просто hash($salt . $password), вы также добавили другую фразу-пароль, сохраненную только в исходном коде или в файле конфигурации сервера:

$secret_sauce = 'tehB%l1yG*@t$G2uFf'; // perhaps imported from config file
$hash = hash($salt . $secret_sauce . $password);

Добавляет ли это какие-либо дополнительные преимущества или это просто тонкий слойбезопасность по неизвестности применяется к вершине?

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Для файлов паролей было бы добавлено немного неясности.

Однако эта схема называется «хеш-ключом» и может использоваться для симметричных (shared-secret) подписей: если у вас естьтакой хэш и входные данные, то вы можете быть уверены, что подпись была создана кем-то, кто также знает секретный дополнительный бит.Конечно, в отличие от подписи с открытым ключом, вы не можете проверить это, не зная секретного ключа.

0 голосов
/ 26 января 2011

У меня проблемы с отслеживанием статьи, которую я прочитал несколько лет назад, в которой говорилось, что было легко генерировать тысячи результатов хеширования, частично вычисляя части хеша.(Например, начав вычислять хеш для «foo», вы могли бы легче генерировать хеш для «foo1», «foo2», «foo3», «foo4» и т. Д., Гораздо дешевле, чем генерировать каждый из них по отдельности.)

Я думаю, что это может привести к засолке как до, так и после пароля.

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

...