我正在为一个新项目制定计划,并寻找一种方法来允许用户上传他们的文件并保持加密并且只有他们才能访问,但同时我也需要他们的联系人来访问这些文件。
进一步解释一下:
- 用户通过 Web 应用程序将文件上传到我的服务器。
- 我(服务器)不应该访问这些文件的内容。
- 如果用户决定与联系人共享这些文件,那么用户的联系人应该能够访问这些文件。
这样的事情可能吗?
答案1
简短的回答:公钥加密意味着:是的,你可以做到这一点。这很难,因为密钥管理很难,而不是因为这个问题在数学上很难。
长答案:...这里不适合。
中简短的回答是:
如果每个联系人都有一个您不知道而他们知道的私钥,以及一个您知道的公钥,并且您可以让软件(包括 JavaScript)在用户的计算机上运行,那么您就可以在用户的计算机上加密数据,使得在其他用户的计算机上使用各自的私钥运行的类似程序可以访问它,但是您在不更改用户计算机上运行的软件的情况下无法访问它。
需要考虑的一些事情:
- 从密码学角度来说,这是一个已解决的问题。不要自己解决。
- 大多数用户都希望获得可用性。
- 您仍然需要对元数据做出正确的决策。