CN114327486B - 基于领域专用语言实现多方安全计算的方法、装置及介质 - Google Patents
基于领域专用语言实现多方安全计算的方法、装置及介质 Download PDFInfo
- Publication number
- CN114327486B CN114327486B CN202111672875.2A CN202111672875A CN114327486B CN 114327486 B CN114327486 B CN 114327486B CN 202111672875 A CN202111672875 A CN 202111672875A CN 114327486 B CN114327486 B CN 114327486B
- Authority
- CN
- China
- Prior art keywords
- party
- multiparty
- calculation
- domain
- specific language
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 149
- 238000000034 method Methods 0.000 title claims abstract description 37
- 239000012634 fragment Substances 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 21
- 238000011084 recovery Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 5
- 230000002776 aggregation Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本申请的实施例涉及多方安全计算领域,提出一种基于领域专用语言执行多方安全计算的方法、装置及介质。所述方法包括:获取每一方的计算配置信息;根据所述计算配置信息生成每一方的领域专用语言代码;编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;将所述可执行程序分发至多方安全计算中的每一方。通过为各个多方安全计算参与方生成计算机高级语言形式的可执行程序,降低了使用门槛,方便各个参与方使用,提高了运行效率。
Description
技术领域
本申请实施例涉及隐私计算领域,更具体地涉及一种基于领域专用语言实现多方安全计算的方法、装置及介质。
背景技术
多方安全计算技术(MPC)试图在密码学协议层面设计一种满足隐私保护需求的数据传输方法,基于这种方法,各参与方可以共同计算出一个定义在各方输入上的函数,同时不向任何一方泄露其他参与方的输入。经典的通用MPC技术在实现上大多采取三种技术路线,即混淆电路、不经意传输(OT)和秘密共享(SS)。在当今个人隐私备受重视的背景下,MPC技术在征信、联邦学习等众多领域都有重要应用。
目前在实际应用中,通常采用专为MPC开发的库或领域专用语言(DSL)来描述并实现MPC协议,如PICCO是一个基于C语言实现的DSL及其编译器,VIFF是一个为Python语言实现的MPC库,而Wysteria则是一种为描述MPC协议设计的函数式语言。
但是,函数式领域专用语言的语法对大多数实际使用者而言较为晦涩罕见,学习和使用门槛较高。
发明内容
本申请实施例提供一种基于领域专用语言执行多方安全计算的方法、装置及介质,通过为各个多方安全计算参与方生成计算机高级语言形式的可执行程序,降低了使用门槛,方便各个参与方使用,提高了运行效率。
在本申请的第一方面中,提供了一种基于领域专用语言执行多方安全计算的方法,包括:
获取待实现的多方安全计算中的每一方的计算配置信息;
根据所述计算配置信息生成每一方的领域专用语言代码,其中所述领域专用语言代码基于计算机高级语言嵌入生成,所述计算机高级语言包括编译执行语言;
编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;
将所述可执行程序分发至多方安全计算中的每一方,以便执行所述多方安全计算。
在本申请的第二方面中,提供了一种基于领域专用语言实现多方安全计算的装置,包括:
输入输出模块,被配置为获取待实现的多方安全计算中的每一方的计算配置信息;
处理模块,被配置为根据所述计算配置信息生成每一方的领域专用语言代码;以及编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;
所述输入输出模块,还被配置为将所述可执行程序分发至多方安全计算中的每一方,以便执行所述多方安全计算。
在本申请的第三方面中,提供了计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。
在本申请的第四方面中,提供了一种计算设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现第一方面所述的方法。
相较于现有技术,在多方安全计算时,现有技术直接向各个参与方提供领域专用语言,但是由于领域专用语言所提供的原语表达能力处于较高层次,往往无法进行底层的一些基本数据处理操作;而且,领域专用语言的语法、逻辑与常规计算机编程语言不同,学习和使用的门槛较高,导致适用性较差;另外,这些领域专用语言的运行效率较低,在实际大规模、高吞吐量的多方安全计算任务中,性能较差。而本申请实施例,根据参与多方安全计算的各个参与方的计算配置信息,将领域专用语言的计算模型接口嵌入到计算机高级语言中,从而生成表现形式为计算机高级语言类型的领域专用代码,进而通过相应的编译器进行编译,生成各个参与方可执行的执行程序;各个参与方可以按照计算机高级语言的语法、逻辑进行多方安全计算,在计算时可直接调用嵌入在计算机高级语言中的计算模型接口。由于本申请实施例提供给各个参与方的是基于计算机高级语言代码编译得到的执行程序,因此使用和学习门槛较低,适用范围广;另外,基于计算机高级语言代码编译执行程序时效率更高,更加适合大规模、高吞吐量的多方安全计算任务。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施例,其中:
图1为本申请一实施例的基于领域专用语言执行多方安全计算的方法一个应用场景图;
图2为本申请一实施例的基于领域专用语言执行多方安全计算的方法另一个应用场景图;
图3为本申请一实施例的基于领域专用语言执行多方安全计算的方法的步骤图;
图4为本申请一实施例的基于领域专用语言执行多方安全计算的方法的应用场景图;
图5为本申请一实施例的基于领域专用语言执行多方安全计算的装置的模块图;
图6为本申请一实施例的存储介质的结构图;
图7为本申请一实施例的计算设备的结构图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施例来描述本申请的原理和精神。应当理解,给出这些实施例仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本申请的实施例可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本申请的实施例,提出了一种基于领域专用语言执行多方安全计算的方法、装置及介质,可以运用于隐私计算领域的各个场景,比如:秘密共享的多方安全计算协议场景、征信场景、联邦学习场景等等。该方案可用于基于领域专用语言实现多方安全计算的装置。
在一些实施例中,如图1所示,图1为本申请实施例基于领域专用语言执行多方安全计算的方法的一个应用场景。在该应用场景中包括多个参与方,本实施例以3个参与方为例,但在其他实施例中,也可以有更多个参与方。在如图1所示的场景中,3个参与方共同参与数据共享,对于每一个参与方而言,都需要向其他用户端发送和接收计算数据,但还要保证在发送和接收的过程中各自的隐私数据不会泄露给其他参与方。
如图2所示,在图2的使用场景中,包括三个参与方,三个参与方均通过终端实现,分别为终端A、B、C,除此之外还有一个服务器01,三个参与方分别通过终端A、B、C向服务器发送各自的计算配置信息,服务器根据各自的计算配置信息,生成可执行程序,并反馈给终端A、B、C,而后三个终端A、B、C就可以基于可执行程序进行多方安全计算,并进行数据传输。
对于每个参与方来说,都可以基于终端或者服务器实现,如图2所示的场景中,三个参与方均基于终端实现,在其他实施例中还可以是基于服务器实现。另外,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。服务器可以是独立的物理服务器,也可以是提供云计算服务的云服务器。每个参与方的终端或者服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
示例性方法
下面结合图2的应用场景,参考图3来描述根据本申请示例性实施例的基于领域专用语言执行多方安全计算的方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施例在此方面不受任何限制。相反,本申请的实施例可以应用于适用的任何场景。
如图3所示,在本申请实施例中,该基于领域专用语言执行多方安全计算的方法,包括以下步骤:
步骤S110:获取每一方的计算配置信息。
在本步骤中,需要获取每一个参与安全计算的参与方的计算配置信息,其中计算配置信息至少包括:各个参与方准备提供的隐私数据以及将要进行的多方安全计算方式、数据传输方式等等。
步骤S120:根据所述计算配置信息生成每一方的领域专用语言代码。
在本步骤中,基于从各个参与方获取到的计算配置信息,分别为每一个参与方生成领域专用语言代码,此处的领域专用语言代码是基于计算机高级语言进行嵌入得到的,计算机高级语言比如为常见的C++、C语言、python、golong等,本实施例对具体采用哪种计算机高级语言不做限制,具体实施时可以根据参与方的需求选择相应的计算机高级语言。
比如在本申请一实施例中可以基于C++进行嵌入得到领域专用语言代码,在进行嵌入时,可以将采用领域专用语言将多方安全计算算法模型的各种应用编程接口嵌入在C++中,得到各个参与方的领域专用语言代码。
在一个实施例中,实现一种嵌入到C++语言中的嵌入式领域专用语言(eDSL)。该eDSL充分利用C++提供的强大语法特性,一方面,向用户提供一个尽可能方便使用的、兼具描述较高层次的隐私数据运算和较低层次的参与方本地计算的表达能力的、用于描述和进一步实现基于秘密共享的多方安全计算协议的领域专用语言;另一方面,借助于C++语言精准强大的程序描述能力,以及C++编译器的强大优化能力,利用该嵌入式领域专用语言实现的多方安全计算将兼具高可靠性和高性能。此外,由于该实施例表现形式为C++语言的嵌入式领域专用语言,用户只需具备通用的C++语言使用经验,即可轻松掌握该方案并迅速投入实际应用,很好地避免了很多领域专用语言存在的高学习成本问题。
步骤S130:编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序。
在步骤S120中,得到了每个参与方的领域专用语言代码,而且该领域专用语言代码是基于计算机高级语言进行嵌入的,此时就可以利用对应的计算机高级语言编译器对各个参与方的领域专用语言代码进行编译链接,生成用来进行多方安全计算的可执行程序,然后就可以将各个可执行程序分发到参与多方安全计算的各个参与方,即步骤S140:将所述可执行程序分发至多方安全计算中的每一方。
参与多方安全计算的各个参与方收到各自的可执行程序后,即可利用可执行程序进行参与多方安全计算。
本申请实施例中,通过采用领域专用语言将多方安全计算算法或者程序以接口的形式嵌入在计算机高级语言中,并根据参与多方安全计算各个参与方的计算配置信息生成领域专用语言代码,对各个参与方的领域专用语言代码进行编译成可执行程序,从而各个参与方在使用该可执行程序时可以直接按照所嵌入的计算机高级语言的语法、逻辑调用相应的多方安全计算算法或者程序接口。相对于开发多方安全计算算法或者程序的领域专用语言来说,C++等常见的计算机高级语言使用学习门槛较低,适用范围更加广泛,运算效率也更高。
在本申请的另一实施例中,所述领域专用语言代码预先配置了多方安全计算算子、多方安全计算数据传输接口以及多方安全计算的各个对象。在本实施例中,可以预先在该多方安全计算的计算模型中配置所述多方安全计算算子、多方安全计算数据传输接口以及多方安全计算的各个对象,那么在将多方安全计算模型嵌入计算机高级通用语言后,得到的领域专用语言代码就配置了所述多方安全计算算子、多方安全计算数据传输接口以及多方安全计算的各个对象。
其中,多方安全计算算子可以包括多项式计算算子、加法算子、乘法算子以及标量乘法算子中的任一项或者多项,当选用多项式计算算子作为安全计算算子时,该多项式计算算子(poly)需要至少包括用于表示所述多项式的各项次数的系数模板变量。
本申请实施例通过在领域专用语言代码中预先配置多方安全计算算子、多方安全计算数据传输接口以及多方安全计算的各个对象,从而可以让各个参与方在得到可执行程序后,能够通过多方安全计算数据传输接口,利用多方安全计算算子与各个参与方共同完成多方安全计算。
具体来说,对于多方安全计算中的对象如share、party、partyset、bundle等均预选设置了对应类型以供实例化。另外,为了达成在较低层次表达本地计算的能力,本申请一个实施例还设计了多项式类型poly,并提供了接口以根据需要生成多项式,以及为不同参与方进行多项式求值以得到相应的share。此外本实施例还支持参与方之间的信息发送和接收,用来描述多方安全计算中的跨参与方的行为。考虑到多方安全计算中对模素数p的域的运用,本实施例还提供了field类型用于表达模素数p域中的数值,支持域上的四则运算,支持判等操作。
在本实施例的多方安全计算中,party代表一个参与方,其在初始化时需设定一个域上的变量alpha,用于在生成share时对多项式进行赋值;party支持send和receive原语,用于和其他参与方进行通信,一般而言,通信中发送的信息只能是share形式。方便起见,本实施例还提供了partyset类型,用于管理一组party(即协议参与方的一个子集),通过灵活运用现代C++提供的initializer_list等机制,用户可以很方便的从已经定义好的party声明一个partyset,并将其作为参数传递给需要调用的协议。
另外,本实施例中,share表示一个域上的数值经过秘密共享机制为各参与方生成的一份“碎片”,假设多方安全计算中定义的多项式次数为t,则只有同时掌握t+1份来自不同参与方的share才能恢复出原始的数值;某参与方拥有的本地share之间可以进行加法、标量乘法、乘法运算。同一个数值,经过多方安全计算后对每个参与方生成一份share,这些share统称为一个bundle;为方便起见,本申请一个实施例中,支持bundle之间的加法、标量乘法、乘法运算,其效果等同于在所有参与方上进行相同bundle对应的share间的运算。
在多方安全计算中,多项式是一个很核心的概念,本申请的一个实施例支持poly类型来表达一个多项式,在本实施例中,poly的次数是一个模板参数,这蕴含了不同次数的多项式实际处于不同的空间之中,定义上更加严格;各参与方可以通过指定系数生成多项式,也可以调用本实施例提供的接口生成随机多项式;实现上借助C++提供的真随机数机制,可以利用硬件上的随机数设备生成真随机数,安全性能更强。
基于上述预先提供的接口、算子,各参与方即可方便地实现基于多方安全计算的。在本实施例中,计算协议由protocol类型表示,任一参与方声明一个protocol时,通过C++提供的lambda函数机制描述协议的执行流程。一个合法的协议可以无输入,也可以从参与方的一个子集获得输入,但必须有输出,输出的类型为bundle,即每个参与方都获得属于自己的share(协议中不需要输出的参与方,可以对其输出0)。
在本申请的另一个实施例中,所述领域专用语言代码包括数据共享代码和数据回收代码。
数据共享代码用来将己方的隐私数据分散发送至其他各个参与方;数据回收代码用来从其他各个参与方获取多方安全计算的多项式结果,其中该多项式结果是基于从其他各个参与方获取到的隐私数据计算得到的。
在本申请的另一个实施例中,在进行编译的时候,数据共享代码用于将本地存储的隐私数据进行多项式赋值,生成数据碎片,并分散发送至除本地之外的多方安全计算的各个参与方;数据回收代码用于从除本地之外的多方安全计算的各个参与方获取计算结果,该计算结果是其他各个参与方基于获取到数据碎片,通过各个计算算子进行多项式计算后得到的。
比如在如图4所示的场景中,具有X、Y、Z三个参与方进行多方安全计算,其中参与方X的隐私数据为a,参与方Y的隐私数据为b,参与方Z的隐私数据为c。
利用上述方法,为X、Y、Z三个参与方分别生成数据共享代码和数据回收代码,并且根据三者的隐私数据a、b、c,计算多方安全计算的阈值空间,假设为一大素数P,即阈值空间为(field<p>),得到该阈值空间后在各个参与方的领域专用语言代码中进行声明,其中该阈值空间表明了在本多方安全计算的数值计算边界。
如图4所示,对于参与方X而言,其数据共享代码基于自身的隐私数据a,进行多项式赋值,生成数据碎片,并将生成的数据碎片分别发送至参与方Y和Z。
对于参与方Y而言,其数据共享代码基于自身的隐私数据b,进行多项式赋值,生成数据碎片,并将生成的数据碎片分别发送至参与方X和Z。
对于参与方Z而言,其数据共享代码基于自身的隐私数据c,进行多项式赋值,生成数据碎片,并将生成的数据碎片分别发送至参与方X和Y。
此时对于参与方X来说,获得了参与方Y的隐私数据b的数据碎片,以及参与方Z的数据碎片,从而相当于获取X、Y、Z三方的全部隐私数据,因此能够基于此进行计算,得到计算结果,假设为result1;同理,参与方Y和Z能够分别得到计算结果result2和result3。
对于参与方X的数据回收代码而言能够分别获取result2,result3;对于参与方Y的数据回收代码而言能够分别获取result1,result3;对于参与方Z的数据回收代码而言能够分别获取result1和result2,即参与多方安全计算的参与方X、Y、Z均能够获取其他两方的结算结果,各个参与方就可以基于己方的计算结果以及从其他参与方获取的计算结果,得出最终的结果。
比如:
若result1=result2=result3,则说明三方计算无误,任选一个结果作为最终结果即可。
若result1、result2、result3有差异,说明计算有错误,需重新计算。
在本申请的另一个实施例中,在为每个参与方生成领域专用语言时,还根据所述计算配置信息,生成每一方参与的所述多方安全计算的参与方集合对象;
那么,在编译执行所述领域专用语言代码时,所述参与方集合对象作为参数传入,以便确定所述多方安全计算的各个参与方。
在本申请的另一个实施例中,在根据各个参与方的配置信息生成每一方的领域专用代码时,还为每个参与方生成:share类型变量和bundle类型变量。其中,share类型变量用来表示数据碎片,bundle类型变量用来将各个share汇聚。
比如在上述如图4所示的应用场景中,对于参与方X的隐私数据a而言,假设隐私数据a被划分成数据碎片a1、a2、a3,利用share类型变量表示各个数据碎片为share1、share2、share3,然后再通过bundle类型变量将share1、share2、share3汇聚转换,最后在输送至参与方Y和Z。
相较于现有技术,在多方安全计算时,现有技术直接向各个参与方提供领域专用语言,但是由领域专用语言所提供的原语表达能力处于较高层次,往往无法进行底层的一些基本数据处理操作;而且,领域专用语言的语法、逻辑与常规计算机编程语言不同,学习和使用的门槛较高,导致适用性较差;另外,这些领域专用语言运行效率较低,在实际大规模、高吞吐量的多方安全计算任务中,性能较差。而本申请实施例,根据参与多方安全计算的各个参与方的计算配置信息,将领域专用语言的计算模型接口嵌入到计算机高级语言中,从而生成表现形式为计算机高级语言类型的领域专用代码,进而通过相应的编译器进行编译成各个参与方可执行的执行程序。各个参与可以按照计算机高级语言的语法、逻辑等计算模式进行多方安全计算,在计算时可直接调用嵌入在计算机高级语言中的计算模型接口。由于本申请实施例提供给各个参与方是按照计算机高级语言形式的执行程序,因此使用和学习门槛较低,适用范围广,另一方面基于计算机高级语言类型的可执行程序运行时效率更高,更加适合大规模、高吞吐量的多方安全计算任务。
示例性装置
图1至图4中任一项所对应的实施例中所提及的任一技术特征也同样适用本申请实施例中的图5-图7所对应的实施例,后续类似之处不再赘述。在介绍了本申请实施例示例性实施例的基于领域专用语言执行多方安全计算的方法之后,接下来对本申请实施例中的实施上述基于领域专用语言执行多方安全计算的方法的装置进行详细阐述。
如图5所示的一种基于领域专用语言实现多方安全计算的装置100,包括:
输入输出模块110,被配置为获取待实现的多方安全计算中的每一方的计算配置信息;
处理模块120,被配置为根据所述计算配置信息生成每一方的领域专用语言代码;以及编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;
所述输入输出模块110,还被配置为将所述可执行程序分发至多方安全计算中的每一方,以便执行所述多方安全计算。
在本申请的另一个实施例中,所述处理模块120还用于为所述领域专用语言代码预先配置多方安全计算算子、多方安全计算数据传输接口以及多方安全计算的各个对象;
其中所述多方安全计算算子至少包括以下中的一项:
多项式计算算子、加法算子、乘法算子以及标量乘法算子;
所述多项式计算算子至少包括用于表示所述多项式的各项次数的系数模板变量。
在本申请的另一个实施例中,所述处理模块120,还被配置为:
根据所述多方安全计算中的每一方的计算配置信息,确定每一方存储的隐私数据以及待实现的多方安全计算方式;
根据每一方的所述隐私数据确定多方安全计算的域值空间,并在每一方声明所述域值空间,所述域值空间表示所述多方安全计算的数值计算边界;
为每一方生成:将每一方的所述隐私数据分散发送至各方的数据共享代码;以及
从各方获取基于每一方发送的分散隐私数据进行多方安全计算的多项式结果的数据回收代码。
在本申请的另一个实施例中,所述数据共享代码在编译执行时,用于将本地存储的隐私数据进行多项式赋值,生成数据碎片,并分散发送至除本地之外的多方安全计算的各个参与方;
所述数据回收代码在编译执行时,用于从除本地之外的多方安全计算的各个参与方获取各方基于各自接收到的所述数据碎片,并通过各个计算算子进行多项式计算后的计算结果。
在本申请的另一个实施例中,所述处理模块120还被配置为:
根据所述多方安全计算中的每一方的计算配置信息,生成每一方参与的所述多方安全计算的参与方集合对象;
其中,在编译执行所述领域专用语言原代码时,所述参与方集合对象作为参数传入,以便确定所述多方安全计算的各个参与方。
在本申请的另一个实施例中,所述处理模块120还用于在每一方生成:
用于表示所述数据碎片的share类型变量,以及用于表示各个share汇聚的bundle类型变量;
在所述领域专用语言代码编译执行,实现相应的多方安全计算时,各参与方通过将各自的隐私数据转换为所述bundle类型变量后传输。
在本申请的另一个实施例中,所述处理模块120,还被配置为:至少通过一种计算机高级语言编译器编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序。
相较于现有技术,在多方安全计算时,现有技术直接向各个参与方提供领域专用语言,但是由领域专用语言所提供的原语表达能力处于较高层次,往往无法进行底层的一些基本数据处理操作,而且,领域专用语言的语法、逻辑与常规计算机语言不同,学习和使用的门槛较高,导致适用性较差;另外,对于这些领域专用语言来说运行效率较低,在实际大规模、高吞吐量的多方安全计算任务中,性能较差。而本申请实施例,根据参与多方安全计算的各个参与方的计算配置信息,将领域专用语言的计算模型接口嵌入到计算机高级语言中,从而生成表现形式为计算机高级语言类型的领域专用代码,进而通过相应的编译器进行编译成各个参与方可执行的执行程序,那么各个参与就可以按照计算机高级语言的语法、逻辑等计算模式进行多方安全计算,在计算时可直接调用嵌入在计算机高级语言中的计算模型接口。由于本申请实施例提供给各个参与方是按照计算机高级语言形式的执行程序,因此使用和学习门槛较低,适用范围广,另一方面基于计算机高级语言类型的可执行程序运行时效率更高,更加适合大规模、高吞吐量的多方安全计算任务。
示例性介质
在介绍了本申请示例性实施例的方法和装置之后,接下来,参考图6对本申请示例性实施例的计算机可读存储介质进行说明,其示出的计算机可读存储介质为光盘60,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会实现上述方法实施例中所记载的各步骤,例如,获取每一方的计算配置信息;根据所述计算配置信息生成每一方的领域专用语言代码;编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;将所述可执行程序分发至多方安全计算中的每一方。各步骤的具体实现方式在此不再重复说明。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
示例性计算设备
在介绍了本申请示例性实施例的方法、装置和介质之后,接下来,参参考图7对本申请示例性实施例的计算设备进行说明。
图7示出了适于用来实现本申请实施例的示例性计算设备80的框图,该计算设备80可以是计算机系统或服务器。图7显示的计算设备80仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算设备80的组件可以包括但不限于:一个或者多个处理器或者处理单元801,系统存储器802,连接不同系统组件(包括系统存储器802和处理单元801)的总线803。
计算设备80典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算设备80访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器802可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)8021和/或高速缓存存储器8022。计算设备80可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,ROM8023可以用于读写不可移动的、非易失性磁介质(图7中未显示,通常称为“硬盘驱动器”)。尽管未在图7中示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线803相连。系统存储器802中可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块8024的程序/实用工具8025,可以存储在例如系统存储器802中,且这样的程序模块8024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块8024通常执行本申请所描述的实施例中的功能和/或方法。
计算设备80也可以与一个或多个外部设备804(如键盘、指向设备、显示器等)通信。这种通信可以通过输入/输出(I/O)接口805进行。并且,计算设备80还可以通过网络适配器806与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图7所示,网络适配器806通过总线803与计算设备80的其它模块(如处理单元801等)通信。应当明白,尽管图7中未示出,可以结合计算设备80使用其它硬件和/或软件模块。
处理单元801通过运行存储在系统存储器802中的程序,从而执行各种功能应用以及数据处理,例如,获取每一方的计算配置信息;根据所述计算配置信息生成每一方的领域专用语言代码;编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;将所述可执行程序分发至多方安全计算中的每一方。各步骤的具体实现方式在此不再重复说明。
应当注意,尽管在上文详细描述中提及了基于领域专用语言实现多方安全计算的装置的若干单元/模块或子单元/子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施例,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施例描述了本申请的精神和原理,但是应该理解,本申请并不限于所申请的具体实施例,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (12)
1.一种基于领域专用语言执行多方安全计算的方法,包括:
获取待实现的多方安全计算中的每一方的计算配置信息;
根据所述计算配置信息生成每一方的领域专用语言代码,其中所述领域专用语言代码由用户基于计算机高级语言输入的代码嵌入生成,所述计算机高级语言包括编译执行语言;
编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;
将所述可执行程序分发至多方安全计算中的每一方,以便执行所述多方安全计算;
其中,所述根据所述计算配置信息生成每一方的领域专用语言代码,包括:
根据所述计算配置信息确定每一方存储的隐私数据以及待实现的多方安全计算方式;
根据每一方的所述隐私数据确定多方安全计算的域值空间,并为每一方声明所述域值空间,所述域值空间表示所述多方安全计算的数值计算边界;
为每一方生成:将每一方的所述隐私数据分散发送至各方的数据共享代码;以及
从各方获取基于每一方发送的分散隐私数据进行多方安全计算的多项式结果的数据回收代码;
所述数据共享代码在编译执行时,用于将本地存储的隐私数据进行多项式赋值,生成数据碎片,并分散发送至除本地之外的多方安全计算的各个参与方;
所述数据回收代码在编译执行时,用于从除本地之外的多方安全计算的各个参与方,获取各方基于各自接收到的所述数据碎片通过各个计算算子进行多项式计算后的计算结果。
2.如权利要求1所述的方法,其中,所述领域专用语言代码预先配置多方安全计算算子、多方安全计算数据传输接口以及多方安全计算的各个对象;
其中所述多方安全计算算子至少包括以下中的一项:
多项式计算算子、加法算子、乘法算子以及标量乘法算子;
所述多项式计算算子至少包括用于表示所述多项式的各项次数的系数模板变量。
3.如权利要求1或2所述的方法,其中,根据所述计算配置信息生成每一方的领域专用语言代码,还包括:
根据所述计算配置信息,生成每一方参与的所述多方安全计算的参与方集合对象;
其中,在编译执行所述领域专用语言原代码时,所述参与方集合对象作为参数传入,以便确定所述多方安全计算的各个参与方。
4.如权利要求1所述的方法,其中,根据所述计算配置信息生成每一方的领域专用语言代码,还包括:
为每一方生成:用于表示所述数据碎片的share类型变量,以及用于表示各个share汇聚的bundle类型变量;
在所述领域专用语言代码编译执行,实现相应的多方安全计算时,各参与方将各自的隐私数据转换为所述bundle类型变量后传输。
5.如权利要求1或2所述的方法,其中,通过编译器编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;
其中,所述编译器包括至少一种计算机高级语言编译器。
6.一种基于领域专用语言实现多方安全计算的装置,包括:
输入输出模块,被配置为获取待实现的多方安全计算中的每一方的计算配置信息;
处理模块,被配置为根据所述计算配置信息生成每一方的领域专用语言代码;以及编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序;其中所述领域专用语言代码由用户基于计算机高级语言输入的代码嵌入生成,所述计算机高级语言包括编译执行语言;
所述输入输出模块,还被配置为将所述可执行程序分发至多方安全计算中的每一方,以便执行所述多方安全计算;
所述处理模块还被配置为:根据所述多方安全计算中的每一方的计算配置信息,确定每一方存储的隐私数据以及待实现的多方安全计算方式;
根据每一方的所述隐私数据确定多方安全计算的域值空间,并在每一方声明所述域值空间,所述域值空间表示所述多方安全计算的数值计算边界;
为每一方生成:将每一方的所述隐私数据分散发送至各方的数据共享代码;以及
从各方获取基于每一方发送的分散隐私数据进行多方安全计算的多项式结果的数据回收代码;
其中,所述数据共享代码在编译执行时,用于将本地存储的隐私数据进行多项式赋值,生成数据碎片,并分散发送至除本地之外的多方安全计算的各个参与方;
所述数据回收代码在编译执行时,用于从除本地之外的多方安全计算的各个参与方获取各方基于各自接收到的所述数据碎片,并通过各个计算算子进行多项式计算后的计算结果。
7.如权利要求6所述的装置,其中,所述处理模块还用于为所述领域专用语言代码预先配置多方安全计算算子、多方安全计算数据传输接口以及多方安全计算的各个对象;
其中所述多方安全计算算子至少包括以下中的一项:
多项式计算算子、加法算子、乘法算子以及标量乘法算子;
所述多项式计算算子至少包括用于表示所述多项式的各项次数的系数模板变量。
8.如权利要求6或7所述的装置,其中,所述处理模块还被配置为:
根据所述多方安全计算中的每一方的计算配置信息,生成每一方参与的所述多方安全计算的参与方集合对象;
其中,在编译执行所述领域专用语言原代码时,所述参与方集合对象作为参数传入,以便确定所述多方安全计算的各个参与方。
9.如权利要求6所述的装置,其中,所述处理模块还用于在每一方生成:
用于表示所述数据碎片的share类型变量,以及用于表示各个share汇聚的bundle类型变量;
在所述领域专用语言代码编译执行,实现相应的多方安全计算时,各参与方通过将各自的隐私数据转换为所述bundle类型变量后传输。
10.如权利要求6或7所述的装置,其中,所述处理模块还被配置为:至少通过一种计算机高级语言编译器编译所述领域专用语言代码,得到对应的用于进行多方安全计算的可执行程序。
11.一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-5中任一项所述的方法。
12.一种计算设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111672875.2A CN114327486B (zh) | 2021-12-31 | 2021-12-31 | 基于领域专用语言实现多方安全计算的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111672875.2A CN114327486B (zh) | 2021-12-31 | 2021-12-31 | 基于领域专用语言实现多方安全计算的方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327486A CN114327486A (zh) | 2022-04-12 |
CN114327486B true CN114327486B (zh) | 2024-01-23 |
Family
ID=81021806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111672875.2A Active CN114327486B (zh) | 2021-12-31 | 2021-12-31 | 基于领域专用语言实现多方安全计算的方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327486B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2169547A1 (en) * | 2008-09-30 | 2010-03-31 | ICS Triplex ISaGRAF Inc. | Compilation model for programmable logic controllers (PLC) |
CN110147236A (zh) * | 2019-04-30 | 2019-08-20 | 阿里巴巴集团控股有限公司 | 代码编译方法及装置 |
CN110333867A (zh) * | 2019-04-19 | 2019-10-15 | 矩阵元技术(深圳)有限公司 | 一种多方安全计算数据处理方法、装置及系统 |
CN112199734A (zh) * | 2020-09-24 | 2021-01-08 | 北京冲量在线科技有限公司 | 多方数据流通系统 |
CN113672985A (zh) * | 2021-08-25 | 2021-11-19 | 支付宝(杭州)信息技术有限公司 | 用于隐私保护的机器学习算法脚本编译方法和编译器 |
-
2021
- 2021-12-31 CN CN202111672875.2A patent/CN114327486B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2169547A1 (en) * | 2008-09-30 | 2010-03-31 | ICS Triplex ISaGRAF Inc. | Compilation model for programmable logic controllers (PLC) |
CN110333867A (zh) * | 2019-04-19 | 2019-10-15 | 矩阵元技术(深圳)有限公司 | 一种多方安全计算数据处理方法、装置及系统 |
CN110147236A (zh) * | 2019-04-30 | 2019-08-20 | 阿里巴巴集团控股有限公司 | 代码编译方法及装置 |
CN112199734A (zh) * | 2020-09-24 | 2021-01-08 | 北京冲量在线科技有限公司 | 多方数据流通系统 |
CN113672985A (zh) * | 2021-08-25 | 2021-11-19 | 支付宝(杭州)信息技术有限公司 | 用于隐私保护的机器学习算法脚本编译方法和编译器 |
Also Published As
Publication number | Publication date |
---|---|
CN114327486A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111898137A (zh) | 一种联邦学习的隐私数据处理方法、设备及系统 | |
EP3455999B1 (en) | Computer-implemented system and method | |
CN110427969B (zh) | 数据处理方法、装置和电子设备 | |
WO2020199785A1 (zh) | 私有数据的处理方法、计算方法及所适用的设备 | |
JP2021515271A (ja) | コンピュータにより実施される投票処理およびシステム | |
CN111428887A (zh) | 一种基于多个计算节点的模型训练控制方法、装置及系统 | |
CN112818374A (zh) | 一种模型的联合训练方法、设备、存储介质及程序产品 | |
WO2020065460A1 (en) | Computer-implemented system and method for transferring access to digital resource | |
WO2023024735A1 (zh) | 用于隐私保护的机器学习算法脚本编译方法和编译器 | |
CN112905187B (zh) | 编译方法、装置、电子设备及存储介质 | |
CN113591097A (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
US11991156B2 (en) | Systems and methods for secure averaging of models for federated learning and blind learning using secure multi-party computation | |
Pereira et al. | Some attacks upon authenticated group key agreement protocols | |
JP2023114996A (ja) | 相関係数取得方法、装置、電子機器および記憶媒体 | |
Wolfe et al. | Secret sharing MPC on FPGAs in the datacenter | |
KR102064282B1 (ko) | 기관의 인공지능 서비스 제공 시스템 | |
CN114884675A (zh) | 基于比特传输的多方隐私求交方法、装置、设备及介质 | |
CN110874481B (zh) | 一种基于gbdt模型的预测方法和装置 | |
CN110969524A (zh) | 基于区块链的资金业务处理方法、装置、设备及介质 | |
CN111917533A (zh) | 具有减少泄漏的区间统计量的隐私保护基准分析 | |
Folkerts et al. | REDsec: Running Encrypted DNNs in Seconds. | |
CN114327486B (zh) | 基于领域专用语言实现多方安全计算的方法、装置及介质 | |
Bao et al. | HACCLE: metaprogramming for secure multi-party computation | |
WO2023038930A1 (en) | Systems and methods for averaging of models for federated learning and blind learning using secure multi-party computation | |
CN111125136B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |