開發者工具 · SHA 雜湊計算器
雜湊不是加密:為什麼 SHA-256 雜湊無法解密
· 為什麼它很重要
密碼學 安全 編碼
沒有鍵也沒有逆:雜湊是一種單向函數。這篇文章解釋了與加密的區別,為什麼哈希查找網站似乎反轉哈希,以及這對哈希個人資料意味著什麼。
請解密這些雜湊值-這張票揭示了對雜湊值的誤解
支援票證到達,要求解密一些 SHA-256 雜湊值。閱讀它的開發人員懷疑對哈希是什麼有誤解。這種混淆是有道理的——散列和加密都涉及密碼演演算法,兩者都會產生看起來混亂的輸出,而且都與安全性相關。但它們是根本不同的工具。加密是可逆的;哈希不是。這種區別非常重要,以至於混淆它們已經破壞了真正的安全系統。該票證代表了影響系統設計的理解上的常見差距。
雜湊函數是一種單向函數。您可以對輸入進行雜湊處理以獲取摘要,但沒有密鑰,也沒有逆操作可以從摘要中恢復輸入。這不是限製或錯誤;它是哈希的定義屬性。 ToolAcre SHA 雜湊計算器會產生您貼上的文字的摘要,並沒有「解密」按鈕,因為不存在任何按鈕。該操作在數學上是不可逆的,而不是透過選擇。沒有反向功能不是您可以要求的功能。
加密有密鑰和逆元;雜湊兩者都沒有-簡單來說定義上的區別
加密的工作方式不同。加密演演算法採用明文和金鑰,並產生密文。密文已被擾亂,沒有密鑰就無法讀取。至關重要的是,相同的金鑰可以將密文解密回明文。加密在設計上是可逆的。您進行加密以確保資料保密;您解密以再次閱讀它。加密的安全性取決於金鑰的保密性。只有鑰匙的持有者才能逆轉轉換。
雜湊沒有金鑰,也沒有反轉。您對某些內容進行雜湊處理以產生固定長度的摘要。相同的輸入總是產生相同的摘要。不同的輸入會產生不同的摘要,這就是抗碰撞屬性。但你不能取得摘要並產生輸入。該函數只有一種方式。如果您需要加密資料以便稍後解密,那麼雜湊是錯誤的工具。如果您需要資料指紋來驗證或內容尋址,則雜湊是正確的。選擇正確的工具需要了解其中的差異。
雜湊查找網站如何運作 - 常見輸入的預先計算字典,而不是解密
這種差異非常重要,它是密碼驗證安全性的基礎。伺服器不儲存密碼。它儲存對密碼進行雜湊處理的結果。當使用者登入時,伺服器會對他們提交的內容進行雜湊處理,並將其與儲存的值進行比較。如果伺服器遭到破壞且其資料庫被盜,攻擊者不會獲得密碼本身,而只能獲得雜湊值。哈希的單向性質意味著攻擊者無法根據雜湊對密碼進行逆向工程。系統的安全性取決於此屬性。
如果伺服器使用加密代替——如果它加密了密碼並可以解密它們——那麼竊取密鑰的妥協將立即暴露每個密碼。之所以專門選擇散列,是因為它是不可逆的。這就是密碼系統使用雜湊而不是加密的原因。不可逆性不是限制;這是整個安全模型。加密密碼資料庫從根本上來說比散列密碼資料庫弱,因為加密是可逆的。
低熵輸入是弱點 - 為什麼散列電子郵件地址、電話號碼或短 PIN 幾乎不能提供保護
哈希查找站點的存在是為了製造解密的假象。這些網站託管常見輸入及其雜湊值的預先計算表。 「彩虹表」是預先準備好的字典:一個表可能包含一千個最常見密碼的雜湊值,或達到一定長度的所有字母數字組合,或多種語言的整個單字列表。網站運營商已經完成了哈希工作並儲存了結果。當有人向查找網站提交雜湊值時,該網站不會解密任何內容。它只是在表中查找哈希值。如果雜湊存在(如果某些字典單字或密碼模式恰好匹配),則表將傳回原始輸入。對於不熟悉該技術的人來說,這看起來像是魔法解密,但它只是一個資料庫查找。網站沒有反轉雜湊值;它將其與預先計算的值進行比較。
工作範例 - 對可猜測的值進行雜湊處理並顯示字典如何恢復它,而不是它無法恢復的長隨機值
這就是低熵輸入容易受到攻擊的原因。如果您對諸如「密碼」之類的常見密碼或諸如某人的電子郵件地址之類的可預測值進行雜湊處理,則查找網站很可能已經計算出該雜湊值並將其儲存起來。尋找立即傳回原始值。如果您對 256 字元隨機字串進行雜湊處理,則地球上沒有任何查找站點會預先計算該特定雜湊值。尋找網站沒有傳回任何內容,因為輸入不在他們的字典中。哈希的安全性完全取決於輸入的熵。
ToolAcre SHA 雜湊計算器直接示範了這一點。對一個常見單字進行哈希處理,如果堅定的攻擊者執行自己的字典服務,他們就可以查找它。對一個很長的隨機值進行哈希處理,即使是一個巨大的字典也不太可能包含它。哈希的確定性(相同的輸入給出相同的輸出)使得字典攻擊成為可能。這也是哈希對於驗證有用的原因。啟用尋找的相同屬性也啟用驗證。
當您真正需要加密時 - 資料必須傳回的情況,以及雜湊是錯誤工具的情況
當您真正需要加密時(當您需要發送秘密資料並稍後恢復它時),密碼是正確的工具。 AES 是對稱加密的現代標準:共用一個金鑰,用於加密明文並解密密文。 RSA 或橢圓曲線加密用於非對稱加密:公鑰加密,私鑰解密。這些工具在設計上是可逆的。安全性來自於金鑰保密性,而不是不可逆性。錯誤在於在需要加密的地方使用雜湊。如果您對信用卡號進行雜湊處理並打算稍後進行驗證,則無法對其進行解密。如果您對個人識別碼進行哈希處理,然後需要恢復它,那麼哈希處理是錯誤的選擇。這些情況都需要加密。
一個有效的範例清楚地區分了這兩種用途。您有一個使用者 ID 列表,必須對彼此以及您自己的員工保密。您使用 AES 對其進行加密並儲存結果。稍後,當您需要查找用戶時,您可以解密並讀取它們。雜湊法不起作用;一旦經過哈希處理,ID 就會永遠遺失。相反,您有用戶密碼。您對它們進行散列並儲存散列。當用戶登入時,您會對他們的提交進行哈希處理並與儲存的值進行比較。您永遠不需要自己恢復密碼。加密會出錯;初始設定後,您將無法使用明文密碼。
這不包括什麼 - 鍵控和加鹽雜湊設計,這提高了標準,但是一個單獨的主題
加鹽和金鑰雜湊值得單獨處理,因為兩者都不會將摘要轉換為加密。鹽使相同的低熵輸入產生不同的儲存記錄,並金鑰可以限制誰計算有效的身份驗證值。輸出保持不可逆;恢復嘗試仍然透過測試候選輸入而不是應用逆來進行。
密碼雜湊會增加故意成本和鹽,而 HMAC 使用金鑰對訊息進行身份驗證。 ToolAcre 不實現這兩種操作。將它們保留在本文之外可以避免描述簡單的 SHA-256 加上臨時前綴(相當於經過審查的密碼記錄或訊息身份驗證結構)的危險捷徑。
重點:只有一種方法 — ToolAcre SHA 雜湊計算器計算摘要;沒有反向按鈕,因為不存在任何反向按鈕
ToolAcre SHA 雜湊計算器會向您顯示雜湊操作:貼上文字,取得摘要,完成。任何逆轉都是不可能或有意的。該工具正確地拒絕提供“解密”功能,因為該功能不存在。如果您需要加密,請使用正確的密碼。不存在反轉並不是該工具的限制;這是關於散列的數學事實。單向函數是一種強大的工具,正是因為它們無法逆轉。他們以無法收回的方式提交資料。他們提供驗證而不透露原件。即使資料庫被盜,它們也能確保密碼系統的安全。加鹽且經過適當成本調整的密碼雜湊變得無法透過猜測來逆轉。不可逆性就是安全機制。
ToolAcre SHA 雜湊計算器計算的摘要是單向的、有目的的,並由瀏覽器自己的 Web Crypto 實現正確計算。如果您需要散列以進行驗證或完整性,請使用它。如果您需要對資料保密並稍後檢索,加密就是您的工具。了解不可逆雜湊和可逆加密之間的差異對於安全性和建置滿足您實際需求的系統至關重要。