研究人員如何在硬體保管模組內偽造 RSA 簽章 —— 對密碼學與託管的影響
目錄
你可能想知道的事
1. 攻擊者能否在不擷取私鑰的情況下,從硬體安全模組 (HSM) 偽造簽章?
2. 在 HSM 內成功偽造 RSA 簽章對現代密碼學實務與託管解決方案意味著什麼?
主要議題
加州大學聖地牙哥分校 (UC San Diego) 與法國 INRIA 的研究人員最近展示了一種實際方法,可以在不從裝置中擷取私鑰的情況下偽造由硬體安全模組 (HSM) 產生的 RSA 簽章。該工作以預印本形式發表在 IACR Cryptology ePrint Archive 上,顯示在特定條件下 HSM 能充當一個oracle:攻擊者可以提交大量精心選擇的訊息要求簽名,然後分析輸出以構造其他訊息的有效簽章。這一結果值得注意,因為它針對的是簽名介面而非金鑰儲存機制,強調保護金鑰是必要的但並不總能充分確保簽章安全。
具體來說,實驗在類似 HSM 的環境中使用了一把 1,024 位元的 RSA 金鑰。作者關閉了模組的 FIPS 模式,使裝置在攻擊者選擇的輸入上產生原始 RSA 簽章(即簽署未格式化的數字)。他們隨後請求了大約 2^32 次簽名操作 —— 約 40 億次簽名 —— 並使用大量離線計算(論文報告約為 1,380 個 CPU 核心年)來處理這些回應並為目標訊息導出偽造簽章。重要的是,研究人員並未分解 RSA 模數或回復私指數;相反,他們利用未加填充的 RSA 簽名操作中的結構,結合大量的 oracle 查詢與大量計算資源。
有助於釐清的是什麼是 RSA 簽章以及為何此攻擊不會自動轉譯到其他簽名演算法。RSA 簽章是通過對經過格式化的訊息代表值進行模冪運算產生:簽署者計算 s = m^d mod N,其中 (N, e) 為公鑰,d 為私指數。現代部署幾乎總是在該次方運算之前施加填充與格式化步驟(例如 PKCS#1 v1.5 或 PSS)。此填充步驟能抵禦各類可變性及基於 oracle 的攻擊,因為簽署者不會在攻擊者選擇的輸入上暴露原始、具結構性的數學運算。UCSD/INRIA 的結果針對的是原始 RSA 簽名;作者指出標準的加填充簽名方法不會產生相同可被利用的 oracle 行為。因此,論文作者與其他密碼學家認為對正確配置的現代 RSA 系統而言,立即的運作風險偏低。
這一關鍵見解顯著影響了對 RSA 實際弱點來源的理解:弱點不僅可能來自因式分解,還可能來自簽名介面的暴露與配置方式。 即使私鑰從未離開抗篡改裝置,允許未加填充或特殊格式操作的暴露簽名 oracle 仍可能讓攻擊者學到足夠的簽名函數資訊以產生偽造簽章。簡言之,安全邊界包含 API/功能選擇與密碼格式,而不僅僅是金鑰材質的保護。
受影響的是誰?簡短的回答是:主要是允許未加填充或以其他方式具可變性的 RSA 簽名的系統。大多數現代 RSA 部署使用能防止此類 oracle 的填充方案。因此,主流服務、TLS 堆疊與正確實作 PKCS#1 或 PSS 的協定不太可能立即受到影響。儘管如此,某些使用未加填充 RSA 的專門用途 —— 例如某些盲簽章方案、遺留系統、研究測試平臺或允許在非 FIPS 模式下執行原始操作的 HSM 配置 —— 可能會暴露風險。盲簽章是合法的密碼學工具,曾在 Privacy Pass 與歷史性的電子現金設計中使用,此類方案刻意在簽署者不知訊息內容的情況下產生簽章;這類方案設計上可能會呈現相似的 oracle 行為,因此值得謹慎分析。
在操作層面,該攻擊需要龐大的資源:數十億次的簽名查詢與非常龐大的離線計算。這一道障礙意味著該演示是可行性的概念驗證,而非對正確配置生產系統的立即低成本威脅。儘管如此,此演示對託管與金鑰保護實務構成壓力測試,因為機構託管者常依賴 HSM 或其他抗篡改模組來確保私鑰「從未離開裝置」。這一結果強調託管保證必須與正確的密碼學使用與強化配置配套。
同時,也有必要將 RSA 特定結果與其他簽名族群區分開來。像 Bitcoin 與 Ethereum 等熱門區塊鏈系統使用的是橢圓曲線簽名方案(Bitcoin:ECDSA;許多鏈也支援或正轉向 Schnorr),這些並非本 RSA 論文的目標。底層的數學弱點與 UCSD/INRIA 團隊所利用的 oracle 類型是 RSA 的算術特性與省略安全填充之配置所專有的。因此,雖然該論文提出了關於介面設計與從傳統基元遷移的一般性教訓,但它並非對基於橢圓曲線之交易簽章的直接破解。
最後,這項研究促進了更廣泛的論述,呼籲從傳統公鑰系統遷移到能抵禦實作層面 oracle 與未來威脅(例如量子電腦)的設計。雖然像「RSA 被破解了」這類聳動標題在歷史上常見且常具誤導性,但此項工作具意義:當某些防護缺失時,它揭露了對已部署基元的現實攻擊向量。作者將此視為支持在後量子過渡期間遠離 RSA 的經典證據,而非表明正確加填充的 RSA 是輕易不安全的。
關鍵見解表
| 面向 | 說明 |
|---|---|
| 關鍵事實 1 | 研究人員在不擷取私鑰的情況下,通過大約 2^32 次簽名查詢和大量離線計算(≈1,380 CPU 核心年)偽造了來自 HSM 的 RSA 簽章。 |
| 關鍵事實 2 | 該攻擊針對原始、未加填充的 RSA 簽名;標準的加填充方案(PKCS#1、PSS)與大多數現代部署可緩解此特定 oracle。 |
後續...
展望未來,有幾個密碼學實務與技術領域值得關注:在生產環境中謹慎配置 HSM 與簽名介面以禁止原始/未加填充操作、對盲簽章 oracle 與任何刻意簽署隱藏訊息的功能進行嚴格審計,以及加速向後量子演算法的遷移以降低長期系統性風險。機構還應考慮操作性防護,例如對簽名請求施加速率限制、對異常簽名量進行異常偵測,以及嚴格區分測試/除錯模式與生產 HSM 配置。
在研究方面,應更深入研究不同簽名族群的介面層 oracle 風險 —— 包括橢圓曲線方案與新興的後量子原語 —— 以增進我們對實作選擇如何影響安全性的理解。投資於針對密碼學 API 的形式驗證工具與持續測試 HSM 行為的工具,可降低寬鬆功能意外被暴露的機率。
最終,雖然這項 RSA 演示對正確配置的系統並非立即危機,但它實際提醒我們密碼學安全是一個生態系統屬性:安全的演算法、正確的填充與格式化、良好配置的硬體與審慎的操作控制都同等重要。強調這些要點並推進後量子準備與介面安全,是社群接下來的合理步驟。 這些努力將有助於確保即便金鑰從未離開裝置,金鑰託管仍然是密碼學堆疊中有意義且值得信賴的一環。
最後編輯時間:2026/9/28
