具备加同态性的加密方法、系统及可读存储介质与流程

文档序号:25991420发布日期:2021-07-23 21:03阅读:217来源:国知局
具备加同态性的加密方法、系统及可读存储介质与流程

本发明涉及信息安全技术领域,特别涉及具备加同态性的加密方法、系统及可读存储介质。



背景技术:

标识密码(identity-basedencryption,ibe)是1984年shamir提出的概念,在标识密码系统中,用户的私钥由密钥生成中心(keygenerationcenter,kgc)根据主密钥和用户标识计算得出,用户的公钥由用户标识唯一确定,从而用户不需要通过第三方保证其公钥的真实性。与基于证书的公钥密码系统相比,标识密码系统中的密钥管理环节可以适当得到简化。

标识密码体制(identity-basedcryptography,ibc)算法的优势使其具有很大的发展潜力和应用前景,引起了国内外信息安全管理机构、密码专家和应用系统的关注。至2014年,国际上已有多家机构将ibc算法采纳为行业或组织的密码标准,例如rfc5091基于身份加密标准#1;超奇异曲线在bf和bb1密码体制中的应用;rfc5409使用bf和bb基于身份加密;密码消息语法的算法(cms);rfc6267mikey-ibake;多媒体因特网(mikey)中基于身份的认证密钥交换(ibake)分发的模式;rfc6508sakai-kasahara密钥加密(sakke);rfc6509mikey-sakke;多媒体因特网(mikey)sakai-kasahara密钥加密;iso/iec18033-5信息技术-安全技术-加密算法-第五部分:基于标识的密码;ieeep1363.3基于对的算法加密标准(草案)。

而同态加密是一种对密文进行运算的加密方案,计算后的密文进行解密可以得到与直接对原始数据进行计算相同的结果。如今,越来越多人喜欢使用公有云或互联网存储数据。然而,不管是任何信息系统,均需要安全性来保证它的完整性、机密性、可用性。例如使用标识密码算法将数据加密后再存入数据库中,但是如果需要对加密数据进行操作或运算,则有必要对加密数据进行解密。但是,解密后的数据就不再安全了。同态加密可以很好的解决这一问题,因为它可以直接对密文进行运算,而不需要解密为明文。但现有的标识密码算法不具有加同态的性质。



技术实现要素:

本发明提供了具备加同态性的加密方法、系统及可读存储介质,能够在保证安全性的同时,使加密算法具有加同态性质。

为了解决上述技术问题,本申请提供如下技术方案:

具备加同态性的加密方法,采用群gt中元素中g的明文m加上随机数r次幂产生主要密文c2,其中群gt为阶为素数n的乘法循环群。

基础方案原理及有益效果如下:

本方案中,c2是主要密文,即包含m的密文。不仅采用群gt中元素中g的明文m次幂,还加上随机数r次幂产生主要密文c2,使得主要密文c2的安全性高。对两个主要密文c2和c′2进行乘法运算时,由于c2和c′2均为群gt中元素,可以直接运算,即指数部分相加,因此该加密过程具有加同态性。而且,当多个主要密文c2进行运算后,为了得到每一个参与运算的主要密文c2,对运算结果进行破解的难度大于单独对一个未进行运算的主要密文c2进行破解的难度,安全性更高。综上本方案能够在保证安全性的同时,使加密算法具有加同态性质。

进一步,主要密文c2的计算过程具体为:

c2=gr+m

进一步,在主要密文c2计算前还包括如下步骤:

a1:计算群g1中的元素qb=h1(idb||hid,n)p1+ppub-e;其中h1()是由密码杂凑函数hv()派生的密码函数;idb是用户b的用户标识,用于唯一确定用户b的公钥;hid是用一个字节标识的私钥生成函数识别符;n是循环群g1、g2和gt的阶;||表示字符串或比特串的拼接;p1是群g1的生成元;ppub-e是加密主公钥;

a2:产生随机数r∈[1,n-1];

a3:计算群g1中的元素c1=[r]qb;

a4:计算群gt中的元素g=e(ppub-e,p2),e是从g1×g2到gt的双线性对,p2是群g2的生成元;

a5:计算群gt中的元素w=gr

在主要密文c2计算后还包括如下步骤:

a7:计算c3=mac(k2,c2),c3是用户单次解密的校验,mac()是消息认证码函数,k2是mac()的密钥;

a8:输出密文c=(c1,c2,c3)。

本优选方案的加同态性验证如下:令关于任意两个消息m1和m2的密文分别为c=(c1=[r1]qb,c2=gm1+r,c3=mac(k2,c2))和c’=(c1’=[r2]qb,c2’=gm2+r’,c3’=mac(k2’,c2’)),其中c1进行辅助解密,c3的功能是进行解密校验。计算c*=(c1*=c1·c1’=[r1+r2]qb,c2*=c2·c2’=gm1+m2+r+r’),观察该密文可发现c*即是关于消息m1+m2的一个合法密文,因此该加密过程具有加法同态性。

