gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:09:55 25 4
gpt4 key购买 nike

我正在考虑应用程序中的加密。该架构包括:

  1. 服务器
  2. 桌面客户端
  3. 网络客户端
  4. 移动客户端

目标是允许用户将其数据存储在服务器上,并从所有客户端访问它,但通过在客户端上加密数据来保证数据隐私。

Dropbox 是这种架构的一个例子,但据我所知他们没有这样做 - 他们必须在服务器上存储纯文本数据,否则他们将无法通过存储相同的文件来节省空间仅一次,即使它被多个用户存储。

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

  1. 是否有一个可在所有这些平台上使用的加密库?
  2. 使用什么算法?
  3. 私钥怎么样?我可以每次都询问用户密码,但如何确保所有客户端中同一用户的私钥相同?
  4. 我想避免使用多个密码;但是,如果我对数据和身份验证使用相同的密码,如何防止服务器向提供错误密码的黑客提供数据,或者服务器因为拥有用户密码而无法解密用户数据?
  5. 有哪些可能的陷阱?

最佳答案

你实际上需要一些不同的加密货币。

首先,您希望客户端加密要上传的文件,并在检索加密的有效负载后对其进行解密。

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

第一个问题需要对称加密算法。有很多,但最好的选择可能是 AES。如果你看一下gwt-crypto他们有一个用于 java bouncy caSTLe 实现的包装器。这可以处理您的三个平台中的两个。我不使用 android 平台,但如果没有 AES 实现,我会感到惊讶。至于 key ,您可能最终会得到密码的哈希值。只要记住彩虹表的可能性并采取适当的措施即可。用于加密文件的密码永远不需要通过网络传输,因为我了解您的模型,所有加密和欺骗都是在客户端完成的。由于您提到系统管理员是潜在的攻击者,因此您确实需要研究键盘记录器、内存转储等,但这超出了您提出的具体问题的范围。

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

关于java - 类似 Dropbox 的 Java 应用程序中的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com