一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

生成安全计算密钥、进行安全计算的方法及装置与流程

2021-10-19 23:10:00 来源:中国专利 TAG:例数 多个 密钥 计算方法 说明书


1.本说明书一个或多个实施例涉及数据隐私安全领域,尤其涉及生成安全计算密钥及进行安全计算的方法和装置。


背景技术:

2.随着计算机技术的发展,机器学习已经应用到各种各样的技术领域,用于分析、处理各种业务数据。机器学习所需要的数据往往会涉及到多个领域,例如在基于机器学习的商户分类分析场景中,电子支付平台拥有商户的交易流水数据,电子商务平台存储有商户的销售数据,银行机构拥有商户的借贷数据。数据往往以孤岛的形式存在。由于行业竞争、数据安全、用户隐私等问题,数据整合面临着很大阻力,将分散在各个平台的数据整合在一起进行机器学习模型的训练难以实现。因此,提出多方联合训练和使用机器学习模型进行业务处理的方式。
3.在多方联合训练和使用机器学习模型的场景下,数据隐私的保护和安全性成为值得关注的问题。例如,在一个多方计算的场景下,a方持有待处理的用户样本特征数据形成的特征矩阵,b方持有数据处理模型的模型参数形成的参数矩阵。为了各方隐私数据安全,a方和b方需要在不暴露各自矩阵数据的情况下,实现安全的矩阵相乘。在其他多方计算场景下,还存在其他的安全运算需求。
4.为了在多方计算过程中保护各方数据隐私,提出了多种安全计算协议,适用于不同的安全计算场景。多数安全计算协议都需要预先生成数据元组,以便在计算过程中使用。
5.因此,希望提供改进的方案,更加高效更加安全地生成安全计算协议的数据元组,从而提高多方计算的效率和安全性。


技术实现要素:

6.本说明书一个或多个实施例描述了一种双方联合生成安全计算密钥,以及基于密钥进行安全计算的方法和装置,可以实现符合业务要求的环代数结构中的分布式点函数的安全计算。
7.根据第一方面,提供了一种双方联合生成安全计算密钥的方法,所述安全计算使用分布式点函数,该函数用于将预设整数α映射为k比特整数环中的预定值β;该预设整数α和预定值β均以分片形式分布于双方之中,所述双方包括第一方和第二方,所述方法通过双方中的任一方执行,包括:
8.生成二叉树,并初始化根节点的标签值;
9.逐层对所述二叉树进行标签赋值处理,其中针对第j层的标签赋值处理包括:
10.对于第j层各个节点,根据其父节点的标签值,生成该节点的临时标签值;
11.基于所述临时标签值和所述预设整数α的本方分片,通过与对方提供的对应数据进行第一安全运算,确定该第j层对应的修正因子;
12.利用所述修正因子修正各个节点的临时标签值,得到各个节点的第一标签值和第
二标签值,使得:对于刺穿节点,第一方与第二方分别得到的第二标签值之差为常数c,对于非刺穿节点,双方的第一标签值和第二标签值对应相同;所述刺穿节点是从根节点到刺穿叶节点所经过的节点,所述刺穿叶节点是索引编号对应于所述预设整数α的叶节点;
13.基于各个叶节点的第一标签值和所述预定值β的本方分片,通过与对方提供的对应数据进行第二安全计算,确定输出修正值;
14.生成计算密钥,其中包括根节点的标签值,各个层的修正因子,和所述输出修正值。
15.在一个实施例中,所述分布式点函数的定义域为包含m个元素的整数环;所述二叉树的叶节点层至少包括对应于所述m个元素的m个叶节点。
16.根据一种实施方式,初始化根节点的标签值,具体包括:随机生成第一比特串,作为根节点的第一标签值;根据约定方式,将固定值赋值给根节点的第二标签值;其中,所述约定方式确保,第一方的固定值与第二方的固定值之差为所述常数c。
17.根据一种实施方式,生成节点的临时标签值,具体包括:对于第j层中任意的第一节点,根据该第一节点的父节点的第一标签值,利用伪随机生成器生成对应的伪随机值,作为该第一节点的临时标签值。
18.在一种实施方式中,确定该第j层对应的修正因子,具体包括:对第j层左侧节点和右侧节点的临时标签值分别进行求和,得到左侧和值和右侧和值;利用所述左侧和值、右侧和值和所述预设整数α的本方分片,与对方提供的对应和值以及所述预设整数α的对方分片,进行所述第一安全运算,得到该第j层对应的修正因子。
19.在一个实施例中,所述修正因子包括,第一标签因子,左侧标签因子和右侧标签因子;其中:所述第一标签因子指示,在所述刺穿节点的另一侧,第一方临时标签值之和与第二方临时标签值之和的差值;所述左侧标签因子,基于左侧差值以及刺穿节点所在侧而确定,所述左侧差值为,第一方左侧节点临时标签值之和与第二方左侧节点临时标签值之和的差值;所述右侧标签因子,基于右侧差值以及刺穿节点所在侧而确定,所述右侧差值为,第一方右侧节点临时标签值之和与第二方右侧节点临时标签值之和的差值。
20.根据一个实施例,利用所述修正因子修正各个节点的临时标签值具体包括:对于第j层中任意的第一节点,利用其父节点的第二标签值和所述第一标签因子,修正所述临时标签值,得到该第一节点的第一标签值;根据所述第一节点所在侧,从所述左侧标签因子和右侧标签因子中选择对应因子,利用所述父节点的第二标签值和所选择的对应因子,修正所述临时标签值,得到该第一节点的第二标签值。
21.根据一种实施方式,确定输出修正值,具体包括:计算各个叶节点的第一标签值之和,作为本方的标签和值;利用本方的标签和值和所述预定值β的本方分片,与对方的标签和值和所述预定值β的对方分片进行第二安全计算,得到输出修正值,其中,所述输出修正值等于,第一方的标签和值减去第二方的标签和值,再减去所述预定值β的结果。
22.根据第二方面,提供了一种进行安全计算的方法,所述安全计算使用分布式点函数,该函数用于将预设整数α映射为k比特整数环中的预定值β;所述双方包括第一方和第二方,该方法通过双方中的任一方执行,包括:
23.获取根据第一方面的方法生成的计算密钥,其中包括根节点的标签值,二叉树各个层的修正因子,和输出修正值;
24.获取输入整数;
25.将所述输入整数映射到所述二叉树的叶节点层中的目标叶节点,并确定从根节点到目标叶节点在各层经过的目标节点;
26.根据所述根节点的标签值,各个层的修正因子,逐层计算各层目标节点的标签值,直到确定出所述目标叶节点的第一标签值和第二标签值;
27.根据所述目标叶节点的第一标签值,第二标签值,所述输出修正值,确定本方输出分片,所述本方输出分片用于与对方的输出分片组合,作为所述分布式点函数针对所述输入整数的输出值。
28.根据一种实施方式,逐层计算各层目标节点的标签值,具体包括:对于第j层中的目标节点,根据其父节点的标签值,生成该目标节点的临时标签值;利用该第j层的修正因子修正该目标节点的临时标签值,得到目标节点的第一标签值和第二标签值。
29.进一步的,在一个实施例中,所述修正因子包括,第一标签因子,左侧标签因子和右侧标签因子;利用该第j层的修正因子修正该目标节点的临时标签值,具体包括:利用所述父节点的第二标签值和所述第一标签因子,修正所述临时标签值,得到该目标节点的第一标签值;根据所述目标节点所在侧,从所述左侧标签因子和右侧标签因子中选择对应因子,利用所述父节点的第二标签值和所选择的对应因子,修正所述临时标签值,得到该目标节点的第二标签值。
30.在一个例子中,当所述任一方为第一方时,确定本方输出分片,包括:计算所述目标叶节点的第二标签值与所述输出修正值的乘积,将所述目标叶节点的第一标签值和所述乘积在所述k比特整数环中的和值,确定为本方输出分片;
31.当所述任一方为第二方时,确定本方输出分片,包括:计算所述目标叶节点的第二标签值与所述输出修正值的乘积,将所述目标叶节点的第一标签值和所述乘积在所述k比特整数环中的和值的相反数,确定为本方输出分片。
32.根据第三方面,提供了一种双方联合生成安全计算密钥的装置,所述安全计算使用分布式点函数,该函数用于将预设整数α映射为k比特整数环中的预定值β;该预设整数α和预定值β均以分片形式分布于双方之中,所述双方包括第一方和第二方,所述装置部署在双方中的任一方,包括:
33.初始化单元,配置为生成二叉树,并初始化根节点的标签值;
34.标签赋值单元,配置为逐层对所述二叉树进行标签赋值处理,其中包括:
35.临时标签生成模块,配置为对于第j层各个节点,根据其父节点的标签值,生成该节点的临时标签值;
36.修正因子确定模块,配置为基于所述临时标签值和所述预设整数α的本方分片,通过与对方提供的对应数据进行第一安全运算,确定该第j层对应的修正因子;
37.标签修正模块,配置为利用所述修正因子修正各个节点的临时标签值,得到各个节点的第一标签值和第二标签值,使得:对于刺穿节点,第一方与第二方分别得到的第二标签值之差为常数c,对于非刺穿节点,双方的第一标签值和第二标签值对应相同;所述刺穿节点是从根节点到刺穿叶节点所经过的节点,所述刺穿叶节点是索引编号对应于所述预设整数α的叶节点;
38.输出修正确定单元,配置为基于各个叶节点的第一标签值和所述预定值β的本方
分片,通过与对方提供的对应数据进行第二安全计算,确定输出修正值;
39.密钥生成单元,配置为生成计算密钥,其中包括根节点的标签值,各个层的修正因子,和所述输出修正值。
40.根据第四方面,提供了一种进行安全计算的装置,所述安全计算使用分布式点函数,该函数用于将预设整数α映射为k比特整数环中的预定值β;所述双方包括第一方和第二方,该装置部署在双方中的任一方,包括:
41.密钥获取单元,配置为获取根据权利要求13的装置生成的计算密钥,其中包括根节点的标签值,二叉树各个层的修正因子,和输出修正值;
42.输入获取单元,配置为获取输入整数;
43.目标节点确定单元,配置为将所述输入整数映射到所述二叉树的叶节点层中的目标叶节点,并确定从根节点到目标叶节点在各层经过的目标节点;
44.标签值确定单元,配置为根据所述根节点的标签值,各个层的修正因子,逐层计算各层目标节点的标签值,直到确定出所述目标叶节点的第一标签值和第二标签值;
45.输出确定单元,配置为根据所述目标叶节点的第一标签值,第二标签值,所述输出修正值,确定本方输出分片,所述本方输出分片用于与对方的输出分片组合,作为所述分布式点函数针对所述输入整数的输出值。
46.根据第五方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一或第二方面的方法。
47.根据本说明书实施例提供的方法和装置,第一方和第二方共同实现k比特整数环中的分布式点函数运算。在离线阶段,双方各自构建相同树结构的二叉树,通过双方共同确定修正因子并利用修正因子对节点标签值进行修正,确保双方树节点标签满足以下不变量关系:对于非刺穿节点,双方标签值相等;对于刺穿节点,第一方与第二方分别得到的标签值中的第二部分标签值之差为常数。各方基于本方根节点标签值,各层修正因子和输出修正值,得到本方密钥。基于得到的密钥,双方可以针对在线输入的整数进行运算,从而共同实现基于分布式点函数的安全计算。这样的安全计算可以生成业务所需要的k比特整数环中的输出结果,这样的输出结果有利于后续安全计算的高效执行。
附图说明
48.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
49.图1示出根据一个实施例的安全计算方案的示意图;
50.图2示出在一个实施例中双方联合生成安全计算密钥的方法流程图;
51.图3示出在一个具体例子中,含有刺穿节点的二叉树的示意图;
52.图4示出根据一个实施例进行安全计算的方法流程;
53.图5示出在一个具体例子中目标节点示意图;
54.图6示出根据一个实施例的生成安全计算密钥的装置示意图;
55.图7示出根据一个实施例的进行安全计算的装置示意图。
具体实施方式
56.下面结合附图,对本说明书提供的方案进行描述。
57.如前所述,出于隐私保护中加强安全性的考虑,提出多种安全计算协议,用于在不同的场景中,实现多方安全建模和预测,从而进行联合风控和联合业务预测。
58.具体的,在多种联合进行业务预测的场景中,两方安全地计算乘法是一个很普遍的计算任务。这里的乘法有矩阵和矩阵之间的乘法、矩阵和向量之间的乘法、数和向量之间的乘法和数和数之间的乘法等情形。在两方安全计算数和数的乘法场景中,一方p0拥有a∈r,另一方p1拥有b∈r,两方要计算c=ab,使得最终p0得到c_0,p1得到c_1,满足c_0 c_1=c,而两方都不知道c。其中,双方各自拥有的a和b,可以是隐私数据,例如用户敏感信息,需保密的模型中的参数,等等。利用预计算的乘法三元组可以高效计算c。两方安全地生成乘法三元组可以通过健忘线性函数计算(oblivious linear

function evaluation,ole)协议实现。
59.健忘线性函数计算ole协议,又称为不经意线性函数计算协议,是一种安全的两方计算协议,允许接收方(alice)获得其持有秘密关于发送方(bob)数据的一个线性组合。具体为,假设bob拥有有限域元素u和v,alice持有秘密元素x。通过该协议,最终alice获得到值w,满足w=ux v。协议的安全性保证整个协议执行后,alice没有获得任何关于u和v的信息,bob没有获得任何关于x的信息。使用ole协议,可以使得双方安全生成乘法三元组,例如一方获得(u1、v1、w1),另一方获得(u2、v2、w2),满足(u1 u2)*(v1 v2)=(w1 w2),从而便于双方在线进行安全乘法运算。
60.典型地,可以通过分布式点函数来实现ole协议。下面对点函数和分布式点函数进行简单的介绍说明。
61.点函数:设函数的定义域为i,值域为g。点函数是一种定义在上述定义域和值域的特殊的函数,满足在定义域中有且仅有一个点映射到值域中一个固定的值,定义域中的所有其他点映射到值域中的零元素。更具体地,设f
α,β
(x)是点函数,α∈i,β∈g,则:
[0062][0063]
分布式点函数:在安全多方计算场景中,有时候一个点函数是由参与协议的两方共同确定的,且其中任何一方都不能完全知道点函数的具体定义(除了公开的定义域和值域)。例如在一个安全多方计算场景中,对于点函数f
α,β
(x):i

