本发明属于信息安全和隐私保护领域,具体涉及一种高效的bgv型多密钥全同态加密方法,特别涉及一种具备定向解密功能的bgv型多密钥全同态加密方法。
背景技术:
全同态加密(full-homomorphicencryption,fhe)能够在不知道私钥的情况下对密文进行任意计算,具有加密和运算可交换的性质,在当前的云计算环境下具有很高的理论和应用价值,可被广泛应用于密文检索、安全多方计算、云数据分析等。自2009年gentry提出了首个基于理想格的全同态加密方案gen09之后,基于gentry为全同态加密所描绘的蓝图,越来越多的全同态加密方案(dghv10,bv11a,bv11b,bgv12,gsw13,ap14等)被提出。
典型的fhe只适用于对涉及单个用户的密文进行同态计算,即参与计算的所有密文对应于相同的密钥(所有的密文属于同一个用户),然而在许多的现实场景中,通常需要对多个用户上传到云端的数据进行安全的多方联合计算。
为了解决云环境下多用户密文数据联合计算的问题,l′opez-alt等人在文献ltv12中提出了多密钥全同态加密(multi-keyfullyhomomorphicencryption,mkfhe)的概念。多密钥全同态加密(multi-keyfhe,mkfhe)支持对不同用户(不同密钥)的密文进行任意的同态运算,且运算之后的结果必须由参与计算的所有用户联合解密,可以较好地解决多用户密文进行同态计算的问题。
目前,大多数mkfhe都是基于格上困难问题构造的,其相对于传统的密码体制能够更好地应对量子计算机的威胁。因此,多密钥全同态加密可以为云计算、外包计算等涉及多用户数据的领域,提供信息传输、存储和计算的安全,保护用户隐私,从而为我国信息化系统安全防护提供有利的支撑,具有重要的理论研究价值和应用价值。
latv12首先提出了mkfhe的概念,并提出了一种基于ntru公钥密码系统的多密钥全同态加密方案。但是基于ntru的加密方案的安全性基于多项式环上的不标准假设,无法严格规约到格上的困难问题,因此安全性有待进一步考证。
clear和mcgoldrick利用gsw型fhe,提出了首个基于误差学习问题(learningwitherror,lwe)的gsw型mkfhe方案cm15,由于lwe问题可以量子规约到理想格上最坏情况下的困难问题,因此方案的安全性得到保证。mukherjee和wichs对cm15进行了改进,提出了基于lwe的mkfhe方案mw16,该方案可以用来实现一轮的门限解密协议,并在此基础上实现了一个两轮安全多方计算(multipartycomputation,mpc)协议。
cm15和mw16方案需要提前对参与同态计算的方用户的数量进行设置,并且在运算过程中无法实现新用户的加入,这种类型的mkfhe在ps16中被称为单跳(single-hop)型mkfhe。同时ps16提出了多跳(multi-hop)mkfhe的概念:原有参与方经过同态运算后的密文,能够与新加入的参与方的密文重新进行运算,即任何参与方都可以实时、动态地加入到密文运算的过程中。bp16提出了全动态的mkfhe的概念,即参与方的数量不需要提前进行设定。
在tcc2017上,陈隆等人提出了基于rlwe的bgv型多跳mkfhe。该方案支持基于中国剩余定理的密文打包技术,并且对mkfhe中的密文扩展过程进行了简化,该方案可以用于构造两轮的mpc协议和门限解密协议。
目前,支持batchedmulti-hop的bgv型mkfhe方案以czw17为代表。在最终进行解密时,参与计算和解密的用户通常需要利用安全多方计算中的相关技术,如ot(不经意传输)协议等,来保证广播过程的安全,从而使得解密过程较为复杂。与此同时,有时候我们并不希望最终的解密结果被所有参与计算的用户所知道,而只是希望指定的合法用户获得解密结果,甚至该用户并不需要参与到计算过程。对于这个场景,定向解密协议对于增强数据所有者控制自己的明文的能力至关重要。
技术实现要素:
本发明的目的在于提出一个具备定向解密功能的bgv型多密钥全同态加密方法,该方法能够允许任意合法用户来执行最终的解密过程,且该用户不需要参与到同态运算的过程中,不仅降低了解密过程的复杂度,而且增强了数据所有者对于解密结果的控制。
为了达到上述目的,本发明采用的技术方案如下:
利用密文扩展技术,将单用户密文转化为多用户密文,从而将一个多密钥全同态加密方案转化为单密钥全同态加密方案。
设计定向解密协议,实现对于解密结果的定向可控。
包括以下步骤:
步骤一:对不同用户的明文进行bgv型同态加密,得到不同密钥所对应的密文;
步骤二:对参与运算的不同用户的密文分别进行密文扩展,得到对应用户集的扩展密文;
步骤三:对参与运算的用户集s的扩展密文进行同态运算,得到结果密文;
步骤四:参与计算的用户对结果密文进行部分解密,并将部分解密结果发送给最终需要解密的用户;
步骤五:指定解密的用户进行最终的解密,得到最终的解密结果。
所述步骤一的具体操作为:给定安全参数λ,整数o,模数q=ploy(n),多项式环
(1)密钥生成:生成第j个参与方所需要的密钥:
i.选择zl,j←χ,定义该参与方的私钥
ii.随机选取
iii.mkfhe.evkgen(ems,pks):计算密文同态运算时所需要的计算密钥的生成部件;假设私钥
(a)对于m∈{0,...,βl-1},j∈{1,...,k},ζ∈{0,...,k},计算
(b)对于j∈{1,...,k},ζ′∈{0,...,k},计算
(2)加密过程:输入明文μ∈rp和公钥pkl,j,随机选取r∈r2和误差矩阵e=(e1,e2)←χ2,生成明文μj的第l层密文:
输出密文元组ct={c,{j},l};
(3)解密过程:输入
本发明方法中,所述步骤二的具体操作为:
bgv.ctext(cl,s′):将密文元组
(1)将密文c分解为k等份:
(2)生成扩展密文
其中,
容易验证
本发明方法中,所述步骤三的具体操作为:输入t个密文组(ct1,...ctt),并假设其处于同一电路层,且ctj={cj,sj,l},j∈{1,...,t};生成公共用户集
(1)对于j∈{1,...,t},调用密文扩展算法bgv.ctext(cj,s),将cj扩展为s的密文
(2)生成密文运算过程中所需要的计算密钥evks=mkfhe.evkgen(ems);
(3)通过调用方案中基本的同态运算部件
本发明方法中,所述步骤四的具体操作为:输入最终需要解密的密文
(1)中间解密:集合s所对应的用户分别对密文c进行解密,以用户j1为例,计算:
并得到中间解密结果
(2)加入目标用户的0密文:用户利用i的公钥对0加密得到
进一步的,所述步骤五的具体操作为:
用户i接收到
并进行最终解密:
目前的mkfhe方法中,同态计算的结果最终只能由参与计算过程的用户解密,本发明设计的定向解密协议允许任何合法用户解密结果密文;与此同时,定向解密过程中没有涉及到同态乘法运算,所以无须使用其它技术进行噪音控制。
与现有技术相比,本发明具有以下有益效果:
本发明对czw17方案的解密过程进行了如下改进:
(1)通过对参与计算用户的部分解密结果添加目标用户0的密文,取消了原来部分解密结果广播过程中需要用到安全多方计算相关技术的限制,降低了解密过程的复杂性。
(2)利用目标用户的公钥来对0进行加密,实现了解密结果的定向可控。
附图说明
图1是本发明方法多密钥全同态加密流程图;
图2是本发明方法定向解密过程图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
多密钥全同态加密能够对不同公钥(用户)的密文进行任意同态运算,同态运算后的密文由所有参与同态计算的用户进行联合解密,因此可以保证多方用户参与情况下的数据安全计算。
目前,在实施联合解密的过程中,通常需要利用安全多方计算(mpc)中的相关技术,如不经意传输(ot)协议等,来保证广播过程的安全,从而使得解密过程较为复杂。
与此同时,有时候我们并不希望最终的解密结果被所有参与计算的用户所知道,而只是希望指定的合法用户获得解密结果,甚至该用户并不需要参与到计算过程。对于这个场景,定向解密协议对于增强数据所有者控制自己的明文的能力至关重要。
本发明提出了定向解密的概念,即同态运算后的结果只能由特定用户进行解密。通过联合参与计算用户的部分解密结果和特定用户的密文,生成特殊的(定向的)部分解密结果,即使该结果被不法分子(非指定的解密用户)窃取,也无法获取任何有关用户明文、私钥以及解密结果的信息,不仅增强了密文解密结果的可控性,同时取消了密文广播过程中需要用到mpc相关技术的限制,降低了解密结果的复杂性。
下面结合附图说明和具体实施方式对本发明做进一步详细说明。
初始化:给定安全参数λ,整数m,模数q=ploy(n),多项式环
密钥生成:生成第j个参与方所需要的密钥。
1.选择zl,j←χ,定义该参与方的私钥
2.随机选取
3.mkfhe.evkgen(ems,pks):计算密文同态运算时所需要的计算密钥的生成部件;假射密钥
(a)对于m∈{0,...,βl-1},j∈{1,...,k},ζ∈{0,...,k},计算
(b)对于j∈{1,...,k},ζ′∈{0,...,k},计算
加密过程:输入明文μ∈rp和公钥pkl,j,随机选取r∈r2和误差矩阵e=(e1,e2)←χ2,生成明文μj的第l层密文:
输出密文元组ct={c,{j},l}。
解密过程:输入
bgv密文扩展过程:
bgv.ctext(cl,s′):将密文元组
(1)将密文c分解为k等份:
(2)生成扩展密文
其中,
容易验证
多用户密文同态运算过程:输入t个密文组(ct1,...ctt),并假设其处于同一电路层,且ctj={cj,sj,l},j∈{1,...,t};生成公共用户集
(1)对于j∈{1,...,t},调用密文扩展算法bgv.ctext(cj,s),将cj扩展为s的密文
(2)生成密文运算过程中所需要的计算密钥evks=mkfhe.evkgen(ems);
(3)通过调用方案中基本的同态运算部件
定向解密过程:输入最终需要解密的密文
(1)中间解密
集合s所对应的用户分别对密文c进行解密,以用户j1为例,计算:
并得到中间解密结果
(2)加入目标用户的0密文:用户利用i的公钥对0加密得到
(3)用户i接收到
并进行最终解密:
本发明提出了定向解密的概念,即同态运算后的结果只能由特定用户进行解密。通过联合参与计算用户的部分解密结果和特定用户的密文,生成特殊的部分解密结果,使其即便被不法分子(非定向解密用户)窃取,也无法获取任何有关用户明文、私钥以及解密结果的信息,不仅增强了密文解密结果的可控性,同时取消了密文广播过程中需要用到mpc相关技术的限制,降低了解密结果的复杂性。在安全性方面,本发明涉及到的基础加密方案为bgv全同态加密方案,其安全性可以规约到格上的困难问题,能够有效抵抗量子攻击,因此安全性能够得到保证。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。