甚麼是雜湊?密碼儲存、加密、鹽值及運算成本有何分別

甚麼是雜湊?密碼儲存、加密、鹽值及運算成本有何分別

Marcus Reid
2026年10月5日· 8 分鐘讀完

雜湊是把輸入轉換為摘要的過程;密碼雜湊使用專門方案,讓服務驗證密碼,而不用儲存可直接取回的明文密碼。NIST 的 hashing 定義描述用數學算法產生代表輸入資料的值,但不同用途的安全要求並不相同。[1] 儲存密碼還要考慮猜測成本、鹽值及實作方式。[2]

網站聲稱「密碼已加密」,不足以證明儲存安全。可逆加密、一般快速雜湊與專用密碼雜湊處理不同任務。先理解驗證流程,才能分清資料庫防護和用戶帳戶保護。

關鍵要點

  • 雜湊摘要並非用解密密鑰還原的密文,但仍可嘗試猜測輸入並比對。
  • 密碼雜湊應提高每次猜測的成本,不能單獨使用快速 SHA-256。[2]
  • 每筆密碼紀錄應有獨立鹽值;鹽值用來區分紀錄,通常毋須保密。
  • pepper 是分開保管的額外秘密,與鹽值用途不同。
  • 資料庫洩露後,原網站的登入限速不能限制離線猜測。

雜湊如何把輸入變為摘要?

同一算法對相同輸入會產生相同結果。一般資料處理也會用雜湊作索引或查找,但這類用途未必具有密碼學雜湊的安全性質。摘要、抗碰撞及原像抵抗不能直接套用到任何名稱包含「雜湊」的函數。

輸出長度有限,代表不同輸入可能產生相同結果。抗碰撞關注尋找兩份相同摘要的不同輸入有多難;原像抵抗關注取得摘要後尋找對應輸入有多難。兩者有別,也不能把理論碰撞解讀成所有密碼驗證立即失效。

單向設計不代表不能猜測。攻擊者可把候選密碼按相同方法計算,再比對結果。猜中輸入與把摘要解密還原是不同過程,容易猜的密碼仍然可能很快被找到。

雜湊與加密有何分別?

加密通常容許持有適當密鑰的一方取回原始資料。雜湊用來產生摘要,正常密碼驗證毋須從資料庫取回原密碼。若只採用可逆加密儲存密碼,密鑰保護也成為防止密碼洩露的關鍵邊界。

方法常見用途是否以還原輸入為設計目標主要限制
一般快速雜湊資料摘要及完整性相關處理否計算快,不能單獨作為密碼儲存方案
專用密碼雜湊建立密碼驗證紀錄否仍需鹽值、合理成本與正確實作
加密在授權條件下還原保密資料是,依賴密鑰安全取決於資料及密鑰的保護

完整性檢查亦需要可信參考值。如果攻擊者可以同時更換檔案與摘要,單純比對不會證明來源。密碼儲存也不是傳輸加密;密鑰與可逆處理的分工可參考對稱與非對稱加密。

密碼雜湊如何驗證登入?

註冊或更改密碼時,服務選定專用方案及工作參數,產生獨立鹽值,然後保存驗證結果和必要參數。登入時,以用戶輸入的密碼配合該紀錄的方案、鹽值及參數計算,再比對結果,並按政策完成其它認證檢查。

資料庫因此毋須保存可直接讀取的原密碼。圖中的比對成功也不表示所有認證已完成,服務可能仍要求第二因素。秘密處理應交由維護良好的函式庫,不應自行拼湊算法或設計驗證流程。

資料庫遭複製後,攻擊者可以在自己的系統重複計算。原服務的封鎖、驗證碼及請求限速不能約束這些離線嘗試。這與暴力破解攻擊的線上猜測是不同邊界。

鹽值、pepper 和運算成本改變了甚麼?

加鹽密碼雜湊為何要使用獨立鹽值?

獨立鹽值讓相同密碼在不同紀錄中產生不同驗證結果,避免把一份預先計算結果簡單套用到所有帳戶。鹽值通常與結果一同儲存,不是要用戶記住的第二個密碼。

鹽值不會把容易猜的密碼變成高熵秘密,也不保證猜測永遠失敗。它區分紀錄、減少計算重用;用戶的密碼及方案本身的成本仍然影響風險。

pepper 為何要分開保管?

pepper 是方案中的額外秘密,應與儲存雜湊的資料庫隔離。只有資料庫洩露時,它可能提供額外保護,但前提是該秘密沒有一併外洩。公開程式碼中的固定值,或與資料庫一同保存的值,不能實現預期隔離。

服務方需要設計 pepper 的存取與輪換方法。更換秘密可能影響已有紀錄的驗證及遷移,不能當成毫無代價的定期動作。用戶也不應被要求保管這種伺服器端秘密作為帳戶復原資料。

工作成本如何增加猜測代價?

專用密碼雜湊可透過計算量與記憶體需求增加每次驗證成本。合理設定應按部署資源及正常登入負載評估,不能無限增加直至合法用戶無法登入。[2]

成本不能取代請求限速、憑據保護及安全實作。服務方要兼顧容量、濫用風險及日後參數遷移。單憑算法名稱,用戶通常無法知道實際設定、實作與運作環境是否合適。

哪些算法適合儲存密碼?

