掌桥专利:专业的专利平台
掌桥专利
首页

一种适用于同态运算的加解密方法及装置

文献发布时间:2024-04-18 20:01:23


一种适用于同态运算的加解密方法及装置

技术领域

本说明书一个或多个实施例涉及数据安全技术领域,尤其涉及一种适用于同态运算的加解密方法及装置。

背景技术

目前,同态加密算法常常应用于联邦学习、多方安全计算等涉及多方联合处理且需要保护数据安全性和隐私性的场景中。同态加密中的加法同态,是指在不解密的情况下,对多个密文进行加法运算,效果等同于对相应的明文做加法运算之后再加密。现有的同态加密算法存在计算量大,运算效率低的问题。

因此,希望能有改进的方案,可以提供能够支持同态运算的更高效的加解密算法。

发明内容

本说明书一个或多个实施例描述了一种适用于同态运算的加解密方法及装置,以防止数据泄露,提高数据的安全性。具体的技术方案如下。

第一方面,实施例提供了一种适用于同态运算的加密方法,包括:

获取待加密的明文数据m以及密钥,所述密钥包括第一密钥p和第二密钥q;

基于特定值,以及随机生成的随机数和第二中间值v,对所述明文数据m进行第一运算,得到第一中间值u,以使得所述第一中间值u和所述第二中间值v的和值M满足:预设的第一比特的查找区段中的数据为所述特定值,预设的第二比特的明文区段中的数据包含所述明文数据m;

分别基于所述第一密钥p和第二密钥q,对所述第一中间值u和第二中间值v进行第二运算,以使得第二运算结果分别模所述第一密钥p、所述第二密钥q后的值,分别与所述第一中间值u、所述第二中间值v相关;

基于第二运算结果得到所述明文数据m的密文。

在一种实施方式中,所述和值M的数据结构包括:高ρ

在一种实施方式中,所述随机数包括两个随机数;所述对所述明文数据m进行第一运算的步骤,包括:

将一所述随机数、所述特定值、所述明文数据m和另一所述随机数分别作为所述数据结构中各个区段的数据,得到构建值;

将所述构建值的查找区段和明文区段的数据分别减去所述第二中间值v的查找区段和明文区段的数据,得到所述第一中间值u。

在一种实施方式中,所述特定值为0。

在一种实施方式中,所述密钥还包括第一数a和第二数b;所述对所述第一中间值u和第二中间值v进行第二运算的步骤,包括:

计算所述第一中间值u与所述第一数a的乘积,使用所述第一密钥p对该乘积取模;

计算所述第二中间值v与所述第二数b的乘积,使用所述第二密钥q对该乘积取模。

在一种实施方式中,所述第二运算结果包括两个取模后的数;所述根据第二运算结果得到所述明文数据m的密文的步骤,包括:

使用随机数r

在一种实施方式中,所述对所述第一中间值u和第二中间值v进行第二运算的步骤,包括:

使用所述第一密钥p与所述第二密钥q的乘积,对两个乘积的和值取模,所述两个乘积包括:与所述第一中间值u与所述第一密钥p的乘积相关的第一乘积,以及与所述第二中间值v与所述第二密钥q的乘积相关的第二乘积。

在一种实施方式中,随机生成随机数和第二中间值v的步骤,包括:

基于设定的所述第一中间值u与所述第一密钥p之间的数值关系条件,以及所述第二中间值v与所述第二密钥q之间的数值关系条件,随机生成所述随机数和第二中间值v。

第二方面,实施例提供了一种适用于同态运算的解密方法,包括:

获取待解密的密文数据c、密文相加次数w以及密钥,所述密钥包括第一密钥p和第二密钥q;

基于所述第一密钥p和第二密钥q,对所述密文数据c进行与取模有关的目标运算,得到第三中间值M′;所述目标运算是加密阶段中对应运算的逆运算;

确定第一参数t和第二参数s的参数值,使得所述第三中间值M′与第四中间值N′的目标和值中,预设的第一比特的查找区段的数据为:特定值与所述密文相加次数w的乘积;其中,所述目标和值包括所述查找区段和预设的第二比特的明文区段,所述第四中间值N′基于所述第一参数t、所述第二参数s、所述第一密钥p和所述第二密钥q之间的第三运算得到;

基于确定的参数值,确定所述目标和值的明文区段的区段值,从所述区段值中提取出解密的明文数据m。

在一种实施方式中,所述密钥还包括第一数a和第二数b;所述密文数据c包括第一密文x和第二密文y;