g,两方都只知道α和β的一个分片(设α=α0 α1,p0只知道α0,p1只知道α1;β类似),而不知道完整的α和β,从而任何一方不知道完整的f
α,β
(x)。
[0064]
另一方面,在多种安全计算平台中,数据的运算是基于环代数结构进行的。环是密码学中很普遍的一种代数结构,一个环r的定义包含环中所有元素的集合、加法运算、乘法运算三部分,其满足:(1)所有元素的集合和加法运算定义一个交换群,即满足封闭性、结合律、含单位元、每个元素存在逆元、加法运算可交换;(2)所有元素的集合和乘法运算定义一个半群,即满足封闭性。(3)乘法运算相对于加法运算满足分配律。例如所有整数的集合z以及通常理解的代数加法运算和乘法运算组成一个环。
[0065]
可以理解,实践中,为了高效计算的需要,计算平台中的数据往往是一定位数的比特串的形式,因此,在多种安全计算平台中,数据的运算是基于环代数结构进行,其中,所有元素属于[0,2
k
),即不超过k比特,加法运算基于对2
k
取模得到。
[0066]
尽管已有一些方案,可以通过分布式点函数实现ole协议,但是已有方案输出的结果往往不能满足安全计算平台所需的环代数结构,特别是代数结构。因此,需要一种改进的方案,能够支持用ole协议生成实际业务中可高效计算的、环中的乘法三元组,从而高效进行多方安全计算。
[0067]
图1示出根据一个实施例的安全计算方案的示意图。该安全计算涉及第一方p0和第二方p1,双方需要共同构建分布式点函数f
α,β
(x),该分布式点函数用于将预设整数α映射为环中预定值β。预先,双方各自仅持有预设整数α和预定值β的一个分片,即第一方p0持有(α0,β0),第二方p1持有(α1,β1)。为了实现分布式点函数的运算,在准备阶段或离线阶段,双方需要共同计算出函数计算所需的密钥k0和k1。
[0068]
具体的,如图1所示,在离线阶段,双方各自构建相同树结构的二叉树,初始化根节点。定义刺穿节点为二叉树从根节点到最后一层第α个叶子节点所经过路径上的所有节点。刺穿节点的具体位置,双方均无法获知;但是,双方在逐层为树中节点标签赋值过程中,通过安全计算,共同确定出修正因子,通过修正因子的修正,可以确保双方树节点标签满足以下不变量关系:对于非刺穿节点,双方标签值相等;对于刺穿节点,第一方与第二方分别得到的标签值中的第二部分标签值之差为常数。双方还基于叶节点标签值以及β的分片,得到输出修正值。于是,各方p0和p1分别基于本方根节点标签值,各层修正因子和输出修正值,得到本方密钥k0和k1。
[0069]
于是,在在线阶段,双方可以利用离线阶段确定好的密钥k0和k1,进行分布式点函数的联合计算。具体的,第一方p0和第二方p1各自接收到当前输入整数x,利用各自的密钥,沿着各自的二叉树,计算第x个叶节点的标签值,根据该标签值和输出修正值,利用约定方式得到各自的输出分片v0和v1。预先计算的输出修正值,以及上述约定方式可以确保,如果输入整数x等于α,则两方输出分片之和为β;如果输入整数不等于α,则两方输出分片之和为零。如此,实现了适于环结构的分布式点函数的计算。
[0070]
下面描述以上发明构思的详细实现过程。
[0071]
图2示出在一个实施例中双方联合生成安全计算密钥的方法流程图。需要理解的是,第一方p0和第二方p1可以是需要进行安全计算的任何实体,例如,第一方p0为拥有用户隐私数据的银行或支付平台,第二方p1为拥有训练好的模型数据的模型拥有方;或者,第一方p0和第二方p1各自拥有部分隐私数据和部分模型数据。并且,应理解,第一方和第二方,均可以通过任何具有计算、处理能力的设备、装置、平台、设备集群来实现。
[0072]
前述安全计算是基于分布式点函数f
α,β
(x)的计算,该分布式点函数的定义域为整数环z,值域为k比特整数环该函数具体用于将定义域中的预设整数α映射为值域中的预定值β,即,预先地,双方各自持有预设整数α和预定值β的一个分片,即第一方p0持有(α0,β0),第二方p1持有(α1,β1)。假定α有n比特,记为α=(α
(1)

α
(n)
)2,那么双方持有的α的分片也可以对应写成:
[0073]
为了生成安全计算使用的密钥,首先,在步骤21,双方各自生成二叉树,并初始化根节点的标签值。
[0074]
双方生成的二叉树具有预定的、相同的树结构,该树结构确保,二叉树的叶节点可以容纳分布式函数定义域中的所有取值可能。具体的,假定分布式点函数的定义域为包含m个元素的整数环;那么二叉树的叶节点层至少包括对应于m个元素的m个叶节点。可以假定二叉树有n层,则2
n
大于等于m。在一个实施例中,在2
n
大于m的情况下,可以对该树结构进行“剪枝”,裁减掉叶节点层中前m个节点之外的节点;或者,也可以将前m个节点之后的节点设置为空节点。
[0075]
该二叉树中每个节点具有标签,标签分为两部分,第一标签s和第二标签t。下文中,用的形式分别表示第一标签和第二标签的标签值,其中下角标b指示执行方,b=0表示第一方p0,b=1表示第二方p1,上角标表示第j层第l个节点(j,l)。
[0076]
双方在生成二叉树的树结构后,各自为其二叉树的根节点进行标签赋值,也就是对根节点标签值进行初始化。为保证双方树之间具有前述的不变量关系,对于根节点,每一方随机生成比特串,作为根节点的第一标签值;并根据约定方式,将约定好的固定值赋值给根节点的第二标签值;该约定方式确保,第一方的固定值与第二方的固定值之差为前述常数c。典型的,该常数c取

