0

我正在开发一个将文件上传到 Azure 存储的 .NET 应用程序。我正在利用https://azure.microsoft.com/en-us/documentation/articles/storage-encrypt-decrypt-blobs-key-vault/教程中所做的客户端加密

该应用程序有效,即我可以成功地将加密的 blob 上传到选定的存储帐户和容器。

但是,我对 RSA 密钥的安全性有些担心。如果客户端应用程序从 Key Vault 获取密钥以在 BlobEncryptionPolicy 中使用,那么该密钥可能会被泄露?应用程序真正需要的唯一东西是 RSA 对的公钥,私钥应保留在服务器上(解密仅由受信任的 Web 应用程序进行)。

我担心的另一个问题是,从 app.config 获取 AAD 集成信息很简单。如何解决这个问题?

(注意:运行上传应用程序的工作站不一定受信任)

4

2 回答 2

0

对https://azure.microsoft.com/en-us/documentation/articles/storage-encrypt-decrypt-blobs-key-vault/上的 Azure 存储和 Key Vault 演练文档的一些额外阅读提供了答案:

“存储客户端本身永远无法访问 KEK。”

KEK 是“密钥加密密钥”,它对用于加密实际 blob 的实际一次性对称加密密钥进行加密。

于 2015-09-08T05:25:36.110 回答
0

您只需要一个公钥来加密随机对称密钥并使用该对称密钥来加密您的数据。服务器进程(函数或类似)有权访问用于解密对称密钥的私钥,然后解密 blob。可以使用 RBAC 策略限制对 KV 中保存的私钥的访问,并将托管标识应用于需要读取私钥的进程。

最后,公钥真的不应该是裸密钥,它应该在 X.509 证书中,这样您就可以验证服务器端点的真实性。

于 2020-06-03T03:40:35.807 回答