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

【密码学】7. 数字签名

目录

  • 数字签名
    • 数字签名的基本概念
    • RSA 数字签名
    • ElGamal 数字签名
    • 数字签名标准(DSS)
    • 其他数字签名
      • 基于离散对数问题的数字签名
      • 基于大整数分解问题的数字签名
      • 具有特殊用途的数字签名

数字签名

数字签名的基本概念

  1. 核心特性
    • 不可伪造性:仅签名者能生成合法签名,他人无法伪造。
    • 认证性:接收者可确认签名来自签名者。
    • 不可重复使用性:一个消息的签名不能用于其他消息。
    • 不可修改性:消息签名后无法被篡改。
    • 不可否认性:签名者事后不能否认自己的签名。
  2. 签名体制组成
    • 签名算法:输入消息 mmm 和密钥 kkk,输出签名 s=Sigk(m)s = Sig_k(m)s=Sigk(m)
    • 验证算法:输入消息 mmm 和签名 sss,输出 “真” 或 “伪”(Ver(m,s)Ver(m, s)Ver(m,s))。
    • 安全性基础:从 mmmsss 难以推出密钥 kkk,或伪造可验证的消息 - 签名对。
  3. 分类方式
    • 按用途:普通数字签名、特殊用途签名(盲签名、不可否认签名、群签名、代理签名等)。
    • 按消息恢复功能:具有消息恢复功能、不具有消息恢复功能。
    • 按随机数使用:确定性数字签名、随机化数字签名。

RSA 数字签名

  1. 参数与密钥生成
    • 选两个保密大素数 pppqqq,计算 n=pqn = pqn=pq,欧拉函数 φ(n)=(p−1)(q−1)φ(n) = (p-1)(q-1)φ(n)=(p1)(q1)
    • 随机选 eee1<e<φ(n)1 < e < φ(n)1<e<φ(n)gcd(e,φ(n))=1gcd(e, φ(n)) = 1gcd(e,φ(n))=1),计算 ddd 满足de≡1modφ(n)de ≡ 1 mod φ(n)de1modφ(n)
    • 公钥为 (e,n)(e, n)(e,n),私钥为 ddd
  2. 签名与验证
    • 签名:对消息 m∈Znm ∈ ZₙmZns=Sigk(m)=mdmodns = Sig_k(m) = m^d mod ns=Sigk(m)=mdmodn
    • 验证:若 m=semodnm = s^e mod nm=semodn,则签名有效。
  3. 缺陷
    • 伪造随机消息签名:选 sss,计算 m=semodnm = s^e mod nm=semodn,则 sssmmm 的伪造签名。
    • 对消息组合脆弱:若 m1m_1m1 的签名为 s1s_1s1m2m_2m2 的签名为 s2s_2s2,则 m1m2m_1m_2m1m2 的伪造签名为 s1s2modns_1s_2 mod ns1s2modn(因 (m1m2)d=m1dm2dmodn(m_1m_2)^d = m_1^dm_2^d mod n(m1m2)d=m1dm2dmodn)。
    • 消息长度限制:仅能对 log2nlog_2nlog2n 位消息签名,长消息需分组,导致签名变长、运算量增加。
  4. 改进方法
    • 对消息的 Hash 值签名:签名 s=h(m)dmodns = h(m)^d mod ns=h(m)dmodn,验证时检查 h(m)=semodnh(m) = s^e mod nh(m)=semodnhhh 为 Hash 函数)。

ElGamal 数字签名

  1. 参数与密钥生成
    • 选大素数 pppgggZp∗Z_p*Zp 的本原元(pppggg 公开)。
    • 随机选 xxx1≤x≤p−21 ≤ x ≤ p-21xp2),计算 y=gxmodpy = g^x mod py=gxmodp
    • 公钥为 yyy,私钥为 xxx
  2. 签名与验证
    • 签名:对消息 mmm,随机选 kkk1≤k≤p−21 ≤ k ≤ p-21kp2),计算 r=gkmodpr = g^k mod pr=gkmodps=(h(m)−xr)k−1mod(p−1)s = (h(m) - xr)k^{-1} mod (p-1)s=(h(m)xr)k1mod(p1)hhh 为 Hash 函数),签名为(r,s)(r, s)(r,s)
    • 验证:若 yr∗rs≡gh(m)modpy^r * r^s ≡ g^{h(m)} mod pyrrsgh(m)modp,则签名有效。

