【密码学】9. 可证明安全

发布于:2025-08-14 ⋅ 阅读:(12) ⋅ 点赞:(0)

可证明安全

语义安全的公钥密码体制的定义

  1. 语义安全的核心概念
    语义安全指敌手无法通过密文获取明文的任何信息(即使 1 比特),由 Goldwasser 和 Micali 于 1984 年提出,通过不可区分性(IND)游戏刻画,即敌手无法区分两个明文对应的密文。
  2. IND 游戏分类(基于敌手能力)
    • 选择明文攻击(IND-CPA)
      • 游戏流程:挑战者生成密钥对,敌手可多项式次获取明文加密结果;敌手输出两个等长消息 M 0 , M 1 M_0,M_1 M0,M1,挑战者随机加密其中一个(目标密文);敌手猜测加密的是 M 0 M_0 M0还是 M 1 M_1 M1
      • 敌手优势:KaTeX parse error: Double superscript at position 31: …A}(λ) = |Pr[β'̲=β] - 1/2|,其中 I ^ 2 β I^2是挑战者选择的比特,KaTeX parse error: Double superscript at position 3: β'̲是敌手猜测的比特。
      • 安全定义:若任何多项式时间敌手的优势可忽略,则方案是 IND-CPA 安全的。
    • 选择密文攻击(IND-CCA)
      • 敌手在获得目标密文前,可多项式次询问解密谕言机(输入密文获取明文);其余流程同 IND-CPA。
      • 安全定义:敌手优势可忽略则为 IND-CCA 安全。
    • 适应性选择密文攻击(IND-CCA2)
      • 敌手在获得目标密文后,仍可询问解密谕言机(但不可询问目标密文);其余流程同 IND-CCA。
      • 安全定义:敌手优势可忽略则为 IND-CCA2 安全(最强安全级别)。
  3. 关键假设与问题
    • 离散对数问题(DLP):给定群 G G G的生成元 g g g h ∈ G h \in G hG,求 x x x使得 h = g x h = g^x h=gx,假设其在多项式时间内不可解。
    • 判定性 Diffie-Hellman(DDH)假设:区分 ( g , g a , g b , g a b ) (g, g^a, g^b, g^{ab}) (g,ga,gb,gab)(DH 四元组)与 ( g , g a , g b , g c ) (g, g^a, g^b, g^c) (g,ga,gb,gc)(随机四元组)在计算上不可行,其中 a , b , c a,b,c a,b,c是随机数。
    • ElGamal 加密的 IND-CPA 安全性:在 DDH 假设下,ElGamal 加密方案是 IND-CPA 安全的(通过归约证明:若存在攻击 ElGamal 的敌手,则可构造攻击 DDH 的敌手)。

语义安全的 RSA 加密方案

  1. RSA 问题与假设
    • RSA 问题:已知 n = p q n=pq n=pq(大素数乘积)、 e e e(满足 g c d ( e , I ¨ † ( n ) ) = 1 gcd(e,φ(n))=1 gcd(e,I¨(n))=1)和 y ∈ Z n ∗ y \in \mathbb{Z}_n^* yZn,求 x x x使得 y = x e m o d    n y = x^e \mod n y=xemodn
    • RSA 假设:RSA 问题在多项式时间内不可解。
  2. 选择明文安全的 RSA 方案(RSA-CPA)
    • 构造
      • 密钥生成:生成 n = p q n=pq n=pq e , d e,d e,d e d ≡ 1 m o d    I ¨ † ( n ) ed \equiv 1 \mod φ(n) ed1modI¨(n)),公钥 ( n , e ) (n,e) (n,e),私钥 d d d
      • 加密:对消息 M M M,选随机数 r ∈ Z n ∗ r \in \mathbb{Z}_n^* rZn,计算 C = ( r e m o d    n , H ( r ) ⊕ M ) C = (r^e \mod n, H(r) \oplus M) C=(remodn,H(r)M) H H H为哈希函数,视为随机谕言机)。
      • 解密:用 d d d解出 r = ( C 1 ) d m o d    n r = (C_1)^d \mod n r=(C1)dmodn,计算 H ( r ) ⊕ C 2 H(r) \oplus C_2 H(r)C2 M M M
    • 安全性:在随机谕言机模型下,若 RSA 问题困难,则 RSA-CPA 是 IND-CPA 安全的(归约证明:敌手攻击 RSA-CPA 可转化为攻击 RSA 问题)。
  3. 选择密文安全的 RSA 方案(RSA-CCA)
    • 构造:结合 IND-CCA 安全的对称加密方案,加密为 C = ( r e m o d    n , E n c H ( r ) ( M ) ) C = (r^e \mod n, Enc_{H(r)}(M)) C=(remodn,EncH(r)(M)),解密时验证哈希值后解密。
    • 安全性:在随机谕言机模型下,若 RSA 问题困难且对称加密是 IND-CCA 安全,则 RSA-CCA 是 IND-CCA 安全的。

