一种同态加密方法、装置、系统及可读存储介质与流程

文档序号:25955953发布日期:2021-07-20 17:15阅读:164来源:国知局
一种同态加密方法、装置、系统及可读存储介质与流程

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



背景技术:

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

在现有密码学领域,由于椭圆曲线公钥密码算法(ellipticcurvecryptography,ecc)在相同安全强度下比rsa加密算法(rsaalgorithm)的私钥位长及系统参数小得多,因此相较于应用rsa,应用ecc所需的存储空间要小得多,传输所用的宽带要求更低,硬件实现ecc所需逻辑电路的逻辑门数要较rsa少得多,功耗更低。这使得ecc比rsa更适合实现应用到资源严重受限制的设备中,如低功耗要求的移动通信设备、无限通信设备和智能卡等。

ecc的优势使其成为了最具发展潜力和应用前景的公钥密码算法,至2000年国际上已有多个国家和行业组织将ecc采纳为公钥密码算法标准。在此背景下,我国从2001年开始组织研究自主知识产权的ecc,通过运用国际密码学界公认的公钥密码算法设计及安全性分析理论和方法,在吸收国内外已有ecc研究成果的基础上,研究了多套加密算法。

但是现有加密算法并不具备加同态性质,而加同态性质是一种普遍用于数据聚合、隐私保护、联盟学习和物联网等领域的同态性质,是同态加密所需要的重要性质,因此现有加密算法在数据聚合、隐私保护、联盟学习和物联网等领域的应用,受到其不具备加同态性质的限制。并且由于现有加密算法中生成主要密文是通过将明文和进过加密后的公钥进行异或运算产生,生成的主要密文的复杂度有限,明文的破解难度也受到限制,因此安全性有待提高。



技术实现要素:

本发明的目的之一在于提供一种同态加密方法,以全新的方法产生主要密文,形成安全性更高的具有加同态性质的加密方法,以解决现有加密方法存在不具备同态性质的问题。

本发明提供的基础方案一:一种同态加密方法,采用椭圆曲线上的两个倍点进行椭圆曲线加法产生主要密文c2,所述椭圆曲线上的两个倍点包括椭圆曲线基点g的m倍点和公钥pb的k倍点,其中m为明文,k为随机数。

基础方案一的有益效果:c2是主要密文,即包含m的密文,本方案以全新的方法产生主要密文,采用椭圆曲线上的两个倍点进行椭圆曲线加法产生主要密文,椭圆曲线上的两个倍点包括椭圆曲线基点g的m倍点和公钥pb的k倍点,其中m为明文,k为随机数,其目的是将m放入曲线中,使之满足椭圆曲线的加法,以此实现加同态的性质。并且相对于现有加密算法中生成主要密文是通过将明文和进过加密后的公钥进行异或运算产生,本方案采用椭圆曲线上的两个倍点进行椭圆曲线加法产生主要密文,其中包括椭圆曲线基点g的m倍点,将m放入椭圆曲线中,不仅使之满足椭圆曲线的加法,也对明文进行了加密,然后再将加密后的密文与进行加密后的公钥进行椭圆曲线加法产生的主要密文,相较于现有加密算法产生的主要密文更为复杂,因此破解难度也更高,增加了安全性。

进一步,所述主要密文c2的计算过程具体为:c2=[m]g+[k]pb。

有益效果:[m]g与[k]pb分别是椭圆曲线基点g的m倍点和b用户公钥pb的k倍点。[m]g的目的是将m放入曲线中,使之满足椭圆曲线的加法,实现加同态的性质。

进一步,所述主要密文c2的计算前还包括如下内容:

a1:产生随机数k∈[1,n-1],其中n是椭圆曲线基点g的阶;

a2:计算椭圆曲线点c1=[k]g=(x1,y1),其中[k]g指进行一个倍点运算,即c1=[k]g是椭圆曲线基点g的k倍点;

a3:计算椭圆曲线点s=[h]pb,若s是无穷远点,则报错并退出,其中pb为解密者的公钥;

a4:计算椭圆曲线点[k]pb=(x2,y2);

所述主要密文c2的计算后还包括如下内容:

a6:计算c3=hash(x2||m||2),其中hash()为密钥杂凑函数;

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

说明:本方案中涉及术语和符号的含义:x||y:x与y的拼接,x和y是比特串或字节串。

