一种算法程序的验证方法及装置

文档序号:169014 发布日期:2021-10-29 浏览:25次 >En<

阅读说明:本技术 一种算法程序的验证方法及装置 (Verification method and device of algorithm program ) 是由 严强 廖飞强 李昊轩 王朝阳 李辉忠 张开翔 范瑞彬 于 2021-07-30 设计创作,主要内容包括:本发明实施例提供一种算法程序的验证方法及装置,包括:算法提供方将第一算法程序的校验规则发送至数据提供方,第一算法程序为算法提供方指示数据提供方基于本地数据进行运算的算法程序;根据校验规则从第一算法程序的第一指令序列中确定出第一校验指令;并根据校验规则和第一校验指令确定第一校验值;算法提供方接收数据提供方发送的第二校验值,第二校验值是数据提供方基于校验规则和第二算法程序确定的;第二算法程序为数据提供方基于本地数据实际运行的算法程序;算法提供方确定第一校验值和第二校验值是否相同,从而确定数据提供方实际运行的算法程序是否为算法提供方指示的算法程序。该方法能够提高算法版本验证的准确性,防止误用攻击。(The embodiment of the invention provides a method and a device for verifying an algorithm program, wherein the method comprises the following steps: the method comprises the steps that an algorithm provider sends a check rule of a first algorithm program to a data provider, and the first algorithm program is an algorithm program which instructs the data provider to operate based on local data; determining a first checking instruction from a first instruction sequence of the first algorithm program according to a checking rule; determining a first check value according to the check rule and the first check instruction; the algorithm provider receives a second check value sent by the data provider, and the second check value is determined by the data provider based on the check rule and a second algorithm program; the second algorithm program is an algorithm program which is actually operated by the data provider based on local data; the algorithm provider determines whether the first check value and the second check value are the same, thereby determining whether the algorithm program actually operated by the data provider is the algorithm program instructed by the algorithm provider. The method can improve the accuracy of algorithm version verification and prevent misuse attacks.)

一种算法程序的验证方法及装置

技术领域

本申请涉及网络技术领域,尤其涉及一种算法程序的验证方法及装置。

背景技术

算法外包计算作为一类比较新的协同计算形态,为“数据不动,价值流动”提供了一种实现思路。在协同计算过程中,数据提供方的数据无需出库,仅通过相应接口调用算法提供方所提供的算法程序,即可对数据提供方的本地数据进行处理,满足了现有的合规要求,但同时也为验证外包的算法程序的计算结果正确性带来了挑战。

现有技术中的版本验证方法一般为:算法提供方获取数据提供方发送的算法版本号,并对该算法版本号进行验证,确定该算法版本号是否为数据提供方对应的正确算法版本的算法版本号,即通过算法提供方验证远程部署在数据服务方的算法程序的算法版本号是否正确。以实现对被调用的算法程序进行验证。而该方法由于验证版本方法简单,容易受到误用攻击,如,若数据提供方更新了算法程序版本,但依旧返回原先的算法版本号,则算法提供方无法进行准确验证。

因此,现在亟需一种算法程序的验证方法及装置,能够提高算法版本验证的准确性,防止误用攻击。

发明内容

本发明实施例提供一种算法程序的验证方法及装置,能够提高算法版本验证的准确性,防止误用攻击。

第一方面,本发明实施例提供一种算法程序的验证方法,该方法包括:

算法提供方将第一算法程序的校验规则发送至数据提供方,所述第一算法程序为所述算法提供方指示所述数据提供方基于本地数据进行运算的算法程序;所述算法提供方根据所述校验规则从所述第一算法程序的第一指令序列中确定出第一校验指令;并根据所述校验规则和所述第一校验指令确定第一校验值;所述算法提供方接收所述数据提供方发送的第二校验值,所述第二校验值是所述数据提供方基于所述校验规则和第二算法程序确定的;所述第二算法程序为所述数据提供方基于本地数据实际运行的算法程序;所述算法提供方确定所述第一校验值和所述第二校验值是否相同,从而确定所述数据提供方实际运行的算法程序是否为所述算法提供方指示的算法程序。

