簡體   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