Different types of keystore in Java -- PKCS11

  Pi Ke        2015-01-08 00:39:12       25,104        2          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

PKCS11 密鑰庫設計用於硬體安全模組(HSM)。它是一個與 HSM 通訊的介面。它本身並不實際儲存任何金鑰,而是提供一組類別來與底層 HSM 通訊。實際的金鑰和憑證儲存在 HSM 上。

儲存金鑰和材料的原因是為了確保安全性和效率。由於金鑰位於 HSM 上,因此它們不易被竊取。所有加密/解密操作也在 HSM 上執行,這提高了處理速度。它們經常被用於需要高速和額外安全的應用程式。

有不同的硬體設備可用於儲存金鑰和憑證,例如 nCipher 和來自 SafeNet 的 Luna SA。它們對 Java PKCS11 密鑰庫的設計提出了很大的挑戰,因為它們需要與具有不同結構的不同硬體設備通訊。

通常,要與硬體設備通訊,需要一些配置,並且還需要建立一個特殊的 PKCS11 提供者並將其新增到提供者列表中,建立提供者的過程可能涉及登入硬體設備。建立提供者後,即可載入硬體密鑰庫。

要建立 PKCS11 提供者,您可以將提供者靜態新增到 java.security 檔案中,或者使用 Java 中的 Provider 類別動態新增。

要靜態建立提供者,請在位於 $JRE_HOME/lib/security/java.security 的 java.security 檔案中新增以下行。

security.provider.N=sun.security.pkcs11.SunPKCS11 /opt/bar/cfg/pkcs11.cfg

這裡 N 表示您要將提供者放在其中的索引。pkcs11.cfg 是配置文件,它定義了 Java PKCS11 介面可以從 HSM 獲取或放入 HSM 的內容。有關詳細的配置文件,請諮詢 HSM 供應商。

要動態建立提供者,請在建立硬體密鑰庫實例之前,在您的應用程式中新增以下程式碼。

String configName = "/opt/bar/cfg/pkcs11.cfg";
Provider p = new sun.security.pkcs11.SunPKCS11(configName);
Security.addProvider(p);

有關建立 PKCS11 提供者的詳細資訊,請閱讀 Oracle 文件

提供者準備就緒後。開始建立 KeyStore 實例。由於它是硬體密鑰庫,因此在呼叫 KeyStore.load() 時,輸入流應為 null。

以下是建立和載入硬體密鑰庫的程式碼片段:

KeyStore ks = KeyStore.getInstance("PKCS11", p); //p 是上面建立的提供者
ks.load(null, password); 

載入密鑰庫後,您可以開始在 HSM 上建立金鑰(秘密金鑰和私鑰)和憑證。建立它們的方法細節與 PKCS12 的方法類似。因此,請參考 PKCS12 密鑰庫 了解詳情。

一個例外是,不需要呼叫 KeyStore.store() 來儲存密鑰庫,當呼叫 KeyStore.setKeyEntry() 或其他 KeyStore.setXXX() 時,密鑰庫將自動儲存。

JAVA  KEYSTORE  PKCS11  HSM 

       

  RELATED


  2 COMMENTS


lintao [Reply]@ 2015-01-15 01:36:37

It seems this is a typo. :)

One exception is that there is no need to call KeyStore.store() to save the keystore, the keystore will automatically save when KeyStore.setKeyEntry() is invoked or other KeyStore.setXXX(0 is invoked.

 

Pi Ke [Reply]@ 2015-01-15 06:03:29

Thank you very much. Have corrected it.



  RANDOM FUN

Usain Bolt : Oh no!

Usain Bolt won the 200m short run gold medal in Beijing.  When he wlked off the track, he was suddenly hit by a camera man. Oh, no. This should be seen on a football court only.