上述方法中,算法提供方将用于指示数据提供方基于本地数据进行运算的算法程序-第一算法程序的校验规则发送至数据提供方,使得算法提供方可以根据校验规则和第一算法程序获取第一校验值,使得数据提供方可以根据校验规则和数据提供方实际运行的算法程序-第二算法程序获取第二校验值。如此,算法提供方可以根据第一校验值和第二校验值是否相同,来确定第一算法程序和第二算法程序是否为相同的算法程序,以此进一步确定数据提供方实际运行的算法程序是否为算法提供方指示其运行的算法程序。相比于现有技术中算法提供方直接获取数据提供方返回的算法程序的号进行验证来说,可以防止数据提供方提供的算法程序版本号错误导致的验证结果不准确问题,即提高算法版本验证的正确性。

可选的,所述第一指令序列中的指令数量为N,所述校验规则包括每条指令唯一对应的随机挑战值;所述算法提供方根据所述校验规则从所述第一算法程序的第一指令序列中确定出第一校验指令,包括:按照所述第一指令序列中各指令的顺序,所述算法提供方根据每条指令的随机挑战值,确定所述指令是否为第一校验指令;所述根据所述校验规则和所述第一校验指令确定第一校验值,包括:按照所述第一指令序列中各指令的顺序,依次确定每个第一校验指令对应的迭代校验值,直至得到最后一条第一校验指令对应的迭代校验值作为所述第一校验值;其中,每个第一校验指令对应的迭代校验值通过如下方式得到:根据上一条第一校验指令的迭代校验值、所述第一校验指令和所述第一校验指令对应的随机挑战值,确定所述第一校验指令对应的迭代校验值。

上述方法中,算法提供方使得每条指令有其唯一对应的随机挑战值。则可以根据按照第一指令序列中各指令的顺序,根据每条指令的随机挑战值,确定指令是否为第一校验指令,并依次确定每个校验指令对应的迭代校验值,直至得到最后一条校验指令对应的迭代校验值作为第一校验值。如此,无需针对指令序列中的所有指令进行计算校验值,可以大大降低计算量。

可选的,所述校验规则还包括初始挑战值和采样规则;所述算法提供方根据每条指令的随机挑战值,确定所述指令是否为第一校验指令,包括:针对第一条指令,根据所述采样规则、所述初始挑战值和所述第一条指令的随机挑战值,按照预设的触发条件确定所述指令是否为第一校验指令;针对第n条指令,根据第n-1条指令的迭代校验值、所述第n条指令的随机挑战值和所述采样规则,确定所述第n条指令是否为第一校验指令;n为大于1的整数;通过如下方式确定第一条第一校验指令的迭代校验值,包括:根据所述初始挑战值、所述第一条第一校验指令和所述第一条第一校验指令对应的随机挑战值确定所述第一条第一校验指令的迭代校验值。

上述方法中,通过在校验规则中设置触发条件,来判断指令对应的随机挑战值是否满足触发条件,满足该触发条件的则为校验指令,否则为非校验指令。如此,可以以触发条件作为选取校验指令的规则,选择指令序列中的部分指令作为校验指令,无需针对指令序列中的所有指令进行计算校验值,可以大大降低计算量。且可以根据采样规则对指令对应的随机挑战值和迭代校验值的和进行处理,将处理后的采样值进行判断是否满足触发条件。如此,提高触发条件确定的校验指令的随机性,进一步增加算法程序版本验证的准确性。

可选的,所述触发条件满足如下公式:

(C+ri)&mask==0

其中,所述C为初始挑战值或迭代校验值,所述ri为所述第一指令序列中第i条指令的随机挑战值,所述mask为所述采样规则,所述采样规则是根据采样频率确定的。

上述方法中,采样规则根据采样频率确定,采样频率根据经验值确定。如此,保证触发条件确定的校验指令的数量与指令序列中指令数量的关系符合资源限制和准确性要求。

可选的,还包括:所述算法提供方将所述第一算法程序的第一指令序列、所述校验规则和所述第一校验值转化为第一哈希值,并将所述第一哈希值发送至区块链中存储。

