Рейтинг:1

Значение соли в алгоритме scrypt

флаг gf
cjd

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

Я считаю, что при использовании KDF такого скрипта значение соли должно быть случайным и меняться каждый раз даже для каждого пользователя (один и тот же пользователь создает два разных ключа в разные моменты времени). В связи с этим безопасно ли хранить случайно сгенерированную соль в каком-то постоянном хранилище?

Я использую scrypt для генерации ключа для AES. Я не храню ключ, используемый для шифрования. Таким образом, чтобы расшифровать данные, я должен снова использовать scrypt для генерации ключа. Для этого я должен взять пароль пользователя (он вводится пользователем каждый раз) и соль. Учитывая, что ключ должен совпадать с ключом, используемым для шифрования, должен ли я хранить соль, чтобы повторно получить тот же ключ?

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

JAAAY avatar
флаг us
Да, все, кроме пароля, называются публичными параметрами и могут храниться в открытом доступе.
kelalaka avatar
флаг in
Сколько раз вы собираетесь использовать этот пароль для разных файлов? Какой режим шифрования вы хотите использовать? Есть много вопросов/подводных камней, когда вы хотите зашифровать файлы. Даже [обновление файла может быть опасным, если вы не измените ключ...] (https://crypto.stackexchange.com/a/84440/18298)
Рейтинг:3
флаг kr

Цель соли — предотвратить использование радужных таблиц. Проще говоря, используйте разные соли для хеширования разных паролей. Соль не должна быть тайной. Общепринятой практикой является хранение соли в легкодоступной форме.

Чтобы получить тот же ключ AES с помощью scrypt, вы должны использовать тот же ввод. Не только соль должны быть одинаковыми, но и другие параметры, такие как количество итераций должны быть одинаковыми и поэтому также должны храниться. И эти параметры, как и соль, не должны быть секретными.

kelalaka avatar
флаг in
OP говорит о ключе AES, а не о получении паролей ... Кроме того, IV также может быть получен вместе с ключом (в вашем сообщении IV не упоминается)
флаг kr
@kelalaka: ты уверен? ОП говорит: * «Я использую scrypt для генерации ключа для AES ... Для этого я должен взять пароль пользователя (он вводится пользователем каждый раз) и соль» *. Автор запрашивает у пользователя пароль, затем добавляет соль (я полагаю, что другие параметры являются некоторыми константами) и генерирует ключ, который затем используется для шифрования/дешифрования с помощью AES. Это стандартная процедура в KeePass и некоторых других инструментах.
флаг kr
@kelalaka: И посмотрите на заголовок: ОП спрашивает именно об обработке соли для скрипта.
kelalaka avatar
флаг in
Вы используете «Чтобы получить тот же пароль с помощью scrypt, вы должны использовать тот же ввод». Должно быть _Чтобы получить тот же ключ AES с помощью scrypt, вы должны использовать тот же ввод._ Для части IV, моя ошибка..
cjd avatar
флаг gf
cjd
Да, это отвечает на вопрос @mentallurg. Так безопасно ли хранить соль (как и капельницу) в общественных местах?
флаг kr
@kelalaka: Хорошо, вы правы, я имел в виду «чтобы получить тот же результат, вам нужен тот же ввод». Но использование слова «пароль» в данном контексте не очень хорошая идея. ОП говорит о ключе AES, поэтому мы должны придерживаться его. Я отредактировал свой ответ. Спасибо
флаг kr
@cjd: Да, хранить соль безопасно. Но, как указал *kelalaka* в другом комментарии, соли может быть недостаточно для хорошей безопасности. Например, если вы используете одну и ту же соль для нескольких паролей, это снизит эффективность соли. Также важно, что именно вы делаете с AES, например. Вы шифруете файл с определенным паролем только один раз или время от времени обновляете этот файл. Также важно, как именно вы используете AES, как спросил *kelalaka*. Таким образом, рассмотрите и другие аспекты помимо соли.

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

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