一种门限解密方法、系统及可读存储介质与流程

文档序号:25955961发布日期:2021-07-20 17:15阅读:99来源:国知局
一种门限解密方法、系统及可读存储介质与流程

本发明涉及信息安全技术领域,具体为一种门限解密方法、系统及可读存储介质。



背景技术:

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

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

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

因为基于椭圆曲线上离散对数问题的困难性要高于一般乘法群上的离散对数问题的困难性,且椭圆曲线所基于的域的运算位数要远小于传统离散对数的运算位数,椭圆曲线密码体制比原有的密码体制(如rsa和dsa)更具优越性。

虽说的门限解密、门限签名等方案早已存在,不过在隐私保护等领域,原本的加密算法并不具备同态性质。为此申请人提出了一种同态加密方法,该方法以全新的方法产生主要密文,形成安全性更高的具有加同态性质的加密方法。在此方案的基础上,需要实现它的门限解密。



技术实现要素:

本发明的目的之一在于提供一种门限解密方法,对采用同态加密方法进行加密的信息进行解密。

本发明提供的基础方案一:门限解密方法,包括如下内容:

b1:验证c1是否满足椭圆曲线方程,若不满足,则报错并退出;

b2:计算椭圆曲线点s=[h]c1,若s是无穷远点,则报错并退出;

b3:计算椭圆曲线点[db]c1=(x2,y2);

b4:计算[m′]g=c2-[db]c1,从[m′]g中恢复出m′;

b5:计算u=hash(x2||m′||y2),若u≠c3,则报错并退出;

b6:输出明文m′。

说明:本方案中涉及术语和符号的含义:

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

n:基点g的阶;

pb:用户b的公钥;

db:用户b的私钥;

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

[k]p:椭圆曲线上的点p的k倍点;

m:待加密的消息;

m′:解密得到的消息;

kdf():密钥派生函数;

hash():密码杂凑函数;

基础方案一的有益效果:本方案是针对申请人同日申请的同态加密方法提出的门限解密方法,本方案计算[m′]g=c2-[db]c1,从[m′]g中恢复出m′;以此可以对采用申请人同日申请的同态加密方法进行加密的明文m进行解密。

本方案中椭圆曲线上的基点g的阶可相当于shamir(t,n)门限秘密共享方案中的gf(p),gf(p)是元素个数为大素数p的有限域;本方案中解密私钥db可相当于shamir(,n)门限秘密共享方案中的秘密信息s,对于shamir(t,n)门限秘密共享方案中存在可信中心和不存在可信中心这两种情况,由于pb=[db]g,本方案中[db]c1=(x2,y2),因此本方案可以结合shamir(t,n)门限秘密共享方案,求解解密私钥db,从而获得解密公钥pb,因此本方案可以支持这两种情况,进行同态加密的门限解密。

进一步,所述s=[h]c1中,h为1。

有益效果:s=[h]c1中,h为1,与同态加密方法相对应,h可忽略,以此减少计数处理难度。

进一步,还包括秘钥生成步骤,如果存在可信中心,则可信中心随机选择db∈[1,n-1]作为解密私钥,其中n是椭圆曲线基点g的阶,并计算加密公钥pb=[db]g,将pb公开,具体包括如下内容:

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

其中,i=0,1,2…,t-1,且令a0=db;

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

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

d4、最后,可信中心计算公钥pb=[db]g,并公开pb。

有益效果:可信中心给n位参与者{p1,p2…,pn}分发秘密份额,使得n个中的任意t位以上参与者才可以重构出秘密信息s,而任意小于等于t位的参与者不能重构出s,关于密钥以及明文的任何信息并且算法执行过程中不泄露私钥与参与者的私钥信息。

进一步,所述秘钥生成步骤,如果不存在可信中心,则参与者pi联合决定并生成随机的共享秘密值s,s为解密私钥db,具体包括如下内容:

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

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

e2、pi计算yi,j,j=fi(j),并将其安全地发送给参与者pj;

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

秘密重构:

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

由f(x),得出秘密值s,即私钥db;

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

因此就有

e3、通过y1,y2…,yn中的任意t份秘密份额便,利用shamir方案恢复出联合生成的随机秘密值s,由s,得出公钥pb,并公布pb。

有益效果:在不存在可信中心时,参与者pi联合决定并生成随机的共享秘密值s,s为解密私钥db,关于密钥以及明文的任何信息并且算法执行过程中不泄露私钥与参与者的私钥信息,保证信息的安全。

进一步,所述e3中,当t=2时,且id1与id2为参与者,则计算出公钥