Paillier 公钥密码系统

  1. 基础:合数幂剩余类
    • n = p q n=pq n=pq(大素数), Z n 2 ∗ \mathbb{Z}_{n^2}^* Zn2中元素 z z z n n n次剩余若存在 y y y使得 z = y n m o d    n 2 z = y^n \mod n^2 z=ynmodn2
    • 引理: n n n次剩余构成 Z n 2 ∗ \mathbb{Z}_{n^2}^* Zn2的子群,阶为 n I ¨ † ( n ) nφ(n) nI¨(n);单位元 1 的 n n n次根为 1 + t n 1+tn 1+tn t = 0 , 1 , . . . , n − 1 t=0,1,...,n-1 t=0,1,...,n1)。
  2. Paillier 系统构造
    • 密钥生成:选 p , q p,q p,q n = p q n=pq n=pq,私钥 I ^ » = l c m ( p − 1 , q − 1 ) λ = lcm(p-1,q-1) I^»=lcm(p1,q1),公钥 n , g n,g n,g g g g Z n 2 ∗ \mathbb{Z}_{n^2}^* Zn2中满足 g n m o d    n 2 g^n \mod n^2 gnmodn2的阶为 n n n的元素)。
    • 加密:对 M ∈ Z n M \in \mathbb{Z}_n MZn,选 r ∈ Z n ∗ r \in \mathbb{Z}_n^* rZn,计算 C = g M ⋅ r n m o d    n 2 C = g^M \cdot r^n \mod n^2 C=gMrnmodn2
    • 解密:计算 L ( C I ^ » m o d    n 2 ) ⋅ I ^ ¼ m o d    n L(C^λ \mod n^2) \cdot μ \mod n L(CI^»modn2)I^¼modn,其中 L ( x ) = ( x − 1 ) / n L(x) = (x-1)/n L(x)=(x1)/n I ^ ¼ = ( L ( g I ^ » m o d    n 2 ) ) − 1 m o d    n μ = (L(g^λ \mod n^2))^{-1} \mod n I^¼=(L(gI^»modn2))1modn
  3. 安全性:基于合数幂剩余判定问题,在标准模型下可证明 IND-CPA 安全(不依赖随机谕言机)。

Cramer-Shoup 密码系统

  1. 核心机制:结合 ElGamal 加密与哈希验证,实现 IND-CCA2 安全。
    • 密钥生成:选群 G G G(阶为素数 q q q)、生成元 g 1 , g 2 g_1,g_2 g1,g2,私钥 x 1 , x 2 , y 1 , y 2 , z 1 , z 2 x_1,x_2,y_1,y_2,z_1,z_2 x1,x2,y1,y2,z1,z2,公钥 c = g 1 x 1 g 2 x 2 c = g_1^{x_1}g_2^{x_2} c=g1x1g2x2 d = g 1 y 1 g 2 y 2 d = g_1^{y_1}g_2^{y_2} d=g1y1g2y2 h = g 1 z 1 g 2 z 2 h = g_1^{z_1}g_2^{z_2} h=g1z1g2z2
    • 加密:对 M M M,选 r ∈ Z q r \in \mathbb{Z}_q rZq,计算 u 1 = g 1 r u_1 = g_1^r u1=g1r u 2 = g 2 r u_2 = g_2^r u2=g2r e = M ⋅ h r e = M \cdot h^r e=Mhr I ^ ± = H ( u 1 , u 2 , e ) α = H(u_1,u_2,e) I^±=H(u1,u2,e) v = c r ⋅ d r I ^ ± v = c^r \cdot d^{rα} v=crdrI^±,密文 ( u 1 , u 2 , e , v ) (u_1,u_2,e,v) (u1,u2,e,v)
    • 解密:验证 v = u 1 x 1 + y 1 I ^ ± ⋅ u 2 x 2 + y 2 I ^ ± v = u_1^{x_1 + y_1α} \cdot u_2^{x_2 + y_2α} v=u1x1+y1I^±u2x2+y2I^±,通过则计算 M = e ⋅ ( u 1 z 1 u 2 z 2 ) − r M = e \cdot (u_1^{z_1}u_2^{z_2})^{-r} M=e(u1z1u2z2)r
  2. 安全性:在 DDH 假设和哈希函数防碰撞性下,是 IND-CCA2 安全的(归约证明:敌手攻击可转化为攻击 DDH 问题)。

