CN114239089A - 基于混淆电路的业务处理方法及装置 - Google Patents
基于混淆电路的业务处理方法及装置 Download PDFInfo
- Publication number
- CN114239089A CN114239089A CN202111520808.9A CN202111520808A CN114239089A CN 114239089 A CN114239089 A CN 114239089A CN 202111520808 A CN202111520808 A CN 202111520808A CN 114239089 A CN114239089 A CN 114239089A
- Authority
- CN
- China
- Prior art keywords
- result
- calculator
- circuit
- party
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本说明书实施例提供一种基于混淆电路的业务处理方法及装置,在多方安全计算的业务过程中,将业务处理过程拆分为多个算子电路的连续执行过程。在业务处理过程开始之前,还可以预先存储大量混淆表数据。在多个算子电路的连续执行过程中,针对单个算子电路,随机选择混淆表,并针对计算方的单个输入比特通过不经意传输安全确定相应的输入标签,针对单个算子电路的最终结果由混淆方、计算方相互独立确定的第一结果、第二结果描述。如此,通过预先为各个类型的算子电路准备多份混淆表,使得在线执行过程中各种类型的算子电路可以灵活组合,提高业务处理的在线执行效率。
Description
技术领域
本说明书一个或多个实施例涉及安全计算技术领域,尤其涉及基于混淆电路的业务处理方法及装置。
背景技术
混淆电路(Garbled Circuit,GC)是一种安全多方计算协议,通过布尔电路构造安全函数计算,从而使得参与者可以针对输入数值来计算结果,而不需要知道他们在计算式中输入的具体数字。混淆电路可以用于多方安全计算过程中。安全多方计算(SecureMulti-Party Computation)也可以称为多方安全计算(MPC),可以针对无可信第三方的情况下,安全地计算一个约定函数的问题。安全多方计算可以应用于联合训练模型、隐私求交、安全比较等多种业务场景。使用混淆电路方法进行业务处理过程中,根据业务场景的复杂程度,布尔电路的数量也不同。对于计算量较大的业务场景而言,计算过程中的通信量及通信效率直接影响着安全计算的业务处理效率。
发明内容
本说明书一个或多个实施例描述了一种基于混淆电路的业务处理方法及装置,用以解决背景技术提到的一个或多个问题。
根据第一方面,提供一种基于混淆电路的业务处理方法,所述业务处理包括多个算子电路的连续执行,所述方法包括:混淆方和计算方各自获取本地针对当前算子电路的输入数据;混淆方和计算方从预先对当前算子电路的算子类型确定的混淆表集中选择当前混淆表;计算方根据自身的本地输入数据、混淆方针对其本地输入数据提供的输入标签和所述当前混淆表执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;混淆方和计算方根据计算方得到的各个输出标签,安全确定相应输出线在混淆方存储的第一结果和在计算方存储的第二结果,使得单个第一结果和单个第二结果共同描述相应的输出比特。
在一个实施例中,混淆方、计算方均预先针对各个算子类型各自对应存储混淆表集,单个算子类型对应至少一个混淆表集,单个混淆表集包括相应单个算子类型对应的算子电路的多份混淆表,单份混淆表包括单个算子电路的全部门电路各自的输入标签对输出标签的加密结果。
在一个实施例中,对于当前算子电路中由计算方提供的单个输入比特,计算方根据预先存储的选择数据集中的单组选择数据,从混淆方获取相应的单个输入标签,其中,所述单组选择数据在混淆方对应有单组参考字符串,单组参考字符串包括分别对应于两个候选比特的两个参考字符串,所述单组选择数据包括通过随机的不经意传输方式对混淆方的两个候选比特进行选择得到的选择比特以及选择比特对应的参考字符。
在一个进一步的实施例中,由计算方提供的输入比特包括第一比特,所述第一比特对应的第一输入标签通过以下方式确定:计算方从所述选择集中随机选择第一选择数据组,并将所述第一比特与第一选择数据组中的第一选择比特的第一比较结果提供给混淆方,所述第一选择数据组包括所述第一选择比特和相应的第一选择字符串;混淆方获取与所述第一选择数据组对应的第一参考字符串组,并根据所述第一比较结果向计算方提供两个候选比特分别对应的两份密文,所述两份密文由所述第一参考字符串组中的两个参考字符串分别对两个候选比特对应的两个备选标签加密得到;计算方用所述第一选择字符串解密所述两份密文,得到所述第一输入标签。
在一个更进一步的实施例中,在所述第一比较结果为相同的情况下,混淆方使用两个参考字符串按照相对应的候选比特对两个备选标签分别加密,得到所述两份密文;在所述第一比较结果为不同的情况下,混淆方使用两个参考字符串对两个备选标签按照候选比特交叉加密,得到所述两份密文。
在一个实施例中,单个输出标签对应的第一结果由混淆方从0标签的预定位获取,第二结果由计算方从该单个输出标签的预定位获取,其中所述预定位为混淆方针对所述单个输出标签对应的单个输出线生成的两个备选标签的异或结果为1的位。
在一个进一步的实施例中,混淆方针对各个输出线生成的两个备选标签的异或结果恒为随机字符串R,所述预定位根据R中比特值为1的位确定。
在一个实施例中,单个第一结果和单个第二结果的异或值为相应输出比特的真值。
根据第二方面,提供一种基于混淆电路的业务处理方法,所述业务处理包括多个算子电路的连续执行,所述方法由计算方执行,包括:获取当前算子电路的本地输入数据;
和混淆方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;根据所述本地输入数据、所述当前混淆表以及从混淆方获取的各个输入标签执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;针对得到的各个输出标签,确定各个输出线在本地的各个第二结果,单个第二结果和混淆方本地确定的相应第一结果共同描述相应的输出比特。
根据第三方面,提供一种基于混淆电路的业务处理方法,所述业务处理包括多个算子电路的连续执行,所述方法由混淆方执行,包括:获取当前算子电路的本地输入数据;和计算方同步从当前算子电路相应类型下的混淆表集中选择的当前混淆表;根据所述当前混淆表向计算方提供当前算子电路中与本地输入数据相关的各个输入标签,以供计算方执行当前算子电路;利用当前算子电路的各个输出标签,确定当前算子电路的各个输出线在本地的各个第一结果,单个第一结果和计算方确定的第二结果共同描述相应的输出比特。
根据第四方面,提供一种基于混淆电路的业务处理装置,所述业务处理包括多个算子电路的连续执行,所述装置设于计算方,包括:获取单元,配置为获取当前算子电路的本地输入数据;选择单元,配置为和混淆方同步从当前算子电路相应类型下的混淆表集中选择的当前混淆表;执行单元,配置为根据所述本地输入数据、所述当前混淆表以及从混淆方获取的各个输入标签执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;确定单元,配置为针对得到的各个输出标签,确定各个输出比特本地的各个第二结果,单个第二结果和混淆方本地确定的相应第一结果共同描述相应的输出比特。
根据第五方面,提供一种基于混淆电路的业务处理装置,所述业务处理包括多个算子电路的连续执行,所述装置设于混淆方,包括:
获取单元,配置为获取当前算子电路的本地输入数据;
选择单元,配置为和计算方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;
提供单元,配置为根据所述当前混淆表向计算方提供当前算子电路中与本地输入数据相关的各个输入标签,以供计算方执行当前算子电路;
确定单元,配置为根据当前算子电路的各个输出线对应的备选标签,确定当前算子电路的各个输出线在本地的各个第一结果,单个第一结果和计算方确定的第二结果共同描述相应的输出比特。
根据第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第二方面或第三方面的方法。
根据第七方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面或第三方面的方法。
通过本说明书实施例提供的方法和装置,在多方安全计算的业务过程中,将业务处理过程拆分为多个算子电路的连续执行过程。在业务处理过程开始之前,还可以预先存储大量混淆表数据。在多个算子电路的连续执行过程中,针对单个算子电路,随机选择混淆表,针对单个算子电路的最终结果由混淆方、计算方相互独立确定的第一结果、第二结果描述。如此,通过混淆表的离线准备,可以使得业务处理过程中,各个类型的算子电路灵活组合,提高业务处理的在线执行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出一个具体例子的混淆电路逻辑示意图;
图2示出根据本说明书技术构思的基于混淆电路的业务处理方法交互流程图;
图3示出根据一个实施例的计算方执行的基于混淆电路的业务处理方法流程图;
图4示出根据一个实施例的混淆方执行的基于混淆电路的业务处理方法流程图;
图5示出根据一个实施例的设于计算方的基于混淆电路的业务处理装置的示意性框图;
图6示出根据一个实施例的设于混淆方的基于混淆电路的业务处理装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的技术方案进行描述。
首先描述混淆电路的逻辑原理。图1示出一个具体例子的混淆电路示意图。如图1所示,在该具体应用场景中,涉及多个布尔电路(以下也称为门电路)的组合。其中共有3个输入a0、b0、c0,由4个门电路最终输出c1。其中共涉及7条输入、输出线路a0、b0、c0、d、e、f、c1。假设混淆方(Garbler)记为A,计算方(Evaluator)记为B,对于每个线路都可以由A方生成相应的预定长度的字符串,如记为Xi 0、Xi 1,分别表示真值0和真值1,i=a0、b0、c0、d、e、f、c1。然后,混淆方A可以对各个门电路分别生成混淆表。例如,假设初始的输入比特a0、c0由混淆方A持有,b0由计算方B持有,对于输入为a0、c0,输出为d的与非门电路,真值具有4种情形,a0、c0、d的取值分别为:(0,0,0)、(0,1,1)、(1,0,1)、(1,1,0)。混淆方A用各个预定长度的字符串作为相应真值的标签,用来标识相应真值。将该真值对应关系用字符串表示可以为:(Xa0 0,Xc0 0,Xd 0)、(Xa0 0,Xc0 1,Xd 1)、(Xa0 1,Xc0 0,Xd 1)、(Xa0 1,Xc0 1,Xd 0)。进一步地,用输入标签加密输出标签,如用Xa0 0、Xc0 0加密Xd 0记为类似地,对4种情形分别进行加密,并打乱顺序,即混淆。如此,可以得到针对a0、c0与非门电路的混淆表发送给计算方。图1示出的例子中,混淆方A可以为计算方B提供与4个门电路一一对应的4个混淆表。在图1示出的4个门电路为实现一个具体功能(如加法)的电路的情况下,这4个门电路对应的4个混淆表可以称为针对该具体功能电路的饿一份混淆表。
另外,在混淆方和计算方的计算过程中,混淆方将本地输入对应的真值比特(如a0=0)对应的标签发送给计算方B,计算方B并不知道该标签代表的真值。对于计算方持有的输入值(如b0),可以通过不经意传输协议,从混淆方A选择其对应的标签,而混淆方A不知道其选择的哪个标签,如不知道选择的是Xb0 1还是Xb0 0。计算方得到各个门电路的混淆表和输入标签后,沿着电路进行解密,对每个电路的混淆表,有一行是可以被解密得到相应标签的。如针对图1的电路,假设计算方B得到的输入标签为Xa0 1,Xb0 1,Xc0 0,据此可以依次解密Xd 1、Xe 1、Xf 1、Xc1 0。之后,混淆方A和计算方B可以共享结果,例如计算方B向混淆方A分享Xc1 0,或者混淆方A向计算方B分享Xc1 0、Xc1 1。
在图1的示例中,计算方B仅出现一个输入比特,则在电路计算过程中,需要通过不经意传输协议(以下也称OT)获取一次输入标签。在计算方B持有多个输入比特的情况下,可以通过多次不经意传输协议获取相应的输入标签。通常,计算方B获取本地输入标签可以通过混淆方A直接发送两个候选比特(0、1)对应的两个标签,将混淆方A作为发送方、计算方B作为接收方通过不经意传输方式由计算方B选择与输入比特对应的一个。
实际业务处理过程中,一个业务可能需要多个算子,例如一个具体业务可以包含1000个乘法算子、5000个加法算子、30个比较算子等。单个算子可以通过多个布尔电路实现,单个算子对应的电路整体例如可以记为单个算子电路。如果采用常规的混淆电路执行方法,在业务处理过程中,对每个算子依次构建相应的混淆电路、生成混淆表、完成计算,则通信量和计算量都比较大。
为此,考虑到相同类型的算子对应的算子电路可以具有相同的计算逻辑,而每次被调用过程中处理的数据不同,本说明书提出一种按照算子类型预先缓存数据的业务处理方式。本说明书提供的业务处理方式可以将业务处理过程分为离线准备阶段和在线业务处理阶段,并由混淆方、计算方各自对各个类型的算子电路分别维持相应的混淆表集。其中,针对单个类型的算子电路可以维持至少一个混淆表集。一个混淆表集可以对应多份混淆表,一份混淆表可以根据相应类型的算子电路中全部全部门电路的混淆表结果。混淆表集可以实现为预定缓存区域的缓存数据、数组、集合等形式。例如,针对乘法算子可以维持一个缓存区域或缓存容器(如buffer),该缓存区域可以存储多份混淆表以及多组参考字符串。一份混淆表可以包括多个门电路的标签及混淆结果,并可供一次乘法电路执行。
在离线准备阶段,混淆方对各个算子类型的算子电路生成混淆表,例如乘法算子电路、加法算子电路、比较算子电路等。可以理解,一个电路可以是由多个门电路构成的算子电路,混淆方可以对所有输入线(如图1中的a0、b0、c0)随机生成相应标签(或称为密文),其中的单个输入线对应有0标签、1标签(如图1中的Xa0 0、Xa0 1等)。对于门电路之间的连接线,前一个门电路的输出(如图1中的d)作为后一个门电路的输入,因此,可以按顺序根据标签依次执行各个门电路,得到最终输出线(如图1中的c1)的0标签、1标签。通过输入标签加密输出标签并将加密结果乱序记为一个门电路的混淆表。混淆方针对一个类型的算子电路可以生成多份混淆表,并对应存储为至少一个混淆表集。混淆方将混淆表发送至计算方,计算方也可以针对一个类型的算子电路将相应的多份混淆表,对应至少一个混淆表集,例如存储在一个buffer。如,针对乘法算子电路对应一个buffer,其中存储1万份混淆表。
在一些实施例中,混淆方和计算方还可以预先执行ROT操作(Rondom OT),为确定计算方的输入标签提供参考的字符串,用于辅助进行GOT(General OT)的构造,从而确定计算方的输入标签。单次ROT的执行结果例如为:混淆方随机生成0、1两个候选比特分别对应的参考字符串L0、L1(也可以称为一组参考字符串或一个参考字符串组);计算方通过OT方式从0、1两个候选比特中随机选择一个比特c(c可能是0也可能是1)作为选组比特,以及对应的参考字符串Lc作为选择标签。计算方得到的选择比特c和选择标签Lc可以称为一组选择数据,或者一个选择数据组。混淆方和计算方可以执行多次ROT,如10万次,并将结果对应存储,例如对同一次ROT结果使用同一个标识。
在线业务处理阶段,当执行一个算子电路时,混淆方和计算方可以选择同一份混淆表进行计算,例如执行乘法算子电路时都选择乘法算子对应的缓存区域的第5份混淆表。在执行到某个由计算方提供至少一个输入比特的门电路的情况下,混淆方和计算方也可以选择同一组参考字符串,按照前文描述的方式确定相应的输入标签。
经过这种方式的分割,在业务处理过程中,可以通过预先尽可能多地存储离线准备的数据结果,从而在线执行阶段对各种算子电路灵活组合,减少实时通信,提高多方安全计算中的业务处理效率。下面通过在线执行阶段的视角详细描述本说明书的技术构思。
图2示出一个实施例的基于混淆电路的业务处理流程。图2示出的流程从混淆方和计算方交互的角度,描述在线业务处理过程。其中,混淆方和计算方可以分别实现为具有一定计算能力的计算机、设备、服务器。混淆方、业务方可以是合作处理某项业务的双方,可以分别持有部分业务数据。例如可以是联邦学习的两个参与方、平台与合作商户等。混淆方(Garbler)、计算方(Evaluator)分别用于表示当前基于混淆电路的业务处理过程中,对混淆电路的数据处理角色,其也可以称为第一方、第二方。在多方安全计算的处理过程中,混淆方和计算方的数据处理角色互换的情况下,互换后用于生成混淆表一方为新的混淆方,互换后基于混淆表进行计算一方为新的计算方。
可以理解的是,在离线准备阶段,混淆方和计算方可以准备在线所需数据。这里,离线可以理解为业务处理过程未开始,例如未向预测模型提供输入数据进行业务预测等,而不是双方不联网、不交互。根据前文描述的原理,离线准备阶段进行两方面的数据准备。
在线所需数据至少包括针对各个算子类型的算子电路各自度额定的多份混淆表,还可以包括预先由混淆方确定的多组参考字符串,以及计算方通过执行多次(如10万次)ROT分别从多组参考字符串中选择的多组选择数据,混淆方对各组参考字符串和计算方的各组选择数据各自存储并一一对应。ROT的执行结果和混淆表可以对应存储,也可以相互不关联存储,例如ROT结果存储在各个类型的算子电路公用的buffer或集合中。在一个实施例中,参考字符串可以与混淆表中的输入标签对应存储,例如前文的例子中,L0、L1和m0、m1对应存储。可选地,混淆方还可以把本地已知的输入线对应的输入标签和混淆表一起提供给计算方。如果混淆方的输入数据中的全部或者部分预先可以知晓,则混淆方还可以在离线准备阶段将各个算子电路设计的输入比特对应的标签提供给计算方。
通过以上离线准备阶段的数据准备,混淆方和计算方可以进行在线的业务处理。这里说的在线,可以理解为获取输入数据,并进行处理的过程。如双方各自获取本地业务特征数据作为输入,调用各种算子电路安全完成业务处理(如得到预测结果)的过程。
在线业务处理阶段的业务处理过程可以包括至少一个算子电路的执行。如图2所示,针对一个当前算子电路,可以包括以下流程:步骤201,混淆方和计算方分别获取当前算子电路的本地输入数据;步骤202,混淆方和计算方从预先对当前算子电路的算子类型确定的混淆表集中选择当前混淆表;步骤203,计算方根据自身的本地输入数据、混淆方针对其本地输入数据对应的输入标签和当前混淆表执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;步骤204,混淆方和计算方根据计算方得到的各个输出标签,安全确定相应输出线在混淆方存储的第一结果和在计算方存储的第二结果,使得单个第一结果和单个第二结果共同描述相应的输出比特。
首先,在步骤201中,混淆方和计算方各自获取本地针对当前算子电路的输入数据。这里,输入数据可以是各种业务数据,例如用户特征数据、词汇序列数据等等。在业务处理过程可以分为多个层次(如多层神经网络中每一层都可以看作一个独立的层次,其他机器学习模型中,单个计算步骤也可以看作一个层次)的情况下,输入数据还可以是前面的层次的输出数据,即中间结果数据。多方安全计算的具体业务场景中,混淆方和计算方中的一方持有输入数据,或者两方都持有部分输入数据。
接着,步骤202,混淆方和计算方从预先对当前算子电路的算子类型确定的混淆表集中选择至少一份混淆表。
可以理解,混淆方和计算方预先针对各个算子电路类型确定有混淆表集。算子类型例如可以为乘法算子、加法算子、比较算子等。单个算子类型的算子电路可以对应有一个或多个混淆表集。混淆方和计算方可以从当前算子电路相应算子类型下的混淆表集中选择一份混淆表。这里的一份混淆表可以包括一个或多个门电路的混淆表,用于完成相应算子类型的算子电路的计算。例如当前算子电路为乘法算子电路,则混淆方和计算方可以从乘法算子电路对应的混淆表集中选择一份混淆表。如选择乘法算子电路对应的第3个混淆表集中的第5份混淆表。
实践中,混淆方和计算方可以按顺序选择混淆表,例如从第一混淆表集的第一份混淆表开始依次使用混淆表,也可以由其中一方随机选择一份混淆表并将选择结果(如混淆表标识)同步给另一方,还可以双方协商确定其中一份混淆表,在此不做限定。
然后,通过步骤203,计算方根据自身的输入数据、混淆方针对其本地输入数据对应的输入标签和当前混淆表执行当前算子电路,得到当前算子电路各个输出线分别对应的各个输出标签。
根据输入数据,可以确定当前算子电路的各个输入比特。根据图1示出的混淆电路的执行原理可知,计算方可以根据各个输入比特和混淆表,依次解密各个电路,得到当前算子电路最终的输出标签。
其中,当前算子电路中的输入比特可以是混淆方提供的,也可以是计算方提供的。根据混淆电路的原理,混淆方提供的输入比特,可以由混淆方直接向计算方提供相应的输入标签(计算方并不知道标签对应的比特值)。对于计算方提供的输入比特,则可以通过不经意传输方式从混淆方获取相应输入标签。不经意传输可以让计算方在混淆方的两个秘密(相应输入线的0标签和1标签)中选择一个而混淆方不知其选择的是哪一个。
根据本说明书一个可能的设计,为了把更多的通信放在离线准备阶段,混淆方和计算方预先执行多次ROT,并得到相应的执行结果,计算方可以在此基础上构造GOT从而确定本地输入比特对应的输入标签。
如前文的描述,ROT的执行结果是混淆方持有参考字符串组,计算方持有选择数据。计算方可以通过GOT从混淆方提供的0标签、1标签的两份密文中选择出输入标签。其中,两份密文由混淆方根据输入比特和选择比特的比较结果,由两个参考字符串分别对0标签、1标签通过异或方式加密得到。具体地,在输入比特和选择比特相同的情况下,用0比特对应的参考字符串加密0标签,用1比特对应的参考字符串加密1标签,在输入比特和选择比特的异或结果为1的情况下,用0比特对应的参考字符串加密1标签,用1比特对应的参考字符串加密0标签。如此,可以保证计算方通过选择标签正确解密本地输入比特对应的密文。
作为参考字符串的一个示例,对于一个输入线,假设混淆方生成的0标签和1标签分别为m0、m1,参考字符串为L0、L1,计算方通过不经意传输(如ROT)选择一个候选标签c以及相应的参考字符串Lc作为选择数据,c可以为0或1。在c=0时Lc为L0,c=1时Lc=L1。在确定计算方的输入比特对应的输入标签时,计算方可以比较输入比特与c是否相同(例如通过异或值或者其他方式描述),并将比较结果发送至混淆方。混淆方在比较结果是相同的情况下,使用两个参考字符串按照相对应的候选比特对两个备选标签分别加密,得到所述两份密文,例如将L0对m0的加密结果如M0=L0^m0、L1对m1的加密结果如M1=L1^m1发送至计算方,由计算方正确解密Lc^M0或Lc^M1中的一个得到相应的输入标签。另一方面,混淆方在比较结果是不同的情况下,混淆方使用两个参考字符串对两个备选标签按照候选比特交叉加密,得到所述两份密文,例如将L0对m1的加密结果如M0=L0^m1、L1对m0的加密结果如M1=L1^m0发送至计算方,由计算方正确解密Lc^M0或Lc^M1中的一个得到输入比特对应的输入标签。
当前算子电路可以由多个输出线,相应的输出结果可以有多个输出比特,针对各个输出线,计算方都能得到相应的输出标签,但计算方并不知晓相应输出标签对应的比特值,从而不能得到当前算子电路的输出结果。
进一步地,步骤204,混淆方和计算方根据计算方得到的各个输出标签,安全确定相应输出线在混淆方存储的第一结果和在计算方存储的第二结果,使得单个第一结果和单个第二结果共同描述相应的输出比特。
为了保证输出结果由混淆方和计算方各自持有一部分,可以对当前算子电路的单个输出标签拆分得到两部分分别由计算方和混淆方持有的数据。这里说的拆分,可以理解为两部分数据按照预定方式的组合结果为真实值,但实际上并没有进行数据拆分。这是因为,混淆方持有输出线的全部备选标签,且明确备选标签与候选比特的对应关系,拆分容易将输出标签泄露给某一方,从而至少一方知晓输出比特的真值。
可以理解,对于一个输出比特而言,可能是0,也可能是1,而0、1的异或结果也是0或1,因此,可以用混淆方和计算方各自持有的一个比特来描述输出结果。因此,根据一个可选的实施方式,在混淆方和计算方持有的两个比特通过异或门处理的情况下,可以得到相应输出比特的真值。其中,单个输出比特的拆分可以通过各种合理的方式进行。在比特拆分过程中,由于混淆方不能知道计算方算出的值,计算方也不能知道混淆方拆分得到的值,因此,可以按照预定规则分别在混淆方和计算方得到一个比特,使它们的异或结果可以还原出计算方的输出比特。
考虑异或门的特殊性质,假设0标签和1标签在某一位上的异或结果为1,则可以保证0标签或1标签该位上的值与自身该位上的值的异或结果为0,而与另一个标签在该位上的值的异或结果为1。从而,如果混淆方取0标签该位上的值,计算方取输出标签在该位上的值,作为拆分的第一结果、第二结果,则第一结果、第二结果的异或值可以在计算方得到的输出标签为0标签的情况下还原出0,在计算方得到的输出标签为1标签的情况下还原出1,从而有效描述输出比特。可以理解的是,这里说的还原出真实输出比特仅仅是逻辑上的描述,实践中,混淆方对第一结果、计算方对第二结果的确定过程是相互独立的过程,且为了保护隐私,并不真实还原出输出比特的真值。
这样,根据一个实施例,混淆方在离线准备阶段生成输入标签时,可以令单个输入线的0标签、1标签至少在预定位上的异或值为1,例如最低位(最右一位)为1,则针对当前算子电路的一个输出线,在计算方得到输出标签后,可以取输出标签在该预定位上的比特值,而混淆方针对该输出线取0标签在该位上的比特值。在一个实施例中,可以令各个输入线的0标签、1标签的异或值均为随机字符串R(不泄露给计算方),则以上预定位可以是R中比特值为1的任一位。
利用这种处理方式,在当前算子电路下游还连接有其他电路的情况下,可以通过一个异或门结合不经意传输将两方持有的输出比特利用标签进行计算,并将计算结果用于下游电路。
实践中,还可以通过其他方式对输出比特进行拆分、合成操作,在此不做赘述。
从而,通过图2示出的实施例,各种类型的算子电路可以任意组合,完成各种业务处理过程。这样,不仅提高了算子电路拆分、组合的灵活性,而且由于可以按照算子电路的类型分别预先存储大量混淆表、ROT结果,使得在线业务处理阶段的通信量大大降低,有利于提高多方安全业务处理的效率。
在可选的实施方式中,离线准备阶段和在线业务处理阶段可以并行执行,这样,在离线准备阶段准备适量混淆表、参考字符串等备用数据,而在在线业务处理阶段启动后可以实时补给备用数据,这样,可以进一步提高业务处理效率。
进一步地,参考图3所示,在在线业务处理阶段,计算方可以执行以下流程:步骤301,获取当前算子电路的本地输入数据;步骤302,和混淆方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;步骤303,本地输入数据、当前混淆表以及从混淆方获取的各个输入标签执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;步骤304,针对得到的各个输出标签,确定各个输出线在本地的各个第二结果,单个第二结果和混淆方本地确定的相应第一结果共同描述相应的输出比特。
另一方面,参考图4所示,在在线业务处理阶段,混淆方可以执行以下流程:步骤401,获取当前算子电路的本地输入数据;步骤402,和计算方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;步骤403,根据当前混淆表向计算方提供当前算子电路中与上述本地输入数据相关的各个输入标签,以供计算方执行当前算子电路;步骤404,利用当前算子电路的各个输出线对应的备选标签,确定当前算子电路的各个输出线在本地的各个第一结果,单个第一结果和计算方确定的第二结果共同描述相应的输出比特。
值得说明的是,图3、图4示出的方法实施例分别是图2的交互流程中的计算方、混淆方执行的流程,关于图2的描述中针对计算方、混淆方的相关说明也同样适用于图3、图4的方法实施例,在此不再赘述。
根据另一方面的实施例,还提供一种设于计算方的基于混淆电路的业务处理装置。图5示出了一个实施例的基于混淆电路的业务处理装置500,可以设于计算方。如图5所示,装置500包括:
获取单元501,配置为获取当前算子电路的本地输入数据;
选择单元502,配置为和混淆方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;
执行单元503,配置为根据上述输入数据、当前混淆表以及从混淆方获取的各个输入标签执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;
拆分单元504,配置为针对得到的各个输出标签,和混淆方安全确定相应输出比特在混淆方存储的第一结果和在计算方存储的第二结果,使得单个第二结果和混淆方本地确定的相应第一结果共同描述相应的输出比特。
根据另一方面的实施例,还提供一种设于混淆方的基于混淆电路的业务处理装置。图6示出了一个实施例的基于混淆电路的业务处理装置600,可以设于混淆方。如图6所示,装置600包括:
获取单元601,配置为获取当前算子电路的本地输入数据;
选择单元602,配置为和计算方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;
提供单元603,配置为根据当前混淆表向计算方提供当前算子电路中与上述输入数据相关的各个输入标签,以供计算方执行当前算子电路;
确定单元604,配置为根据当前算子电路的各个输出线对应的备选标签,确定当前算子电路的各个输出线在本地的各个第一结果,单个第一结果和计算方确定的第二结果共同描述相应的输出比特。
值得说明的是,图5、图6所示的装置500、600分别与图3、图4描述的方法相对应,图3、图4的方法实施例中的相应描述同样适用于装置500、600,在此不再赘述。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3、图4等所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3、图4等所描述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本说明书的技术构思的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的技术构思的具体实施方式而已,并不用于限定本说明书的技术构思的保护范围,凡在本说明书实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的技术构思的保护范围之内。
Claims (14)
1.一种基于混淆电路的业务处理方法,所述业务处理包括多个算子电路的连续执行,所述方法包括:
混淆方和计算方各自获取本地针对当前算子电路的输入数据;
混淆方和计算方从预先对当前算子电路的算子类型确定的混淆表集中选择当前混淆表;
计算方根据自身的本地输入数据、混淆方针对其本地输入数据对应的输入标签和所述当前混淆表执行当前算子电路,得到当前算子电路各个输出线分别对应的各个输出标签;
混淆方和计算方根据计算方得到的各个输出标签,安全确定相应输出线在混淆方存储的第一结果和在计算方存储的第二结果,使得单个第一结果和单个第二结果共同描述相应的输出比特。
2.根据权利要求1所述的方法,其中,混淆方、计算方均预先针对各个算子类型各自对应存储混淆表集,单个算子类型对应至少一个混淆表集,单个混淆表集包括相应单个算子类型对应的算子电路的多份混淆表,单份混淆表包括单个算子电路的全部门电路各自的输入标签对输出标签的加密结果。
3.根据权利要求1所述的方法,其中,对于当前算子电路中由计算方提供的单个输入比特,计算方根据预先存储的选择数据集中的单组选择数据,从混淆方获取相应的单个输入标签,其中,所述单组选择数据在混淆方对应有单组参考字符串,单组参考字符串包括分别对应于两个候选比特的两个参考字符串,所述单组选择数据包括通过随机的不经意传输方式对混淆方的两个候选比特进行选择得到的选择比特以及选择比特对应的参考字符串。
4.根据权利要求3所述的方法,其中,由计算方提供的输入比特包括第一比特,所述第一比特对应的第一输入标签通过以下方式确定:
计算方从所述选择数据集中随机选择第一选择数据组,并将所述第一比特与第一选择数据组中的第一选择比特的第一比较结果提供给混淆方,所述第一选择数据组包括所述第一选择比特和相应的第一选择字符串;
混淆方获取与所述第一选择数据组对应的第一参考字符串组,并根据所述第一比较结果向计算方提供两个候选比特分别对应的两份密文,所述两份密文由所述第一参考字符串组中的两个参考字符串分别对两个候选比特对应的两个备选标签加密得到;
计算方用所述第一选择字符串解密所述两份密文,得到所述第一输入标签。
5.根据权利要求4所述的方法,其中,在所述第一比较结果为相同的情况下,混淆方使用两个参考字符串按照相对应的候选比特对两个备选标签分别加密,得到所述两份密文;
在所述第一比较结果为不同的情况下,混淆方使用两个参考字符串对两个备选标签按照候选比特交叉加密,得到所述两份密文。
6.根据权利要求1所述的方法,其中,单个输出标签对应的第一结果由混淆方从0标签的预定位获取,第二结果由计算方从该单个输出标签的预定位获取,其中所述预定位为混淆方针对所述单个输出标签对应的单个输出线生成的两个备选标签的异或结果为1的位。
7.根据权利要求5所述的方法,其中,混淆方针对各个输出线生成的两个备选标签的异或结果恒为随机字符串R,所述预定位根据R中比特值为1的位确定。
8.根据权利要求1所述的方法,其中,单个第一结果和单个第二结果的异或值为相应输出比特的真值。
9.一种基于混淆电路的业务处理方法,所述业务处理包括多个算子电路的连续执行,所述方法由计算方执行,包括:
获取当前算子电路的本地输入数据;
和混淆方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;
根据所述本地输入数据、所述当前混淆表以及从混淆方获取的各个输入标签执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;
针对得到的各个输出标签,确定各个输出线在本地的各个第二结果,单个第二结果和混淆方本地确定的相应第一结果共同描述相应的输出比特。
10.一种基于混淆电路的业务处理方法,所述业务处理包括多个算子电路的连续执行,所述方法由混淆方执行,包括:
获取当前算子电路的本地输入数据;
和计算方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;
根据所述当前混淆表向计算方提供当前算子电路中与本地输入数据相关的各个输入标签,以供计算方执行当前算子电路;
利用当前算子电路的各个输出线对应的备选标签,确定当前算子电路的各个输出线在本地的各个第一结果,单个第一结果和计算方确定的第二结果共同描述相应的输出比特。
11.一种基于混淆电路的业务处理装置,所述业务处理包括多个算子电路的连续执行,所述装置设于计算方,包括:
获取单元,配置为获取当前算子电路的本地输入数据;
选择单元,配置为和混淆方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;
执行单元,配置为根据所述本地输入数据、所述当前混淆表以及从混淆方获取的各个输入标签执行当前算子电路,得到当前算子电路的各个输出线分别对应的各个输出标签;
确定单元,配置为针对得到的各个输出标签,确定各个输出比特本地的各个第二结果,使得单个第二结果和混淆方本地确定的相应第一结果共同描述相应的输出比特。
12.一种基于混淆电路的业务处理装置,所述业务处理包括多个算子电路的连续执行,所述装置设于混淆方,包括:
获取单元,配置为获取当前算子电路的本地输入数据;
选择单元,配置为和计算方同步从当前算子电路的算子类型对应的混淆表集中选择的当前混淆表;
提供单元,配置为根据所述当前混淆表向计算方提供当前算子电路中与本地输入数据相关的各个输入标签,以供计算方执行当前算子电路;
确定单元,配置为根据当前算子电路的各个输出线对应的备选标签,确定当前算子电路的各个输出线在本地的各个第一结果,单个第一结果和计算方确定的第二结果共同描述相应的输出比特。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求9或10所述的方法。
14.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求9或10所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111520808.9A CN114239089A (zh) | 2021-12-13 | 2021-12-13 | 基于混淆电路的业务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111520808.9A CN114239089A (zh) | 2021-12-13 | 2021-12-13 | 基于混淆电路的业务处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114239089A true CN114239089A (zh) | 2022-03-25 |
Family
ID=80755320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111520808.9A Pending CN114239089A (zh) | 2021-12-13 | 2021-12-13 | 基于混淆电路的业务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114239089A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692209A (zh) * | 2022-05-31 | 2022-07-01 | 蓝象智联(杭州)科技有限公司 | 一种基于混淆技术的图联邦方法及系统 |
CN115563645A (zh) * | 2022-09-17 | 2023-01-03 | 工业和信息化部装备工业发展中心 | 基于自动驾驶模拟仿真业务场景的安全协同计算方法 |
-
2021
- 2021-12-13 CN CN202111520808.9A patent/CN114239089A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692209A (zh) * | 2022-05-31 | 2022-07-01 | 蓝象智联(杭州)科技有限公司 | 一种基于混淆技术的图联邦方法及系统 |
CN115563645A (zh) * | 2022-09-17 | 2023-01-03 | 工业和信息化部装备工业发展中心 | 基于自动驾驶模拟仿真业务场景的安全协同计算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11290266B2 (en) | Secure multi-party computation method and apparatus, and electronic device | |
US11206132B2 (en) | Multiparty secure computing method, device, and electronic device | |
US20230087864A1 (en) | Secure multi-party computation method and apparatus, device, and storage medium | |
US7978851B2 (en) | Keystream encryption device, method, and program | |
CN109246098B (zh) | 一种支持备份服务器同步密文比较的方法 | |
US20100217986A1 (en) | Authenticated secret sharing | |
CN114239089A (zh) | 基于混淆电路的业务处理方法及装置 | |
CN112597524B (zh) | 隐私求交的方法及装置 | |
CN110912713A (zh) | 多方联合进行模型数据处理的方法及装置 | |
CN112818374A (zh) | 一种模型的联合训练方法、设备、存储介质及程序产品 | |
CN112287377A (zh) | 基于联邦学习的模型训练方法、计算机设备及存储介质 | |
CN108521393A (zh) | 数据交互方法、装置、系统、计算机设备和存储介质 | |
CN111125727A (zh) | 混淆电路生成方法、预测结果确定方法、装置和电子设备 | |
WO2020253108A1 (zh) | 信息隐匿方法、装置、设备及存储介质 | |
CN110580409A (zh) | 模型参数确定方法、装置和电子设备 | |
US20240039896A1 (en) | Bandwidth controlled multi-party joint data processing methods and apparatuses | |
WO2021129470A1 (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
CN106789008A (zh) | 对可共享的加密数据进行解密的方法、装置及系统 | |
JPWO2015166701A1 (ja) | 暗号化方法、プログラム、および、システム | |
CN114900442B (zh) | 用于对业务数据进行预测的方法及其相关产品 | |
CN114726511B (zh) | 数据处理方法和装置 | |
CN113347270B (zh) | 一种网络传输文件防水平越权方法和装置 | |
CN115567189A (zh) | 一种加密方法、解密方法及装置 | |
CN114239087A (zh) | 基于混淆电路的布尔电路连续执行方法及装置 | |
CN114866312A (zh) | 一种保护数据隐私的共有数据确定方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |