在數位通訊中,如何證明資料來源可信且未被竄改?Digital Signature Standard(DSS)是 NIST 發布的 FIPS 186 標準,定義了三類核可演算法,為數位簽章建立官方規範基礎。
DSS 核心架構與三類演算法
FIPS 186 目前最新版本為 FIPS 186-5(2023),正式核可三類數位簽章演算法。RSA 基於大數因數分解難題,支援 2048 位元以上金鑰,相容性最廣。DSA(Digital Signature Algorithm) 基於離散對數問題,為 DSS 最初設計的原生演算法。ECDSA(Elliptic Curve DSA) 以橢圓曲線數學為基礎,相同安全強度下金鑰長度最短,適合資源受限環境。三類演算法均依賴雜湊函數(SHA-2 或 SHA-3)產生訊息摘要,再對摘要進行簽章運算。
簽章流程與安全性保證
數位簽章流程分為兩階段:簽署方以私鑰對訊息摘要加密產生簽章值;驗證方以對應公鑰解密並比對摘要,確認一致性。此機制同時保證三項安全屬性:真實性(Authentication,確認來源身份)、完整性(Integrity,偵測任何內容竄改)、不可否認性(Non-repudiation,簽署方無法事後否認)。FIPS 186-5 明確廢棄 DSA 用於新系統,並建議優先採用 ECDSA(P-256、P-384 曲線)或 RSA-PSS 簽章方案以符合現行安全要求。
# Python 3 — ECDSA 簽章與驗證(使用 cryptography 套件)
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import hashes
private_key = ec.generate_private_key(ec.SECP256R1())
signature = private_key.sign(b"message", ec.ECDSA(hashes.SHA256()))
private_key.public_key().verify(signature, b"message", ec.ECDSA(hashes.SHA256()))
💡 重點整理
- 標準依據:DSS 對應 NIST FIPS 186,現行版本為 2023 年發布的 FIPS 186-5。
- 演算法選擇:新系統優先採用 ECDSA(P-256/P-384)或 RSA-PSS,DSA 已被廢棄。
- 雜湊搭配:簽章必須搭配 SHA-2 或 SHA-3,禁止使用 SHA-1。
- 安全目標:同時提供真實性、完整性與不可否認性三重保證。
DSS 為數位簽章提供明確的標準框架。選型時優先考量 ECDSA 的效率優勢,並確保金鑰長度與雜湊演算法符合 FIPS 186-5 的現行規範。
📚 參考文獻
- NIST, FIPS 186-5: Digital Signature Standard (DSS)(2023)— csrc.nist.gov
- Python Cryptography, Hazardous Materials: Asymmetric Algorithms — cryptography.io
⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。
留言
張貼留言