数字签名标准(DSS)

  1. 参数与密钥生成
    • pppLLL 位素数(512≤L≤1024512 ≤ L ≤ 1024512L1024LLL 是 64 的倍数),qqq:160 位素数且 q∣(p−1)q | (p-1)q(p1)
    • hhh1<h<p−11 < h < p-11<h<p1),计算 g=h(p−1)qmodpg = h^{(p-1) \over q} mod pg=hq(p1)modpggg 为生成元)。
    • 随机选 xxx0<x<q0 < x < q0<x<q),计算 y=gxmodpy = g^x mod py=gxmodp
    • 公开参数 p,q,gp, q, gp,q,g,公钥 yyy,私钥 xxx
  2. 签名与验证
    • 签名:对消息 mmm,随机选 kkk0<k<q0 < k < q0<k<q),计算 r=(gkmodp)modqr = (g^k mod p) mod qr=(gkmodp)modqs=k−1(h(m)+xr)modqs = k^{-1}(h(m) + xr) mod qs=k1(h(m)+xr)modqhhh 为 SHA-1),签名为 (r,s)(r, s)(r,s)
    • 验证:计算 w=s−1modqw = s^{-1} mod qw=s1modqu1=h(m)wmodqu₁ = h(m)w mod qu1=h(m)wmodqu2=rwmodqu₂ = rw mod qu2=rwmodqv=(gu1∗yu2modp)modqv = (g^{u_1} * y^{u_2} mod p) mod qv=(gu1yu2modp)modq,若 v=rv = rv=r,则签名有效。

其他数字签名

基于离散对数问题的数字签名

  1. 离散对数签名方案(通用框架)
    • 参数:大素数 pppqqqp−1p-1p1 的大素因子,g∈Zp∗g ∈ Zₚ*gZpgq≡1modpg^q ≡ 1 mod pgq1modp;私钥 xxx1<x<q1 < x < q1<x<q),公钥 y=gxmodpy = g^x mod py=gxmodp
    • 签名:计算 h(m)h(m)h(m),选 kkk1<k<q1 < k < q1<k<q),得 r=gkmodpr = g^k mod pr=gkmodp,从 ak≡(b+cx)modqak ≡ (b + cx) mod qak(b+cx)modqsssa,b,ca, b, ca,b,c 为参数,如 a=r,b=h(m),c=−ra=r, b=h(m), c=-ra=r,b=h(m),c=r),签名为 (r,s)(r, s)(r,s)
    • 验证:检查 ra≡gb∗ycmodpr^a ≡ g^b * y^c mod pragbycmodp
  2. Schnorr 签名方案
    • 参数:p≥2512p ≥ 2^{512}p2512(素数),q≥2160q ≥ 2^{160}q2160(素数且 q∣p−1q | p-1qp1),g∈Zp∗g ∈ Zₚ*gZpgq≡1modpg^q ≡ 1 mod pgq1modp;私钥 xxx,公钥 y=gxmodpy = g^x mod py=gxmodp
    • 签名:选 kkk,得 r=gkmodpr = g^k mod pr=gkmodpe=h(r,m)e = h(r, m)e=h(r,m)s=(xe+k)modqs = (xe + k) mod qs=(xe+k)modq,签名为 (e,s)(e, s)(e,s)
    • 验证:计算 r′=gs∗y−emodpr' = g^s * y^{-e} mod pr=gsyemodp,若 h(r′,m)=eh(r', m) = eh(r,m)=e,则有效。
  3. Nyberg-Rueppel 签名方案
    • 参数:同 Schnorr(p,q,gp, q, gp,q,g,私钥 xxx,公钥 y=gxmodpy = g^x mod py=gxmodp)。
    • 签名:计算 R(m)R(m)R(m)(冗余函数),选 kkk,得 r=g−kmodpr = g^{-k} mod pr=gkmodpe=r∗R(m)modpe = r * R(m) mod pe=rR(m)modps=(xe+k)modqs = (xe + k) mod qs=(xe+k)modq,签名为 (e,s)(e, s)(e,s)
    • 验证:检查 0<e<p0 < e < p0<e<p0≤s<q0 ≤ s < q0s<q,计算 v=gs∗yemodpv = g^s * y^e mod pv=gsyemodpt=e∗v−1modpt = e * v^{-1} mod pt=ev1modp,若 t∈Rt ∈ RtR 的值域,则恢复 m=R−1(t)m = R^{-1}(t)m=R1(t)

