非对称密码

第4章 非对称密码

非对称密码学(Asymmetric Cryptography),也称为公钥密码学(Public Key Cryptography),是现代密码学的重要分支。与对称密码学使用单一密钥不同,非对称密码学使用一对数学相关的密钥:公钥(Public Key)和私钥(Private Key)。这一革命性的概念解决了对称密码学中密钥分发的根本问题,为现代网络安全奠定了基础。

4.1 非对称密码的基本概念

4.1.1 核心思想

非对称密码学的核心思想是使用一对密钥,其中:

  • 公钥(Public Key):可以公开分享,用于加密数据或验证数字签名
  • 私钥(Private Key):必须严格保密,用于解密数据或生成数字签名

这两个密钥在数学上相关联,但从一个密钥推导出另一个密钥在计算上是不可行的。

4.1.2 工作原理

加密过程:

  1. 接收方生成一对密钥(公钥和私钥)
  2. 接收方公开分享公钥,保密私钥
  3. 发送方使用接收方的公钥加密明文: C = E K p u b ( P ) C = E_{K_{pub}}(P) C=EKpub(P)
  4. 接收方使用自己的私钥解密密文: P = D K p r i v ( C ) P = D_{K_{priv}}(C) P=DKpriv(C)

数字签名过程:

  1. 发送方使用自己的私钥对消息生成签名: S = S i g n K p r i v ( M ) S = Sign_{K_{priv}}(M) S=SignKpriv(M)
  2. 接收方使用发送方的公钥验证签名: V e r i f y K p u b ( M , S ) Verify_{K_{pub}}(M, S) VerifyKpub(M,S)

4.1.3 数学基础

非对称密码学的安全性基于某些数学难题,这些问题在正向计算时相对容易,但逆向计算时极其困难(单向函数):

  • 大整数分解问题:给定两个大质数的乘积,分解出原始质数
  • 离散对数问题 :在有限域中,已知 g x   m o d   p g^x \bmod p gxmodp,求解 x x x
  • 椭圆曲线离散对数问题:椭圆曲线上的离散对数变种

4.2 RSA算法

RSA算法由Rivest、Shamir和Adleman于1977年提出,是最著名和应用最广泛的非对称加密算法。

4.2.1 RSA密钥生成

步骤:

  1. 选择两个大质数 :选择两个不同的大质数 p p p 和 q q q(通常各为1024位或更长)
  2. 计算模数 : n = p × q n = p \times q n=p×q
  3. 计算欧拉函数 : φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n) = (p-1)(q-1) φ(n)=(p−1)(q−1)
  4. 选择公钥指数 :选择整数 e e e,满足 1 < e < φ ( n ) 1 < e < \varphi(n) 1<e<φ(n) 且 gcd ⁡ ( e , φ ( n ) ) = 1 \gcd(e, \varphi(n)) = 1 gcd(e,φ(n))=1
    • 常用值: e = 65537 = 2 16 + 1 e = 65537 = 2^{16} + 1 e=65537=216+1
  5. 计算私钥指数 :计算 d d d,使得 e d ≡ 1 ( m o d φ ( n ) ) ed \equiv 1 \pmod{\varphi(n)} ed≡1(modφ(n))
    • 使用扩展欧几里得算法求解

密钥对:

  • 公钥: ( n , e ) (n, e) (n,e)
  • 私钥: ( n , d ) (n, d) (n,d)

4.2.2 RSA加密与解密

加密(使用公钥):
C = M e   m o d   n C = M^e \bmod n C=Memodn

解密(使用私钥):
M = C d   m o d   n M = C^d \bmod n M=Cdmodn

正确性证明:

根据欧拉定理,当 gcd ⁡ ( M , n ) = 1 \gcd(M, n) = 1 gcd(M,n)=1 时:
M φ ( n ) ≡ 1 ( m o d n ) M^{\varphi(n)} \equiv 1 \pmod{n} Mφ(n)≡1(modn)

