一种适用于多方安全计算的自动化测试服务系统和方法与流程

文档序号:31078299发布日期:2022-08-09 22:00阅读:139来源:国知局
一种适用于多方安全计算的自动化测试服务系统和方法与流程

1.本发明涉及计算机软件领域,尤其涉及的是一种适用于多方安全计算的自动化测试服务系统和方法。


背景技术:

2.安全多方计算(secure multi-party computation,简称mpc)是多个计算方参与的安全协同计算,在计算过程中保证不会泄露任何输入信息。随着安全多方计算逐步成为主流的安全(或加密)计算技术,涌现出一批优秀的安全多方计算开发框架,典型代表有:emp-toolkit,aby,sharemind,spdz,latticex-rosetta等。虽然基于这些框架能够实现安全多方计算应用,但由于安全多方计算的特殊性,需要多个计算节点协同计算,进行安全多方计算的测试变得困难,需要分别在明文计算环境(非加密)和安全多方计算(加密)环境下进行测试计算,然后比较两个计算结果,最后给出测试断言。因此,安全多方计算的测试流程非常繁琐、不适合自动化测试、可拓展性低、也无法作为一项服务持续提供测试服务。
3.当前典型的安全多方计算框架,比如:emp-toolkit,aby,sharemind,spdz,latticex-rosetta等都没有提供自动化单元测试。一个比较接近的发明《系统测试方法和装置》(cn111538671a),该发明基于tensorflow系统框架,可以运行本地和分布式测试,其要求用户提供了测试所需要目标输入逻辑和目标计算逻辑,然后指定一次或多次执行验证安全多方计算测试结果,该发明主要执行流程如图1所示,根据该发明提供的执行流程及描述可知,该发明方法提供的是基于tensorflow静态的、非服务化、具体mpc协议绑定的测试方法。使用该方法,虽然可以在本地或分布式环境进行mpc测试用例自动化测试,但是其限定了安全计算协议,缺少灵活的协议切换能力;同时依赖于tensorflow框架,增加系统复杂性,也没法将测试从功能中解耦出来,用户(或编程人员)依然很难编写和实现自动化单元测试。
4.因此,现有技术存在缺陷,需要改进。


技术实现要素:

5.本发明所要解决的技术问题是:提供一种支持多种安全多方计算协议、灵活定制测试用例、自动化测试验证(断言)、测试能力服务化等核心功能,并且能够提供可拓展和动态添加测试用例的能力,使得用户能从

