4

我将不胜感激以下方面的澄清和建议:

我的项目要求我在 Nodejs 环境中使用对称数据加密(使用 AES)来保护数据库(mongodb)上的数据。理想情况下,我想这样做如下:

将对称密钥作为密钥存储在 Azure Key Vault 中,然后对保管库进行“加密”调用,以使用该密钥对数据执行 AES 加密。加密数据在响应我的应用程序时发送,然后以加密形式存储在数据库中。

在阅读了 MS Azure 的文档和相关博客文章后,我感到很困惑,其中一些消息来源声称支持对称密钥加密,但没有关于此的官方文档。

谁能建议这是否是 Azure Key Vault 支持的所有密钥类型和算法的详尽列表? https://msdn.microsoft.com/en-us/library/azure/dn903623.aspx#BKMK_KeyTypes

似乎这也可能是一个选项(http://www.nuget.org/packages/Microsoft.Azure.KeyVault.extensions),但仅适用于 .NET 上的环境。喜欢 Nodejs 吗?

如果当前确实不支持对称密钥/加密,那么任何人都可以提供我上述方法的替代方法吗?

谢谢,非常感谢。

4

1 回答 1

6

我同意文档/博客在这个主题上确实有点令人困惑。据我了解,密钥库目前还不支持对称加密。我相信你能得到的最接近的是将对称密钥存储为秘密并在保险库外使用它们。

这篇文章谈到了这样做。请参阅标题为使用 Key Vault 机密的部分

我了解您使用 node.js 并且该示例在 powershell 中只是试图说明带有秘密的对称加密示例。显然,加密操作发生在保险库之外。因此,在静止状态下,密钥更安全,但在任何操作发生时都会暴露在内存中。

希望有帮助。

下面是一个在 PowerShell 中在 Key Vault 中创建可用作 SymmetricKey 的机密的示例。

SymmetricKey sec = (SymmetricKey) cloudResolver.ResolveKeyAsync(
"https://contosokeyvault.vault.azure.net/secrets/TestSecret2/",
CancellationToken.None).GetAwaiter().GetResult();
于 2016-01-29T14:41:14.220 回答