Java 有没有一种方法可以使用对称密钥通过Azure密钥库对邮件进行加密?

Java 有没有一种方法可以使用对称密钥通过Azure密钥库对邮件进行加密?,java,azure,azure-keyvault,Java,Azure,Azure Keyvault,我正在使用Java库访问Azure密钥库,并查看com.Azure.security.keyvault.keys.cryptography.cryptography客户端,它需要一种似乎能够使用对称密钥的加密算法。然而,你不能在Azure密钥库中存储对称密钥,这让我想知道:例如,你如何使用EncryptionAlgorithm.A256CBCHS512 我唯一能想到的是直接使用jsonWebKey作为密钥标识符(而不是使用标识符),然后加密消息。因此,我需要将jsonWebKey(AES密钥)作

我正在使用Java库访问Azure密钥库,并查看com.Azure.security.keyvault.keys.cryptography.cryptography客户端,它需要一种似乎能够使用对称密钥的加密算法。然而,你不能在Azure密钥库中存储对称密钥,这让我想知道:例如,你如何使用EncryptionAlgorithm.A256CBCHS512

我唯一能想到的是直接使用jsonWebKey作为密钥标识符(而不是使用标识符),然后加密消息。因此,我需要将jsonWebKey(AES密钥)作为机密存储在vault中,检索该机密,然后使用它进行加密。但这并不安全,因为AES密钥随后将通过互联网发送(即使是通过https)


那么,使用Azure key Vault使用对称密钥加密消息的推荐(安全)过程是什么呢?

KV只进行非对称加密,而只有密钥(非对称)公开加密操作,如加密/解密签名/验证等

始终可以使用KV包裹对称密钥,并使用KV展开密钥。但是对称加密操作将出现在Java代码中

我写了一篇关于一些时髦的KV密码的文章,这篇文章提供了一些C#代码的链接。


我希望这能有所帮助。

所以这里的最佳实践是通过Internet发送对称密钥?即使我包装它们,当我打开它们时,它们将以明文形式发送到我的应用程序,对吗?还有,谢谢你的回答!如果包装对称密钥,它将被加密,直到您将其展开。但是,是的,在这一点上,对称密钥在你的应用程序中处于清除状态。我知道它在我的应用程序中处于清除状态,但我想我的问题更多的是,如果它通过互联网从密钥库发送到我的应用程序(例如,我的应用程序位于美国,而我的密钥库位于欧洲,或者它们位于同一地区但在不同的网络中). 如果是这样的话(我现在假设是这样),那么最好的做法是如何防止有人以某种方式检查我的应用程序和密钥库之间的https流量。也许这是一个更好的新问题,不过?您好-从您的应用程序到KV,网络受TLS 1.2保护,您不能关闭它。在Azure数据中心之间,我们使用IPSec保护的通道。因此,如果任何敏感数据在以太网上传播,它就会受到保护。这两种协议都提供了端到端保护,所以您没事!