加密Web应用程序中用户的数据

时间:2008-09-02 15:18:05

标签: encryption web-applications privacy

某些网络应用程序(如Google文档)会存储用户生成的数据。只能由其所有者读取的数据。或许不是吗?

据我所知,这些数据存储在远程数据库中。因此,如果任何在远程系统中拥有足够权限的人(例如系统管理员)可能潜伏我的数据,我的隐私就会受到损害。

在远程数据库中加密存储此数据的最佳解决方案是什么?只有数据所有者可以对其进行解密?如何使这个过程对用户透明? (您不能使用用户密码作为加密其数据的密钥,因为您不应该知道他的密码。)

5 个答案:

答案 0 :(得分:6)

如果在服务器上执行加密/解密,则无法确保明文未在某个日志文件中的某处转储。

您需要使用JavaScript / Java / ActiveX或其他方式在浏览器中进行加密/解密。作为用户,您需要信任Web服务的客户端,而不是将未加密的信息发送回服务器。

卡尔

答案 1 :(得分:4)

我认为卡尔把它钉在头上,但我想说,对于任何网站,如果你提供任何机密/个人/特权信息,那么你必须有一定程度的信任,这是服务提供商有责任建立这种信任。这是自互联网诞生以来在互联网上多次被问过的问题之一,它只会继续增长,直到我们都在我们的指纹上编码自己的SSL证书,即便如此,我们也必须提出问题“我怎么知道手指还附着在用户身上?”。

答案 2 :(得分:1)

好吧,我会考虑一个类似于Amazons AWS的流程。您使用未远程保存的私人密码进行身份验证。只是一个哈希用于验证用户。然后,您使用主要和经过长期测试的算法之一生成证书,并从安全页面提供此证书。然后,可以使用公钥/私钥算法为用户加密事物。

但主要问题仍然存在:如果拥有足够权限的人可以访问数据(比如:攻击你的服务器),那么你就输了。如果有足够的时间和力量,一切都可能被打破。这只是时间问题。

但我认为像GPG / PGP等类似的算法和应用程序是众所周知的,可以通过保护Web应用程序的方式实现 - 并将可用性保持在普通用户可以处理的分数上。

编辑我想要了解@CarlUnkwntech并添加他们的声明:如果您不信任该网站本身,请不要提供私人数据。甚至在有人攻击他们的服务器之前......; - )

答案 3 :(得分:1)

  Auron问:如何为客户端生成加密/解密数据的密钥?你在哪里储存这个钥匙?

嗯,密钥通常来自用户选择的密码。您不存储它,您信任用户记住它。你可以存储的可能是与该用户相关的一些盐值,以增强对彩虹表攻击的安全性。

加密很难做对;-)我建议查看AxCryptXecrets'离线客户端的源代码。

卡尔

答案 4 :(得分:-1)

不,您不能使用密码,但可以使用密码哈希。但是,Google文档都是关于共享的,因此这种方法需要为每个用户存储文档的副本。