CN116016368A - 多方安全计算中的网络传输方法和执行该方法的调度器 - Google Patents
多方安全计算中的网络传输方法和执行该方法的调度器 Download PDFInfo
- Publication number
- CN116016368A CN116016368A CN202211705464.3A CN202211705464A CN116016368A CN 116016368 A CN116016368 A CN 116016368A CN 202211705464 A CN202211705464 A CN 202211705464A CN 116016368 A CN116016368 A CN 116016368A
- Authority
- CN
- China
- Prior art keywords
- mpc
- data
- received data
- operator
- task unit
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 59
- 238000000034 method Methods 0.000 title claims abstract description 53
- 239000000872 buffer Substances 0.000 claims abstract description 76
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000002618 waking effect Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 description 24
- 230000003993 interaction Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002244 precipitate Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书实施例提供了涉及多方安全计算中的网络传输方法和执行该方法的调度器。网络传输方法通过调度器执行,包括以下步骤:调度第一任务单元,使其执行涉及第一mpc算子中的本地运算,并响应于需要向第二方发送数据,将第一发送数据存入第一缓存区;以及,调度第二任务单元,使其执行第二mpc算子中的本地运算,并响应于需要向第二方发送数据,将第二发送数据存入第一缓存区。响应于预设触发条件,调度器读取第一缓存区中存储的数据,形成第一数据包,并将第一数据包通过网络发送给第二方。
Description
技术领域
本说明书一个或多个实施例涉及多方安全计算,尤其涉及针对多方安全计算过程的网络传输方法和装置。
背景技术
在互联网大数据场景下,各个平台沉淀并积累了大量的数据。例如,电子支付平台拥有商户的交易流水数据,电子商务平台存储有商户的销售数据,银行机构拥有商户的借贷数据。为了增大数据价值,存在多个平台联合进行处理数据的需求。例如,以上的电子支付平台,电子商务平台和银行机构,有意向联合进行机器学习,训练出商户分类模型。
然而,各方存储的数据中往往涉及用户的隐私数据。目前,业界对于数据安全和个人隐私越来越重视,国内近来也紧密出台了多项数据保护相关政策法规。因此,在多方联合进行数据处理过程中保护各方隐私安全,成为关注的要点。为此,提出了隐私计算的概念,用于在不泄露原始数据的情况下,实现数据联合处理,使得数据可用而不可见。在隐私计算中,多方安全计算MPC(Mu lt i-Party Computat ion)对硬件没有特殊要求,并且不影响结果精度,因此广泛应用在多种隐私计算场景中。
由此,希望能有改进的方案,可以提升MPC计算的执行性能。
发明内容
本说明书一个或多个实施例描述了一种多方安全计算中的网络传输方法,可以在执行多方安全计算过程中,优化网络传输方式,提高mpc计算效率和执行性能。
根据第一方面,提供了一种多方安全计算中的网络传输方法,通过第一方中的调度器执行,所述方法包括:
调度第一任务单元,使其执行涉及多方安全计算mpc的第一mpc算子中的本地运算,并响应于第一mpc算子需要向第二方发送数据,将第一发送数据存入第一缓存区;
调度第二任务单元,使其执行第二mpc算子中的本地运算,并响应于第二mpc算子需要向第二方发送数据,将第二发送数据存入所述第一缓存区;其中,所述第二mpc算子与所述第一mpc算子均属于算子执行图中的目标层级,所述目标层级中包括彼此不具有依赖关系的mpc算子;
响应于预设触发条件,读取所述第一缓存区中存储的数据,形成第一数据包;
将所述第一数据包通过网络发送给所述第二方。
根据一个实施例中,在调度第一任务单元之前,调度器针对第一mpc算子,创建所述第一任务单元。
在一个实施例中,第一任务单元和第二任务单元,是同一线程下的两个协程。
根据一种实现方式,所述预设触发条件包括:目标层级中所有mpc算子均完成本轮本地运算。
在一个实施例中,第一缓存区为第一缓存队列;第一数据包包括,按加入到第一缓存队列的先后顺序排列的多份发送数据。
根据一种实施方式,上述方法还包括:获取有向无环图DAG形式的所述算子执行图,其根据涉及多方安全计算的目标计算任务而生成。
根据一种实施方式,上述方法还包括:
从所述第二方接收第二数据包,将其存储在第二缓存区;
从所述第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给所述第一任务单元和第二任务单元,使得第一任务单元基于所述第一接收数据执行所述第一mpc算子,以及第二任务单元基于所述第二接收数据执行所述第二mpc算子。
在上述实施方式的一个实施例中,第二缓存区为第二缓存队列;从所述第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给所述第一任务单元和第二任务单元包括:从所述第二缓存队列的队列头读取第一接收数据,将所述第一接收数据传递给所述第一任务单元,使其基于所述第一接收数据执行所述第一mpc算子;从所述第二缓存队列的队列头读取第二接收数据,将所述第二接收数据传递给所述第二任务单元,使其基于所述第二接收数据执行所述第二mpc算子。
在上述实施方式的另一实施例中,第二缓存区为缓存栈;从所述第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给所述第一任务单元和第二任务单元包括:从所述缓存栈的栈顶读取第二接收数据,将所述第二接收数据传递给所述第二任务单元,使其基于所述第二接收数据执行所述第二mpc算子;从所述缓存栈的栈顶读取第一接收数据,将所述第一接收数据传递给所述第一任务单元,使其基于所述第一接收数据执行所述第一mpc算子。
在一个实施例中,上述将第一接收数据通知给所述第一任务单元,具体包括:将所述第一接收数据存储到所述第一任务单元对应的内存空间;唤醒所述第一任务单元;将所述第一接收数据在所述内存空间的存储地址通知给所述第一任务单元。
根据第二方面,提供了一种在多方安全计算中优化网络传输的调度器,部署在第一方中,所述调度器包括:
第一调度模块,配置为调度第一任务单元,使其执行涉及多方安全计算mpc的第一mpc算子中的本地运算,并响应于第一mpc算子需要向第二方发送数据,将第一发送数据存入第一缓存区;
第二调度模块,配置为调度第二任务单元,使其执行第二mpc算子中的本地运算,并响应于第二mpc算子需要向第二方发送数据,将第二发送数据存入所述第一缓存区;其中,所述第二mpc算子与所述第一mpc算子均属于算子执行图中的目标层级,所述目标层级中包括彼此不具有依赖关系的mpc算子;
读取模块,配置为响应于预设触发条件,读取所述第一缓存区中存储的数据,形成第一数据包;
发送模块,配置为将所述第一数据包通过网络发送给所述第二方。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
在本说明书的实施例中,提出一种多方安全计算中的网络优化传输的方案,其中,针对并行执行的算子,对其网络交互数据进行合并传输,从而可以兼顾高交互与高吞吐量的算法协议,提升运行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出mpc乘法算子的实现过程示例;
图2示出mpc除法算子的实现过程示例
图3示出根据一个实施例的多方安全计算中的网络传输方法的流程图;
图4示出根据一个实施例的算子执行图的例子;
图5示出执行图4所示的算子执行图的流程示例;
图6示出根据一个实施例的调度器的结构示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,多方安全计算MPC是常用的隐私计算方式,应用在多种隐私计算场景中。实践中,为执行具体的安全计算,用户一般采用高级脚本语言(如Python等)编写用户脚本,在其中定义MPC计算的计算过程。脚本语言的解释执行器将用户脚本翻译成mpc算子,依次执行。
不同于常规本地运算的函数,mpc算子的实现需要多方交互和网络传输。图1和图2分别示出mpc乘法算子和mpc除法算子的实现过程示例。在图1的示例中,两方基于秘密分享实现mpc乘法计算。具体地,如图1所示,A方和B方为了联合执行mpc乘法,首先各自获取随机数三元组,然后进行本地计算。接着,A方和B方需通过网络传输,交换本地计算产生的中间结果。接着,基于交换的中间结果,处理得到乘法计算结果的本方分片。两方分片之和,等于乘法计算结果。
在图2的示例中,AB两方基于混淆电路GC实现mpc除法计算。具体地,首先由其中一方,例如A方准备混淆电路GC。然后,在第二个阶段,A方与B方通过不经意传输OT协议进行网络传输,从而实现A方将混淆电路GC的混淆真值表发送给B方,B方执行GC电路的运算。然后,A方和B方各自得到除法结果的结果分片。
由此可见,不同的mpc算子,甚至相同算子的不同实现算法,其内部计算过程和网络交互过程都是不同的,对网络传输的要求也是不同的。有的算子执行需要多轮网络交互,每次交互的数据量较少,因此对时延的要求比较高;有的算子执行所需网络交互轮次较少,但单次通信的网络数据量较大,对于带宽的要求比较高。而在常规的MPC计算中,如前所述,各个mpc算子依次执行,并且执行过程中直接操作网络进行传输。这使得同一计算平台很难兼顾不同mpc算子对网络传输的不同要求,对执行性能带来不利影响。
有鉴于此,在本说明书实施例中,提出一种多方安全计算中的网络优化传输的方案,其中,针对并行执行的算子,对其网络交互数据进行合并传输,从而可以兼顾高交互与高吞吐量的算法协议,提升运行效率。
具体地,考虑执行多方安全计算的某一方,下文称为第一方,在执行多方安全计算过程中,该第一方需要与第二方进行交互。为了优化网络传输,根据本说明书的实施例,可以在第一方中设置调度器,该调度器用于对可并发执行的任务单元进行调度。在执行多方安全计算的过程中,调度器可以调度多个任务单元,并行执行彼此互不依赖的多个mpc算子。在某个任务单元执行完对应mpc算子本轮的本地运算,需要与第二方交互的时候,不同于常规技术中直接操作网络进行传输,在说明书的多个实施例中,调度器对交互数据进行合并传输。在下文中,将第一方与第二方交互过程简化为,先发送数据,再接收数据的过程。于是,在需要进行网络交互时,各任务单元将待发送的数据存储至发送缓存区。在多个mpc算子本轮的本地运算均已完成的情况下,调度器将各个任务单元存储的待发送数据合并在一起,一并发送给第二方。接收过程与之类似。如此,实现网络交互数据的合并传输,提升多方安全计算的运行效率。
下面描述以上技术构思的具体实现。
图3示出根据一个实施例的多方安全计算中的网络传输方法的流程图。该方法通过第一方中的调度器执行,该第一方可以实现为任何具有计算、处理能力的装置、设备、平台、设备集群。如图3所示,该方法包括以下步骤。
首先在预备阶段,调度器可以获取针对目标计算任务生成的算子执行图,其中目标计算任务是涉及多方安全计算的计算任务。在一个实施例中,目标计算任务由用户通过高级编程语言(典型的,可以是高级脚本语言)描述。相应语言的编译器或解释执行器,可以根据用户代码中定义的计算式和计算逻辑进行执行路径优化,生成反映mpc算子执行路径的算子执行图。或者,该算子执行图也可以是其他专用的优化器根据目标计算任务而生成。
算子执行图一般是有向无环图DAG的形式,因此,下文中多处用DAG指代算子执行图。在该DAG中,可以包括若干层级,每一层级中包括彼此不具有依赖关系的mpc算子的并行运算。
假定在DAG图的某个层级,下文称为目标层级,包括多个mpc算子。下面就目标层级中两个mpc算子,即,第一mpc算子和第二mpc算子的执行过程和网络传输进行描述。然而应理解,目标层级中还可能包含更多其他mpc算子。
针对第一mpc算子和第二mpc算子,调度器首先创建两个任务单元,用于分别执行该两个mpc算子。接下来进入算子执行阶段。
参照图3,在步骤31,调度器调度第一任务单元,使其执行第一mpc算子中的本地运算,并响应于需要向第二方发送数据,将第一发送数据存入第一缓存区;在步骤32,调度器调度第二任务单元,使其执行第二mpc算子中的本地运算,并响应于需要向第二方发送数据,将第二发送数据存入所述第一缓存区。
需理解,以上的任务单元是可并行执行的任务单元。在一个实施例中,一个任务单元对应于一个线程。如此,在步骤31和32,两个线程并行执行,并行地处理第一mpc算子和第二mpc算子的本地计算任务。
然而,线程开启和同步的开销比较大,而算子执行图的依赖与并行关系往往比较复杂,粒度比较小,一个层级可能包括许多个需并行执行的算子。如此,为每一个算子开启一个线程代价较高,甚至有时候难以在单张算子执行图中实现多线程并行。因此,在一个实施例中,考虑使用更细粒度的协程,进行算子的运算。在该实施例中,第一任务单元和第二任务单元,是同一线程下的两个协程。协程的运行方式使得,在“微观”的某一时刻只有一个协程在执行,但是在“宏观”上是看起来仍是并行的。从而,通过两个协程,并行地处理第一mpc和第二mpc算子的本地计算任务。
当第一任务单元执行完第一mpc算子的本轮本地运算,需要与第二方进行网络交互时,它将有待发送的第一发送数据存储至第一缓存区,而不是直接发送。与之类似的,当第二任务单元执行完第二mpc算子的本轮本地运算,需要与第二方进行网络交互时,它将有待发送的第二发送数据也存储至第一缓存区。如此,在第一缓存区,存储了目标层级中各个mpc算子在本轮有待发送的数据。
于是,在步骤33,响应于预设触发条件,调度器读取第一缓存区中存储的数据,形成第一数据包。
在典型情况下,上述预设触发条件为,当前的目标层级中所有mpc算子均完成本轮的本地运算。可选的,在一些情况下,预设触发条件还可以包括,例如,第一缓存区存满,在某个mpc算子的执行出现异常的情况下,等候超过预定时长,等等。
在满足以上的触发条件的情况下,调度器读取第一缓存区中存储的数据,并按照第一顺序排列多个mpc算子对应的多份发送数据,形成第一数据包。上述的第一顺序是与第二方约定的顺序,使得第二方在接收到第一数据包之后,能够将多份发送数据与多个mpc算子对应起来。
在一个实施例中,第一缓存区为缓存队列的形式。调度器按照约定的次序(例如,同一层级中算子,按照从左到右的次序)开启协程形式的各个任务单元,各个任务单元依次将其发送数据存入该缓存队列。例如,第一任务单元首先将第一发送数据存入缓存队列,然后第二任务单元将第二发送数据存入缓存队列。从而,调度器直接读取该缓存队列中按照加入先后顺序依次排列的发送数据,形成第一数据包。
在其他实施例中,第一缓存区也可以是其他形式,第一顺序也可以是其他顺序。例如,第一缓存区也可以是栈的形式,调度器按照加入第一缓存区的反向顺序排列各份发送数据,形成第一数据包。又例如,调度器还可以采用约定映射方式,将执行各个mpc算子的任务单元,映射为存储位置编号和/或排序编号,从而形成第一数据包。
从而,在步骤34,调度器将第一数据包通过网络发送给第二方。
通过以上过程,调度器将并行执行的多个mpc算子的发送数据进行合并,将合并后的数据通过网络发送给第二方,从而优化网络传输过程。
在一些实施例中,以上的第一数据包中的发送数据是需要第二方响应的数据。第一方在发送上述第一数据包之后,各个任务执行单元就进入挂起状态,等待第二方数据的到来。
相应实施例中的网络传输方法还可以包括以下步骤。
在步骤35,调度器从第二方接收第二数据包,将其存储在第二缓存区;
在步骤36,从第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给第一任务单元和第二任务单元,使得第一任务单元基于第一接收数据执行第一mpc算子,以及第二任务单元基于第二接收数据执行第二mpc算子。
需要理解,上述第二数据包是第二方按照第二顺序排列多个mpc算子对应的多份数据而形成,该第二顺序是双方约定的顺序,只要使得第一方能够将其中的多份数据与多个mpc算子对应起来。典型的,该第二顺序与前述第一数据包对应的第一顺序相同。但是在其他例子中,第二顺序也可以与第一顺序不同。下面假定第二数据包中包括依次排列的第一接收数据和第二接收数据。
在一个实施例中,第二缓存区是缓存队列的形式,称为第二缓存队列。于是,调度器可以先从第二缓存队列的队列头读取第一接收数据,将第一接收数据传递给第一任务单元,使其基于所述第一接收数据继续执行第一mpc算子。在读取第一接收数据之后,队列头更新为第二接收数据。调度器从此时的队列头又读取第二接收数据,将第二接收数据传递给第二任务单元,使其基于第二接收数据继续执行第二mpc算子。
在另一实施例中,第二缓存区为缓存栈的形式。调度器从缓存栈的栈顶读取第二接收数据,将第二接收数据传递给第二任务单元,使其基于所述第二接收数据继续执行第二mpc算子。在读取第二接收数据之后,栈顶更新为第一接收数据。然后,调度器从缓存栈的栈顶继续读取第一接收数据,将第一接收数据传递给第一任务单元,使其基于第一接收数据继续执行第一mpc算子。
调度器将一份接收数据传递给对应的任务单元可以通过以下方式实现。以第一接收数据为例,调度器首先将第一接收数据存储到第一任务单元对应的内存空间。在唤醒(之前挂起的)第一任务单元之后,将第一接收数据在上述内存空间的存储地址通知给第一任务单元即可。如此,实现数据的传递和任务的唤醒调度。
以上描述了各个任务单元并行执行mpc算子的一轮交互运算的过程。在mpc算子需要多轮交互运算的情况下,每轮重复以上过程即可。在某些情况下,同一层级中多个mpc算子所需交互轮次不同。此时,在共有轮次中,发送/接收所有mpc算子对应的数据,而在部分算子所需的附加轮次中,仅发送/接收该部分mpc算子对应的数据。此时,调度器可以认为另一部分算子已完成本轮运算,从而依然满足前述的触发条件。例如,假定某一层级具有O1,O2和O3三个mpc算子,其中算子O1和O2需要2轮交互,O3仅需要1轮交互。那么在第一轮执行中,在三个mpc算子均完成其本地运算,将数据存入缓存区后,调度器将三个算子对应的数据发送给第二方。而在第二轮执行中,在算子O1和O2将其数据存入缓存区后,调度器即认为所有算子均已完成本轮运算,将O1和O2算子的数据合并发送给第二方。
下面结合一个具体的例子,描述以上方案的完整实现过程。
在该例子中,假定目标计算任务通过以下的用户脚本定义:
a=a l ice_data()
b=bob_data()
c=a*b
d=a/b
e=c+d
在以上的用户脚本中,由于数据a来自a l ice,数据b来自于bob,且脚本中包含对数据a和数据b进行计算的计算式,因此这段用户脚本涉及多方安全计算mpc。在对该用户脚本进行解释执行的过程中,可以将其中涉及多方安全计算的计算式转换为mpc算子的计算,并生成图4所示的算子执行图。
如图4所示,变量c通过对a和b施加mpc乘法算子得到,变量d通过对a和b施加mpc除法算子得到。由于变量c和变量d的计算过程互不依赖,在图4的算子执行图中,mpc乘法算子和mpc除法算子位于同一层级中。结合图1和图2所示的mpc乘法算子和mpc除法算子的计算过程,两个算子均通过一轮网络交互实现。
针对以上的计算任务和算子执行图,在一个例子中,调度器针对各个算子开启对应的协程,实现算子的并行执行和合并传输。
图5示出执行图4所示的算子执行图的流程示例。
在该示例中,调度器按照算子执行图,从上到下,分层执行。在每一层中,从左到右使用协程执行。
针对第一层,调度器首先针对mpc乘法算子(图3中第一mpc算子的示例)创建一个协程,称为乘法协程。于是,乘法协程开始执行。具体地,如图1所示,乘法协程首先获取三元组,然后开始进行本地计算。在完成本地计算之后,乘法协程需要与对方交互。此时,乘法协程将有待传输的乘法发送数据存入发送队列。之后,乘法协程挂起,将控制流交给调度器。
接着,调度器针对mpc除法算子(第二mpc算子的示例)继续创建除法协程。于是,除法协程开始执行。在除法协程完成本地计算,需要与对方进行交互时,它将除法发送数据添加到发送队列中。然后除法协程将控制流交给调度器,自己挂起。
调度器确定第一层没有可继续执行的算子,并且各算子均已完成本轮的本地运算,于是调度器将发送队列中的数据合并,形成一个数据包,通过网络将该数据包发送给对方。同时,等待对方数据到来。
一旦调度器接收到对方发来的数据包,就将该数据包存入到接收缓存区中。然后,调度器开始分发接收数据。
在本示例中,发送和接收的缓存区都是队列的形式,都按照乘法数据和除法数据的顺序排列。因此,调度器首先从接收队列的队列头读取乘法接收数据,唤醒乘法协程,将乘法接收数据交付或传递给乘法协程。控制流转移到乘法协程。
乘法协程获得到接收到的乘法接收数据,完成剩下的本地计算,获得结果并结束协程。控制流转移到调度器。
调度器又从接收队列当前的队列头读取除法接收数据,唤醒除法协程,并将除法接收数据传递给除法协程。控制流转移到除法协程。
除法协程获得接收到的除法接收数据,完成剩下的本地计算,获得结果并结束协程。控制流又转移回到调度器。
调度器确定完成本层的计算任务,开始执行下一层的计算。
通过以上流程,借助于调度器,实现对于并行执行的mpc乘法算子和mpc除法算子,将其交互数据进行合并传输的优化方案。
根据另一方面的实施例,提供了一种在多方安全计算中优化网络传输的调度器。图6示出根据一个实施例的调度器的结构示意图,该调度器部署在第一方中,第一方可以实现为任何具有数据存储、计算、处理能力的设备、平台或设备集群。如图6所示,该调度器600包括:
第一调度模块61,配置为调度第一任务单元,使其执行涉及多方安全计算mpc的第一mpc算子中的本地运算,并响应于第一mpc算子需要向第二方发送数据,将第一发送数据存入第一缓存区;
第二调度模块62,配置为调度第二任务单元,使其执行第二mpc算子中的本地运算,并响应于第二mpc算子需要向第二方发送数据,将第二发送数据存入所述第一缓存区;其中,所述第二mpc算子与所述第一mpc算子均属于算子执行图中的目标层级,所述目标层级中包括彼此不具有依赖关系的mpc算子;
读取模块63,配置为响应于预设触发条件,读取所述第一缓存区中存储的数据,形成第一数据包;
发送模块64,配置为将所述第一数据包通过网络发送给所述第二方
根据一个实施例中,调度器600还包括(未示出)第一创建模块,配置为针对第一mpc算子,创建所述第一任务单元。
在一个实施例中,第一任务单元和第二任务单元,是同一线程下的两个协程。
根据一种实现方式,所述预设触发条件包括:目标层级中所有mpc算子均完成本轮本地运算。
在一个实施例中,第一缓存区为第一缓存队列;第一数据包包括,按加入到第一缓存队列的先后顺序排列的多份发送数据。
根据一种实施方式,调度器还包括(未示出)执行图获取模块,配置为获取有向无环图DAG形式的所述算子执行图,其根据涉及多方安全计算的目标计算任务而生成。
根据一种实施方式,调度器600还包括(虚线示出):
接收模块65,配置为从所述第二方接收第二数据包,将其存储在第二缓存区;
分发模块66,配置为从所述第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给所述第一任务单元和第二任务单元,使得第一任务单元基于所述第一接收数据执行所述第一mpc算子,以及第二任务单元基于所述第二接收数据执行所述第二mpc算子。
在上述实施方式的一个实施例中,第二缓存区为第二缓存队列;分发模块66具体配置为:从所述第二缓存队列的队列头读取第一接收数据,将所述第一接收数据传递给所述第一任务单元,使其基于所述第一接收数据执行所述第一mpc算子;从所述第二缓存队列的队列头读取第二接收数据,将所述第二接收数据传递给所述第二任务单元,使其基于所述第二接收数据执行所述第二mpc算子。
在上述实施方式的另一实施例中,第二缓存区为缓存栈;分发模块66具体配置为:从所述缓存栈的栈顶读取第二接收数据,将所述第二接收数据传递给所述第二任务单元,使其基于所述第二接收数据执行所述第二mpc算子;从所述缓存栈的栈顶读取第一接收数据,将所述第一接收数据传递给所述第一任务单元,使其基于所述第一接收数据执行所述第一mpc算子。
在一个实施例中,分发模块66将第一接收数据通知给所述第一任务单元具体实现为:将所述第一接收数据存储到所述第一任务单元对应的内存空间;唤醒所述第一任务单元;将所述第一接收数据在所述内存空间的存储地址通知给所述第一任务单元。
通过以上的调度器,对并行执行的多个mpc算子的交互数据进行合并传输,从而优化网络传输方式,兼顾高交互与高吞吐量的算法协议,提升mpc计算的效率。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (13)
1.一种多方安全计算中的网络传输方法,通过第一方中的调度器执行,所述方法包括:
调度第一任务单元,使其执行涉及多方安全计算mpc的第一mpc算子中的本地运算,并响应于第一mpc算子需要向第二方发送数据,将第一发送数据存入第一缓存区;
调度第二任务单元,使其执行第二mpc算子中的本地运算,并响应于第二mpc算子需要向第二方发送数据,将第二发送数据存入所述第一缓存区;其中,所述第二mpc算子与所述第一mpc算子均属于算子执行图中的目标层级,所述目标层级中包括彼此不具有依赖关系的mpc算子;
响应于预设触发条件,读取所述第一缓存区中存储的数据,形成第一数据包;
将所述第一数据包通过网络发送给所述第二方。
2.根据权利要求1所述的方法,在调度第一任务单元之前,还包括:
针对所述第一mpc算子,创建所述第一任务单元。
3.根据权利要求1所述的方法,其中,所述第一任务单元和第二任务单元,是同一线程下的两个协程。
4.根据权利要求1所述的方法,其中,所述预设触发条件包括:所述目标层级中所有mpc算子均完成本轮本地运算。
5.根据权利要求1所述的方法,其中,所述第一缓存区为第一缓存队列;所述第一数据包包括,按加入到第一缓存队列的先后顺序排列的多份发送数据。
6.根据权利要求1所述的方法,还包括:
获取有向无环图DAG形式的所述算子执行图,其根据涉及多方安全计算的目标计算任务而生成。
7.根据权利要求1所述的方法,还包括:
从所述第二方接收第二数据包,将其存储在第二缓存区;
从所述第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给所述第一任务单元和第二任务单元,使得第一任务单元基于所述第一接收数据执行所述第一mpc算子,以及第二任务单元基于所述第二接收数据执行所述第二mpc算子。
8.根据权利要求7所述的方法,其中,所述第二缓存区为第二缓存队列;从所述第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给所述第一任务单元和第二任务单元包括:
从所述第二缓存队列的队列头读取第一接收数据,将所述第一接收数据传递给所述第一任务单元,使其基于所述第一接收数据执行所述第一mpc算子;
从所述第二缓存队列的队列头读取第二接收数据,将所述第二接收数据传递给所述第二任务单元,使其基于所述第二接收数据执行所述第二mpc算子。
9.根据权利要求7所述的方法,其中,所述第二缓存区为缓存栈;从所述第二缓存区中分别读取第一接收数据和第二接收数据,将其分别传递给所述第一任务单元和第二任务单元包括:
从所述缓存栈的栈顶读取第二接收数据,将所述第二接收数据传递给所述第二任务单元,使其基于所述第二接收数据执行所述第二mpc算子;
从所述缓存栈的栈顶读取第一接收数据,将所述第一接收数据传递给所述第一任务单元,使其基于所述第一接收数据执行所述第一mpc算子。
10.根据权利要求8或9所述的方法,其中,将所述第一接收数据传递给所述第一任务单元,包括:
将所述第一接收数据存储到所述第一任务单元对应的内存空间;
唤醒所述第一任务单元;
将所述第一接收数据在所述内存空间的存储地址通知给所述第一任务单元。
11.一种在多方安全计算中优化网络传输的调度器,部署在第一方中,所述调度器包括:
第一调度模块,配置为调度第一任务单元,使其执行涉及多方安全计算mpc的第一mpc算子中的本地运算,并响应于第一mpc算子需要向第二方发送数据,将第一发送数据存入第一缓存区;
第二调度模块,配置为调度第二任务单元,使其执行第二mpc算子中的本地运算,并响应于第二mpc算子需要向第二方发送数据,将第二发送数据存入所述第一缓存区;其中,所述第二mpc算子与所述第一mpc算子均属于算子执行图中的目标层级,所述目标层级中包括彼此不具有依赖关系的mpc算子;
读取模块,配置为响应于预设触发条件,读取所述第一缓存区中存储的数据,形成第一数据包;
发送模块,配置为将所述第一数据包通过网络发送给所述第二方。
12.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-10中任一项所述的方法。
13.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211705464.3A CN116016368A (zh) | 2022-12-29 | 2022-12-29 | 多方安全计算中的网络传输方法和执行该方法的调度器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211705464.3A CN116016368A (zh) | 2022-12-29 | 2022-12-29 | 多方安全计算中的网络传输方法和执行该方法的调度器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116016368A true CN116016368A (zh) | 2023-04-25 |
Family
ID=86026305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211705464.3A Pending CN116016368A (zh) | 2022-12-29 | 2022-12-29 | 多方安全计算中的网络传输方法和执行该方法的调度器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116016368A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149763A1 (en) * | 2013-11-27 | 2015-05-28 | Microsoft Corporation | Server-Aided Private Set Intersection (PSI) with Data Transfer |
CN111143894A (zh) * | 2019-12-24 | 2020-05-12 | 支付宝(杭州)信息技术有限公司 | 一种提升安全多方计算效率的方法及系统 |
CN113849806A (zh) * | 2021-09-30 | 2021-12-28 | 支付宝(杭州)信息技术有限公司 | 多方安全计算中的任务执行方法及装置 |
CN114157716A (zh) * | 2021-12-02 | 2022-03-08 | 深圳前海微众银行股份有限公司 | 基于区块链的数据处理方法、装置和电子设备 |
EP4062581A1 (en) * | 2019-11-19 | 2022-09-28 | Intesa Sanpaolo Innovation Center S.p.A. | Multiparty computation method |
-
2022
- 2022-12-29 CN CN202211705464.3A patent/CN116016368A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149763A1 (en) * | 2013-11-27 | 2015-05-28 | Microsoft Corporation | Server-Aided Private Set Intersection (PSI) with Data Transfer |
EP4062581A1 (en) * | 2019-11-19 | 2022-09-28 | Intesa Sanpaolo Innovation Center S.p.A. | Multiparty computation method |
CN111143894A (zh) * | 2019-12-24 | 2020-05-12 | 支付宝(杭州)信息技术有限公司 | 一种提升安全多方计算效率的方法及系统 |
CN113849806A (zh) * | 2021-09-30 | 2021-12-28 | 支付宝(杭州)信息技术有限公司 | 多方安全计算中的任务执行方法及装置 |
CN114157716A (zh) * | 2021-12-02 | 2022-03-08 | 深圳前海微众银行股份有限公司 | 基于区块链的数据处理方法、装置和电子设备 |
Non-Patent Citations (2)
Title |
---|
DANCHEN WANG等: "A Secure Multi-Party Computing System Based on SGX Technology for Trusted Data Circulation", 2019 IEEE 14TH INTERNATIONAL CONFERENCE ON INTELLIGENT SYSTEMS AND KNOWLEDGE ENGINEERING(ISKE)), 18 August 2020 (2020-08-18) * |
余东平;张剑峰;王聪;李宁;: "多路并行传输中数据调度算法的优化", 计算机应用, no. 05, 10 May 2014 (2014-05-10) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107679621B (zh) | 人工神经网络处理装置 | |
CN107704922B (zh) | 人工神经网络处理装置 | |
CN107679620B (zh) | 人工神经网络处理装置 | |
US20190026158A1 (en) | Virtual vector processing | |
US9645743B2 (en) | Selective I/O prioritization by system process/thread | |
KR20170028861A (ko) | 효율적인 신경망 전개를 위한 시스템 및 방법 | |
CN112346833B (zh) | 用于隐私计算的任务处理方法、处理器及异构处理系统 | |
CN111078436B (zh) | 数据处理的方法、装置、设备及存储介质 | |
US8959319B2 (en) | Executing first instructions for smaller set of SIMD threads diverging upon conditional branch instruction | |
CN114691232A (zh) | 将多任务参数相关操作的执行卸载到网络装置 | |
CN108415757A (zh) | 分布式事务处理方法及装置 | |
Shafiee et al. | Scheduling coflows with dependency graph | |
Tan et al. | Coupling scheduler for mapreduce/hadoop | |
CN107038025B (zh) | 基于soa架构的系统调用方法及装置 | |
Stavrinides et al. | Security and cost aware scheduling of real-time IoT workflows in a mist computing environment | |
Navaneetha Krishnan et al. | Multi‐objective task scheduling in fog computing using improved gaining sharing knowledge based algorithm | |
CN116016368A (zh) | 多方安全计算中的网络传输方法和执行该方法的调度器 | |
JP2023544911A (ja) | 並列量子コンピューティングのための方法及び装置 | |
Fotakis et al. | Scheduling mapreduce jobs and data shuffle on unrelated processors | |
Gull et al. | Design and evaluation of CPU scheduling algorithms based on relative time quantum: Variations of Round Robin algorithm | |
Jonsson | A robust adaptive metric for deadline assignment in heterogeneous distributed real-time systems | |
US20220019668A1 (en) | Hardware Autoloader | |
CN117389512B (zh) | 一种算术逻辑单元alu系统、电子设备和存储介质 | |
US20220147280A1 (en) | Efficient buffering technique for transferring data | |
Birke et al. | sPARE: Partial replication for multi-tier applications in the cloud |
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 |