Collision-Resistance

“破碎”實際上是否顯示 SHA-1 簽名的證書是“不安全的”?

  • July 30, 2019

注意:我不提倡任何人繼續使用 SHA1 簽名證書:就安全性而言,它們已經失效,不應再使用。我只是想澄清我對 Shattered 的理論含義的理解,因為它們可能適用於此類證書。

由最近這個問題提示:在 Google 的碰撞攻擊之後,RSA-SHA1 簽名仍然安全嗎?,壓倒性的回答是“”,我想問一下Shattered結果實際上在多大程度上表明 SHA1 簽名的證書“處於危險之中”?

我認為,Shattered 結果存在本身並不令人驚訝:每個人都知道理論上你可以創建兩個雜湊到相同值的字節流。Google的成就(我不想淡化)是**(a)他們聚集了足夠的資源來實際做到這一點,並且(b)**他們這樣做的同時將衝突文件保持為有效的 PDF(也與原始文件的格式相匹配)非常接近,包括背景顏色的“明顯”差異)。

作為“SHAttered”是否僅適用於 PDF 文件的公認答案解釋說,Google擁有有效“自由形式”數據塊的“奢侈品”,他們可以隨意更改以實現碰撞。據我了解,嵌入在 JPG 數據中的“碰撞塊”(本身嵌入在 PDF 中)對圖像本身和 PDF 都沒有(可見)影響。因此(為了簡化事情),他們所要做的“所有”就是改變這個塊,直到發生碰撞1

但是,在 SHA1 簽名證書的情況下,沒有什麼能像注入不受約束的數據一樣自由:簽名的數據量要小得多;而且很少有可以隨意更改而不會產生任何後果的東西——你可能會發現衝突,但結果很可能不能用作證書。

所以:說雖然 Shattered 是一個重大事件是否正確,但它本身並不表明創建可用的、碰撞的、SHA1 簽名證書的機會增加了,事實上,這樣做的機會仍然存在小的?


1根據Maarten Bodewes的部分回答,我意識到 Google 的攻擊並非完全隨機:“魔法”在於他們對攻擊的剪裁和“建構此類攻擊的學術水平知識”。雖然定位對於能夠找到衝突很重要,但在不影響文件有效性的情況下將任意數據放入文件的能力也很重要。我要問的是後一個方面,同樣的自由是否延伸到 X.509 證書。

是的,SHA1 簽名的證書是不安全的。

破碎的論文很有啟發性。從介紹:

MD-SHA 系列散列函式是最著名的散列函式係列,其中包括已廣泛使用的 MD5、SHA-1 和 SHA-2。這個家族最初於 1990 年開始使用 MD4,但由於嚴重的安全漏洞,很快在 1992 年被 MD5 取代。儘管早期已知其底層壓縮功能存在弱點,但 MD5 已在軟體行業廣泛部署了十多年。2004 年初,一個試圖通過蠻力發現碰撞的項目 MD5CRK 被停止,當時由王曉雲領導的一組研究人員展示了 MD5 中的碰撞,該碰撞是由開創性的密碼分析攻擊發現的,該攻擊開創了新技術。在一項重大發展中,史蒂文斯等人。後來證明了一種更強大的攻擊類型(所謂的選擇前綴碰撞攻擊)) 可以針對 MD5 執行。這最終導致了一個流氓證書頒發機構的偽造,該證書在 2008 年原則上完全破壞了 HTTPS 安全性。儘管如此,即使在 2017 年,在簽名中棄用 MD5 仍然存在問題。