上述方法中,将验证过程中的上述第一指令序列、校验规则和第一校验值等相关信息存储在区块链中,保证后续审计时可以重新验证并审计,便于进行审计流程。

第二方面,本发明实施例提供一种算法程序的验证方法,该方法包括:

数据提供方接收算法提供方发送的第一算法程序的校验规则,所述第一算法程序为所述算法提供方指示所述数据提供方基于本地数据进行运算的算法程序;

所述数据提供方根据所述校验规则从第二算法程序的第二指令序列中确定出第二校验指令;并根据所述校验规则和所述第二校验指令确定第二校验值,所述第二算法程序为所述数据提供方基于本地数据实际运行的算法程序;

所述数据提供方将所述第二校验值发送至所述算法提供方,所述第二校验值用于所述算法提供方根据所述第二校验值和第一校验值是否相同以确定所述数据提供方实际运行的算法程序是否为所述算法提供方指示的算法程序。

上述方法中,数据提供方接收算法提供方发送的用于指示数据提供方基于本地数据进行运算的算法程序-第一算法程序的校验规则,使得数据提供方可以根据该校验规则和实际运行的算法程序-第二算法程序获取第二校验值;而算法提供方可以根据该校验规则和第一算法程序获取第一校验值。如此,算法提供方可以根据第一校验值和第二校验值是否相同,来确定第一算法程序和第二算法程序是否为相同的算法程序,以此进一步确定数据提供方实际运行的算法程序是否为算法提供方指示其运行的算法程序。相比于现有技术中算法提供方直接获取数据提供方返回的算法程序的号进行验证来说,可以防止数据提供方提供的算法程序版本号错误导致的验证结果不准确问题,即提高算法版本验证的正确性。

可选的,还包括:所述数据提供方将所述第二指令序列、所述校验规则和所述第二校验值转化为第二哈希值,并将所述第二哈希值发送至区块链中存储。

上述方法中,将验证过程中的上述第二指令序列、校验规则和第二校验值等相关信息存储在区块链中,保证后续审计时可以重新验证并审计,便于进行审计流程。

第三方面,本发明实施例提供一种算法程序的验证装置,该装置包括:

收发模块,用于将第一算法程序的校验规则发送至数据提供方,所述第一算法程序为所述算法提供方指示所述数据提供方基于本地数据进行运算的算法程序;

处理模块,用于根据所述校验规则从所述第一算法程序的指令序列中确定出校验指令;并根据所述校验规则和所述校验指令确定第一校验值;

所述收发模块还用于,接收所述数据提供方发送的第二校验值,所述第二校验值是所述数据提供方基于所述校验规则和第二算法程序确定的;所述第二算法程序为所述数据提供方基于本地数据实际运行的算法程序;

所述处理模块还用于,确定所述第一校验值和所述第二校验值是否相同,从而确定所述数据提供方实际运行的算法程序是否为所述算法提供方指示的算法程序。

第四方面,本发明实施例提供一种算法程序的验证装置,该装置包括:

收发模块,用于接收算法提供方发送的第一算法程序的校验规则,所述第一算法程序为所述算法提供方指示所述数据提供方基于本地数据进行运算的算法程序;

处理模块,用于根据所述校验规则从第二算法程序的指令序列中确定出校验指令;并根据所述校验规则和所述校验指令确定第二校验值,所述第二算法程序为所述数据提供方基于本地数据实际运行的算法程序;

所述收发模块还用于,将所述第二校验值发送至所述算法提供方,所述第二校验值用于所述算法提供方根据所述第二校验值和第一校验值是否相同以确定所述数据提供方实际运行的算法程序是否为所述算法提供方指示的算法程序。

第五方面,本申请实施例还提供一种计算设备,包括:存储器,用于存储程序;处理器,用于调用所述存储器中存储的程序,按照获得的程序执行如第一方面和第二方面的各种可能的设计中所述的方法。

第六方面,本申请实施例还提供一种计算机可读非易失性存储介质,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如第一方面和第二方面的各种可能的设计中所述的方法。

本申请的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种算法程序的验证的架构示意图;

图2为本发明实施例提供的一种算法提供方的架构示意图;

