【技术实现步骤摘要】
一种代码执行方法、装置和用于代码执行的装置
本申请涉及计算机
,尤其涉及一种代码执行方法、装置和用于代码执行的装置。
技术介绍
密文处理系统可以基于数据的密文实现数据的清洗、计算、分析、模型训练、存储、数据库查询等数据相关操作,在操作过程中不暴露数据的明文,可以保护数据的隐私安全。通常,密文处理系统包括前端和后端,前端用于实现密文处理的系统框架,后端用于实现基于密文的隐私计算。由于密文数据的处理效率相对于明文数据的处理效率较低,因此,为提升隐私计算的效率,通常后端会固定采用如C/C++等一种相对执行效率较高的语言实现,那么目前的密文处理系统至少存在如下问题:首先,在密文处理系统后端采用的编程语言固定的情况下,若前端采用与后端编程语言相配合的一种编程语言如Python语言,将使得该系统无法支持其他编程语言,为了支持其他编程语言(如R语言或Java语言等),不得不使用其他编程语言(如R语言或Java语言等)重新编写一套前端的系统框架,导致密文处理系统的扩展性较低,以及再次开发的成本较高。其次,由于密文处理系统的前端是通过Python语言实现,而后端的隐私计算却是由C++语言提供的计算引擎,以动态库的方式实现。这样的设计,导致了在进行隐私计算时,Python代码和C++代码中的变量,在内存里进行大量无效的传递及返回操作,导致代码执行效率较低。
技术实现思路
本申请实施例提供一种代码执行方法、装置和用于代码执行的装置,可以为实现跨语言跨平台的隐私计算,提供执行环境,使得密文处
【技术保护点】
1.一种代码执行方法,其特征在于,所述方法用于执行第一编程语言实现的目标源码,所述目标源码中包含以动态库形式存在的第二编程语言实现的隐私操作,所述方法包括:/n对所述目标源码进行编译处理,得到目标文件,所述目标文件中包含第一编程语言代码以及用于描述所述隐私操作的伪汇编代码的文本文件;/n根据所述目标源码中的输入符号和输出符号,构建输入符号名称列表、输入符号数值列表、以及输出符号名称列表;/n执行所述目标文件,以及在执行到所述目标文件中的隐私操作时,根据所述伪汇编代码、所述输入符号名称列表、所述输入符号数值列表、以及所述输出符号名称列表,生成第一参数;/n通过第一接口向虚拟执行器接口模块传递所述第一参数,所述虚拟执行器接口模块用于基于所述第一参数,生成第二参数,并通过第二接口向底层执行器传递所述第二参数,所述底层执行器用于基于所述第二参数,执行所述隐私操作。/n
【技术特征摘要】
1.一种代码执行方法,其特征在于,所述方法用于执行第一编程语言实现的目标源码,所述目标源码中包含以动态库形式存在的第二编程语言实现的隐私操作,所述方法包括:
对所述目标源码进行编译处理,得到目标文件,所述目标文件中包含第一编程语言代码以及用于描述所述隐私操作的伪汇编代码的文本文件;
根据所述目标源码中的输入符号和输出符号,构建输入符号名称列表、输入符号数值列表、以及输出符号名称列表;
执行所述目标文件,以及在执行到所述目标文件中的隐私操作时,根据所述伪汇编代码、所述输入符号名称列表、所述输入符号数值列表、以及所述输出符号名称列表,生成第一参数;
通过第一接口向虚拟执行器接口模块传递所述第一参数,所述虚拟执行器接口模块用于基于所述第一参数,生成第二参数,并通过第二接口向底层执行器传递所述第二参数,所述底层执行器用于基于所述第二参数,执行所述隐私操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标源码中的输入符号和输出符号,构建输入符号名称列表、输入符号数值列表、以及输出符号名称列表,包括:
基于编译过程产生的符号表,确定所述目标源码中每个符号的属性特征;
根据所述属性特征,确定所述目标源码中的输入符号和输出符号;
根据所述输入符号的名称,构建输入符号名称列表,以及根据所述输入符号的数值,构建输入符号数值列表;
根据所述输出符号的名称,构建输出符号名称列表。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对所述目标源码中的常量进行变量化处理,得到所述常量对应的变量;
将所述变量的名称作为输入符号的名称,加入所述输入符号名称列表,以及将所述变量的数值作为输入符号的数值,加入所述输入符号数值列表。
4.根据权利要求1所述的方法,其特征在于,所述通过第一接口向虚拟执行器接口模块传递所述第一参数之后,所述方法还包括:
根据所述第一参数,建立全局符号映射表,所述全局符号映射表用于保存输入符号的信息、输出符号的信息、以及中间结果的信息。
5.根据权利要求4所述的方法,其特征在于,所述输入符号的信息包括:输入符号的名称、输入符号的形状、输入符号的数值、输入符号的类型;所述输出符号的信息包括:输出符号的名称、输出符号的形状、输出符号的数值、输出符号的类型;所述中间结果的信息包括:中间结果的名称、中间结果的形状、中间结果的数值、中间结果的类型。
6.根据权利要求4所述的方法,其特征在于,所述基于所述第一参数,生成第二参数,包括:
逐行执行所述伪汇编代码,获取当前待操作的目标输入符号、目标输出符号、以及目标操作码;
将所述目标输入符号的名称作为索引值,检索所述全局符号映射表,得到所述目标输入符号的信息,以及将所述目标输出符号的名称作为索引值,检索所述全局符号映射表,得到所述目标输出符号的信息;
将所述目标输入符号的信息、所述目标输出符号的信息、以及所述目标操作码的类型作为所述第二参数。
7.根据权利要求6所述的方法,其特征在于,所述目标操作码为根据所述伪汇编代码中的预置列所确定,所述目标输入符号包括所述目标操作码对应的操作数和/或中间结果。
8.根据权利要求6所述的方法,其特征在于,所述基于所述第二参数,执行所述隐私操作,包括:
根据所述目标输入符号的信息,对所述目标输入符号按照所述目标操作码的类型执行隐私操作,得到隐私操作结果;
将所述隐私操作结果赋值给所述目标输出符号,并通过所述第二接口将赋值后的目标输出符号返回给所述虚拟执行器接口模块。
9.根据权利要求8所述的方法,其特征在于,所述通过所述第二接口将赋值后的目标输出符号返回给所述虚拟执行器接口模块之后,所述方法还包括:
根据所述赋值后的目标输出符号,更新所述全局符号映射表。
10.根据权利要求8所述的方法,其特征在于,所述第二接口为Protobuf接口,所述Protobuf接口通过第一函数向所述底层执行器传递第二参数,以及通过第二函数向所述虚拟执行器接口模块传递所述赋值后的目标输出符号。
11.根据权利要求1至10任一所述的方法,其特征在于,所述底层执行器包括如下任意一种:基于秘密分享的执行器、基于同态加密的执行器、基于可信执行环境的执行器。
12.一种代码执行装置,其特征在于,所述装置用于执行第一编程语言实现的目标源码,所述目标源码中包含以动态库形式存在的第二编程语言实现的隐私操作,所述装置包括:
编译处理模块,用于对所述目标源码进行编译处理,得到目标文件,所述目标文件中包含第一编程语言代码以及用于描述所述隐私操作的伪汇编代码的文本文件;
符号构建模块,用于根据所述目标源码中的输入符号和输出符号,构建输入符号名称列表、输入符号数值列表、以及输出符号名称列表;
代码执行模块,用于执行所述目标文件,以及在执行到所述目标文件中的隐私操作时,根据所述伪汇编代码、所述输入符号名称列表、所述输入符号数值列表、以及所述输出符号名称列表,生成第一参数;
底层调用模块,用于通过第一接口向虚拟执行器接口模块传递所述第一参数,所述虚拟执行器接口模块用于基于所述第一参数,生成第二参数,并通过第二接口向底层执行器传递所述第二参数,所述底层执行器用于基于所述第二参数,执行所述隐私操作。
13.根据权利要求12所述的装置,其特征在于,所述符号构建模块,包括:
属性确定子模块,用于基于编译过程产生的符号表,确定所述目标源码中每个符号的属性特征;
符号确定子模块,用于根据所述属性特征,确定所述目标源码中的输入符号和输出符号;
输入符号列表构建子模块,用于根据所述输入符号的名称,构建输入符号名称列表,以及根据所述输入符号的数值,构建输入符号数值列表;
输出符号列表构建子模块,用于根据所述输出符号的名称,构建输出符号名称列表。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
常量符号处理模块,用于对所述目标源码中的常量进行变量化处理,得到所述常量对应的变量;
常量符号添加模块,用于将所述变量的名称作为输入符号的名称,加入所述输入符号名称列表,以及将所述变量的数值作为输入符号的数值,加入所述输入符号数值列表。
15.根据权利要求12所述的装置,其特征在于,所述装置还包括:
全局符号映射模块,用于根据所述第一参数,建立全局符号映射表,所述全局符号映射表用于保存输入符号的信息、输出符号的信息、以及中间结果的信息。
16.根据权利要求15所述的装置,其特征在于,所述输入符号的信息包括:输入符号的名称、输入符号的形状、输入符号的数值、输入符号的类型;所述输出符号的信息包括:输出符号的名称、输出符号的形状、输出符号的数值、输出符号的...
【专利技术属性】
技术研发人员:徐鹏,
申请(专利权)人:华控清交信息科技北京有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。