当前位置:文档之家› 几种盲签名方案的研究综述

几种盲签名方案的研究综述

毕业论文论文题目几种盲签名方案的研究综述

姓名

院(系)

专业班级

学号

指导教师

职称

论文答辩日期 2008年 5月11日

学生承诺书

本人郑重声明:所呈交的毕业论文,是本人在指导老师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

签名:

日期:年月日

摘要

盲签名是一种特殊的数字签名类型,只有消息的发送者可以看到明文消息的内容,签名者无法得知明文消息,并且签名者不能将消息和签名联系起来,即不能追踪到签名。鉴于盲签名有着如此良好的匿名性,因而在电子商务和电子投票等领域得到了很好的应用和推广。在本文中,我们讨论了数字签名和盲签名的基本概念及基本设计思想,论述了盲签名的分类方法和分类结果。在此基础上详细讨论了几种已经具有广泛应用前景的盲签名算法,包括基于离散对数的盲签名、基于RSA的部分盲签名、公平盲签名、限制性盲签名,分析其算法设计、应用范围、优缺点及其安全性。

关键字:盲签名部分盲签名公平盲签名限制性盲签名

目录

1 前言 0

2 数字签名基本思想及技术探讨 (1)

2.1 数字签名的特性和基本签名步骤 (1)

2.1.1 数字签名的特性 (1)

2.1.2 数字签名的基本步骤 (2)

2.2 基于RSA的数字签名算法 (2)

2.2.1 初始化阶段 (2)

2.2.2 签名阶段 (3)

2.2.3 验证阶段 (3)

2.2.4 RSA数字签名算法的优缺点 (3)

2.3 基于Elgamal的数字签名算法 (3)

2.3.1 初始化参数 (3)

2.3.2 签名过程 (4)

2.3.3 签名验证 (4)

3盲签名基本思想和技术分析 (4)

3.1盲签名的特性和基本签名步骤 (4)

3.1.1 盲签名的特性: (4)

3.1.2 盲签名的签名过程 (4)

3.2 盲签名的分类 (5)

3.2.1 根据对不同参数的盲化及盲化强度分类: (5)

3.2.2 根据盲签名基于不同数学问题进行分类 (5)

3.2.3 根据盲签名功能的不同进行分类 (5)

4 基于RSA的部分盲签名方案 (6)

4.1 签名过程 (6)

4.1.1 初始化阶段 (6)

4.1.2 请求阶段 (7)

4.1.3 签名阶段 (7)

4.1.4 解盲及验证阶段 (7)

4.2 算法分析 (7)

4.2.1 解盲化以后得到的签名的形式: (7)

4.2.2 签名的验证 (8)

4.2.3 算法中RSA的体现 (8)

4.2.4 盲化分析 (8)

4.2.5 部分盲签名的体现 (8)

4.2.6 不可追踪性 (9)

5 基于离散对数的盲签名方案 (9)

5.1基本的数字签名方案 (9)

5.1.1 关于DSA的一种改进算法 (9)

5.1.2 Nyberg-Rueppel基本盲签名方案 (9)

5.2 盲签名方案 (9)

5.2.1 对DSA的盲签名修正方案: (9)

5.2.2 Nyberg-Rueppel 算法的修正方案 (11)

6 公平盲签名 (12)

6.1 定义及分类 (13)

6.1.1 公平盲签名定义 (13)

6.2 运用分割选择方法设计公平盲签名 (13)

6.2.1 签名算法 (13)

6.2.2 签名合法性验证 (14)

要验证签名是否是合法的,可以通过下式加以验证: (14)

6.2.3 算法分析 (14)

6.2.4 基于分割选择方法的公平盲签名的不足之处 (16)

6.3 基于不经意传输的公平盲签名 (16)

6.3.1 对Fiat-Shamir签名方案的改进 (16)

6.3.2 公平的二选一不经意传输 (16)

6.3.3 Fiat-Shamir公平盲签名方案 (18)

7 限制性盲签名 (19)

7.1 主要分类 (20)

7.2 基本现金系统(事后防止重复花费) (20)

7.2.1 系统建立 (20)

7.2.2 开户 (21)

7.2.3 取款协议 (21)

