在弓箭手村的資安修練第 26 天,今天我們要學的是一門古老又強大的魔法——加密與雜湊。這些技術就像村莊的防護咒語,能保護我們的訊息不被敵人竊聽、篡改或冒充。
我們會認識兩種加密方式:
對稱加密,像是雙方共享的密語,速度快但不支援不可否認性;
非對稱加密,則像是用鎖與鑰匙傳遞訊息,支援數位簽章與憑證驗證,是現代資安的核心技術之一。
接著,我們會進入雜湊的世界,學習如何透過單向函數來保護密碼與驗證資料完整性。從加鹽、密碼雜湊、多輪處理,到常見的雜湊演算法(像是 SHA-256、bcrypt、Argon2),每一種技術都是對抗駭客的利器。
今天的修練不只是學會加密,更是理解如何驗證資料的真偽與完整性。準備好施展密碼魔法,守護弓箭手村的機密了嗎?
- 對稱加密 (Symmetric Encryption)
- 加密和解密使用相同的金鑰,不分公用或私有,共享金鑰,又稱密鑰
- 任何知道密鑰的部分都可以存取和修改管理器
- 適用於IPsec、TLS、plaintext、串流媒體即時訊息
- 不提供不可否認性
- 速度快,使用AES、DES
- 非對稱加密 (Asymmetric Encryption)
- 支援不可否認性,不適合用於串流媒體即時訊息
- 任何一個人都可以使用公鑰加密,但只有私鑰才可以解密,又稱公鑰
- 使用RSA、DSA
- 訊息:收件者公鑰加密,收件者私鑰解密
- 數位簽章:寄件者私鑰加密,寄件者公鑰解密
- 數位憑證:收件者公鑰加密,收件者私鑰解密
- 混和:收件者公鑰加密,寄件者私鑰解密
- 雜湊的核心概念
- 單向函數:雜湊就像一台「只進不出的機器」,你把資料丟進去,它會吐出一串固定長度的亂碼(雜湊值),但你永遠無法從這串亂碼反推出原始資料,因此非常適合用來保護敏感資訊。
- 密碼雜湊(Password Hashing):在系統儲存密碼時,不會直接存明碼,而是先經過雜湊處理,只存雜湊值,這樣即使資料庫被駭,駭客也拿不到真正的密碼。
- 加鹽(Salting):為了防止駭客使用預先計算好的「彩虹表(Rainbow table)」來破解雜湊值,我們會在密碼前加上一段隨機字串(稱為「鹽」),再一起做雜湊,因此即使兩個人密碼一樣,他們的雜湊值也會完全不同。
- 多輪雜湊(Multiple Rounds of Hashing):有些系統會把雜湊運算做好幾輪,讓計算變得更耗時,這樣駭客就算用暴力破解法,也會被拖慢速度,大大增加攻擊成本。
- 常見的雜湊演算法
- 傳統演算法
- MD5:已不建議使用,容易碰撞。
- SHA-1:也已被證實不夠安全。
- SHA-256:屬於 SHA-2 家族,安全性高,廣泛用於區塊鏈、數位簽章等場景。
*現代密碼雜湊演算法
- bcrypt:內建加鹽與多輪處理,安全性高。
- scrypt:設計上更耗資源,適合防止硬體加速破解。
- Argon2:目前最先進的密碼雜湊演算法之一,效能與安全兼具。
- 訊息摘要(Message Digest)
- 雜湊也常用來驗證資料有沒有被竄改。只要原始資料有一點點變動,雜湊值就會完全不同,這讓它非常適合用來做完整性驗證,像是檔案下載驗證、數位簽章、區塊鏈交易等。