导语:本课堂用通俗易懂的系列内容为大家呈现区块链与密码学领域相关知识。这里有知识也有故事,从感兴趣到有乐趣,全民课堂等你来学。这个系列中的课程内容首先从比特币着手进行入门介绍,再延伸至区块链的相关技术原理与发展趋势,然后深入浅出地依次介绍在区块链中应用的各类密码学技术。欢迎大家订阅本公众号,持续进行学习。
【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】
7.3.1基于MDSA签名的盲签名算法
– DSA的主要参数 –
| 全局公开密钥分量,可以为用户公用
p:素数,要求2L-1<p<2L,512<=L<1024,且L为64的倍数
q: (p-1)的素因子,2159<q<2160,即比特长度为160位
g:=h(p-1)/q mod p其中h是一整数,1<h<(p-1)且h(p-1)/q mod p>1
| 用户私有密钥
x:随机或伪随机整数,要求0<x<q
| 用户公开密钥
y:=gx mod p
– DSA签名过程 –
①用户随机选取k
②计算e=h(M)
③计算r=(gk mod p) mod q
④计算s=k-1(e+x · r) mod q
⑤输出(r, s),即为消息M的数字签名
– DSA验证过程 –
①接收者收到M, r, s后,首先验证0<r<q, 0<s<q
②计算e=h(M)
③计算u=(s)-1 mod q
④计算u1=e · u mod q
⑤计算u2=r · u mod q
⑥计算v=[(gu1 · yu2) mod p] mod q
⑦如果v=r,则确认签名正确,否则拒绝
– MDSA签名过程 –
①用户随机选取k
②计算e=h(M)
③计算r=(gk mod p) mod q
④计算s=k e+x · r mod q
⑤输出(r, s),即为消息M的数字签名
– MDSA验证过程 –
①接收者收到M, r, s后,首先验证0<r<q, 0<s<q
②计算e=h(M)
③计算u=e-1 mod q
④计算u1=s · u mod q
⑤计算u2=-r · u mod q
⑥计算v=[(gu1 · yu2) mod p] mod q
⑦如果v=r,则确认签名正确,否则拒绝
基于MDSA的盲签名算法示意图:
7.3.2基于NR签名的盲签名算法
NR签名是基于Schnorr签名算法可恢复消息的签名算法, Camenisch等利用该算法设计了一个盲签名方案。
– NR的主要参数 –
| 全局公开密钥分量,可以为用户公用
p:素数,要求2L-1<p<2L,512<=L<1024,且L为64的倍数
q: (p-1)的素因子,2159<q<2160,即比特长度为160位
g::=h(p-1)/q mod p。其中h是一整数,1<h<(p-1)且h(p-1)/q mod p>1
| 用户私有密钥
x:随机或伪随机整数,要求0<x<q
| 用户公开密钥
y:=gx mod p
– 签名过程 –
①用户随机选取k
②计算r=M · gk mod p
③计算s=k+x · r mod q
④输出(r, s),即为消息M的数字签名
– 验证过程 –
①接收者收到M, r, s后,首先验证0<r<p, 0<s<q
②M’= (g -s · y r) · r mod p
③如果M’=M,则确认签名正确,否则拒绝
基于基于NR签名的盲签名算法示意图:
今天的课程就到这里啦,下节课我们将继续学习经典的盲签名算法,敬请期待!
同学们可以关注PlatONWorld,持续学习哦。我们下节课见啦。
本文转载自https://mp.weixin.qq.com/s?__biz=MzUzNTg2ODg5MQ==&mid=2247493846&idx=1&sn=cc11a00ceb26bbc1b7dcd03c9f63594d&chksm=fafc4c62cd8bc574b6607bcaae320bdfe68bdc38278102f2a48ddd62e19705f171e903e282f2&scene=178&cur_album_id=1411898566347735044#rd