7.2.4 付款协议 (21)

7.2.5 存款协议和追踪协议 (22)

7.3 事前防止重复花费 (22)

7.3.1 系统建立 (22)

7.3.2 开户 (22)

7.3.3 取款协议 (23)

7.3.4 付款协议 (23)

7.3.5 存款协议和追踪协议 (24)

8 结语 (24)

参考文献 (25)

Abstract (26)

致谢 (26)

仲恺农业技术学院毕业论文(设计)成绩评定表 (27)

1前言

随着Internet的发展,电子商务活动也随之而出现,在线支付商品或服务也成为了一种日益流行起来的趋势,它的使用加快了商品交易的速度,节省了消费者出门购物所需的时间消耗;另一方面,使用电子现金,方便了人们的出行,可以避免携带大量实体现金所带来的各种麻烦。然而,当人们进行电子消费时,关于个体每一次消费的各种信息,如个体的身份、消费金额、消费时间、及消费内容等,能被其他个体或组织得到。无疑,当这些信息公开以后,个体的行踪、生活方式等隐私也就随之泄漏。很明显,这是每一个消费者都不希望发生的。

为了提供一条秘密和安全的管理电子交易的途径,D.Chaum提出了第一个实现盲签名的算法[1],盲签名能完成下述功能:发送者希望发送的消息能由签名者进行签名,并且其他用户可以验证该消息是由签名者进行了签名的,但发送者不希望签名者知道消息的内容。D.Chaum曾给出了关于盲签名更为直观的说明:所谓盲签名,就是先将要隐蔽的文件放入信封,再将一张复写纸也放入信封,签名的过程就是签名者将名字签在信封上,他的签名便透过复写纸签到了文件上。

盲签名除了可以被利用来保护安全电子支付系统中顾客的隐私权(例如电子货币系

统可以利用一个盲签名方案来实现),也可以用在其他的密码系统中以实现匿名性等(例如安全电子投票协议),使得签名者在不知道消息内容的前提下仍然可以对消息进行有效的签名。

在本文中,首先介绍数字签名和盲签名的基本概念及基本设计思想,论述盲签名的分类方法和分类结果。在此基础上详细讨论几种已经被广泛应用的盲签名算法,主要包括基于离散对数的盲签名、基于RSA的部分盲签名、公平盲签名、限制性盲签名,并分析上述盲签名的算法设计、应用范围、优缺点及其安全性。

2数字签名基本思想及技术探讨

2.1 数字签名的特性和基本签名步骤

伴随着互联网的发展和推广,网络通信在日常生活中扮演着越来越重要的角色,网络通信的安全性也越来越受到关注,需要发送方在发送信息同时发送证明身份的信息,类似于手写签名,用于接收方确认信息真伪。由于计算机只能处理数字信息,数字签名技术应运而生。

2.1.1 数字签名的特性

数字签名是指附加在数据单元上的一些数据,或是对数据所作的密码变换,这种数据

变换能使数据接收者确认数据的来源、完整性并保护数据。数字签名是非对称加密技术中的一种,主要通过单向Hash函数和公钥算法共同实现,所谓单向是指从Hash值无法推知报文值。

数字签名应具有以下特性:

(1) 签名是可信的:任何人都可以验证签名的有效性;

(2) 签名是不可伪造的:除了合法的签名者之外,其他人若想伪造其签名是困难的;

(3) 签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果对一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息;

(4) 签名的消息是不可改变的:经签名的消息不能被篡改。一旦签名的消息被篡改,则任何人都可以发现消息与签名直接的不一致性;

(5) 签名是不可抵赖的:签名者事后不能否认自己的签名。

2.1.2 数字签名的基本步骤

数字签名技术的基本思想是签名只能由一个人(个体)创建,但可以被任何人校验。每一个数字签名方案都有一个密钥对生成函数,即给定随机输入R将输出两个密钥AR(私人签名密钥)和VR(公共签名密钥)。签名方案可以是确定的,也可以是随机的,并可通过签名验证算法进行验证操作。

具体步骤如下:

(1) 发送方,用Hash函数,计算报文数据的Hash值;

(2) 通过公钥算法,将发送方的私有密钥对Hash值加密并得到数字签名;