RSA-FDH 签名方案

  1. RSA 签名的缺陷:标准 RSA 签名不满足 EUF-CMA 安全(敌手可伪造签名)。
  2. FDH 改进:使用全域哈希函数(FDH),将消息哈希后再签名。
    • 密钥生成:同 RSA 加密,公钥 ( n , e ) (n,e) (n,e),私钥 d d d
    • 签名:对消息 M M M,计算 I ¨ ƒ = H ( M ) d m o d    n σ = H(M)^d \mod n I¨ƒ=H(M)dmodn H H H输出与 n n n同长)。
    • 验证:检查 I ¨ ƒ e m o d    n = H ( M ) σ^e \mod n = H(M) I¨ƒemodn=H(M)
  3. 安全性:在随机谕言机模型下,若 RSA 问题困难,则 RSA-FDH 是 EUF-CMA 安全的(归约证明:敌手伪造签名可转化为解决 RSA 问题)。
    • 改进:定理 9-12 给出更紧的归约,优势为 A d v B R S A ≥ ( A d v A E U F − C M A ) 2 / ( 4 q H ) Adv_{B}^{RSA} \geq (Adv_{A}^{EUF-CMA})^2 / (4q_H) AdvBRSA(AdvAEUFCMA)2/(4qH) q H q_H qH为哈希询问次数)。

BLS 短签名方案

  1. 基础:双线性映射与间隙群
    • 双线性映射: e : G 1 × G 1 → G 2 e: G_1 \times G_1 \to G_2 e:G1×G1G2,满足 e ( g a , g b ) = e ( g , g ) a b e(g^a,g^b) = e(g,g)^{ab} e(ga,gb)=e(g,g)ab
    • 间隙群:DDH 问题易解但 CDH 问题难解的群(如超奇异椭圆曲线点群)。
  2. BLS 方案构造
    • 密钥生成:选间隙群 G 1 G_1 G1(生成元 g g g),私钥 x ∈ Z q x \in \mathbb{Z}_q xZq,公钥 y = g x y = g^x y=gx
    • 签名:对 M M M,计算 I ¨ ƒ = H ( M ) x ∈ G 1 σ = H(M)^x \in G_1 I¨ƒ=H(M)xG1 H H H为全域哈希)。
    • 验证:检查 e ( I ¨ ƒ , g ) = e ( H ( M ) , y ) e(σ,g) = e(H(M),y) e(I¨ƒ,g)=e(H(M),y)
  3. 安全性:在随机谕言机模型下,若间隙群上 CDH 问题困难,则 BLS 是 EUF-CMA 安全的。
    • 改进:使用第二类双线性映射( e : G 1 × G 2 → G T e: G_1 \times G_2 \to G_T e:G1×G2GT),签名长度可缩短至 168 比特(椭圆曲线实现)。

基于身份的密码体制(IBE)

  1. 核心思想:以用户身份(如邮箱)作为公钥,无需证书,简化 PKI 管理。
  2. IBE 的四个算法
    • 初始化:生成系统参数 p a r a m s params params和主密钥 m s k msk msk
    • 加密:用接收方身份 I D ID ID加密消息 M M M,得密文 C C C
    • 密钥生成:用 m s k msk msk I D ID ID生成对应私钥 d I D d_{ID} dID
    • 解密:用 d I D d_{ID} dID解密密文 C C C M M M
  3. Boneh-Franklin(BF)方案
    • 基于 BDH 问题(双线性 Diffie-Hellman 问题):给定 g , g a , g b , g c g, g^a, g^b, g^c g,ga,gb,gc,计算 e ( g , g ) a b c e(g,g)^{abc} e(g,g)abc
    • 安全性:在随机谕言机模型下,BF 方案是 IND-ID-CPA 安全的(归约到 BDH 问题)。
  4. 安全模型
    • IND-ID-CPA:敌手可询问多个身份的私钥,挑战时无法区分两个消息的加密结果。
    • IND-ID-CCA:敌手可询问解密谕言机(除挑战身份),安全性更强。

分叉引理

  1. 适用场景:需多个相关伪造签名破解困难问题的方案(如 ElGamal、Fiat-Shamir 签名)。
  2. 引理内容:若敌手以优势 I ^ µ ε I^µ输出一个有效签名 ( m , I ¨ ƒ 1 , h , I ¨ ƒ 2 ) (m,σ_1,h,σ_2) (m,I¨ƒ1,h,I¨ƒ2),且最多进行 q H q_H qH次哈希询问,则存在概率至少 I ^ µ ( I ^ µ − 2 / q H ) ε(ε - 2/q_H) I^µ(I^µ2/qH)输出两个签名 ( m , I ¨ ƒ 1 , h , I ¨ ƒ 2 ) (m,σ_1,h,σ_2) (m,I¨ƒ1,h,I¨ƒ2) ( m , I ¨ ƒ 1 , h ′ , I ¨ ƒ 2 ′ ) (m,σ_1,h',σ_2') (m,I¨ƒ1,h,I¨ƒ2) h ≠ h ′ h \neq h' h=h)。
  3. 应用
    • ElGamal 签名:基于分叉引理,若离散对数问题困难,则 ElGamal 是 EUF-CMA 安全的。
    • Fiat-Shamir 签名:基于分叉引理,若大整数分解问题困难,则 Fiat-Shamir 是 EUF-CMA 安全的。