本发明涉及一种基于无证书的多接收者匿名签密方法,属于信息安全领域。
背景技术:
对于信息的加密一直是人们探索的热点,密码学是关于消息保密研究的科学,加密和解密的数学函数被称为加密算法,其包含加密和解密函数。密钥参数由通信双方共有,密钥保证了算法的安全性。在签密概念提出之前,密码学中的一种典型做法方法就是对需要传输的内容先经行数字签名然后再对其经行加密,这也是当时研究的重要方向。
签密能够同时执行签名和加密两个操作,相比传统的先签名后加密的加密机制有较低的计算和操作成本,保密和认证是密码学中两个重要的安全目标,签密能够在一个合理的逻辑步骤内同时实现保密性和认证性,因此签密一直被认为是一种有效的方法来解决两者之间的沟通安全问题。签密算法在最近十多年里面得到了普遍的应用与研究,因此,多种签密方案被提出。
多接收者签密是把发送者消息签密后发送给多个接收者并提供批量验证,减少信息传输功耗,提高签密验证效率,因此非常适合于一对多模式通信,例如网络安全广播和安全组播等业务。国内外很多学者提出了多种新的多接受者签密方案,然而大多签密机制都是基于身份的密码系统,其中存在密钥托管的问题。2003年,al-riyami和paterson首先在传统的公钥密码体制和基于身份的公钥密码体制之间提出了一个没有证书的公钥密码体制,国内外学者相继提出了很多适用于网络传输、无线传感等新型网络传输环境下无证书签密算法。
随着人们对个人隐私的不断重视,不仅发送者希望自己在广播消息的时候避免自己身份的泄露,同时接收者也希望自己在收到某个消息的事实不被泄露,在现有的大多数多接收者签密方案中,在密文信息中会直接暴露接收者的身份信息,主要原因是因为在这些方法中,授权用户的身份信息是密文的一部分,这样就不可避免的暴露接收者的身份信息,导致接收者身份信息泄露。
技术实现要素:
本发明提出一种基于无证书的多接收者匿名签密方法,该方法保护了发送者和接收者信息,并且具有较高的解签密效率和较低的通信开销,密文通过广播的形式发送给每一位接受者,密文不再列出收件人的身份,从而保护隐私信息,具有解签密匿名性;每一个接收者解密所需密文信息相同,满足解签密公平性;任何第三方在仅拥有密文时就可验证密文发送方的身份,满足公开可验证性。最终目的是设计出一种不仅具有安全性、不可伪造性、匿名性,并且还是多接收者签密的方法。
一种基于无证书的多接收者匿名签密方法,包括如下步骤:
步骤1,系统初始化:输入生成元,定义四个抗碰撞的理想哈希函数,随机选择主密钥s并秘密保存,然后生成系统公钥,最后公开系统参数params和保密系统的主密钥s;
步骤2,用户密钥设置:输入给定用户身份、系统参数params,kgc输出用户的部分私钥,并通过安全渠道返回其给这个用户;
步骤3,部分私钥提取:输入给定用户身份、系统参数params,用户输出其部分私钥;
步骤4,签密:输入系统参数params、消息、发送者身份及其私钥、所有接收者身份及其公钥,返回密文;
步骤5,解密验证算法:输入系统参数params、发送者身份及其公钥、接收者身份及其私钥,如果验证通过,则用户输出明文消息;否则,返回出错消息,拒绝接收消息。
进一步地,所述步骤1中,具体的,定义循环群g的阶为素数q(q>2k)的,p为群g的一个生成元,具有抗碰撞的理想哈希函数:
进一步地,所述步骤2中,用户idi选取随机数xi,计算公钥xi=xih3(idi)。
进一步地,所述步骤3中,具体的,用户ui发送{idi,xi}给kgc,kgc随机选取
进一步地,所述步骤4中,具体的,用户ua对发送给idi消息mi签密如下:
步骤4-1,随机选择
步骤4-2,计算拉格朗日差值多项式;
其中
步骤4-3,计算
步骤4-4,计算hi,2=h2(ida,va,xa,zi),其中zi=(b+ya)(yi+ppubhi1),
步骤4-5,计算ri=h4(ida||mi);
步骤4-6,计算si=b+(xa+ya)ri,这样ua对idi消息mi的签密为δi=(va,t1,t2,…tn,wi,si);
最后的密文是δ={t1,t2,…tn,va,w1,w2,…wn,s1,s2…sn},最后以广播的形式发送给每一位接收者。
进一步地,所述步骤5中,具体的,idi对ua发送的签密进行解签密,步骤如下:
步骤5-1,计算
步骤5-2,计算
步骤5-3,计算hi1=h1(idi,xi,yi);
步骤5-4,计算ri=h4(ida||mi),通过等式sip=va+(xap+ya+ppubhi1)ri进行验证,正确即输出对应消息(ida||mi),否则无效。
本发明达到的有益效果为:
(1)本发明利用采用拉格朗日插值法和无双线性对构造出新的多接受者匿名签密方法,对与发送者和接收者的身份信息都进行了保护,避免的双方身份信息的泄露。
(2)本发明相对与现有的方法具有较高的计算效率和较低的通信开销。该方法在接收人数大于1时,签密过程中不需要双线性对运算,并且具有匿名性、公开验证性、机密性和不可伪造性,提高了签密和解签密的计算效率。
附图说明
图1是本发明实施例中基于无证书的多接受匿名签密方法的整体流程框图。
具体实施方式
下面结合说明书附图对本发明的技术方案做进一步的详细说明。
一种基于无证书的多接收者匿名签密方法,包括如下步骤:
步骤1,系统初始化:输入生成元,定义四个抗碰撞的理想哈希函数,随机选择主密钥s并秘密保存,然后生成系统公钥,最后公开系统参数params和保密系统的主密钥s。
定义循环群g的阶为素数q(q>2k)的,p为群g的一个生成元,具有抗碰撞的理想哈希函数:
步骤2,用户密钥设置:输入给定用户身份、系统参数params,kgc输出用户的部分私钥,并通过安全渠道返回其给这个用户。用户idi选取随机数xi,计算公钥xi=xih3(idi)。
步骤3,部分私钥提取:输入给定用户身份、系统参数params,用户输出其部分私钥。
用户ii发送{idi,xi}给kgc,kgc随机选取
步骤4,签密:输入系统参数params、消息、发送者身份及其私钥、所有接收者身份及其公钥,返回密文。
具体的,用户ua对发送给idi消息mi签密如下:
步骤4-1,随机选择
步骤4-2,计算拉格朗日差值多项式。
其中
步骤4-3,计算
步骤4-4,计算hi,2=h2(ida,va,xa,zi),其中zi=(b+ya)(yi+ppubhi1),
步骤4-5,计算ri=h4(ida||mi)。
步骤4-6,计算si=b+(xa+ya)ri,这样ua对idi消息mi的签密为δi=(va,t1,t2,…tn,wi,si)。
最后的密文是δ={t1,t2,…tn,va,w1,w2,…wn,s1,s2…sn},最后以广播的形式发送给每一位接收者。
步骤5,解密验证算法:输入系统参数params、发送者身份及其公钥、接收者身份及其私钥,如果验证通过,则用户输出明文消息;否则,返回出错消息,拒绝接收消息。
具体的,idi对ua发送的签密进行解签密,步骤如下:
步骤5-1,计算
步骤5-2,计算
步骤5-3,计算hi1=h1(idi,xi,yi)。
步骤5-4,计算ri=h4(ida||mi),通过等式sip=va+(xap+ya+ppubhi1)ri进行验证,正确即输出对应消息(ida||mi),否则无效。
以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。