CN113051177B - 测试方法和装置 - Google Patents

测试方法和装置 Download PDF

Info

Publication number
CN113051177B
CN113051177B CN202110426831.5A CN202110426831A CN113051177B CN 113051177 B CN113051177 B CN 113051177B CN 202110426831 A CN202110426831 A CN 202110426831A CN 113051177 B CN113051177 B CN 113051177B
Authority
CN
China
Prior art keywords
data
holder
test
data holder
computing module
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
Application number
CN202110426831.5A
Other languages
English (en)
Other versions
CN113051177A (zh
Inventor
应鹏飞
孙勇
阮方圆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110426831.5A priority Critical patent/CN113051177B/zh
Publication of CN113051177A publication Critical patent/CN113051177A/zh
Application granted granted Critical
Publication of CN113051177B publication Critical patent/CN113051177B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本公开披露了一种测试方法和装置。所述方法用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块属于第一数据持有方,所述方法应用于所述第一数据持有方,所述方法包括:接收针对所述安全计算模块的测试指令;响应于所述测试指令,生成所述第一数据持有方的测试数据;响应于所述测试指令,向第二数据持有方发送参与测试的请求,所述请求用于触发所述第二数据持有方对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据;在所述第一数据持有方的测试数据和所述第二数据持有方的测试数据上执行所述测试指令,得到针对所述安全计算模块的测试结果。

Description

测试方法和装置
技术领域
本公开涉及多方安全计算领域,具体涉及一种测试方法和装置。
背景技术
大数据时代,存在非常多的数据孤岛。例如,一个自然人的数据,可以分散存储于不同的数据持有方(如企业)中。数据持有方之间可能由于竞争关系或用户隐私保护的考虑,并不是完全的互相信任,这就为涉及数据持有方之间的数据计算(如数据统计计算)工作造成了障碍。
多方安全计算能够在充分保护数据持有方的数据隐私的前提下,联合多方的数据进行数据计算,因此,多方安全计算的应用越来越广泛。执行多方安全计算的安全计算模块在使用前一般需要先进行测试,以验证其能否执行期望的功能。但是,安全计算模块的验证需要模拟多个数据持有方的数据作为测试数据,而测试数据的构造是多方安全计算领域目前面临的难点。
发明内容
有鉴于此,本公开提供一种测试数据的生成方法和装置,以解决测试数据构造难的问题。
第一方面,提供一种测试方法,所述方法用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块属于第一数据持有方,所述方法应用于所述第一数据持有方,所述方法包括:接收针对所述安全计算模块的测试指令;响应于所述测试指令,生成所述第一数据持有方的测试数据;响应于所述测试指令,向第二数据持有方发送参与测试的请求,所述请求用于触发所述第二数据持有方对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据;在所述第一数据持有方的测试数据和所述第二数据持有方的测试数据上执行所述测试指令,得到针对所述安全计算模块的测试结果。
第二方面,提供一种测试方法,所述方法用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块属于第一数据持有方,所述方法应用于参与所述安全计算模块的测试的第二数据持有方,所述方法包括:接收所述第一数据持有方发送的参与所述安全计算模块的测试的请求;响应于所述请求,对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据。
第三方面,提供一种测试装置,所述装置用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块和所述装置均属于第一数据持有方,所述装置包括:第一接收单元,被配置为接收针对所述安全计算模块的测试指令;生成单元,被配置为响应于所述测试指令,生成所述第一数据持有方的测试数据;发送单元,被配置为响应于所述测试指令,向第二数据持有方发送参与测试的请求,所述请求用于触发所述第二数据持有方对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据;测试单元,被配置为根据所述第一数据持有方的测试数据和所述第二数据持有方的测试数据,对所述测试指令进行测试。
第四方面,提供一种测试装置,所述装置用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块属于第一数据持有方,所述装置属于参与所述安全计算模块的测试的第二数据持有方,所述装置包括:接收单元,被配置为接收所述第一数据持有方发送的参与所述安全计算模块的测试的请求;生成单元,被配置为响应于所述请求,对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据。
第五方面,提供一种测试装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如第一方面或第二方面所述的方法。
第六方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第二方面所述的方法。
第七方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第二方面所述的方法。
根据本公开提供的技术方案可以看出,第二数据持有方的测试数据是在其自身持有的真实数据基础上执行打乱操作后得到的。该测试数据虽然与真实数据不同,但该测试数据可以保留真实数据的很多特性,比如数据类型、数据范围、边界值等,从而能够更好地对安全计算模块进行验证。此外,采用真实数据进行测试时,一般是需要向提供真实数据的一方付费的,而本公开并非以真实数据作为测试数据,因此可以降低测试成本。
附图说明
图1为可应用本公开实施例的系统框架示例图。
图2为本公开一实施例提供的测试方法的流程示意图。
图3为图2中的步骤S240的实现方式的示例图。
图4是图2中的步骤S250的实现方式的示例图。
图5是本公开一实施例提供的测试装置的结构示意图。
图6是本公开另一实施例提供的测试装置的结构示意图。
图7是本公开又一实施例提供的测试装置的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
在大数据时代,多个数据持有方可以持有同一对象的数据。在这种情况下,在对该对象的数据进行数据计算时,会涉及多个数据持有方,可能需要该多个数据持有方合作才能完成该数据计算。然而,由于不同数据持有方之间出于竞争或者隐私保护方面的考虑,不能或者不愿意泄露各自持有的数据。
例如,同一个自然人可以在不同的P2P(peer-to-peer,点对点)平台借款。因此,各P2P平台均可能存储有该自然人在本平台的借款数额。当需要统计该自然人在多个P2P平台的借款总额时,往往需要联合该多个P2P平台的数据才能完成该统计计算。在这个例子中,P2P平台是数据持有方,该自然人的借款数额是数据持有方持有的数据,计算自然人借款总额为期望完成的数据计算。
又如,每个共享单车平台都可以为用户提供单车使用服务。各共享单车平台均存储有该平台每天共享单车的使用量。在希望统计共享单车在某一天的使用总量时,往往需要联合多个共享单车平台的数据完成统计计算。在这个例子中,共享单车平台是数据持有方,这一天共享单车的使用量是数据持有方持有的数据,这一天共享单车的使用总量为期望完成的数据计算。
又如,每个电子商务平台均可能存储相同或不同消费群体的消费数据。为了更好地了解消费者的习惯和选择营销活动的目标群体,往往需要联合多个电子商务平台的消费数据进行模型训练。在这个例子中,电子商务平台为数据持有方,各自记录的消费数据为数据持有方持有的数据,利用这些数据进行模型训练为期望完成的数据计算。
为了联合多个数据持有方的数据进行数据计算,同时保护该多个数据持有方的数据,多方安全计算逐渐被广泛应用。
多方安全计算可以在保护数据隐私的前提下进行通用计算。例如,多方安全计算使非互信的多个数据持有方之间可以在数据相互保密的前提下进行高效数据计算,从而做到既使用多源数据进行指定的数据计算,又保证使用过程中数据隐私不被泄漏,真正实现数据的可用而不可见。
参见图1,图1中的120代表的是数据持有方。多个数据持有方120A~120N能够通过网络110进行通信,且该多个数据持有方120A~120N上均安装有安全计算模块122A~122N,以实现基于彼此数据的多方安全计算。
本公开实施例中提及的数据持有方指的是数据的持有者,如企业、政府机构或商户等。在某些实施例中,数据持有方也可以指持有数据、并可以执行多方安全计算的网络节点(或称安全计算节点),如网络中的服务器或计算机。
本公开实施例对安全计算模块的具体类型不做限定。例如,安全计算模块例如可以为基于多个数据持有方的数据执行数据统计的模块(下文将该模块简称为安全统计模块)。安全统计模块可在保证多个数据持有方持有的数据不泄露的前提下实现基于多方数据的数据统计,如在不泄露客户信息的前提下查询到同一自然人在不同银行的贷款总额。
又如,该安全计算模块还可以是基于多个数据持有方的数据对模型进行模型训练的模块(下文将该模块简称为安全模型模块)。安全模型模块可在保证多个数据持有方持有的数据不泄露的前提下利用多个数据持有方持有的数据进行模型训练。例如,电商平台希望采用某个预测模型对某款产品的目标消费群体进行预测,则安全模型模块可以在不泄露用户隐私的前提下,对该预测模型进行训练。
在联合多个数据持有方的数据进行安全计算过程中,可以采用混淆电路、同态加密以及秘密分享等算法中的一种或多种的组合对数据的计算和/或传输过程进行隐私保护。
多方安全计算一般由数据持有方的计算设备上安装的安全计算模块(或安全计算应用或安全计算脚本)实现。该安全计算模块在使用前一般需要先进行数据测试(或称数据仿真),以验证其能否正确运行。
为了验证安全计算模块能否正确运行,通常需要模拟多个数据持有方的数据作为测试数据。由于安全计算模块对多个数据持有方的测试数据的一致性要求较高,导致测试数据准备比较困难。例如,如果希望得到正确的验证测试结果,多个数据持有方的测试数据的数据格式需要与真实数据的数据格式尽可能保持一致。但是,采用真实数据进行测试很容易导致数据泄露,例如,发起测试的一方很容易通过差分攻击的方式猜测出真实数据的数据值。因此,为了防止数据隐私的泄露,最好不要直接使用真实数据进行验证。
一种可能的测试数据的准备方式是随机产生多个数据持有方的测试数据。但是,随机生成的测试数据会导致数据的很多特性无法被验证,测试效果差。例如,随机生成的测试数据可能会改变数据的类型(比如年龄数据的数据类型应当为整型,但随机生成的数据可能为字符型),导致测试失败;又如,随机生成的测试数据的数据范围会与真实情况不符(比如身高数据超过3米),使得测试结果背离预期值,从而导致数据验证失败。
另一种可能的测试数据准备方式是对数据持有方的真实数据进行抽样,并将抽样出的真实数据作为测试数据。但是,如前文所述,这种测试数据准备方式有泄露数据隐私的风险。例如,两个企业均准备了100位用户的数据作为测试数据,假设两个企业提供的100位用户中,只有20位用户是匹配的(即两个企业均记录有该20位用户的数据),未匹配到的80位用户的数据就泄露给了对方。此外,采用真实数据进行数据测试还存在测试数据构造成本高的问题,这是因为提供真实数据的一方往往是需要向测试发起方收费的。
根据上文的描述可以看出,在多方安全计算场景下,测试数据的构造是目前面临的难点。
本公开实施例提供一种测试方法,能够快速地构造安全计算模块的测试数据,并降低测试数据的构造成本。
下面结合附图2,对本公开实施例提供的测试方法进行详细描述。
图2的方法是站在第一数据持有方和第二数据持有方交互的角度进行描述的。应理解,本公开实施例提及的第一数据持有方和第二数据持有方并非特指某个数据持有方,第一数据持有方指的是希望对安全计算模块进行测试的一方,第二数据持有方指的是参与该测试的一方。实际上,参与多方安全计算的任意一个数据持有方均有可能是第一数据持有方,也均有可能是第二数据持有方,这取决于该数据持有方是希望发起测试,还是参与了其他数据持有方发起的测试。例如,在图1所示的场景下,假设数据持有方120A在使用安全计算模块前,希望对安全计算模块进行测试,并希望邀请数据持有方120B参与测试,则数据持有方120A为第一数据持有方,数据持有方120B为第二数据持有方。相反,如果数据持有方120B在使用安全计算模块前,希望对安全计算模块进行测试,并希望邀请数据持有方120A参与测试,则数据持有方120B为第一数据持有方,数据持有方120A为第二数据持有方。
还应理解,图2仅示出一个第二数据持有方,但本公开实施例对第二数据持有方的数量不做具体限定。当第一数据持有方发起测试时,可以有一个或多个第二数据持有方参与其中。如果存在多个第二数据持有方,图2所示的第二数据持有方可以是其中的任意一个第二数据持有方。
在步骤S210,第一数据持有方接收针对安全计算模块的测试指令。该测试指令可用于对安全计算模块进行测试或验证。例如,该测试指令可用于对安全计算模块的安全计算脚本的逻辑进行验证,如验证安全计算脚本的逻辑是否正确,或者验证安全计算脚本是否可正确运行。
该测试指令可以直接输入至安全计算模块中,以便安全计算模块根据该测试指令开始后续的测试流程。该测试指令可以由安全计算模块的测试人员输入。例如,测试人员可以在第一数据持有方的计算设备上启动安全计算模块的应用,并将该测试指令输入其中。或者,测试指令也可以是预先定义好的默认指令。例如,该安全计算模块在正式使用之前,均可自动将该默认指令输入至该安全计算模块,以对该安全计算模块进行测试。
该测试指令可以是结构化查询语言(Structured Query Language,SQL)语句。该SQL语句可用于对测试数据进行查询。以安全计算模块为安全统计模块为例,该测试指令可以是单条件计数,也可以是多条件计数。假设测试数据采用表1所示的数据,则该SQL语句可以是查询x>3且y<6的id的个数:select count(id)from table where x>3 and y<6。
表1
Figure BDA0003029835300000051
Figure BDA0003029835300000061
在步骤S220,响应于测试指令,生成第一数据持有方的测试数据。在一些实施例中,第一数据持有方可以直接将自身持有的部分或全部数据作为测试数据。由于第一数据持有方是测试的发起者,在本次测试中,其并不需要将测试数据提供给其他数据持有方。因此,直接将第一数据持有方的真实数据作为测试数据不但能够进一步提高测试的准确性,而且能够简化测试数据的准备过程。
在另一些实施例中,第一数据持有方也可以对第一数据持有方持有的部分或全部真实数据进行包含打乱操作在内的一种或多种操作,再将操作结果作为测试数据。下文(详见步骤S240的相关描述)会结合具体的实施例对第二数据持有方的测试数据的构造方式进行详细地描述,第一数据持有方可以按照与第二数据持有方类似的方式构造测试数据。换句话说,下文描述的第二数据持有方的测试数据的构造方式均可应用于第一数据持有方,此处暂不赘述。
在步骤S230,响应于测试指令,第一数据持有方向第二数据持有方发送参与测试的请求。该请求用于请求或触发第二数据持有方对自己持有的真实数据执行打乱操作,以生成安全计算模块的测试数据。可替换地,在一些实施例中,该请求可用于请求第二数据持有方提供针对安全计算模块的测试数据。
该参与测试的请求可以仅用于触发第二数据持有方按照预设的方式提供测试数据,而无需携带其他任何附加信息。在这种情况下,第二数据持有方收到该请求之后,按照默认的方式执行后续操作,以提供测试数据即可。例如,第二数据持有方收到该请求之后,默认对自身持有的全部真实数据执行打乱操作,得到第二数据持有方的测试数据。
或者,该参与测试的请求也可以包含以下信息中的一种或多种:测试指令,待测试的安全计算模块的类型,第一数据持有方需要第二数据持有方提供的测试数据的种类,以及第一数据持有方需要第二数据持有方提供的测试数据的数量等。第二数据持有方可以根据请求中包含的信息,有针对性地从自身持有的真实数据中筛选测试数据。
应理解,本公开实施例对步骤S220和步骤S230的执行顺序不做具体限定,二者可以同时执行,也可以按照一定顺序先后执行。例如,步骤S220可以早于步骤S230执行,或者,步骤S220可以晚于步骤S230执行。
在步骤S240,第二数据持有方对自己持有的真实数据执行打乱操作,以生成第二数据持有方的测试数据。
打乱操作也可以成为shuffle操作。对真实数据的打乱操作指的是将真实数据的排序和/或对应关系打乱,形成被打乱的数据。以真实数据为数据库中的数据为例,则可以将某个或某些字段的排序打乱,以改变每条记录中的键和值之间的映射关系。经过打乱操作得到的数据也可称为真实数据的打乱数据或shuffle数据。
由此可见,本公开实施例中,第二数据持有方的测试数据是在真实数据基础上构建的。该测试数据虽然与真实数据不同,但该测试数据可以保留真实数据的很多特性,比如数据类型、数据范围、边界值等,从而能够更好地对安全计算模块进行验证。此外,该测试数据是在真实数据基础上执行打乱操作后得到的,数据构造逻辑较为简单,能够提高测试数据的构造效率。进一步地,真实数据作为测试数据通常是需要收费的,本公开实施例并非以真实数据作为测试数据,因此,基于本公开实施例构造出的测试数据还具有成本低的优势。
为了便于查找数据,数据持有方通常会按照一定的形式将自身持有的真实数据存储在数据库中。数据库中的数据一般是按照字段进行组织的。上文中的表1示出的即为数据库的一种常见组织形式。表1中的一行(即每个id对应的一行)可以称为一条记录,表1中的一列可以称为一个字段。从表1可以看出,该数据库中的数据共具有4个字段(分别是id、x、y、z所在的字段),并包括4条记录(即id1~id4对应的记录)。id所在的字段可以称为键(key)。虽然表1中的键仅占一个字段,但本公开实施例不限于此,在某些实施例中,键也可以是多个字段的组合。x、y、z所在的字段可以称为值(value)。由此可见,数据库通常是以键值(key-value)的形式存储的键值数据。
第一、第二数据持有方提供的测试数据均可以为键值数据。第一、第二数据持有方提供的键值数据可以具有相同的字段内容(例如,均包括身份证号、身高、体重、年龄等字段内容)或相互匹配的键(例如,第一、第二数据持有方提供的键值数据可以是身份证号相同的人的数据)。
第二数据持有方在对自身持有的真实数据执行打乱操作时,可以对真实数据的任一字段执行打乱操作(如改变任一字段中的各项数据在该字段中的排序)。换句话说,第二数据持有方可以仅对键所在的一个或多个字段执行打乱操作,也可以仅对值所在的一个或多个字段执行打乱操作,或者也可以同时对键和值所在的字段执行打乱操作。作为一个示例,第二数据持有方可以先对键所在的字段执行打乱操作,以打乱第二数据持有方的数据中的键。然后,再对第二数据持有方的各个值执行打乱操作。数据被打乱的越乱,则数据隐私被泄露的风险越小。
图3提供了对第二数据持有方的真实数据执行打乱操作的一个示例。图3的上半部分示出的是第二数据持有方的真实数据;下半部分示出的是该真实数据按列执行打乱操作之后得到的测试数据。假设安全计算模块为安全统计模块,第一数据持有方接收到的测试指令为如下SQL语句:查询x>3且y<6的id的个数,则通过观察图3可以看出,如果基于打乱操作前的真实数据进行测试,则命中结果为1(参见图3中的虚线框);如果采用打乱操作后的数据进行测试,则命中结果为2。由此可见,对真实数据执行打乱操作,可以一定程度隐藏真实数据,从而保护数据隐私。此外,虽然这些数据在对应列中的排列顺序被打乱了,但每一列的数据类型、数据范围以及边界值是保持不变的,从而为安全计算模块的验证提供了很好的数据基础。
在一些实施例中,第二数据持有方可以对自身持有的全部真实数据执行打乱操作。第二数据持有方对自身持有的全部真实数据执行打乱操作,可以简化第二数据持有方的操作复杂度。
在另一些实施例中,在接收到第一数据持有方发送的参与测试的请求后,第二数据持有方可以先从自身持有的真实数据中选取部分数据,然后再对该部分数据执行打乱操作。第二数据持有方对自身持有的真实数据中的部分数据执行打乱操作,可以降低第二数据持有方的计算量。
第二数据持有方从自身持有的真实数据中选取待打乱的数据的方式可以有多种。例如,第二数据持有方可以将全部数据中的排列靠前或排列靠后的数据直接作为该待打乱的数据。又如,第二数据持有方可以对自身持有的真实数据进行分层和/或抽样,得到待打乱的数据。
对真实数据进行分层可以是指将第二数据持有方的真实数据中的性质相同,或在同一条件下搜集到的数据归纳在一起,形成待打乱的数据。例如,将第二数据持有方的数据按照搜集时间进行分层,然后将在某个时间范围内搜集到的数据作为待打乱的数据。又如,将第二数据持有方的数据按照搜集数据的设备进行分层,然后将其中某个或某些设备搜集到的数据作为待打乱的数据。
对真实数据进行抽样可以是对第二数据持有方的真实数据进行顺序抽样或随机抽样,本公开实施例对此不作具体限定。
步骤S240中,第二数据持有方对自己持有的真实数据执行打乱操作之后,可以直接将打乱操作的结果作为第二数据持有方的测试数据;或者,第二数据持有方也可以将打乱操作的结果作为中间结果,并对该中间结果进行进一步处理,再将最终的结果作为第二数据持有方的测试数据。例如,第二数据持有方可以先对第二数据持有方的真实数据执行打乱操作,得到中间结果;然后,第二数据持有方可以对中间结果执行归一化操作或将中间结果均乘以某个系数(如百分比),从而得到安全计算模块的测试数据。在打乱操作之后对数据进行进一步处理,可以进一步降低数据隐私被泄露的风险。
经过步骤S220和S240,第一数据持有方和第二数据持有方的测试数据均已准备完毕。在步骤S220和S240之后,第一数据持有方可以执行步骤S250,即在第一数据持有方的测试数据和第二数据持有方的测试数据上执行该测试指令,得到针对安全计算模块的测试结果。
针对安全计算模块的测试结果可以是根据该测试指令对第一数据持有方的测试数据和第二数据持有方的测试数据进行数据计算后得到计算结果。例如,该测试指令可以是SQL语句,该测试结果可以是在第一数据持有方的测试数据和第二数据持有方的测试数据利用该SQL语句进行查询之后得到的查询结果。
例如,参见图4,图4左侧示出的是第一数据持有方的测试数据(可以是第一数据持有方的真实数据,也可以是第一数据持有方的真实数据经打乱操作之后得到的数据);图4右侧示出的是第二数据持有方的数据,其中位于上半部分的是第二数据持有方的真实数据,位于下半部分的是第二数据持有方的真实数据经过打乱操作之后生成的测试数据。
假设安全计算模块为安全统计模块,第一数据持有方接收到的测试指令为如下SQL语句:查询x>3且y<6的id的个数,则通过观察图4可以看出,该测试指令在第一数据持有方和第二数据持有方的测试数据上得到的测试结果为5,其中第一数据持有方的测试数据命中的id数为3,第二数据持有方的测试数据命中的id数为2。
当然,本公开实施例不限于此,该测试指令还可以是其他类型的数据计算(如函数计算或矩阵运算等),相应地,该测试结果可以是在测试数据上执行该其他类型的数据计算后得到的计算结果。
在得到该测试结果之后,测试人员可以根据经验确定测试结果的真实性和可靠性,从而给出安全计算模块是否验证成功的结论。例如,如果未能返回测试结果,或者得到的测试结果不合理(如测试结果的数据类型错误,或测试结果明显超出可能的数值范围),则可以认为该安全计算模块的测试失败,需要重新调试安全计算模块的代码,寻找漏洞;如果测试结果是一个合理的结果,则可以认为该安全计算模块通过了测试,第一数据持有方可以将其用于实际的多方安全计算。
上文结合图1至图4,详细描述了本公开的方法实施例,下面结合图5至图7,详细描述本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图5是本公开一实施例提供的测试装置的示意性结构图。图5的测试装置500可用于对执行多方安全计算的安全计算模块进行测试,该安全计算模块和测试装置500均属于第一数据持有方(例如,均安装在第一数据持有方的计算设备上)。该测试装置500可以包括第一接收单元510,生成单元520,发送单元530以及测试单元540。下面对这些单元进行详细介绍。
第一接收单元510可以被配置为接收针对所述安全计算模块的测试指令。
生成单元520可以被配置为响应于所述测试指令,生成所述第一数据持有方的测试数据。
发送单元530可以被配置为响应于所述测试指令,向第二数据持有方发送参与测试的请求,所述请求用于触发所述第二数据持有方对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据。
测试单元540可以被配置为在所述第一数据持有方的测试数据和所述第二数据持有方的测试数据上执行所述测试指令,得到针对所述安全计算模块的测试结果。
可选地,在一些实施例中,所述生成单元520可以被配置为响应于所述测试指令,将第一数据持有方的真实数据确定为所述第一数据持有方的测试数据。
可选地,在一些实施例中,所述生成单元520可以被配置为响应于所述测试指令,对所述第一数据持有方的真实数据执行打乱操作,以生成所述第一数据持有方的测试数据。
可选地,在一些实施例中,所述生成单元520可以被配置为对所述第一数据持有方的真实数据按字段执行打乱操作。
可选地,在一些实施例中,所述打乱操作对应的字段包括以下字段中的一种或多种:键所在的字段,以及所述键对应的值所在的字段。
可选地,在一些实施例中,所述生成单元520可以被配置为从所述第一数据持有方的真实数据中选取部分数据;对所述部分数据进行所述打乱操作。
可选地,在一些实施例中,所述生成单元520可以被配置为对所述第一数据持有方的真实数据进行分层和/或抽样,得到所述部分数据。
可选地,在一些实施例中,所述安全计算模块为基于所述第一数据持有方和所述第二数据持有方的数据执行数据统计的模块。
可选地,在一些实施例中,所述测试指令为结构化查询语言SQL语句。
图6是本公开另一实施例提供的测试装置的示意性结构图。图6的测试装置600可用于对执行多方安全计算的安全计算模块进行测试。所述安全计算模块属于第一数据持有方(例如,安装在所述第一数据持有方的计算设备上),所述装置600属于参与所述安全计算模块的测试的第二数据持有方(例如,安装在所述第二数据持有方的计算设备上)。
所述装置600可以包括接收单元610和生成单元620。下面对这些单元进行详细介绍。
接收单元610可被配置为接收所述第一数据持有方发送的参与所述安全计算模块的测试的请求。
生成单元620可被配置为响应于所述请求,对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据。
可选地,在一些实施例中,所述生成单元620可被配置为对所述第二数据持有方的真实数据按字段执行打乱操作。
可选地,在一些实施例中,所述打乱操作对应的字段包括以下字段中的一种或多种:键所在的字段,以及所述键对应的值所在的字段。
可选地,在一些实施例中,所述生成单元620可被配置为从所述第二数据持有方的真实数据中选取部分数据;对所述部分数据进行所述打乱操作。
可选地,在一些实施例中,所述生成单元620可被配置为对所述第二数据持有方的真实数据进行分层和/或抽样,得到所述部分数据。
可选地,在一些实施例中,所述安全计算模块为基于所述第一数据持有方和所述第二数据持有方的数据执行数据统计的模块。
图7是本公开又一实施例提供的测试装置的结构示意图。图7所示的装置700可以是能够执行多方安全计算的任意网络节点。该装置700例如可以是具有计算功能的计算设备。比如,装置700可以是移动终端或者服务器。装置700可以包括存储器710和处理器720。存储器710可用于存储可执行代码。处理器720可用于执行所述存储器710中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置700还可以包括网络接口730,处理器720与外部设备的数据交换可以通过该网络接口730实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种测试方法,所述方法用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块属于第一数据持有方,所述方法应用于所述第一数据持有方,
所述方法包括:
接收针对所述安全计算模块的测试指令;
响应于所述测试指令,生成所述第一数据持有方的测试数据;
响应于所述测试指令,向第二数据持有方发送参与测试的请求,所述请求用于触发所述第二数据持有方对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据;
在所述第一数据持有方的测试数据和所述第二数据持有方的测试数据上执行所述测试指令,得到针对所述安全计算模块的测试结果。
2.根据权利要求1所述的方法,所述响应于所述测试指令,生成所述第一数据持有方的测试数据,包括:
响应于所述测试指令,将所述第一数据持有方的真实数据确定为所述第一数据持有方的测试数据。
3.根据权利要求1所述的方法,所述响应于所述测试指令,生成所述第一数据持有方的测试数据,包括:
响应于所述测试指令,对所述第一数据持有方的真实数据执行打乱操作,以生成所述第一数据持有方的测试数据。
4.根据权利要求3所述的方法,所述对所述第一数据持有方的真实数据执行打乱操作,包括:
对所述第一数据持有方的真实数据按字段执行打乱操作。
5.根据权利要求4所述的方法,所述打乱操作对应的字段包括以下字段中的一种或多种:键所在的字段,以及所述键对应的值所在的字段。
6.根据权利要求3所述的方法,所述对所述第一数据持有方的真实数据执行打乱操作,包括:
从所述第一数据持有方的真实数据中选取部分数据;
对所述部分数据进行所述打乱操作。
7.根据权利要求6所述的方法,所述从所述第一数据持有方的真实数据中选取部分数据,包括:
对所述第一数据持有方的真实数据进行分层和/或抽样,得到所述部分数据。
8.根据权利要求1所述的方法,所述安全计算模块为基于所述第一数据持有方和所述第二数据持有方的数据执行数据统计的模块。
9.根据权利要求1所述的方法,所述测试指令为结构化查询语言SQL语句。
10.一种测试方法,所述方法用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块属于第一数据持有方,所述方法应用于参与所述安全计算模块的测试的第二数据持有方,
所述方法包括:
接收所述第一数据持有方发送的参与所述安全计算模块的测试的请求;
响应于所述请求,对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据,以使所述第一数据持有方在所述第一数据持有方的测试数据和所述第二数据持有方的测试数据上执行测试指令,得到针对所述安全计算模块的测试结果。
11.根据权利要求10所述的方法,所述对所述第二数据持有方的真实数据执行打乱操作,包括:
对所述第二数据持有方的真实数据按字段执行打乱操作。
12.根据权利要求11所述的方法,所述打乱操作对应的字段包括以下字段中的一种或多种:键所在的字段,以及所述键对应的值所在的字段。
13.根据权利要求10所述的方法,所述对所述第二数据持有方的真实数据执行打乱操作,包括:
从所述第二数据持有方的真实数据中选取部分数据;
对所述部分数据进行所述打乱操作。
14.根据权利要求13所述的方法,所述从所述第二数据持有方的真实数据中选取部分数据,包括:
对所述第二数据持有方的真实数据进行分层和/或抽样,得到所述部分数据。
15.根据权利要求10所述的方法,所述安全计算模块为基于所述第一数据持有方和所述第二数据持有方的数据执行数据统计的模块。
16.一种测试装置,所述装置用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块和所述装置均属于第一数据持有方,
所述装置包括:
第一接收单元,被配置为接收针对所述安全计算模块的测试指令;
生成单元,被配置为响应于所述测试指令,生成所述第一数据持有方的测试数据;
发送单元,被配置为响应于所述测试指令,向第二数据持有方发送参与测试的请求,所述请求用于触发所述第二数据持有方对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据;
测试单元,被配置为在所述第一数据持有方的测试数据和所述第二数据持有方的测试数据上执行所述测试指令,得到针对所述安全计算模块的测试结果。
17.一种测试装置,所述装置用于对执行多方安全计算的安全计算模块进行测试,所述安全计算模块属于第一数据持有方,所述装置属于参与所述安全计算模块的测试的第二数据持有方,
所述装置包括:
接收单元,被配置为接收所述第一数据持有方发送的参与所述安全计算模块的测试的请求;
生成单元,被配置为响应于所述请求,对所述第二数据持有方的真实数据执行打乱操作,以生成所述第二数据持有方的测试数据,以使所述第一数据持有方在所述第一数据持有方的测试数据和所述第二数据持有方的测试数据上执行测试指令,得到针对所述安全计算模块的测试结果。
18.一种测试装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现权利要求1-15中任一项所述的方法。
CN202110426831.5A 2021-04-20 2021-04-20 测试方法和装置 Active CN113051177B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110426831.5A CN113051177B (zh) 2021-04-20 2021-04-20 测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110426831.5A CN113051177B (zh) 2021-04-20 2021-04-20 测试方法和装置

Publications (2)

Publication Number Publication Date
CN113051177A CN113051177A (zh) 2021-06-29
CN113051177B true CN113051177B (zh) 2022-10-04

Family

ID=76519794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110426831.5A Active CN113051177B (zh) 2021-04-20 2021-04-20 测试方法和装置

Country Status (1)

Country Link
CN (1) CN113051177B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2597573A1 (en) * 2011-11-28 2013-05-29 Tata Consultancy Services Limited Test data generation
CN103150515A (zh) * 2012-12-29 2013-06-12 江苏大学 一种分布式环境下隐私保护的关联规则挖掘方法
CN111125727A (zh) * 2019-12-03 2020-05-08 支付宝(杭州)信息技术有限公司 混淆电路生成方法、预测结果确定方法、装置和电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2779044A1 (en) * 2013-03-14 2014-09-17 Tata Consultancy Services Limited System and method to provide management of test data at various lifecycle stages
CN108519981B (zh) * 2018-02-01 2022-04-12 四川大学 一种跨链智能合约合作可能性评估方法
CN109255247B (zh) * 2018-08-14 2020-08-14 阿里巴巴集团控股有限公司 多方安全计算方法及装置、电子设备
CN110874315B (zh) * 2018-08-30 2024-04-19 阿里巴巴新加坡控股有限公司 测试方法、装置、电子设备和存储介质
US11126709B2 (en) * 2019-01-28 2021-09-21 Nec Corporation Of America Secure multiparty computation of shuffle, sort, and set operations
CN109886687B (zh) * 2019-02-28 2023-12-05 矩阵元技术(深圳)有限公司 一种基于区块链实现安全多方计算的结果验证方法及系统
CN111813696B (zh) * 2020-08-25 2023-09-15 中国工商银行股份有限公司 应用测试方法、装置、系统及电子设备
CN112541540A (zh) * 2020-12-09 2021-03-23 上海硕恩网络科技股份有限公司 数据融合方法、装置、设备及存储介质
CN112613076B (zh) * 2021-01-22 2021-10-01 支付宝(杭州)信息技术有限公司 保护隐私的多方数据处理的方法、装置和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2597573A1 (en) * 2011-11-28 2013-05-29 Tata Consultancy Services Limited Test data generation
CN103150515A (zh) * 2012-12-29 2013-06-12 江苏大学 一种分布式环境下隐私保护的关联规则挖掘方法
CN111125727A (zh) * 2019-12-03 2020-05-08 支付宝(杭州)信息技术有限公司 混淆电路生成方法、预测结果确定方法、装置和电子设备

Also Published As

Publication number Publication date
CN113051177A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
US11038679B2 (en) Secure multi-party computation method and apparatus, and electronic device
US20170250796A1 (en) Trans Vernam Cryptography: Round One
US20180033010A1 (en) System and method of identifying suspicious user behavior in a user&#39;s interaction with various banking services
CN110599147A (zh) 一种基于区块链的密文检索公平支付方法及系统
Vallois et al. Bitcoin transaction: From the creation to validation, a protocol overview
CN112101938B (zh) 基于区块链的数字印章使用方法、装置及电子设备
CN105978855A (zh) 一种实名制下个人信息安全保护系统及方法
CN111125118B (zh) 关联数据查询方法、装置、设备及介质
KR20220122994A (ko) 블록체인을 이용한 증명 가능하게 공정한 게임들
Tang et al. dMOBAs: A data marketplace on blockchain with arbitration using side-contracts mechanism
US11615354B2 (en) Blockchain based project evaluation method and system
CN113051177B (zh) 测试方法和装置
CN115270162B (zh) 基于多方计算的审计审价异构数据在线整合方法及系统
CN109189742B (zh) 题目提取方法和系统
Trouw et al. The xy oracle network: The proof-of-origin based cryptographic location network
Liang et al. Decentralized crowdsourcing for human intelligence tasks with efficient on-chain cost
Mi et al. Privacy-oriented transaction for public blockchain via secret sharing
Libicki et al. Ramifications of DARPA's Programming Computation on Encrypted Data Program
CN110910091A (zh) 一种数据处理方法、设备及介质
CN104717244B (zh) 一种基于分布式计算的多维度信誉管理方法
Wijaya Anonymity in Cryptocurrency.
TWI706370B (zh) 資料統計方法和裝置
CN113592650B (zh) 基于区块链智能合约的交易方法、装置和设备
Lövhall Analysis of a Bitcoin debit card: Design of a novel Bitcoin payment system
Venir et al. Decentralized federated machine learning with blockchain and zero knowledge proofs

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