4

一些 Web 应用程序,如 Google Docs,存储用户生成的数据。只能由其所有者读取的数据。或者可能不是?

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

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

4

5 回答 5

6

如果在服务器上执行加密/解密,则无法确保明文没有转储到某个日志文件或类似文件的某个位置。

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

卡尔

于 2008-09-02T15:25:30.477 回答
4

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

于 2008-09-02T15:32:19.493 回答
1

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

但主要问题仍然是一样的:如果有足够权限的人可以访问数据(例如:入侵了您的服务器),那么您就迷路了。只要有足够的时间和力量,一切都可能被打破。这只是时间问题。

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

编辑我想赶上@CarlUnkwntech并添加他们的声明:如果您不信任网站本身,请不要泄露私人数据。这甚至在有人入侵他们的服务器之前...... ;-)

于 2008-09-02T15:33:41.143 回答
1

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

好吧,密钥通常来自用户选择的某个密码。您不存储它,您相信用户会记住它。您可以存储的可能是与该用户相关的一些盐值,以提高针对彩虹表攻击的安全性。

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

卡尔

于 2008-09-03T08:37:26.037 回答
-1

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

于 2008-09-02T15:29:08.473 回答