為什麼 PSS 會產生幾乎與模數一樣長的 EM 消息?
我試圖了解為 RSA 設計 PSS 方案背後的原因。為什麼 EM 消息的長度(即簽名前 PSS 轉換的結果)大約等於模數的大小?為什麼 PSS 不使用對雜湊函式(例如 SHA-256)的最後一次呼叫,以便在執行取冪之前減小結果元素的大小?
為什麼 PSS 不使用對雜湊函式(例如 SHA-256)的最後一次呼叫,以便在執行取冪之前減小結果元素的大小?
有一個根本原因:不再可能驗證簽名,因為散列是不可逆的,並且會阻止 PSS 驗證工作。本答案的目前部分專門處理該問題。
在正常的 RSASSA-PSS 中,簽名 $ M $ 使用隨機 $ \mathit{salt} $ 生成填充消息 $ \mathit{EM} $ 如下
然後將其應用於 $ \mathit{EM} $ RSA 私鑰函式 $ x\mapsto x^d\bmod N $ ,產生簽名(為簡化起見,我忽略了八位字節字元串和整數之間的轉換)。
驗證程序是
- 應用 RSA 公鑰功能 $ x\mapsto x^e\bmod N $ 到簽名,產生 $ \mathit{EM} $ .
- 檢查幾位 $ \mathit{EM} $ 在左邊(不在圖中),右邊是bc八位位組。
- 提煉 $ H $ 從 $ \mathit{EM} $ .
- 將 MGF 應用於 $ H $ .
- 通過反轉標有粉紅點的兩個箭頭,計算 $ \mathit{DB} $ .
- 查看 $ \text{padding}_2 $ 是全零 $ \mathit{DB} $
- 提煉 $ \mathit{salt} $ 從 $ \mathit{DB} $ .
- 計算所謂消息的雜湊值 $ M $ (預計匹配真實 $ M $ ),產生所謂的 $ \mathit{mHash} $ .
- 形成所謂的 $ M’ $ 從所謂的 $ \mathit{mHash} $ 並提取 $ \mathit{salt} $ .
- 雜湊聲稱 $ M’ $ ,產生所謂的 $ H $ .
- 檢查被指控的 $ H $ 等於 $ H $ 摘自 $ \mathit{EM} $ .
如果 $ \mathit{EM} $ 已按照問題中的建議進行了進一步散列,無法進行驗證程序,因為驗證者最初不知道 $ \mathit{salt} $ ,因此無法計算 $ \mathit{EM} $ 在向前的方向然後散列它!
這種推理也適用於散列去隨機化 RSASSA-PSS,因為驗證者不持有簽名者用於確定性生成的私鑰(或其他秘密材料) $ \mathit{salt} $ .
為什麼 PSS 會產生幾乎與模數一樣長的 EM 消息?
表格的簽名 $ (\operatorname{SHA-256}(\mathit{EM})^d\bmod N,)\mathbin|salt $ (如評論中所建議)將是可驗證的。然而,小寬度 $ \operatorname{SHA-256} $ 與公共模數相比 $ N $ 會導致安全問題:
- 該方案至少對於某些常見參數是不安全的(如小型 RSA 公共指數所示) $ e $ 在另一個答案中,參考雨披的攻擊)
- 正如前面的事實所證明的(但沒有解釋),安全性不會明顯地簡化為 RSA 問題。根本問題本質上是RSA問題是有效地反轉公鑰函式 $ x\mapsto x^e\bmod N $ 對於隨機 $ x $ 和 $ 0\le x<N $ ,但使用 256 位填充打破簽名方案只需要反轉公鑰函式 $ x\mapsto x^e\bmod N $ 對於隨機 $ x $ 和 $ 0\le x<N $ 和 $ x^e\bmod N,<2^{256} $ . 最後一個不等式減少了 $ x $ 一個很大的因素(對於 $ \log_2(N)\approx2048 $ , 候選集的大小 $ x $ 減少了一個因素 $ 2^{\approx1792} $ ).
和 $ \mathit{salt} $ 由簽名者隨機選擇,或者作為消息的確定性秘密函式,我認為沒有任何攻擊適用於大 $ e $ . 然而,如果 $ \mathit{salt} $ 是固定的或消息的公共功能(在這種情況下 $ \mathit{salt} $ 不需要附加),在選擇消息攻擊下存在存在偽造(即允許通過向簽名預言請求其他消息的簽名來獲得消息/簽名對)。該攻擊本質上是 Y. Desmedt 和 AM Odlyzko 的簽名版本:對 RSA 密碼系統和一些離散對數方案的選擇文本攻擊,在Crypto 1985 的程序中。Jean-Sebastien Coron、David Naccache、Mehdi Tibouchi 和 Ralf-Philipp Weinmann:在Crypto 2009和Journal of Cryptology, 2016的程序中ISO/IEC 9796-2 和 EMV 簽名的實用密碼分析的第 3 節中進行了現代重新闡述。