我正在开发一个Web应用程序,它将在客户端加密数据,然后将数据发送到服务器。服务器将存储加密数据,但不能够解密数据。重点是保持客户端数据的安全,这样服务器主机甚至都无法访问数据。这可以通过服务器仅接收加密数据并且从不接收密钥来保证。
我计划在客户端使用Javascript进行加密和解密。此外,连接将使用SSL进行保护。
我在这里阅读了这篇文章:http://www.matasano.com/articles/javascript-cryptography/表明Javascript不应该用于加密,但它不能解决我的用例。
这是一个安全的解决方案吗?有没有办法让我更安全?
答案 0 :(得分:11)
查看Host-Proof Hosting模式(自2005年7月起)。
在闪烁草图中
锁定内部数据云,键入浏览器。
<强>解决方案强>
以加密形式托管敏感数据,以便客户端只能访问 并通过提供永远不会的密码来操纵它 传输到服务器。服务器仅限于持久和 检索浏览器发送的任何加密数据,从不 实际上以普通形式访问敏感数据。它。所有 加密和解密发生在浏览器本身内。
关键点是你仍然需要使用TLS / SSL并完全信任主机,同时提供HTML作为JavaScript资源。
此外,Web-browser encryption of personal health information的解决方案类似于您所寻找的解决方案。
答案 1 :(得分:-1)
虽然此设置没有任何内在错误,但由于客户有责任维护自己机器的安全性,因此我认为您可能会遇到可能导致更多问题的情况。
用户希望无论如何都能够访问他们的数据。如果他们在另一个关闭了JS的系统上,那么他们将无法访问他们的数据。
另外,如果用户忘记密码/密钥会怎样?由于您没有存储它,因此您无法恢复数据并且它实际上已丢失。你不会做任何事情,即使这不是你的错,用户也不会那么看。
只是一些值得思考的东西。