一些网络应用程序(例如 Google 文档)存储用户生成的数据。只有其所有者才能读取的数据。或者可能不是?

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

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

有帮助吗?

解决方案

如果在服务器上执行加密/解密,则无法确保明文不会转储到某些日志文件等中的某个位置。

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

卡尔

其他提示

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

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

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

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

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

奥龙问道:如何生成客户端加密/解密数据的密钥?您将这个密钥存储在哪里?

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

加密很难正确;-) 我建议查看源代码 斧头地穴 并为 秘密' 离线客户端。

卡尔

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top