如何保护 indexedDB 中不可提取的密钥?

问题描述

我使用加密 API 在 aes-gcm 中加密了数据。然后将初始化向量添加到数据中,形成存储在本地存储中的唯一加密字符串。最后,秘钥存储在IndexedDB中。

由于密钥是不可提取的,我认为它对于大多数用例来说已经足够安全了。据我了解,攻击者必须抢夺本地存储和索引数据库,在数据中找到初始化向量,将其转换为缓冲区数组,然后在将数据发送回他的服务器之前直接在浏览器中执行解密.事实上,密钥的不可提取性质似乎意味着他无法将原始密钥发送到他的服务器,从而无法完成解密。

但有人告诉我我错了,我的策略实际上比让所有数据在本地存储中直接读取更安全。

那么,我该如何改进这个工作流程?真的那么没有安全感吗?由于用户提供的唯一密码,是否可以加密和解密密钥?密码将在 .env 文件中,因此永远不会暴露给攻击者。你会怎么做?

到目前为止,密钥是如何生成的:

crypto.subtle.generateKey(
      { name: "aes-gcm",length: 256 },false,["encrypt","decrypt"]
    );

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)