一种无证书数字签名方法与流程

文档序号:16244988发布日期:2018-12-11 23:29阅读:953来源:国知局
一种无证书数字签名方法与流程

本发明属于信息安全技术领域,特别是涉及一种无证书数字签名方法。

背景技术

数字签名是密码学中的一个基本原语,可以使验证端确认签名端的身份和消息的完整性,是实现完整性(integrity)、认证(authentication)和不可否认性(non-repudiation)的重要方法。这里的完整性是指信息在传输或存储过程中,不能被偶然或蓄意地删除、修改、伪造、重放、插入等破坏和丢失的特性。认证是确保通信方的确是它所声称的那位。确认一个实体的身份称为实体认证,确认一个信息的来源称为消息认证。不可否认性是防止通信方对以前的许诺或者行为的否认。

数字签名属于公钥密码技术,每个签名端拥有两个密钥:私钥(secretkey)和公钥(publickey),其中私钥由签名端秘密保存,公钥可以发给验证端用于签名的验证。一种数字签名方法一般包含两个重要阶段,即签名(signature)阶段和验证(verification)阶段。签名阶段的输入是签名端的私钥sk和消息m,输出是对m的签名结果σ。验证阶段输入的是签名者的公钥pk,消息m和签名结果σ,输出“接受”(签名合法)或“拒绝”(签名不合法)。公钥密码技术易受到“公钥替换”攻击,即攻击者用自己选定的假公钥替换一个公钥目录中真实的公钥。当验证端用这个假公钥验证一个签名时,攻击者就可以输出“合法”签名。为了抵抗公钥替换攻击,需要让用户的公钥以一种可验证和可信的方式与用户的身份信息关联起来。目前,认证用户的公钥有三种方法:基于公钥基础设施(publickeyinfrastructure,pki)的方法、基于身份(identity-based)的方法和无证书(certificateless)方法。

(1)基于公钥基础设施的方法:每个签名端的公钥都伴随一个公钥证书,这个公钥证书由证书权威(certificateauthority,ca)签发。公钥证书是一个结构化的数据记录,它包括了用户的身份信息、公钥参数和ca的签名等。验证端可以通过验证证书的合法性(ca的签名)来认证公钥。这种方法有如下两个缺点:①使用任何公钥前都需要先验证公钥证书的合法性,增加了验证端的计算量;②ca需要管理大量的证书,包括证书的颁发、存储、撤销等。

(2)基于身份的方法:为了简化密钥管理,shamir于1984年首次提出了基于身份的密码体制的概念。在基于身份的方法中,签名端的公钥可以根据其身份信息(如姓名、身份证号码、电话号码、e-mail地址等)直接计算出来,签名端的私钥则是由一个称为私钥生成中心(privatekeygenerator,pkg)的可信方生成。基于身份的方法取消了公钥证书,减少了公钥证书的存储和合法性验证。但是,基于身份的方法有一个致命的缺点:所有签名端的私钥都由pkg生成。pkg知道所有签名端的私钥不可避免的引起密钥托管问题。

(3)无证书方法:为了克服基于身份的方法中的密钥托管问题,al-riyami和paterson于2003年提出了无证书密码体制(certificatelesscryptography)的概念。在这种方法中,签名端的私钥来自于两部分,一部分是签名端自己选择的秘密值,一部分是由密钥生成中心(keygeneratingcentre,kgc)根据签名端的身份信息计算的部分私钥。公钥通常利用秘密值来生成,但这里的公钥不必有单独认证的公钥证书。也就是说,签名端需要联合kgc生成的部分私钥和自己的秘密值来生成完全私钥。kgc并不知道签名端的完全私钥,从而消除了密钥托管问题。

当前,无证书签名方法主要有以下几种:

2003年,al-riyami和paterson[s.s.al-riyami,k.g.paterson,certificatelesspublickeycryptography,advancesincryptology-asiacrypt2003,lncs2894,pp.452-473,2003.]利用双线性对,提出了一种无证书签名方法。该方法在签名阶段不需要双线性对运算,在验证阶段需要4次双线性对运算。他们将敌手分为两种:类型i敌手和类型ii敌手。类型i敌手不知道主密钥,但是可以任意替换签名端的公钥。类型ii敌手知道主密钥,但是不能替换签名端的公钥。遗憾的是,huang等[x.huang,w.susilo,y.mu,etal.onthesecurityofcertificatelesssignatureschemesfromasiacrypt2003.cryptologyandnetworksecurity-cans2005,lncs3810,pp.13-25,2005.]显示了该签名方法对于类型i敌手是不安全的,类型i敌手可以伪造一个消息m的签名。主要原因在于不能保证公钥中使用的秘密值与完全私钥中使用的秘密值是同一个值。huang等也给出了一个改进的签名方法。该方法在签名阶段需要1次双线性对运算,在验证阶段需要5次双线性对运算。

2006年,zhang等[z.zhang,d.s.wong,j.xu,etal.certificatelesspublic-keysignature:securitymodelandefficientconstruction.appliedcryptographyandnetworksecurity-acns2006,lncs3989,pp.293-308,2006.]提出了一种高效的无证书签名方法,他们将使用了主密钥、随机数和秘密值的三种短签名进行了聚合,获得了无证书签名方法。该方法在签名阶段不需要双线性对运算,在验证阶段需要4次双线性对运算。

2007年,liu等[j.k.liu,m.h.au,w.susilo.self-generated-certificatepublickeycryptographyandcertificatelesssignature/encryptionschemeinthestandardmodel.acmsymposiumoninformation,computerandcommunicationssecurity-asiaccs2007,pp.273-283,2007.]给出了一种标准模型下安全的无证书签名方法。标准模型不依赖随机预言模型,能够取得更强的安全性质,但效率较低。

2012年,he等[d.he,j.chen,r.zhang.anefficientandprovably-securecertificatelesssignatureschemewithoutbilinearpairings.internationaljournalofcommunicationsystems,2012,25(11):1432-1442.]设计了一种基于椭圆曲线离散对数问题的无证书签名方法,该方法没有使用双线性对,在效率方面比使用了双线性对的方法更有优势。

2014年,liu等[j.liu,z.zhang,x.chen,andk.s.kwak.certificatelessremoteanonymousauthenticationschemesforwirelessbodyareanetworks.ieeetransactionsonparallelanddistributedsystems,2014,25(2):332-342]也设计了一种无证书签名方法,其安全性基于计算diffie-hellman问题(computationaldiffie-hellmanproblem,cdhp)。该方法在签名阶段需要1次双线性对运算,在验证阶段需要2次双线性对运算。

另外,中国专利申请cn104320259a公开了一种基于schnorr签名算法的无证书签名方法,该方法使用schnorr签名算法完成签名端的公钥生成与验证,减少了双线性对的使用次数。中国专利cn103023648b公开了一种基于椭圆曲线离散对数问题的无证书签名方法,使用了schnorr签名算法来生成签名端的部分私钥。中国专利cn102983971b公开了一个签名长度比较短的无证书签名方法,其签名长度为群g1中的一个元素长度。中国专利申请cn106936584a公开了一种无证书签名方法,将部分私钥和秘密值合并成一个元素作为完全私钥。这些无证书签名方法在验证端至少需要2次双线性对运算,计算成本较高。



技术实现要素:

本发明的目的在于:高效实现无证书环境中的签名方法,为使用者提供完整性、认证和不可否认性服务。

本发明公开了一种无证书签名方法,包括:

一种无证书数字签名方法,其特征在于,包括下列步骤:

步骤s1:设定系统参数,包括:选择素数p,设置p阶的循环加法群g1,并选择群g1的一个生成元,记为参数p,以及设置p阶的循环乘法群g2,并基于g1、g2,设置双线性映射定义三个安全哈希函数h1,h2和h3,其中h1为从{0,1}*映射到h2从g1映射到h3是从{0,1}*×{0,1}*×g1×g2映射到其中{0,1}*表示任意比特长的二进制序列组成的集合,表示有限域去掉元素零所得到的有限域;以及计算系统参数

公开系统参数

步骤s2:生成密钥:

签名端提交身份信息id给密钥生成中心;

密钥生成中心从有限域中随机选择主密钥s,计算公钥ppub=sp,部分私钥并将公钥ppub、部分私钥did发送给签名端;

签名端从有限域中随机选择参数xid作为秘密值,计算公钥pkid=xid(h1(id)p+ppub),并设置完全私钥

步骤s3:生成消息m的签名:

