什麼是 FIPS 186-4?
NIST 於 2013 年發布 FIPS 186-4,是美國聯邦數位簽章強制標準。它核准三種演算法:DSA、RSA、ECDSA,廣泛應用於 TLS、程式碼簽署與身份驗證。
三大演算法核心比較
DSA 基於離散對數問題,金鑰長度 1024–3072 位元,安全性依賴高品質亂數;亂數重複使用將導致私鑰洩漏(Sony PS3 事件即為典型案例)。RSA 基於大數因式分解,金鑰長度至少 2048 位元,相容性最廣但效能較低。ECDSA 使用橢圓曲線(P-256、P-384、P-521),以較短金鑰達到等效安全強度,是目前主流選擇,但同樣依賴亂數品質。
FIPS 186-5 新世代:EdDSA 登場
2023 年發布的 FIPS 186-5 正式淘汰傳統 DSA,並新增 EdDSA(Ed25519 / Ed448)。EdDSA 採用確定性簽章(Deterministic Signing),簽章過程不依賴外部亂數,從根本消除亂數弱點。其抗側道攻擊能力更強,效能顯著優於 ECDSA,是下一代系統的優先推薦方案。
# Python 使用 cryptography 套件產生 Ed25519 簽章
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
private_key = Ed25519PrivateKey.generate()
signature = private_key.sign(b"message")
public_key = private_key.public_key()
public_key.verify(signature, b"message") # 驗證通過即無例外
💡 重點整理
- FIPS 186-4 核准 DSA、RSA、ECDSA 三種演算法,仍是眾多合規環境的現行基準。
- DSA 與 ECDSA 的最大弱點在於亂數品質,確定性方案可徹底規避此風險。
- FIPS 186-5 淘汰 DSA,EdDSA 以確定性簽章提供更高安全性與效能。
- 新系統建議優先採用 Ed25519,舊系統遷移路徑為 ECDSA P-256 → Ed25519。
數位簽章標準從 FIPS 186-4 演進至 186-5,核心驅動力是消除亂數依賴、提升抗攻擊韌性。新專案應直接採用 EdDSA,既符合最新聯邦標準,也具備長期安全優勢。
📚 參考文獻
- NIST FIPS 186-4: Digital Signature Standard (DSS) — 官方原文
- NIST FIPS 186-5: Digital Signature Standard (DSS) — 2023 最新版
- Python cryptography — Ed25519 簽章實作文件
⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。
留言
張貼留言