архитектура с нулевым разглашением

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

Во-первых, я хотел бы использовать argon2 для получения ключа вместо pbkdf2, так как кажется, что argon2 более безопасен, поскольку он сопротивляется параллельному грубому перебору.

Во-вторых, какова цель HKDF для увеличения мастер-ключа (256 бит) до 512 бит, почему нельзя использовать мастер-ключ для прямого шифрования сгенерированного симметричного ключа?

В-третьих, могу ли я использовать мастер-ключ для прямого шифрования пользовательских данных вместо того, чтобы создавать новый симметричный ключ и использовать его для шифрования пользовательских данных?

В-четвертых, почему хэш мастер-пароля создается всего за 1 итерацию, а не за 100000?

2 ответа

Исходя из моего понимания, вот мои ответы:

  1. Я не понимаю, почему это может вызвать проблему.
  2. Не уверен, почему они именно это делают. Возможно, причина может заключаться в том, чтобы еще больше увеличить энтропию? Может быть, они хотели избежать шифрования тем же ключом, который хешируется в базе данных, чтобы избежать утечки информации? Я тоже не уверен. Я также работаю над проектом с нулевым разглашением (https://github.com/krptn/krypton), где мы этого не делаем. Это правда, однако, что мы используем совершенно другую модель, поэтому она может быть неприменима.
  3. Вероятно, они думали, что, поскольку мастер-пароль (используемый как соль) является приватным, злоумышленнику придется перебирать его, что в любом случае займет достаточно времени. Чтобы злоумышленник мог взломать хэш, ему нужно проверить каждую возможную соль. Для длинного и сложного пароля этого может быть достаточно. Однако на сервере соль хранится рядом с хэшем, поэтому злоумышленник будет иметь доступ к соли, если у него есть хэш. В этом случае ему не нужно будет перебирать соль, поэтому необходимы более высокие итерации. Кроме того, это может быть меньший вектор атаки, чем хранилище на сервере, потому что 1-итерационный хэш используется только при передаче в течение небольшого промежутка времени.

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

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

  1. В настоящее время предпочтение отдается Argon2, и сами BitWarden теперь поддерживают его в качестве альтернативы получению ключа.
  2. Вот о чем я пришел спросить и до сих пор понятия не имею.
  3. Вы могли бы. Я считаю, что ценность отдельного ключа шифрования данных от главного симметричного ключа заключается в том, что вы можете а) изменить свой пароль без повторного шифрования всего в хранилище или б) иметь возможность менять ключи шифрования без изменения главного пароля. .
  4. Я считаю, что это связано с тем, что защита от взлома пароля уже реализована в исходной функции создания главного ключа. Нет необходимости усложнять задачу, потому что будет проще попытаться подобрать пароль методом перебора за 100 тысяч итераций, чем 256-битный случайный ключ за 1 итерацию. Однако, поскольку им нужен уникальный хэш для отправки в базу данных, и они не хотят, чтобы это был сам необработанный главный ключ, я думаю, они просто быстро хэшируют, используя тот же алгоритм.
Другие вопросы по тегам