Рейтинг:1

Могу ли я использовать SHA256 из кодовой фразы BIP39 для учетных данных?

флаг cn

Я работаю над зашифрованным приложением E2E. Я использую OpenPGP.js и храню открытые и закрытые ключи на сервере. Закрытый ключ зашифрован кодовой фразой BIP39, которая хранится в LocalStorage браузера, поэтому никогда не отправляется на сервер. Но мне также нужны некоторые учетные данные для входа пользователей.

Моя идея состоит в том, чтобы сделать SHA256 из кодовой фразы BIP39 и разделить ее на две строки. Первый можно использовать для «имени пользователя», а второй — для пароля сервера.

Безопасен ли этот подход? Насколько я знаю, так и должно быть. Парольная фраза BIP39 имеет достаточно большую энтропию.Я не могу использовать соль, потому что эта кодовая фраза BIP39 должна быть единственным секретом для хранения.

Правомерен ли этот подход? Спасибо.

kelalaka avatar
флаг in
Связанный [Множественный вывод ключа AES из главного ключа] (https://crypto.stackexchange.com/q/76588/18298)
Рейтинг:1
флаг ng

Могу ли я использовать SHA256 из кодовой фразы BIP39 для учетных данных?

Моя идея состоит в том, чтобы сделать SHA256 из кодовой фразы BIP39 и разделить ее на две строки.

Это кажется двумя серьезными ошибками с точки зрения дизайна безопасности.

  • Это использование быстрой хеш-функции, такой как SHA-256, для обработки чего-то, что нужно запомнить. Скорее, нужно использовать медленный хэш пароля для растяжка ключей. Они известны как функция получения ключа на основе пароля. Если это вообще возможно, оно должно быть плохо запоминающий. Рекомендуемые варианты включают Argon2 или scrypt. Пока БИП-39выбор PBKDF2-HMAC-SHA512 с 512 раундами неверен (поскольку HMAC не требователен к памяти и подходит для значительного ускорения с помощью ASIC, FPGA или GPU), SHA-256 примерно в 1000 раз быстрее, поэтому его легче атаковать для взломщик паролей.
  • Это разделение данных/энтропии секрета на два независимых более коротких секрета, которые можно атаковать по отдельности. Аналогия: замена 6-значного кода для входа в здание на два 3-значных кода, по одному для каждой из двух последовательных дверей. Когда что-то секретное и памятное нужно использовать многократно, все секрет должен войти в функцию получения ключа на основе пароля вместе с некоторой константой, связанной с предполагаемым использованием, и, если это вообще возможно соль.

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

флаг cn
Как я уже писал, я собираюсь хэшировать мнемонику BIP39 с огромной энтропией. Там нет искусственного пароля, поэтому я не могу представить, как взломщик паролей может взломать его. Никакая грубая сила не может угадать BIP 39.
флаг cn
Что касается независимых более коротких секретов, они используются только для входа в систему, скорость которого ограничена с экспоненциальным отставанием, поэтому я полагаю, что их достаточно сложно угадать. В любом случае, спасибо за ответ.
Рейтинг:1
флаг vn

Чтобы ответить на ваш реальный вопрос, да, ваша идея звучит надежно, но это не так, как обычно.

Если у вас есть один «главный» секрет и вам нужно разделить его на два или более секретов, чтобы знание любого из них не давало информации о мастере, то вам нужен HKDF, указанный в RFC 5869, который использует HMAC для создания любого количества независимых секретов из одного секрета.

Для этой цели также существует множество альтернатив HKDF. Если вы не женаты на SHA-256, вы можете использовать BLAKE2, который поддерживает «персонализированные хэши», которые позволяют вам смешивать значение персонализации. Уникальные значения персонализации приводят к уникальным хэшам даже для одного и того же ввода.

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

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