1。下文的具体例子均结合c=

1的情况描述,之后探讨c取其他值的情况。
[0077]
具体的,双方初始化根节点标签值的过程可以如下进行。
[0078]
第一方p0选取随机比特串作为根节点第一标签值将第二标签值设定为固定串第二方p1选取随机比特串作为其根节点第一标签值并将第二标签值设定为固定串其中,λ为系统预设参数,满足λ≥k。典型的,λ≥128。很显然,对于根节点,双方第一标签值互相独立,第二标签值满足不变量关系:t0‑
t1=

1。
[0079]
接着,在步骤22,第一方和第二方,逐层对各自的二叉树进行标签赋值处理。下面,结合任意的第j层,j为从第1层(根节点为第0层)到第n层的任意一层,描述标签赋值的具体处理过程。
[0080]
首先在步骤221,各方对于其第j层各个节点,根据其父节点的标签值,生成该节点的临时标签值。具体的,对于第j层中任意的一个节点,称为第一节点,根据该第一节点的父节点的第一标签值,利用约定的伪随机生成器g生成对应的伪随机值,作为该第一节点的临时标签值。
[0081]
更具体地,第一方p0,将j

1层的任意第i个节点(j

1,i)作为父节点,对其第一标签值其施加约定的伪随机生成器g,得到两个随机值,第一个作为左侧子节点(j,2i)的临时标签值,临时赋值给左侧子节点的第一标签和第二标签;第二个作为右侧子节点的临时标签值,临时赋值给右侧子节点的第一标签和第二标签。即:
[0082][0083]
[0084]
其中,为根据生成的第一个随机值,也是左侧子节点的临时标签值,为第二个随机值,也是右侧子节点的临时标签值。
[0085]
在一个具体例子中,父节点的第一标签值为λ位的比特串。当将λ位的比特串输入到上述伪随机生成器g,该算法输出2λ位的伪随机比特串。可以将该2λ位的比特串拆分为两个λ位的比特串,分别作为左右子节点的临时标签值。如此,第j层各个节点具有了临时标签值。
[0086]
第二方p1的处理过程相似:
[0087][0088][0089]
从而,第一方和第二方,各自为其第j层各个节点赋予了临时标签值。
[0090]
然后,在步骤222,双方基于本方得到的临时标签值和前述预设整数α的本方分片,通过与对方提供的对应数据进行第一安全运算,共同确定该第j层对应的修正因子。
[0091]
为此,双方中的每一方,对其第j层左侧节点和右侧节点的临时标签值分别进行求和,得到左侧和值和右侧和值。
[0092]
即,第一方p0计算其第j层的左侧和值和右侧和值
[0093][0094]
第二方p1计算其第j层的左侧和值和右侧和值
[0095][0096]
然后,第一方利用自身计算的左侧和值右侧和值和预设整数α的第一分片α0,第二方利用自身计算的左侧和值右侧和值和预设整数α的第二分片α1,双方进行安全运算,得到该第j层对应的修正因子。
[0097]
具体而言,修正因子包括,第一标签因子σ
j
,左侧标签因子τ
j,0
和右侧标签因子τ
j,1
,其定义如下:
[0098][0099][0100][0101]
其中,α
(j)
是将前述预定整数α写为n比特串α=(α
(1)

α
(n)
)2时,其中第j个元素。
[0102]
当将叶节点层中索引编号对应于α的叶节点定义为刺穿叶节点,那么在二叉树中从根节点到该刺穿叶节点形成一条路径,该路径可称为刺穿路径,该刺穿路径所途径或覆盖的所有节点均构成刺穿节点,包括根节点和刺穿叶节点。上述预定整数α对应的n位比特串,即指示了从根节点开始,在每层向左侧(对应比特值0)还是右侧(对应比特值1)进入下一层,最终达到第α个叶节点的刺穿路径,相应的,α
(j)
可以理解为,第j层刺穿节点的左右侧的指示。
[0103]
由此可见,上述第一标签因子σ
j
指示,在刺穿节点的另一侧(即),第一方临时标签值之和与第二方临时标签值之和的差值;
[0104]
上述左侧标签因子τ
j,0
,基于左侧差值以及刺穿节点所在侧α
(j)
而确定,该左侧差值为,第一方左侧节点临时标签值之和与第二方左侧节点临时标签值之和的差值;
[0105]
上述右侧标签因子τ
j,1
,基于右侧差值以及刺穿节点所在侧α
(j)
而确定,所述右侧差值为,第一方右侧节点临时标签值之和与第二方右侧节点临时标签值之和的差值。
[0106]
需要说明的是,第一方和第二方各方仅持有α的分片,因此,各方均无法知晓各层刺穿节点的确切位置。但是,基于各自持有的α的分片,以及前述左侧和值和右侧和值,双方可以通过安全多方计算mpc方式,计算得到上述修正因子。上述安全多方计算mpc可以确保,双方均可以获得上述修正因子的计算结果,但是均无法获知对方的原始数据,也无法获知刺穿节点的具体位置信息。
[0107]
然后,在步骤223,基于共同得到的修正因子,双方中的每一方,利用修正因子修正各个节点的临时标签值,得到各个节点的第一标签值和第二标签值,使得:对于刺穿节点,第一方与第二方分别得到的第二标签值之差为常数c,对于非刺穿节点,双方的第一标签值和第二标签值对应相同。
[0108]
具体地,双方中的任一方,对于第j层中任意的一个节点,记为第一节点i,利用其父节点的第二标签值t和前述第一标签因子σj,修正临时标签值,得到该第一节点的第一标签值;根据该第一节点i所在侧,从所述左侧标签因子τ
j,0
和右侧标签因子τ
j,1
中选择对应因子,利用所述父节点的第二标签值t和所选择的对应因子,修正所述临时标签值,得到该第一节点的第二标签值。
[0109]
在一个具体例子中,第一方p0,通过以下式(4)修正其第一标签值,通过式(5)修正其第二标签值:
[0110][0111][0112]
其中,表示向下取整,因此,表示第j层第i个节点的父节点,表示父节点的第二标签值。lsb(i)表示i的最低比特位,此处等效于指示第i个节点的奇偶,即左右侧指示。也就是说,如果第i个节点位于左侧(lsb(i)=0),选择左侧标签因子τ
j,0
进行修正,如果第i个节点位于右侧(lsb(i)=1),选择右侧标签因子τ
j,1
进行修正。
[0113]
类似的,第二方p1通过以下式(6)修正其第一标签值,通过式(7)修正其第二标签值:
[0114][0115][0116]
下面证明,通过以上修正因子的修正,可以确保双方二叉树的各层节点标签值满足前述不变量关系:对于刺穿节点,第一方与第二方的第一标签值各自独立,第二标签值之差为常数

