我不太确定该如何处理。
这里是情况:
我正在计划一项可以与他人共享内容的服务。
当然Bob和Carol也可以是共享者,而Alice也可以是观察者。
让我们假设Bob和Carol可能不是IT专家,因此他们不知道如何使用公钥/私钥对。作为共享者的爱丽丝是系统的活跃订户,而鲍勃和卡罗尔也被邀请加入系统,所以他们不会知道太多。因此,应该在后台自动管理加密/解密。这意味着私钥将存储在服务器上的某个地方,不是吗?
您看到的是,在这些情况下有很多用例,但我不确定是否有组织这种情况的好方法。
技术堆栈并不是最重要的,但它是MEAN(MongoDB,Express,Angular2,NodeJS)。它还使用NgRx存储。
我不需要的是成熟的程序,但是只有一些方向正确。如果您碰巧有一个,我不会拒绝它的:)
这是该场景的简短摘要:
Alice应该能够与Bob共享文档。这些文档应该被加密,以便只有Alice和Bob可以阅读它们。共享是通过浏览器中的Web应用程序进行的。
哦,而且BTW,Alice和Bob或Alice和Carol不必同时或在Alice共享文档的那一刻都在线。实际上,它们共享在一起可以在几年后使用。
答案 0 :(得分:0)
您应该:
Amazon S3之类的系统通常会创建一个每个对象加密密钥来加密文件。然后,使用主密钥对该密钥进行加密。主密钥保存在密钥管理系统中,永远不能导出。
这样,如果获得了一个加密密钥,则只能用于解密一个文件。或者,如果政府要求访问文件并因此要求加密密钥,则他们只能读取该文件。
Amazon S3可以使用服务器端加密和AWS Key Management Service为您自动管理以上所有内容。
答案 1 :(得分:0)
您不认为我可以通过使此过程变得更加复杂来增加安全性?
使过程更加复杂通常会导致更复杂的错误。
理论上-您可以通过使用内容密钥加密内容,然后为每个访问用户的公共密钥加密内容密钥来创建端到端安全性。尽管每个用户都需要自己拥有自己的私钥并能够使用它。
已经在服务器端(express / NodeJS)
好的,您有一个服务器端应用程序,因此使事情变得更容易。
看到您的要求,您可能不需要直接在S3上管理访问。为了简化操作,您可以创建一个应用程序来决定哪个用户可以访问内容,也可以不访问该内容。然后,应用程序可以直接提供内容(例如代理S3内容),也可以提供签名的url以访问内容。前提是您确保应用程序凭据的安全。
应该对文档进行加密,以便只有Alice和Bob可以阅读它们。
...
因此,应该在后台自动管理加密/解密。
您可以在S3本身上对内容进行加密,尽管它对用户是透明的,但用户将收到纯内容。
如果您碰巧有一个,我不会拒绝它的:)
您可能已经检查了任何内容管理或门户解决方案,它们通过defaut(Aflresco,Liferay等)或任何可行的CMS系统提供访问和内容共享