所述对所述密文数据c进行与取模有关的目标运算的步骤,包括:

计算所述第一数a的逆与所述第一密文x的乘积,使用所述第一密钥p对该乘积取模;

计算所述第二数b的逆与所述第二密文y的乘积,使用所述第二密钥q对该乘积取模;

基于取模后的两个结果的和值得到第三中间值M′。

在一种实施方式中,所述第三运算包括:

对两个乘积取和值,所述两个乘积包括:所述第一参数t与所述第一密钥p的乘积,以及所述第二参数s与所述第二密钥q之间的乘积。

在一种实施方式中,所述确定第一参数t和第二参数s的参数值的步骤,包括:

确定第五中间值d,使得所述第五中间值d中查找区段的数值与所述第三中间值M′的查找区段的数值的和值为:所述特定值与所述密文相加次数w的乘积;

将所述第五中间值d中查找区段的数值划分成θ等份,得到θ个小区段;

执行以下循环,按照从高位到低位的顺序依次寻找每个小区段对应的商:将所述第五中间值d作为被除数,将所述第一密钥p和第二密钥q作为除数,寻找当前循环中小区段对应的商,使得该商与所述除数通过所述第三运算得到的目标乘积,与该小区段的数值相同,并将所述第五中间值d减去所述目标乘积,得到更新后的第五中间值d;任意一个商包括与第一参数t对应的第一商和与所述第二参数s对应的第二商;

基于所述θ个小区段的所有商的和值,确定所述第一参数t和第二参数s的参数值;所有商的和值包括所有第一商的第一和值以及所有第二商的第二和值。

在一种实施方式中,所述寻找当前循环中小区段对应的商的步骤,包括:

从第一预计算表中寻找当前循环中小区段对应的商;

其中,所述第一预计算表包括与所述θ个小区段分别对应的θ个第一维度值,每个第一维度值包含2

在一种实施方式中,所述基于所述θ个小区段的所有商的和值,确定所述第一参数t和第二参数s的参数值的步骤,包括:

获取第一更新参数t

从所述若干组参数值中寻找所述第一更新参数t

在一种实施方式中,所述获取第一更新参数t

从第二预计算表中获取第一更新参数t

其中,所述第二预计算表包含多个维度值,每个维度值包括第一更新参数t

第三方面,实施例提供了一种适用于同态运算的加密装置,包括:

第一获取模块,配置为获取待加密的明文数据m以及密钥,所述密钥包括第一密钥p和第二密钥q;

第一运算模块,配置为基于特定值,以及随机生成的随机数和第二中间值v,对所述明文数据m进行第一运算,得到第一中间值u,以使得所述第一中间值u和所述第二中间值v的和值M满足:预设的第一比特的查找区段中的数据为所述特定值,预设的第二比特的明文区段中的数据包含所述明文数据m;

第二运算模块,配置为分别基于所述第一密钥p和第二密钥q,对所述第一中间值u和第二中间值v进行第二运算,以使得第二运算结果分别模所述第一密钥p、所述第二密钥q后的值,分别与所述第一中间值u、所述第二中间值v相关;

第一确定模块,配置为基于第二运算结果得到所述明文数据m的密文。

第四方面,实施例提供了一种适用于同态运算的解密装置,包括:

第二获取模块,配置为获取待解密的密文数据c、密文相加次数w以及密钥,所述密钥包括第一密钥p和第二密钥q;

第三运算模块,配置为基于所述第一密钥p和第二密钥q,对所述密文数据c进行与取模有关的目标运算,得到第三中间值M′;所述目标运算是加密阶段中对应运算的逆运算;

第二确定模块,配置为确定第一参数t和第二参数s的参数值,使得所述第三中间值M′与第四中间值N′的目标和值中,预设的第一比特的查找区段的数据为:特定值与所述密文相加次数w的乘积;其中,所述目标和值包括所述查找区段和预设的第二比特的明文区段,所述第四中间值N′基于所述第一参数t、所述第二参数s、所述第一密钥p和所述第二密钥q之间的第三运算得到;

第三确定模块,配置为基于确定的参数值,确定所述目标和值的明文区段的区段值,从所述区段值中提取出解密的明文数据m。

第五方面,实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面至第二方面中任一项所述的方法。

第六方面,实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面至第二方面中任一项所述的方法。

