基于同态加密的门限解密方法、系统及可读存储介质与流程

文档序号:25955958发布日期:2021-07-20 17:15阅读:390来源:国知局
基于同态加密的门限解密方法、系统及可读存储介质与流程

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



背景技术:

门限密码体制(thresholdcryptosystem)中,私钥(privatekey)信息被分发给n位参与者。只有当大于t(n≥t≥1)位参与者同时认可签名或解密操作时,才能恢复密钥完成签名或解密,从而提高方案安全性。门限密码一般分为需要可信中心与不需要可信中心两类。当可信中心存在时,可以方便地实现秘密分发,减少小组成员之间的通信量和计算量;但一个被小组内所有成员信任的可信中心并不是一直存在的,此时需要小组成员联合实现对秘密的分享,即无可信中心方案。

1994年,santis,desmedt,frankel等人开发了第一个具有完全门限功能和拥有安全性证明的系统。在早期,只有某些数据高度敏感的组织(例如证书颁发机构,军方和政府)才使用此技术。最早的实现之一是certco在90年代完成的,目的是按计划部署原始的安全电子交易。但是,2012年10月,在许多大型公共网站密码密文遭到破坏之后,rsasecurity宣布它将发布软件,以使该技术可供公众使用。2019年3月,美国国家标准技术研究院(nist)举办了一个关于阈值密码学的研讨会,以就应用达成共识并定义规范。nist在11月发布了路线图草案“towardsthestandardizationofthresholdschemesforcryptographicprimitives”,即nistir8214a。

而同态加密是一种对密文进行运算的加密方案,计算后的密文进行解密可以得到与直接对原始数据进行计算相同的结果。如今,越来越多人喜欢使用公有云或互联网存储数据。然而,不管是任何信息系统,均需要安全性来保证它的完整性、机密性、可用性。例如使用标识密码算法将数据加密后再存入数据库中,但是如果需要对加密数据进行操作或运算,则有必要对加密数据进行解密。但是,解密后的数据就不再安全了。同态加密可以很好的解决这一问题,因为它可以直接对密文进行运算,而不需要解密为明文。为此申请人提出了一种具备加同态性的加密方法,采用群gt中元素中g的明文m加上随机数r次幂产生主要密文c2,其中群gt为阶为素数n的乘法循环群。该方法能够在保证安全性的同时,使加密算法具有加同态性质。在此方法的基础上,需要实现它的门限解密。



技术实现要素:

本发明提供了基于同态加密的门限解密方法、系统及可读存储介质,能够对具备加同态性的加密信息进行解密。

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

基于同态加密的门限解密方法,包括如下步骤:

b1:验证密文c1∈g1是否成立,若不成立则报错并退出,g1是阶为素数n的加法循环群;

b2:计算群gt中的元素w′=e(c1,deb),gt是阶为素数n的乘法循环群,e是从g1×g2到gt的双线性对,deb是加密私钥;

b3:计算gm′=c2·w′-1,从gm′中恢复m′;kdf()为密钥派生函数;

b4:计算u=mac(k′1,c2),若u≠c3,则报错并退出;mac()为消息认证码函数;

b5:输出明文m′。

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

当用户将需要加密的明文m(mlen为m的比特长度)通过具备加同态性的加密方法加密后,本方案可以对加密后的信息进行解密,得到明文m′。由于门限密码一般分为需要可信中心与不需要可信中心两类,本方案在两种情况下均能完成解密。

进一步,还包括秘钥生成步骤,如果存在可信中心,具体包括以下步骤:

d1、可信中心随机选择一个t-1次多项式:

其中,且令a0=db;

d2、可信中心在gf(p)中选择n个不为0且互不相同的元素{x1,x2…,xn},并计算:yi=f(xi),i=0,1,2…,n;其中,gf(p)是元素个数为大素数p的有限域;

d3、可信中心将第i个点(xi,yi)分发给第i名参与者pi,其中,yi是pi的秘密份额值;

d4、可信中心计算ppub-e=[ke]p1,公开ppub-e,其中ppub-e为主公钥。

进一步,所述秘钥生成步骤,如果不存在可信中心,具体包括以下步骤:

e1、参与者pi选择一个t-1次多项式:

其中i=0,1,2…,n,且pi选择的随机值为si=fi(0);

e2、pi计算yi,j,j=fi(j),随后将其发送给参与者pj;

pj收到所有yi,j,i=0,1,2…,n,后,其中yi,j为pj自己构造所得,计算pj最终的共享秘密份额yj=y1,j+y2,j+…+yn,jmodp;

秘密重构:

已知t份秘密份额(xi,yi),令t=0,1,2…,t,由拉格朗日差值公式重构出多项式f(xi):

由于s=f(0),因此有:

因此有

e3、通过y1,y2…,yn中的任意t份秘密份额,利用shamir方案恢复出联合生成的随机秘密值s,基于密值s,计算ppub-e,公开ppub-e。

在shamir(t,n)门限秘密共享方案中,gf(p)是元素个数为大素数p的有限域,在此处等于椭圆曲线上的基点g的阶,秘密信息此处即为解密主私钥ke。可信中心给n位参与者{p1,p2…,pn}分发秘密份额,使得n个中的任意t位以上参与者才可以重构出秘密信息s,而任意小于或等于t位的参与者不能重构出s。

