当前位置: 首页 > news >正文

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

目录

  • 可证明安全
    • 语义安全的公钥密码体制的定义
    • 语义安全的 RSA 加密方案
    • Paillier 公钥密码系统
    • Cramer-Shoup 密码系统
    • RSA-FDH 签名方案
    • BLS 短签名方案
    • 基于身份的密码体制(IBE)
    • 分叉引理

可证明安全

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

  1. 语义安全的核心概念
    语义安全指敌手无法通过密文获取明文的任何信息(即使 1 比特),由 Goldwasser 和 Micali 于 1984 年提出,通过不可区分性(IND)游戏刻画,即敌手无法区分两个明文对应的密文。
  2. 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 安全(最强安全级别)。
  3. 关键假设与问题
    • 离散对数问题(DLP):给定群GGG的生成元gggh∈Gh \in GhG,求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 加密方案

  1. 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^*yZn,求xxx使得y=xemodny = x^e \mod ny=xemodn
    • RSA 假设:RSA 问题在多项式时间内不可解。
  2. 选择明文安全的 RSA 方案(RSA-CPA)
    • 构造
      • 密钥生成:生成n=pqn=pqn=pqe,de,de,ded≡1modI¨†(n)ed \equiv 1 \mod φ(n)ed1modI¨(n)),公钥(n,e)(n,e)(n,e),私钥ddd
      • 加密:对消息MMM,选随机数r∈Zn∗r \in \mathbb{Z}_n^*rZn,计算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)C2MMM
    • 安全性:在随机谕言机模型下,若 RSA 问题困难,则 RSA-CPA 是 IND-CPA 安全的(归约证明:敌手攻击 RSA-CPA 可转化为攻击 RSA 问题)。
  3. 选择密文安全的 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 公钥密码系统

  1. 基础:合数幂剩余类
    • n=pqn=pqn=pq(大素数),Zn2∗\mathbb{Z}_{n^2}^*Zn2中元素zzznnn次剩余若存在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+tnt=0,1,...,n−1t=0,1,...,n-1t=0,1,...,n1)。
  2. Paillier 系统构造
    • 密钥生成:选p,qp,qp,qn=pqn=pqn=pq,私钥I^»=lcm(p−1,q−1)λ = lcm(p-1,q-1)I^»=lcm(p1,q1),公钥n,gn,gn,ggggZn2∗\mathbb{Z}_{n^2}^*Zn2中满足gnmodn2g^n \mod n^2gnmodn2的阶为nnn的元素)。
    • 加密:对M∈ZnM \in \mathbb{Z}_nMZn,选r∈Zn∗r \in \mathbb{Z}_n^*rZn,计算C=gM⋅rnmodn2C = g^M \cdot r^n \mod n^2C=gMrnmodn2
    • 解密:计算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)=(x1)/nI^¼=(L(gI^»modn2))−1modnμ = (L(g^λ \mod n^2))^{-1} \mod nI^¼=(L(gI^»modn2))1modn
  3. 安全性:基于合数幂剩余判定问题,在标准模型下可证明 IND-CPA 安全(不依赖随机谕言机)。

Cramer-Shoup 密码系统

  1. 核心机制:结合 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=g1x1g2x2d=g1y1g2y2d = g_1^{y_1}g_2^{y_2}d=g1y1g2y2h=g1z1g2z2h = g_1^{z_1}g_2^{z_2}h=g1z1g2z2
    • 加密:对MMM,选r∈Zqr \in \mathbb{Z}_qrZq,计算u1=g1ru_1 = g_1^ru1=g1ru2=g2ru_2 = g_2^ru2=g2re=M⋅hre = M \cdot h^re=MhrI^±=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=crdrI^±,密文(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
  2. 安全性:在 DDH 假设和哈希函数防碰撞性下,是 IND-CCA2 安全的(归约证明:敌手攻击可转化为攻击 DDH 问题)。

RSA-FDH 签名方案

  1. RSA 签名的缺陷:标准 RSA 签名不满足 EUF-CMA 安全(敌手可伪造签名)。
  2. FDH 改进:使用全域哈希函数(FDH),将消息哈希后再签名。
    • 密钥生成:同 RSA 加密,公钥(n,e)(n,e)(n,e),私钥ddd
    • 签名:对消息MMM,计算I¨ƒ=H(M)dmodnσ = H(M)^d \mod nI¨ƒ=H(M)dmodnHHH输出与nnn同长)。
    • 验证:检查I¨ƒemodn=H(M)σ^e \mod n = H(M)I¨ƒemodn=H(M)
  3. 安全性:在随机谕言机模型下,若 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(AdvAEUFCMA)2/(4qH)qHq_HqH为哈希询问次数)。

BLS 短签名方案

  1. 基础:双线性映射与间隙群
    • 双线性映射:e:G1×G1→G2e: G_1 \times G_1 \to G_2e:G1×G1G2,满足e(ga,gb)=e(g,g)abe(g^a,g^b) = e(g,g)^{ab}e(ga,gb)=e(g,g)ab
    • 间隙群:DDH 问题易解但 CDH 问题难解的群(如超奇异椭圆曲线点群)。
  2. BLS 方案构造
    • 密钥生成:选间隙群G1G_1G1(生成元ggg),私钥x∈Zqx \in \mathbb{Z}_qxZq,公钥y=gxy = g^xy=gx
    • 签名:对MMM,计算I¨ƒ=H(M)x∈G1σ = H(M)^x \in G_1I¨ƒ=H(M)xG1HHH为全域哈希)。
    • 验证:检查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:G1×G2→GTe: G_1 \times G_2 \to G_Te:G1×G2GT),签名长度可缩短至 168 比特(椭圆曲线实现)。

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

  1. 核心思想:以用户身份(如邮箱)作为公钥,无需证书,简化 PKI 管理。
  2. IBE 的四个算法
    • 初始化:生成系统参数paramsparamsparams和主密钥mskmskmsk
    • 加密:用接收方身份IDIDID加密消息MMM,得密文CCC
    • 密钥生成:用mskmskmskIDIDID生成对应私钥dIDd_{ID}dID
    • 解密:用dIDd_{ID}dID解密密文CCCMMM
  3. 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 问题)。
  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),且最多进行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)。
  3. 应用
    • ElGamal 签名:基于分叉引理,若离散对数问题困难,则 ElGamal 是 EUF-CMA 安全的。
    • Fiat-Shamir 签名:基于分叉引理,若大整数分解问题困难,则 Fiat-Shamir 是 EUF-CMA 安全的。
http://www.xdnf.cn/news/1284463.html

相关文章:

  • 链动 3+1 模式:重构商业增长逻辑的新引擎
  • Mac M1探索AnythingLLM+Ollama+知识库问答
  • 支持任意 MCP 协议的客户端
  • 数据可视化交互深入理解
  • 最终章【1】Epson机器人篇
  • 如何提升需求分析能力
  • maven项目打包成sdk后在别的项目使用
  • 企业级高性能WEB服务器Nginx
  • 编程技能:递归
  • B 树与 B + 树解析与实现
  • SSE流式输出分层与解耦、用户自动结束语错误处理
  • 【13-向量化-高效计算】
  • 【Redis的安装与配置】
  • 高性能Web服务器
  • CSS预处理器之Sass全面解析与实战指南
  • HTML应用指南:利用GET请求获取全国一加授权零售店位置信息
  • C5.3:发射极偏置和LED驱动电路
  • 【07-AGI的讨论】
  • 使用纯NumPy实现回归任务:深入理解机器学习本质
  • golang 基础案例_01
  • Redis 01 数据结构
  • Pytest项目_day11(fixture、conftest)
  • 【PyTorch学习笔记 - 01】 Tensors(张量)
  • C++11的历史和统一的初始化列表
  • Linux中配置DNS
  • Day01_QT编程20250811
  • MaixPy开发环境简介
  • vscode新建esp32工程,没有sample_project怎么办?
  • lesson35:数据库深度解析:从概念到MySQL实战学习指南
  • html转成markdown(1.0.0)