1,对于非刺穿节点,双方的第一标签值和第二标签值对应相同。
[0117]
图3示出在一个具体例子中,含有刺穿节点的二叉树的示意图。其中,刺穿节点以
灰色示出。
[0118]
如前所述,根节点也是刺穿节点,通过步骤21的根节点标签初始化,很显然,对于根节点,双方第一标签值互相独立,第二标签值满足:t0‑
t1=

1。因此,二叉树的第0层,即根节点层,满足上述不变量关系。
[0119]
下面我们证明,当第j

1层已经满足上述不变量关系的情况下,通过上述修正过程,第j层必然也满足上述不变量关系。
[0120]
具体的,第j层节点可以划分为,常规节点,刺穿节点,以及刺穿节点的“配对节点”,其中“配对节点”是与刺穿节点共享同一父节点的节点。例如,在图3中,对于j=2层,共有4个节点,编号为从0到3,i=0和1对应于常规节点,i=2对应于刺穿节点,i=3对应于配对节点。对于j=3层,共有8个节点,节点编号为从0到7;其中i=5对应于刺穿节点,i=4对应于配对节点,其他节点为常规节点。下面结合图3的示例分别进行说明。
[0121]
对于常规节点i,其j

1层的父节点必然也是常规节点,由于第j

1层已经满足上述不变量关系,则第一方和第二方对于该父节点的标签值相同。如此,第一方和第二方针对该节点i生成的临时标签值相同;比对公式(4)(5)以及公式(6)(7),双方修正的方式也相同,因此,在节点i临时标签值相同,父节点的第二标签值也相同的情况下,得到的第一标签值和第二标签值必然分别对应相等。
[0122]
如果节点i为刺穿节点,那么其父节点必为刺穿节点,因此有:如果节点i为刺穿节点,那么其父节点必为刺穿节点,因此有:
[0123]
那么经过修正,双方求得的刺穿节点i的第二标签值之差可以如下计算:
[0124][0125]
当刺穿节点i为左侧节点,例如,j=2层的刺穿节点i=2;有lsb(i)=0,α
(j)
=0,那么上式可以继续写为:
[0126][0127]
其中最后一步利用了,双方同侧的其他节点均为常规节点,而常规节点的标签值相等,因此,
[0128]
当刺穿节点i为右侧节点,例如,j=3层的刺穿节点i=5;有lsb(i)=1,α
(j)
=1,那么上式可以继续写为:
[0129][0130]
因此,对于刺穿节点i,有即,第一方的第二标签值与第二方的第二标签值之差恒为常数

