Rsa

RSA 密鑰對生成和 FIPS 140-2、186-4

  • March 15, 2015

我需要安全地生成 RSA 密鑰對,並且我需要訪問私有指數才能進一步處理它。

FIPS 140-2 和 FIPS 186-4 與 RSA 密鑰對生成有什麼區別?

如果我理解它在符合 FIPS 140-2 的環境中正確生成 RSA 密鑰對,將永遠不會顯示 RSA 密鑰對的私有部分,因為它受加密模組的保護。

FIPS 186-4 是關於驗證 RSA 密鑰對是否正確生成並滿足關於素數和指數的要求。

因此,如果我想安全地生成 RSA 密鑰對並且我想以明文形式訪問其私有部分,我需要使用符合 FIPS 186-4 的生成和驗證。

我對麼?我對這些理解正確嗎?

FIPS 140-2 指定適用於 RSA(和其他)密鑰生成環境的條件,並參考 FIPS 186-4 生成本身。

一些最新的 Java Card 智能卡可以在內部生成符合 FIPS 186-4 的 RSA-2048 密鑰對,並使用安全策略和 FIPS 140-2 3 級證書來證明這一點。這是在撰寫本文時排在首位的。在智能卡的 Java 卡虛擬機中執行的一個簡單的 Java 卡小程序可以生成這樣的 RSA 密鑰,並導出私鑰,如果你想要的話。此類密鑰適用於 FIPS 批准的算法(證書# 1506-1507),並根據 FIPS 186-4 生成,由 FIPS 140-2 3 級證書證明。這不足以假裝密鑰是在符合 FIPS 140-2 的環境中生成的,因為安全策略提到

  • 該模組是 FIPS 140-2 定義下的有限操作環境”;
  • 因此,FIPS 140-2 3 級證書不涵蓋操作環境”;
  • 載入到此模組中的韌體 (..) 需要單獨的 FIPS 140-2 驗證”,我的意思是這句話適用於 Java Card 小程序。

然而,一個(不那麼簡單的)Java Card 小程序可以“安全地生成 RSA 密鑰對(帶有)訪問私有指數以便進一步處理它”(如所要求的那樣),對於一些過程的定義,例如在主公共下加密私鑰密鑰(密鑰託管的一種形式)。我不排除可以獲得該小程序的 FIPS 140-2 驗證,這樣就可以正確判斷 RSA 密鑰對是在經過 FIPS 140-2 驗證的環境中生成的。

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