【图学院】区块链与密码学全民课堂第7-4讲:经典盲签名算法(三)
导语:本课堂用通俗易懂的系列内容为大家呈现区块链与密码学领域相关知识。这里有知识也有故事,从感兴趣到有乐趣,全民课堂等你来学。
这个系列中的课程内容首先从比特币着手进行入门介绍,再延伸至区块链的相关技术原理与发展趋势,然后深入浅出地依次介绍在区块链中应用的各类密码学技术。欢迎大家订阅本公众号,持续进行学习。
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曲线,和分别是椭圆曲线和的加法群,是乘法群,群中元素尺寸是群中元素尺寸的2倍。
②选择系统公钥为中的元素,那么就可以使得用户私钥和签名中一部分是中元素,降低了用户私钥和签名的尺寸。
用户私钥生成
SM9数字签名算法用户私钥生成示意图
签名
SM9数字签名算法签名过程示意图
验证
SM9数字签名算法验证过程示意图
今天的课程就到这里啦,下节课我们将学习盲签名在区块链中的应用,敬请期待!
Scan QR code with WeChat