自己构建负责的测试系统’中解脱出来,只需要关注明文计算逻辑(或函数)和安全多方计算逻辑(或函数)的编写,然后组装测试用例和提交测试用例,即可在自动化测试服务系统获取测试结果的适用于多方安全计算的自动化测试服务系统和方法。
6.本发明的技术方案如下:一种适用于多方安全计算的自动化测试服务系统,包括:集中管理模块configure,用于配置自动化测试服务系统的参数;管理执行器模块masterexecutor,用于管理明文执行模块plainrunner和mpc执行模块;明文执行模块plainrunner,用于明文计算函数的本地执行;mpc执行模块,用于执行用户指定的安全多方
计算函数。
7.应用于上述技术方案,所述的自动化测试服务系统中,mpc执行模块设置有多个mpcrunner执行器,多个mpcrunner执行器模拟mpc的计算节点,协同完成安全多方计算函数的执行。
8.应用于上述各个技术方案,所述的自动化测试服务系统中,还包括用于处理多种mpc协议的注册、创建mpcrunner执行器的多协议注册中心模块protocolregistrar。
9.应用于上述各个技术方案,所述的自动化测试服务系统中,还包括用于处理外部客户端提交进来的测试用例请求的测试用例队列模块testcasequeue。
10.应用于上述各个技术方案,所述的自动化测试服务系统中,其设置有用户程序配置接口和用户程序执行接口,用户程序配置接口用于设置执行的指定mpc协议和启动自动化测试服务系统;用户程序执行接口用于连接执行一个或多个单元测试用例,将测试用例提交给mpc执行模块和明文执行模块plainrunner执行,并返回执行结果给用户。
11.应用于上述各个技术方案,所述的自动化测试服务系统中,所述用户程序执行接口用于执行一个或多个单元测试用例时,每个测试用例由输入函数、明文执行函数、安全多方计算函数和比较函数组成。
12.应用于上述各个技术方案,所述的自动化测试服务系统中,其还设有用于定制mpc协议的mpcprotocolrunner接口类接口,将mpc执行模块能实现的mpcprotocolrunner接口类静态注册到多协议注册中心模块protocolregistrar中,并且,使用注册的mpcprotocolrunner接口类的子类来创建并运行指定mpc协议的mpcrunner执行器。
13.应用于上述各个技术方案,所述的自动化测试服务系统中,所述mpcprotocolrunner接口类接口用于实现mpc协议的初始化、输入处理、执行计算、结果处理接口的定制。
14.应用于上述各个技术方案,一种采用以上任一适用于多方安全计算的自动化测试服务系统的自动化测试服务方法,其特征在于:包括如下步骤:步骤s1:自动化测试服务系统启动服务后,等待客户端测试用例请求;步骤s2:客户端启动,连接到自动化测试服务系统;步骤s3:客户端创建测试用例,每个测试用例包括指定输入函数、mpc执行函数、明文执行函数、比较函数,然后编码和打包为测试用例请求消息;步骤s4:客户端发起测试用例请求,然后等待请求响应;步骤s5:自动化测试服务系统接收测试用例请求消息,将测试用例请求消息解包和解码后,将测试用例添加到测试用例队列模块testcasequeue,等待下一步的测试用例执行处理;步骤s6:自动化测试服务系统从测试用例队列模块testcasequeue获取测试用例,并返回测试用例结果报告。
15.应用于上述各个技术方案,所述的自动化测试服务方法中,步骤s6中,管理执行器模块masterexecutor从测试用例队列模块testcasequeue获取测试用例,然后发送明文测试请求给明文执行模块plainrunner、发送安全多方计算测试请求给mpc执行模块;并且,文执行模块plainrunner接收到明文测试请求,执行明文测试函数,执行完成将返回执行结果给管理执行器模块masterexecutor;mpc执行模块接收到安全多方计算测试请求,执行安全多方计算函数,执行完成将返回执行结果给管理执行器模块masterexecutor;管理执行器模块masterexecutor接收明文函数计算结果和安全多方计算函数计算结果,调用比较函数比较,缓存比较结果。
16.本发明的有益效果为:
17.本发明通过集中管理模块configure配置自动化测试服务系统的参数;明文执行模块plainrunner本地执行明文计算函数;mpc执行模块执行用户指定的安全多方计算函数:管理执行器模块masterexecutor管理明文执行模块plainrunner和mpc执行模块;如此,可以将整个测试流程整合起来,提供一个单元测试用例服务系统,客户端用户(技术人员)只需要编写好明文(非加密)计算函数、安全多方计算函数和输入函数,指派给自动化测试服务系统,就可以实现安全多方计算功能测试和结果断言,即可以完成多种安全多方计算协议的自动化测试,大大提升安全多方计算测试的自动化度和测试效率。
附图说明
18.图1为现有技术的流程图;
19.图2为本发明自动化测试服务系统的模块示意图;
20.图3为客户端用户与本发明自动化测试服务系统交互示意图;
21.图4为本发明自动化测试服务系统的具体实现示意图。
具体实施方式
22.以下结合附图和具体实施例,对本发明进行详细说明。
23.本实施例提供了一种适用于多方安全计算的自动化测试服务系统,如图2所示,mpctestservice即本发明对应的自动化测试服务系统,对外提供安全多方计算测试服务。系统本身具备多mpc协议配置和管理能力、测试用例管理、测试服务系统控制等功能。mpctestservice包括多个子模块:configure、procotolregistrar、masterexecutor、plainrunner、mpcrunner。
24.其中,集中管理模块configure,用于配置自动化测试服务系统的参数;可以配置自动化测试服务系统的使用参数。
25.管理执行器模块masterexecutor,用于管理明文执行模块plainrunner和mpc执行模块;其中,管理执行器模块masterexecutor处理由mpctestservice接受过来的测试用例请求,负责管理明文执行模块plainrunner、mpc执行模块,并且,所有自动化测试共用一个管理执行器模块masterexecutor。
26.明文执行模块plainrunner,用于明文计算函数的本地执行;其中,所有自动化测试共用一个明文执行模块plainrunner,负责明文计算函数的本地执行,用户指定的明文计算函数,将会被提交到明文执行模块mpcrunner上执行。由于明文执行模块plainrunner只需要执行明文,当前以线程的方式实现明文执行模块plainrunner。
27.mpc执行模块,用于执行用户指定的安全多方计算函数。其中,mpc执行模块设置有多个mpcrunner执行器,多个mpcrunner执行器模拟mpc的计算节点,协同完成安全多方计算函数的执行。多个mpcrunner执行器构成mpc执行模块,mpcrunner执行器模拟mpc的计算节点,用户指定的安全多方计算函数,将会被提交到mpcrunner执行器上执行,多个节点协同完成安全多方计算(密文)的执行。
28.每个mpcrunner执行器将为独立的子进程运行,并由管理执行器模块masterexecutortor进行管理,保证能够兼容不同的mpc协议开发库,提供更加灵活的多协
议支持。
29.并且,还包括用于处理多种mpc协议的注册、创建mpcrunner执行器的多协议注册中心模块protocolregistrar;protocolregistrar为多协议注册中心模块,主要处理多种mpc协议的注册、查询、创建mpc执行模块的mpcrunner执行器等。每个支持的mpc协议都需要先注册到protocolregistrar中。
30.以及还包括用于处理外部客户端提交进来的测试用例请求的测试用例队列模块testcasequeue,testcasequeue即测试用例队列模块,主要处理外提交进来的测试用例请求,包括两部分:1.提供给管理执行器模块masterexecutor测试用例;2.处理管理执行器模块masterexecutor比较结果和构建测试结果消息,然后作为相应返回给请求用户。
31.本实施例中,管理执行器模块masterexecutor管理明文执行模块plainrunner、mpc执行模块、以及mpcrunner执行器的执行,管理执行器模块masterexecutor和明文执行模块plainrunner、mpc执行模块、mpcrunner执行器之间类似分布式的主从服务架构模式,通信方式为进程间的通信方式,本发明当前实现为可配置的管道通信方式和socket通信方式。
32.并且,本实施例的自动化测试服务系统设置有用户程序配置接口和用户程序执行接口,其中,用户程序配置接口用于设置执行的指定mpc协议和启动自动化测试服务系统,客户端用户通过用户程序配置接口设置自动化测试服务系统执行的指定mpc协议和启动自动化测试服务系统;用户程序执行接口用于连接执行一个或多个单元测试用例,客户端用户通过用户程序执行接口将测试用例提交测试用例队列模块testcasequeue,通过管理执行器模块masterexecutor给mpc执行模块和明文执行模块plainrunner执行,并通过用户程序执行接口返回执行结果给客户端用户。
33.具体是,用户程序配置接口实现方式如下:
34.1.mpctestservice::setup(config_json,compare_accuracy,protocol)
35.设置执行协议和启动自动化测试服务系统,自动化测试服务系统启动后将在后台运行相关核心模块。
36.2.mpctestservice::run(test_cases=[(input_fn,plain_fn,mpc_fn,cmp_fn),...]
[0037]
执行一个或多个单元测试用例,将测试用例提交给mpc执行模块和明文执行模块执行,执行成功则返回测试结果,失败则返回异常。
[0038]
其中,测试用例输入参数test_cases:
[0039]-支持多个测试用例输入;
[0040]-每个测试用例由:输入函数input_fn,明文执行函数plain_fn,安全多方计算函数mpc_fn,比较函数cmp_fn;
[0041]-输入函数input_fn,提供用户输入;
[0042]-明文执行函数plain_fn,提供明文执行代码片段,可以使用input_fn获取输入,运行在plainrunner中;
[0043]-安全多方计算执行函数mpc_fn,提供安全多方计算执行代码片段,可以使用input_fn获取输入,运行在plainrunner中;
[0044]-比较函数cmp_fn,提供二元输入比较,用来比较明文执行结果和安全多方计算结
果,运行在masterexecutor中。
[0045]
另外,本实施例的自动化测试服务系统还设有用于定制mpc协议的mpcprotocolrunner接口类接口,将mpc执行模块能实现的mpcprotocolrunner接口类静态注册到多协议注册中心模块protocolregistrar中,并且,使用注册的mpcprotocolrunner接口类的子类来创建并运行指定mpc协议的mpcrunner执行器。并且,所述mpcprotocolrunner接口类接口用于实现mpc协议的初始化、输入处理、执行计算、结果处理接口的定制。
[0046]
具体地,mpcprotocolrunner接口类的主要接口如下:
[0047]
1.mpcprotocolrunner::init(config_json)
[0048]
mpc协议服务系统初始化。
[0049]
2.mpcprotocolrunner::procinput(node_id,data=vector《string》)
[0050]
mpc输入处理,将外部输入的数据进行协议处理。
[0051]
3.mpcprotocolrunner::computation(function《void》(void*))
[0052]
mpc执行计算,将外部指定的安全多方计算函数进行mpc协议执行。
[0053]
4.mpcprotocolrunner::procresult(node_id,data=vector《string》)
[0054]
mpc结果处理,将安全多方计算的输出结果进行处理,node_id指定结果接收方节点id。
[0055]
本实施例方案支持mpc多协议,每个mpc需要实现mpcprotocolrunner接口,然后静态注册到protocolregistrar中。在mpctestservice进行setup的时候将使用注册的mpcprotocolrunner的子类来创建并运行指定mpc协议的mpcrunner。
[0056]
另外,本实施例还提供了一种采用以上适用于多方安全计算的自动化测试服务系统的自动化测试服务方法。
[0057]
本发明的自动化测试服务系统(mpctestservice)对外提供sdk给用户程序,即客户端用户,用来连接mpctestservice来使用测试服务。用户程序和mpctestservice服务的交互和具体的服务流程如图3和图4所示。
[0058]
自动化测试服务系统方法包括步骤s1:自动化测试服务系统启动服务后,等待客户端测试用例请求;步骤s2:客户端启动,连接到自动化测试服务系统;步骤s3:客户端创建测试用例,每个测试用例包括指定输入函数、mpc执行函数、明文执行函数、比较函数,然后编码和打包为测试用例请求消息;步骤s4:客户端发起测试用例请求,然后等待请求响应;步骤s5:自动化测试服务系统接收测试用例请求,将消息请求解包和解码后,将测试用例添加到请求队列,等待下一步的测试用例执行处理;步骤s6:自动化测试服务系统从测试用例请求队列获取测试用例,并返回测试用例结果报告。
[0059]
其中,步骤s6中,管理执行器模块masterexecutor从测试用例队列模块testcasequeue获取测试用例,然后发送明文测试请求给明文执行模块plainrunner、发送安全多方计算测试请求给mpc执行模块;并且,文执行模块plainrunner接收到明文测试请求,执行明文测试函数,执行完成将返回执行结果给管理执行器模块masterexecutor;mpc执行模块接收到安全多方计算测试请求,执行安全多方计算函数,执行完成将返回执行结果给管理执行器模块masterexecutor;管理执行器模块masterexecutor接收明文函数计算结果和安全多方计算函数计算结果,调用比较函数比较,缓存比较结果。
[0060]
客户端用户与自动化测试服务系统交互如图3所示,具体为;
[0061]
1.mpctestservice setup启动服务后,等待客户端用户(clientapp)测试用例请求;
[0062]
2.客户端用户(clientapp)setup启动,连接到mpctestservice、执行登录,登录成功将从mpctestservice返回成功响应;
[0063]
3.客户端用户创建测试用例(testcase),包括指定输入函数(代码段)、mpc执行函数(代码段)、明文执行函数(代码段)、比较函数(代码段)等,然后编码和打包为测试用例请求消息;
[0064]
4.客户端用户发起测试用例请求,然后等待请求响应;
[0065]
5.mpctestservice接收测试用例请求,消息请求解包和解码后,将测试用例添加到请求队列,等待下一步的测试用例执行处理;
[0066]
6.mpctestservice从测试用例请求队列获取测试用例,并返回测试用例结果报告。
[0067]
本实施例方案客户端用户不涉及mpc测试是的直接执行,具体测试和校验都是在mpctestservice运行服务上完成的,mpctestservice通过接收用户发送过来的测试用例请求,首先进行测试用例队列,然后执行处理并返回测试用例处理结果。
[0068]
本实施例方案mpctestservice接收和处理测试用例请求,实现mpc自动化测试的详细流程如图4所示,具体为:
[0069]
1.testcasequeue处理外部测试用例请求
[0070]
testcasequeue模块处理外部请求测试用例,接收到测试用例请求后,执行解包、解码处理,然后将合法测试用例加入处理队列,等待处理;每个测试用例请求实际上对应的是一个测试单元列表,可能包括一个或多个测试单元。testcasequeue采用排队策略顺序地接收测试用例请求,保证测试用例执行的有序性。
[0071]
2.masterexecutor获取mpc自动化测试用例
[0072]
masterexecutor从testcasequeue处理队列获取测试用例,然后发送明文测试请求给plainrunner、发送安全多方计算测试请求给mpcrunner。
[0073]
3.plainrunner执行明文函数
[0074]
plainrunner接收到明文测试请求,执行明文测试函数,执行完成将返回执行结果给masterexecutor。
[0075]
4.mpcrunner执行安全多方计算函数
[0076]
mpcrunner接收到安全多方计算测试请求,执行安全多方计算函数,执行完成将返回执行结果给masterexecutor。
[0077]
5.masterexecutor测试结果比较
[0078]
masterexecutor接收明文函数计算结果和安全多方计算函数计算结果,调用比较函数比较,缓存比较结果;由于判断测试结果是否相等,具有特殊性,可能不能直接数值相等比较,鉴于比较函数的可定制性,可以通过指定测试精度,来确定是否结果相等。
[0079]
6.masterexecutor查看是否还有下一个测试用例单元
[0080]
如果有则进入步骤1继续执行;如果没有则合并缓存的比较结果,提供给testcasequeue模块;
[0081]
7.testcasequeue返回测试结果
[0082]
testcasequeue模块获得合并的比较结果后,组装测试用例处理相应消息,返回给客户端,整个测试处理结束。
[0083]
8.mpctestservice执行测试用例
[0084]
该步骤run test将测试用例(一个或多个)提交给masterexecutor,等待测试用例执行返回。注意mpctestservice采用排队顺序地接收和提交测试用例请求,保证测试用例执行的有序性。
[0085]
整个执行流程中,mpctestservice以服务的形式提供给外部客户端用户,无需手动干扰,提交的(一个或多个)测试用例都是自动化执行完成,因此本系统具备较完备的自动化测试能力。同时用户执行mpc测试,用户接口简单,只需要提交自己的测试用例,然后等待测试结果,而且使用mpctestservice的用户能够持续添加新的测试用例,支持多用户客户端,使得进行mpc测试更加简单,更适合批量、持续性测试。进一步地,将mpctestservice作为服务提供出来,进一步解耦了功能开发和单元测试,更适合模块化开发。
[0086]
本发明将添加的相应模块并整合,如下:
[0087]
1.支持多种安全多方计算协议,即mpc协议;
[0088]
为了支持安全多方计算,本方案将定制一个mpc执行模块,该模块包括多个节点执行器服务系统,负责初始化、处理输入、执行计算和结果处理等,并为每个测试用例,指定一个安全多方计算函数,提供给mpc执行模块执行计算。
[0089]
为了支持不同的mpc协议,为mpc执行模块定制mpc协议实现,即实现mpc协议的接口类,分别实现初始化、输入处理、执行计算、结果处理接口的定制,并注册测试框架中。多种协议实现注册到测试框架后,在使用的时候,只需要配置指定协议即可。
[0090]
2.支持定制输入;
[0091]
为了定制输入,针对每个测试用例,指定一个输入函数,提供给mpc执行模块获取输入。
[0092]
3.支持明文计算;
[0093]
为了支持明文计算,添加一个明文执行模块来执行明文计算,并针对每个测试用例,指定一个明文计算函数,提供给明文执行模块计算。
[0094]
4.支持测试结果验证,即断言;
[0095]
使用明文模块计算结果和mpc执行模块计算结果,并需要指定比较函数,使用比较函数进行比较以实现测试验证(断言)。
[0096]
5.支持可拓展性;
[0097]
借助前面1,2,3,4点提供的灵活的初始化、输入、计算和结果处理和比较定制,使得用户具备较强的定制灵活性和实现单元测试的良好拓展性。
[0098]
6.测试能力服务化;
[0099]
通过将mpc执行、明文执行、结果验证服务化,作为一个运行的常驻后台服务,为用户提供安全多方计算测试服务。用户只需要“构建测试用例&提交测试用例&获取测试结果”即可完成测试。
[0100]
本发明通过借鉴分布式系统设计,设计安全多方计算自动化测试服务系统,该服务系统提供了多个核心模块。通过构建多个节点进程,分别模拟实现明文执行和安全多方
计算密文执行,同时设置测试用例请求排队模块处理外部多任务请求,一个master管理执行器来管理和执行多个自动化测试用例。最后自动化测试服务系统将输出测试用例的测试结果统计信息并返回给请求用户。
[0101]
客户端用户(或编程人员)使用本方面方案执行单元测试时,借助sdk连接到服务启动,然后只需要创建并提交由“指定输入函数、明文计算函数(代码)和安全多方计算函数”等构成测试用例的信息组,即可实现一个完整的多方安全计算的自动化单元测试。
[0102]
以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1