文章目錄
- 一、數字簽名方案
- 1.1 ECDSA:基于橢圓曲線的數字簽名算法
- 1.2 EdDSA:Edwards曲線數字簽名算法
- 1.3 RSA-PSS:帶有概率簽名方案的RSA
- 1.4 數字簽名方案對比
- 二、密鑰交換協議
- 2.1 Diffie-Hellman密鑰交換
- 2.2 ECDH:橢圓曲線Diffie-Hellman密鑰交換
- 2.3 量子抗性密鑰交換協議:CRYSTALS-Kyber
- 2.4 密鑰交換協議對比
- 三、密碼學協議
- 3.1 TLS 1.3:傳輸層安全協議
- 3.2 Signal協議:端到端加密通信
- 3.3 IKEv2:互聯網密鑰交換協議
- 3.4 密碼學協議對比
- 四、后量子密碼學
- 4.1 基于格的密碼學
- 4.2 基于哈希的密碼學:SPHINCS+
- 4.3 基于多變量多項式的密碼學:Rainbow
- 4.4 基于超橢圓曲線同源系統的密碼學:SIKE
- 4.5 后量子密碼學方案對比
這一部分作為了解吧,前幾章有代碼,可以深入學習一下。
同系列:
- 對稱加密算法(AES、ChaCha20和SM4)Python實現——密碼學基礎(Python出現No module named “Crypto” 解決方案)
- 非對稱加密算法(RSA、ECC、SM2)——密碼學基礎
- 哈希函數詳解(SHA-2系列、SHA-3系列、SM3國密)案例:構建簡單的區塊鏈——密碼學基礎
一、數字簽名方案
數字簽名是現代信息安全體系中的基石,它為數字通信提供了身份驗證、數據完整性和不可否認性。想象一下,在物理世界中,你用獨特的筆跡簽署文件;在數字世界中,數字簽名扮演著類似角色,但提供了更強的安全保障。
1.1 ECDSA:基于橢圓曲線的數字簽名算法
橢圓曲線數字簽名算法(ECDSA)是一種使用橢圓曲線密碼學的數字簽名方案。與傳統的RSA簽名相比,ECDSA能夠提供相同的安全強度,但使用更短的密鑰長度。
工作原理:
- 密鑰生成:選擇一條橢圓曲線和基點G,生成私鑰d(隨機數)和公鑰Q=d×G
- 簽名生成:計算消息哈希,使用私鑰和隨機數k生成簽名對(r,s)
- 簽名驗證:使用發送者的公鑰驗證簽名的有效性
應用場景:
- 比特幣和以太坊等區塊鏈技術
- TLS/SSL安全通信
- 數字證書簽名
優勢:
- 高效率:相比RSA,計算速度更快
- 緊湊性:較短的密鑰長度和簽名大小
- 強安全性:256位ECDSA提供與3072位RSA相當的安全強度
工具與實現:
- OpenSSL庫(支持各種編程語言)
- 專業密碼庫如Bouncy Castle (Java)
- 區塊鏈開發工具如web3.js(以太坊)
1.2 EdDSA:Edwards曲線數字簽名算法
EdDSA (Edwards-curve Digital Signature Algorithm) 是一種基于扭曲Edwards曲線的數字簽名算法,最著名的實現是Ed25519。
工作原理:
- 密鑰生成:從私鑰種子導出擴展私鑰,計算公鑰
- 簽名生成:使用確定性方法(無需隨機數生成器),降低實現錯誤風險
- 簽名驗證:驗證簽名與消息和公鑰的關系
主要特點:
- 確定性簽名:相同消息和密鑰總是產生相同簽名
- 批量驗證:可高效驗證多個簽名
- 沒有特殊情況:簡化實現,減少安全漏洞
應用場景:
- Signal等安全通信軟件
- SSH密鑰認證
- DNSsec域名系統安全擴展
工具與庫:
- libsodium(跨平臺密碼學庫)
- NaCl(Networking and Cryptography library)
- Ed25519實現庫(多種編程語言)
1.3 RSA-PSS:帶有概率簽名方案的RSA
RSA-PSS (Probabilistic Signature Scheme) 是RSA簽名的一種現代變體,增加了隨機性元素,提高了安全性。
技術細節:
- 使用掩碼生成函數(MGF)添加隨機性
- 對消息進行鹽化處理,使得即使相同消息的多次簽名也會產生不同結果
- 包含嚴格的數學證明,滿足選擇性偽造攻擊下的安全性
應用場景:
- 企業級PKI基礎設施
- 數字證書生成
- 文檔簽名系統
優勢與劣勢:
- 優勢:更強的安全性證明,抵抗選擇性偽造攻擊
- 劣勢:計算開銷較大,對嵌入式設備有挑戰
實現工具:
- OpenSSL (RSA-PSS模式)
- Microsoft CryptoAPI
- PKCS#11兼容設備和庫
1.4 數字簽名方案對比
特性 | ECDSA | EdDSA | RSA-PSS |
---|---|---|---|
安全級別(等效位長) | 256位 | 255位 | 3072位 |
簽名大小 | 64字節 | 64字節 | 384字節 |
簽名速度 | 快 | 非常快 | 慢 |
驗證速度 | 中等 | 快 | 快 |
隨機數需求 | 高質量隨機數(關鍵) | 不需要(確定性) | 需要鹽值 |
數學基礎 | 橢圓曲線離散對數 | 扭曲Edwards曲線 | 大數分解 |
量子抵抗性 | 弱 | 弱 | 弱 |
實現復雜度 | 中等 | 低(簡單) | 高 |
標準化狀態 | FIPS 186-4, SEC1 | RFC 8032 | PKCS#1 v2.2, RFC 8017 |
二、密鑰交換協議
密鑰交換是現代加密通信的基礎環節,它解決了一個根本問題:如何在不安全的通道上安全地建立共享密鑰。這些協議允許通信雙方在沒有預共享秘密的情況下,協商出一個雙方都知道但竊聽者無法獲取的共同密鑰。
2.1 Diffie-Hellman密鑰交換
Diffie-Hellman密鑰交換(DH)是第一個公開的密鑰交換協議,由Whitfield Diffie和Martin Hellman于1976年提出,是現代密碼學的里程碑。
工作原理:
- 雙方共享兩個公共參數:一個大素數p和一個基數g
- Alice生成私鑰a,計算公鑰A = g^a mod p,并發送A給Bob
- Bob生成私鑰b,計算公鑰B = g^b mod p,并發送B給Alice
- Alice計算共享密鑰 K = B^a mod p
- Bob計算共享密鑰 K = A^b mod p
- 兩者得到相同的密鑰K = g^(ab) mod p
安全基礎:
基于離散對數問題的困難性。即使攻擊者知道p、g、A和B,計算私鑰a或b在計算上仍然不可行。
應用場景:
- IPsec VPN
- 早期TLS版本
- SSH密鑰協商
局限性:
- 易受中間人攻擊,需要額外認證機制
- 計算強度較大,對有限資源設備有挑戰
- 對量子計算攻擊無防護
實現工具:
- OpenSSL的DH函數
- Java JCE (Java Cryptography Extension)
- wolfSSL(嵌入式系統)
2.2 ECDH:橢圓曲線Diffie-Hellman密鑰交換
ECDH是Diffie-Hellman密鑰交換的橢圓曲線變體,提供了相同的功能,但有更高的效率和安全性。
技術細節:
- 雙方共享橢圓曲線參數和基點G
- Alice生成私鑰a,計算公鑰A = aG(橢圓曲線點乘)
- Bob生成私鑰b,計算公鑰B = bG
- Alice計算共享點 S = aB
- Bob計算共享點 S = bA
- 兩者得到相同的點S = abG,通常使用S的x坐標作為共享密鑰
優勢:
- 更小的密鑰尺寸(256位ECDH≈3072位DH)
- 更快的計算速度
- 降低帶寬和存儲需求
應用場景:
- TLS 1.2/1.3
- 移動應用加密通信
- 物聯網設備安全通信
常用曲線:
- P-256(NIST推薦)
- Curve25519(更高效,廣泛使用于現代系統)
- Brainpool曲線(歐洲標準)
工具與庫:
- BoringSSL/OpenSSL的EC函數
- libsodium(X25519實現)
- Bouncy Castle加密庫
2.3 量子抗性密鑰交換協議:CRYSTALS-Kyber
隨著量子計算的發展,傳統的密鑰交換協議面臨風險。CRYSTALS-Kyber是NIST后量子密碼標準化進程中的獲勝者,提供了對抗量子計算攻擊的密鑰封裝機制(KEM)。
工作原理:
- 基于格密碼學中的模塊學習帶錯誤問題(MLWE)
- 使用多項式運算而非大數或橢圓曲線運算
- 包含獨特的噪聲采樣和錯誤校正機制
技術特點:
- 提供IND-CCA2安全性(適應性選擇密文攻擊下的安全)
- 支持密鑰封裝機制(KEM)而非直接的密鑰交換
- 平衡了安全性、性能和密鑰/密文大小
優勢與挑戰:
- 優勢:抵抗量子計算攻擊,高效實現
- 挑戰:較大的密鑰和密文尺寸,新技術的部署復雜性
標準化狀態:
- 2022年被NIST選為后量子密鑰封裝標準
- 正在整合到TLS、SSH等協議中
實現工具:
- libpqcrypto(后量子密碼庫)
- Open Quantum Safe項目
- BoringSSL實驗分支
2.4 密鑰交換協議對比
特性 | Diffie-Hellman | ECDH (Curve25519) | CRYSTALS-Kyber |
---|---|---|---|
公鑰大小 | 256-512字節 | 32字節 | 800-1568字節 |
私鑰大小 | 256字節 | 32字節 | 1632-3168字節 |
計算效率 | 低 | 高 | 中等 |
帶寬需求 | 高 | 低 | 高 |
數學基礎 | 離散對數問題 | 橢圓曲線離散對數 | 模塊化學習帶錯誤 |
量子抵抗性 | 無 | 無 | 強 |
成熟度 | 非常成熟 | 成熟 | 新興 |
典型應用 | 傳統VPN | TLS 1.3, Signal | 后量子TLS (實驗) |
安全等級 | 128位 (3072位參數) | 128位 | 128-256位 |
三、密碼學協議
密碼學協議整合了各種密碼學原語(如加密、簽名、密鑰交換)來實現特定的安全目標。這些協議是現代安全通信和數據交換的基礎。
3.1 TLS 1.3:傳輸層安全協議
TLS (Transport Layer Security) 1.3是互聯網安全通信的基石,于2018年標準化,替代了舊版本TLS和過時的SSL協議。
核心創新:
- 簡化握手:將加密協商減少到1-RTT(往返時間)
- 0-RTT恢復:允許客戶端在首個消息中發送加密數據
- 前向安全性:即使長期密鑰泄露,過去會話仍受保護
- 刪除了不安全的算法:如RC4、DES、3DES、SHA-1等
- 強制加密所有握手消息:增強隱私保護
技術細節:
- 密鑰導出:使用HKDF(基于HMAC的密鑰派生函數)
- 握手過程:客戶端Hello → 服務器Hello+加密擴展+證書+完成 → 客戶端完成
- 加密套件:采用AEAD(認證加密與關聯數據)如AES-GCM和ChaCha20-Poly1305
- 支持PSK(預共享密鑰)和票據機制實現會話恢復
應用場景:
- HTTPS網頁加密
- API安全通信
- 企業級VPN解決方案
實現工具:
- OpenSSL 1.1.1+
- GnuTLS 3.6.3+
- wolfSSL 4.0+
- BoringSSL(Google維護)
3.2 Signal協議:端到端加密通信
Signal協議是現代端到端加密即時通信的黃金標準,由Open Whisper Systems開發,提供了一系列強大的安全屬性。
關鍵特性:
- 前向安全性:即使私鑰泄露,過去的通信仍然安全
- 后向安全性(又稱"未來安全性"):即使當前密鑰泄露,未來通信仍然安全
- 抵抗重放、中間人和會話操縱攻擊
- 隱藏元數據:最小化敏感通信模式泄露
技術組件:
- X3DH(擴展三重DH):初始密鑰協商
- Double Ratchet算法:持續更新密鑰
- 預共享密鑰:抵抗未來量子計算攻擊
- AEAD加密:確保消息機密性和完整性
工作流程:
- 注冊:用戶生成身份密鑰對、簽名預密鑰和一批一次性預密鑰
- 初始協商:使用X3DH建立初始共享密鑰
- 會話維護:通過Double Ratchet算法定期更新密鑰
- 消息傳遞:使用派生密鑰加密消息,確保安全屬性
應用產品:
- Signal Messenger
- Facebook Messenger私密對話
- Google Messages的RCS加密
實現庫:
- libsignal(多平臺實現)
- Signal Protocol Java庫
- Signal Protocol JavaScript庫
3.3 IKEv2:互聯網密鑰交換協議
IKEv2 (Internet Key Exchange version 2) 是IPsec VPN的關鍵組件,負責認證VPN對等體并建立安全關聯(SA)。
協議功能:
- 相互認證:確保連接雙方身份
- 密鑰協商:安全生成共享密鑰
- 建立安全關聯:定義IPsec通信參數
- 支持NAT穿越:解決網絡地址轉換問題
- 快速恢復:提高移動設備連接可靠性
技術細節:
- 消息交換格式:請求/響應對,簡化錯誤處理
- 認證方法:預共享密鑰、數字證書、EAP
- DH密鑰交換:支持多種組,包括橢圓曲線選項
- 生存檢測:快速檢測失效連接
- 密鑰材料生成:使用PRF(偽隨機函數)
應用場景:
- 站點到站點VPN
- 遠程訪問VPN
- 移動VPN連接(特別適合切換網絡)
主要實現:
- strongSwan(開源IKEv2實現)
- Cisco IOS/IOS-XE
- Windows 10/11內置VPN客戶端
- iOS/macOS內置VPN客戶端
3.4 密碼學協議對比
特性 | TLS 1.3 | Signal協議 | IKEv2 |
---|---|---|---|
主要用途 | Web安全、API通信 | 即時消息加密 | VPN隧道建立 |
握手往返次數 | 1-RTT (0-RTT恢復) | 異步/非交互式 | 2-RTT |
前向安全性 | 支持 | 強支持(每消息) | 支持(可選) |
后向安全性 | 不支持 | 支持 | 不支持 |
認證方法 | 證書、PSK | 身份密鑰+指紋驗證 | PSK、證書、EAP |
密鑰協商 | (EC)DHE | X3DH+Double Ratchet | (EC)DHE |
協議復雜度 | 中等 | 高 | 高 |
故障恢復能力 | 中等 | 強 | 強 |
部署普及度 | 極高 | 高(即時通訊) | 高(企業VPN) |
標準化 | IETF RFC 8446 | 開放規范 | IETF RFC 7296 |
四、后量子密碼學
后量子密碼學(PQC)是為了應對量子計算威脅而發展的新型密碼學分支。量子計算機一旦實用化,將能通過Shor算法快速破解RSA、ECC等傳統密碼系統。后量子密碼學提供了能夠抵抗量子計算攻擊的替代方案。
4.1 基于格的密碼學
格密碼學是后量子密碼學中最成熟、應用最廣泛的分支,基于格中的硬問題。
NTRU
NTRU是最早的實用格基加密系統之一,基于多項式環中的格問題。
技術原理:
- 使用兩個小系數多項式作為私鑰
- 公鑰是這兩個多項式的商在特定環中的表示
- 加密通過與隨機多項式的組合實現
- 解密使用私鑰多項式執行逆運算
優勢:
- 高效實現:比RSA和ECC快數倍
- 專利過期:可自由使用
- 長期安全研究:自1996年提出以來持續研究
應用場景:
- 長期數據加密
- 嵌入式系統加密
- 物聯網安全通信
實現工具:
- NTRU Open Source Project
- OpenQuantumSafe庫
- Bouncy Castle新版
CRYSTALS-Kyber
Kyber是NIST后量子密碼標準化過程中的獲勝者,采用模塊化學習帶錯誤(MLWE)問題。
技術特點:
- 模塊化設計:更高效的實現和驗證
- 可調參數集:根據安全需求和性能平衡
- CCA2安全:抵抗自適應選擇明文攻擊
應用前景:
- 成為后量子TLS的標準KEM
- 替代現有密鑰協商協議
- 用于混合加密方案
實現狀態:
- 正在集成到主流密碼庫
- 多語言實現可用
- TLS和SSH的實驗性支持
4.2 基于哈希的密碼學:SPHINCS+
SPHINCS+是一種無狀態哈希基簽名方案,僅依賴哈希函數的安全性,不需要額外的密碼學假設。
關鍵技術:
- 超樹結構:使用多層默克爾樹
- 少量簽名:減少簽名大小和生成時間
- FORS(Forest of Random Subsets):提高安全性和效率
優缺點:
- 優點:保守安全假設,僅依賴哈希函數
- 缺點:大簽名尺寸(約30KB)和較慢的簽名生成
適用場景:
- 固件驗證
- 軟件發布簽名
- 長期證書
實現工具:
- SPHINCS+參考實現
- PQClean項目
- Open Quantum Safe框架
4.3 基于多變量多項式的密碼學:Rainbow
Rainbow是一種多變量公鑰密碼系統,基于多變量二次方程組求解的困難性。
技術細節:
- 油和醋結構:特殊結構使簽名生成高效
- 多層設計:平衡安全性和效率
- 小簽名尺寸:相比其他后量子方案優勢明顯
安全狀態:
- 注意:2022年被發現存在安全問題
- 不再被推薦用于生產環境
- 研究繼續改進下一代方案
研究價值:
- 多變量密碼學仍是重要研究方向
- 為未來抗量子簽名提供思路
- 合適參數集可能恢復安全性
4.4 基于超橢圓曲線同源系統的密碼學:SIKE
SIKE (Supersingular Isogeny Key Encapsulation) 基于超奇異橢圓曲線同源圖的計算困難性。
原理概述:
- 使用超奇異橢圓曲線的同源映射
- 公鑰是曲線變換的結果
- 私鑰是產生特定同源的整數
- 共享秘密通過計算特殊曲線上的j-不變量獲得
技術特點:
- 最緊湊的后量子方案:密鑰和密文尺寸小
- 基于傳統橢圓曲線操作:可利用現有硬件加速
- 計算密集型:操作復雜且計算量大
安全狀態:
- 注意:2022年被Castryck-Decru攻擊破解
- 已退出NIST標準化流程
- 研究團隊正開發改進版本
研究意義:
- 同源密碼學仍是活躍研究領域
- 為緊湊型后量子方案提供思路
- 改進版本可能修復當前缺陷
4.5 后量子密碼學方案對比
特性 | NTRU | CRYSTALS-Kyber | SPHINCS+ | Rainbow | SIKE |
---|---|---|---|---|---|
密碼類型 | 加密/KEM | KEM | 簽名 | 簽名 | KEM |
數學基礎 | 格問題 | 模塊化格問題 | 哈希函數 | 多變量方程 | 同源圖 |
公鑰大小 | 699-1230字節 | 800-1568字節 | 32-64字節 | ~60KB | ~330字節 |
密文/簽名大小 | 699-1230字節 | 768-1568字節 | ~17-50KB | ~33字節 | ~330字節 |
運算速度 | 快 | 快 | 慢 | 中等 | 非常慢 |
標準化狀態 | 備選 | NIST第一輪選定 | NIST第一輪選定 | 已淘汰 | 已淘汰 |
安全狀態 | 安全 | 安全 | 安全 | 已攻破 | 已攻破 |
實現成熟度 | 高 | 中高 | 中 | 中 | 中 |
主要優勢 | 長期研究 | 效率與安全平衡 | 保守安全假設 | 小簽名尺寸 | 小密鑰尺寸 |
主要劣勢 | 參數選擇復雜 | 相對新 | 大簽名尺寸 | 安全問題 | 已被攻破 |