Рейтинг:0

Как защитить неизвлекаемый секретный ключ в indexedDB?

флаг cn

Я зашифровал данные в AES-GCM с крипто API. вектор инициализации затем добавляется к данным, образуя уникальную зашифрованную строку, хранящуюся в локальном хранилище. Наконец, секретный ключ хранится в IndexedDB.

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

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

Итак, как я могу улучшить этот рабочий процесс? Неужели это так небезопасно? Можно ли зашифровать и расшифровать секретный ключ благодаря уникальному паролю, предоставленному пользователем? Пароль будет в .env файл и, таким образом, никогда не подвергается атаке. Как бы вы это сделали?

Вот как генерируется секретный ключ:

crypto.subtle.generateKey(
      {имя: "AES-GCM", длина: 256},
      ЛОЖЬ,
      ["зашифровать", "расшифровать"]
    );

Спасибо за вашу помощь!

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

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