签名端从有限域中随机选取参数r,计算承诺t=gr;以及计算哈希值h=h3(m,id,pkid,t)、签名s=(r+h)sid;

将消息m及其签名σ=(h,s),以及签名端的身份id和公钥pkid发送给验证端;

s4:验证消息m的签名:

验证端在收到消息m、签名σ=(h,s)和签名端的身份id以及公钥pkid后,计算参数

计算哈希值h*=h3(m,id,pkid,t′);

验证等式h*=h是否成立,若成立,则认为签名σ合法,验证端输出“接受”;否则输出“拒绝”。

由于采用了上述技术方案,本发明的有益效果是:本发明的签名方法,在验证端只需要执行一次双线性对运算,比以往的基于双线性对的无证书签名方法都要高效,从而高效的为无证书环境的用户提供完整性、认证和不可否认性服务。

附图说明

图1是本发明的具体实施方式的系统结构示意图;

图2是本发明具体实施方式的签名操作流程图;

图3是本发明具体实施方式的验证操作流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。

本发明的一种无证书签名方法,包括:

设定系统参数,用于生成签名端的私钥sid和公钥pkid,以及签名端的签名生成和验证端的签名验证;

签名端提交身份信息id给密钥生成中心,密钥生成中心根据系统参数和身份信息id生成部分私钥did并发送给签名端;签名端基于系统参数随机生成一个秘密值xid,根据秘密值xid与部分私钥did设置完全私钥sid和公钥pkid;

签名端根据系统参数、身份信息id、私钥sid和消息m,生成签名结果σ,并将σ、身份信息id和公钥pkid发送给验证端。

参见图3,具体执行步骤包括设定系统参数、生成密钥、签名和验证,具体描述如下:

(1)设定系统参数:

(1.1)设g1为由p生成的循环加法群,阶为p,g2为具有相同阶p的循环乘法群,为一个双线性映射。定义三个安全hash函数h1,h2和h3。h1为从{0,1}*映射到h2从g1映射到h3是从{0,1}*×{0,1}*×g1×g2映射到其中{0,1}*表示任意比特长的二进制序列组成的集合,表示有限域去掉元素零所得到的有限域。

基于上述设定,得到的系统参数为:并公开这些系统参数。

通常系统参数由密钥生成中心设定并公开,以便于签名端、验证端可从系统参数设置端获得计算时所需的系统参数。

(1.2)密钥生成中心随机选择一个主密钥计算相应的公钥ppub=sp。

(1.3)密钥生成中心计算参数

(2)生成密钥:

(2.1)签名端提交身份信息id给密钥生成中心,密钥生成中心计算部分私钥并将其发送给签名端。

(2.2)签名端随机选择参数作为秘密值。

(2.3)签名端设置完全私钥其中公钥pkid=xid(h1(id)p+ppub)。

(3)签名:

签名端可以利用身份id和完全私钥sid对消息m进行签名。参见图2,具体步骤如下:

(3.1)随机选取参数计算承诺t=gr

(3.2)根据哈希函数h3计算哈希值h=h3(m,id,pkid,t)。

(3.3)计算签名s=(r+h)sid。

(3.4)发送消息m及其签名结果σ=(h,s)、以及签名端的身份id和公钥pkid给验证端。

(4)验证:

接收端在收到消息m、签名结果σ=(h,s)和签名端的身份id以及公钥pkid时,参见图3,具体执行以下步骤:

(5.1)计算参数即恢复出承诺t。

(5.1)计算哈希值h*=h3(m,id,pkid,t′)。

(5.2)通过验证等式h*=h是否成立来验证签名的合法性,若成立,则认为σ是签名端关于m的合法签名,验证端输出“接受”,否则输出“拒绝”。

为了验证本发明的运行速率,将本发明的签名方法在英特尔酷睿(intelcore)i55200u处理器(2.20ghz)、内存为8g的计算机上,利用pbc库(选择类型a配对)对本发明进行了编程验证(运行1000次后取平均值):设定系统参数需要的时间为38.52毫秒、密钥生成中心生成部分私钥需要的时间为9.64毫秒、签名端设置完全私钥和公钥需要的时间为28.89毫秒、签名需要的时间为12.10毫秒、验证需要的时间为31.53毫秒。可见本发明具有验证处理效率高效和实用的特点。

以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1