由于 e d ≡ 1 ( m o d φ ( n ) ) ed \equiv 1 \pmod{\varphi(n)} ed≡1(modφ(n)),存在整数 k k k 使得 e d = 1 + k φ ( n ) ed = 1 + k\varphi(n) ed=1+kφ(n)

因此:
C d = ( M e ) d = M e d = M 1 + k φ ( n ) = M ⋅ ( M φ ( n ) ) k ≡ M ⋅ 1 k = M ( m o d n ) C^d = (M^e)^d = M^{ed} = M^{1+k\varphi(n)} = M \cdot (M^{\varphi(n)})^k \equiv M \cdot 1^k = M \pmod{n} Cd=(Me)d=Med=M1+kφ(n)=M⋅(Mφ(n))k≡M⋅1k=M(modn)

4.2.3 RSA数字签名

签名生成(使用私钥):
S = H ( M ) d   m o d   n S = H(M)^d \bmod n S=H(M)dmodn

签名验证(使用公钥):

验证 S e   m o d   n = H ( M ) S^e \bmod n = H(M) Semodn=H(M)

其中 H ( M ) H(M) H(M) 是消息 M M M 的哈希值。

4.2.4 RSA安全性

RSA的安全性基于大整数分解问题的困难性:

  • 密钥长度:推荐使用2048位或更长的密钥
  • 质数选择 : p p p 和 q q q 应该长度相近但不能太接近
  • 随机性:质数生成必须使用密码学安全的随机数生成器

常见攻击:

  • 小指数攻击 :当 e e e 很小且明文也很小时
  • 共模攻击 :多个用户使用相同的 n n n 但不同的 e e e
  • 时间攻击:通过分析解密时间推断私钥信息

4.3 椭圆曲线密码学(ECC)

椭圆曲线密码学(Elliptic Curve Cryptography, ECC)是基于椭圆曲线数学结构的公钥密码学方法。

4.3.1 椭圆曲线基础

椭圆曲线方程(Weierstrass形式):
y 2 = x 3 + a x + b ( m o d p ) y^2 = x^3 + ax + b \pmod{p} y2=x3+ax+b(modp)

其中 4 a 3 + 27 b 2 ≢ 0 ( m o d p ) 4a^3 + 27b^2 \not\equiv 0 \pmod{p} 4a3+27b2≡0(modp)(确保曲线非奇异)

点运算:

  • 点加法:椭圆曲线上两点的加法运算
  • 标量乘法 :点 P P P 的 k k k 倍: k P = P + P + ⋯ + P kP = P + P + \cdots + P kP=P+P+⋯+P( k k k 次)

4.3.2 椭圆曲线离散对数问题(ECDLP)

给定椭圆曲线上的点 P P P 和 Q = k P Q = kP Q=kP,求解标量 k k k 的问题。这个问题比传统的离散对数问题更难解决。

4.3.3 椭圆曲线密钥生成

  1. 选择椭圆曲线 :选择合适的椭圆曲线和基点 G G G
  2. 生成私钥 :随机选择整数 d d d( 1 < d < n 1 < d < n 1<d<n, n n n 是基点的阶)
  3. 计算公钥 : Q = d G Q = dG Q=dG

密钥对:

  • 私钥: d d d
  • 公钥: ( E , G , Q ) (E, G, Q) (E,G,Q),其中 E E E 是椭圆曲线, G G G 是基点

4.3.4 ECDH密钥交换

椭圆曲线Diffie-Hellman(ECDH)密钥交换协议:

  1. Alice选择私钥 d A d_A dA,计算公钥 Q A = d A G Q_A = d_A G QA=dAG
  2. Bob选择私钥 d B d_B dB,计算公钥 Q B = d B G Q_B = d_B G QB=dBG
  3. Alice和Bob交换公钥
  4. 共享密钥: K = d A Q B = d B Q A = d A d B G K = d_A Q_B = d_B Q_A = d_A d_B G K=dAQB=dBQA=dAdBG

4.3.5 ECC优势

相比RSA,ECC具有以下优势:

  • 密钥长度短:256位ECC密钥提供与3072位RSA相当的安全性
  • 计算效率高:加密解密速度更快
  • 存储空间小:适合资源受限的环境
  • 带宽需求低:传输开销更小

