WebCrypto是否由于密钥管理而不适用于构建消费者应用程序?

问题描述

我开始怀疑WebCrypto不可提取密钥的安全模型,最终对WebCrypto本身的基本安全模型更加困惑。我不是在理论上争论,而是在尝试在现实世界中构建实用应用程序时,WebCrypto是否甚至是可行的选择。

首先,我了解人们建议使用不可提取的密钥,因为不可提取的密钥是安全的,因为它们无法导出。但是我认为,如果不想冒险丢失所有内容,很多人都希望在某个时候导出密钥。

例如,如果您存储了使用WebCrypto不可提取密钥加密的所有应用程序数据,并且无法导出密钥,这意味着当由于某种原因而清除indexedDB时,您将失去对所有加密数据的访问权限,或者更糟糕的是,如果您的整个计算机都被擦掉或磁盘损坏了(这不是不可能的情况。例如,当您将有问题的Macbook交给Apple进行维修时,他们说我应该备份所有内容,以防万一出问题了)

这只是加密/解密方案,但是我确定签名/验证消息存在相同类型的问题。如果我想通过签名消息来使用加密作为身份,为什么还要使用一个即使我也无法访问和导出自己的密钥,所以我只能在该特定设备上的特定浏览器上使用该密钥?

所以我想这是一个由四个部分组成的问题(请注意,这些问题都是关于是否可以通过在浏览器中存储内容来使用WebCrypto构建具有良好UX的实用且安全的应用程序,而不是WebCrypto本身是否安全) :

  1. 不可导出密钥的实际用例是什么?人们为什么要走这么远而又要承担重大损失?
  2. 不是大多数人都希望能够重用和备份他们的密钥,尤其是因为它们用于身份和加密目的吗?
  3. 如果#2是正确的,并且无法在浏览器中安全地存储可提取密钥,人们如何使用WebCrypto构建安全的应用程序?
  4. 最后,在浏览器中存储密钥是否根本不安全,无论是否可提取?即使密钥无法导出,网站也会在用户不知情的情况下代表用户签署一条消息(或解密发给该用户的消息并将其发送到他们的服务器),这是一个巨大的安全问题。

解决方法

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

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

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