区块链与密码学第7-2讲:经典盲签名算法
Posted Dig Quant
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链与密码学第7-2讲:经典盲签名算法相关的知识,希望对你有一定的参考价值。
【本课堂内容全部选编自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≡1modϕ(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计算公钥。
| 签名算法
①Alice首先随机数k,这里1<k<q;
②Alice计算;
③Alice计算;
④Alice输出签名(e,s) 。
| 验证算法
①Bob计算;
②Bob验证,如果相等输出「Accept」,否则输出「Reject」。
| 盲签名算法描述
| 不可追踪性
根据:
以及e=h(w,m),可以发现基于Schnorr签名的盲签名算法不能提供不可追踪性,具体攻击如下:
①签名者保存所有盲签名过程中的记录(k′,w′,e′,s′);
②给定(m,e,s),签名者计算α′=s-α modq和β′=e′-emodq;
③签名者计算
并判定e和h(w′′,m)是否相等;
④如果相等则找到了签名记录,否则遍历所有记录(k′,e′,w′,s′)。
今天的课程就到这里啦,下节课我们将继续学习经典的盲签名算法,敬请期待!
同学们可以关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。我们下节课见啦。
【区块链与密码学】课堂回顾:
以上是关于区块链与密码学第7-2讲:经典盲签名算法的主要内容,如果未能解决你的问题,请参考以下文章