图3为本发明实施例提供的一种数据提供方的架构示意图;

图4为本发明实施例提供的一种算法程序的验证方法的流程示意图;

图5(a)为本发明实施例提供的一种算法程序的验证方法的流程示意图;

图5(b)为本发明实施例提供的一种校验值确定方法的流程示意图;

图5(c)为本发明实施例提供的一种校验值确定方法的流程示意图;

图6为本发明实施例提供的一种算法程序的验证装置示意图;

图7为本发明实施例提供的一种算法程序的验证装置示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1为本发明实施例提供的一种算法程序的验证的系统架构,算法提供方101确定提供给数据提供方102的第一算法程序,即,用于指示数据提供方102基于本地数据进行运算的算法程序,并确定该第一算法程序的校验规则;将该校验规则发送至数据提供方102,且算法提供方101根据第一算法程序和该校验规则确定第一校验值。数据提供方102接收算法提供方发送的校验规则后,根据该校验规则对数据提供方102中的实际运行的算法程序,即,第二算法程序进行校验,获取第二校验值,数据提供方102将该第二校验值发送至算法提供方101,使得算法提供方101根据第一校验值和第二校验值是否相同来确定数据提供方102实际运行的算法程序是否是正确的,即,第二算法程序是否是第一算法程序。其中,算法提供方101和数据提供方102在该验证过程中涉及的信息均存储至区块链103中,以便于后续审计。算法提供方101可以将校验规则、第一校验值、第二校验值等信息存储至区块链103中;数据提供方102可以将校验规则、第二校验值等信息存储至区块链103中。

需要说明的是,算法提供方101可以是服务器或服务器集群,或服务器中的部件,例如,芯片。或者,算法提供方101可以是具有算法提供能力的设备或装置,示例性的,该设备可以是终端设备或终端中的部件,例如,芯片。数据提供方102可以是数据库、服务器或服务器集群,或服务器中的部件,例如,芯片。或者,数据提供方102可以是或具有提供数据能力的设备或装置,示例性的,该设备可以是终端设备或终端中的部件,例如,芯片。具体实施方式可以根据需要确定,本发明不做限定。

另外,本发明实施例提供的一种算法提供方的架构示意图,如图2所示,算法提供方中可以包含算法程序库、规则设置单元、校验单元。其中,算法程序库中可以包含各个版本的算法程序;如,针对不同类型数据分别对应的算法程序,以及同一算法程序的更新前后的多版本算法程序;又如,针对同一类型数据的不同计算需求的算法程序,以及同一算法程序的更新前后的多版本算法程序等等;规则设置单元可以用于根据算法程序和算法版本验证需求生成校验规则;校验单元可以根据规则设置单元中的校验规则对第一算法程序进行校验获取第一校验值,并根据第一校验值和接收的第二校验值生成算法程序的校验结果。此处,算法提供方的系统架构只是一种示例,并不对算法提供方的具体系统架构做限制。

本发明实施例还提供的一种数据提供方的架构示意图,如图3所示,算法提供方中可以包含数据库、计算单元、校验单元。其中,数据库中可以包含数据提供方的本地数据;如,业务相关数据,或者用户的个人信息等等;计算单元可以用于数据提供方根据第二算法程序对本地数据进行计算以获取计算结果,还可以将计算结果发送至算法提供方;校验单元可以根据算法提供方提供的校验规则对第二算法程序进行校验获取第二校验值,并将该第二校验值发送至算法提供方。此处,数据提供方的系统架构只是一种示例,并不对数据提供方的具体系统架构做限制。

基于此,本申请实施例提供了一种算法程序的验证方法的流程,如图4所示,包括:

步骤401、算法提供方将第一算法程序的校验规则发送至数据提供方,所述第一算法程序为所述算法提供方指示所述数据提供方基于本地数据进行运算的算法程序;

步骤402、所述算法提供方根据所述校验规则从所述第一算法程序的第一指令序列中确定出第一校验指令;并根据所述校验规则和所述第一校验指令确定第一校验值;

此处,不同的算法程序的指令序列不同。