有益效果:上述步骤形成一个完整的加密过程,其中,c2进行辅助解密,c3的功能是进行解密校验。其中对于加同态性进行验证:设密文一为(c1=kg,c2=[m1]g+[k]pb,c3),密文二为(c1′=k′g,c2′=[m2]g+[k′]pb,c3′)。c1×c1′=[(k+k′)]g,密文c1与c1′是椭圆曲线上的两个点,对c1与c1′采用椭圆曲线的加法规则,得到[(k+k′)]g;c2×c2′=[m1+m2]g+[k+k′]pb,与c1类似,密文c2与c2′也是椭圆曲线上的两个点,对c2与c2′采用椭圆曲线的加法规则,得到[m1+m2]g+[k+k′]pb;[k+k′]pb=[db](c1×c1′),由于pb=[db]g;[m1+m2]g=c2×c2′-[db](c1×c1′),从[m1+m2]g恢复出m1+m2。由此可见相对于现有加密算法中需要将多个密文分别解密为明文,再对明文进行运算处理,本方案可以直接对主要密文根据椭圆曲线的加法规则进行计算,直接得到多个密文相加的结果,然后再进行解密,得到多个明文相加的结果,其中每个明文中数据并不可知也不会泄露,最终得到的是多个明文相加的结果,保证了数据安全,以此使现有的加密算法具备加同态性质,使现有加密算法能应用到需要同态加密的领域中。此外,本方案中主要密文根据椭圆曲线的加法规则进行计算并不只限于上述论证过程中的两个密文,可为多个主要密文根据椭圆曲线的加法规则进行计算,并且最终得到的多个明文相加的结果可以进行权重运算,例如:结果为m1+m2+m3+m4,则可对结果进行权重运算即k(m1+m2)+m3+m4。

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

有益效果:s=[h]pb中,h为1,因此h可忽略,以此减少计数处理难度。

本发明的目的之二在于提供一种同态加密装置,以解决现有加密装置中运行的加密算法的公钥加密算法不具备加同态性质的问题。

本发明提供基础方案二:一种同态加密装置,包括存储器、处理器以及存储在所述存储器上的计算机程序;

所述处理器用于执行所述计算机程序,以实现任一项上述同态加密方法的步骤。

基础方案二的有益效果:本装置能实现任一项上述同态加密方法的步骤,采用本装置进行加密,以全新的方法产生主要密文,使具备加同态性质。

本发明的目的之三在于提供一种同态加密系统,以解决现有加密系统中运行的现有加密算法不具备加同态性质的问题。

本发明提供基础方案三:同态加密系统,采用上述同态加密方法。

基础方案三的有益效果:本系统采用上述同态加密方法,采用本系统进行加密,以全新的方法产生主要密文,使其具备加同态性质。

本发明的目的之四在于提供一种同态加密可读存储介质,以解决现有可读存储介质中运行的现有加密算法不具备加同态性质的问题。

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

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

附图说明

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

图2为本发明一种同态加密方法实施例的解密流程图。

具体实施方式

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

实施例基本如附图1所示:一种同态加密方法,包括如下内容:

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

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

n:基点g的阶。

pb:用户b的公钥。

db:用户b的私钥。

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

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

m:待加密的消息。

m′:解密得到的消息。

kdf():密钥派生函数。

hash():密码杂凑函数。

设a需要发送给b的消息为m,klen为m的比特长度,用户b的密钥对包括其私钥db和公钥pb=[db]g。

为了对明文m进行加密,作为加密者的用户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,其中kdf()为密钥派生函数,klen为发送消息为比特串m的比特长度;其中计算b的公钥pb的k倍点,由于a3已经判断了pb不是无穷远点,所以无需判断[k]pb是否为无穷远点。密钥派生函数调用密码杂凑算法。本方案中后续的操作即使t为0也不会造成影响,即t后续是无用的,但是在解密时可以通过t来进行[k]pb的校验。因此为了便于本方法与其他加密方案尽可能匹配,本实施例在此处保留对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,对应本方案提出的同态加密方法的解密过程如下:

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

b2:计算椭圆曲线点s=[h]c1,若s是无穷远点,则报错并退出。h与上述加密方案一样为1,同样可以省略。由于b1判断的是否满足椭圆曲线方程,此处判断c1是否是无穷远点。

b3:计算椭圆曲线点[db]c1=(x2,y2),计算t=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。

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

b5:计算u=hash(x2||m′||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+m2,具体如下所示:

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

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

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

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

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

由于从[m1+m2]g中恢复出m1+m2需要解决一个求一个离散对数。由此可见相对于现有加密算法中需要将多个密文分别解密为明文,再对明文进行运算处理,本方案可以直接对主要密文根据椭圆曲线的加法规则进行计算,直接得到多个密文相加的结果,然后再进行解密,得到多个明文相加的结果,其中每个明文中数据并不可知也不会泄露,最终得到的是多个明文相加的结果,保证了数据安全,以此使现有的加密算法具备加同态性质,使现有加密算法能应用到需要同态加密的领域中。此外,本方案中主要密文根据椭圆曲线的加法规则进行计算并不只限于上述论证过程中的两个密文,可为多个主要密文根据椭圆曲线的加法规则进行计算,并且最终得到的多个明文相加的结果可以进行权重运算,例如:结果为m1+m2+m3+m4,则可对结果进行权重运算即k(m1+m2)+m3+m4。

本实施例还提供一种同态加密装置,包括存储器、处理器以及存储在所述存储器上的计算机程序;处理器用于执行所述计算机程序,以实现任一项上述同态加密方法的步骤。

本实施例还提供一种同态加密系统,采用上述同态加密方法。

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

在现实生活中,与“隐私同态”类似的应用场景越来越多,此处以三个场景为例,以此说明同态加密在现实场景中的应用。

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

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

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

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

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