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

8.4 数字签名标准 DSS

数字签名标准(DSS,Digital Signature Standard)由美国国家标准技术协会(NIST)于1991年8月公布,1994年12月1日正式生效。DSS本质上是ElGamal签名体制,但运行在较大有限域的一个小的素数阶子群上,在该有限域上计算离散对数问题是困难的。在对消息进行数字签名之前,DSS先使用安全的Hash算法SHA-1对消息进行Hash处理,然后对所得的消息摘要签名。这样一来,不仅可以确保DSS能够抵抗多种已知的存在性伪造攻击,同时相对于ElGamal等签名体制,DSS签名的长度将会大大缩短。

8.4.1 DSS的数字签名算法(DSA)

DSS使用的算法称为数字签名算法(DSA,Digital Signature Algorithm),它是在ElGamal和Schnorr两个方案基础上设计出来的。DSA数字签名算法基本框图如图8-4所示。

系统参数

DSA的系统参数包括:

  1. 一个长度为l比特的大素数p,l的大小在512到1024之间,且为64的倍数。

  2. p−1(即φ(p))的一个长度为160比特的素因子q。

  3. 一个q阶元素g∈Zp∗。g可以这样得到:任选h∈Zp∗,若h^(p−1)/q mod  p>1,则令g=h^(p−1)/q mod  p;否则重选h∈Zp∗。

  4. 一个用户随机选取的整数a∈Zq∗,并计算出y=g^a mod  p。

  5. 一个Hash函数H:{0,1}∗→Zq。这里使用的是安全的Hash算法SHA-1。

这些系统参数构成DSA的密钥空间K=(p,q,g,a,y,H),其中(p,q,g,y,H)为公开密钥,a是私有密钥。

签名过程

为了生成对一个消息m的数字签名,签名者随机选取一个秘密整数k∈Zq∗,并计算:

r=(g^k mod  p )mod  q

s=k^(−1) (H(m)+ar) mod  q

则(r,s)就是消息m的数字签名,即SIGa(m,k)=(r,s)。

由此可见,DSA的签名空间为Zq×Zq,签名的长度比ElGamal体制短了许多。

验证过程

验证DSA数字签名时,验证者知道签名者的公开密钥是(p,q,g,y,H)。对于一个消息-签名对(m,(r,s)),验证者计算下面几个值并判定签名的真实性:

w=s^(−1) mod  q

u1=H(m)⋅w mod  q

u2=r⋅w mod  q

v=(g^u1⋅y^u2 mod  p) mod  q

VER(m,(r,s))=true  ⟺  v=r

这是因为如果(r,s)是消息m的有效签名,那么:

v=(g^u1·y^u2 mod  p) mod  q=(g^H(m)w·g^(arw) mod  p) mod  q

=(g^(H(m)+ar)w mod  p) mod  q

=(g^(k⋅s⋅w) mod  p) mod  q

=(g^k mod  p) mod  q=r

例8.3

8.4.2 DSA算法的安全问题

DSA公布后受到的主要批评:

  1. 不能用于数据加密和密钥分配

  2. 验证签名比RSA慢10-40倍

  3. 初始密钥长度512比特太短(后改为512-1024比特可变)

  4. 设计过程不公开,怀疑可能存在陷门

  5. 可能侵犯专利

实际安全风险

  1. 秘密数k泄露:若k泄露,可导出私钥a=(sk−H(m))r^(−1) mod  q

  2. 重复使用k:若同一kk用于不同消息,可计算出kk和私钥

  3. 共享参数风险:虽然方便,但公共数据对攻击者有吸引力

  4. 陷门信道:Simmons发现DSA中存在陷门信道,可嵌入秘密消息


8.5 特殊数字签名方案

8.5.1 不可否认签名

不可否认签名由Chaum和van Antwerpen于1989年提出。其特点是:没有签名者Alice的合作,签名的有效性就无法验证。这防止了签名被未经Alice同意而复制和分发。验证通过口令-响应(Challenge-and-Response)协议实现。

方案描述

  • 设p=2q+1,q为素数,α∈Zp∗阶为q,1≤a≤q−1,β=α^a mod  p

  • 公钥:(p,α,β),私钥:a

  • 签名:y=sig(x)=x^a mod  p

验证协议(Bob验证(x,y)):

  1. Bob随机选择e1,e2∈Zq

  2. Bob计算c=y^e1·β^e2 mod  p,发送给Alice

  3. Alice计算d=c^a^(−1) mod  p,发送给Bob

  4. Bob验证d≡x^e1·α^e2(mod p)

否认协议:当签名伪造时,通过两次验证和一致性检验,Bob可确定Alice未按协议响应。

例8.4

8.5.2 群签名

