考研复习 Day 48 | 密码学--第八章 数字签名与身份认证(上)

注:以下内容参考《新编密码学》范九伦 张雪锋 侯红霞 编著


第8章 数字签名与身份认证

8.1 数字签名原理

8.1.1 数字签名的基本概念

消息认证码无法防止通信双方之间的互相抵赖和欺骗。例如,Alice发送消息并附上消息认证码后,可以否认发送过该消息(因为Bob也能生成同样的消息认证码);Bob也可以伪造消息声称来自Alice。因此,需要数字签名技术来提供数据来源的真实性、数据内容的完整性、签名者的不可否认性以及匿名性等服务。

数字签名是以公钥密码理论为支撑的技术,它将算法作用于需要签名的消息,生成带有操作者身份信息的编码。签名者执行数字签名,验证者验证签名真伪。

数字签名与手书签名的差异

  • 手书签名与被签文件物理上不可分离;数字签名与消息是可分离的比特串

  • 手书签名通过物理比对验证;数字签名通过严格算法验证

  • 手书签名复制品易与原件区分;数字签名拷贝与原串完全相同

数字签名至少满足三个基本要求

  1. 签名者任何时候无法否认自己签发的签名(不可否认性

  2. 接收方能验证签名,但任何人无法伪造他人签名(真实性不可伪造性

  3. 发生争议时,仲裁机构可进行裁决

数字签名体制是一个五元组(M,S,K,SIG,VER):

  • M:消息空间

  • S:签名空间

  • K:密钥空间(签名密钥sksk、验证密钥vkvk)

  • SIG:签名算法,SIGsk(m)=s

  • VER:验证算法,VERvk(m,s)={ true,s=SIGsk(m) false,s≠SIGsk(m) }

8.1.2 数字签名的特性

功能特性

  1. 完整性:签名依赖于消息的具体比特模式

  2. 真实性:能够验证签名者身份

  3. 不可伪造性:伪造签名在计算上不可行

  4. 可用性:生成、验证过程简单,可在普通设备上快速完成

安全性特性

  1. 单向性:从消息和签名推导签名密钥不可行

  2. 不可抵赖性:不同消息的签名相等概率可忽略

  3. 无相关性:从一个消息的签名不能推导出另一个消息的签名

8.1.3 数字签名的实现方法

基于公钥密码的数字签名:发送方用自己的私钥加密消息(或消息摘要),接收方用发送方公钥解密验证。由于只有发送方拥有私钥,因此能证明消息来源。

直接数字签名体制:仅涉及通信双方,依赖于签名者私钥的安全性。弱点:私钥泄露后,泄露前的签名仍可被伪造;签名者可声称私钥泄露而否认签名。

可仲裁的数字签名体制:引入可信第三方作为仲裁者,发送方将签名发送给仲裁者验证后,再转给接收方。解决了否认问题,但增加了复杂性,仲裁者可能成为性能瓶颈。

实际应用中的优化:先对原始消息进行Hash处理,再对Hash码签名,提高效率(图8-3)。


8.2 RSA数字签名

8.2.1 RSA数字签名算法

系统参数与RSA公钥密码相同:选取大素数p,q,计算n=p×q,φ(n)=(p−1)(q−1),选取e满足gcd⁡(e,φ(n))=1,计算d=e^(−1) mod  φ(n)。公开(n,e)作为验证密钥,秘密保存(p,q,d)作为签名密钥。

  • 签名:s=SIGsk(m)=m^d mod  n

  • 验证:VERvk(m,s)=true  ⟺  m≡s^e mod  n

8.2.2 RSA数字签名的安全问题

RSA签名继承了RSA算法的可乘性缺陷,面临以下攻击:

  1. 消息破译:攻击者可通过选择签名请求恢复明文

  2. 截取仲裁签名:攻击者可修改消息,骗取仲裁签名后恢复目标消息签名

  3. 篡改用户签名:若获得两个消息的签名,可伪造它们乘积的签名

防范措施:不能对陌生人提交的消息直接签名,应先进行Hash处理。

另一种伪造攻击:攻击者选任意y,计算x=y^e mod  n,则y是合法用户对x的有效签名(因为x^d=y)。因此,应避免对无意义的随机消息签名。


8.3 ElGamal数字签名

ElGamal签名体制基于离散对数问题,是专门为数字签名设计的,已被NIST采纳为数字签名标准(DSS)的基础。

8.3.1 ElGamal数字签名算法

系统参数

  • 大素数p,使Zp∗上离散对数难解

  • Zp∗的生成元g

  • 签名者私钥a,公钥y=g^a mod  p

  • 密钥K=(p,g,a,y),公钥(p,g,y),私钥a

签名:对消息m∈Zp,随机选取k∈Zp∗且gcd⁡(k,φ(p))=1,计算

r=g^k mod  p

s=(m−ar)⋅k^(−1) mod  φ(p)

签名为(r,s),签名空间为Zp×Zp。

验证

VER(m,r,s)=true  ⟺  y^r⋅r^s≡g^m (mod p)

正确性:若签名正确,则

y^r⋅r^s=g^ar⋅g^ks=g^ar+ks)=g\^(ar+k⋅(m−ar)k\^(−1)=g^m

8.3.2 针对ElGamal签名算法的可能攻击

安全性基础:依赖于离散对数问题的困难性。

使用不当造成的威胁

  1. 若随机数k泄露,攻击者可计算私钥a=(m−ks)r^(−1) mod  φ(p)

  2. 若重复使用k对不同消息签名,可由两个签名计算出k,进而得到a

伪造签名攻击

  1. 存在性伪造:选择i,j,构造r=g^i·y^j,计算s=r^(j−i),m=r^i·r^(j−i),得到有效签名

  2. 已知消息伪造:从已知签名出发,通过变换伪造新消息签名

  3. 选择性伪造:利用φ(p)的大素因子q构造签名

  4. 大r伪造:当r>p时,可伪造任意消息的签名

防范措施

  • 签名前对消息进行Hash处理

  • 验证时检查r不能被φ(p)的大素因子整除

  • 验证时检查r<p


注:以上内容的理解和计算,如果有任何错误,希望各位读者和大佬指出改正,非常感谢!!!

相关推荐
Sagittarius_A*1 天前
后量子密码|通识认知 02|量子威胁核心原理:Shor 算法如何击穿传统公钥密码
算法·信息安全·密码学·量子计算
白狐_7981 天前
考研408算法设计题保命策略:链表专题暴力解法精讲(2015 & 2019真题实战)
考研·算法·链表
笨鸟先飞,勤能补拙1 天前
密码学深度指南 — SecOps 工程师实战手册
人工智能·vscode·python·安全·github·密码学·visual studio
因你入海底2 天前
【考研】2026/8/5
考研·11408
killerbasd3 天前
总结 8.04
考研
Sagittarius_A*4 天前
分组密码基础(二):Feistel 结构与 DES 的设计思想
算法·信息安全·密码学·des·数论
南风微微吹4 天前
【英一】考研英语一历年真题及答案解析PDF(1980-2026年)
考研·pdf
mifengxing5 天前
计算机组成原理——存储器系统
开发语言·考研·计算机组成原理·复习笔记·计算机408
因你入海底5 天前
【考研】2026/8/2
考研·11408
Sagittarius_A*7 天前
流密码基础(四):相关攻击与 Geffe 生成器
信息安全·密码学·数论