OWASP 密碼儲存指南討論 Argon2id、scrypt、bcrypt 和 PBKDF2,以及各種環境的條件。[2] 這些不是可以隨意互換的名稱。新系統選型、舊系統遷移及特定要求應分別考慮,不宜脫離環境提供萬用配置。

SHA-256 是快速的一般密碼學雜湊。把密碼計算一次 SHA-256 再儲存,不代表採用了合理密碼雜湊方案。加上鹽值亦不會自動解決計算過快的問題。

「軍用加密」或「密碼已加密」等宣傳沒有展示驗證參數、秘密隔離與實作質素。用戶可控制的是獨立密碼與復原入口保護。密碼管理員是否安全說明個人密碼生成和保存的另一層責任。

密碼雜湊洩露對你有何影響?

雜湊洩露不等同明文已公開,也不代表沒有風險。攻擊者可以離線猜測,結果取決於密碼、方案、參數、資源及洩露材料。[3] 不應替所有密碼套用同一張破解時間表。

從獨立官方入口核實通知,按服務指引更改受影響密碼,也更換其它帳戶重用的密碼。檢查登入工作階段、復原方式及異常設定。不要把真實密碼輸入不明的雜湊檢測網站來證明安全。

傳輸保護與儲存責任有別。VPN 密碼安全解釋憑據及網絡路徑的分工:隧道不會讓網站資料庫中的弱密碼雜湊更難猜。Passkey 等方式也不會取消登入工作階段及復原入口風險。完整關係可參考數碼私隱指南。

開發者與用戶如何分工?

服務方負責選擇方案、正確驗證、管理參數及秘密、限制線上嘗試,並在洩露後提供可信通知與復原途徑。舊方案遷移可能透過受控重設,或在適當登入時重新建立紀錄,方法取決於系統限制。

用戶則應為不同服務設定不同密碼,保護電郵與復原方法,並處理事件通知。即使一個網站聲稱採用安全雜湊,也不能因此在所有網站重用同一密碼。

日誌、除錯紀錄與支援材料不應保存明文密碼、完整秘密或可冒充用戶的資料。算法只是安全鏈的一環;正確儲存亦不能抵消秘密在其它位置被直接記錄的風險。

組織應在事件發生前訂明系統負責人及復原程序。通知受影響用戶時,要說明所需行動,不公開資料庫樣本或秘密,亦不要在沒有證據時聲稱所有帳戶已被存取。工作參數應隨硬件及指引變化重新評估,按實測運作預算調整,不能長期保留薄弱設定。

總結

  • 雜湊、密碼雜湊及可逆加密有不同用途。
  • 獨立鹽值、合理運算成本與正確實作共同支援密碼驗證。
  • pepper 是隔離保管的秘密,不等同鹽值。
  • 洩露後要處理離線猜測與重用密碼,網絡隧道不取代儲存防護。

常見問題

雜湊可以解密嗎?

密碼學雜湊沒有一般以密鑰還原的解密操作,但攻擊者仍可猜測輸入及比對結果。因此容易預測的密碼仍可被找到,不能把單向性當成永久安全保證。

雜湊與加密相同嗎?

不同。加密讓持有密鑰的一方還原資料,密碼雜湊用來比對候選。選擇取決於應用要還原原始資料,還是只驗證輸入秘密,不應只選熟悉的算法。

鹽值是否要保密?

鹽值通常與驗證紀錄一同保存,供服務重複計算。它用來區分紀錄,而非保密;分開管理的 pepper 處理另一種要求,兩者不能混為一談。

為何不能只用 SHA-256 保存密碼?

SHA-256 在適當密碼學任務中以快速計算為目標。密碼儲存通常需要刻意增加成本的方案,一次快速摘要不能等同現代密碼雜湊,鹽值也不單獨解決速度問題。

好的雜湊能令弱密碼安全嗎?

它提高猜測成本,卻不消除可預測性。常見或重用秘密仍可有風險,尤其攻擊者能對複製紀錄離線計算時;用戶選擇仍然重要。

相同雜湊是否證明密碼相同?

要先知道方案、參數及鹽值。相同密碼加上不同鹽值應有不同紀錄,所以只比對不透明紀錄不是可靠帳戶調查,亦不能忽略實作條件。

雜湊資料庫洩露後要行動嗎?

要按經核實的官方指引更換受影響秘密,檢查重用密碼及帳戶活動。不能因通知說已雜湊便忽略事件,也不要向外部網站提交原密碼作測試。

VPN 可保護儲存密碼的資料庫嗎?

VPN 保護設定的流量路徑,不決定服務方資料庫儲存。認證、重用密碼及復原要與傳輸加密分開評估;隧道不會增強薄弱驗證紀錄。

來源

Sources checked 2026 年 10 月 5 日。

  1. NIST CSRC — Hashing — https://csrc.nist.gov/glossary/term/hashing
  2. OWASP — Password Storage Cheat Sheet — https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html
  3. NIST — Digital Identity Guidelines: Authentication and Authenticator Management — https://pages.nist.gov/800-63-4/sp800-63b.html

延伸閱讀:

開啟 3 天免費試用

註冊即可免費體驗全部高級功能。

*只限新用戶;每位用戶只可獲得一次試用。

甚麼是雜湊?密碼儲存、加密、鹽值及運算成本有何分別 | AethoVPN