本发明属于密码学领域,更进一步涉及盲签名和密码混淆技术领域中的一种基于混淆技术的加密盲签名方法。本发明是以盲签名和线性加密为基础,提出的一种基于混淆技术的加密盲签名方法,即隐藏盲签名交互过程的加密盲签名方法。本发明可用于web邮件服务当中,保护通信双方隐私安全的同时还可以把盲签名委托给web邮件提供商。
背景技术:
盲签名是一种特殊的数字签名,它与普通数字签名的区别在于:签名者是在不知道所签消息内容的情况下对用户提供的消息进行签名,即使签名者日后得到该签名,也无法与相应的签名过程联系起来。随着信息技术的发展,盲签名在电子现金、电子投票等领域都有广泛应用。加密与盲签名功能的结合能同时实现保密与认证,在电子商务中有重要的作用。
hada等人在其发表的论文“secureobfuscationforencryptedsignatures”(期刊advancesincryptology–eurocrypt2010pp92-112,公开日期2010)中提出了一种基于混淆技术的加密签名方法。该方法的主要步骤是:(1)签名者和接收者利用加密签名功能产生一个签名,该签名是先对一个给定的消息用签名者的签名私钥签名,再用接收者的公共加密密钥进行加密(2)构造一个混淆器对上述加密签名功能进行混淆处理,输出混淆后的算法(3)执行混淆后的算法来生成一个加密签名,由于混淆器具有虚拟黑盒特性,任意攻击者不能从中获取任何有用的信息,保护了签名密钥的安全。该方法存在的不足之处是:混淆后的加密签名算法在签名验证过程中使用了双线性映射,效率不高,不能满足实际应用需求。
同济大学在其申请的专利文件“一种加密群签名的混淆方法”(申请号:cn201510275377.2,申请日期:2015.05.26,公开日期:2015.09.16)中提出了一种将群签名和加密结合起来的基于混淆技术的加密群签名方法。该方法的主要步骤是:首先,群主构建签名群,根据初始化算法获取群参数序列、主私钥和追踪秘钥。接收者根据群参数序列获取各自的加密公钥和解密私钥。群主通过enroll算法获取群内成员的签名追踪信息和与各自身份对应的签名密钥,并将签名密钥发送给对应的群内成员;构造混淆算法将群内成员的初始加密群签名算法以及群内成员的签名密钥进行混淆处理,得到混淆后的加密群签名算法;执行混淆后的算法产生加密密文并发送给接收者;接收者对密文再进行加密。该方法存在的不足之处是:由于管理者联合群内成员有可能获取群内其他成员的密钥,导致密钥泄露问题,而且接收者需要对群内成员的多组密文再进行加密,需要进行加密处理的数据量太大。
技术实现要素:
本发明的目的在于扩展上述现有技术的功能特性,提供一个基于混淆技术的加密盲签名方法。
实现本方法的主要思想是:构造一个盲签名和加密方法的特殊对,使得产生一条消息的盲签名,然后加密该盲签名,在功能上等价于用加密过的签名密钥来产生盲签名。加密盲签名的密钥可看成是对加密盲签名功能的混淆。
本发明的具体实现步骤包括如下:
(1)生成密码系统公共参数:
(1a)任意选取两个互相独立的大素数p、q,其中p、q均大于2λ,λ表示由密钥生成中心所确定的密码系统参数,λ≤264;
(1b)密钥生成中心以大素数q为阶,分别构造一个加法循环群和乘法循环群;
(1c)密钥生成中心将加法循环群映射到乘法循环群,得到一个双线性映射;
(1d)密钥生成中心从加法循环群中随机选取一个生成元;
(1e)密钥生成中心将上述所生成的公共参数,发布给签名者和接收者;
(2)生成签名密钥对和加密密钥对:
(2a)签名者根据公共参数,利用签名密钥生成器,生成签名密钥和验证密钥;
(2b)接收者根据公共参数,利用加密密钥生成器,生成加密密钥和解密密钥,将加密密钥发送给签名者;
(3)按照下式,签名者对签名密钥进行混淆处理:
sk′=gl+t·sk
其中,sk′表示混淆后的签名密钥,g表示加法循环群的生成元,*表示取幂操作,l表示伪随机数生成器生成的随机数,t表示伪随机数生成器生成的随机数,·表示相乘操作,sk表示签名密钥;
(4)生成密文:
(4a)签名者随机选取一个安全参数,将安全参数发送给接收者;
(4b)接收者选取需要签名的明文,按照下式,利用所选取的安全参数对明文进行盲化:
m=m·rmod(p-1)
其中,m表示盲化后的明文,m表示需要签名的明文,r表示安全参数;
(4c)接收者将盲化后的明文发送给签名者;
(4d)利用签名公式,签名者用混淆后的签名密钥,对盲化后的明文进行签名处理,将得到的签名发送给接收者;
(4e)利用脱盲化公式,接收者对签名脱盲化,得到密文形式的盲签名;
(5)按照下式,接收者对密文形式的盲签名进行重随机化处理,得到加密盲签名:
其中,δ表示接收者对密文形式的盲签名进行重随机化处理,得到的加密盲签名,l1表示伪随机数生成器生成的随机数,t1表示伪随机数生成器生成的随机数;
(6)利用解密公式,接收者对加密盲签名进行解密;
(7)判断盲签名是否满足盲签名匹配条件,若是,则执行步骤(8),否则,执行步骤(9);
(8)接收者确认盲签名有效;
(9)退出密码系统。
本发明与现有技术相比具有如下优点:
第一,由于本发明采用混淆技术,签名者对签名密钥进行混淆处理,克服了现有技术中签名密钥容易被攻击而导致泄露的问题,使得本发明有效保护了签名者的签名密钥,大大提高了加密盲签名的安全性。
第二,由于本发明接收者对密文进行重随机化处理,克服了现有技术中接收者需要对群内成员的多组密文再进行加密,加密处理的数据量太大的问题,使得本发明接收者所处理的数据量明显减少。
第三,由于本发明盲签名匹配条件简单,克服了现有技术中签名验证过程需要使用双线性映射,效率不高的问题,使得本发明判断盲签名有效性的执行效率大大提高。
附图说明
附图1为本发明的流程图。
具体实施方式
下面结合附图1对本发明做进一步的描述。
步骤1,生成密码系统公共参数。
任意选取两个互相独立的大素数p、q,其中p、q均大于2λ,λ表示由密钥生成中心所确定的密码系统参数,λ≤264。
密钥生成中心以大素数q为阶,分别构造一个加法循环群和乘法循环群。
密钥生成中心将加法循环群映射到乘法循环群,得到一个双线性映射。
密钥生成中心从加法循环群中随机选取一个生成元。
密钥生成中心将上述所生成的公共参数,发布给签名者和接收者。
所述的公共参数是指:
params=(p,q,g,gt,e,g)
其中,params表示公共参数,g表示加法循环群,gt表示乘法循环群,e表示加法循环群映射到乘法循环群,得到的双线性映射。
步骤2,生成签名密钥对和加密密钥对。
签名者根据公共参数,利用签名密钥生成器,生成签名密钥和验证密钥。
接收者根据公共参数,利用加密密钥生成器,生成加密密钥和解密密钥,将加密密钥发送给签名者。
步骤3,按照下式,签名者对签名密钥进行混淆处理。
sk′=gl+t·sk
其中,sk′表示混淆后的签名密钥,g表示加法循环群的生成元,*表示取幂操作,l表示伪随机数生成器生成的随机数,t表示伪随机数生成器生成的随机数,·表示相乘操作,sk表示签名密钥。
步骤4,生成密文。
签名者随机选取一个安全参数,将安全参数发送给接收者。
接收者选取需要签名的明文,按照下式,利用所选取的安全参数对明文进行盲化:
m=m·rmod(p-1)
其中,m表示盲化后的明文,m表示需要签名的明文,r表示安全参数。
接收者将盲化后的明文发送给签名者。
利用签名公式,签名者用混淆后的签名密钥,对盲化后的明文进行签名处理,将得到的签名发送给接收者。
所述的签名公式如下:
s=k-1(m-sk′·r)mod(p-1)
其中,s表示签名者对盲化后的明文进行签名处理得到的签名,k表示伪随机数生成器生成的随机数,-1表示取逆操作,mod表示取模操作。
利用脱盲化公式,接收者对签名脱盲化,得到密文形式的盲签名。
所述的脱盲化公式如下:
c=(1-β)-1β·r·smod(p-1)
其中,c表示对签名脱盲化后得到的密文形式的盲签名,β表示伪随机数生成器生成的随机数。
步骤5,按照下式,接收者对密文形式的盲签名进行重随机化处理,得到加密盲签名。
其中,δ表示接收者对密文形式的盲签名进行重随机化处理,得到的加密盲签名,l1表示伪随机数生成器生成的随机数,t1表示伪随机数生成器生成的随机数。
步骤6,利用解密公式,接收者对加密盲签名进行解密。
所述的解密公式如下:
其中,σ表示解密后得到的盲签名。
步骤7,判断盲签名是否满足盲签名匹配条件,若是,则执行步骤8,否则,执行步骤9。
所述的盲签名匹配条件如下:
其中,pk表示验证密钥。
步骤8,接收者确认盲签名有效。
步骤9,退出密码系统。