目录
- 可证明安全
- 语义安全的公钥密码体制的定义
- 语义安全的 RSA 加密方案
- Paillier 公钥密码系统
- Cramer-Shoup 密码系统
- RSA-FDH 签名方案
- BLS 短签名方案
- 基于身份的密码体制(IBE)
- 分叉引理
可证明安全
语义安全的公钥密码体制的定义
- 语义安全的核心概念
语义安全指敌手无法通过密文获取明文的任何信息(即使 1 比特),由 Goldwasser 和 Micali 于 1984 年提出,通过不可区分性(IND)游戏刻画,即敌手无法区分两个明文对应的密文。 - IND 游戏分类(基于敌手能力)
- 选择明文攻击(IND-CPA):
- 游戏流程:挑战者生成密钥对,敌手可多项式次获取明文加密结果;敌手输出两个等长消息M0,M1M_0,M_1M0,M1,挑战者随机加密其中一个(目标密文);敌手猜测加密的是M0M_0M0还是M1M_1M1。
- 敌手优势: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 安全(最强安全级别)。
- 关键假设与问题
- 离散对数问题(DLP):给定群GGG的生成元ggg和h∈Gh \in Gh∈G,求xxx使得h=gxh = g^xh=gx,假设其在多项式时间内不可解。
- 判定性 Diffie-Hellman(DDH)假设:区分(g,ga,gb,gab)(g, g^a, g^b, g^{ab})(g,ga,gb,gab)(DH 四元组)与(g,ga,gb,gc)(g, g^a, g^b, g^c)(g,ga,gb,gc)(随机四元组)在计算上不可行,其中a,b,ca,b,ca,b,c是随机数。
- ElGamal 加密的 IND-CPA 安全性:在 DDH 假设下,ElGamal 加密方案是 IND-CPA 安全的(通过归约证明:若存在攻击 ElGamal 的敌手,则可构造攻击 DDH 的敌手)。
语义安全的 RSA 加密方案
- RSA 问题与假设
- RSA 问题:已知n=pqn=pqn=pq(大素数乘积)、eee(满足gcd(e,I¨†(n))=1gcd(e,φ(n))=1gcd(e,I¨†(n))=1)和y∈Zn∗y \in \mathbb{Z}_n^*y∈Zn∗,求xxx使得y=xemodny = x^e \mod ny=xemodn。
- RSA 假设:RSA 问题在多项式时间内不可解。
- 选择明文安全的 RSA 方案(RSA-CPA)
- 构造:
- 密钥生成:生成n=pqn=pqn=pq、e,de,de,d(ed≡1modI¨†(n)ed \equiv 1 \mod φ(n)ed≡1modI¨†(n)),公钥(n,e)(n,e)(n,e),私钥ddd。
- 加密:对消息MMM,选随机数r∈Zn∗r \in \mathbb{Z}_n^*r∈Zn∗,计算C=(remodn,H(r)⊕M)C = (r^e \mod n, H(r) \oplus M)C=(remodn,H(r)⊕M)(HHH为哈希函数,视为随机谕言机)。
- 解密:用ddd解出r=(C1)dmodnr = (C_1)^d \mod nr=(C1)dmodn,计算H(r)⊕C2H(r) \oplus C_2H(r)⊕C2得MMM。
- 安全性:在随机谕言机模型下,若 RSA 问题困难,则 RSA-CPA 是 IND-CPA 安全的(归约证明:敌手攻击 RSA-CPA 可转化为攻击 RSA 问题)。
- 选择密文安全的 RSA 方案(RSA-CCA)
- 构造:结合 IND-CCA 安全的对称加密方案,加密为C=(remodn,EncH(r)(M))C = (r^e \mod n, Enc_{H(r)}(M))C=(remodn,EncH(r)(M)),解密时验证哈希值后解密。
- 安全性:在随机谕言机模型下,若 RSA 问题困难且对称加密是 IND-CCA 安全,则 RSA-CCA 是 IND-CCA 安全的。
Paillier 公钥密码系统
- 基础:合数幂剩余类
- 设n=pqn=pqn=pq(大素数),Zn2∗\mathbb{Z}_{n^2}^*Zn2∗中元素zzz是nnn次剩余若存在yyy使得z=ynmodn2z = y^n \mod n^2z=ynmodn2。
- 引理:nnn次剩余构成Zn2∗\mathbb{Z}_{n^2}^*Zn2∗的子群,阶为nI¨†(n)nφ(n)nI¨†(n);单位元 1 的nnn次根为1+tn1+tn1+tn(t=0,1,...,n−1t=0,1,...,n-1t=0,1,...,n−1)。
- Paillier 系统构造
- 密钥生成:选p,qp,qp,q,n=pqn=pqn=pq,私钥I^»=lcm(p−1,q−1)λ = lcm(p-1,q-1)I^»=lcm(p−1,q−1),公钥n,gn,gn,g(ggg是Zn2∗\mathbb{Z}_{n^2}^*Zn2∗中满足gnmodn2g^n \mod n^2gnmodn2的阶为nnn的元素)。
- 加密:对M∈ZnM \in \mathbb{Z}_nM∈Zn,选r∈Zn∗r \in \mathbb{Z}_n^*r∈Zn∗,计算C=gM⋅rnmodn2C = g^M \cdot r^n \mod n^2C=gM⋅rnmodn2。
- 解密:计算L(CI^»modn2)⋅I^¼modnL(C^λ \mod n^2) \cdot μ \mod nL(CI^»modn2)⋅I^¼modn,其中L(x)=(x−1)/nL(x) = (x-1)/nL(x)=(x−1)/n,I^¼=(L(gI^»modn2))−1modnμ = (L(g^λ \mod n^2))^{-1} \mod nI^¼=(L(gI^»modn2))−1modn。
- 安全性:基于合数幂剩余判定问题,在标准模型下可证明 IND-CPA 安全(不依赖随机谕言机)。
Cramer-Shoup 密码系统
- 核心机制:结合 ElGamal 加密与哈希验证,实现 IND-CCA2 安全。
- 密钥生成:选群GGG(阶为素数qqq)、生成元g1,g2g_1,g_2g1,g2,私钥x1,x2,y1,y2,z1,z2x_1,x_2,y_1,y_2,z_1,z_2x1,x2,y1,y2,z1,z2,公钥c=g1x1g2x2c = g_1^{x_1}g_2^{x_2}c=g1x1g2x2,d=g1y1g2y2d = g_1^{y_1}g_2^{y_2}d=g1y1g2y2,h=g1z1g2z2h = g_1^{z_1}g_2^{z_2}h=g1z1g2z2。
- 加密:对MMM,选r∈Zqr \in \mathbb{Z}_qr∈Zq,计算u1=g1ru_1 = g_1^ru1=g1r,u2=g2ru_2 = g_2^ru2=g2r,e=M⋅hre = M \cdot h^re=M⋅hr,I^±=H(u1,u2,e)α = H(u_1,u_2,e)I^±=H(u1,u2,e),v=cr⋅drI^±v = c^r \cdot d^{rα}v=cr⋅drI^±,密文(u1,u2,e,v)(u_1,u_2,e,v)(u1,u2,e,v)。
- 解密:验证v=u1x1+y1I^±⋅u2x2+y2I^±v = u_1^{x_1 + y_1α} \cdot u_2^{x_2 + y_2α}v=u1x1+y1I^±⋅u2x2+y2I^±,通过则计算M=e⋅(u1z1u2z2)−rM = e \cdot (u_1^{z_1}u_2^{z_2})^{-r}M=e⋅(u1z1u2z2)−r。
- 安全性:在 DDH 假设和哈希函数防碰撞性下,是 IND-CCA2 安全的(归约证明:敌手攻击可转化为攻击 DDH 问题)。
RSA-FDH 签名方案
- RSA 签名的缺陷:标准 RSA 签名不满足 EUF-CMA 安全(敌手可伪造签名)。
- FDH 改进:使用全域哈希函数(FDH),将消息哈希后再签名。
- 密钥生成:同 RSA 加密,公钥(n,e)(n,e)(n,e),私钥ddd。
- 签名:对消息MMM,计算I¨ƒ=H(M)dmodnσ = H(M)^d \mod nI¨ƒ=H(M)dmodn(HHH输出与nnn同长)。
- 验证:检查I¨ƒemodn=H(M)σ^e \mod n = H(M)I¨ƒemodn=H(M)。
- 安全性:在随机谕言机模型下,若 RSA 问题困难,则 RSA-FDH 是 EUF-CMA 安全的(归约证明:敌手伪造签名可转化为解决 RSA 问题)。
- 改进:定理 9-12 给出更紧的归约,优势为AdvBRSA≥(AdvAEUF−CMA)2/(4qH)Adv_{B}^{RSA} \geq (Adv_{A}^{EUF-CMA})^2 / (4q_H)AdvBRSA≥(AdvAEUF−CMA)2/(4qH)(qHq_HqH为哈希询问次数)。
BLS 短签名方案
- 基础:双线性映射与间隙群
- 双线性映射:e:G1×G1→G2e: G_1 \times G_1 \to G_2e:G1×G1→G2,满足e(ga,gb)=e(g,g)abe(g^a,g^b) = e(g,g)^{ab}e(ga,gb)=e(g,g)ab。
- 间隙群:DDH 问题易解但 CDH 问题难解的群(如超奇异椭圆曲线点群)。
- BLS 方案构造
- 密钥生成:选间隙群G1G_1G1(生成元ggg),私钥x∈Zqx \in \mathbb{Z}_qx∈Zq,公钥y=gxy = g^xy=gx。
- 签名:对MMM,计算I¨ƒ=H(M)x∈G1σ = H(M)^x \in G_1I¨ƒ=H(M)x∈G1(HHH为全域哈希)。
- 验证:检查e(I¨ƒ,g)=e(H(M),y)e(σ,g) = e(H(M),y)e(I¨ƒ,g)=e(H(M),y)。
- 安全性:在随机谕言机模型下,若间隙群上 CDH 问题困难,则 BLS 是 EUF-CMA 安全的。
- 改进:使用第二类双线性映射(e:G1×G2→GTe: G_1 \times G_2 \to G_Te:G1×G2→GT),签名长度可缩短至 168 比特(椭圆曲线实现)。
基于身份的密码体制(IBE)
- 核心思想:以用户身份(如邮箱)作为公钥,无需证书,简化 PKI 管理。
- IBE 的四个算法
- 初始化:生成系统参数paramsparamsparams和主密钥mskmskmsk。
- 加密:用接收方身份IDIDID加密消息MMM,得密文CCC。
- 密钥生成:用mskmskmsk和IDIDID生成对应私钥dIDd_{ID}dID。
- 解密:用dIDd_{ID}dID解密密文CCC得MMM。
- Boneh-Franklin(BF)方案
- 基于 BDH 问题(双线性 Diffie-Hellman 问题):给定g,ga,gb,gcg, g^a, g^b, g^cg,ga,gb,gc,计算e(g,g)abce(g,g)^{abc}e(g,g)abc。
- 安全性:在随机谕言机模型下,BF 方案是 IND-ID-CPA 安全的(归约到 BDH 问题)。
- 安全模型
- IND-ID-CPA:敌手可询问多个身份的私钥,挑战时无法区分两个消息的加密结果。
- IND-ID-CCA:敌手可询问解密谕言机(除挑战身份),安全性更强。
分叉引理
- 适用场景:需多个相关伪造签名破解困难问题的方案(如 ElGamal、Fiat-Shamir 签名)。
- 引理内容:若敌手以优势I^µÎµI^µ输出一个有效签名(m,I¨ƒ1,h,I¨ƒ2)(m,σ_1,h,σ_2)(m,I¨ƒ1,h,I¨ƒ2),且最多进行qHq_HqH次哈希询问,则存在概率至少I^µ(I^µ−2/qH)ε(ε - 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′)。
- 应用
- ElGamal 签名:基于分叉引理,若离散对数问题困难,则 ElGamal 是 EUF-CMA 安全的。
- Fiat-Shamir 签名:基于分叉引理,若大整数分解问题困难,则 Fiat-Shamir 是 EUF-CMA 安全的。