群签名由Chaum和Heyst于1991年提出。群成员可代表群签名,验证者用群公钥验证,但不知道具体签名者。发生争议时,群管理员可打开签名。

性质

  1. 正确性:合法成员签名有效

  2. 不可伪造性:只有合法成员能签名

  3. 匿名性:除群主外无人能确定签名者身份

  4. 不可联系性:无法判断两个签名是否来自同一成员

  5. 可追踪性:群主可打开签名

  6. 防篡改性:成员不能以他人名义签名

  7. 抗联合攻击:全体成员联合也不能阻止签名打开

  8. 效率:取决于公钥大小、签名长度、算法效率

简单方案:群管理员为每个成员分发互不相交的私钥表,公开公钥表。签名时成员从私钥表选未用过的私钥签名;验证时用公钥表中每个公钥验证;争议时管理员根据对应关系恢复签名者身份。缺点:每个私钥只能用一次,否则丧失不可联系性。

8.5.3 环签名

环签名由Rivest、Shamir和Tauman于2001年提出。签名者可选择任意n−1人(连同自己构成环),用自己的私钥和这些人的公钥对消息签名。验证者只能确信签名来自环中某人,但无法识别具体签名者。环签名可视为简化的群签名,区别在于环签名没有管理员,无法恢复签名者身份。

安全性需求

  • 正确性:环成员签名能通过验证

  • 匿名性:识别签名者概率不大于1/n

  • 不可伪造性:非环成员无法产生有效签名

Boneh环签名方案(2003年):

  • 参数:素数q,群G1,G2,双线性映射e:G1×G1→G2,生成元P,哈希函数H:{0,1}∗→G1

  • 用户私钥xi,公钥Yi=xiP

  • 签名者Uk签名的生成:

    • 计算H=H(m)

    • 选随机数ai(i≠k),计算σi=aiP

    • 计算

    • 输出签名(σ1,...,σn)

  • 验证:

8.5.4 代理签名

代理签名由Mambo、Usuda和Okamoto于1996年提出,实现签名权委托。原始签名者授权代理签名者代表自己生成有效签名。

基于离散对数的代理签名方案

  • 参数:大素数p,q∣p−1,g∈Zp∗阶q

  • 原始签名者A私钥xA,公钥yA=g^xA mod  p

  • 代理签名者B私钥xB,公钥yB=g^xB mod  p

委托过程

  • A随机选k∈Zp∗,计算r=g^k mod  p,w=xA+kr mod  q

  • A将(w,r)安全发送给B

  • B验证gw=yA⋅r^r mod  p成立

签名过程:B代表A对消息m签名,生成s=Sign(w,m),代理签名(s,r)

验证过程:验证g^s=yB⋅(yA⋅r^r)^m mod  p

特点:防止代理签名者滥用签名权,不能转移代理权。

8.5.5 签密

签密由Y. Zheng于1997年提出,在一个逻辑步骤内同时实现认证和加密,效率高于传统的"先签名后加密"。

签密方案SCS

  • 参数:大素数p,大素因子q,g∈Zp∗阶q,哈希函数Hash,带密钥哈希函数KH,对称加解密(E,D)

  • 发送方A私钥xa,公钥ya=g^xa mod  p

  • 接收方B私钥xb,公钥yb=g^xb mod  p

签密算法(A对消息m):

  • 随机选x∈Zp∗

  • 计算(k1,k2)=Hash(yb^x)

  • c=Ek1(m)

  • r=KHk2(m)

  • s=x/(r+xa) mod  q

  • 输出签密(c,r,s)

解签密算法(B收到(c,r,s)):

  • 计算(k1,k2)=Hash((ya⋅g^r)^s)

  • m=Dk1(c)

  • 验证KHk2(m)=r

相关推荐
huluang1 天前
密评多选题 — 陷阱名单(费曼自述法版)
网络·数据库·密码学
如君愿1 天前
考研复习 Day 48 | 密码学--第八章 数字签名与身份认证(上)
考研·密码学
humors2212 天前
四种字母密码表示法
安全·网络安全·密码学
如君愿2 天前
考研复习 Day 47 | 密码学--第七章 公钥密码(下)
考研·密码学·课后习题
humors2212 天前
六位数字密码表示
安全·网络安全·密码学
下午写HelloWorld4 天前
同态加密(Homomorphic Encryption, HE)
人工智能·算法·密码学·同态加密
无风听海5 天前
PKCE 的 S256 算法深度剖析:从协议设计到密码学原理
javascript·网络·算法·密码学
如君愿5 天前
考研复习 Day 46 | 密码学--第七章 公钥密码(上)
密码学
鲨鱼辣椒喔5 天前
# 团队密码管理工具怎么选?对比 Bitwarden、Vault、Excel 和 OpsTiny
运维·数据库·安全·密码学·个人开发