有益效果:秘钥生成步骤中,两位参与者同时认可签名或解密操作时,才能恢复密钥完成签名,从而提高方案安全性。

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

有益效果:解密过程中,两位参与者同时认可签名或解密操作时,才能恢复密钥完成解密,从而提高方案安全性。

本发明的目的之二在于提供一种门限解密系统,对采用同态加密方法进行加密的信息进行解密。

本发明提供基础方案二:一种门限解密系统,采用上述门限解密方法。

基础方案二的有益效果:本系统采用上述门限解密方法,可以实现对采用同态加密方法进行加密的信息进行解密。

本发明的目的之三在于提供一种门限解密可读存储介质,对采用同态加密方法进行加密的信息进行解密。

本发明提供基础方案三:一种门限解密可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现任一项上述门限解密方法的步骤。

基础方案三的有益效果:门限解密可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现任一项上述门限解密方法的步骤,以便于门限解密方法的应用。

附图说明

图1为本发明一种门限解密方法实施例中同态加密方法的流程图;

图2为本发明一种门限解密方法实施例的流程图;

图3为本发明一种门限解密方法实施例中存在可信中心密钥分发流程图;

图4为本发明一种门限解密方法实施例中不存在可信中心密钥分发流程图;

图5为本发明一种门限解密方法实施例中密钥门限解密流程图。

具体实施方式

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

实施例:门限解密方法,本门限解密方案是针对申请人同日申请的同态加密方法提出的门限解密方法。

说明:本方案中涉及术语和符号的含义:

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

n:基点g的阶。

pb:用户b的公钥。

db:用户b的私钥。

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

[k]p:椭圆曲线上的点p的k倍点。

m:待加密的消息。

m′:解密得到的消息。

kdf():密钥派生函数。

hash():密码杂凑函数。

设a需要发送给b的消息为m,klen为m的比特长度,用户b的密钥对包括其私钥db和公钥pb=[db]g,为了对明文m进行加密,如图1所示,作为加密者的用户a应实现同态加密方法,包括如下内容:

a1:产生随机数k∈[1,n-1],其中n是椭圆曲线基点g的阶;如果椭圆曲线上一点p,存在最小的正整数n使得数乘np=o∞,则n将称为p的阶;若n不存在,则p是无限阶的。本实施例中使用国家密码管理局批准的随机数发生器。

a2:计算椭圆曲线点c1=[k]g=(x1,y1),其中[k]g指进行一个倍点运算,即c1=[k]g是椭圆曲线基点g的k倍点;c1的作用主要是配合b的私钥db进行密文解密。

a3:计算椭圆曲线点s=[h]pb,若s是无穷远点,则报错并退出;其中h为1,故h可以省略;本步骤主要是为了判断b的公钥pb是否是无穷远点,若是无穷远点,说明b的公钥pb不是合法的,可能需要重新生成。

a4:计算椭圆曲线点[k]pb=(x2,y2),然后计算t=kdf(x2||y2,klen),若t为全0比特串,则返回a1。其中计算b的公钥pb的k倍点,由于a3已经判断了pb不是无穷远点,所以无需判断[k]pb是否为无穷远点;kdf()为密钥派生函数,klen为发送消息为比特串m的比特长度;密钥派生函数调用密码杂凑算法。由于现有加密算法中需要进行m与t的异或操作,与一个全为0的字符串异或肯定是不合理的,本实施例中后续的操作即使t为0也不会造成影响,即t后续是无用的,但是在解密时可以通过t来进行[k]p_b的校验。因此为了便于本方法与其他加密方案尽可能匹配,本实施例在此处保留对t的计算和判断,在其他实施例中,也可以去掉对t的计算和判断。

a5:计算c2=[m]g+[k]pb。计算椭圆曲线上的两个倍点并将它们进行椭圆曲线加法,[m]g与[k]pb分别是椭圆曲线基点g的m倍点和b用户公钥pb的k倍点。[m]g的目的是将m放入曲线中,使之满足椭圆曲线的加法,实现加同态的性质。c2的形式与ec-elgamal的密文形式基本一致,因此可以采用类似于ec-elgamal的形式证明本方案中提出的加同态方法是安全的。

a6:计算c3=hash(x2||m||y2),其中hash()为密钥杂凑函数,c3的目的是为了进行单次加解密的解密校验。但是由于hash()是一个密钥杂凑函数,并不满足加同态的性质。故c3并不满足加同态解密校验。

