用于不经意传输OT扩展协议的数据处理方法及装置
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种用于不经意传输OT扩展协议的数据处理方法及装置。
背景技术
盲传输(Oblivious transfer,OT)协议,又称不经意传输协议,是安全多方计算的基础技术,是一个两方协议。其具体为接收方(Receiver)与发送方(Sender)之间的交互协议。由于OT协议可以保证双方数据的安全性,从而其被广泛应用到各个领域中。然而当其应用于机器学习领域中时,由于Receiver和Sender之间通常要进行频繁的交互,比如,可能会交互10万次以上。而如果每次交互都执行OT协议,那么会大大增加计算量与通信量。为此,提出使用预先生成的OT元组,对Receiver和Sender之间传输的消息进行加解密。在使用OT元组对双方之间传输的消息进行加解密时,不仅可以保证双方数据的安全性,而且还可以大大提升双方的数据传输性能。
传统技术中,通常采用OT扩展技术来生成大量OT元组。以发送方为例来说,其生成大量OT元组的过程可以为:预先生成少量OT元组(例如1000-2000组),之后通过与接收方执行少量交互和计算,将其扩展为大量OT元组(例如10万-1000万组)。需要说明的是,在采用OT扩展技术来生成大量OT元组时,发送方和接收方之间运行OT扩展协议。OT扩展协议是指发送方和接收方各自在生成大量OT元组时所遵循的一种约定。
发明内容
本说明书一个或多个实施例描述了一种用于不经意传输OT扩展协议的数据处理方法及装置,可以大大提升OT元组的生成效率。
第一方面,提供了一种用于不经意传输OT扩展协议的数据处理方法,包括:
获取针对预定取值范围生成的ts*tp个完整秘钥;所述ts*tp个完整秘钥是在按照与所述OT扩展协议的接收方的约定,将所述预定取值范围划分为ts个取值区间之后,针对其中的每个取值区间生成一组tp个完整秘钥而得到;其中,ts和tp均为正整数;
对于位于所述预定取值范围中的待处理的目标值,确定其属于第i个取值区间;其中,i为正整数,且1≤i≤ts;
获取所述第i个取值区间对应的第i组tp个完整秘钥;
利用与所述接收方约定的刺穿运算组件,基于所述目标值以及所述第i组tp个完整秘钥,在第一运算模式下进行tp次运算,得到tp个第一中间结果;其中,所述第一运算模式为所述刺穿运算组件具有的两种运算模式中用于所述发送方的运算模式;
将所述tp个第一中间结果进行融合,得到针对所述目标值的最终运算结果;所述最终运算结果用于生成所述发送方的OT元组。
第二方面,提供了一种用于不经意传输OT扩展协议的数据处理方法,包括:
获取针对预定取值范围生成的ts*tp个刺穿点;所述ts*tp个刺穿点是在按照与所述OT扩展协议的发送方的约定,将所述预定取值范围划分为ts个取值区间之后,针对其中的每个取值区间从中选取tp个数值点作为一组tp个刺穿点而得到;其中,ts和tp均为正整数;
获取对应于所述ts*tp个刺穿点的ts*tp个刺穿秘钥,其中的每个刺穿秘钥基于对应刺穿点,以及所述发送方对应生成的完整秘钥而确定;
对于位于所述预定取值范围中除所述ts*tp个刺穿点外的、待处理的目标值,确定其属于第i个取值区间;其中,i为正整数,且1≤i≤ts;
获取所述第i取值区间对应的第i组tp个刺穿秘钥;
利用与所述发送方约定的刺穿运算组件,基于所述目标值以及所述第i组tp个刺穿秘钥,在第二运算模式下进行tp次运算,得到tp个第二中间结果;其中,所述第二运算模式为所述刺穿运算组件具有的两种运算模式中用于所述接收方的运算模式;
将所述tp个第二中间结果进行融合,得到针对所述目标值的最终运算结果;所述最终运算结果用于生成所述接收方的OT元组。
第三方面,提供了一种用于不经意传输OT扩展协议的数据处理装置,包括:
获取单元,用于获取针对预定取值范围生成的ts*tp个完整秘钥;所述ts*tp个完整秘钥是在按照与所述OT扩展协议的接收方的约定,将所述预定取值范围划分为ts个取值区间之后,针对其中的每个取值区间生成一组tp个完整秘钥而得到;其中,ts和tp均为正整数;
确定单元,用于对于位于所述预定取值范围中的待处理的目标值,确定其属于第i个取值区间;其中,i为正整数,且1≤i≤ts;
所述获取单元,还用于获取所述第i个取值区间对应的第i组tp个完整秘钥;
运算单元,用于利用与所述接收方约定的刺穿运算组件,基于所述目标值以及所述第i组tp个完整秘钥,在第一运算模式下进行tp次运算,得到tp个第一中间结果;其中,所述第一运算模式为所述刺穿运算组件具有的两种运算模式中用于所述发送方的运算模式;
融合单元,用于将所述tp个第一中间结果进行融合,得到针对所述目标值的最终运算结果;所述最终运算结果用于生成所述发送方的OT元组。
第四方面,提供了一种用于不经意传输OT扩展协议的数据处理装置,包括:
获取单元,用于获取针对预定取值范围生成的ts*tp个刺穿点;所述ts*tp个刺穿点是在按照与所述OT扩展协议的发送方的约定,将所述预定取值范围划分为ts个取值区间之后,针对其中的每个取值区间从中选取tp个数值点作为一组tp个刺穿点而得到;其中,ts和tp均为正整数;
所述获取单元,还用于获取对应于所述ts*tp个刺穿点的ts*tp个刺穿秘钥,其中的每个刺穿秘钥基于对应刺穿点,以及所述发送方对应生成的完整秘钥而确定;
确定单元,用于对于位于所述预定取值范围中除所述ts*tp个刺穿点外的、待处理的目标值,确定其属于第i个取值区间;其中,i为正整数,且1≤i≤ts;
所述获取单元,还用于获取所述第i取值区间对应的第i组tp个刺穿秘钥;
运算单元,用于利用与所述发送方约定的刺穿运算组件,基于所述目标值以及所述第i组tp个刺穿秘钥,在第二运算模式下进行tp次运算,得到tp个第二中间结果;其中,所述第二运算模式为所述刺穿运算组件具有的两种运算模式中用于所述接收方的运算模式;
融合单元,用于将所述tp个第二中间结果进行融合,得到针对所述目标值的最终运算结果;所述最终运算结果用于生成所述接收方的OT元组。
第五方面,提供了一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法或第二方面的方法。
第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法或第二方面的方法。
本说明书一个或多个实施例提供的用于不经意传输OT扩展协议的数据处理方法及装置,OT扩展协议的发送方在针对目标值进行处理时,先确定该目标值所属的取值区间,之后基于该取值区间对应的一组tp个完整秘钥,利用与OT扩展协议的接收方约定的刺穿运算组件,进行tp次运算,得到tp个第一中间结果。最后通过对该tp个第一中间结果进行融合,得到针对目标值的最终运算结果。由此可以看出,本说明书的方案是通过分区间来对目标值进行运算的,由此,可以大大提升目标值的处理速度,进而可以大大提升OT扩展协议的发送方的OT元组的生成效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1a示出1-out-of-2类型OT协议;
图1b示出1-out-of-N类型OT协议;
图2为本说明书提供的基于OT扩展协议的OT元组生成过程示意图;
图3为本说明书提供的刺穿点示意图;
图4示出本说明书提供的一种PPRF组件构造方法示意图;
图5示出本说明书提供的另一种PPRF组件构造方法示意图;
图6示出本说明书提供的再一种PPRF组件构造方法示意图;
图7为本说明书一个实施例提供的用于不经意传输OT扩展协议的数据处理方法流程图;
图8示出第一生成树示意图;
图9为本说明书一个实施例提供的用于不经意传输OT扩展协议的数据处理方法流程图;
图10示出第二生成树示意图;
图11为本说明书提供的inlvdPPRF组件的性能对比示意图;
图12为本说明书一个实施例提供的用于不经意传输OT扩展协议的数据处理装置示意图;
图13为本说明书另一个实施例提供的用于不经意传输OT扩展协议的数据处理装置示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
对于前述的OT协议,按照功能,可以将其分为如下两种类型:二选一(1-out-of-2)类型和N选一(1-out-of-N)类型。图1a示出1-out-of-2类型OT协议,图1b示出1-out-of-N类型OT协议。
图1a中,Receiver的输入为选择比特b∈{0,1},Sender的输入为一对消息(m0,m1),其中m0、m1为待发送的明文消息(比如为128比特的比特串)。通过OT协议,Receiver最终可以获得mb。
显然,通过OT协议,可以满足如下两方面的安全性:(1)Receiver选择比特b的保密性,即通过OT协议,Sender不能获知Receiver选择的是哪一个消息。(2)Sender未被选择消息m1-b的保密性,即通过OT协议,Receiver只能获得(m0,m1)中的一个消息mb,不能获知另一个消息m1-b的信息。
在图1b中,通过1-out-of-N类型OT协议,Receiver可以根据自己的选择b∈{1,2,…,N}获得Sender的消息元组(m1,m2,…,mN)中的一个消息mb,但不能获知其余N-1个消息的信息。Sender不能获知Receiver选择的是哪一个消息,即不能获知Receiver选择b的信息。
在本说明书中,将主要以1-out-of-2类型OT协议为例进行描述,但同样适用于1-out-of-N类型OT协议。
事实上,OT协议的执行是一个复杂的过程。也就是说,如果Receiver和Sender只是进行少量的几次交互,那么传输量和计算量还可以接受,而如果双方之间的交互次数较多,比如,超过10万次以上,那么将会大大增加传输量和计算量。为此,本申请将基于OT扩展协议生成OT元组,并使用OT元组,对Receiver和Sender之间传输的消息进行加解密。在使用OT元组对双方之间传输的消息进行加解密时,不仅可以保证双方数据的安全性,而且还可以大大提升双方的数据传输性能。
以图1a为例来说,如果可以预先生成OT元组:(b,Sb)和(S0,S1),其中,S0和S1分别用于对明文消息m0、m1进行加密,b和Sb用于对加密后的消息m0或者m1进行解密,那么将会大大减小双方的通信成本。
具体地,对于前述例子,如果使用上述预先生成的OT元组,那么双方之间的交互过程可以为:Sender将S0与m0进行异或,得到第一异或结果。以及将S1与m1进行异或,得到第二异或结果。之后,Sender向Receiver发送该两个异或结果。如果Receiver想要获取m1,也即Sb=S1,那么其可以将Sb与第二异或结果再进行异或,也即(S1)XOR(m1)XOR(Sb)=m1,从而Receiver获取到消息m1,但无法获取到消息m0。
由此可以看出,在使用上述OT元组对Sender和Receiver之间传输的消息进行加解密时,只是执行了几次简单的异或操作,但也可以保证OT协议的两方面的安全性和正确性。
需要说明的是,由于上述OT元组由两组数据(即(b,Sb)和(S0,S1))组成,且可以保证OT协议的两方面的安全性和正确性,从而其也可以称为满足OT关系的元组。此外,由于(S0,S1)用于对发送方待发送的明文消息进行加密,从而其也可以称为发送方的OT元组。(b,Sb)用于对发送发加密后的两个消息中的一个消息进行解密,从而其也可以称为接收方的OT元组。
通常情况下,可以基于OT扩展协议来生成大量OT元组。比如,基于OT扩展协议,可以将少量OT元组(例如1000-2000组),通过少量交互和计算,扩展为大量OT元组(例如10万-1000万组)。需要说明的是,在基于OT扩展协议来生成大量OT元组时,通常会使用刺穿运算组件。在一个示例中,该刺穿运算组件可以为可刺穿的伪随机函数(puncturable pseudo-random function,PPRF)组件。
PPRF组件与一个函数F:KxX→Y的计算相关,其中K为密钥空间,X为函数的定义域,Y为函数的值域。PPRF组件在计算函数F时,有两种类型的密钥k,以及两种类型的计算模式。
第一种类型的密钥称之为完整密钥(complete key),即k。第一种计算模式使用完整密钥k,可以计算F(k,.)在任意x∈X的函数值F(k,x)。
第二种类型的密钥称之为刺穿密钥(punctured key)。即完整密钥k在X中的某些点x1,…,xn进行刺穿后得到的密钥,记为k{x1,…,xn},其中,n为正整数。第二种计算模式使用刺穿密钥k{x1,…,xn},可以计算F(k,.)在任意x∈X\{x1,…,xn}的函数值F(k,x),其中X\{x1,…,xn}代表X集合排除掉{x1,…,xn}中的点,即有F(k{x1,…,xn},x)=F(k,x);
而对于x∈{x1,…,xn},无法使用刺穿密钥k{x1,…,xn}计算函数值F(k,x)。也即x∈{x1,…,xn}的函数值被隐藏。
图2为本说明书提供的基于OT扩展协议的OT元组生成过程示意图。图2中,OT扩展协议的发送方使用PPRF组件的完整秘钥和正常求值模式,对任意x∈X进行运算,得到x的最终运算结果。之后根据x的最终运算结果可以生成发送方的OT元组。这里的OT元组包括一组加密秘钥(如,S0和S1),该一组加密秘钥用于分别对发送方待发送的两个明文消息(如,m0和m1)进行加密。
OT扩展协议的接收方使用PPRF组件的刺穿秘钥和刺穿求值模式,对任意x∈X\{x1,…,xn}进行运算,得到x的最终运算结果。之后根据x的最终运算结果可以生成接收方的OT元组。这里的OT元组包括一组解密秘钥(如,b和Sb),该一组解密秘钥用于对发送方利用对应的一组加密秘钥,分别对待发送的两个明文消息进行加密后得到的两个加密消息中的一个加密消息(如,m0或者m1)进行解密。
如果针对X刺穿n个点x1,…,xn之后,PPRF组件可以针对该n个点生成刺穿密钥,且针对任意x∈X\{x1,…,xn}可以得到相应的运算结果,以及针对任意x∈{x1,…,xn}的运算结果被隐藏,那么就称PPRF组件支持刺穿n个点。图3为本说明书提供的刺穿点示意图。图3中整个方框代表定义域X,方框中通过斜线标出的各子方框代表刺穿点。从图3中可以看出,总共有6个刺穿点,分别为:x1,…,x6。
一般而言,容易得到支持刺穿1个点的PPRF组件(也称basePPRF)。比如,可以采用伪随机生成器(pseudo-random generator,简称为PRG)实现上述basePPRF组件。在采用随机生成器实现时,basePPRF的两种求值模式分别如下:
OT扩展协议的发送方的正常求值模式为:
首先随机生成一个完整秘钥k,该完整秘钥k具体可以为128位的比特序列。之后,对于任意x∈X,假设x为比特序列:{b1,…,bm},其中,m为x所对应的比特序列中的比特位数。那么x的最终运算结果可以为:
其中,G()为求值函数,其输入为完整秘钥和x的比特序列,输出为x的最终运算结果。在一个例子中,G()可以为hash函数。
OT扩展协议的接收方的刺穿求值模式为:
首先在定义域X中随机选取一个刺穿点α,假设α为比特序列:{α1,…,αm},且假设刺穿点α对应的刺穿秘钥为:
其中,刺穿秘钥可以包括m个元素,每个元素与刺穿点α所对应比特序列的一个比特位相对应。比如,元素G
1-α1(k)与α的第1个比特位相对应,元素
与α的第2个比特位相对应,依次类推。需要说明的是,这里的刺穿秘钥中的每个元素可以是通过与发送方执行OT协议得到。
对于x∈X\{α},假设x为比特序列:{b1,…,bm},其中,m为x所对应的比特序列中的比特位数。由于x不等于α,记s∈{1,…,m}为x与α第1个不相等的比特位,即(b1,…,bs-1)=(α1,…,αs-1)但bs=1-αs,则
需要说明的是,为了满足OT扩展协议的安全性,通常需要PPRF组件可以支持刺穿t个点。这里的t可以取值为100。
在一种实现方式中,为了使得PPRF组件可以支持刺穿t个点,可以调用basePPRF组件进行t次运算。因为每次运算支持刺穿一个点,从而并行运算t次之后,将t次运算结果进行融合,就可以使得PPRF组件支持刺穿t个点。该方案具体可以参照图4所示。图4示出本说明书提供的一种PPRF组件构造方法示意图。图4中,纵向排列的每个长方框表示定义域X,其对应于basePPRF组件的一次调用,长方框中每个带斜线的子方框表示该次调用刺穿的点。图4中,在调用basePPRF组件进行6次运算之后,所得到的运算结果即相当于支持刺穿6个点的PPRF组件的运算结果。
假设将采用上述一种实现方式得到的支持刺穿t个点的PPRF组件表示为paraPPRF,那么paraPPRF的两种求值模式分别如下:
正常求值模式为:
首先,随机生成t个完整秘钥,分别表示为:k:=(k1,k2,…,kt)。之后,对于任意x∈X,那么x的最终运算结果可以为:
paraPPRF(k,x):=basePPRF(k1,x)+basePPRF(k2,x)+…+basePPRF(kt,x)
应理解,这里对应于任意的basePPRF(ki,x),1≤i≤t,其均可以展开为公式1所示的形式,用于表示basePPRF组件的一次调用。应理解,该次调用的运算结果表示第i次的运算结果。从上述式子可以看出,在将t次的运算结果累加之后,就可以得到x的最终运算结果。
刺穿求值模式为:
首先,在定义域X中随机选取t个刺穿点,分别表示为:{x1,…,xt}。对于该t个刺穿点中的每个刺穿点,基于该刺穿点以及发送方对应生成的完整秘钥,可以计算得到对应的刺穿秘钥。上述t个刺穿点对应的t个刺穿秘钥可以表示为:k{x1,…,xt}:=(k1{x1},k2{x2},…,kt{xt})。
需要说明的是,这里,对于任意的ki{xi},其中,1≤i≤t,其均可以表示为如公式2所示的形式。即其包含与对应刺穿点所对应比特序列中的比特位数相符合的元素,且每个元素与对应刺穿点的各比特位一一对应。
之后,对于任意x∈X\{x1,…,xt},那么x的最终运算结果可以为:
paraPPRF(k{x1,…,xt},x):=basePPRF(k1{x1},x)+basePPRF(k2{x2},x)+…+basePPRF(kt{xt},x)
应理解,这里对应于任意的basePPRF(ki{xi},x),其均可以展开为公式3所示的形式,其中,1≤i≤t,用于表示basePPRF组件的一次调用,且该次调用的运算结果表示第i次的运算结果。从上述式子可以看出,在将t次的运算结果累加之后,就可以得到x的最终运算结果。
从以上的两种求值模式可以看出,对于通过如图3所示的构造方法,所构造的支持刺穿t个点的PPRF组件,其针对x的最终运算结果,即为t个支持刺穿1个点的PPRF组件针对x的最终运算结果之和。
该种实现方案的缺点是,paraPPRF组件的计算性能与t呈线性增长的关系。
在另一种实现方案中,为了使得PPRF组件可以支持刺穿t个点,可以将定义域X划分为t个取值区间,分别表示为:X1,X2,…,Xt。之后,在每个取值区间上,调用basePPRF组件进行一次运算,以刺穿一个点。最后,将对应于各取值区间的运算结果进行串接,就可以使得PPRF组件支持刺穿t个点。该方案具体可以参照图5所示。图5示出本说明书提供的另一种PPRF组件构造方法示意图。图5中,每两个方框表示一个取值区间,其中的带斜线的子方框表示刺穿的点。图5中,在针对每个取值区间调用basePPRF组件进行1次运算之后,也即在进行6次运算之后,整个定义域可刺穿6个点,从而所得到的运算结果相当于支持刺穿6个点的PPRF组件的运算结果。
假设将采用上述另一种实现方式得到的支持刺穿t个点的PPRF组件表示为serPPRF,那么serPPRF的两种求值模式分别如下:
正常求值模式为:
首先,随机生成t个完整秘钥,分别表示为:k:=(k1,k2,…,kt)。之后,对于任意x∈X,如果x在第i个取值区间Xi中,其中,1≤i≤t。那么x的最终运算结果可以为:
serPPRF(k,x):=basePPRF(ki,x)
应理解,这里的basePPRF(ki,x),其可以展开为公式1所示的形式,用于表示basePPRF组件的一次调用。应理解,该次调用的运算结果表示对应于取值区间Xi的运算结果。由于x在第i个取值区间Xi中,因此,该次调用的运算结果即为x的最终运算结果。
刺穿求值模式为:
首先,在定义域X中随机选取t个刺穿点,分别表示为:{x1,…,xt}。对于该t个刺穿点中的每个刺穿点,基于该刺穿点以及发送方对应生成的完整秘钥,可以计算得到对应的刺穿秘钥。上述t个刺穿点对应的t个刺穿秘钥可以表示为:k{x1,…,xt}:=(k1{x1},k2{x2},…,kt{xt})。
需要说明的是,这里,对于任意的ki{xi},其中,1≤i≤t,其均可以表示为如公式2所示的形式。即其包含与对应刺穿点所对应比特序列中的比特位数相符合的元素,且每个元素与对应刺穿点的各比特位一一对应。
之后,对于任意x∈X\{x1,…,xt},如果x在第i个取值区间Xi中,那么x的最终运算结果可以为:
serPPRF(k{x1,…,xt},x):=basePPRF(ki{xi},x)
应理解,这里的basePPRF(ki{xi},x),其可以展开为公式3所示的形式,用于表示basePPRF组件的一次调用。应理解,该次调用的运算结果表示对应于取值区间Xi的运算结果。由于x在第i个取值区间Xi中,因此,该次调用的运算结果即为x的最终运算结果。
该种实现方案的缺点是,serPPRF组件能够刺穿的t个点{x1,…,xt}必须分别是t个取值区间X1,X2,…,Xt中的t个点,即每个取值区间恰好有1个刺穿点。因此serPPRF支持刺穿的t个点比较受限。
鉴于如上的两种方案均存在相应的缺陷,本申请的发明人提出如下的改进方案。
在再一种实现方案中,设定并行参数tp和串行参数ts,且该两者满足:tp·ts=t。将定义域X划分为ts个取值区间,分别表示为:X1,X2,…,Xts,在每个取值区间上,调用basePPRF组件进行tp次运算,以刺穿tp个点。最后,将对应于各取值区间的运算结果进行串接,就可以使得PPRF组件支持刺穿t个点。该再一种实现方案可以如图6所示。图6示出本说明书提供的再一种PPRF组件构造方法示意图。图6中,位于同一行的每个方框表示一个取值区间,位于同一列的方框的数目对应于basePPRF组件的调用次数,且每个小方框中带斜线的子方框表示该次调用刺穿的点。图6中,在将定义域划分为3个取值区间,且针对每个取值区间调用basePPRF组件进行2次运算之后,整个定义域可刺穿6个点,从而所得到的运算结果相当于支持刺穿6个点的PPRF组件的运算结果。
将采用上述再一种实现方式得到的支持刺穿t个点的PPRF组件表示为inlvdPPRF,以下将通过具体实施例对上述inlvdPPRF组件的数据处理过程(即两种求值模式下的求值过程)进行详细阐述。
图7为本说明书一个实施例提供的用于不经意传输OT扩展协议的数据处理方法流程图。所述方法的执行主体可以为OT扩展协议的发送方。如图7所示,所述方法具体可以包括:
步骤702,获取针对预定取值范围生成的ts*tp个完整秘钥。
这里的预定取值范围例如可以为前述定义域X。
上述获取ts*tp个完整秘钥具体可以包括:按照与OT扩展协议的接收方的约定,将预定取值范围划分为ts个取值区间。针对其中的每个取值区间生成一组tp个完整秘钥。
这里的ts和tp均为正整数,且ts·tp=t,其中,t在预定取值范围内待刺穿的点数。在一个例子中,上述ts与tp相等,即均为√t。
上述ts*tp个完整秘钥具体可以表示如下:
其中,kp,q为对应于第p(1≤p≤ts)个取值区间的第q(1≤q≤tp)个完整秘钥。
步骤704,对于位于预定取值范围中的待处理的目标值,确定其属于第i个取值区间。
其中,i为正整数,且1≤i≤ts。
在本实施例的以下描述中将上述目标值表示为x。
步骤706,获取第i个取值区间对应的第i组tp个完整秘钥。
在所获取的ts*tp个完整秘钥如前所述时,该第i组tp个完整秘钥分别为:ki,1,ki,2,…,ki,tp。
步骤708,利用与接收方约定的刺穿运算组件,基于目标值以及第i组tp个完整秘钥,在第一运算模式下进行tp次运算,得到tp个第一中间结果。
上述刺穿运算组件例如可以为basePPRF组件,或者也可以为其它支持刺穿点运算的组件。这里的第一运算模式为刺穿运算组件具有的两种运算模式中用于发送方的运算模式。以刺穿运算组件为basePPRF组件为例来说,该第一运算模式例如可以为前述正常求值模式。
上述tp次运算中的第j次运算具体可以包括:从第i组tp个完整秘钥中,选取出第j次运算所使用的第j个完整秘钥。将第j个完整秘钥以及目标值输入刺穿运算组件,通过第一运算模式的运算,得到第j次运算的第一中间结果。其中,1≤j≤tp。
在一个示例中,上述第一运算模式可以实现为第一生成树,该第一生成树的根节点对应于输入秘钥,第k层枝干节点对应于输入比特序列中的第k个比特位,节点间路径对应于各比特位的比特值。其中,k为正整数。
上述通过第一运算模式的运算,得到第j次运算的第一中间结果,具体可以包括:将第j个完整秘钥作为第一生成树的根节点,将目标值对应的比特序列作为上述输入比特序列,在第一生成树中,根据输入比特序列中各比特位的比特值,逐层确定枝干节点,直到到达叶子节点。将该叶子节点对应的值作为第j次运算的第一中间结果。
以图8示出第一生成树为例来说,假设目标值为比特序列:00,那么基于根节点的值(即第j个完整秘钥)以及第1个比特位:0,可以确定第1层的枝干节点B的值。之后基于节点B的值以及第2个比特位:0,可以确定第2层的枝干节点D的值。由于此时已经达到叶子节点。从而可以将叶子节点(即节点D)的值作为第j次运算的第一中间结果。再例如,在目标值为比特序列:10时,可以将叶子节点F的值作为第j次运算的第一中间结果。
类似于第j次运算的第一中间结果的获取方法,可以获取到tp个第一中间结果。
步骤710,将tp个第一中间结果进行融合,得到针对目标值的最终运算结果。
这里,将tp个第一中间结果进行融合可以包括:将tp个第一中间结果进行求异或运算或者求和运算等。该融合的步骤可以表示为:
inlvdPPRF(k,x):=basePPRF(ki,1,x)+basePPRF(ki,2,x)+…+basePPRF(ki,tp,x)
应理解,对于上述式子中任意的basePPRF(ki,j,x),1≤j≤tp,其均可以展开为公式1所示的形式,用于表示basePPRF组件的一次调用。应理解,该次调用的运算结果表示第j个第一中间结果。从上述式子可以看出,在将tp个第一中间结果累加之后,就可以得到x(即目标值)的最终运算结果。
需要说明的是,发送方所获得的最终运算结果可以用于生成发送方的OT元组。应理解,这里生成的OT元组是大量的(如,10万-1000万组)。其中的每个OT元组可以包括一组加密秘钥(如,S0和S1),该一组加密秘钥用于分别对发送方待发送的两个明文消息(如,m0和m1)进行加密。如,将两个加密秘钥分别与两个明文消息进行异或等。
应理解,图7示出的数据处理方法即为inlvdPPRF组件在正常求值模式下的求值过程。
图9为本说明书一个实施例提供的用于不经意传输OT扩展协议的数据处理方法流程图。所述方法的执行主体可以为OT扩展协议的接收方。如图8所示,所述方法具体可以包括:
步骤902,获取针对预定取值范围生成的ts*tp个刺穿点。
这里的预定取值范围例如可以为前述定义域X。
上述获取ts*tp个刺穿点具体可以包括:按照与OT扩展协议的发送方的约定,将预定取值范围划分为ts个取值区间。针对其中的每个取值区间,从中选取tp个数值点作为一组tp个刺穿点。
这里的ts和tp均为正整数。在一个例子中,假设ts·tp=t,那么ts和tp可以均为√t。
上述ts*tp个刺穿点具体可以表示如下:
其中,xp,q为从第p(1≤p≤ts)个取值区间中选取的第q(1≤q≤tp)个数值点(也称刺穿点)。
步骤904,获取对应于ts*tp个刺穿点的ts*tp个刺穿秘钥,其中的每个刺穿秘钥基于对应刺穿点,以及发送方对应生成的完整秘钥而确定。
这里的刺穿秘钥可以看作是用于辅助计算目标值的最终运算结果的点。刺穿秘钥例如可以是通过与发送方执行OT协议来获取的。其具体计算过程后续详细说明。
上述ts*tp个完整秘钥具体可以表示如下:
其中,kp,q{xp,q}为第p(1≤p≤ts)个取值区间中的第q(1≤q≤tp)个刺穿点的刺穿秘钥。
需要说明的是,上述任意的刺穿秘钥kp,q{xp,q}其均可以表示为如公式2所示的形式。即其包含与对应刺穿点所对应比特序列中的比特位数相符合的元素,且每个元素与对应刺穿点的各比特位一一对应。
步骤906,对于位于预定取值范围中除ts*tp个刺穿点外的、待处理的目标值,确定其属于第i个取值区间。
其中,i为正整数,且1≤i≤ts。
在本实施例的以下描述中将上述目标值表示为x。
步骤908,获取第i取值区间对应的第i组tp个刺穿秘钥。
在所获取的ts*tp个刺穿秘钥如前所述时,该第i组tp个刺穿秘钥分别为:ki,1{xi,1},ki,2{xi,2},…,ki,tp{xi,tp}。
步骤910,利用与发送方约定的刺穿运算组件,基于目标值以及第i组tp个刺穿秘钥,在第二运算模式下进行tp次运算,得到tp个第二中间结果。
上述刺穿运算组件例如可以为basePPRF组件,或者也可以为其它支持刺穿点运算的组件。这里的第二运算模式为刺穿运算组件具有的两种运算模式中用于接收方的运算模式。以刺穿运算组件为basePPRF组件为例来说,该第二运算模式例如可以为前述刺穿求值模式。
上述tp次运算中的第j次运算具体可以包括:从第i组tp个刺穿秘钥中,选取出第j次运算所使用的第j个刺穿秘钥。该第j个刺穿秘钥对应的第j个刺穿点对应于一个比特序列,且第j个刺穿秘钥包括与第j个刺穿点对应的比特序列中各比特位相对应的多个元素。将第j个刺穿点对应的比特序列与目标值对应的比特序列进行比对,以确定出第一个不相等的目标比特位。将第j个刺穿秘钥中对应于目标比特位的元素,以及目标值对应的比特序列中从目标比特位的下一比特位开始的子序列,输入刺穿运算组件,通过第二运算模式的运算,得到第j次运算的第二中间结果。其中,1≤j≤tp。
在一个示例中,上述第二运算模式可以实现为第二生成树,该第二生成树的根节点对应于输入秘钥,第k层枝干节点对应于输入比特序列中的第k个比特位,节点间路径对应于各比特位的比特值。其中,k为正整数。
上述通过第二运算模式的运算,得到第j次运算的第二中间结果,具体可以包括:将第j个刺穿秘钥中对应于目标比特位的元素,作为第二生成树的根节点,将目标值的子序列作为输入比特序列,在第二生成树中,根据输入比特序列中各比特位的比特值,逐层确定枝干节点,直到到达叶子节点。将该叶子节点对应的值作为第j次运算的第二中间结果。
以发送方的第一生成树如图8为例来说,假设接收方设定的刺穿点为叶子节点E,其对应的比特序列为:01,那么节点E的值被隐藏。由于刺穿点对应的比特序列包含两个比特位,从而其对应的刺穿秘钥包含两个元素,且元素与比特位一一对应。在图8中,该两个刺穿秘钥分别可以看作是节点C的值以及节点D的值,且节点C的值与比特序列01中的比特位0对应,节点D的值与比特序列01中的比特位1对应。这里的节点C的值可以是在发送方生成图8所示的第一生成树的过程中或者之后,按照节点编号的奇偶性,对第1层的枝干节点的值进行融合得到两个融合结果之后,由接收方通过执行OT协议,从对应于第1层的两个融合结果中选取的一个融合结果而确定。同样的,节点D的值也是由接收方通过执行OT协议,从对应于第2层的两个融合结果中选取的一个融合结果而确定。
在一个具体例子中,发送方使用预先生成的一组初始OT元组(可以通过执行OT协议得到)中,对应于发送方的OT元组对上述两个融合结果进行加密。接收方使用上述一组初始OT元组中对应于接收方的OT元组,对加密后的两个融合结果中的一个融合结果进行解密。应理解,预先生成的初始OT元组通常是少量的(如,1000-2000组),比如,该初始OT元组的数目可以等于第一生成树的数目与第一生成树的层数的乘积。
假设目标值为比特序列:10,由于与刺穿点xt的各比特位均不相同,那么结合上述步骤可知,上述目标比特位为第1个比特位:1,也即第二生成树的根节点为节点C的值,第二生成树的输入序列:0。之后,基于节点C的值以及输入序列:0,可以确定第二层的枝干节点F的值。由于此时已经达到叶子节点。从而可以将叶子节点(即节点F)的值作为第j次运算的第二中间结果。
应理解,上述针对目标值进行运算的过程即为生成第二生成树的过程。需要说明的是,在针对比特序列(即目标值):10、00和11分别计算第二中间结果之后,可以生成如图10示出第二生成树。该第二生成树也可以称为刺穿树。
类似于第j次运算的第二中间结果的获取方法,可以获取到tp个第二中间结果。
需要说明的是,在本说明书中,发送方与接收方针对同一目标值的求值过程是对应的。或者说,除刺穿点外,发送方与接收方针对同一目标值的运算结果是相同的。具体到图10中,除叶子节点E至根节点之间的路径所覆盖的节点外,第二生成树的其它节点的值均与图8中的第一生成树相等。
步骤912,将tp个第二中间结果进行融合,得到针对目标值的最终运算结果。
这里,将tp个第二中间结果进行融合可以包括:将tp个第二中间结果进行求异或运算或者求和运算等。该融合的步骤具体可以表示为:
inlvdPPRF(k{P},x):=basePPRF(ki,1{xi,1},x)+basePPRF(ki,2{xi,2},x)+…+basePPRF(ki,tp{xi,tp},x)
应理解,这里对应于任意的basePPRF(ki,j{xi,j},x),1≤j≤tp,其均可以展开为公式3所示的形式,用于表示basePPRF组件的一次调用。应理解,该次调用的运算结果表示第j个第二中间结果。从上述式子可以看出,在将tp个第二中间结果累加之后,就可以得到x(目标值)的最终运算结果。
需要说明的是,接收方所获得的最终运算结果可以用于生成接收方的OT元组。应理解,这里生成的OT元组是大量的(如,10万-1000万组)。其中的每个OT元组可以包括一组解密秘钥(如,b和Sb),该一组解密秘钥用于对发送方利用对应的一组加密秘钥(如,S0和S1),分别对待发送的两个明文消息进行加密后得到的两个加密消息中的一个加密消息(如,m0或者m1)进行解密。
应理解,图9示出的数据处理方法即为inlvdPPRF组件在刺穿求值模式下的求值过程。
以下对inlvdPPRF组件的计算性能进行说明。
inlvdPPRF组件的计算性能会受到如下参数的影响:并行参数tp、串行参数ts以及定义域X的大小。应理解,在定义阈X的大小为N时,每个取值区间的大小可以为N/ts。
inlvdPPRF组件的计算性能:
inlvdPPRF组件在每个取值区间调用tp次basePPRF组件,basePPRF组件的每次运算调用log2(N/ts)次PRG。根据基于fixed-key AES构造的PRG,PRG求值调用3次AES加密。单次AES加密(128-bit、通过指令加速)用时0.02μs。因此inlvdPPRF组件的单次用时为:0.06*tp*log2(N/ts)μs。
因此每秒可计算的inlvdPPRF函数值数量为:1000000/(0.06*tp*log2(N/ts))。因此,计算性能随着ts的增大(tp的减小)而提升,提升幅度为ts/(log2(N/ts))。
inlvdPPRF组件的安全性:
每个取值区间大小为N/ts,每个取值区间支持刺穿tp个点。每个取值区间可支持刺穿tp个点的种类数为C(N/ts,tp)≈(N/ts)tp/(tp!)。
由于有ts个小区间,inlvdPPRF组件可支持刺穿t个点的种类数为:C(N/ts,tp)ts≈(N/ts)t/(tp!)ts。因此,安全性能随着ts的增大(tp的减小)而降低,降低幅度至少为(ts)t。
由此可以看出,与paraPPRF组件和serPPRF组件相比,inlvdPPRF组件的计算过程可以达到如下的技术效果:同时使用并行和串行的交织模式,通过并行,每个取值区间可以刺穿任意tp个点,因此可以支持更多的刺穿集合。通过串行,inlvdPPRF组件的计算过程仅需要调tp次basePPRF组件,因此inlvdPPRF组件的计算性能与tp(=√t)呈线性增长的关系。
此外,与paraPPRF组件相比,inlvdPPRF组件的计算性能提升大约√t倍,但是无法支持任意的刺穿集合(刺穿集合必须满足每个取值区间有tp个刺穿点)。而与serPPRF组件相比,inlvdPPRF组件可以支持更多的刺穿集合,但是计算性能下降大约√t倍。在综合考虑计算性能和支持的刺穿集合,inlvdPPRF组件可以达到这两方面的平衡。
以下通过表1对paraPPRF组件、serPPRF组件以及inlvdPPRF组件在求值过程中所耗费的时间复杂度进行说明。
表1
|
paraPPRF组 |
serPPRF组件 |
inlvdPPRF组件 |
时间复杂度 |
O(t) |
O(1) |
O(tp) |
图11为本说明书提供的inlvdPPRF组件的性能对比示意图。图11中,当N=10000,t=100时,通过选取不同的(ts,tp)组合,可以构造得到多种支持刺穿t个点的PPRF组件。其中,带有竖线的长方形代表组件的安全性能,带有横线的长方形代表组件的计算性能,带有斜线的长方形代表组件的综合性能。
从图11可以看出,在tp=t,ts=1的参数选取下,所构造的组件即为前述paraPPRF组件,其安全性最强、性能最差。而在tp=1,ts=t的参数选取下,所构造的组件即为前述serPPRF组件,其安全性最弱、性能最优。在综合考虑方案的计算性能和支持的刺穿点集合,推荐参数选取为tp=ts=√t。
综上,本说明书实施例提供的用于不经意传输OT扩展协议的数据处理方法,可以大大提升OT元组的生成效率,进而可以提升OT扩展协议的整体性能。
与上述用于不经意传输OT扩展协议的数据处理方法对应地,本说明书一个实施例还提供的一种用于不经意传输OT扩展协议的数据处理装置,设置于OT扩展协议的发送方。如图12所示,该装置可以包括:
获取单元1202,用于获取针对预定取值范围生成的ts*tp个完整秘钥。该ts*tp个完整秘钥是在按照与OT扩展协议的接收方的约定,将预定取值范围划分为ts个取值区间之后,针对其中的每个取值区间生成一组tp个完整秘钥而得到。其中,ts和tp均为正整数。
在一个例子中,ts与tp相等。
确定单元1204,用于对于位于预定取值范围中的待处理的目标值,确定其属于第i个取值区间。其中,i为正整数,且1≤i≤ts。
获取单元1202,还用于获取第i个取值区间对应的第i组tp个完整秘钥。
运算单元1206,用于利用与接收方约定的刺穿运算组件,基于目标值以及第i组tp个完整秘钥,在第一运算模式下进行tp次运算,得到tp个第一中间结果。其中,第一运算模式为刺穿运算组件具有的两种运算模式中用于发送方的运算模式。
运算单元1206具体可以用于:
从第i组tp个完整秘钥中,选取出第j次运算所使用的第j个完整秘钥。
将第j个完整秘钥以及目标值输入刺穿运算组件,通过第一运算模式的运算,得到第j次运算的第一中间结果。其中,1≤j≤tp。
其中,上述第一运算模式可以实现为第一生成树,第一生成树的根节点对应于输入秘钥,第k层枝干节点对应于输入比特序列中的第k个比特位,节点间路径对应于各比特位的比特值。其中,k为正整数。
运算单元1206还具体可以用于:
将第j个完整秘钥作为第一生成树的根节点,将目标值对应的比特序列作为输入比特序列,在第一生成树中,根据输入比特序列中各比特位的比特值,逐层确定枝干节点,直到到达叶子节点。将该叶子节点对应的值作为第j次运算的第一中间结果。
融合单元1208,用于将tp个第一中间结果进行融合,得到针对目标值的最终运算结果。该最终运算结果用于生成发送方的OT元组。
其中,发送方的OT元组包括一组加密秘钥,该一组加密秘钥用于对发送方待发送的两个明文消息进行加密。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的用于不经意传输OT扩展协议的数据处理装置,可以大大提升OT元组的生成效率,进而可以提升OT扩展协议的整体性能。
与上述用于不经意传输OT扩展协议的数据处理方法对应地,本说明书一个实施例还提供的一种用于不经意传输OT扩展协议的数据处理装置,设置于OT扩展协议的接收方。如图13所示,该装置可以包括:
获取单元1302,用于获取针对预定取值范围生成的ts*tp个刺穿点。该ts*tp个刺穿点是在按照与OT扩展协议的发送方的约定,将预定取值范围划分为ts个取值区间之后,针对其中的每个取值区间从中选取tp个数值点作为一组tp个刺穿点而得到。其中,ts和tp均为正整数。
在一个例子中,上述ts与tp相等。
获取单元1302,还用于获取对应于ts*tp个刺穿点的ts*tp个刺穿秘钥,其中的每个刺穿秘钥基于对应刺穿点,以及发送方对应生成的完整秘钥而确定。
确定单元1304,用于对于位于预定取值范围中除ts*tp个刺穿点外的、待处理的目标值,确定其属于第i个取值区间。其中,i为正整数,且1≤i≤ts。
获取单元1302,还用于获取第i取值区间对应的第i组tp个刺穿秘钥。
运算单元1306,用于利用与发送方约定的刺穿运算组件,基于目标值以及第i组tp个刺穿秘钥,在第二运算模式下进行tp次运算,得到tp个第二中间结果。其中,第二运算模式为刺穿运算组件具有的两种运算模式中用于接收方的运算模式。
运算单元1306具体可以用于:
从第i组tp个刺穿秘钥中,选取出第j次运算所使用的第j个刺穿秘钥。第j个刺穿秘钥对应的第j个刺穿点对应于一个比特序列。第j个刺穿秘钥包括与比特序列中各比特位相对应的多个元素。
将第j个刺穿点对应的比特序列与目标值对应的比特序列进行比对,以确定出第一个不相等的目标比特位。
将第j个刺穿秘钥中对应于目标比特位的元素,以及目标值对应的比特序列中从目标比特位的下一比特位开始的子序列,输入刺穿运算组件,通过第二运算模式的运算,得到第j次运算的第二中间结果。其中,1≤j≤tp。
其中,第二运算模式可以实现为第二生成树,第二生成树的根节点对应于输入秘钥,第k层枝干节点对应于输入比特序列中的第k个比特位,节点间路径对应于各比特位的比特值。其中,k为正整数。
运算单元1306还具体可以用于:
将第j个刺穿秘钥中对应于目标比特位的元素,作为第二生成树的根节点,将目标值的子序列作为输入比特序列,在第二生成树中,根据输入比特序列中各比特位的比特值,逐层确定枝干节点,直到到达叶子节点。将该叶子节点对应的值作为第j次运算的第二中间结果。
融合单元1308,用于将tp个第二中间结果进行融合,得到针对目标值的最终运算结果。最终运算结果用于生成接收方的OT元组。
接收方的OT元组包括一组解密秘钥,该一组解密秘钥用于对发送方利用对应的一组加密秘钥,对待发送的两个明文消息进行加密后得到的两个加密消息中的一个加密消息进行解密。
本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
本说明书一个实施例提供的用于不经意传输OT扩展协议的数据处理装置,可以大大提升OT元组的生成效率,进而可以提升OT扩展协议的整体性能。
另一方面,本说明书的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图7或图9所示的方法。
另一方面,本说明书的实施例提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图7或图9所示的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
结合本说明书公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于服务器中。当然,处理器和存储介质也可以作为分立组件存在于服务器中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本说明书的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的具体实施方式而已,并不用于限定本说明书的保护范围,凡在本说明书的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的保护范围之内。