步骤403、所述算法提供方接收所述数据提供方发送的第二校验值,所述第二校验值是所述数据提供方基于所述校验规则和第二算法程序确定的;所述第二算法程序为所述数据提供方基于本地数据实际运行的算法程序;

步骤404、所述算法提供方确定所述第一校验值和所述第二校验值是否相同,从而确定所述数据提供方实际运行的算法程序是否为所述算法提供方指示的算法程序。

上述方法中,算法提供方将用于指示数据提供方基于本地数据进行运算的算法程序-第一算法程序的校验规则发送至数据提供方,使得算法提供方可以根据校验规则和第一算法程序获取第一校验值,使得数据提供方可以根据校验规则和数据提供方实际运行的算法程序-第二算法程序获取第二校验值。如此,算法提供方可以根据第一校验值和第二校验值是否相同,来确定第一算法程序和第二算法程序是否为相同的算法程序,以此进一步确定数据提供方实际运行的算法程序是否为算法提供方指示其运行的算法程序。相比于现有技术中算法提供方直接获取数据提供方返回的算法程序的号进行验证来说,可以防止数据提供方提供的算法程序版本号错误导致的验证结果不准确问题,即提高算法版本验证的正确性。

本申请实施例提供了一种校验指令和迭代校验值的获得方法,所述第一指令序列中的指令数量为N,所述校验规则包括每条指令唯一对应的随机挑战值;所述算法提供方根据所述校验规则从所述第一算法程序的第一指令序列中确定出第一校验指令,包括:

按照所述第一指令序列中各指令的顺序,所述算法提供方根据每条指令的随机挑战值,确定所述指令是否为第一校验指令;

所述根据所述校验规则和所述第一校验指令确定第一校验值,包括:

按照所述第一指令序列中各指令的顺序,依次确定每个第一校验指令对应的迭代校验值,直至得到最后一条第一校验指令对应的迭代校验值作为所述第一校验值;其中,每个第一校验指令对应的迭代校验值通过如下方式得到:

根据上一条第一校验指令的迭代校验值、所述第一校验指令和所述第一校验指令对应的随机挑战值,确定所述第一校验指令对应的迭代校验值。也就是说,第一指令序列中的指令数量为N,且这N个指令中,每个指令都有对应的随机挑战值,而该随机挑战值用于确定对应的指令是否为第一校验指令。如,随机挑战值大于预设值,或小于预设值的指令为第一校验指令;或者随机挑战值经过相应的计算逻辑后获得对应的计算结果,根据计算结果确定该指令是否为第一校验指令等等;这里针对如何根据指令的随机挑战值确定第一校验指令可以根据需要设定。甚至,当第一指令序列中的指令数量较小,可以直接设定选择第M位指令为第一校验指令,其中M小于等于N;即可以直接指定第一校验指令。另外,在判断第一校验指令过程中,每个第一校验指令可以对应一个迭代校验值,最后一条第一校验指令对应的迭代校验值为第一校验值。迭代校验值是可以根据上一条第一校验指令的迭代校验值、该第一校验指令和第一校验指令对应的随机挑战值确定的。

本申请实施例提供了又一种校验指令的获得方法,所述校验规则还包括初始挑战值和采样规则;所述算法提供方根据每条指令的随机挑战值,确定所述指令是否为第一校验指令,包括:针对第一条指令,根据所述采样规则、所述初始挑战值和所述第一条指令的随机挑战值,按照预设的触发条件确定所述指令是否为第一校验指令;针对第n条指令,根据第n-1条指令的迭代校验值、所述第n条指令的随机挑战值和所述采样规则,确定所述第n条指令是否为第一校验指令;n为大于1的整数;通过如下方式确定第一条第一校验指令的迭代校验值,包括:根据所述初始挑战值、所述第一条第一校验指令和所述第一条第一校验指令对应的随机挑战值确定所述第一条第一校验指令的迭代校验值。也就是说,上述循环确定第一校验指令的过程中,可以以初始校验值为初始的迭代校验值;如此,针对第一条指令,根据采样规则、初始挑战值(初始的迭代校验值)和第一条指令的随机挑战值,按照预设的触发条件确定指令是否为第一校验指令;若是,则根据初始挑战值、第一条第一校验指令和第一条第一校验指令对应的随机挑战值确定第一条第一校验指令的迭代校验值(若不是第一校验指令,则不对初始校验值进行更新,直接对下一条进行判断);再针对第二条指令,根据采样规则、上一步骤获取的迭代校验值和第二条指令的随机挑战值,按照预设的触发条件确定指令是否为第一校验指令;若是,则根据该上一步骤获取的迭代校验值、第二条第一校验指令和第二条第一校验指令对应的随机挑战值确定第二条第一校验指令的迭代校验值(若不是第一校验指令,则不对迭代校验值进行更新,直接对下一条进行判断);循环执行上述第一校验指令的判断流程和迭代校验值的迭代过程,直至最后一条指令判断完成,当前的迭代校验值即为第一校验值。另外,挑战值包括一个初始挑战值,N个随机挑战值,这里的初始挑战值和随机挑战值均可以是随机确定的,具体不做限定。