a7:输出密文c=(c1,c2,c3)。c1,c2的功能是解密,而c2是主要密文,c1进行辅助解密,c3的功能是进行解密校验。现有加密方案的密文是将c1,c2,c3转化为字符串,并将它们拼接,但本加密方案并保留了它们原本的形式,但也可以将它们进行转化,这是密文形式的问题,不影响解密。

如图2所示,作为解密者的用户b,用户b采用本方案的门限解密方法进行解密,包括如下内容:

b1:验证c1是否满足椭圆曲线方程,若不满足则0报错并退出。由上述加密过程可知c1是一个椭圆曲线基点g的随机数倍点,故一定满足椭圆曲线方程。如果不满足,说明密文c1是一个错误的密文。

b2:计算椭圆曲线点s=[h]c1,若s是无穷远点,则报错并退出;s=[h]c1中,h为1,与加密方案一样为1,同样可以省略。

b3:计算椭圆曲线点[db]c1=(x2,y2),计算=kdf(x2||y2,klen),若t为全0比特串,则报错并退出。其中,在经过的b1与b2的c1合法校验之后,进行c1的db倍点运算,由于pb=[db]g,易得[db]c1=[k]pb,可用c2与[db]g还原出[m]g。本实施例中,此处的对t的计算和判断对应加密方案的a4中的对t的计算和判断,可用来校验[db]c1。在其他实施例中,若加密方案中去掉对t的计算和判断,解密方案中也可对应去掉对t的计算和判断。

b4:计算[m′]g=c2-[db]c1,从[m′]中恢复出m′,[m′]g是一个离散对数。可用各种快速求解离散对数的方法,如大步小步走算法等。

b5:计算u=hash(x2||n′||y2),若u≠c3,则报错并退出。将解得明文m′与[db]c1的坐标(x2,y2)进行字符串或比特串的拼接,再进行密钥杂凑函数计算。如果明文m′与[db]c1正确,那么u=c3。

b6:输出明文m′。

本实施中只阐述单次加密明文m并解密得到消息m’的流程,对于不同的明文m1,m2来说,加密与解密流程都是一致的,本实施例中不再赘述。

本实施例中用户a和用户b的公钥加密明文为m1和m2,用户a利用上述加密方法将密文明文进行加密发送给用户b,用户b利用上述解密方法求出m1+n2,具体如下所示:

设密文一为(c1=kg,c2=[m1]g+[k]pb,c3),密文二为(c′1=k′g,c′2=[m2]g+[k′]pb,c′3)。

c1:c1×c1′=[(k+k′)]g。密文c1与c1′是椭圆曲线上的两个点,对c1与c′1采用椭圆曲线的加法规则,得到[(k+k′)]g;

c2:c2×c′2=[m1+m2]g+[k+k′]pb,与c1类似,密文c2与c′2也是椭圆曲线上的两个点,对c2与c′2采用椭圆曲线的加法规则,得到[m1+2]g+[k+k′]pb;

c3:[k+k′]pb=[db](c1×c′1),由于pb=[db]g;

c4:[m1+m2]g=c2×c′2-[db](c1×c′1),从[m1+m2]g恢复出m1+m2。

由于从[m1+m2]g中恢复出m1+m2需要解决一个求一个离散对数。

门限密钥生成

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

存在可信中心

可信中心随机选择db∈[1,n-1](n是椭圆曲线基点g的阶)作为解密私钥,并计算加密公钥pb=[db]g,将pb公开。如图3所示,具体包括如下内容:

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

其中,i=0,1,2…,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、可信中心计算公钥pb=[db]g,并公开pb。

不存在可信中心

在某些应用场景中,不存在或我们不希望有可信中心,这个时候就需要参与者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后,其中yi,j为pj自己构造所得,计算pj最终的共享秘密份额yj=y1,j+y2,j+…+yn,jmod;

秘密重构:

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

只要确定f(x),便可得出秘密值s,即私钥db。

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

一般地,令因此就有

e3、通过y1,y2…,yn中的任意t份秘密份额便,利用shamir方案恢复出联合生成的随机秘密值s,由s,得出公钥pb,并公布pb;由于私钥信息不可泄露,直接恢复的是公钥pb。本实施例中,当t=2时,且参与者id1与id2可计算出公钥将公钥pb公开。

如图5所示,将shamir门限方案与同态加密方案的结合,所述b3中,当t=2时,且id1与id2共同解密,由于私钥不可泄露,恢复的是解密所需要的[db]c1,然后计算[m′]g=c2-[db]c1,从[m′]中恢复出明文m′。

本实施例还提供门限解密系统,使用上述门限解密方法。

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

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

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