FacebookLinkedInTweet更新日期: 2025 年 2 月 3 日
本文為 資安入門 系列文,第 3 篇
OWASP Top 10:最新的 Web 安全風險與防範措施(2021 版)
MD5 加密演算法是什麼?
SHA-1 是什麼?為什麼不再安全? 👈所在位置
深入解析 Session:從概念到運作方式
什麼是 Session Fixation(會話固定攻擊)?
HTTP 與 HTTPS 的差別:新手完整指南
跨站請求偽造(CSRF)入門指南:攻擊原理、實例與防禦方法
跨站指令碼攻擊(XSS)入門指南:從原理到防禦的全解析
SQL 注入攻擊全解析:從入門到防禦實戰指南
新手指南:深入了解 Content-Security-Policy (CSP) 與網站安全
從零理解 Same-Origin Policy:瀏覽器安全的第一道防線
跨來源資源共享(CORS)完整指南:打破瀏覽器的安全邊界
SHA-1(Secure Hash Algorithm 1)是一種雜湊演算法,由 美國國家安全局(NSA) 設計,並於 1995 年由 美國國家標準與技術研究院(NIST) 發布。
SHA-1 的作用是將任意長度的輸入數據轉換為 固定 160 位元(20 字節) 的雜湊值(Hash Value),通常以 40 個十六進位字元表示。例如:
輸入:「hello」 → SHA-1 雜湊值:f572d396fae9206628714fb2ce00f72e94f2258f
輸入:「hello world」 → SHA-1 雜湊值:2ef7bde608ce5404e97d5f042f95f89f1c232871
SHA-1 曾廣泛應用於數據完整性驗證、密碼儲存、SSL/TLS 加密、數字簽章等安全領域,但如今已被認為不安全,並被更強的雜湊演算法(如 SHA-256、SHA-512)取代。
SHA-1 的特性
固定輸出長度:無論輸入資料的長度是多少,SHA-1 產生的雜湊值長度始終為 160 位元(40 個十六進位字元)。
單向性(不可逆):理論上無法從 SHA-1 雜湊值推回原始數據。
相同輸入產生相同輸出:相同的輸入,無論計算多少次,SHA-1 產生的雜湊值都是一樣的。
雪崩效應(Avalanche Effect):輸入的任何微小變化,會導致雜湊值完全不同。
抗碰撞性(已被破解):不同的輸入應該要產生不同的雜湊值,但 SHA-1 已經被證明可以產生相同的雜湊值(碰撞攻擊),因此安全性大幅降低。
SHA-1 為什麼不安全?
雖然 SHA-1 在設計時具有良好的安全性,但隨著計算能力的提升,研究人員已經發現多種方式來破解它,主要問題如下:
碰撞攻擊(Collision Attack)已被實證
碰撞攻擊指的是兩個不同的輸入能夠產生相同的 SHA-1 雜湊值,這使 SHA-1 無法保證數據的唯一性與完整性。
2017 年,Google 和荷蘭阿姆斯特丹大學的研究人員成功製造出兩個不同的 PDF 文件,但它們的 SHA-1 雜湊值完全相同,這項研究被稱為 SHAttered 攻擊。
SHA-1 碰撞示範(Google SHAttered 攻擊):
文件 A 的 SHA-1:38762cf7f55934b34d179ae6a4c80cadccbb7f0a
文件 B 的 SHA-1:38762cf7f55934b34d179ae6a4c80cadccbb7f0a
這代表攻擊者可以製造一個與原始文件具有相同 SHA-1 值的惡意文件,並用於欺騙驗證系統,例如:
偽造數字簽章,欺騙電子文件驗證系統
竄改檔案(如軟體更新包),讓受害者下載被植入惡意代碼的文件
計算能力提升,破解 SHA-1 變得更容易
SHA-1 在設計時,碰撞攻擊的計算難度非常高,但如今隨著 GPU、FPGA 和雲端運算 的進步,攻擊變得更快、更便宜。
2012 年,研究人員估計破解 SHA-1 需要 7,000,000 美元的運算成本
2017 年,Google 透過 90 天內的運算 成功破解 SHA-1
2020 年,研究顯示破解 SHA-1 的成本已降至 45,000 美元以下
2022 年,攻擊成本更下降到 不到 1,000 美元,普通駭客也能利用現有工具來攻擊
這表示,SHA-1 已經無法抵抗現代計算能力的暴力破解,應立即停止使用。
SHA-1 與 MD5 的關係
SHA-1 是 MD5 的改良版
MD5(Message Digest Algorithm 5)於 1992 年 由 Ron Rivest 設計,主要用來生成固定長度的雜湊值,但後來發現它容易受到碰撞攻擊(Collision Attack)。
為了解決 MD5 的安全問題,美國國家安全局(NSA)在 1995 年 設計了 SHA-1,其主要目標是增強抗碰撞性,使得產生相同雜湊值的機率更低。
SHA-1 與 MD5 的相似點
都是雜湊演算法(Hash Algorithm),可以將輸入轉換為固定長度的數據指紋。
都是單向函數(不可逆),理論上無法從雜湊值推回原始輸入。
都有雪崩效應(Avalanche Effect),輸入稍微改變,雜湊值就會完全不同。
SHA-1 相較於 MD5 的改進點
更長的輸出長度
MD5 產生 128 位元(16 字節) 的雜湊值
SHA-1 產生 160 位元(20 字節) 的雜湊值
更長的雜湊值讓 SHA-1 相較 MD5 更難被暴力破解
更強的數學運算結構
SHA-1 採用更多的數學步驟來處理數據,比 MD5 更難產生碰撞
SHA-1 與 MD5 的比較
特性MD5SHA-1發布年份1992 年1995 年設計機構Ron Rivest(RSA)NSA(美國國安局)輸出長度128 位元(32 字元)160 位元(40 字元)計算速度快稍微慢一點安全性已破解,不安全已破解,不安全碰撞攻擊2004 年被破解2017 年被破解替代方案SHA-256、bcryptSHA-256、SHA-512
SHA-1 和 MD5 現在都不安全
雖然 SHA-1 比 MD5 更安全,但現在計算能力提升,SHA-1 也已經不夠安全,兩者都已經被更強的雜湊演算法(如 SHA-256、SHA-512)取代。
如果你的系統仍在使用 MD5 或 SHA-1,建議立即升級為更安全的演算法,例如 SHA-256、bcrypt 或 Argon2,以避免資料遭到破解或竄改。
SHA-1 已被禁止使用
由於 SHA-1 的安全性問題,各大安全機構已經宣布停止使用 SHA-1:
2011 年:NIST(美國國家標準技術研究院)建議改用 SHA-256 或 SHA-3
2017 年:Google 發表 SHAttered 攻擊,證明 SHA-1 碰撞攻擊可行
2018 年:微軟、Google、Mozilla 等停止支援 SHA-1 憑證
2020 年:GitHub 宣布逐步淘汰 SHA-1
2023 年:主要瀏覽器(Chrome、Firefox、Edge)完全拒絕 SHA-1 HTTPS 憑證
現在,SHA-1 已經不符合現代安全標準,所有系統應立即改用 SHA-256 或更強的演算法。
SHA-1 的替代方案
由於 SHA-1 不再安全,建議改用以下更強的雜湊演算法:
演算法輸出長度安全性適用範圍SHA-256256 位元(64 字元)高數據完整性驗證、區塊鏈SHA-512512 位元(128 字元)更高高安全需求(如政府機構)bcrypt可變長度非常高密碼儲存,防止暴力破解Argon2可變長度最安全密碼儲存,防止 GPU 攻擊
結論
SHA-1 曾經是安全領域的重要技術,但現在已經不安全,應該全面淘汰。
目前,各大網路平台與安全機構已經禁止使用 SHA-1,並建議改用 SHA-256、SHA-512 或 bcrypt 來確保數據的安全性。
如果你的系統仍然依賴 SHA-1,應儘快進行升級,以防止資料被竄改或攻擊。