本申请实施例提供了一种触发条件,所述触发条件满足如下公式:

(C+ri)&mask==0

其中,所述C为初始挑战值或迭代校验值,所述ri为所述第一指令序列中第i条指令的随机挑战值,所述mask为所述采样规则,所述采样规则是根据采样频率确定的。也就是说,该公式为对初始挑战值或迭代校验值与第i条指令的随机挑战值的和做采样并判断;如,将初始挑战值或迭代校验值与第i条指令的随机挑战值的和进行转换,得到二进制字符串或十六进制字符串等,采样规则可以为选取后两位或三位等子字符串,确定该子字符串是否为0,若为零,则满足该触发条件,否则不满足该触发条件。其中,初始挑战值或迭代校验值与第i条指令的随机挑战值的和的转换规则具体不做限定,相应的,采样规则也可以对应设置。其中,采样频率可以根据经验值确定,则采样规则的采样数量可以为第一指令序列中的指令数量与采样频率的乘积值。如此,保证触发条件确定的校验指令的数量与指令序列中指令数量的关系符合资源限制和准确性要求。

本申请实施例提供了一种算法程序的验证方法,还包括:所述算法提供方将所述第一算法程序的第一指令序列、所述校验规则和所述第一校验值转化为第一哈希值,并将所述第一哈希值发送至区块链中存储。如此,便于后续算法提供方和数据提供方进行审计。

基于上述方法流程及系统架构,本申请实施例提供了一种算法程序的验证方法的流程,如图5(a)所示,包括:

步骤501、算法提供方确定为数据提供方提供第一算法程序。

其中,第一算法程序中包含第一指令序列。例如,第一算法程序的第一指令序列中可以包含8条指令,1、s1=a*X1。2、s2=b*X2。3、s3=0。4、LOOP:。5、s3=s3+s2。6、jump toLOOP if s3<100。7、s2=s3*5。8、Y=s1+s2。其中,X1,X2可以为数据提供方需要提供的敏感数据。

另外,算法提供方可以根据第三方请求为数据提供方提供第一算法程序,示例性的,第三方可以为企业或个人等。相应的,第三方请求可以是企业或个人的贷款请求。或者,算法提供方可以根据数据提供方发送的请求,为数据提供方提供第一算法程序。在一中示例中,算法提供方可以是银行,数据提供方可以是存储企业的征信、规模、营业额等画像信息,和/或存储个人财产和征信等信息的机构;相应的,算法程序可以是用于根据企业的信息判断该企业的贷款金额是否符合放款规则,或个人信息判断该个人的贷款金额是否符合放款规则等。这里只是一种示例,并不对算法提供方和数据提供方做限定。

步骤502、算法提供方确定校验规则。

在一种示例中,算法提供方设定采样频率,该采样频率可以为1/2S;其中,S为一个正整数参数,该参数的值可以根据经验确定,也可以根据其他方式确定,本申请不做限定。

算法提供方在确定采样频率后,算法提供方可以根据该采样频率生成采样模板。如,采样模板可以为mask=0b1…1,表示选取二进制字符串的最低S位。以采样频率1/4为例,S=2,则采样模板mask=0b11,表示选取二进制字符串的最低2位。

