我希望对以下内容作出澄清和建议:
我的项目要求我在Nodejs环境中使用对称数据加密(使用AES)来保护数据库(mongodb)上的数据。理想情况下,我想这样做:
将对称密钥存储在Azure密钥保管库中作为密钥,然后进行加密'调用Vault以使用Key对数据执行AES加密。加密数据在响应中发送到我的应用程序,然后以加密形式存储在数据库中。
我在阅读MS Azure的文档和相关博客文章后感到困惑,其中一些消息来源声称支持对称密钥加密,但没有关于此的官方文档。
任何人都可以建议这是否是Azure密钥保管库支持的所有密钥类型和算法的详尽列表? https://msdn.microsoft.com/en-us/library/azure/dn903623.aspx#BKMK_KeyTypes
似乎这可能是一个选项(http://www.nuget.org/packages/Microsoft.Azure.KeyVault.extensions),但仅适用于.NET上的环境。对Nodejs的爱吗?
所以 - 我要问的是" MS Azure的密钥保管库是否支持对称(AES)密钥/加密,如果是,那么这个正式记录在哪里?
如果目前不支持对称密钥/加密,那么任何人都可以提供上述方法的替代方法吗?
谢谢,非常感谢。
答案 0 :(得分:2)
我同意文档/博客在这个主题上看起来有点混乱。根据我的理解,密钥保险库目前尚不支持对称加密。我相信你能得到的最接近的是存储对称密钥作为秘密并在金库外使用它们。
这article谈到了这样做。请参阅标题使用密钥保管库密码
的部分我理解你使用node.js,而这个例子在powershell中只是试图用秘密来说明对称加密的例子。显然,加密操作发生在保险库之外。因此,在静止时,密钥更安全,但在操作发生的任何时候都会暴露在内存中。
希望有所帮助。
以下是PowerShell中创建密钥保管库中可用作SymmetricKey的密码的示例。
SymmetricKey sec = (SymmetricKey) cloudResolver.ResolveKeyAsync(
"https://contosokeyvault.vault.azure.net/secrets/TestSecret2/",
CancellationToken.None).GetAwaiter().GetResult();