使用在一台服务器上加密并在另一台服务器中解密.NET



我正在开发两个应用程序,它们需要存在于两个独立的服务器上。一个将加密数据并将加密的数据存储在SQL Server实例中(SQL 2012 Standard,因此不支持TDE)。另一个应用程序将提取加密的数据并对其进行解密,以显示在某些报告中。

我是否应该使用共享私钥/公钥访问来查看密钥AESManaged

AES是一种对称密钥密码,因此不使用私钥/公钥对。使用AES,所有参与者都必须能够访问相同的密钥来加密和解密数据。如果您对两个系统都可以访问同一密钥感到满意,那么您就不需要在该解决方案中引入不对称(公共/私有)加密。

如果你不希望两个系统都能持久访问静态共享密钥(你可能不希望),你可以使用混合密码系统——为要在源系统上加密的每条消息/记录生成一个随机AES"会话"密钥,用对称密钥加密数据(使用AEAD模式或通过HMAC在密文上添加身份验证标签),然后通过接收方的公钥加密会话密钥。现在,您可以将加密的会话密钥和加密的数据一起传输,接收方将使用其私钥解密会话密钥,然后解密数据。任何一条消息的泄露都不会泄露任何其他记录(好吧,只要不是被泄露的接收方私钥)。

在。NET,意思是AesManagedAesCryptoServiceProvider(请参阅此处了解更多信息)和RsaCryptoServiceProviderRsaCNG(请参阅这里)。

相关内容

最新更新