若第一算法程序的第一指令序列中包含N条指令,算法提供方生成N+1个随机挑战值,作为随机挑战值序列R,记为R={r0,r1,…,rN}。对于上述示例中的8条指令,R包含8+1=9个随机数,分别是r0、r1到r8。其中,指令与随机挑战值一一对应,如,第一条指令对应r1、第二条指令对应r2、第N条指令对应rN,r0为初始挑战值。

步骤503、算法提供方将校验规则发送至数据提供方。

在上述示例中,算法提供方将第一指令序列、采样模板、随机挑战值序列R发送至数据提供方。

步骤504、算法提供方将该校验规则发送至区块链存储。

步骤505、数据提供方根据接收校验规则后,根据校验规则对第二算法程序中的第二指令序列进行校验,获取第二校验值。

基于上述示例,这里提供一种校验值的获取流程,如图5(b)所示:步骤5051、数据提供方将r0设置为初始校验值C=r0

步骤5052、数据提供方加载第二指令序列,针对第一条指令,判断该指令是否满足触发条件(C+r1)&mask==0。若满足,则执行步骤5053,若不满足,则C=r0,执行步骤5054。

步骤5053、根据该第一条指令的随机挑战值r1、初始校验值C=r0和该第一条指令更新C,获取迭代校验值。

在一种示例中,假设该第一条指令的二进制数形态为:0xEAF1C866,获取迭代校验值的方法可以为:C=H(C=r0||r1||0xEAF1C866)。

步骤5054、获取下一条指令,针对下一条指令,第i条指令,判断该指令是否满足触发条件(C+ri)&mask==0。若满足,则执行步骤5055,若不满足,C不变,则执行步骤5054。

步骤5055、根据该下一条指令的随机挑战值ri、迭代校验值C和该下一条指令更新C,获取迭代校验值。

在一种示例中,假设第一条指令和第二条指令满足该出发条件,该第二条指令的二进制数形态为:0xAAF1C899,获取迭代校验值的方法可以为:C=H(C=H(C=r0||r1||0xEAF1C866)||r2||0xAAF1C899)。

步骤5056、确定第二指令序列中的最后一条指令判断完成,当前迭代校验值为第二校验值。

步骤506、数据提供方将该第二校验值发送至算法提供方。数据提供方还可以将第二指令序列、第二校验值、计算结果等该校验过程中的相关信息上传至区块链,用于后续审计。

基于上述示例,数据提供方还将计算结果Y发送至算法提供方。

步骤507、算法提供方根据校验规则和第一指令序列获取第一校验值。

基于上述示例,这里提供一种校验值的获取流程,如图5(c)所示:

步骤5071、算法提供方将r0设置为初始校验值C=r0

步骤5072、算法提供方加载第一指令序列,针对第一条指令,判断该指令是否满足触发条件(C+r1)&mask==0。若满足,则执行步骤5073,若不满足,则C=r0,则执行步骤5074。

步骤5073、根据该第一条指令的随机挑战值r1、初始校验值C=r0和该第一条指令更新C,获取迭代校验值。

在一种示例中,假设该第一条指令的二进制数形态为:0xEAF1C866,获取迭代校验值的方法可以为:C=H(C=r0||r1||0xEAF1C866)。

步骤5074、获取下一条指令,针对下一条指令,第i条指令,判断该指令是否满足触发条件(C+ri)&mask==0。若满足,则执行步骤5075,若不满足,C不变,则执行步骤5074。

步骤5075、根据该下一条指令的随机挑战值ri、迭代校验值C和该下一条指令更新C,获取迭代校验值。

在一种示例中,假设第一条指令和第二条指令满足该出发条件,该第二条指令的二进制数形态为:0xAAF1C899,获取迭代校验值的方法可以为:C=H(C=H(C=r0||r1||0xEAF1C866)||r2||0xAAF1C899)。

步骤5076、确定第一指令序列中的最后一条指令判断完成,当前迭代校验值为第一校验值。

