Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 由于密钥管理,WebCrypto不适合构建消费者应用程序吗?_Javascript_Security_Cryptography_Webcrypto Api - Fatal编程技术网

Javascript 由于密钥管理,WebCrypto不适合构建消费者应用程序吗?

Javascript 由于密钥管理,WebCrypto不适合构建消费者应用程序吗?,javascript,security,cryptography,webcrypto-api,Javascript,Security,Cryptography,Webcrypto Api,我开始对WebCrypto的不可提取密钥的安全模型感到疑惑,最终对WebCrypto本身的基本安全模型感到更加困惑。我不是在争论理论方面,而是想知道当我们试图在现实世界中构建实用应用程序时,WebCrypto是否是一个可行的选择 首先,我知道人们建议使用不可提取的密钥,因为不可提取的密钥是安全的,因为它们无法导出。但我认为很多人如果不想冒失去一切的风险,他们会希望在某个时候出口他们的钥匙 例如,如果您使用WebCrypto不可提取密钥存储所有加密的应用程序数据,并且无法导出密钥,这意味着您在in

我开始对WebCrypto的不可提取密钥的安全模型感到疑惑,最终对WebCrypto本身的基本安全模型感到更加困惑。我不是在争论理论方面,而是想知道当我们试图在现实世界中构建实用应用程序时,WebCrypto是否是一个可行的选择

首先,我知道人们建议使用不可提取的密钥,因为不可提取的密钥是安全的,因为它们无法导出。但我认为很多人如果不想冒失去一切的风险,他们会希望在某个时候出口他们的钥匙

例如,如果您使用WebCrypto不可提取密钥存储所有加密的应用程序数据,并且无法导出密钥,这意味着您在indexedDB因某种原因被擦除时,或者更糟的是,如果您的整个计算机被擦除或磁盘损坏,您将无法访问所有加密的数据(这不是一个不可能的情况。例如,当你把有问题的macbook送到苹果公司维修时,他们说我应该备份所有东西,以防出现问题)

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

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

  • 不可导出密钥的实际使用情况是什么?为什么人们要冒着密钥丢失的风险走那么远
  • 难道大多数人不希望能够重用和备份他们的密钥,特别是因为它们用于身份和加密目的吗
  • 如果#2为真,并且没有办法在浏览器中安全地存储可提取密钥,那么人们如何使用WebCrypto构建安全的应用程序
  • 最后,在浏览器上存储密钥是否从根本上不安全?即使密钥无法导出,网站也会在用户不知道的情况下代表用户签署消息(或解密用户的消息并将其发送到服务器),这是一个巨大的安全问题