(3) 接收方验证签名时,用发送方的公开密钥对数字签名进行解密计算得到一个值;

(4) 比较从数据直接用Hash算法计算得到的值与步骤(3)的计算值,若二者相同,则签名为真。

2.2 基于RSA的数字签名算法

目前在大多数实际商业系统中用得最多的是基于因数分解理论的RSA算法实现数

字签名。基本思想是大整数分解和素数检测,加密和解密的互逆性主要基于Fermat定理和Euler函数。下面为了叙述方便,用m代表待签名的消息,A代表签名者,B代表签名的接收者。

签名过程如下:

2.2.1 初始化阶段

A 需要做以下初始化步骤:

(1) 随机选取两个大素数p ,q ,计算n = p ·q ,φ(n )=(p -1)·(q -1); (2) 随机选取一个大整数e ,使得(e ,φ(n ))=1;

(3) 用扩展Euclidean 算法计算d ,使之满足:ed =1mod(φ(n )),即d =1-e mod(φ(n )); (4) (e ,n )是A 的公开密钥,d 为A 的私钥,两个大素数p ,q 由A 秘密保存。 2.2.2 签名阶段

(1) B 选择待签名的消息m ∈*n Z ;

(2) A 计算s=d m mod n 发送给B ; 2.2.3 验证阶段

判断验证等式n e s m mod =是否成立,由此可确定签名是否有效。 2.2.4 RSA 数字签名算法的优缺点

RSA 算法实现数字签名的优点是密钥空间大,加密效果好。将RSA 用于数字签名有很高的安全性,如ISO /IEC 9796和ANSI X 9.30—199X 以及美国联邦信息处理标准HIS 186—2都将RSA 作为推荐的数字签名算法。该算法采用非对称密钥进行数字签名,基于大数分解和素数检测,e 和n 作为公钥是公开的,只要将n 分解为p 和q ,即可求得解密密钥。为防止n 被分解,n 的位数至少在1024bits 以上,这样n 的分解只存在理论上的可能。为防止解密,不同用户不可共模n ,也不能选用相同的素数。

缺点是算法复杂,加密速度慢,实现过程需要执行大量乘除运算,使得加密性能下降,即算法没有用来加密大量的数据,而是用来加密其他加密算法的密钥。基于此原因,使得RSA 算法只能对较短的信息进行签名,若信息较长,只能对信息摘要进行数字签名。 2.3 基于Elgamal 的数字签名算法]2[

1985年,Elgamal 提出了一种基于离散对数问题的数字签名方案,被称作Elgamal 签名方案。它是一种既可以用于加密又可用于实现数字签名的方案。这个方案的改进已被美国国家标准和技术研究所(NIST )采纳为数字签名标准。

Elgamal 其方案像Elgamal 体制一样,是非确定型的,这意味着对于任意给定的消息可产生多个有效的签名,验证算法必须能接受合法的有效签名中的任何一个。Elgamal 具体的签名方案描述如下: 2.3.1 初始化参数

p 是一大素数,可以使在p Z 中求解离散对数为困难问题,g 是*

p Z 的一个生成元,x

是用户密钥,满足x ∈*

p Z ,p g y x mod =为用户的公钥。 2.3.2 签名过程

设B 希望A 为其消息m 进行签名,步骤如下: (1) A 随机选择*p

Z k ∈; (2) 待B 将消息m 发送给A 之后,A 计算p g r k m od =,以及1)(--=k xr m s )1mod(-p 得到消息签名对()),(,s r m ;

(3) A 将消息签名对()),(,s r m 发送给B 。 2.3.3 签名验证

B 通过计算p r y g s r m mod =是否成立,以验证收到的签名对的真伪,从而决定是否接收A 对消息的签名。

3盲签名基本思想和技术分析

3.1盲签名的特性和基本签名步骤 3.1.1 盲签名的特性:

根据盲签名基本定义,它应具有以下几个特性: (1) 盲签名具有一般数字签名的所有特性;

(2) 可以证明消息M 上签名者S 的签名是合法的,无论何时,S 都相信他签过这个消息;

(3) S 不能将签名的消息与签过这个消息的行为联系起来,既使保存了他所签的每一个盲签名的记录,他也不能确定他什么时候签过某一个给定的消息,即签名者的协议信息和消息一签名对是不可链接的;

(4) 签名接收者R 的身份是保密的,且永远不会被泄露,具有无条件的不可追踪性; (5) 盲签名是无法伪造的,假设攻击者收集了j 个盲签名,他也无法计算出第j+1个盲签名。

3.1.2 盲签名的签名过程

盲签名的协议主要包括四个步骤:

(1) 盲化原始消息: B 随机选取一盲化因子r ,对明文消息进行盲化后得到盲消息,

)('m r m =,并将之发送给A ;

(2) 对盲化后的消息签名:A 接收到消息后,先验证消息的合法性,如果该消息是合

法的,则对该盲消息签名,得到对盲消息的签名)'('m Sig s =,再把签名发送给B ;

