类似Dropbox的Java应用程序中的加密
我在考虑应用程序中的加密。该体系结构包括:类似Dropbox的Java应用程序中的加密,java,gwt,encryption,Java,Gwt,Encryption,我在考虑应用程序中的加密。该体系结构包括: 服务器 桌面客户端 网络客户端 移动客户端 其目标是允许用户将其数据存储在服务器上,并从所有客户端访问数据,但通过加密客户端上的数据来保证数据隐私 Dropbox就是这种架构的一个例子,但据我所知,他们不这样做——他们必须在服务器上存储明文数据,否则,即使同一个文件由多个用户存储,他们也无法通过只存储一次来节省空间 您将如何实现这样一个应用程序?我正在考虑使用Java作为桌面客户端;理论上,同样的加密代码可以在GWT web客户端(编译为Javascr
实际上你需要一些不同的水晶 首先,您希望客户端加密要上载的文件,并在检索到加密的有效负载后将其解密 第二,您需要某种方法来传输加密文件以确保只有正确的用户才能访问其文件 第一个问题需要对称加密算法。有很多,但你最好的选择可能是AES。如果你看一看,他们有一个java bouncy castle实现的包装器。这需要处理三个平台中的两个。我不使用android平台,但如果没有AES实现,我会感到惊讶。至于密钥,您可能会得到密码的散列。只要记住彩虹表的可能性,并采取适当的措施。用于加密文件的密码永远不需要通过电线,因为我了解您的模型所有加密和欺骗都是在客户端完成的。由于您提到系统管理员是潜在的攻击者,因此您确实需要调查密钥记录器、内存转储等,但这超出了您提出的特定问题的范围
第二个问题是使用带有客户端和服务器端证书的TLS解决的问题。这样的客户端可用于您正在查看的所有三个平台。不过,您是否想让用户经历安装客户端证书的麻烦取决于您。有多种备用选项,但没有一种是经过充分审查的。数据只应在服务器上加密,并在从服务器传输到客户端的过程中加密。为什么要在客户端对其进行加密?为什么Dropbox不应该将文件哈希与文件类型识别结合使用?你怎么认为他们根本不使用任何加密?@BehrangSaeedzadeh我认为他们肯定必须在客户端加密,因为隐私(从客户端传输到服务器时,在服务器上存储临时文件时,等等)@MarekSebera他们不必在客户端加密存储。毕竟,客户端上的其他程序应该可以使用所有文件。但是,它们只应该在从服务器传输到客户端或从客户端传输到服务器的过程中进行加密,因此https就足够了。在服务器端,它们可以加密存储,因此如果文件因安全漏洞或类似原因泄漏,攻击者需要首先对其进行解密,如果他们无法访问用于加密的密钥,他们可能无法访问这些密钥。@BehrangSaeedzadeh我想加密客户端上的数据,以保证用户除了他以外,没有人能够访问数据,甚至管理员/程序员也不能。