使用 Azure Key Vault CryptographyClient 进行加密 - 加密/解密发生在哪里?我的后端或 Azure 服务器端

问题描述 投票:0回答:2

我目前正在使用 Azure Key Vault .net SDK 来加密/解密一些数据。适用于 .net 的 Azure SDK 有一个名为“CryptographyClient”的内置类,它具有执行此操作的内置方法: CryptographyClient.decryptCryptographyClient.encrypt

我使用的密钥是 RSA 密钥,我使用的算法是 RsaOaep,所以我假设它是 非对称加密。我按照这篇文章编写了我的 C# 代码。基本上,我首先从密钥库获取非对称密钥的公共部分,然后用它来创建 CryptographyClient。

通常,对于非对称加密,我们会使用公钥进行加密,而私钥仅用于解密。所以基本上,私钥将永远不会离开Azure Key Vault(始终位于Azure服务器,是真的吗?)。

现在我的问题是:

当我调用 CryptographyClient.encrypt 时,它仅在客户端(我的本地服务器)上运行吗?或者它会将我的明文发送到 Azure 服务器并发回加密文本?

当我调用CryptographyClient.decrypt时,由于私钥永远不应该离开Azure,并且只能用私钥解密,所以它只能在Azure服务器端运行吗?意味着我的本地服务器需要将加密文本发送到Azure并等待解密?

我有一种感觉,这两种方法都只发生在客户端,这就是我想要的。但这样的话解密就没有意义了。

感谢您的澄清,因为我找不到任何相关的 MS 文档。

azure-keyvault encryption-asymmetric azure-sdk-.net
2个回答
2
投票

使用公钥的操作 - 如果他们可以下载公钥,即调用者具有“获取”权限 - 将在客户端上发生。公钥被下载并执行操作。如果调用者没有该密钥的“获取”权限,则该操作将在 KeyVault 服务器上执行。这些操作包括:

  • 加密
  • 验证
  • 包裹

需要私钥的操作将始终在服务器上执行,除非您从自己的 JSON Web 密钥 (JWK) 创建了一个同时具有公钥和私钥的

CryptographyClient

这些操作包括:

  • 解密
  • 标志
  • 打开包装

0
投票

所有加密/解密都发生在服务器端,因为那是私钥所在的位置。

CrypographyClient API 基于 REST :

https://learn.microsoft.com/en-us/rest/api/keyvault/keys/encrypt

https://learn.microsoft.com/en-us/rest/api/keyvault/keys/decrypt/decrypt

您可以在执行代码时运行 Fiddler 跟踪来查看服务器通信。

© www.soinside.com 2019 - 2024. All rights reserved.