(3) 解盲化:当B 接收到盲消息的签名's 之后,首先对签名脱盲,也就是将原盲消息中的盲化因子r 除去,恢复得到对明文消息真正的签名)'('s r s =;

(4) 验证:通过相应的验证等式 ),(s m V ,任何人都可以验证签名的合法性,从而肯定这个相应的签名。 3.2 盲签名的分类

由于采用不同的技术,基于不同的问题以及实际应用中对盲化程度的不同要求,盲签名可以有众多不同的变型,现将其大致归类如下: 3.2.1 根据对不同参数的盲化及盲化强度分类:

(1) 盲参数签名:签名者知道所签署的消息m 的具体内容,按协议的设计,签名收方可改变原签名参数,即改变)(m Sig 得到新的签名,但不影响对新签名的认证。所以签名者虽签了名,但不知或不全知新签名的具体内容。

(2) 弱盲签名]2[:签名者仅知道盲化后的消息'm 的签名)'(m Sig 而不知)(m Sig ,这里

)(m Sig 是签名收方利用)'(m Sig 所求得。如果签名者存储)(m Sig 或其它有关数据,待)

(m Sig 公开后,签名者可以找到)(m Sig 和)'(m Sig 的内在联系,从而达到对消息拥有者的跟踪。

(3) 强盲签名]2[:无论签名者存储多少协议中间信息,他都无法将)(m Sig 和)'(m Sig 进行联系,而且签名收方的身份具有无条件的不可追踪性。 3.2.2 根据盲签名基于不同数学问题进行分类

(1) 基于因子分解问题的盲签名:此类盲签名方案的安全性是基于目前数学界尚无法解决的一个难题—— 因子分解问题,如著名的RSA 就是一个典型的基于因子分解问题的签名系统,而将其盲化就可以得到一个基于此类问题的盲RSA 签名方案。

(2) 基于离散对数问题的盲签名:此类盲签名方案的安全性也是基于目前数学界尚无法解决的一个难题—— 离散对数问题,此类方案的变形种类相当多,比较著名的有盲Schnorr 签名、盲E1Gamal 签名等。 3.2.3 根据盲签名功能的不同进行分类

(1) 部分盲签名:“部分”就意味着待签名的信息是由发送方和签名方共同生成的,它不仅包含发送方提交的待签名消息,而且包括了由签名方提供的“身份信息”。

(2) 公平盲签名:“公平”是区别于普通盲签名的不可追踪性而言的,相对于一般盲签名。公平盲签名可由一可信的第三方介入,以便在需要追踪“消息-签名”时对相应的消息和签名进行追踪以达到联系和确定“消息—签名”的目的。

(3) 限制性盲签名:与普通盲签名提供的完全不可跟踪性不同,限制性盲签名可以在有必要追踪签名的情况下成功、准确地追踪到相应的签名,这样就可以防止一些诸如洗黑钱、重复花费等非法行为的发生。

4 基于RSA的部分盲签名方案

部分盲签名指的是签名者在盲签名中加入了一个不可去除的代表日期或资金数额的公共信息,有了这个信息银行保存剩余的电子现金以防止重复花费。另一方面,通过这个公共信息以及签名,验证者就可以验证出签名的合法性。因此部分盲签名在电子商务中得到了广泛的应用。

4.1 签名过程

