開發者工具 · SHA 雜湊計算器
碰撞、原像和第二原像:三個哈希安全目標
· 背景
sha-256 密碼學 安全
一份公告稱,演演算法存在衝突問題,您需要知道您的使用是否受到影響。本文定義了三個電阻屬性,顯示了哪些用例依賴哪些用例,並將它們應用於 SHA-1。
我的使用受到影響嗎? ——諮詢很少直接回答這個問題
收到通知表示 SHA-1 有衝突問題,因此您的系統必須升級。但是,如果您的系統僅將 SHA-1 用於金鑰派生,而不用於驗證訊息怎麼辦?如果 SHA-1 僅用於刪除重複的相同檔案,而不是證明真實性怎麼辦?問題「我的系統是否受到影響?」如果不了解雜湊函數的哪些屬性實際上被破壞以及您的用例依賴哪些屬性,則無法回答。
雜湊函數提供多種安全屬性:原像抗性、第二原像抗性和碰撞抗性。一個屬性的破壞不會破壞另一個屬性,並某些用例僅依賴保持安全的屬性。 ToolAcre SHA 雜湊計算器顯示演演算法及其摘要寬度以及確定每個安全目標範圍的屬性。了解這些屬性是確定通報是否影響您的系統的第一步。
原像抵抗-給定一個散列,你無法找到產生它的輸入
原像抵抗意味著給定一個摘要,應該不可能找到產生該摘要的輸入。您收到密碼的雜湊值並想要猜測密碼;這是原像攻擊。第二個原像抵抗意味著給定一條訊息及其散列,應該不可能找到具有相同散列的不同訊息。您有一個下載的檔案及其 SHA-256 校驗和;攻擊者想要將該檔案與具有相同雜湊值的不同檔案交換;這是第二次原像攻擊。
抗衝突意味著不可能找到具有相同雜湊值的任意兩個不同訊息。您正在簽署一份文件;攻擊者想要建立具有相同簽名的不同文件;這是碰撞攻擊。這三種場景需要攻擊者付出不同的工作量,而且安全範圍也不同。原像抗性是最強的屬性,而且很少被打破。給定一個摘要,找到原像需要在可能的輸入空間中進行強力搜尋。摘要寬度會影響通用搜尋空間,但本文不會在未推導操作計數並定義攻擊模型的情況下說明操作計數。
第二原像抵抗 - 給定一個輸入,您無法找到具有相同哈希值的不同輸入
第二原像抵抗力是第二強的,而且它也很少被孤立地打破。給定一条消息及其哈希值,找到具有相同哈希值的不同消息也需要摘要大小的指數工作。第二原像和碰撞搜索為攻击者提供了不同的選擇,因此它们的通用邊界不可互換。在這裡,定性的區別就足夠了;如果沒有內聯推導,則不會斷言數值界限。如果存在不需要强力的結構攻击,演算法就會失去第二原像抵抗力。
抗碰撞性是三種表現中最弱的一種,也是最容易斷裂或彎曲的一種。與其他兩個目標不同,碰撞搜尋允許攻擊者選擇兩個輸入,因此它具有不同的通用界限。本文有意省略了生日相關的資料和硬體時間表,因為它們的推導和採購不在經過驗證的材料之內。
抗碰撞性 — 您找不到任何兩個具有相同雜湊值的輸入,以及為什麼這是三個輸入中最弱的一個
將三個安全屬性對應到使用案例顯示每個任務需要哪個屬性。重複資料刪除依賴這樣的假設:如果兩個檔案具有相同的雜湊值,則它們是同一個檔案。這需要抗衝突:如果可能發生衝突,攻擊者可以使用相同的雜湊創建兩個不同的檔案並破壞重複資料刪除不變量。然而,這是一個較弱的要求,因為即使理論上可能發生,實際的碰撞也極為罕見。
數位簽章需要強式形式的抗衝突性。當簽署者為檔案的雜湊產生簽名,並驗證者隨後檢查該簽名時,兩者必須檢查相同的雜湊。如果衝突很容易,攻擊者可以透過發現與簽署檔案的衝突來偽造不同檔案的簽名。這是促使證書從 SHA-1 升級到 SHA-256 的攻擊。如果雜湊值發生衝突,CA 簽署的憑證和具有相同簽章的偽造憑證都會經過驗證。
碰撞抵抗與原像目標不同;沒有推導就不會出現生日限制的數字
內容尋址儲存使用雜湊作為查找鍵。如果檔案儲存在由其雜湊確定的位置,並稍後使用相同的雜湊進行檢索,則這兩個操作必須到達同一個檔案。如果有主動攻擊者,則需要抗碰撞性,但如果攻擊者是被動攻擊者,則只需要第二原像抗性。被動攻擊者無法製造碰撞;他們只能觀察合法檔案是否偶然發生衝突。
下載驗證使用校驗和來確認從 Internet 擷取的檔案未損壞。校驗和通常與可信賴來源的檔案一起發布。修改下載檔案的攻擊者在無法存取受信任來源的情況下無法更新校驗和。此用例需要第二個原像抵抗:給定原始檔案及其校驗和,攻擊者不應該能夠產生具有相同校驗和的不同檔案。儘管碰撞破裂,SHA-1 第二原像抵抗仍然堅固。
將完整性和命名用途映射到所需的屬性;普通雜湊不是密碼存儲
密碼儲存是雜湊函數不是正確工具的一種用例。如果密碼儲存為 SHA-256 雜湊值,且雜湊資料庫洩露,則攻擊者可以執行字典攻擊:雜湊數百萬個猜測並檢查是否有符合儲存的雜湊值。攻擊者對於每個密碼僅需要一個原像,而快速函數為攻擊者提供了高效的離線比較循環,而沒有應用程式速率限制。
密碼需要故意緩慢、記憶體困難、每用戶加鹽函數,如 Argon2id、scrypt 或 bcrypt。每個使用者獨特的鹽使得相同的密碼產生不同的儲存記錄,而密碼函數的配置記憶體和時間成本使每個候選者故意更加昂貴。確切的參數需要本地基準測試,此處不作規定。 ToolAcre SHA 雜湊計算器不執行密碼雜湊處理,指南檔案解釋了為什麼 SHA-256 不適合此用例。
工作範例 — 將對應套用至 Git 儲存庫中的 SHA-1 與憑證中的 SHA-1
一個有效範例:Git 儲存庫中的 SHA-1。每個 Git 提交都有一個 SHA-1 雜湊值作為其物件 ID。如果 SHA-1 碰撞抵抗被破壞,Git 儲存庫是否容易受到攻擊?答案是:也許吧。攻擊者可以使用與現有提交相同的 SHA-1 建立提交,並將其推送到儲存庫伺服器,然後該伺服器可能會向不同的客戶端提供不同的提交。然而,這需要選擇一個特定的目標併計算碰撞,即使 SHA-1 損壞,這也是昂貴的。
Git 專案成員已發布了遷移到 SHA-256 的路線圖,但緊迫性中等,因為實際攻擊需要衝突技術和伺服器妥協。對於開發人員詢問「我的 Git 儲存庫安全性是否依賴 SHA-1 抗碰撞性?」答案是肯定的,但與其他安全威脅相比,實際風險較低。 ToolAcre SHA 雜湊計算器提供 SHA-1 和 SHA-256,並進行適當標記,以便開發人員可以計算其中任何一個並了解差異。
重點:在驚慌失措之前命名該屬性 — ToolAcre SHA 雜湊計算器可讓您查看設定每個演演算法邊界的摘要長度
對於任何使用 SHA-1 的系統,升級決定取決於用例是否需要損壞的特定屬性。如果使用案例是針對主動攻擊者的數位簽章或重複資料刪除,則需要抗衝突性,且 SHA-1 已被破壞,因此請立即升級至 SHA-256。如果用例是內容尋址儲存或校驗和,則需要第二個原像抵抗,並 SHA-1 對於該目的仍然是安全的,儘管 SHA-256 更適合面向未來。
如果用例是金鑰派生或密碼驗證,則需要原像抵抗,並根本不應該使用此工具包中的任何內容,因為更快的函數更適合金鑰派生。 ToolAcre SHA 雜湊計算器可讓開發人員計算摘要並查看實際的屬性。了解這三個屬性並將它們與用例相匹配是在實際系統中做出安全加密選擇的基礎。