本方案可以直接对主要密文进行计算,直接得到多个密文相加的结果,然后再进行解密,得到多个明文相加的结果,其中每个明文中数据并不可知也不会泄露,最终得到的是多个明文相加的结果,保证了数据安全。此外,本方案中主要密文进行计算并不只限于上述论证过程中的两个主要密文,可为多个主要密文进行计算,并且最终得到的多个明文相加的结果可以进行权重运算,例如:结果为m1+m2+m3+m4,则可对结果进行权重运算即k(m1+m2)+m3+m4。

进一步,还包括秘钥产生过程:kgc产生随机数ke∈[1,n-1]作为加密主私钥,计算g1中的元素ppub-e=[ke]p1作为加密主公钥,则加密主密钥对为(ke,ppub-e),kgc秘密保存ke,公开ppub-e。

进一步,还包括产生用户b的加密私钥deb的过程:kgc计算t1=h1(idb||hid,n)+ke,若t1=0则需重新产生加密主私钥,计算和公开加密主公钥,并更新已有用户的加密私钥;否则计算然后计算deb=[t2]p2。

进一步,所述a1中,n为大于2191的素数。

本发明的具备加同态性的加密系统,采用上述具备加同态性的加密方法。

本发明的一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

附图说明

图1为具备加同态性的加密方法的流程图;

图2为解密方法的流程图。

具体实施方式

下面通过具体实施方式进一步详细说明:

实施例

术语与符号:

a,b:使用公钥密码系统的两个用户。

n:循环群g1、g2和gt的阶,为大于2191的素数。

g1:阶为素数n的加法循环群。

p1:群g1的生成元。

g2:阶为素数n的加法循环群。

p2:群g2的生成元。

gt:阶为素数n的乘法循环群。

hv():密码杂凑函数。

h1():由密码杂凑函数派生的密码函数。

e:从g1×g2到gt的双线性对。

hid:用一个字节标识的私钥生成函数识别符,由kgc选择并公开。

ke:加密主私钥。

ppub-e:加密主公钥。

kdf():密钥派生函数。

mac():消息认证码函数。

idb:用户b的标识,可以唯一确定用户b的公钥。

m:待加密的消息。

m′:解密得到的消息。

x||y:x与y的拼接,x和y是比特串或字节串。

[u]p:加法群g1、g2中元素p的u倍。

本实施例中,密钥产生过程如下:

kgc产生随机数ke∈[1,n-1]作为加密主私钥,计算g1中的元素ppub-e=[ke]p1作为加密主公钥,则加密主密钥对为(ke,ppub-e)。kgc秘密保存ke,公开ppub-e。

kgc选择并公开用一个字节表示的加密私钥生成函数识别符hid。

用户b的标识为idb,为产生用户b的加密私钥deb,kgc计算t1=h1(idb||hid,n)+ke,若t1=0则需重新产生加密主私钥,计算和公开加密主公钥,并更新已有用户的加密私钥;否则计算然后计算deb=[t2]p2。

设用户a需要发送的消息为m,mlen为m的比特长度,为分组密码算法中密钥k1的比特长度或与mlen相等,在本实施例中被废弃。为函数mac()中的密钥的比特长度。

如图1所示,用户a为了加密明文m给用户b,作为加密者的用户a使用本实施例的具备加同态性的加密方法,包括如下步骤:

a1:计算群g1中的元素qb=h1(idb||hid,n)p1+ppub-e。此处的h1()为由密码杂凑函数hv()派生的密码函数;idb是用户b的用户标识,用于唯一确定用户b的公钥;hid是用一个字节标识的私钥生成函数识别符,由kgc选择并公开;n是循环群g1、g2和gt的阶,为大于2191的素数;||代表的是字符串或比特串的拼接;p1是群g1的生成元;ppub-e是加密主公钥,详情可见密钥生成部分;

a2:产生随机数r∈[1,n-1],此处的n是循环群g1、g2和gt的阶,产生随机数用于计算密文c1;

a3:计算群g1中的元素c1=[r]qb,此处的qb为a1计算的结果,qb是加法循环群g1上的元素,而[r]qb的含义是qb的r倍,同样是循环群g1上的元素;

a4:计算群gt中的元素g=e(ppub-e,p2),e是从g1×g2到gt的双线性对,即g是群gt上的元素;

a5:计算群gt中的元素w=gr,r是a2生成的属于[1,n-1]的随机数;

a6:计算然后计算k=kdf(c1||w||idb,klen)。k1为k的前mlen比特,若k1全为0,则返回a2,否则k2为k的后比特。计算c2=gm·w。由于w=gr,c2也可写成gr+m。本实施例中,k1后续是无用的,kdf()密钥派生函数仅用于单次解密的认证。但为了便于本方法可以与其他加密方案匹配,本实施例在此处保留对k1是否为0的校验,在其他实施例中,也可以去掉对k1是否为0的校验。