在一个基于RSA 的部分盲签名方案中,请求者请求一个来自于签名者的部分盲签名。首先,请求者准备盲消息以及一项公共信息,并把它们发送给签名者。若签名者对公共信息没有异议,则对盲消息生成一个包含相应公共信息的盲签名。然后,请求者对签名解盲,但他无法除去包含在签名里的公共信息。为了能成功地验证签名的合法性,签名的持有者需要三个相关数据,即明文消息,签名以及公认的公共信息。所以对于请求者、签名者、以及验证者来说,各自拥有的那个公共信息都应该是正确的。而这个公共信息,根据签名的不同用途,可以是日期或电子现金的数额等等。

由上述分析可以将基于RSA的部分盲签名方案分为以下几个阶段来进行:4.1.1 初始化阶段,4.1.2 请求阶段, 4.1.3 签名阶段,4.1.4 解盲及验证阶段。签名者在初始化阶段公开必要的信息,在请求阶段,请求者准备公共信息和使用一些盲因子来盲化明文消息,以得到盲消息。然后,签名者对盲消息签名,并植入公共信息。最后,在解盲和验证阶段,请求者对盲签名解盲,和验证签名的合法性。具体每一阶段描述如下:4.1.1 初始化阶段

(1)签名者随机选取两个大素数p,q,计算q

=

n?

p

φ;

和)1

?

=q

p

n

-

(-

(

)1

)

(

(2)选取一个e,如3

e,并计算满足)

=

=的d;

edφ

1n

mod