讓我在這裡畫出時間線:

  1. MD4 已發布。
  2. MD5 已發布。
  3. SHA-1 已發布。Hans Dobbertin在幾秒鐘內報告了 MD4 中的衝突
  4. Hans Dobbertin 報告了 MD5 壓縮函式中的衝突密碼學家建議不要使用 MD5。 SHA-1 可用作完整的替代方案。
  5. NIST 在 FIPS 180-2 中發布 SHA-2。
  6. Xiaoyun Wang 的團隊在幾個小時內報告了 MD5 中的碰撞在這一點上使用 MD5 純粹是愚蠢的。 SHA-2 可用作完整的替代方案。
  7. 王曉雲團隊報導269 $ 2^{69} $ -對 SHA-1 的成本碰撞攻擊,後來降低到263 $ 2^{63} $ . 密碼學家建議不要使用 SHA-1,甚至不遺餘力地告訴工程師使用 SHA-2 而不是 MD5 或 SHA-1。密碼學家意識到那裡有純粹的白痴,並試圖通過製作衝突的 x.509 證書對來說服他們停止使用 MD5 ,儘管它們隻共享相同的名稱。
  8. 史蒂文斯*等人。*展示對 MD5的選擇前綴衝突攻擊,從而可能偽造具有不同名稱的證書。
  9. 密碼學家意識到,即使是認證機構的運營商也是徹頭徹尾的白痴,並試圖通過在真實 CA 上實時偽造 x.509 證書來說服他們停止使用 MD5 。一些 HTTPS CA 運營商勉強承認可能存在問題。
  10. CA/瀏覽器論壇寫下了基本要求的初稿,這樣網路瀏覽器就可以正式確定淘汰不稱職的 HTTPS CA 的理由。
  11. BLAKE2 基於 SHA-3 入圍者發布。據記錄,美國和以色列政府使用獨立開發的對 MD5 的選擇前綴碰撞攻擊來偽造程式碼簽名證書,該攻擊是在國際工業破壞攻擊伊朗核計劃事件中部署的 Flame 惡意軟體。這種攻擊大概是2007 年之前開發的——否則,為什麼不使用已發布的攻擊呢?
  12. CAB 論壇投票決定明年停止使用 SHA-1。
  13. HTTPS CA 抱怨並要求將 SHA-1 的日落時間推遲一年。NIST 在 FIPS 202 中發布 SHA-3。
  14. HTTPS CA 抱怨並要求將 SHA-1 的日落時間推遲一年。CAB 論壇投票要求隨機 ≥64 位序列號,這是自 MD5 證書偽造在實踐中被證明以來八年來對**證書(但不是一般的簽名)的選擇前綴衝突攻擊的第一次緩解。
  15. 史蒂文斯*等人。*報告 SHA-1 中的衝突。 在這一點上使用 SHA-1 純粹是愚蠢的。 SHA-2、SHA-3 和 BLAKE2 可作為完整的替代品,經過多年的分析,具有很高的可信度。
  16. [更新,2019-05-10:Gaëtan Leurent 和 Thomas Peyrin 報告了 SHA-1中的選擇前綴衝突,其成本僅為 SHAttered 的幾倍,這是朝著證書偽造邁出的重要一步。]

SHAttered 論文中展示的技術是相同前綴衝突攻擊。具體來說,攻擊需要一個前綴p $ p $ 並找到兩對消息塊(米0,米1)≠(米′0,米′1) $ (m_0, m_1) \ne (m’_0, m’_1) $ 這樣小號H一個-1(p‖米0‖米1‖s)=小號H一個-1(p‖米′0‖米′1‖s)$$ \operatorname{SHA-1}(p \mathbin\Vert m_0 \mathbin\Vert m_1 \mathbin\Vert s) = \operatorname{SHA-1}(p \mathbin\Vert m’_0 \mathbin\Vert m’_1 \mathbin\Vert s) $$對於任何後綴s $ s $ . 相比之下,MD5 證書偽造使用了選擇前綴衝突攻擊,它需要兩個前綴p≠p′ $ p \ne p’ $ 並找到中間部分米≠米′ $ m \ne m’ $ 這樣對於任何後綴s $ s $ ,MD5(p‖米‖s)=MD5(p′‖米′‖s).$$ \operatorname{MD5}(p \mathbin\Vert m \mathbin\Vert s) = \operatorname{MD5}(p’ \mathbin\Vert m’ \mathbin\Vert s). $$

這種針對 SHA-1 的特定攻擊可以用來偽造 x.509 證書嗎?可能不是。有人能找到對 SHA-1 的選擇前綴衝突攻擊嗎?從第一次碰撞到對 MD5 的相同前綴碰撞攻擊花了一年時間。MD5 從相同前綴到選擇前綴衝突攻擊又花了兩年時間。我們已經對 SHA-1 進行了相同前綴衝突攻擊。 我希望在人們聽取停止使用 SHA-1 的建議之前**,我們不需要在實踐中證明另一個 CA 偽造。** [2019 年 5 月 10 日更新:我們現在對 SHA-1進行選擇前綴衝突攻擊,其成本僅為 SHAttered 相同前綴攻擊的幾倍。]

有一些緩解措施,例如隨機序列號,因此可能對於公共 HTTPS 證書——CA/瀏覽器論壇基線要求 1.5.9 §7.1必須對 2016 年 9 月 30 日之後頒發的所有證書使用隨機≥64 位序列號——它是足以使 SHA-1 成為eTCR,增強型目標碰撞抗性,這是一個比抗碰撞性弱得多的屬性。

當然,CAB 論壇的要求也(第 7.1.3 節,第 44 頁)禁止從 2016 年 1 月 1 日開始使用 SHA-1 簽署的新證書——這是明智的!是否所有 HTTPS CA 都遵守該規則?我希望如此,但如果他們不尊重它,也許他們也不會尊重隨機序列號的規則。

但是還有許多其他類型的證書,例如為 Flame 偽造的程式碼簽名證書。即使您將問題限制在 x.509 證書上,例如openssl ca命令行工具(許多人使用它來建構私有 CA)也建議並使其易於使用順序序列號,並且不會宣傳內置的方法隨機生成序列號。

PS 無論你對它們提出多少警告,這樣的問題都會讓密碼學家感到沮喪,因為它們為自負的黑客新聞讀者提供了素材,讓他們無視特定個體科學結果的所有背景,而是得出結論認為特定個體科學結果確實如此不要在他們的額頭上紋身,因此還沒有必要更換 SHA-1。

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