基于大整数分解问题的数字签名

  1. Feige-Fiat-Shamir 签名方案
    • 参数:n=pqn = pqn=pqp,qp, qp,q 为保密素数),kkk 为正整数;私钥 x1,...,xkx_1,..., x_kx1,...,xk,公钥 yi=xi−2modny_i= x_i^{-2} mod nyi=xi2modn
    • 签名:选 rrr,得 u=r2modnu = r² mod nu=r2modne=h(m,u)e = h(m, u)e=h(m,u)ei∈0,1e_i ∈ {0,1}ei0,1),s=r∗Πxieimodns = r * Πx_i^{e^i} mod ns=rΠxieimodn,签名为 (e,s)(e, s)(e,s)
    • 验证:计算 u′=s2∗Πyieimodnu' = s^2 * Πy_i^{e^i} mod nu=s2Πyieimodn,若 h(m,u′)=eh(m, u') = eh(m,u)=e,则有效。
  2. Guillou-Quisquater 签名方案
    • 参数:n=pqn = pqn=pqkkk 满足 gcd(k,(p−1)(q−1))=1gcd(k, (p-1)(q-1)) = 1gcd(k,(p1)(q1))=1;私钥 xxx,公钥 y=x−kmodny = x^{-k} mod ny=xkmodn
    • 签名:选 rrr,得 u=rkmodnu = r^k mod nu=rkmodne=h(m,u)e = h(m, u)e=h(m,u)s=r∗xemodns = r * x^e mod ns=rxemodn,签名为 (e,s)(e, s)(e,s)
    • 验证:计算 u′=sk∗yemodnu' = s^k * y^e mod nu=skyemodn,若 h(m,u′)=eh(m, u') = eh(m,u)=e,则有效。

具有特殊用途的数字签名

  1. 群签名
    • 特点:群体成员可代表群体签名,接收者用群公钥验证但不知具体签名者,争议时管理员可识别签名者。
    • 组成:建立(生成群公钥 / 私钥)、加入(用户成为成员)、签名、验证、打开(识别签名者)。
    • 性质:正确性、不可伪造性、匿名性、不可关联性、可跟踪性、可开脱性、抗联合攻击。
  2. 代理签名
    • 组成:系统建立(参数和密钥)、签名权力委托、代理签名生成、代理签名验证。
  3. 盲签名
    • 用途:匿名性场景(如电子投票、电子现金),签名者不知消息内容及签署对象。
    • 步骤:消息盲化(用户用盲因子处理消息)、盲消息签名(签名者对盲化消息签名)、恢复签名(用户移除盲因子得真实签名)。
http://www.lryc.cn/news/615650.html

相关文章:

  • orcad的操作(1)
  • 【LLM】Openai之gpt-oss模型和GPT5模型
  • 【unitrix数间混合计算】2.9 小数部分特征(t_non_zero_bin_frac.rs)
  • DAY35打卡
  • 【js】判断异步函数的返回值要加await
  • 【机器学习深度学习】模型选型:如何根据现有设备选择合适的训练模型
  • Redis面试题及详细答案100道(01-15) --- 基础认知篇
  • 力扣 30 天 JavaScript 挑战 第二题笔记
  • 服务器硬件电路设计之I2C问答(二):I2C总线的传输速率与上拉电阻有什么关系?
  • 常用信号深度解析(SIGINT、SIGPIPE、SIGALRM、SIGTERM等)
  • Java安全-组件安全
  • 谷歌搜索 sg_ss 逆向分析
  • nginx的安装
  • 智能的本质
  • Linux之shell脚本篇(四)
  • 【工具变量】地市人力资本水平数据集(2003-2023年)
  • 9. 堆和栈有什么区别
  • 健全性测试(Sanity Testing):你软件的快速“体检” ✅(省时避坑,确保核心!)
  • PID学习笔记1
  • 复现论文关于3-RPRU并联机器人运动学建模与参数优化设计
  • QT环境搭建
  • 功能测试中常见的面试题-二
  • 【Python 高频 API 速学 ⑥】
  • 09 【C++ 初阶】C/C++内存管理
  • [激光原理与应用-207]:光学器件 - 光纤种子源激光器常用元器件
  • Linux文件系统基石:透彻理解inode及其核心作用
  • 【高等数学】第八章 向量代数与空间解析几何——第四节 空间直线及其方程
  • 分析报告:基于字节连续匹配技术的KV缓存共享实施可能性及其扩展
  • 【机器学习深度学习】模型选型:如何根据模型的参数算出合适的设备匹配?
  • 202506 电子学会青少年等级考试机器人二级理论综合真题