进一步,所述b2中,如果不存在可信中心,由t位参与者共同计算群gt中的元素

进一步,所述e3中,当t=2时,且id1与id2为参与者,

进一步,所述b2中,当t=2时,且id1与id2共同解密,

本发明的基于同态加密的门限解密系统,使用上述基于同态加密的门限解密方法。

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

附图说明

图1为实施例一种具备加同态性的加密方法的流程图;

图2为实施例基于同态加密的门限解密方法的流程图;

图3为有可信中心密钥分发流程图;

图4为无可信中心密钥分发流程图;

图5为密钥门限解密流程图。

具体实施方式

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

实施例

术语与符号:

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

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

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

p1:群g1的生成元。

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

p2:群g2的生成元。

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

hv():密码杂凑函数。

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

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

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

ke:加密主私钥。

ppub-e:加密主公钥。

kdf():密钥派生函数。

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

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

m:待加密的消息。

m′:解密得到的消息。

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

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

如图1所示,本实施例提供一种具备加同态性的加密方法,设用户a需要发送的消息为m,mlen为m的比特长度,为分组密码算法中密钥k1的比特长度或与mlen相等。

用户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。本实施例中,k1后续是无用的,kdf()密钥派生函数仅用于单次解密的认证。但为了便于本方法可以与其他加密方案匹配,本实施例在此处保留对k1是否为0的校验,在其他实施例中,也可以去掉对k1是否为0的校验。

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

a8:输出密文c=(c1,c2,c3)。c2为主要密文,主要密文指包含明文m的密文。

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

b1:验证c1∈g1是否成立,若不成立则报错并退出;

b2:计算群gt中的元素w′=e(c1,deb),e是从g1×g2到gt的双线性对;

b3:计算然后计算k=kdf(c1||w′||idb,klen)。k1为k的前比特,k2为k的后比特。本实施例中,还判断k1是否全为0,如果全为0,保持并退出。计算gm′=c2·w′-1,从gm′中恢复m′。

b4:计算u=mac(k′1,c2),若u≠c3,则报错并退出;

b5:输出明文m′。

为了解释加同态性,设密文1为密文2为其中c3和c′3仅用于完整性校验。

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。

门限密钥生成:

在shamir(t,n)门限秘密共享方案中,gf(p)是元素个数为大素数p的有限域,在此处等于椭圆曲线上的基点g的阶,秘密信息此处即为解密主私钥ke。可信中心给n位参与者{p1,p2…,pn}分发秘密份额,使得n个中的任意t位以上参与者才可以重构出秘密信息s,而任意小于或等于t位的参与者不能重构出s。

如果存在可信中心

可信中心随机选择ke∈[1,n-1](此处的n是循环群g1、g2和gt的阶,为大于2191的素数)作为加密主私钥,计算g1中的元素ppub-e=[ke]p1作为加密主公钥,则加密主密钥对为(ke,ppub-e)。可信中心秘密保存ke,公开ppub-e。

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

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

如图3所示,具体的:

d1、首先,可信中心随机选择一个t-1次多项式:

其中,且令a0=db。

d2、随后,可信中心在gf(p)中选择n个不为0且互不相同的元素{x1,x2…,xn},并计算:yi=f(xi),i=0,1,2…,n,即是说找出曲线f(x)上的n个点。一般地,可以直接令xi=i,或者xi=idi,其中idi表示参与者pi的身份信息。

d3、可信中心将第i个点(xi,yi)分发给第i名参与者pi,其中,yi是pi的秘密份额值,因此需要秘密且安全地分发。

d4、最后,可信中心计算ppub-e=[ke]p1,公开ppub-e。

如果不存在可信中心

在某些应用场景中,不存在或不希望有可信中心,这个时候就需要参与者pi联合决定并生成随机的共享秘密值s。

如图4所示,具体为:

e1、pi选择一个t-1次多项式:

其中i=0,1,2…,n,且pi选择的随机值为si=fi(0)。

e2、pi计算yi,j,j=fi(j),随后将其安全地发送给参与者pj。pj收到所有yi,j,i=0,1,2…,n,后,其中yi,j为pj自己构造所得,计算他最终的共享秘密份额yj=y1,j+y2,j+…+yn,jmodp。

秘密重构:

已知t份秘密份额(xi,yi),令t=0,1,2…,t,由拉格朗日差值公式便可重构出多项式f(xi):

只要知道f(x),可得出秘密值s,即加密主私钥ke。由于s=f(0),因此有

一般地,令因此就有

e3、最终,通过y1,y2…,yn中的任意t份秘密份额便可利用shamir方案恢复出联合生成的随机秘密值s。当t=2时,且id1与id2为参与者,由于主私钥ke不能被泄露,直接恢复的是主公钥公开主公钥ppub-e。

如图5所示,如果不存在可信中心,由t位参与者共同计算群gt中的元素然后计算gm′=c2·w′-1,从gm′中恢复m′。

当t=2时,且参与者id1与id2共同解密,由于主私钥ke与用户私钥deb均不可泄露,直接恢复的是解密所需要的w′,

本实施例还提供基于同态加密的门限解密系统,使用上述基于同态加密的门限解密方法。

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

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

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