Rsa

如何檢查 RSA 公鑰私鑰的強度

  • June 15, 2017

如何測量 RSA 公鑰私鑰對的強度。僅測量用於生成 N 的素數長度是否足夠?如何檢查用於生成 N 的素數 p,q 是否是從給定的 RSA 公鑰私鑰對數據中真正隨機選擇的?任何可靠的生成公鑰對和證書的方法,它使用良好的隨機性來選擇 p 和 q?

RSA 公鑰/私鑰對也不例外:無法通過查看密鑰的值來評估密鑰的強度;唯一的方法來評估它是弱的。沒有跡象表明它很弱並不能很好地表明它很強大。參數是以下內容的擴展:

洩露值的key是完全弱的,與洩露之前的值完全相同;因此,檢查密鑰的值並不能證明密鑰很強大,也不能提供可靠的指示。

擴展:通過強方法從公共加密強偽隨機數生成器的輸出生成的密鑰,其種子以未公開的方式選擇,是弱且無法區分(根據加密強的定義)與類似生成的密鑰,除了從真正的隨機種子,很強大。

甚至很難通過查看它的值來斷定 RSA 密鑰是弱的(除非在極端情況下,例如短的公共模數,或者除了一個主要因素之外的所有因素都可以壓縮成非常少量的資訊);特別是,測試得出的結論是 RSA 密鑰不符合傳統生成的 RSA 密鑰的預期標準並不能證明它是弱的:如果 RSA 密鑰在公共模數的高位的一半中具有規則模式,它仍然可以是強的 $ N=p,q $ , 或/和一些高階位 $ p $ 和 $ q $ ; 或私人指數 $ d $ 明顯小於 $ N $ .


那麼可以做些什麼呢?基本上,對密鑰生成過程進行充分審計。通過擴展,審計還應涵蓋密鑰如何保密,包括在使用期間。

RSA 密鑰生成的一個常見現代參考是NIST 的 FIPS 186-4第 5 節和包括附錄 B.3 在內的參考(部分起源於 ANS X9.31:1988);但這有局限性:

  • FIPS 186-4 正式只允許 1024 位、2048 位或 3072 位公共模數;前者已經過時,4096 位甚至更多位越來越普遍,原因至少可以理解。

  • FIP 186-4 需要公共指數 $ e>2^{16} $ 和具有兩個素數因子的公共模數,當有時性能考慮另有規定時(公鑰函式的速度最高可達約 8 倍 $ e=3 $ 比與 $ e=65537 $ ; 對於恆定模數大小,私鑰功能最多 $ k^2/4 $ 當有 $ k $ 因素,並且使用可用的硬體支持可能需要 $ k\ge3 $ ).

  • FIPS 186-4 沒有為帶有熵源和測試程序的隨機發生器提供處方;因此,故意削弱隨機數生成器使經過誠實認證的符合 FIPS 186-4 的實現有選擇性地受到知情人士的攻擊是完全可行的。

  • FIPS 186-4 有 5 種方法(B.3.2 到 B.3.6),選擇可能是一種負擔;它們根據幾個標準而變化

    • 使用任何 RNG(可能是非確定性的),或使用種子的比特數恰好是SP 800-57 第 1 部分規定的密鑰的正常安全強度的兩倍的 PRNG ;
    • 在生成的素數上使用或不使用輔助條件(被 $ p $ 這樣 $ p-1 $ 和 $ p+1 $ 每個都有一個大的輔助素因數);值得注意的是,對於 1024 位模數來說,這種複雜性是強制性的,因此對於需要向後兼容的一致性實現來說是不可避免的。這導致在智能卡等受限環境中實現真正有市場價值的 FIPS 186-4 實施變得非常困難。
    • 使用可能或可證明的素數,用於公共模數或/和輔助素數的因數。
  • FIPS 186-4 的精度是一把雙刃劍:這使得自動證明不符合項而不出現誤報成為可能;但這使得在不知道實現細節的情況下使用已知的操縱 RNG 來利用符合 FIPS 186-4 的實現變得可行。

  • FIPS 186-4 完全缺乏對側通道洩漏和故障攻擊的保護,包括在密鑰生成期間,甚至認為這在某些情況下可能很重要(例如,智能卡應該在現場安全地生成密鑰)。

一個不太常見的參考是ETSI TS 102 176-1 V2.0.0 (2007-11),它以模糊為代價來支付它的簡單性:

要生成密鑰對兩個素數, $ p $ 和 $ q $ , 是隨機獨立生成的,滿足以下要求:

  • 模數的位長 $ n;=;p,q; $ 必須至少為 MinModLen;它的長度也稱為 ModLen;
  • $ p $ 和 $ q $ 應該具有大致相同的長度,例如設置一個範圍,例如 $ 0,1 < | \log_2p - \log_2q | < 30 $ ;
  • 質數集,從中 $ p $ 和 $ q $ 被(隨機和獨立)選擇應足夠大且合理均勻分佈。

注意在第二個項目符號中使用了*eg ;*並且隨後提出的界限與 FIPS 186-4 的界限極為不同,根據 FIPS 186-4 生成的大約 1/3 的密鑰不滿足,並且經常導致私鑰無法移動到許多設計的實現中適用於 FIPS 186-4。

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