Keys

在不同製造商的 HSM 之間交換密鑰材料

  • April 29, 2021

將來,我們可能會建立一個系統,通過使用 HSM 來保護大量對稱(設備)密鑰(幾百萬)。因此,密鑰本身將儲存在 HSM 之外,但它們將通過駐留在 HSM 中的密鑰加密儲存。

我們將使用可能來自不同製造商的 HSM 設置兩個這樣的系統。

一個要求是必須可以將密鑰從一個系統交換到另一個系統。

那麼,是否有一種安全且標準化的方式來在不同製造商的 HSM 之間交換密鑰材料?如果是這樣,哪些標準適用於此,它們通常由 HSM 製造商實施嗎?

不,沒有標準化的方式在 HSM 之間交換密鑰材料(通常甚至在同一製造商的 HSM 之間也沒有,儘管製造商可能提供至少在同一模型中工作的備份/恢復或複制功能)。就 HSM 而言,世界分為兩部分:內部和外部。外面的東西是不可信的。從 HSM1 的角度來看,HSM2 在外部,因此不受信任,因此 HSM1 不會將其密鑰交給 HSM2。

假設您保留一份打包的應用程序密鑰(加上它們相同的備份),則兩個 HSM 都需要具有相同的打包密鑰。在 HSM 外部創建該密鑰並將其導入到兩者中,或者在一個 HSM 中創建該密鑰,將其導出,然後將其導入另一個 HSM。導入後,確保將關鍵屬性切換為不可導出。

即使使用單個 HSM,您也需要在 HSM 之外擁有一份包裝密鑰的副本以進行備份。該副本(或更準確地說是所有備份副本)當然必須安全儲存。根據您的安全要求,這可能是儲存在保險箱中的一張紙,或者是幾名公司官員負責保護他們自己的股份的關鍵股份,而 N 中的 K 股是重建密鑰所必需的。據我所知,沒有創建這些密鑰共享的標準方法,但一個 HSM 可能將其作為專有功能。

當您說“將密鑰從一個系統交換到另一個系統”時,我不確定 100%。我就是這樣做的。

Assuming You have two HSM's (Thales-A, Safenet-B)
1. Create a ZMK at one of HSM and import it in other HSM's using console commands. Once you do this you will have clear ZMK ,"ZMK encrypted under A's LMK" call it ZMK_A and "ZMK encrypted under B's LMK" call it ZMK_B.

2. Whenever you want to exchange a key "TPK" from A to B you can simply export it using host command and ZMK_A as master key for export to get TPK_ZMK, you can import TPK_ZMK to TPK_LMK using Host command with ZMK_B as master key.

3. You can follow same process vice versa.

唯一的問題是您不能使用主機命令導入和導出 ZMK 本身,您必須在 hsm 控制台上進行(步驟 1)。

引用自:https://crypto.stackexchange.com/questions/85693