步骤508、算法提供方确定第一校验值和第二校验值是否相同,若相同,则第二算法程序与第一算法程序相同。若不相同,则第二算法程序与第一算法程序不相同。

这里需要说明的是,上述流程步骤并不唯一,如,步骤507可以在步骤503至步骤506中任一步骤前后执行。

基于同样的构思,本发明实施例提供一种算法程序的验证装置,图6为本申请实施例提供的一种算法程序的验证装置示意图,如图6示,包括:

收发模块601,用于将第一算法程序的校验规则发送至数据提供方,所述第一算法程序为所述算法提供方指示所述数据提供方基于本地数据进行运算的算法程序;处理模块602,用于根据所述校验规则从所述第一算法程序的第一指令序列中确定出第一校验指令;并根据所述校验规则和所述第一校验指令确定第一校验值;所述收发模块601还用于,接收所述数据提供方发送的第二校验值,所述第二校验值是所述数据提供方基于所述校验规则和第二算法程序确定的;所述第二算法程序为所述数据提供方基于本地数据实际运行的算法程序;所述处理模块602还用于,确定所述第一校验值和所述第二校验值是否相同,从而确定所述数据提供方实际运行的算法程序是否为所述算法提供方指示的算法程序。

可选的,所述第一指令序列中的指令数量为N,所述校验规则包括每条指令唯一对应的随机挑战值;所述处理模块602具体用于,按照所述第一指令序列中各指令的顺序,所述算法提供方根据每条指令的随机挑战值,确定所述指令是否为第一校验指令;所述处理模块602具体用于,按照所述第一指令序列中各指令的顺序,依次确定每个第一校验指令对应的迭代校验值,直至得到最后一条第一校验指令对应的迭代校验值作为所述第一校验值;其中,每个第一校验指令对应的迭代校验值通过如下方式得到:根据上一条第一校验指令的迭代校验值、所述第一校验指令和所述第一校验指令对应的随机挑战值,确定所述第一校验指令对应的迭代校验值。

可选的,所述校验规则还包括初始挑战值和采样规则;所述处理模块602具体用于,针对第一条指令,根据所述采样规则、所述初始挑战值和所述第一条指令的随机挑战值,按照预设的触发条件确定所述指令是否为第一校验指令;针对第n条指令,根据第n-1条指令的迭代校验值、所述第n条指令的随机挑战值和所述采样规则,确定所述第n条指令是否为第一校验指令;n为大于1的整数;通过如下方式确定第一条第一校验指令的迭代校验值,包括:根据所述初始挑战值、所述第一条第一校验指令和所述第一条第一校验指令对应的随机挑战值确定所述第一条第一校验指令的迭代校验值。

可选的,所述触发条件满足如下公式:

(C+ri)&mask==0

其中,所述C为初始挑战值或迭代校验值,所述ri为所述第一指令序列中第i条指令的随机挑战值,所述mask为所述采样规则,所述采样规则是根据采样频率确定的。

可选的,所述收发模块601还用于,将所述第一算法程序的第一指令序列、所述校验规则和所述第一校验值转化为第一哈希值,并将所述第一哈希值发送至区块链中存储。

基于同样的构思,本发明实施例提供一种算法程序的验证装置,图7为本申请实施例提供的一种算法程序的验证装置示意图,如图7示,包括:

收发模块701,用于接收算法提供方发送的第一算法程序的校验规则,所述第一算法程序为所述算法提供方指示所述数据提供方基于本地数据进行运算的算法程序;处理模块702,用于根据所述校验规则从第二算法程序的第二指令序列中确定出第二校验指令;并根据所述校验规则和所述第二校验指令确定第二校验值,所述第二算法程序为所述数据提供方基于本地数据实际运行的算法程序;所述收发模块701还用于,将所述第二校验值发送至所述算法提供方,所述第二校验值用于所述算法提供方根据所述第二校验值和第一校验值是否相同以确定所述数据提供方实际运行的算法程序是否为所述算法提供方指示的算法程序。

可选的,所述收发模块701还用于,将所述第二指令序列、所述校验规则和所述第二校验值转化为第二哈希值,并将所述第二哈希值发送至区块链中存储。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于区块链的车位管理系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类