4.4 Diffie-Hellman密钥交换

Diffie-Hellman密钥交换协议是第一个公开发表的公钥密码学方案,解决了密钥分发问题。

4.4.1 协议步骤

  1. 公共参数 :选择大质数 p p p 和生成元 g g g
  2. Alice的操作
    • 选择私钥 a a a(随机整数)
    • 计算并发送 A = g a   m o d   p A = g^a \bmod p A=gamodp
  3. Bob的操作
    • 选择私钥 b b b(随机整数)
    • 计算并发送 B = g b   m o d   p B = g^b \bmod p B=gbmodp
  4. 共享密钥计算
    • Alice计算: K = B a = ( g b ) a = g a b   m o d   p K = B^a = (g^b)^a = g^{ab} \bmod p K=Ba=(gb)a=gabmodp
    • Bob计算: K = A b = ( g a ) b = g a b   m o d   p K = A^b = (g^a)^b = g^{ab} \bmod p K=Ab=(ga)b=gabmodp

4.4.2 安全性分析

安全性基础:离散对数问题的困难性

中间人攻击:DH协议本身不提供身份认证,容易受到中间人攻击。解决方案包括:

  • 使用数字证书
  • 结合身份认证机制
  • 使用认证的密钥交换协议

4.5 数字签名

数字签名提供消息的完整性、认证性和不可否认性。

4.5.1 数字签名的特性

  • 完整性:确保消息未被篡改
  • 认证性:确认消息来源的真实性
  • 不可否认性:发送方无法否认已发送的消息

4.5.2 DSA(数字签名算法)

DSA是基于离散对数问题的数字签名标准。

参数生成:

  1. 选择质数 p p p(1024位或更长)和 q q q(160位或更长),满足 q ∣ ( p − 1 ) q | (p-1) q∣(p−1)
  2. 选择生成元 g g g,满足 g q ≡ 1 ( m o d p ) g^q \equiv 1 \pmod{p} gq≡1(modp) 且 g > 1 g > 1 g>1
  3. 选择私钥 x x x( 0 < x < q 0 < x < q 0<x<q)
  4. 计算公钥 y = g x   m o d   p y = g^x \bmod p y=gxmodp

签名生成:

  1. 选择随机数 k k k( 0 < k < q 0 < k < q 0<k<q)
  2. 计算 r = ( g k   m o d   p )   m o d   q r = (g^k \bmod p) \bmod q r=(gkmodp)modq
  3. 计算 s = k − 1 ( H ( m ) + x r )   m o d   q s = k^{-1}(H(m) + xr) \bmod q s=k−1(H(m)+xr)modq
  4. 签名为 ( r , s ) (r, s) (r,s)

签名验证:

  1. 计算 w = s − 1   m o d   q w = s^{-1} \bmod q w=s−1modq
  2. 计算 u 1 = H ( m ) ⋅ w   m o d   q u_1 = H(m) \cdot w \bmod q u1=H(m)⋅wmodq
  3. 计算 u 2 = r ⋅ w   m o d   q u_2 = r \cdot w \bmod q u2=r⋅wmodq
  4. 计算 v = ( ( g u 1 ⋅ y u 2 )   m o d   p )   m o d   q v = ((g^{u_1} \cdot y^{u_2}) \bmod p) \bmod q v=((gu1⋅yu2)modp)modq
  5. 验证 v = r v = r v=r

4.6 非对称密码的应用

4.6.1 HTTPS/TLS

HTTPS协议使用非对称密码学建立安全连接:

  1. 证书验证:使用RSA或ECC验证服务器身份
  2. 密钥交换:使用DH或ECDH交换会话密钥
  3. 对称加密:使用交换的密钥进行后续通信加密

4.6.2 数字证书与PKI

**公钥基础设施(PKI)**包括:

  • 证书颁发机构(CA):颁发和管理数字证书
  • 数字证书:绑定公钥与身份信息
  • 证书撤销列表(CRL):列出已撤销的证书