1。双方的第一标签值各自独立。
[0131]
如果节点i为配对节点,那么其本身不是刺穿节点,但是其父节点为刺穿节点,因此有:
[0132]
那么经过修正,双方求得的配对节点i的第一标签值之差可以如下计算:
[0133][0134]
其中,为刺穿节点的相对侧,即配对节点这一侧,因此,最后一个等号成立。
[0135]
此外,双方求得的配对节点i的第二标签值之差可以如下计算:
[0136][0137]
当配对节点i为左侧节点,例如,j=3层的配对节点i=4;有lsb(i)=0,α
(j)
=1,那么上式可以继续写为:
[0138][0139]
当配对节点i为右侧节点,例如,j=2层的配对节点i=3;有lsb(i)=1,α
(j)
=0,那么上式可以继续写为:
[0140][0141]
因此,对于配对节点,双方的第一标签值和第二标签值均对应相等。
[0142]
如此证明了,通过上述修正因子的修正,双方二叉树的各层节点标签值均满足不变量关系:对于刺穿节点,第一方与第二方的第一标签值各自独立,第二标签值之差为常数

1,对于非刺穿节点,双方的第一标签值和第二标签值对应相同。
[0143]
以上论证均基于常数c=

1进行。当该常数c取其他值,例如c=

w,其中w为正整数,此时只需对修正公式(4)

(7)中临时标签值乘以系数w即可。例如,对于b方来说,可以通过以下式子修正其标签值:
[0144][0145][0146]
可以类似验证,通过上述修正,双方二叉树中,刺穿节点的第二标签值之差为常


w,非刺穿节点的标签值相同。
[0147]
以上确定临时标签值、确定修正因子,进行修正的过程,逐层进行,直到二叉树的叶节点层。从而,各个叶节点也被赋予了第一标签值和第二标签值。
[0148]
回到图2,在逐层执行步骤22之后,继续执行步骤23,第一方和第二方的每一方,基于各个叶节点的第一标签值和预定值β的本方分片,通过与对方提供的对应数据进行第二安全计算,确定输出修正值γ。
[0149]
具体地,第一方计算各个叶节点的第一标签值之和,作为第一方的标签和值;第二方同样计算其各个叶节点的第一标签值之和,作为第二方的标签和值。然后,第一方利用第一方的标签和值和前述预定值β的第一分片β0,第二方利用第二方的标签和值和预定值的第二分片β1,双方进行第二安全计算,得到输出修正值γ,使得,所述输出修正值等于,第一方的标签和值减去第二方的标签和值,再减去所述预定值β的结果,即:
[0150][0151]
接着,在步骤24,每一方生成本方的计算密钥,其中包括根节点的标签值,各个层的修正因子,和上述输出修正值γ。
[0152]
具体的,第一方生成密钥第二方生成密钥
[0153]
在以上密钥形式中,由于根节点的第二标签值是预设的固定值,因此在密钥中仅包含了根节点的第一标签值s。在其他例子中,也可以将根节点的第二标签值也包含在密钥中。
[0154]
如此,通过以上图2所示的方法流程,第一方和第二方各自生成了安全计算所用的密钥。上述过程可以在预备阶段离线进行。在生成密钥之后,双方就可以针对在线输入,利用上述密钥进行安全计算。
[0155]
图4示出根据一个实施例进行安全计算的方法流程,该安全计算使用分布式点函数f
α,β
(x),该函数用于将预设整数α映射为k比特整数环中的预定值β。其中,预设整数α和预定值β均以分片形式存储于双方之中。双方包括第一方和第二方,各方已经通过图2的方法过程生成了密钥。下面描述如图4所示双方进行安全计算的具体过程。第一方和第二方的每一方,均可以按照图4的流程进行安全计算。
[0156]
在步骤41,获取根据图2的方法生成的计算密钥,其中包括本方根节点的标签值,二叉树各个层的修正因子,和输出修正值。
[0157]
具体的,第一方p0获取预先生成的密钥第二方p1获取预先生成的密钥
[0158]
在步骤42,获取输入整数x。需理解,该输入整数x是定义域,即整数环z中的一个元素。第一方和第二方都会获取到该输入整数。
[0159]
然后,在步骤43,各方将输入整数x映射到二叉树的叶节点层中的目标叶节点,并确定从根节点到目标叶节点在各层经过的目标节点。
[0160]
如前所述,假定分布式点函数的定义域整数环包含m个元素,那么二叉树的叶节点
层包括对应于m个元素的m个叶节点。如此,可将当前输入整数x映射为m个叶节点之一,作为目标叶节点。在二叉树中,从根节点到该目标叶节点经过的路径上所覆盖的各层节点,均作为目标节点。
[0161]
图5示出在一个具体例子中目标节点示意图。在图5中,目标节点用斜线阴影示出。可以看到,在叶节点层中的目标叶节点对应于输入整数x。从根节点到该目标叶节点,形成一条目标路径,目标路径上各个节点即为各层的目标节点。
[0162]
然后,在步骤44,第一方和第二方的每一方,根据密钥中根节点的标签值,各个层的修正因子,逐层计算各层目标节点的标签值,直到确定出目标叶节点的第一标签值和第二标签值。
[0163]
具体的,对于第j层中的目标节点,每一方可以根据其父节点(上一层的目标节点)的标签值,生成该目标节点的临时标签值;然后,利用密钥中包含的该第j层的修正因子修正该目标节点的临时标签值,得到目标节点的第一标签值和第二标签值。
[0164]
如密钥中所示,第j层修正因子包括,第一标签因子σ
j
,左侧标签因子τ
j,0
和右侧标签因子τ
j,1
;修正的方式如前述公式(4)

