2013-03-14 102 views
3

我正在开发一个Web应用程序,它将在客户端加密数据,然后将数据发送到服务器。服务器将存储加密的数据,但而不是有能力解密数据。关键是保持客户端的数据安全,以至于即使服务器主机也不能访问数据。这可以通过服务器只接收加密数据并从不接收密钥来保证。客户端加密的Web应用程序

我打算在客户端使用Javascript进行加密和解密。此外,连接将通过SSL进行保护。

我在这里阅读文章:http://www.matasano.com/articles/javascript-cryptography/这表明Javascript不应该用于加密,但它不能解决我的使用案例。

这是一个安全的解决方案吗?有没有办法让我更安全?

+1

这只要你不实际注入JS代码窃取的关键似乎是足够安全的。 – millimoose 2013-03-14 21:06:44

+1

该页面上的其他内容除了您的服务器以外都没有。用户在其浏览器中没有运行任何扩展程序,允许扩展程序访问他们访问的网页(这是很多)。实际上,您的情况已被该文章所涵盖 - 因为它继续说明RNG在浏览器中如何不安全,因此从理论上讲,您无能为力。像大多数安全问题一样,您永远无法说“它很安全”。你可以表达一定程度的信心。 – Nik 2013-03-14 21:26:12

+0

@Nik:无论客户端是否发生加密,这些浏览器扩展程序都不会从任何* web应用程序窃取数据?我对使用Javascript加密客户端的感觉并不好,但我不知道第三方脚本或扩展是否是原因。 – 2013-03-14 21:41:37

回答

-1

虽然这种设置没有任何内在的错误,但由于客户有责任维护自己机器的安全,所以我认为您可能正在陷入可能导致更多问题的情况。

一个是用户希望能够访问他们的数据,无论如何。如果他们在另一个JS关闭的系统上,那么他们将无法访问他们的数据。

另外,如果用户忘记密码/密钥会发生什么?由于您没有存储它,因此无法恢复数据并且实际上已丢失。没有任何事情可以做,即使这不是你的错,用户也不会这样看。

只是一些思考。

11

查看Host-Proof Hosting模式(自2005年7月起)。

在眨眼草图:

锁定的数据云,在浏览器键的内侧。

主机以加密形式的敏感数据,以便客户端只能访问 并通过提供密码短语这是从来没有 发送到服务器进行操作。服务器被限制为持久存储,并且 检索浏览器发送的任何加密数据,并且绝不会以其明文形式访问敏感数据。它。所有的 加密和解密都发生在浏览器内部。

要点是你需要仍然使用TLS/SSL并且完全信任主机同时提供HTML作为JavaScript资源。

此外,Web-browser encryption of personal health information有一个类似于您正在寻找的解决方案。

Encryption data flow

相关问题