本说明书实施例提供的方法及装置中,将变量设计成包含第一比特的查找区段和第二比特的明文区段的数据结构,在解密时能够基于查找区段的特定值解密出明文区段中的明文数据。特定的数据结构使得加解密过程能够适用于同态运算,而加解密过程使用模加和模乘进行计算,这使得整个加解密过程计算量低,因此能够提供更高效的加解密方法。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书披露的一个实施例的实施场景示意图;

图2为实施例提供的一种适用于同态运算的加密方法的流程示意图;

图3为实施例提供的一种适用于同态运算的解密方法的流程示意图;

图4为实施例提供的一种适用于同态运算的加密装置的示意性框图;

图5为实施例提供的一种适用于同态运算的解密装置的示意性框图。

具体实施方式

下面结合附图,对本说明书提供的方案进行描述。

本说明书提供的加密方法是同态加密算法中的加法同态算法。加法同态算法一般包括以下几个部分:密钥、加密、密文加和解密。其中,加密是指基于密钥和明文生成密文。密文加是指对两个密文做加法,生成新的密文。解密是指基于密文和密钥获得明文。

加密如果仅需要依靠密钥中可以公开的部分(叫做公钥),就被称为公钥加密体制,否则被称为对称密钥体制。

数据流通依赖联邦学习、多方安全计算、同态加密等不同领域的算法。这些领域的部分算法依赖加法同态算法。例如,部分联邦学习依赖加法同态完成梯度聚合,如安全增强模型(SecureBoost);部分多方安全计算依赖加法同态完成底层的密态乘法;同态加密如果仅需要支持加法,使用“加法同态”比使用“全同态”有显著性能优势。

与以往不同的是,部分数据流通场景仅需要对称密钥体制下的加法同态算法,因此存在对对称密钥体制下具有更高性能的加法同态算法的需求。

本说明书实施例提供的加法同态加密算法基于对称密钥体制进行。图1为本说明书披露的一个实施例的实施场景示意图。多个设备分别拥有隐私数据或需要进行加密的明文数据,例如设备1拥有明文m

为了使得加解密过程运算更简捷,本说明书实施例提供了一种适用于同态运算的加密方法和解密方法。在加密方法中,构造了一种特定数据结构,该数据结构包含预设的第一比特的查找区段和预设的第二比特的明文区段。基于密钥和明文数据m生成第一中间值u,使得第一中间值u和随机生成的第二中间值v的和值M的查找区段正好是特定值,明文区段的数据包含明文数据。从而,使用p和q分别对u和v进行运算生成密文。在解密方法中,基于给出的密文,依据查找区段为特定值的特点,反解出明文数据m。

本实施例通过将明文数据隐藏在余数系统的两个坐标上,使得攻击者在不知道密钥p和q时,无法分解出两个坐标上的值,进而难以获得明文数据。整个加密过程计算量低,因此能够提供更高效的加解密过程。

下面结合图2对加密方法的过程进行详细说明。

为了更清楚地对本实施例进行说明,这里首先以举例的方式对用到的变量进行适当说明,并且本实施例中涉及的数据都以二进制数形式进行说明。

密钥:{p,q,a,b},其中p和q可以为γ比特大素数,a和b可以为γ比特。γ为正整数,例如可以是1024或2048,也可以是其他整数。

明文:m,为η比特,例如可以但不限于为64比特。

密文:{x,y,w},其中x和y分别为2γ比特,w为密文相加次数。本实施例支持的密文相加次数w<2

X

表示2

X

图2为实施例提供的一种适用于同态运算的加密方法的流程示意图。该方法通过计算设备执行,计算设备可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。该方法包括以下步骤。

步骤S210,获取待加密的明文数据m以及密钥,该密钥包括第一密钥p和第二密钥q。

步骤S220,基于特定值,以及随机生成的随机数和第二中间值v,对所述明文数据m进行第一运算,得到第一中间值u,以使得第一中间值u和第二中间值v的和值M满足:预设的第一比特的查找区段中的数据为特定值,预设的第二比特的明文区段中的数据包含明文数据m。

步骤S230,分别基于第一密钥p和第二密钥q,对第一中间值u和第二中间值v进行与取模有关的第二运算,以使得第二运算结果分别模第一密钥p、第二密钥q后的值,分别与第一中间值u、第二中间值v相关。

步骤S240,基于第二运算结果得到明文数据m的密文,得到的密文可以是一个,也可以是两个,例如包括第一密文x和第二密文y,表示为(x,y,w=1),其密文相加次数w为1。