(7)所示,或者如(8)

(9)所示,其中,利用父节点的第二标签值和第一标签σ
j
,修正临时标签值,得到该目标节点的第一标签值;根据该目标节点所在侧,从所述左侧标签因子和右侧标签因子中选择对应因子,利用父节点的第二标签值和所选择的对应因子,修正所述临时标签值,得到该目标节点的第二标签值。
[0165]
如此,从第1层开始,逐层计算,直到叶节点层,确定出目标叶节点的第一标签值和第二标签值。
[0166]
然后,在步骤45,各方根据求得的目标叶节点的第一标签值,第二标签值,以及密钥中包含的输出修正值γ,确定本方输出分片,两方的输出分片如果组合起来,等于分布式点函数针对所述输入整数x的输出值。
[0167]
具体地,在一个实施例中,第一方p0计算本方目标叶节点(第n层编号为x的节点)的第二标签值与输出修正值γ的乘积,将所述目标叶节点的第一标签值和乘积在k比特整数环中的和值,确定为第一方输出分片v0,即:
[0168]
第二方p1计算本方目标叶节点的第二标签值与输出修正值γ的乘积,将该目标叶节点的第一标签值和所述乘积在k比特整数环中的和值的相反数,确定为第二方输出分片v1,即:
[0169]
可以设想,如果当前输入整数x≠α,则目标叶节点不是刺穿节点,那么双方的标签值相等,因此显然,v0 v1=0。
[0170]
如果当前输入整数恰好为α,即x=α,则目标叶节点恰好为刺穿节点,于是有从而双方分片之和可以写为:
[0171][0172]
最后一个步骤,利用了在叶节点层,除刺穿叶节点外,其他节点的两方标签值相同,因此
[0173]
在另一实施例中,当生成密钥过程中,二叉树刺穿节点间的不变量关系为在另一实施例中,当生成密钥过程中,二叉树刺穿节点间的不变量关系为时,则需在前述v0和v1中,在第一标签值前乘以系数w即可。
[0174]
如此,根据生成密钥过程中二叉树中两方节点标签值的不变量关系,确保了在输入整数x不等于预设整数α时,双方分片之和为0;在输入整数等于α时,双方分片之和为β,从而实现了分布式点函数的运算过程。
[0175]
在一个实施例中,双方直接将各自的输出分片,作为安全计算的结果。具体的,第一方p0将第一输出分片v0,第二方将第二输出分片v1,作为安全计算的结果。
[0176]
在另一实施例中,双方通过各自的输出分片实现分布式点函数,并通过该分布式点函数执行ole协议,进而生成用于乘法三元组的数据元组。换而言之,双方利用各自的输出分片,生成进一步的安全计算的数据元组,从而便于进行该进一步安全计算,例如,双方安全乘法,等等。各种基于数据元组的安全计算协议,广泛应用于联合机器学习的隐私保护场景,在此不再一一举例。
[0177]
综合以上,在本说明书的实施例中,第一方和第二方共同实现k比特整数环中的分布式点函数运算。在离线阶段,双方各自构建相同树结构的二叉树,通过双方共同确定修正因子并利用修正因子对节点标签值进行修正,确保双方树节点标签满足以下不变量关系:对于非刺穿节点,双方标签值相等;对于刺穿节点,第一方与第二方分别得到的标签值中的第二部分标签值之差为常数。各方基于本方根节点标签值,各层修正因子和输出修正值,得到本方密钥。基于得到的密钥,双方可以针对在线输入的整数进行运算,从而共同实现基于分布式点函数的安全计算。这样的安全计算可以生成业务所需要的k比特整数环中的输出结果,这样的输出结果有利于后续安全计算的高效执行。
[0178]
根据另一方面的实施例,还提供了一种双方联合生成安全计算密钥的装置,所述安全计算使用分布式点函数,该函数用于将预设整数α映射为k比特整数环中的预定值β;该预设整数α和预定值β均以分片形式分布于双方之中,所述双方包括第一方和第二方,第一方和第二方均可以实现为任何具有计算、处理能力的设备或平台。图6示出根据一个实施例的生成安全计算密钥的装置示意图,该装置可部署在第一方和第二方的任一方中。如图6所示,该装置600包括:
[0179]
初始化单元61,配置为生成二叉树,并初始化根节点的标签值;
[0180]
标签赋值单元62,配置为逐层对所述二叉树进行标签赋值处理,其中包括:
[0181]
临时标签生成模块621,配置为对于第j层各个节点,根据其父节点的标签值,生成该节点的临时标签值;
[0182]
修正因子确定模块622,配置为基于所述临时标签值和所述预设整数α的本方分片,通过与对方提供的对应数据进行第一安全运算,确定该第j层对应的修正因子;
[0183]
标签修正模块623,配置为利用所述修正因子修正各个节点的临时标签值,得到各个节点的第一标签值和第二标签值,使得:对于刺穿节点,第一方与第二方分别得到的第二标签值之差为常数c,对于非刺穿节点,双方的第一标签值和第二标签值对应相同;所述刺穿节点是从根节点到刺穿叶节点所经过的节点,所述刺穿叶节点是索引编号对应于所述预设整数α的叶节点;
[0184]
输出修正确定单元63,配置为基于各个叶节点的第一标签值和所述预定值β的本方分片,通过与对方提供的对应数据进行第二安全计算,确定输出修正值;
[0185]
密钥生成单元64,配置为生成计算密钥,其中包括根节点的标签值,各个层的修正因子,和所述输出修正值。
[0186]
在一个实施例中,所述分布式点函数的定义域为包含m个元素的整数环;所述二叉树的叶节点层至少包括对应于所述m个元素的m个叶节点。
[0187]
根据一种实施方式,初始化单元61具体配置为:随机生成第一比特串,作为根节点的第一标签值;根据约定方式,将固定值赋值给根节点的第二标签值;其中,所述约定方式确保,第一方的固定值与第二方的固定值之差为所述常数c。
[0188]
在一个实施例中,所述临时标签生成模块621配置为:对于第j层中任意的第一节点,根据该第一节点的父节点的第一标签值,利用伪随机生成器生成对应的伪随机值,作为该第一节点的临时标签值。
[0189]
根据一种实施方式,修正因子确定模块622具体配置为:对第j层左侧节点和右侧节点的临时标签值分别进行求和,得到左侧和值和右侧和值;利用所述左侧和值、右侧和值和所述预设整数α的本方分片,与对方提供的对应和值以及所述预设整数α的对方分片,进行所述第一安全运算,得到该第j层对应的修正因子。
[0190]
在一个实施例中,所述修正因子包括,第一标签因子,左侧标签因子和右侧标签因子;其中:第一标签因子指示,在所述刺穿节点的另一侧,第一方临时标签值之和与第二方临时标签值之和的差值;所述左侧标签因子,基于左侧差值以及刺穿节点所在侧而确定,所述左侧差值为,第一方左侧节点临时标签值之和与第二方左侧节点临时标签值之和的差值;所述右侧标签因子,基于右侧差值以及刺穿节点所在侧而确定,所述右侧差值为,第一方右侧节点临时标签值之和与第二方右侧节点临时标签值之和的差值。
[0191]
根据一种实施方式,所述标签修正模块623配置为:对于第j层中任意的第一节点,利用其父节点的第二标签值和所述第一标签因子,修正所述临时标签值,得到该第一节点的第一标签值;根据所述第一节点所在侧,从所述左侧标签因子和右侧标签因子中选择对应因子,利用所述父节点的第二标签值和所选择的对应因子,修正所述临时标签值,得到该第一节点的第二标签值。
[0192]
在一个实施例中,输出修正确定单元63配置为:计算各个叶节点的第一标签值之和,作为本方的标签和值;利用本方的标签和值和所述预定值β的本方分片,与对方的标签和值和所述预定值β的对方分片进行第二安全计算,得到输出修正值,其中,所述输出修正值等于,第一方的标签和值减去第二方的标签和值,再减去所述预定值β的结果。
[0193]
根据又一方面的实施例,还提供了一种进行安全计算的装置,所述安全计算使用
分布式点函数,该函数用于将预设整数α映射为k比特整数环中的预定值β;所述双方包括第一方和第二方,第一方和第二方均可以实现为任何具有计算、处理能力的设备或平台。图7示出根据一个实施例的进行安全计算的装置示意图,该装置可部署在第一方和第二方的任一方中。如图7所示,该装置700包括:
[0194]
密钥获取单元71,配置为获取计算密钥,其中包括根节点的标签值,二叉树各个层的修正因子,和输出修正值;
[0195]
输入获取单元72,配置为获取输入整数;
[0196]
目标节点确定单元73,配置为将所述输入整数映射到所述二叉树的叶节点层中的目标叶节点,并确定从根节点到目标叶节点在各层经过的目标节点;
[0197]
标签值确定单元74,配置为根据所述根节点的标签值,各个层的修正因子,逐层计算各层目标节点的标签值,直到确定出所述目标叶节点的第一标签值和第二标签值;
[0198]
输出确定单元75,配置为根据所述目标叶节点的第一标签值,第二标签值,所述输出修正值,确定本方输出分片,所述本方输出分片用于与对方的输出分片组合,作为所述分布式点函数针对所述输入整数的输出值。
[0199]
根据一种实施方式,所述标签值确定单元74配置为:对于第j层中的目标节点,根据其父节点的标签值,生成该目标节点的临时标签值;利用该第j层的修正因子修正该目标节点的临时标签值,得到目标节点的第一标签值和第二标签值。
[0200]
进一步的,在一个实施例中,所述修正因子包括,第一标签因子,左侧标签因子和右侧标签因子;相应的,标签值确定单元74具体配置为:利用所述父节点的第二标签值和所述第一标签因子,修正所述临时标签值,得到该目标节点的第一标签值;根据所述目标节点所在侧,从所述左侧标签因子和右侧标签因子中选择对应因子,利用所述父节点的第二标签值和所选择的对应因子,修正所述临时标签值,得到该目标节点的第二标签值。
[0201]
根据具体实施例,当该装置700部署在第一方时,输出确定单元75配置为:计算所述目标叶节点的第二标签值与所述输出修正值的乘积,将所述目标叶节点的第一标签值和所述乘积在所述k比特整数环中的和值,确定为本方输出分片;
[0202]
当该装置700部署在第二方时,输出确定单元75配置为:计算所述目标叶节点的第二标签值与所述输出修正值的乘积,将所述目标叶节点的第一标签值和所述乘积在所述k比特整数环中的和值的相反数,确定为本方输出分片。
[0203]
通过以上的装置,第一方和第二方可以共同实现基于分布式点函数的安全计算,且该分布式点函数可生成业务需要的k比特整数环中的结果,从而可以高效地进行后续计算,更好地保护隐私数据安全性。
[0204]
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2和图4所描述的方法。
[0205]
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2和图4所述的方法。
[0206]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0207]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步
详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