【发布时间】:2015-04-06 12:23:21
【问题描述】:
我想在将一些用户数据发送到服务器之前对其进行加密。也就是说,数据将在浏览器的客户端使用 JavaScript 进行加密。
我的问题是,有哪些选项可用于在客户端存储私钥(它将在用户稍后查看数据时用于解密数据)?
HTML5 本地存储或仅从 JavaScript 读取包含密钥的本地文本文件似乎有点不对劲...... 是否可以为此目的使用个人证书?还是有其他选择?
编辑:
稍微澄清一下,
所有需要加密的敏感数据都是在客户端计算机上生成的,绝不应该以纯文本形式保留。有问题的数据主要是用户将上传到服务器的文件,但是我们将来可能还想加密一些表单字段。
一旦加密数据被发送到服务器,它就会以加密形式存储,并且永远不会在相同客户端计算机之外的任何其他地方解密。例如,如果用户决定下载他的文件,他将收到加密文件,这些文件将在浏览器中使用 JavaScript 解密。
对于我们来说,在同一台客户端计算机上生成公私密钥对也很重要。这只会由用户手动完成一次,或者在一些自动化解决方案的帮助下完成。
底线是,私钥和纯文本数据都不应该离开客户的机器。
【问题讨论】:
-
您不需要私钥进行加密,只需公钥即可。
-
@AlexanderH 实际上,数据将使用公钥(存储在服务器上)加密,但是稍后需要解密,例如,当用户想要查看它时。因此需要将私钥客户端存储在浏览器中。
-
那你需要第二对钥匙,我会说。其他一切就像不使用钥匙
-
为什么你认为
localStorage不是个好主意? -
@AlexanderH 为什么是两对钥匙?密钥对将在客户端机器上生成,私钥永远不会离开它。只有公众被发送到服务器,主要是因为一些数据也需要在服务器端加密。相互身份验证将与所有这些分开处理。
标签: javascript web-applications cryptography rsa token