Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类似Dropbox的Java应用程序中的加密_Java_Gwt_Encryption - Fatal编程技术网

类似Dropbox的Java应用程序中的加密

类似Dropbox的Java应用程序中的加密,java,gwt,encryption,Java,Gwt,Encryption,我在考虑应用程序中的加密。该体系结构包括: 服务器 桌面客户端 网络客户端 移动客户端 其目标是允许用户将其数据存储在服务器上,并从所有客户端访问数据,但通过加密客户端上的数据来保证数据隐私 Dropbox就是这种架构的一个例子,但据我所知,他们不这样做——他们必须在服务器上存储明文数据,否则,即使同一个文件由多个用户存储,他们也无法通过只存储一次来节省空间 您将如何实现这样一个应用程序?我正在考虑使用Java作为桌面客户端;理论上,同样的加密代码可以在GWT web客户端(编译为Javascr

我在考虑应用程序中的加密。该体系结构包括:

  • 服务器
  • 桌面客户端
  • 网络客户端
  • 移动客户端
  • 其目标是允许用户将其数据存储在服务器上,并从所有客户端访问数据,但通过加密客户端上的数据来保证数据隐私

    Dropbox就是这种架构的一个例子,但据我所知,他们不这样做——他们必须在服务器上存储明文数据,否则,即使同一个文件由多个用户存储,他们也无法通过只存储一次来节省空间

    您将如何实现这样一个应用程序?我正在考虑使用Java作为桌面客户端;理论上,同样的加密代码可以在GWT web客户端(编译为Javascript)和Android客户端中重用。然而,这只是理论上的

  • 所有这些平台上都有可用的加密库吗
  • 使用什么算法
  • 私钥呢?我可以每次向用户询问密码,但如何确保所有客户端中同一用户的私钥相同
  • 我希望避免使用多个密码;但是,如果我在数据和身份验证中使用相同的密码,我如何防止服务器将数据提供给提供错误密码的黑客,或者防止服务器因为拥有用户密码而能够解密用户数据
  • 有什么可能的陷阱

  • 实际上你需要一些不同的水晶

    首先,您希望客户端加密要上载的文件,并在检索到加密的有效负载后将其解密

    第二,您需要某种方法来传输加密文件以确保只有正确的用户才能访问其文件

    第一个问题需要对称加密算法。有很多,但你最好的选择可能是AES。如果你看一看,他们有一个java bouncy castle实现的包装器。这需要处理三个平台中的两个。我不使用android平台,但如果没有AES实现,我会感到惊讶。至于密钥,您可能会得到密码的散列。只要记住彩虹表的可能性,并采取适当的措施。用于加密文件的密码永远不需要通过电线,因为我了解您的模型所有加密和欺骗都是在客户端完成的。由于您提到系统管理员是潜在的攻击者,因此您确实需要调查密钥记录器、内存转储等,但这超出了您提出的特定问题的范围


    第二个问题是使用带有客户端和服务器端证书的TLS解决的问题。这样的客户端可用于您正在查看的所有三个平台。不过,您是否想让用户经历安装客户端证书的麻烦取决于您。有多种备用选项,但没有一种是经过充分审查的。

    数据只应在服务器上加密,并在从服务器传输到客户端的过程中加密。为什么要在客户端对其进行加密?为什么Dropbox不应该将文件哈希与文件类型识别结合使用?你怎么认为他们根本不使用任何加密?@BehrangSaeedzadeh我认为他们肯定必须在客户端加密,因为隐私(从客户端传输到服务器时,在服务器上存储临时文件时,等等)@MarekSebera他们不必在客户端加密存储。毕竟,客户端上的其他程序应该可以使用所有文件。但是,它们只应该在从服务器传输到客户端或从客户端传输到服务器的过程中进行加密,因此https就足够了。在服务器端,它们可以加密存储,因此如果文件因安全漏洞或类似原因泄漏,攻击者需要首先对其进行解密,如果他们无法访问用于加密的密钥,他们可能无法访问这些密钥。@BehrangSaeedzadeh我想加密客户端上的数据,以保证用户除了他以外,没有人能够访问数据,甚至管理员/程序员也不能。