a7:计算c3=mac(k2,c2),c3用户单次解密的校验,mac()是消息认证码函数,k2是mac()的密钥;

a8:输出密文c=(c1,c2,c3)。c1,c2的功能主要是解密,而c2是主要密文,主要密文指包含明文m的密文,c1进行辅助解密,c3的功能是进行解密校验。

如图2所示,基于具备加同态性的加密方法,本实施例还提供一种解密方法,包括如下步骤:

b1:验证c1∈g1是否成立,若不成立则报错并退出。c1=[r]qb,而qb是群g1上的元素,所以c1∈g1一定成立。若不成立则说明密文c1为非法密文,可直接报错并退出;

b2:计算群gt中的元素w′=e(c1,deb),e是从g1×g2到gt的双线性对,而由于deb=[t2]p2,可以算出e(c1,deb)=e(ppub-e,rp2)=gr

b3:计算然后计算k=kdf(c1||w′||idb,klen)。k1为k的前比特,k2为k的后比特。本实施例中,还判断k1是否全为0,如果全为0,保持并退出。计算gm′=c2·w′-1,从gm′中恢复m′。此处的gm′是一个离散对数,此处可用各种快速求解离散对数的方法,如大步小步走算法等。

b4:计算u=mac(k′1,c2),若u≠c3,则报错并退出。将算出的k′1作为密钥,算出c2的mac值。如果k′1正确,那么u=c3,同时也说明w计算正确,同理解密也正确;

b5:输出明文m′。

上述内容仅显示了单次加密m并解密得到m′的流程,因为对于不同的明文m1,m2来说,加密与解密流程都是一致的,不需要展示多次。

例如用户a用用户b的公钥加密明文m1、m2,并将密文发送给用户b,用户b利用加同态性求出m1+m2。为了解释加同态性,设密文1为密文2为

c1:c1×c′1=[(r+r′)])qb。密文c1与c′1均为群g1上的元素,可直接相加;

c2:与c1类似,但密文c2与c′2是群gt上的元素,当然也可直接进行运算;

c3:w·w′=e(c1×c′1,deb);

c4:恢复出m1+m2。

由于从中恢复出m1+m2需要解决一个求一个离散对数,这里需要采用经典的“大步-小步走算法”计算出m1+m2。

本实施例还提供具备加同态性的加密系统,使用上述具备加同态性的加密方法。

上述具备加同态性的加密方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一可读存储介质中,该计算机程序在被处理器执行时,可实现上述方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。

在现实生活中,同态加密的应用场景越来越多,本实施例以三个场景为例,说明同态加密在现实场景中的应用。

示例1:数据聚合是无线网络传感器网络(wsns)中采用的一种十分有效的方法,它能最大程度地减少数据传输和降低存储。使用该技术,我们可以使数据以聚合的形式在网络中传输。比如,网络并不是存储由复数个节点监测到的所有数据,而是得到一个唯一的精确值,比如它们的和。首先,由于网络中节点的存储空间有限,应在保证不丢失必要信息的前提下尽可能的减少报文的存储与传输。其次,节点的功率容量有限,但分布式数据又需要在传感器节点中传输。由于传输会影响功耗,因此必须让它最小化。最后,wsns通常在公共环境中使用,必须保护和隐藏数据。在这种情况下,具有同态性质的密码方案可以解决上述的问题,聚合节点可以对其余节点的密文数据进行“求和”,再在网络中进行传输。密文解密后得到的结果与直接将明文相加的结果相等。由于只有一个密文,极大的降低了减少了数据传输,同时也降低了存储。

示例2:智能电表是构建用于电力生产和分配的“智能电网”的基本要素。频繁的仪表读数可优化电表,同时,也会带来一些消费者不愿意看到的“附加数据”。如,居民是否在家、几点起床或睡觉。较长时间的数据挖掘甚至会带来更多的信息,如居民正在使用哪种电器设备,何时使用等。因此,这种情况下的隐私问题更应得到相关部门的重视。利用同态加密技术,可计算用电量的总和值,使电表读数在楼栋或小区这类级别可见,不会泄露用户这一级的用电数据。同时,通过将相同级用电量总和之间比较,还能很好的利用用电数据,如是否发生故障,停电等。

示例3:深度学习的成功归功于应用于神经网络的物理硬件以及处理海量数据的算法突破。大量的收集数据对于深度学习来说无疑是非常重要的,然而这又会引发隐私问题。比如,收集的照片可以永久的放入公司的服务器,而不受照片所有者的控制;因为担心隐私和机密性问题,医院和研究中心往往不会轻易拿出自己的数据,从而使它们无法享受到联合数据集上大规模深度学习的优势。针对这一问题,同态加密仍然可以解决。phong等人提出了一个用于保护隐私的深度学习系统,利用加法同态的特性,保证了不将数据泄露给服务方同时合并后的数据集精确度和原来保持不变。

以上的仅是本发明的实施例,该发明不限于此实施案例涉及的领域,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。

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