在浏览器中存储私钥的最佳方式?

oro*_*rom 6 javascript cryptography rsa web-applications token

我想在将一些用户数据发送到服务器之前对其进行加密。也就是说,数据将在浏览器客户端使用 JavaScript 进行加密。

我的问题是,有哪些选项可用于在客户端存储私钥(当用户稍后查看数据时,它将用于解密数据)?

HTML5 本地存储或仅从 JavaScript 读取包含密钥的本地文本文件似乎有点不对劲……是否可以使用个人证书来实现此目的?或者还有其他选择吗?

编辑:

稍微澄清一下,

所有需要加密的敏感数据都是在客户端计算机上生成的,并且永远不应该以纯文本形式保留。有问题的数据主要是用户将上传到服务器的文件,但是我们将来可能也希望加密某些表单字段。

一旦加密的数据发送到服务器,它就会以加密的形式存储,并且除了同一客户端计算机之外,永远不会在任何其他地方解密。例如,如果用户决定下载回文件,他将收到加密文件,该文件将在浏览器中使用 JavaScript 进行解密。

此外,对我们来说至关重要的是,公钥-私钥对是在同一台客户端计算机上生成的。此操作仅由用户手动或在某些自动化解决方案的帮助下完成一次。

最重要的是,私钥或纯文本数据都不应离开客户端的计算机。

Art*_* B. 7

根据您的描述,文件和表单字段中的数据只能在客户端上使用。在这种情况下根本不需要使用公钥加密。您应该使用 AES 等对称分组密码来加密该数据并将其发送到服务器。单个随机对称密钥将在客户端浏览器中生成并存储在localStorage可能受密码保护的情况下(例如,AES 的第二层)。AES 密钥是 128/192/256 位长的二进制字符串,它永远不应该离开客户端浏览器。

我认为localStorage这是唯一可行的选择,因为它是由所有现代浏览器实现的。

不过,可能还有其他解决方案,例如浏览器插件甚至自定义浏览器