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

Encryption with Azure Key Vault CryptographyClient - where is encrypt/decrypt happenning? my backend or Azure server side

我目前正在使用 Azure Key vault .net SDK encrypt/decrypt 一些数据。适用于 .net 的 Azure SDK 有一个名为“CryptographyClient”的内置 Class,它有内置的方法来执行此操作: CryptographyClient.decrypt and CryptographyClient.encrypt

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

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

现在我的问题是:

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

当我调用 CryptographyClient.decrypt 时,由于私钥永远不会离开 Azure,并且您只能使用私钥解密,是否仅 运行 Azure 服务器端?意味着我的本地服务器需要将加密文本发送到 Azure 并等待解密?

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

感谢您的澄清,因为我找不到这方面的任何 MS 文档。

所有 encryption/decryption 都发生在服务器端,因为那是私钥所在的地方。

CryptographyClient API 基于 REST :

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

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

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

使用 public 密钥的操作 - 如果他们可以下载 public 获取,即调用者具有“获取”权限 - 将在客户端上发生。他们 public 关键是下载和执行操作。如果调用者没有对该密钥的“获取”权限,则将在服务上执行该操作。

这些操作包括:

  • 加密
  • 验证
  • 环绕

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

这些操作包括:

*解密 *符号 *展开