家門派系
2. 「雜湊(Hash Function)」 :極難逆轉的數學摘要運算,用來取得檔案指紋、驗證完整性
ex: MD家族、SHA家族
不是「非對稱加密」,雜湊與加密的體系不同
3. 「非對稱加密(Asymmetric Encryption)」:使用不同鑰匙,運用公鑰加密、私鑰解密
常用在 HTTPS(SSL/TLS)、數位簽章、GPG簽章
ex: RSA家族、ECDSA(橢圓)家族、NTRU(抗量子)
只有雜湊(Hash) 演算法的輸出是「固定長度」
對稱加密/非對稱加密 則是依輸入長度而變動,不是固定長度
雜湊派系
md5(誕生於1992年) 與 sha1(誕生於1995年) 是早期一種古老的雜湊演算法,取檔案的數位指紋
近年來因為碰撞漏洞問題,容易被破解、不再安全
若有安全性考量,建議改為sha256(誕生於2001年)、sha3(誕生於2015年 但尚未普及)
SHA(Secure Hash Algorithm)家族
名稱 | 所屬家族 | 位元長度 | 發表年份 | 架構類型 | 安全性現況 | 備註與應用情境 |
---|---|---|---|---|---|---|
SHA-0 | SHA-1 前身 | 160 位元 | 1993 | Merkle–Damgård | ❌ 已淘汰 | 很快被撤回,設計有嚴重錯誤 |
SHA-1 | SHA-1 | 160 位元 | 1995 | Merkle–Damgård | ❌ 已破解 | 2017 年 SHAttered 碰撞攻擊成功 |
SHA-224 | SHA-2 | 224 位元 | 2001 | Merkle–Damgård | ✅ 安全 | 為嵌入式系統優化的版本 |
SHA-256 | SHA-2 | 256 位元 | 2001 | Merkle–Damgård | ✅ 安全 | 主流應用:TLS、區塊鏈、JWT、憑證等 |
SHA-384 | SHA-2 | 384 位元 | 2001 | Merkle–Damgård | ✅ 安全 | 高安全性版本,常用於憑證與簽章 |
SHA-512 | SHA-2 | 512 位元 | 2001 | Merkle–Damgård | ✅ 安全 | 用於高安全性場景,如軍用或政府用途 |
SHA3-224 | SHA-3 | 224 位元 | 2015 | Sponge Function (Keccak) | ✅ 更安全 | 完全不同架構,可防長度延伸攻擊 |
SHA3-256 | SHA-3 | 256 位元 | 2015 | Sponge Function (Keccak) | ✅ 更安全 | 設計為 SHA-256 替代品,尚未普及 |
SHA3-384 | SHA-3 | 384 位元 | 2015 | Sponge Function (Keccak) | ✅ 更安全 | 研究、密碼學用途為主 |
SHA3-512 | SHA-3 | 512 位元 | 2015 | Sponge Function (Keccak) | ✅ 更安全 | 尚未主流,安全性最高的 hash 標準之一 |
SHAKE128 | SHA-3 Ext | 可變長 | 2015 | Sponge + XOF | ✅ 靈活安全 | 延伸輸出格式(XOF),密碼學應用研究 |
SHAKE256 | SHA-3 Ext | 可變長 | 2015 | Sponge + XOF | ✅ 靈活安全 | 適合產生大量隨機數據,防範新型攻擊 |
MD(Message Digest)家族
MD 系列的密碼架構已過時
因為此套算法具有弱點,可預測、可控制雜湊結果,如何拉長長度都能預測、產生碰撞
名稱代號 | 發表年份 | 輸出長度 | 安全性現況 | 備註說明 |
---|---|---|---|---|
MD1 | 1989? | 未公開 | ❌ 無實作 | 幾乎無資料,僅被提及為概念前身 |
MD2 | 1989 | 128 bits | ❌ 過時 | 專為 8-bit 設計,慢且已遭破解 |
MD3 | ✘ | ✘ | ❌ 被跳過 | 設計被認為不穩定,從未公開實作 |
MD4 | 1990 | 128 bits | ❌ 不安全 | 計算速度快,但安全性太差,很快被攻破 |
MD5 | 1992 | 128 bits | ❌ 已淘汰 | 最知名版本,曾用於 SSL、檔案驗證 |
MD6 | 2008 | 可變長 | ⚠️ 尚未廣泛應用 | 參加 SHA-3 競賽但未勝出,理論強但實作不佳 |
MD 家族在安全性用途上已經死透了,只能在無風險的情境下使用
Windows
certutil 是 Windows 內建的命令列工具,常用於憑證與安全相關操作
> certutil -hashfile <filename> md5
> certutil -hashfile <filename> sha256
可支援MD5、SHA1(160-bit)、SHA256、SHA384、SHA512 參數等等
沒帶入參數時,預設使用SHA1
目前尚不支援 SHA3
macOS
macOS指令,相對簡單很多
$ md5 <filename>
$ shasum -a 256 <filename>
1是SHA1、256是SHA256、512是SHA512
跨平台跨系統
$ openssl dgst -sha256
可支援 MD5、SHA256、SHA512 等
沒帶入參數時,預設使用md5
沒有留言:
張貼留言