导语:本课堂用通俗易懂的系列内容为大家呈现区块链与密码学领域相关知识。这里有知识也有故事,从感兴趣到有乐趣,全民课堂等你来学。这个系列中的课程内容首先从比特币着手进行入门介绍,再延伸至区块链的相关技术原理与发展趋势,然后深入浅出地依次介绍在区块链中应用的各类密码学技术。欢迎大家订阅本公众号,持续进行学习。
【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】
7.2.1 基于RSA签名的盲签名算法
David Chaum于1982年提出盲签名的概念,并利用RSA算法设计了第一个盲签名方案。该方案的安全性基于大整数分解问题,这里只进行简单介绍,要了解更多详细内容请查阅:
David Chaum. “Blind Signatures for Untraceable Payments.” Proc Crypto (1982):199-203.
| 密钥生成
签名者执行以下步骤生成密钥对:
①签名者选择两个大素数p,q,计算n=pq,ϕ(n)=(p-1)(q-1) ;
②签名者选择两个大整数e,d,满足ed≡1 mod ϕ(n),gcd(e,ϕ(n))=1;
③签名者保存私钥(d,n),并公开公钥(e,n)和安全哈希函数。
| 盲化
①用户选择随机数,计算,其中m是待签名的消息;
②用户将盲化的消息m’发送给签名者。
| 签名
签名者计算,并将σ′发送给用户。
| 去盲化
用户计算
| 签名正确性验证
用户通过验证
| 安全性分析
完备性:如果用户和签名者诚实的执行协议,那么:
有效签名总是能够通过验证。
| 盲性
使用的随机数——盲化因子r,能够保证每个消息签名对(m,σ),在统计学上完全独立于签名者在签名过程中可以看到的盲化消息签名对(m′,σ′)。
| 不可追踪性
根据和,可以发现基于RSA签名的盲签名算法不能提不可追踪性,具体攻击如下:
①签名者保存所有盲签名过程中的记录(m′, σ′);
②给定(m,σ),签名者计算
③签名者判定m′和m′′是否相等;
④如果相等则找到了签名记录,否则遍历所有记录(m′, σ′)。
7.2.2基于Schnorr签名的盲签名算法
Schnorr签名方案是一个短签名方案,它是ElGamal签名方案的变形,其安全性是基于离散对数困难性和哈希函数的单向性的。假设p和q是大素数,使q能被p-1整除,q是大于等于160 bit的整数,p是大于等于512 bit的整数,保证GF(p)中求解离散对数困难;g是GF(p)中元素,且。
| 密钥生成
①Alice选择随机数x为私钥,其中1<x<q;
②Alice计算公钥。
| 签名算法
| 验证算法
| 盲签名算法描述
| 不可追踪性
根据:
以及e=h(w,m),可以发现基于Schnorr签名的盲签名算法不能提供不可追踪性,具体攻击如下:
①签名者保存所有盲签名过程中的记录(k′, w′, e′, s′);
②给定(m,e,s),签名者计算α′=s-α mod q和β′= e′-e mod q;
③签名者计算并判定e和h(w′′,m)是否相等;
④如果相等则找到了签名记录,否则遍历所有记录(k′, e′, w′, s′)。
今天的课程就到这里啦,下节课我们将继续学习经典的盲签名算法,敬请期待!
同学们可以关注PlatON World,持续学习哦。我们下节课见啦。
本文转载自https://mp.weixin.qq.com/s?__biz=MzUzNTg2ODg5MQ==&mid=2247493771&idx=1&sn=ba5a9804b81310b6db3d2a3415ed4236&chksm=fafc4c3fcd8bc529137477cdc742a0263332d34a90a42803ec177bc842cf063d63133f5ae55f&scene=178&cur_album_id=1411898566347735044#rd