RSA填充混淆攻擊
伺服器 A 根據請求生成簽名消息。您可以告訴伺服器 A 在簽名中使用哪種類型的 RSA 填充(RSASSA-PKCS1v1_5 或 RSASSA-PSS)。無論哪種方式,消息都將使用相同的私鑰進行簽名。簽名消息是一個 JSON 對象,您可以在其中提供一些欄位,但伺服器提供其他欄位。
伺服器 B 接受這些簽名消息並使用伺服器 A 的公鑰驗證簽名。您可以選擇伺服器 B 應該使用哪個填充方案來執行驗證(同樣,RSASSA-PKCS1v1_5 或 RSASSA-PSS)。
是否可以濫用在填充方案之間切換的能力來篡改消息?是否有可能導致伺服器 B 誤讀 JSON 對像中應該由伺服器 A 提供的欄位?
RSASSA-PSS 的安全證明假定私鑰僅用於 RSASSA-PSS 目的,違反了該假設,因此安全證明不成立(但只要 RSASSA-PKCS1v1_5 仍然可用,您就沒有安全性無論如何證明)。
同樣,RASSASA-PKCS1v1_5 在實踐中是安全的廣泛共識是在沒有考慮將相同密鑰用於其他目的的情況下制定的,因此您沒有廣泛共識。
也就是說,一些部署的系統出於不同的目的使用相同的 RSA 密鑰,只要填充方案非常不同,並且每個都是安全的(一個例子是歐洲數字行駛記錄儀,它使用相同的用於 RSASSA-PKCS1v1_5 簽名的 RSA 密鑰,以及使用 ISO/IEC 9796-2(方案 1)簽名填充的自定義身份驗證和密鑰協商協議;它被加蓋到 ITSEC 級別 E3,沒有出現攻擊)。這種情況類似於對 HMAC-MD5 和 HMAC-SHA1 使用相同的密鑰:這在理論上是不可取的,但唯一明顯的結果是兩個系統中較弱的一個限制了安全性。
我發現僅基於告訴 A 和 B 使用 RSASSA-PKCS1v1_5 或 RSASSA-PSS 的選項存在可行的**加密攻擊是不可能的,因為這些填充方案足夠不同。我發現更有可能的是規範或實現中出現了可利用的錯誤,並且由於該選項而增加的複雜性增加了這種風險。