首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.net核心加密:在工作进程和客户端之间共享密钥

.net核心加密:在工作进程和客户端之间共享密钥
EN

Stack Overflow用户
提问于 2018-01-09 14:08:03
回答 1查看 506关注 0票数 2

虚拟机中有一个工作进程,它必须处理客户端发送的文件,并将结果存储在数据库中。我们不希望这个虚拟机(因此,工作进程)直接面对Internet。客户端将这些文件发送到中间云存储,然后当有几个文件时,工作人员会批量处理这些文件。这意味着这些文件可能在不确定的时间内存放在云存储中。我的要求之一是,文件必须是加密的,而在rest,在这个存储中。我们使用存储作为服务,我们没有对它的控制(其他的要求是我们不应该绑定到云提供商,所以云提供商特定的解决方案不会做这个工作)

我们希望遵循的方法是使用与工作进程共享的密钥(对称加密)在客户端对它们进行加密。它们将被加密,直到工作进程从存储中取出它们并使用共享密钥对它们进行解密。

我们希望在客户端和虚拟机上都使用.Net Core2.0数据保护框架,并且需要在此工作进程和客户端之间共享密钥。通过阅读文档,我看到我们可以使用Redis密钥存储提供程序,但是我理解这个用例就是在不同的应用服务器之间共享密钥。另外,我不确定将密钥存储在面向Redis实例的Internet中是个好主意(因为这会增加攻击面)。

因此,问题是,如何能够安全地共享工作进程和客户端之间生成的数据保护框架?

注意:还有另一个组件,web服务器,它将面向Internet并将与虚拟机进行直接通信,但由于上述原因,该虚拟机不会直接面向Internet。我们可以使用此web服务器来通信工作进程和客户端,但不确定是否有更好的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-09 14:15:20

我觉得你把事情搞得太复杂了。除非对客户端上的文件进行加密是必需的(您没有这么说),否则您不必加密。

通过HTTPS将客户端的文件发送到服务器,对服务器上的文件进行加密,然后将它们发送到存储区。

这样,您就不需要共享任何东西,服务器将控制整个进程,并且您可以选择以任意方式保存加密密钥。

如果需要对客户端上的文件进行加密,则在客户端对它们进行加密,将它们发送到服务器,通过HTTPS将加密密钥发送给服务器,以任意方式在服务器上存储密钥,然后将它们发送到存储区。

注意:我不认为.NET核心数据保护是您的场景的最佳选择。直接使用AES加密要容易得多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48169996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档