在步骤S210中,密钥可以是预先设定的。密钥中的第一密钥p和第二密钥q的比特位数可以相同,也可以不同,可以与和值M的位数相同或不同。密钥还可以包括第一数a和第二数b,第一数a和第二数b的位数可以相同,也可以不同,可以与和值M的位数相同或不同。a和b并不是必需的。第一密钥p和第二密钥q一般取大正整数,两者可以是素数或非素数。当p和q为非素数时,要求密钥中的第一数a和第二数b满足:p和a互素,q和b互素。为了方便说明,在下文内容中,以p和q为γ比特的大素数为例进行说明。

和值M具有特定的数据结构,该数据结构包含预设的第一比特α的查找区段和预设的第二比特η的明文区段。查找区段可以与明文区段依次拼接。可以是,查找区段可以在高位,明文区段在低位;也可以是,查找区段在低位,明文区段在高位。第一比特α和第二比特η表示的是范围。例如,当查找区段在高位,明文区段在低位,且α比特的查找区段表示为[α

该数据结构还可以包含随机数区段。例如,随机数区段可以设置在数据结构的高位区段,或者设置在其低位区段,或者设置在查找区段和明文区段中间,或者同时设置在高低位区段,等等。总之,在预设的区段设置查找区段和明文区段,并且这两个区段的位置在整个数据中的位置固定,即能够实现本实施例的方法。

为了更容易理解,在下文内容中,以一种具体的数据结构为例进行说明,该数据结构包括高ρ

高位随机数区(ρ)∥查找区(α)∥明文区(η)∥低位随机数区(ρ)

其中,高位、低位随机数区各ρ比特,用于存放随机数。查找区为α比特,用于解密时搜索关键参数。明文区为η比特。在实际应用中,可以限定明文相加后的长度不超过明文区。上述各个变量满足2ρ+α+η=γ。

特定值可以为α比特的任意指定数值,例如可以但不限于为0。

在步骤S220中,第二中间值v是随机生成的,第一中间值u的位数可以不固定,或者根据需要设定。随机生成的随机数可以是一个或多个,其比特位数可以是随机生成的。该随机数的数量可以基于上述数据结构中随机数的数量确定,例如可以是一个或者两个。

加密过程可以预先设定第一中间值u与第一密钥p之间的数值关系条件,以及第二中间值v与第二密钥q之间的数值关系条件,基于这些数值关系条件随机生成随机数和第二中间值v。

例如,数据关系条件可以包括:u

接续前例所述,可以随机生成一个γ比特的随机数τ,作为第二中间值v,生成两个ρ比特的随机数ξ和ζ,用于得到第一中间值u。

为了方便计算,在生成随机数时,生成的两个ρ比特的随机数ξ和ζ以及一个γ比特的随机数τ可以都为正值。

在生成第一中间值u时,可以按照以下方式进行:将一ρ比特的随机数ξ、特定值、明文数据m和另一ρ比特的随机数ζ分别作为特定的数据结构中各个区段的数据,得到构建值,将构建值的查找区段和明文区段的数据分别减去第二中间值v的查找区段和明文区段的数据,得到第一中间值u。

当特定值为0时,构建值可以采用下式表示:2

为了方便表述,下文将u和v称为明文数据m的秘密分享。基于式(1)可以得到和值M:

由式(2)可知,和值M的查找区段数据为0,即M

第一运算还可以包含多种实施方式,上述式(1)仅是其中一种,只要能保证和值M满足上述条件即可。

在步骤S230中,分别基于第一密钥p和第二密钥q,对第一中间值u和第二中间值v进行第二运算,得到的第二运算结果包含两个值,即第一值和第二值。第一值是基于p对u的第二运算得到的结果,第二值是基于q对v的第二运算得到的结果。该第二运算能够使得:第一值模第一密钥p后的值与第一中间值u相关,第二值模第二密钥q后的值与第二中间结果v相关。“模”即mod操作,第一值模p的操作,就是使用p对第一值取模。第二值模q的操作,就是使用q对第二值取模。

基于上述要求,第二运算可以包含多种形式。

例如,在密钥还包括第一数a和第二数b的情况下,在步骤S230中进行第二运算时,可以计算第一中间值u与第一数a的乘积,使用第一密钥p对该乘积取模;计算第二中间值v与第二数b的乘积,使用第二密钥q对该乘积取模。第二运算结果包括取模后的两个数,这两个数可以直接作为密文x和y。

也可以,使用随机数r

其中,r

第二运算还可以包含其他方式,例如不使用第一数a和第二数b,直接使用第一密钥p对第一中间值u取模,使用第二密钥q对第二中间值v取模,得到两个取模后的数。

或者,第二运算可以基于第一中间值u与p的和值,第二中间值v与q的和值进行。例如,x=au+r

基于第二运算结果得到明文数据m的密文的步骤,也可以包含其他方式,例如对公式(3)的右侧表达式进行适当变形等。

或者,还可以基于中国剩余定理计算符合要求的密文c。具体的,第二运算中,可以使用第一密钥p与第二密钥q的乘积,对以下两个乘积的和值取模,这里的两个乘积包括:与第一中间值u与第一密钥p的乘积相关的第一乘积,以及与第二中间值v与第二密钥q的乘积相关的第二乘积。

例如,计算的密文c可以采用以下公式表示:

c=(auq

其中,q

上述加密过程的核心思想,是把明文数据分成两个秘密分享的分片,按照前述数据结构,使用随机数将两个分片“夹在中间”,再分别将两个分片隐藏在近似公因子问题的误差部分中(即遮蔽构建值中的特定值和明文数据,进而得到第一中间值u)。

当多个设备分别执行上述加密过程时,可以得到多个密文,例如可以得到(x

x=x

同态运算加法的原理,是两个密文分片相加,相当于在明文的秘密分享u和v上相加,这相当于在明文上相加。

下面对解密过程的解密思路进行说明。

假设密文数据(x,y)是由(x

因为(u

由加密过程可知:

其中,r

虽然从式(6)中可以知道Σu

假设

从式(7)可知,问题的关键在于求解第一参数t和第二参数s。

由于u

0≤t

这是t和s的取值范围,这样就缩小了t和s的范围。解密的目标,是需要知道t和s的具体值。

令第三中间值M′=(a

由符号说明以及前述的加密过程可知,u

这是一个非常强的约束,可以用来检索t和s是其取值范围[0,w)中的哪一个值。当找到t和s的值时,可以基于t和s的值确定式(9)中的M′+tp+sq,进而可以基于式(9)的明文区段的区段值,提取得到明文数据m。

基于上述解密思路,可以得到解密方法的实施例。下面再结合图3对解密方法的过程进行详细说明。图3是在图2实施例基础上得到的实施例,其中的相关说明可以相互参照。

图3为实施例提供的一种适用于同态运算的解密方法的流程示意图。该方法通过计算设备执行。该方法包括以下步骤。

步骤S310,获取待解密的密文数据c、密文相加次数w以及密钥。

步骤S320,基于第一密钥p和第二密钥q,对密文数据c进行与取模有关的目标运算,得到第三中间值M′。其中,目标运算是加密阶段中对应运算的逆运算。

步骤S330,确定第一参数t和第二参数s的参数值,使得第三中间值M′与第四中间值N′的目标和值中查找区段的数据为:特定值与密文相加次数w的乘积。其中,目标和值包括查找区段和明文区段,并且第四中间值N′基于第一参数t、第二参数s、第一密钥p和第二密钥q之间的第三运算得到。

步骤S340,基于确定的参数值,确定目标和值的明文区段的区段值,从区段值中提取出解密的明文数据m。

其中,密文数据c可以包含一个密文,也可以包括第一密文x和第二密文y构成的一组密文。该密文数据c可以是多个密文的和值,也可以是多组密文的和值,其中w>1;或者,可以是一个密文,或者一组密文,其中w=1。c是w个密文的和值,w可以取1或大于1的整数。如前所述,密钥包括第一密钥p和第二密钥q,还可以包括第一数a和第二数b。目标和值符合上述特定的数据结构。密文数据c并不符合该数据结构,但是密文数据c是基于该数据结构的数据得到的。

当在步骤S310中获取到密文数据c时,通过上述解密思路可知,可以分别基于第一密钥p和第二密钥q对密文数据c进行与取模有关的目标运算,得到第三中间值M′,也就是执行步骤S320。当密文数据c包含一个密文时,分别基于第一密钥p对密文数据c进行目标运算,基于第二密钥q对密文数据c进行目标运算。当密文数据c包含第一密文x和第二密文y时,基于第一密钥p对第一密文x进行目标运算,基于第二密钥q对第二密文y进行目标运算。

在一种实施方式中,基于上述解密思路,可知步骤S320的具体执行过程可以包括:计算第一数a的逆与第一密文x的乘积,使用第一密钥p对该乘积取模,即得到a

而步骤S330中的第三运算可以是对以下的两个乘积取和值,两个乘积包括:第一参数t与第一密钥p的乘积,以及第二参数s与第二密钥q之间的乘积。即,第四中间值N′=tp+sq。式(9)可以转换为Σ(u

其中,M′是已知的,N′中的p和q是已知的,根据“目标和值中查询区段的数据为特定值与密文相加次数w的乘积”的条件以及上述已知数据,可以确定第一参数t和第二参数s的参数值。

当确定参数值之后即可以确定目标和值,在步骤S340中,可以从目标和值的明文区段中提取明文数据m,明文数据m可以是该明文区段的区段值,也可以是明文区段的区段值减去w后的值。解密得到的明文数据在低位可能有一些小误差。

问题的关键是,如何快速地确定t和s的值。当查询区段的大小为α比特时,查询区段能够区分2

为了降低搜索t和s时的计算量,本说明书实施例还提供了一种确定第一参数t和第二参数s的参数值的方法。该方法包括以下步骤1~步骤4。为了更好地说明该方法的执行过程,这里可以先回顾一下利用“竖式除法”计算“商”的过程。首先,根据“被除数”的高位预估“商”的高位,然后将“商”的高位与除数相乘,再从“被除数”中减去刚刚计算的乘积。如此往复,不断地将“商”的所有位估计出来。

再回到本实施例。本实施例将查找区段划分成θ等份,得到θ个小区段,每个小区段是μ比特。从高到低依次称为第1、2、…、θ小区段。下面详细对本实施例中的各个步骤进行说明。

步骤1,确定第五中间值d,使得第五中间值d中查找区段的数值与第三中间值M′的查找区段的数值的和值为:特定值与密文相加次数w的乘积。即,如果能使得M′+d的查找区段的数值为w*特定值,则d为第四中间值N′,即tp+sq逼近的目标值。按照该思路,可以得到d的查找区段的数值为:w*特定值减去的M′的查找区段的数值。d的其他区段的数值可以随机确定。d的位数可以至少包括:低位随机数区段ρ比特+明文区段η比特+查找区段α比特。

步骤2,将第五中间值d中查找区段的数值划分成θ等份,得到θ个小区段。

步骤3,执行循环过程,按照从高位到低位的顺序依次寻找每个小区段对应的商。

步骤4,基于θ个小区段的所有商的和值,确定第一参数t和第二参数s的参数值。所有商的和值包括所有第一商的第一和值以及所有第二商的第二和值。

其中,步骤3中的循环过程如下:

在第j次循环中,将第五中间值d

其中,任意一个商包括:与第一参数t对应的第一商t

当计算到第j=θ次循环时,可以得到d

随着循环的进行,Σ(t

从以上循环过程可知,t

为了找到目标的t和s,步骤4可以在得到的Σt

t

s

则可以知道,M′+Σt

也就是,可以基于“t

令t

其中,第一更新参数t

因此,在执行步骤4时,可以获取第一更新参数t

其中,目标条件基于加密阶段的数值关系条件得到。例如,目标条件包括t和s小于w的条件,以及t和s能够使得M′+tp+sq的查找区段的数值为w*特定值。

以上是寻找t和s的实施过程。为了使得该过程的执行更加高效,可以预先计算并构建第一预计算表T和第二预计算表R,通过查表的方式简化相关的计算步骤。

例如,在执行步骤3中寻找当前循环中第j小区段对应的商t

在获取第一更新参数t

下面对两个预计算表进行说明。

第一预计算表T的表元素T[j][z]是三元组结构(t,s,e),t和s是正整数,e=(t

整个查找区段等分成θ个小区段,表元素T[j][z]用于搜索第j个小区段,进一步的,表元素T[j][z]还用于存储小区段的标识为z的e值,即

T[j][z].e

其中,j∈[1,θ],z∈[0,2

此外,在预计算阶段可寻找位宽尽可能小的t和s,这会使得Σt

一般来说,T[j][z]拟合的查找区长度为(θ+1)μ,所以它的t和s的比特数小于或略超过(θ+1)μ/2。实测中一般最多超过1到2个比特。令所有t和s的最大比特数为k,k一般为α/2+1或α/2+2。在生成密钥时,可以筛选合适的p和q,使得k=α/2+1。

在构建第一预计算表T时,可以按照以下过程进行。首先,分别计算tp和sq的值,t∈[0,2

根据(tp)

按照第二预计算表的建设要求,(tp)

遍历所有的tp小组,以及与每个小组相关的sq小组,搜索目标值。

通过上述方式即可以完成对第一预计算表T的构建。

第二预计算表R包含2

e

t∈[-2

其中,e

为了提高从第二预计算表R中搜索数据时的效率,可以为R建立索引,使得根据t和s两个元素的范围要求,能够快速地找到对应的表项。

表R的建立过程与表T类似,但是可以多建立一个索引,以方便根据t和s的范围索引目标表项。表R的建立过程如下:

将表R中t的空间[-2

建立二维索引,横纵坐标分别是t和s的块序号。二维空间里每个点代表的t和s取值的可能性各为2

在搜索t

综上所述,本说明书实施例提供的加密方法可以把明文藏在余数系统的两个坐标上,,输出整体的值,即模pq后的值。两个坐标指的是模p和模q之后的值。当攻击者不知道p和q时,难以分解出两个坐标的值,进而难以获得明文。

解密过程中容易获得的是明文在两个坐标上的值的和在模p或q之后的值,但是解密过程实际要获得的是明文在两个坐标上的值的和,即未进行模p或q之前的值。这样就需要知道模p或q时减去了多少个p或q。查询区段的设计就是为了搜索该参数的。

实施例还提供了高效地搜索参数t和s的方法,通过预计算表和建立索引的方式提高搜索速度。

已有的加法同态算法都是基于公钥体系,其运算中包含模幂等复杂运算,性能较慢。本说明书实施例提供的同态加密算法使用模加和模乘等运算,避免了模幂等复杂运算,因此能大大地降低计算量,提高计算效率。

本说明书中,第一密钥、第一运算、第一数和第一中间值等词语中的“第一”,以及文中相应的“第二”(如果存在)等,仅仅是为了区分和描述方便,并不具有任何限定意义。

上述内容对本说明书的特定实施例进行了描述,其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行,并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的,或者可能是有利的。

图4为实施例提供的一种适用于同态运算的加密装置的示意性框图。该装置实施例与图2所示方法实施例相对应。该装置部署在计算设备中,计算设备可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。该装置400包括:

第一获取模块410,配置为获取待加密的明文数据m以及密钥,所述密钥包括第一密钥p和第二密钥q;

第一运算模块420,配置为基于特定值,以及随机生成的随机数和第二中间值v,对所述明文数据m进行第一运算,得到第一中间值u,以使得所述第一中间值u和所述第二中间值v的和值M满足:预设的第一比特的查找区段中的数据为所述特定值,预设的第二比特的明文区段中的数据包含所述明文数据m;

第二运算模块430,配置为分别基于所述第一密钥p和第二密钥q,对所述第一中间值u和第二中间值v进行第二运算,以使得第二运算结果分别模所述第一密钥p、所述第二密钥q后的值,分别与所述第一中间值u、所述第二中间值v相关;;

第一确定模块440,配置为基于第二运算结果得到所述明文数据m的密文。

在一种实施方式中,所述和值M的数据结构包括:高ρ

在一种实施方式中,所述随机数包括两个随机数;所述第一运算模块420具体配置为:

将一所述随机数、所述特定值、所述明文数据m和另一所述随机数分别作为所述数据结构中各个区段的数据,得到构建值;

将所述构建值的查找区段和明文区段的数据分别减去所述第二中间值v的查找区段和明文区段的数据,得到所述第一中间值u。

在一种实施方式中,所述特定值为0。

在一种实施方式中,所述密钥还包括第一数a和第二数b;所述第二运算模块430,具体配置为:

计算所述第一中间值u与所述第一数a的乘积,使用所述第一密钥p对该乘积取模;

计算所述第二中间值v与所述第二数b的乘积,使用所述第二密钥q对该乘积取模。

在一种实施方式中,所述第二运算结果包括两个取模后的数;所述第一确定模块440具体配置为:

使用随机数r

在一种实施方式中,所述第二运算模块430具体配置为:

使用所述第一密钥p与所述第二密钥q的乘积,对两个乘积的和值取模,所述两个乘积包括:与所述第一中间值u与所述第一密钥p的乘积相关的第一乘积,以及与所述第二中间值v与所述第二密钥q的乘积相关的第二乘积。

在一种实施方式中,所述装置400还包括第一生成模块(图中未示出),配置为按照以下方式随机生成随机数和第二中间值v:

基于设定的所述第一中间值u与所述第一密钥p之间的数值关系条件,以及所述第二中间值v与所述第二密钥q之间的数值关系条件,随机生成所述随机数和第二中间值v。

图5为实施例提供的一种适用于同态运算的解密装置的示意性框图。该装置实施例与图3所示方法实施例相对应。该装置部署在计算设备中,计算设备可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。该装置400包括:

第二获取模块510,配置为获取待解密的密文数据c、密文相加次数w以及密钥,所述密钥包括第一密钥p和第二密钥q;

第三运算模块520,配置为分别基于所述第一密钥p和第二密钥q,对所述密文数据c进行与取模有关的目标运算,得到第三中间值M′;所述目标运算是加密阶段中对应运算的逆运算;

第二确定模块530,配置为确定第一参数t和第二参数s的参数值,使得所述第三中间值M′与第四中间值N′的目标和值中,预设的第一比特的查找区段的数据为:特定值与所述密文相加次数w的乘积;其中,所述目标和值包括所述查找区段和预设的第二比特的明文区段,所述第四中间值N′基于所述第一参数t、所述第二参数s、所述第一密钥p和所述第二密钥q之间的第三运算得到;

第三确定模块540,配置为基于确定的参数值,确定所述目标和值的明文区段的区段值,从所述区段值中提取出解密的明文数据m。

在一种实施方式中,所述密钥还包括第一数a和第二数b;所述密文数据c包括第一密文x和第二密文y;

所述第三运算模块520具体配置为:

计算所述第一数a的逆与所述第一密文x的乘积,使用所述第一密钥p对该乘积取模;

计算所述第二数b的逆与所述第二密文y的乘积,使用所述第二密钥q对该乘积取模;

基于取模后的两个结果的和值得到第三中间值M′。

在一种实施方式中,所述第三运算包括:

对两个乘积取和值,所述两个乘积包括:所述第一参数t与所述第一密钥p的乘积,以及所述第二参数s与所述第二密钥q之间的乘积。

在一种实施方式中,所述第二确定模块530包括:

第一确定子模块531,配置为确定第五中间值d,使得所述第五中间值d中查找区段的数值与所述第三中间值M′的查找区段的数值的和值为:所述特定值与所述密文相加次数w的乘积;

划分子模块532,配置为将所述第五中间值d中查找区段的数值划分成θ等份,得到θ个小区段;

循环子模块533,配置为执行以下循环,按照从高位到低位的顺序依次寻找每个小区段对应的商:将所述第五中间值d作为被除数,将所述第一密钥p和第二密钥q作为除数,寻找当前循环中小区段对应的商,使得该商与所述除数通过所述第三运算得到的目标乘积,与该小区段的数值相同,并将所述第五中间值d减去所述目标乘积,得到更新后的第五中间值d;任意一个商包括与第一参数t对应的第一商和与所述第二参数s对应的第二商;

第二确定子模块534,配置为基于所述θ个小区段的所有商的和值,确定所述第一参数t和第二参数s的参数值;所有商的和值包括所有第一商的第一和值以及所有第二商的第二和值。

在一种实施方式中,所述循环子模块533,在寻找当前循环中小区段对应的商时,包括:

从第一预计算表中寻找当前循环中小区段对应的商;

其中,所述第一预计算表包括与所述θ个小区段分别对应的θ个第一维度值,每个第一维度值包含2

在一种实施方式中,所述第二确定子模块534包括:

获取单元11,配置为获取第一更新参数t

寻找单元22,配置为从所述若干组参数值中寻找所述第一更新参数t

在一种实施方式中,所述获取单元11具体配置为:

从第二预计算表中获取第一更新参数t

其中,所述第二预计算表包含多个维度值,每个维度值包括第一更新参数t

上述各个装置实施例与方法实施例相对应,具体说明可以参见方法实施例部分的描述,此处不再赘述。装置实施例是基于对应的方法实施例得到,与对应的方法实施例具有同样的技术效果,具体说明可参见对应的方法实施例。

本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图1至图3任一项所述的方法。

本说明书实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图1至图3任一项所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于存储介质和计算设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。

以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步的详细说明。所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

相关技术
  • 一种取向可控的静电纺纳米纤维包芯纱的制备装置及方法
  • 一种静电纺丝纳米纤维包芯纱成纱装置及方法
  • 熔融静电纺纳米纤维复合包芯纱及其制备方法和装置
  • 熔融静电纺纳米纤维复合包芯纱及其制备方法和装置
技术分类

06120116551789