繁体   English   中英

Google Cloud HSM作为加密提供程序

[英]Google Cloud HSM as a provider for encryption

AWS似乎允许我们将AWS Cloud HSM作为提供者,请参见此处此处

Security.addProvider(new com.cavium.provider.CaviumProvider())

但是,在GKE的样本中,我们似乎只有充气城堡作为提供者。 这里

Security.addProvider(new BouncyCastleProvider());

也许我缺少基本的东西。

想要执行以下JCA API的initsign

https://docs.oracle.com/javase/10/docs/api/java/security/Signature.html#initSign(java.security.PrivateKey)

我不确定确切的问题是什么,但是您似乎想编写使用HSM的私钥对数据签名的代码,并使其在AWS和Google Cloud上正常工作。 为此,请执行以下步骤:

  1. 加载提供者
  2. 打开密钥库
  3. 检索私钥
  4. 使用私钥初始化签名对象(并使用要签名的数据对其进行更新)
  5. 标志

步骤1可以以编程方式(通过您在问题中所写的Security.addProvider)完成 ,也可以在java.security文件中静态完成。 如果您希望代码对于运行它的云平台是不可知的,则可能需要考虑静态执行此操作(尽管也可以通过编程方式进行操作并使事物与平台无关)。

其余步骤仅需要非常标准的JCE代码。 下面是一个示例:

KeyStore keyStore = KeyStore.getInstance("type", "provider name");
PrivateKey privKey = (PrivateKey) keyStore.getKey("alias", null);
Signature sig = Signature.getInstance("transformation", "provider name");
sig.initSign(privKey);
sig.update(dataToSign);
byte[] signature = sig.sign();

您可能想要从(安全的)配置文件中读取提供程序名称和密钥库类型,因此这些文件不会被硬编码。 完成这项工作后,您将需要查看去密钥库检索密钥对象的频率,并可能考虑对它们进行缓存,因为密钥库检索可能很昂贵,具体取决于所使用的HSM和提供程序库。 这超出了这个问题的范围,或者至少是我要解释的问题的范围,所以我将在此处停止。 希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM