导语:本课堂用通俗易懂的系列内容为大家呈现区块链与密码学领域相关知识。这里有知识也有故事,从感兴趣到有乐趣,全民课堂等你来学。这个系列中的课程内容首先从比特币着手进行入门介绍,再延伸至区块链的相关技术原理与发展趋势,然后深入浅出地依次介绍在区块链中应用的各类密码学技术。欢迎大家订阅本公众号,持续进行学习。
【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】7.4.1
基于身份的盲签名算法
– 系统参数生成 –
KGC执行以下步骤生成系统参数和主私钥:
①选择双线性对,P为G的生成元;
②生成随机数做为主私钥;
③计算系统公钥;
④选择两个哈希函数,;
⑤保存主私钥s , 公布系统参。
– 用户私钥生成 –
KGC执行以下步骤生成用户私钥:
①计算;
②计算用户私钥
| 基于身份的签名算法
给定系统参数,消息m,私钥,签名者执行以下步骤产生签名:
①生成随机数并计算;
②计算;
③计算
④输出签名(h, S)。
| 基于身份的验证算法
给定系统参数,消息m,签名(h,S),验证者执行以下步骤验证签名:
①计算:
②检查h和H(m,w′)是否相等。如果相等则输出「Accept」,否则输出「Reject」。
– 盲签名 –
如图所示:
– 验证 –
给定消息m和签名(h, S) ,验证者执行以下步骤验证签名的合法性:
①
②计算:
③检测h和H(m,w′)是否相等。若相等,则输出「Accept」,否则输出「Reject」。
7.4.2基于SM9数字签名的盲签名算法
– 系统参数生成 –
密钥生成中心(Key Generation Center, KGC)执行以下步骤生成系统参数和主私钥:
①KGC生成随机数sk做为主私钥,这里0<sk<q-1;
②KGC计算系统公钥;
③KGC保存私钥sk, 公布系统公钥。
*注意:
①SM9算使用BN曲线,G1和G2分别是椭圆曲线E
(Fp)和E(Fp2)的加法群,GT是乘法群Fp12,群G2中元素尺寸是群G1中元素尺寸的2倍。
②选择系统公钥为G2中的元素,那么就可以使得用户私钥和签名中一部分G1是中元素,降低了用户私钥和签名的尺寸。
– 用户私钥生成 –
– 签名 –
– 验证 –
今天的课程就到这里啦,下节课我们将学习盲签名在区块链中的应用,敬请期待!
同学们可以关注PlatONWorld,持续学习哦。我们下节课见啦。
本文转载自https://mp.weixin.qq.com/s?__biz=MzUzNTg2ODg5MQ==&mid=2247493961&idx=1&sn=bf03ea1d8967c785cc54f92bbef2ef7c&chksm=fafc4dfdcd8bc4ebbfc9896b09d4c422dc2e3b9530c29051c15c43224755f640fa4fc72ed6f8&scene=178&cur_album_id=1411898566347735044#rd