4.6.3 电子邮件安全

  • PGP/GPG:使用RSA或ECC进行邮件加密和签名
  • S/MIME:基于X.509证书的邮件安全标准

4.6.4 区块链与加密货币

  • 比特币:使用ECDSA进行交易签名
  • 以太坊:使用secp256k1椭圆曲线
  • 数字钱包:私钥管理和交易签名

4.7 性能比较与选择

4.7.1 算法性能对比

算法 密钥长度 加密速度 解密速度 签名速度 验证速度 安全等级
RSA-2048 2048位 很慢 很慢 112位
RSA-3072 3072位 很慢 极慢 极慢 128位
ECC-256 256位 128位
ECC-384 384位 中等 中等 中等 中等 192位

4.7.2 选择建议

RSA适用场景:

  • 兼容性要求高的系统
  • 主要用于签名验证的场景
  • 传统系统升级

ECC适用场景:

  • 移动设备和物联网
  • 高性能要求的系统
  • 带宽受限的环境
  • 新系统设计

4.8 安全考虑与最佳实践

4.8.1 密钥管理

  • 密钥长度:使用足够长的密钥(RSA ≥ 2048位,ECC ≥ 256位)
  • 密钥存储:使用硬件安全模块(HSM)或安全存储
  • 密钥轮换:定期更换密钥
  • 密钥备份:安全备份关键密钥

4.8.2 实现安全

  • 侧信道攻击防护:防止时间攻击、功耗攻击等
  • 随机数生成:使用密码学安全的随机数生成器
  • 填充方案:使用安全的填充方案(如OAEP)
  • 哈希函数:使用安全的哈希函数(SHA-256或更强)

4.8.3 协议安全

  • 前向安全性:使用临时密钥确保前向安全
  • 身份认证:结合数字证书进行身份验证
  • 重放攻击防护:使用时间戳或随机数防止重放
  • 中间人攻击防护:验证证书链和主机名

结论

非对称密码学是现代信息安全的基石,解决了对称密码学中密钥分发的根本问题。通过RSA、ECC、DH等算法,非对称密码学为数字通信提供了加密、数字签名和密钥交换等核心功能。

随着量子计算的发展,传统的非对称密码算法面临新的挑战。后量子密码学正在兴起,基于格、编码理论、多变量等数学问题的新算法正在研发中。未来的密码学将需要在安全性、性能和实用性之间找到新的平衡。

在实际应用中,应根据具体需求选择合适的算法,注重密钥管理和实现安全,并持续关注密码学技术的发展趋势,确保系统的长期安全性。

算法对比总结

特性 RSA ECC DH
数学基础 大整数分解 椭圆曲线离散对数 离散对数
密钥长度 长(2048-4096位) 短(256-521位) 长(2048-3072位)
计算效率 中等
存储需求 中等
主要用途 加密、签名 加密、签名、密钥交换 密钥交换
标准化程度
量子抗性

引文

相关推荐
智算菩萨7 小时前
【通信原理】梭光纤与遨游电波:有线与无线信道的深度解析
网络
czy87874758 小时前
深入理解 TCP 协议中三次握手建立连接和四次挥手关闭连接的核心逻辑
网络·网络协议·tcp/ip
咖啡の猫8 小时前
微信小程序网络数据请求
网络·微信小程序·小程序
boring_1118 小时前
AI时代本质的思考
网络·人工智能·智能路由器
BEOL贝尔科技8 小时前
通过采集器监测环境的温湿度如果这个采集器连上网络接入云平台会发生什么呢?
网络·人工智能·数据分析
wearegogog1239 小时前
基于MATLAB的D2D仿真场景实现
开发语言·网络·matlab
Godspeed Zhao9 小时前
现代智能汽车中的无线技术00——智能汽车的无线依赖
网络·汽车
独自破碎E9 小时前
【字符串分割】验证IP地址
服务器·网络·tcp/ip
数通工程师9 小时前
实操教程:华为防火墙HRP主备模式完整配置步骤
运维·服务器·网络·网络协议·tcp/ip·华为
弥生赞歌9 小时前
防御保护课程综合实验
网络