Encryption 在web应用程序中加密来自用户的数据

Encryption 在web应用程序中加密来自用户的数据,encryption,web-applications,privacy,Encryption,Web Applications,Privacy,一些web应用程序,如Google文档,存储用户生成的数据。只能由其所有者读取的数据。也许不是 据我所知,这些数据按原样存储在远程数据库中。因此,如果在远程系统中拥有足够权限的任何人(例如系统管理员)可以隐藏我的数据,我的隐私可能会受到损害 将这些数据加密存储在远程数据库中,并且只有数据的所有者才能解密,最好的解决方案是什么?如何使此过程对用户透明?(您不能使用用户的密码作为加密其数据的密钥,因为您不应该知道他的密码)。如果在服务器上执行加密/解密,则无法确保明文不会转储到某个日志文件或类似文件

一些web应用程序,如Google文档,存储用户生成的数据。只能由其所有者读取的数据。也许不是

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


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

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

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


卡尔

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

我认为卡尔一针见血,但我想说的是,对于任何网站,如果你向其提供任何机密/个人/特权信息,那么你必须拥有一定程度的信任,服务提供商有责任建立这种信任。这是互联网自诞生以来就被问了很多次的问题之一,它只会继续发展,直到我们所有人的指纹上都有自己的SSL证书编码,即使这样,我们也不得不问一个问题:“我如何知道手指仍然与用户相连?”,我会考虑一个类似于亚马逊AWS的过程。您使用未远程保存的私人密码进行身份验证。仅使用散列来验证用户。然后,使用一种主要的、经过长期测试的算法生成一个证书,并从一个安全页面提供该证书。然后,可以使用公钥/私钥算法为用户加密内容

但主要问题仍然是:如果有人拥有足够的权限可以访问数据(比如:黑客入侵了你的服务器),你就迷失了方向。如果有足够的时间和力量,一切都可能被破坏。这只是时间问题

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

编辑我想补充一下他们的说法:如果你不信任网站本身,就不要泄露私人数据。甚至在有人入侵他们的服务器之前…;-)

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

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

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

卡尔