(

(3) 公开),(n e 作为公钥,保留),,(q p d 作为私钥,公开一个安全的单向Hash 函数。 4.1.2 请求阶段

(1) 请求者准备明文消息m ,和公共信息a 。随机选取两个数*

,n Z u r ∈,然后计算得到n u m h r e mod )1()(2+?=α 接着把),(αa 发送给签名者;

(2) 在验证公共信息的正确性之后,签名者随机选取一个小于n 的正整数x ,并把x 发送给请求者;

(3) 请求者接收到x 以后,随机选取一个整数'r ,使'r r b ?=。然后计算

n x u b e mod )(-=β,把β发送给签名者。

4.1.3 签名阶段

(1) 签名者计算n mod 1-β和n x a a h t d d mod ))1(()(222-+=β; (2) 发送),(1t -β给请求者。 4.1.4 解盲及验证阶段

(1) 接收者收到),(1t -β后,计算

n x u ux b ux c e mod ))(1()1(11---+=??+=β;

(2) 通过n r r t s mod 4

'2??=达到解盲化的目的; (3) ),,(s c a 是消息m 的签名,任何人都能通过

n c m h a h s e mod )1()()(222+=来验证签名的合法性。 4.2 算法分析

4.2.1 解盲化以后得到的签名的形式: 4

'2r r t s ??==4

'2223))1(()(r r x a h d d -+βα

=4

'222'3)))())((1(()(r r x u r r x a h d e d --?+α =2d 22d r x u 1x a h ---+2)))((()(α

=22222)))(1)(1)((()(r x u x u m h r a h d e d --++ =d d d c m h a h 222)1()()(+)(mod p

在上式中可以看到签名的最终形式是使用签名者的密钥对两部分信息进行签名,一部分是对公共信息a 的签名d a h )(,另一部分是对消息m 的签名d m h 2)(。因而准确地实现了部分盲签名的基本含义,即不仅对明文消息签了名,同时也实现了对公共信息签名。 4.2.2 签名的验证

请求者收到签名),,(s c a ,对签名解盲之后,由222)1()()(+=c m h a h s e )(mod n 可以验证签名的合法性。这是因为=s d d d c m h a h 222)1()()(+)(mod n ,则 e s =e d d d c m h a h ))1()()((222+=)(mod )1()()(222n c m h a h +

根据上式要想验证签名的合法性并不困难,因为已知签名对),,(s c a ,而e 是签名者的公钥,所以任何人只要拥有签名对),,(s c a ,就可以对签名进行合法性验证。 4.2.3 算法中RSA 的体现

在此部分盲签名算法中 ,RSA 体现在签名和验证这两个步骤中。签名用的是密钥d 作为指数,对消息和公共信息作用生成了签名=s d d d c m h a h 222)1()()(+

n mod ,而验证使用了公钥e ,通过n c m h a h s e mod )1()()(222+=完成对签名的验证。另外,

正因为依赖于)(mod 1n ed φ=,才使得验证过程成功进行。 4.2.4 盲化分析

盲化就是对明文消息进行某种特定的运算后生成一个无法解出明文的盲消息。这个部分盲签名算法中对明文消息的盲化体现在n u m h r e mod )1()(2+?=α。

首先使用单向的Hash 函数处理明文消息得到)(m h ,因为Hash 函数是单向的,因此,在知道)(m h 的情况下是无法得到明文消息m 的。另一方面,已知α要得到)(m h 需要通过

n u r m h e mod )1()(12--+??=α,而u r ,是不能得到的,所以也就不能进一步得到)(m h 。 4.2.5 部分盲签名的体现

(1) 解盲后的签名=s d d d c m h a h 222)1()()(+mod n, d a h )(是对公共信息a 的签名,这正是部分盲签名的体现,使它区别于普通盲签名;

(2) 由于使用了签名者的密钥对公共信息签名,因而请求者或其他人无法去除或改变这个公共信息a 。这在防止重复花费中起到很重要的作用。

4.2.6 不可追踪性

虽然签名者知道公共信息a ,并对它进行了签名d a h )(,但是当消息签名对被公开后,签名者是无法将签名和消息联系在一起的。这是因为签名者看到的是盲化以后的消息

n u m h r e mod )1()(2+?=α,根据盲化分析,签名者无法通过已知信息得到明文消息m 的

内容,即便在知道公共信息的情况下,签名者也得不到消息m 。

5 基于离散对数的盲签名方案

5.1基本的数字签名方案

5.1.1 关于DSA 的一种改进算法

p 为一大素数,q 为1-p 的素因子。*p Z g ∈是一个q 阶的生成元或本元素;签名者

的私钥是一个随机元素q Z x ∈,与之相应的公钥是)(mod p g y x =。为了对一个与q 相互素的消息m 签名,签名者要选择一个随机数q k Z ∈以及需要通过下列式子计算R ,r 和s :

)(mod p g R k =

)(mod q R r = )(mod q rx km s +=

由此得到关于消息m 签名对),(s r ,为了验证签名的合法性,接收者或其他人都可以通过下列算法加以确认:)(mod )(1

p y g T m r s --=。

在上式中的1-m 是消息m 取逆并模q ,若签名是合法的,那么当用上式验证以后应该可以得到下式:)(mod q T r =。 5.1.2 Nyberg-Rueppel 基本盲签名方案

Nyberg-Rueppel 基本盲签名方案有着与DSA 方案相同的体制参数。对一个消息

p Z m ∈签名。签名者随机地选取一个数字q k Z ∈,并且按下述算法计算r 和s 的值:)(mod p mg r k =和)(mod q k xr s +=。

于是得到了关于消息m 签名对),(s r ,而此时接收者就可以通过下式来对签名进行验证:)(mod p r y g m r s -=。

在此方案可以看到最终验证后的结果是原始消息m ,因此在传送签名对时,不需要将消息和签名一起传送,而只需传送签名即可。 5.2 盲签名方案

5.2.1 对DSA 的盲签名修正方案:

在下述签名步骤中,A 是签名者, B 是消息的发送者。

(1) 签名过程

A 随机选取p Z k ∈~

计算 )(mod ~

~

p g R k

=,若1),gcd(~=q R 则传送~

R 给B ;

B 首先检验是否满足1),gcd(~

=q R ,然后随机选取两个数α,βq Z ∈,计算得到

p g R R m o d ~βα

=;

B 验证1),gcd(=q R 是否成立,若成立则计算q) (mod R mR m 1

~~

-=α,发送~

m 给 A ; A 传递q) (mod x R m k s ~

~

~~

+=给B ;

B 计算q) (mod m R R s s -1

~β+=~

及q) (mod

R r =。 (2) 验证签名

如果可以满足 R g

g

y g T k m xr m R r s m r s

====+-+----β

αβ~

1

1

~~

1

)()(q mod 且)(m od q T r =则意味

着签名对是合法的。

(3) 算法分析

盲化消息: )(mod ~1

~

q R mR m -=α

在这个表达式中引入盲化因子βα,,由于盲因子βα,是无法得知的,因而原始消息m 无法被除了发送者以外的人获得,这样就达到了盲化消息的目的。另外,之所以消息的盲化方式为~

1

~

-=R mR m α,是因为最终的签名必须满足:

rx km s +==rx m k ++~

)(βα=)(mod ~

q rx m m k ++βα 1

又有

)(mod 1

~~

q m R R s s β+=-=)(mod )(~1

~

~~1

~

~~q m Rx R R m k m R Rx m k ββ++=++-- 2 观察1式与2式的不同可以发现,只有当)(mod ~

1

~

q R R m m -=α时,才能使得1式与2式所表达的s 为同一值。

解盲化: )(mod 1

~~

q m R R s s β+=-

从上式中可以看出,算法对盲签名~

s 进行处理,以恢复得到对消息m 的签名s 。进一步计算可以得到)(mod )(~

q rx m k s ++=βα,再与基本DSA(Digital Signature Algorighm)

数字签名算法的签名)(mod q rx km s +=比较可以得出)(mod ~

q k k βα+=。到此解盲化后得到了关于消息的m 签名。

安全性分析 消息的盲化

~

1

~

-=R mR m α是单向的,即知道~

m 的值,由于无法得知βα,的值,因而不可能得到原始消息的具体内容。这正是设计盲签名算法的最基本要求。

签名的不可伪造性

若想伪造一个签名,由于没有签名密钥x ,于是得到了一个'~

s ,它与正确的~

s 是不相等的,因为它是由不同的密钥'x 生成的,于是无法通过验证。因而可以防止对消息作伪造的签名。

签名的不可追踪性

由于签名者在签名时看到不是原始消息m ,而是盲化后的盲消息~

m 。当签名者看到原始消息m 时,他无法把他所签过名的消息和该消息联系起来,这样就实现了签名的不可追踪性。

5.2.2 Nyberg-Rueppel 算法的修正方案

(1) 签名步骤

A 选择q Z k ∈~,计算)(mod ~~

~

p g r k

=,发送~

r 给B ; B 随机选取两个数q Z ∈α和q

Z

*

∈β,并计算)(m o d ~p r mg r β

α

=以及

)(m o d 1

~

q r m -=β。然后检验是否满足q

Z

m *

~

∈,如果满足则发送盲消息~

m 给A ;

A 收到盲消息~

m 后,对此消息签名得到盲签名)(mod ~

~

~

q k x m s +=,并把盲签名~

s 传送给B ;

B 计算)(mod ~

q s s αβ+=得到对原始消息的签名。 (2) 验证签名

关于消息m 的合法签名对),(s r 应该能通过下列验证算法:

)(m o d ~

~~~

~q m mg

mg

y g k xr k x m k xr s r s ===++--+++---β

ββα

βαβ

(3) 算法分析

盲化消息: )(mod 1~

q r m -=β

从r 的表达式)(mod ~p r mg r β

α

=中可以看出它包含了盲因子βα,以及待盲化的原始消息m 。通过盲化算法,有效地隐藏了原来的明文消息,达到了盲化的目的。

解盲化: )(mod ~

q s s αβ+= 由上式进一步得到))(mod (~

~

q k xmg

s k αβα

β++=+,与Nyberg-Rueppel 基本数字签名

方案的签名算法)(mod q k xr s +=相比较,可以得出)(mod ~

p k k αβ+=。通过这个步骤,将盲签名解盲得到关于明文m 的签名s 。

安全性分析

消息的盲化: )(mod 11

~

~

q mg

r m k -+-==ββ

α

β

在上式中,引入盲因子βα,。就表达式形式来看,如果签名者或其他人想得知明文,需通过)(mod )

(~

q g

m k αββ+-=来求解得到,但是在只知道g 与~

k 的值,而不知道βα,的情

况下,是无法得知明文m 的。也就是这个盲化算法很好地实现了对明文消息的盲化。

签名的不可伪造性

类似于对DSA 的不可伪造性分析,若想伪造一个签名,由于没有签名密钥x ,于是得到了一个'~

s ,它与正确的~

s 是不相等的,因为它是由不同的密钥'x 生成的,于是无法通过验证。因而可以防止对消息作伪造的签名。

签名的不可追踪性

同样和DSA 的分析相似,由于签名者在签名时看到的不是原始消息m ,而是盲化后的盲消息~

m 。当签名者看到原始消息m 时,他无法把他所签过名的消息和此消息联系起来,从而签名的不可追踪。

6 公平盲签名

在普通的盲签名方案中,签名者在完成签名之后无法对签名进行追踪。也就是无法企图将签名和消息联系起来。正是盲签名的这种匿名性,为不法分子进行敲诈勒索以及洗黑钱等非法行为提供了便利,使他们可以毫无顾虑地进行着种种犯罪行为,进而危害国家和人民的利益。为了防止这类不法行为的发生,一种特殊的盲签名应运而生。这种盲签名能够在基于某些法律原因,需要对签名进行追踪的情况下,打破盲签名的匿名性,

准确地将消息和签名联系起来。这就是我们即将要讨论的一种特殊盲签名——公平盲签名]5[。

6.1 定义及分类

6.1.1 公平盲签名定义

公平盲签名指的是,在普通盲签名的基础上引入一可信任的第三方机构(Judge),它能够在需要对签名进行追踪的情况下,为签名者准确地追踪到签名。

6.1.2 公平盲签名分类

根据Judge接收到的来自签名者的信息的不同,因而产生不同的追踪方式,所以将公平盲签名分为以下两类:

第一类(TypeI)——给定签名者在签名时所能看到的信息,如盲消息、相关参数等。Judge在这种情况下能够给出使得签名者或任何人有效地识别出相应的消息—签名对的信息(例如,Judge能够对盲消息进行解盲);

第二类(TypeII)——给定消息—签名对。Judge可以使签名者能够有效地识别出消息的发送者或找出对应的签名时所看到的信息。

公平盲签名的追踪方式分类如下图所示:

算法协议

消息—

6.2 运用分割选择方法设计公平盲签名

6.2.1 签名算法

(1) 体制参数

),(e n 是签名者的公钥(pq n =是两个大素数q p ,的乘积,e 是一个与

)1)(1()(--=q p n φ互素的整数);

)(?J E 是一个使用了Judge 公钥加密系统的加密函数; H 是一个单向的Hash 函数; k 是安全因子(如, k >20)。 (2) 签名过程

首先,请求者和签名者均认可了一个序列ID (每一次签名都是相应与不同的ID 号进行的),接着就按照如下的签名步骤完成签名。(“||”表示一连串的序列) Step1:请求者对于每一个i =1,……,2k ,随机选取n i Z r ∈,以及序列i i βα,, 计算)||(i J i m E u α=,)||(i J i ID E v β=,))(mod ||(n v u H r m i i e

i i =,发送i m 给签名者;

Step2:签名者随机选取一个有k 个元素组成的子序列?S ﹛1,…,2k ﹜,将S 发送给请求者;

Step3:请求者对所有的S i ∈,返还i i i u r β,,给签名者;

Step4:签名者对于每一个S i ∈,检验是否满足))||(||(i J i e

i i ID E u H r m β=

)(mod n ,然后计算n m b d i S i mod )(?∏=,并将b 发送给请求者;

Step5:请求者解盲化得到n r b s i S i mod /?∏=。

经过上述步骤得到了最终的签名对(T s ,),其中=T ﹛S i v i i ?|),(α﹜。 6.2.2 签名合法性验证

要验证签名是否是合法的,可以通过下式加以验证: n v m E H s T

v J

e mod ))||||((),(∏∈=α

α

6.2.3 算法分析

(1) 盲化明文消息

盲化实际上就是通过加入一些盲化因子,对明文进行处理,达到隐藏明文的目的。在上述方案中,可以看到,n v u H r m i i e i i mod )||(=形成了盲签名。其中i r 是盲因子。 在得知盲消息i m 的情况下,要想得到明文m ,是困难的。这是因为i u 和i v 都是加密

相关主题
文本预览
相关文档 最新文档