Рейтинг:0

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

флаг in

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

Должен ли я использовать перец (секретная соль)? Если да, то:

  • как сделать его уникальным для всех пользователей или группы пользователей (не делать его глобальным и фиксированным)?
  • как безопасно хранить его без жесткого кодирования?

Или я должен защитить соль? Если да, то что лучше:

  • надежно хранить часть соли?
  • зашифровать саму соль? (по этому: разве ключ, используемый для шифрования, не является чем-то вроде перца?)
  • получить соль из безопасного секрета? (также: разве использованный секрет не является каким-то перцем?)
SAI Peregrinus avatar
флаг si
Радужные столы мешают даже общедоступные соли.
Mohamed Waleed avatar
флаг in
Но когда злоумышленник нацелен на конкретного пользователя, он может создать радужную таблицу, используя соль, которую он взломал из базы данных.
SAI Peregrinus avatar
флаг si
Я думаю, вы не понимаете, что такое радужные таблицы. https://rsheasby.medium.com/rainbow-tables-probably-arent-what-you-think-30f8a61ba6a5 — хорошее объяснение.
Рейтинг:2
флаг si

Подбирайте перец так же, как вы выбираете криптографические ключи: используйте CSPRNG вашей ОС, чтобы сгенерировать перец размером 16–32 байта (128–256 бит).

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

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

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

Что бы вы ни делали, убедитесь, что у вас есть способ сделать резервную копию и восстановить перцы. В конце концов, он не будет резервироваться резервными копиями вашей базы данных! Если он утерян, ваши пользователи не смогут войти в систему. Помните, что безопасность — это сочетание конфиденциальности, целостности и доступности, поэтому не позволяйте перцу стать единой точкой отказа.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.