開發者工具 · SHA 雜湊計算器
SHA-1 碰撞解釋:什麼仍然安全,什麼必須遷移
· 為什麼它很重要
sha-256 密碼學 安全
掃描器標記 SHA-1,管理層詢問其緊急程度。這篇文章解釋了碰撞攻擊會破壞什麼、不會破壞什麼、SHA-1 仍然可以容忍的情況以及如何規劃遷移。
掃描器顯示 SHA-1 已損壞 - 但損壞的原因是什麼?決定遷移緊迫性的問題
網路安全掃描器在您的基礎架構上標記 SHA-1。管理層詢問事情有多緊急。答案完全取決於您使用 SHA-1 的目的,該問題揭示了您是否存在合規性問題、活躍的安全問題,或者僅僅是必須編目的遺留工件。 SHA-1 的密碼已被破壞-學術演示已證明存在衝突。但「損壞」的意思不同,取決於 SHA-1 在系統中扮演的角色。
加密雜湊在不同的上下文中具有不同的用途。有時它是防止意外損壞的校驗和。有時它是一種承諾,例如發布的下載校驗和,讓用戶驗證他們收到了發布者想要的檔案。有時它是簽名或憑證鏈的一部分,擁有足夠控制權的攻擊者可以產生兩個有意義的文件,它們共享相同的雜湊值,從而偽造身份驗證。 SHA-1 衝突的嚴重性主要取決於 SHA-1 在您的系統中所扮演的角色。
碰撞與原像 — 為什麼公開演示的攻擊目標是碰撞,以及這對現有雜湊意味著什麼
碰撞攻擊會產生兩個不同的輸入和相同的輸出。攻擊者找不到散列到預定值的訊息,這將是原像攻擊,並對於 SHA-1 來說仍然不可行。相反,衝突攻擊意味著攻擊者可以創建兩個哈希值相同的檔案。如果系統依賴哈希來證明兩件事是相同的,那麼衝突就會破壞該證明。攻擊者必須製作兩個輸入,這需要時間和計算,但結果是在哈希下出現相同的兩個不同的東西。
原像攻擊意味著攻擊者可以取得已發佈的 SHA-1 雜湊並找到一些與其相符的輸入。這不是 SHA-1 攻擊的工作原理。如果您有 SHA-1 摘要儲存庫並擔心檔案是否真正符合它們,則衝突攻擊不是威脅。威脅在於有權存取您的儲存庫的人是否可以將不同的檔案偽造為同一摘要。在大多數情況下,如果不控制雜湊過程本身,這也是不切實際的。具體的攻擊模型與演演算法一樣重要。
2017 示範 — 具有相同 SHA-1 的兩個不同檔案,定性描述,以及隨後選擇的前綴工作
來自 2017 的 SHattered 攻擊示範了實際衝突:兩個不同的 PDF 檔案具有相同的 SHA-1 摘要。研究人員仔細建立了這兩個檔案,在碰撞時將它們製作成有效的 PDF。這項工作需要大量的計算工作和專用硬體。重要的是它完全是可能的:證明使用 SHA-1 來確保安全性的抗碰撞性已經消失了。這次攻擊證明兩個語義不同的檔案可以共享一個摘要,這會破壞任何信任摘要作為身份證明的系統。
2020 中的攻擊稱為“SHA-1 is a Shambles”,它採取了下一步:選擇前綴衝突。這種變體意味著攻擊者可以取得兩個任意文件,將不同的後綴連接到每個文件,並產生衝突。這是針對簽名和憑證的危險攻擊。攻擊者不必從頭開始;它們可能會碰撞兩個有意義的、不同的檔案。這破壞了任何簽署 SHA-1 摘要的系統的安全模型。攻擊者可以產生兩個雜湊相同但意義不同的檔案。
其中 SHA-1 是不可接受的 — 簽名、證書以及攻擊者可以影響雙方的任何內容
這種區別很重要,因為 SHA-1 在某些角色中仍然可以容忍,而在其他角色中則絕對不可接受。在 Git 中,SHA-1 用作內容位址-特定檔案快照的名稱。 Git 不使用 SHA-1 進行驗證;這是一個命名方案。理論上,攻擊者可以使用相同的 ID 來計算兩個不同的儲存庫狀態,但這需要控制整個內容建立過程並在任何人注意到之前推送兩個版本。對大多數團隊來說,攻擊者控制等級並不是威脅模型。這就是為什麼 Git 有意過渡到 SHA-256 而不是將其視為緊急情況。
在 Web 下載驗證場景中,發布者在同一伺服器上發佈檔案及其 SHA-1 校驗和。破壞該伺服器的攻擊者可以控製檔案和校驗和。他們可以上傳檔案並發布其 SHA-1,並不需要衝突。如果校驗和發佈在其他地方(在安全 VPN 上、列印在簽署電子郵件中、發佈在不同的基礎架構中),那麼攻擊者必須發生衝突,而這是不可行的。校驗和的可信度取決於其通道。這就是為什麼下載驗證需要的不僅僅是哈希值。
風險較小的地方 - 非對抗性設定中的內容辨識以及 Git 分階段過渡到 SHA-256
對於簽章和證書,SHA-1 是站不住腳的。來自受信任根的憑證鏈。如果 CA 使用相同的 SHA-1 摘要簽署兩個不同的證書,則衝突攻擊會讓攻擊者偽造其中一個證書。這不是理論上的:針對中間 CA 的攻擊已被記錄。任何依賴 SHA-1 的簽章方案都有可能被擁有足夠資源的攻擊者偽造。每個主要瀏覽器和作業系統供應商都已棄用憑證中的 SHA-1 。新證書必須使用 SHA-256。平台供應商已經明確表態,因為威脅是真實且直接的。
美國標準機構 NIST 已規定了明確的時間表。從 2024 開始,SHA-1 不應用於任何新應用程式。自 2030 起,SHA-1 預計將完全從聯邦系統中退出。這不是一種含糊的反對;而是一種含糊的反對。這是對政府承包商的具體授權,也是向業界發出的信號。遵循 NIST 的時間表可確保您的系統領先於棄用曲線,而不是在截止日期後混亂不堪。
儲存庫證據支持 SHA-1 棄用,而不是未讀的 NIST 出版物或退休日期
儲存庫原始檔案將 SHA-1 作為遺留互通性和名稱證明了衝突工作,但它不包含標準體退役計畫。因此,本節透過將棄用視為工程庫存問題而不是引用未讀的發布號或合規日期來更正大綱。
對於策略控制環境,請諮詢管理該部署的機構並記錄所審查的確切檔案。這裡的產品證據支持更窄的操作:保持 SHA-1 可用於重現現有值,將其標記為不適合新的安全用途,並在周圍協議允許遷移的地方計算 SHA-256 替換。
工作範例 — 套用於舊版下載驗證頁面的遷移清單
從 SHA-1 的遷移路徑通常以清單開始:SHA-1 在哪裡使用?證書和簽名?立即優先。 Git 儲存庫和內容尋址?中等優先級,跟隨 Git 遷移節奏。已發布下載校驗和?取決於信任模型。用於重複資料刪除或歸檔的內部校驗和?優先順序較低,有更多時間規劃。庫存階段揭示了真實的表面區域,並幫助您根據實際風險而不是抽象的緊迫性來確定優先順序。
對於每個角色,遷移看起來都不同。證書立即升級到 SHA-256。 Git 儲存庫階段逐漸進入 SHA-256 引用,同時維護 SHA-1 以實現向後相容性。下載校驗和開始在 SHA-1 和 SHA-256 中發布,最終僅在 SHA-256 中發布。校驗和資料庫中的舊 SHA-1 摘要可以使用 ToolAcre SHA 雜湊計算器進行驗證,新條目應使用 SHA-256。該工具支援轉換的雙方,讓您驗證舊的雜湊值並建立新的雜湊值。
重點:SHA-1 用於比較,SHA-256 用於新工作 — ToolAcre SHA 雜湊計算器包括 SHA-1,因此可以檢查遺留摘要,而不是作為認可
對大多數組織而言,遷移並不是「明天關閉 SHA-1」。它是「了解它的用途,優先考慮安全關鍵角色,並製定多年計劃。」具有多年 SHA-1 提交的 Git 存儲庫應該逐漸過渡,並使用處理這兩種情況的工具。證書基礎設施應該已經遷移。在轉換視窗期間發布的校驗和應該是雙演演算法的。逐步遷移減少了重大變化,並使系統有時間適應新的現實。
ToolAcre SHA 雜湊計算器提供了該轉換的雙方。您可以驗證舊系統中現有的 SHA-1 摘要,以確認檔案與它們相符。您可以計算 SHA-256 雜湊值來開始發佈遷移路徑。該工具不會假裝 SHA-1 是安全的;它將其標記為已損壞並解釋原因。但它可以讓您在建造通往 SHA-256 的橋樑併計劃棄用時使用仍需要維護的遺留雜湊值。