基于混淆电路的数据统计方法、装置以及设备转让专利

申请号 : CN201711055327.9

文献号 : CN109756442B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李艺徐葳刘正

申请人 : 清华大学阿里巴巴集团控股有限公司

摘要 :

本说明书实施例公开了基于混淆电路的数据统计方法、装置以及设备。方案包括:基于节点间数据交换和混淆电路,对节点两两进行服务数据统计,再将两两统计得到的数据进一步地两两统计,以此类推,得到最终统计结果。

权利要求 :

1.一种基于混淆电路的数据统计方法,包括:

对各节点进行分组,得到多个包含至多两个节点的节点组;

在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;其中,对于只包含一个节点的节点组,不进行组内统计,进行节点组间统计;

根据所述组内统计数据进行节点组间统计,得到组间统计数据;

利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。

2.如权利要求1所述的方法,所述在节点组内进行节点间部分服务数据交换,具体包括:基于秘密共享协议,分别将节点组内每个节点的服务数据拆分为两部分,其中,拆分前的服务数据能够根据所述两部分的异或结果还原;

若节点组内包含第一节点和第二节点,则将这两个节点分别拆分出的一部分数据进行交换。

3.如权利要求2所述的方法,所述根据交换后数据和混淆电路统计服务数据,得到组内统计数据,具体包括:生成混淆电路,该混淆电路以交换后数据和随机数为输入;

根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据。

4.如权利要求3所述的方法,所述得到组内统计数据前,所述方法还包括:第一节点生成并持有第一随机数,第二节点生成并持有第二随机数;

所述根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据,具体包括:通过第一节点与第二节点之间的交互,第一节点将所述第一随机数和自己的交换后数据,以及第二节点将所述第二随机数和自己的交换后数据,输入该混淆电路统计服务数据,得到组内统计数据;

其中,所述组内统计数据包括:该混淆电路的第一输出结果与所述第一随机数的异或结果,由第一节点持有;所述第二随机数,由第二节点持有。

5.如权利要求4所述的方法,所述得到组内统计数据,具体包括:第二节点得到该混淆电路的第一输出结果,并发送给第一节点;

第一节点对所述第一随机数与接收的该混淆电路的第一输出结果进行异或运算,得到处于隐藏状态的对应统计结果,其在数值上等于该对应统计结果与所述第二随机数的异或结果。

6.如权利要求4所述的方法,若另一节点组包含对应于第一节点的第三节点,以及对应于第二节点的第四节点,所述根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体包括:将第一节点、第三节点分别作为其所属节点组的代表节点,并进行随机数交换;

根据交换后随机数、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;

其中,该混淆电路以该交换后随机数和所述代表节点分别对应的部分组内统计数据为输入,该随机数交换包括:第二节点将第二随机数发送给第三节点,第四节点将其对应持有的第四随机数发送给第一节点。

7.如权利要求6所述的方法,所述组间统计数据包括:该混淆电路的第二输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。

8.如权利要求7所述的方法,若所述第二输出结果是针对全部节点统计的,所述利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果,具体包括:第三节点将所述第六随机数发送给第一节点;

第一节点对所述第六随机数与所述组间统计数据进行异或运算,还原出被隐藏的对应统计结果,作为最终统计结果。

9.如权利要求7所述的方法,若所述第二输出结果并非针对全部节点统计的,所述利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果前,所述方法还包括:继续迭代统计直至得到:针对全部节点统计完毕后得到的组间统计数据,用于还原得到最终统计结果。

10.如权利要求4所述的方法,若另一节点组只包含第三节点,所述根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体包括:将第一节点、第三节点分别作为其所属节点组的代表节点,并进行数据交换;

根据交换后数据、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;

其中,该混淆电路以该交换后数据和所述代表节点分别对应的部分组内统计数据为输入,该数据交换包括:第二节点将第二随机数发送给第三节点,第三节点将基于秘密共享协议拆分出的自己的一部分数据发送给第一节点。

11.如权利要求10所述的方法,所述组间统计数据包括:该混淆电路的第三输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。

12.如权利要求1~11任一项所述的方法,所述节点包括金融机构服务器。

13.一种基于混淆电路的数据统计装置,包括:

分组模块,对各节点进行分组,得到多个包含至多两个节点的节点组;

组内统计模块,在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;其中,对于只包含一个节点的节点组,不进行组内统计,进行节点组间统计;

组间统计模块,根据所述组内统计数据进行节点组间统计,得到组间统计数据;

还原模块,利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。

14.如权利要求13所述的装置,所述组内统计模块在节点组内进行节点间部分服务数据交换,具体包括:所述组内统计模块基于秘密共享协议,分别将节点组内每个节点的服务数据拆分为两部分,其中,拆分前的服务数据能够根据所述两部分的异或结果还原;

若节点组内包含第一节点和第二节点,则将这两个节点分别拆分出的一部分数据进行交换。

15.如权利要求14所述的装置,所述组内统计模块根据交换后数据和混淆电路统计服务数据,得到组内统计数据,具体包括:所述组内统计模块生成混淆电路,该混淆电路以交换后数据和随机数为输入;

根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据。

16.如权利要求15所述的装置,所述组内统计模块得到组内统计数据前,第一节点生成并持有第一随机数,第二节点生成并持有第二随机数;

所述组内统计模块根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据,具体包括:所述组内统计模块通过第一节点与第二节点之间的交互,第一节点将所述第一随机数和自己的交换后数据,以及第二节点将所述第二随机数和自己的交换后数据,输入该混淆电路统计服务数据,得到组内统计数据;

其中,所述组内统计数据包括:该混淆电路的第一输出结果与所述第一随机数的异或结果,由第一节点持有;所述第二随机数,由第二节点持有。

17.如权利要求16所述的装置,所述组内统计模块得到组内统计数据,具体包括:第二节点得到该混淆电路的第一输出结果,并发送给第一节点;

第一节点对所述第一随机数与接收的该混淆电路的第一输出结果进行异或运算,得到处于隐藏状态的对应统计结果,其在数值上等于该对应统计结果与所述第二随机数的异或结果。

18.如权利要求16所述的装置,若另一节点组包含对应于第一节点的第三节点,以及对应于第二节点的第四节点,所述组间统计模块根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体包括:所述组间统计模块将第一节点、第三节点分别作为其所属节点组的代表节点,并进行随机数交换;

根据交换后随机数、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;

其中,该混淆电路以该交换后随机数和所述代表节点分别对应的部分组内统计数据为输入,该随机数交换包括:第二节点将第二随机数发送给第三节点,第四节点将其对应持有的第四随机数发送给第一节点。

19.如权利要求18所述的装置,所述组间统计数据包括:该混淆电路的第二输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。

20.如权利要求19所述的装置,若所述第二输出结果是针对全部节点统计的,所述还原模块利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果,具体包括:第三节点将所述第六随机数发送给第一节点;

第一节点对所述第六随机数与所述组间统计数据进行异或运算,还原出被隐藏的对应统计结果,作为最终统计结果。

21.如权利要求19所述的装置,若所述第二输出结果并非针对全部节点统计的,所述还原模块利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果前,所述组间统计模块继续迭代统计直至得到:针对全部节点统计完毕后得到的组间统计数据,用于还原得到最终统计结果。

22.如权利要求16所述的装置,若另一节点组只包含第三节点,所述组间统计模块根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体包括:所述组间统计模块将第一节点、第三节点分别作为其所属节点组的代表节点,并进行数据交换;

根据交换后数据、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;

其中,该混淆电路以该交换后数据和所述代表节点分别对应的部分组内统计数据为输入,该数据交换包括:第二节点将第二随机数发送给第三节点,第三节点将基于秘密共享协议拆分出的自己的一部分数据发送给第一节点。

23.如权利要求22所述的装置,所述组间统计数据包括:该混淆电路的第三输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。

24.如权利要求13~23任一项所述的装置,所述节点包括金融机构服务器。

25.一种基于混淆电路的数据统计设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:对各节点进行分组,得到多个包含至多两个节点的节点组;

在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;

根据所述组内统计数据进行节点组间统计,得到组间统计数据;

利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。

说明书 :

基于混淆电路的数据统计方法、装置以及设备

技术领域

[0001] 本说明书涉及计算机软件技术领域,尤其涉及基于混淆电路的数据统计方法、装置以及设备。

背景技术

[0002] 随着计算机和互联网技术的迅速发展,很多业务可以在网上进行,给用户带来了便利。其中,有的业务需要多个服务提供方协作统计,比如,多头借贷场景下的风控业务,在该场景下,服务提供方为金融机构,贷款申请者可能向其中一家或者多家金融机构借贷,在对贷款申请者进行风控时,往往需要多家金融机构参与统计。
[0003] 在现有技术中,多个服务提供方的节点分别对外提供服务数据用于统计,比如针对服务数据求最大值、求最小值、求和、或者求平均值等。在上一段的例子中,具体可以是统计该贷款申请者在单家金融机构的最高贷款金额,或者也可以是统计该贷款申请者在多家金融机构的贷款金额之和,等等。
[0004] 基于现有技术,需要更能保障服务提供方数据隐私性的统计方案。

发明内容

[0005] 本说明书实施例提供基于混淆电路的数据统计方法、装置以及设备,用以解决如下技术问题:需要更能保障服务提供方数据隐私性的统计方案。
[0006] 为解决上述技术问题,本说明书实施例是这样实现的:
[0007] 本说明书实施例提供的一种基于混淆电路的数据统计方法,包括:
[0008] 对各节点进行分组,得到多个包含至多两个节点的节点组;
[0009] 在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;
[0010] 根据所述组内统计数据进行节点组间统计,得到组间统计数据;
[0011] 利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。
[0012] 本说明书实施例提供的一种基于混淆电路的数据统计装置,包括:
[0013] 分组模块,对各节点进行分组,得到多个包含至多两个节点的节点组;
[0014] 组内统计模块,在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;
[0015] 组间统计模块,根据所述组内统计数据进行节点组间统计,得到组间统计数据;
[0016] 还原模块,利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。
[0017] 本说明书实施例提供的一种基于混淆电路的数据统计设备,包括:
[0018] 至少一个处理器;以及,
[0019] 与所述至少一个处理器通信连接的存储器;其中,
[0020] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
[0021] 对各节点进行分组,得到多个包含至多两个节点的节点组;
[0022] 在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;
[0023] 根据所述组内统计数据进行节点组间统计,得到组间统计数据;
[0024] 利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。
[0025] 本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:各服务提供方分别对应于各节点,通过节点间数据交换和混淆电路,不仅可以隐藏节点具体持有的数据,也可以隐藏统计过程中提供数据的节点的身份,以及两两节点的数据之间的相对统计关系,因此,更能保障服务提供方数据隐私性。

附图说明

[0026] 为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0027] 图1为本说明书的方案在一种实际应用场景下涉及的一种整体架构示意图;
[0028] 图2为本说明书实施例提供的一种基于混淆电路的数据统计方法的流程示意图;
[0029] 图3为本说明书实施例提供的一种匿名统计电路的示意图;
[0030] 图4为本说明书实施例提供的利用图2的方法对四个节点进行统计的流程示意图;
[0031] 图5为本说明书实施例提供的利用图2的方法对三个节点进行统计的流程示意图;
[0032] 图6为本说明书实施例提供的对应于图2的一种基于混淆电路的数据统计装置的结构示意图。

具体实施方式

[0033] 本说明书实施例提供基于混淆电路的数据统计方法、装置以及设备。
[0034] 为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0035] 在本说明书的方案中,针对各节点的服务数据统计是一种多方安全计算过程,多方安全计算在满足任一方数据不泄露给其他方的需求下,实现多方协作计算,并且能够保障计算结果的正确性。不仅如此,本说明书的方案还能够隐藏统计过程中提供数据的节点的身份,以及两两节点的数据之间的相对统计关系。
[0036] 为了达到上述效果,利用了节点间数据交换和混淆电路,数据交换包括节点间部分服务数据交换和/或随机数交换等,所利用的混淆电路是在现有技术基础上改进过的。
[0037] 混淆电路是一种基于加密的安全计算协议,两个互不信任的数据持有方,可以协作计算出某一个函数f的结果,而f使用电路进行表示,其输入为两方持有的数据,为了保证计算过程中双方数据不暴露,需要对电路进行混淆,混淆电路协议保证了计算结果的正确性,同时双方也不能从协议中获取除了函数结果以外的信息。
[0038] 本发明中利用的混淆电路增加了随机数输入,在完成统计计算的同时,使用随机数掩盖了结果,可以防止任何一方复原结果。不仅如此,还可以在数据输入混淆电路前,进行节点间数据交换。从而,有利于隐藏双方身份以及双方数据的相对统计关系,比如,对于求最值的统计,可以隐藏两方数据的相对大小等。以下所称混淆电路均指本段中这种改进过的混淆电路。
[0039] 图1为本说明书的方案在一种实际应用场景下涉及的一种整体架构示意图。该整体架构中,主要涉及三部分:用户(终端)、代理端和多个节点,代理端直接与用户交互,并协调各节点以实现多方统计。
[0040] 以背景技术的场景为例,服务提供方是金融机构,则节点比如是金融机构服务器,每个金融机构可以分别对应一个节点,金融机构可以是银行、保险公司、或者第三方支付机构等。在另一些适用场景下,服务提供方未必限于金融机构,也可能是政府、学校、商铺、其他机构或者公司等。
[0041] 该整体架构的一种工作流程包括:用户向代理端发送数据请求,代理端通知多个节点,多个节点基于节点间数据交换和混淆电路进行统计,得到最终统计结果并返回。
[0042] 本说明书的方案重点在于多个节点的统计过程,下面进行详细说明。
[0043] 图2为本说明书实施例提供的一种基于混淆电路的数据统计方法的流程示意图。该流程的执行主体包括参与统计的多个节点,还可以包括代理端。
[0044] 图2中的流程可以包括以下步骤:
[0045] S202:对各节点进行分组,得到多个包含至多两个节点的节点组。
[0046] 在本说明书实施例中,为了加快统计速度,可以对各节点两两分组,进而先在节点组内统计,再在节点组间统计,如此,通过多轮统计得到最终统计结果。需要说明的是,节点组也可以只包含一个节点,这种节点组内可以不进行统计,参与节点组间统计即可。
[0047] S204:在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果。
[0048] 在本说明书实施例中,服务数据是进行统计所需要的数据,其会影响组内统计数据,进而影响组间统计数据以及最终统计结果。
[0049] 例如,在背景技术的例子中,每个节点的服务数据可以指目标对象在该节点所属金融机构的贷款金额,最终统计结果可以指目标对象在各节点所属金融机构的贷款总金额(求和的统计)或者最大贷款金额(求最大值的统计)等,具体采用哪种统计可以根据实际需求确定。
[0050] 在本说明书实施例中,通过节点间部分服务数据交换,能够隐藏节点持有的服务数据的真实内容。在交换前,对节点拥有的服务数据进行拆分,所有拆分可以有多种方式,列举两种作为示例:若服务数据为一个数值,比如可以利用秘密共享(Secret Sharing)协议,对该数值进行拆分;若服务数据为一条或者多条数据记录,比如可以将这些数据记录拆分,当然,还可以进一步地将单条数据记录本身也进行拆分;等等。
[0051] 以下各实施例主要基于上面列举的第一种拆分方式进行说明,在这种拆分方式下,同时也能够便利地实现对拆分前数据的加密,从而更有利于数据隐私性。
[0052] 在本说明书实施例中,前面已经提到,混淆电路具有随机数输入,该随机数可以由节点生成。混淆电路本身也可以由节点生成,生成的混淆电路在完成统计计算的同时,使用输入的随机数掩盖了结果,可以防止任何一方还原结果。
[0053] 需要说明的是,上述的电路可以只是一种计算机处理逻辑,而未必是真实的电路。
[0054] S206:根据所述组内统计数据进行节点组间统计,得到组间统计数据。
[0055] 在本说明书实施例中,与节点组内统计类似,节点组间统计也可以分别在两两节点组之间进行,节点组间统计过程相应地也利用了混淆电路。若节点组不止两个,则节点组间统计可以迭代地进行,在这种情况下,步骤S206中所述的组间统计数据指迭代完毕后最终得到的组间统计数据。
[0056] 需要说明的是,若需要迭代统计,则可以将各节点组的代表节点重新分组,然后在重新分出的组内进行统计,从而实现上述的节点组间统计。
[0057] 在本说明书实施例中,为了保证数据隐私性,在得到最终统计结果之前,无论是组内统计数据还是组间统计数据,并未直接呈现原始统计数据,而是由至少两个不同的节点分别持有一部分而非全部,通过节点间数据交换,联合各部分才能够还原出原始统计数据,不仅如此,中间的统计过程都是进行了混淆的。
[0058] S208:利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。
[0059] 在本说明书实施例中,所述对应的随机数为节点持有的一部分组间统计数据,用于还原其他节点持有的另外部分组间统计数据,得到最终统计结果。
[0060] 通过图2的方法,各服务提供方分别对应于各节点,通过节点间数据交换和混淆电路,不仅可以隐藏节点具体持有的数据,也可以隐藏统计过程中提供数据的节点的身份,以及两两节点的数据之间的相对统计关系,因此,更能保障服务提供方数据隐私性。
[0061] 基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
[0062] 在本说明书实施例中,对于步骤S204,所述在节点组内进行节点间部分服务数据交换,具体可以包括:
[0063] 基于Secret Sharing协议,分别将节点组内每个节点的服务数据拆分为两部分,其中,拆分前的服务数据能够根据所述两部分的异或结果还原;若节点组内包含第一节点和第二节点,则将这两个节点分别拆分出的一部分数据进行交换。
[0064] 例如,假定某节点组的第一节点的服务数据为a,基于Secret Sharing协议,能够将a拆分为a1和a2这两部分,并且满足 类似地,假定该节点组的第二节点的服务数据为b,将b拆分为b1和b2这两部分,并且满足 在该节点组内进行的节点间部分服务数据交换比如包括:第一节点用a2交换第二节点的b1;在交换后,第一节点持有(a1,b1),第二节点持有(a2,b2)。
[0065] 为了便于理解,对本说明书中使用的节点名称进行说明:
[0066] 一般地,每个节点组分别包含两个节点,为了区分,将其中一个节点称为第一节点,另一个节点称为第二节点。
[0067] 进一步地,当涉及到同时描述两个节点组(某个节点组和另一个节点组)时,为了避免混淆,将另一个节点组的第一节点改称为第三节点,以及将另一个节点组的第二节点改称为第四节点;
[0068] 另外,前面也有提到,节点组也可能只包含一个节点,那么,将这种节点组包含的一个节点也称为第三节点;
[0069] 这些节点名称都是为了便于描述,并非对本申请的限定。
[0070] 在本说明书实施例中,对于步骤S204,所述根据交换后数据和混淆电路统计服务数据,得到组内统计数据,具体可以包括:
[0071] 生成混淆电路,该混淆电路以交换后数据和随机数为输入;根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据。
[0072] 所述随机数由节点或者代理端生成,以节点生成为例。比如,在得到组内统计数据前,由第一节点生成并持有第一随机数,记作r1,由第二节点生成并持有第二随机数,记作r2。
[0073] 下面对混淆电路的随机数输入进一步地说明,直观地,结合图3,对一种匿名统计电路进行说明。图3为本说明书实施例提供的一种匿名统计电路的示意图。
[0074] 在图3中,所述统计具体是求最大值计算,涉及节点间服务数据的比较,因此,该匿名统计电路也可以称为匿名比较电路。
[0075] 其中,“XOR”表示异或门电路、“AND”表示与门电路、“>”表示比较门电路,比较门电路可以由若干个简单的门电路组合而成。
[0076] r1和r2即为输入的随机数。匿名统计电路的输入包括:(a1,a2,b1,b2,r1,r2),也即混淆电路的输入。在匿名统计电路的处理过程中,由a1、a2还原a,由b1、b2还原b,通过比较,统计得到a与b之中的较大值max(a,b),进一步地,利用r1与r2的异或结果对max(a,b)进行异或运算,得到 从而实现对max(a,b)的隐藏。当然,过程中还会进行混淆,以隐藏节点身份,在该例中,混淆电路的输出结果为
[0077] 需要说明的是,对于上述输入,(a1,b1,r1)基于第一节点的数据传输而输入,(a2,b2,r2)基于第二节点的数据传输而输入,这些数据传输基于混淆电路,可以使用不经意传输(Oblivious Transfer)协议。由于进行了混淆,所以第一节点、第二节点传输的并非原始值,而是混淆值。
[0078] 进一步地,第一节点或者第二节点根据自己持有的随机数,可以分别对部分地还原。在得到最终统计结果之前,要避免将max(a,b)直接暴露,基于此,比如可以由第一节点根据自己持有的r1对 部分地还原,得到
并持有,而第二节点则持有能够对 进一步还原的r2,如此,第一节
点或者第二节点仅凭自己均无法得到max(a,b),从而确保了max(a,b)的秘密性。
[0079] 根据上例进行总结,对于步骤S204,所述得到组内统计数据前,还可以执行:第一节点生成并持有第一随机数,第二节点生成并持有第二随机数;进一步地,所述根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据,具体可以包括:
[0080] 通过第一节点与第二节点之间的交互,第一节点将所述第一随机数和自己的交换后数据,以及第二节点将所述第二随机数和自己的交换后数据,输入该混淆电路统计服务数据,得到组内统计数据;其中,所述组内统计数据包括:该混淆电路的第一输出结果与所述第一随机数的异或结果,由第一节点持有;所述第二随机数,由第二节点持有。
[0081] 所述第一输出结果是针对第一节点和第二节点统计的。
[0082] 进一步地,所述得到组内统计数据,具体可以包括:
[0083] 第二节点得到该混淆电路的第一输出结果,并发送给第一节点;第一节点对所述第一随机数与接收的该混淆电路的第一输出结果进行异或运算,得到处于隐藏状态的对应统计结果,其在数值上等于该对应统计结果与所述第二随机数的异或结果。
[0084] 在本说明书实施例中,组内统计完毕后,再进行组间统计,根据前面的说明可知,组内统计的结果是处于隐藏状态的,为了在组间统计的过程中能够继续利用且又不暴露被隐藏的结果,可以将用于还原被隐藏的结果的随机数在节点组间进行交换。
[0085] 例如,假定另一节点组包含对应于第一节点的第三节点,以及对应于第二节点的第四节点;对于组内统计,第三节点生成了第三随机数,第四节点生成了第四随机数。则在组间统计前可以进行随机数交换:第二节点将第二随机数发送给第三节点,第四节点将其对应持有的第四随机数发送给第一节点。进而,由第一节点、第三节点分别作为其所属节点组的代表节点,进行组间统计。
[0086] 根据上面两段的分析,若另一节点组包含对应于第一节点的第三节点,以及对应于第二节点的第四节点,则对于步骤S206,所述根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体可以包括:
[0087] 将第一节点、第三节点分别作为其所属节点组的代表节点,并进行随机数交换;根据交换后随机数、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;其中,该混淆电路以该交换后随机数和所述代表节点分别对应的部分组内统计数据为输入,该随机数交换包括:第二节点将第二随机数发送给第三节点,第四节点将其对应持有的第四随机数发送给第一节点。
[0088] 类似于组内统计,在组间统计时,代表节点也需要再次生成随机数,以用于隐藏组间统计的结果,假定第一节点为节点组间统计生成了第五随机数,第三节点生成了第六随机数。
[0089] 则所述组间统计数据可以包括:该混淆电路的第二输出结果与该混淆电路的第二输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。
[0090] 所述第二输出结果是针对第一节点、第二节点、第三节点和第四节点统计的。
[0091] 在本说明书实施例中,若所述第二输出结果是针对全部节点统计的,对于步骤S208,所述利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果,具体可以包括:
[0092] 第三节点将所述第六随机数发送给第一节点;第一节点对所述第六随机数与所述组间统计数据进行异或运算,还原出被隐藏的对应统计结果,作为最终统计结果。
[0093] 在本说明书实施例中,若所述第二输出结果并非针对全部节点统计的,所述利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果前,还可以执行:
[0094] 继续迭代统计直至得到:针对全部节点统计完毕后得到的组间统计数据,用于还原得到最终统计结果。
[0095] 为了便于理解,结合图4,用一个更完整的实例对整个统计过程进行说明。图4为本说明书实施例提供的利用图2的方法对四个节点进行统计的流程示意图。图4中部分步骤已经在上面的例子中进行了说明,这里对这些步骤仅简单说明。
[0096] 将混淆电路的输出函数记作f。在图4中,第一节点和第二节点属于一个节点组,第三节点和第四节点属于另一个节点组,a、b、c、d分别为对应节点的服务数据。针对a和b进行统计时混淆电路的输出结果记作fab,针对c和d进行统计时混淆电路的输出结果记作fcd,针对a、b、c、d进行统计时混淆电路的输出结果记作fabcd。
[0097] 对于前一个节点组,第一节点与第二节点在进行第一轮统计之前,先基于Secret Sharing协议,拆分服务数据,拆分后,第一节点持有(a1,a2),第二节点持有(b1,b2);第一节点与第二节点进行部分服务数据交换,交换后,第一节点持有(a1,b1),第二节点持有(a2,b2);
[0098] 第一节点生成混淆电路,输入为(a1,a2,b1,b2,r1,r2),记此时第一节点、第二节点的状态为状态1,状态1表示本次混淆电路计算前;
[0099] 执行混淆电路计算过程,第二节点得到混淆电路的输出结果fab,并发送给第一节点,第一节点利用r1进行异或运算得到并持有 第二节点持有r2,统计结果处于隐藏状态,以统计具体为求最大值运算为例,fab在数值上等于 可以
看到统计结果max(a,b)是处于隐藏状态的,记此时第一节点、第二节点的状态为状态2,状态2表示本次混淆电路计算后;
[0100] 此时,第一节点和第二节点分别持有组内统计数据的一部分:maskab、r2;将第一节点作为第一个节点组的代表节点;类似地,对于另一个节点组,完成组内统计后,第三节点持有 第四节点持有r4,将第三节点作为另一个节点组的代表节点;
[0101] 在节点组间进行随机数交换,第二节点将r2发送给第三节点,第四节点将r4发送给第一节点;随机数交换后,作为代表节点,第一节点持有(maskab,r4),第三节点持有(maskcd,r2),此时第一节点、第三节点的状态恢复到状态1;
[0102] 第一节点与第三节点进行下轮统计,也即,组间统计;第一节点生成第五随机数r11,第三节点生成第六随机数r22;
[0103] 类似于组内统计,混淆电路的输入为(maskab,r2,maskcd,r4,r11,r22),执行混淆电路计算过程,混淆电路输出fabcd;进一步地进行异或运算后,第一节点持有第三节点持有r22,此时第一节点、第三节点的状态恢复到状态2;
[0104] 若没有更多的节点,则可以直接执行虚线方框中的流程,第三节点将r22发送给第一节点,第一节点用r22与maskabcd进行异或运算,还原出最终统计结果,记作final,并可以将final发送回代理端,进而由代理端返回给用户;以统计具体为求最大值运算为例,final等于max(a,b,c,d)。
[0105] 而若有更多的节点,则以此类推迭代统计,直到全部节点统计完毕后,再还原出最终统计结果。
[0106] 在本说明书实施例中,前面已经提到,一个节点组也可能只包含一个节点。在这种情况下,进行组间统计的两个节点组有可能一共包含三个节点。对于包含两个节点的节点组而言,组内统计参照上面的说明进行即可,而对于只包含一个节点的节点组而言,无需进行组内统计,而且组间统计的具体实施方案与上面的说明也有区别。下面继续说明。
[0107] 在本说明书实施例中,若另一节点组只包含第三节点,则对于步骤S206,所述根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体可以包括:
[0108] 将第一节点、第三节点分别作为其所属节点组的代表节点,并进行数据交换;根据交换后数据、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;其中,该混淆电路以该交换后数据和所述代表节点分别对应的部分组内统计数据为输入,该数据交换包括:第二节点将第二随机数发送给第三节点,第三节点将基于秘密共享协议拆分出的自己的一部分数据发送给第一节点。
[0109] 进一步地,在上一段的情况下,所述组间统计数据包括:该混淆电路的第三输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。
[0110] 所述第三输出结果是针对第一节点、第二节点和第三节点统计的。后面的步骤与四个节点参与统计的情况类似,不再赘述。
[0111] 为了便于理解,用一个更完整的示例对利用图2的方法对三个节点进行统计的流程进行说明,如图5所示。图5中的部分步骤参照图4即可,这里主要对区别步骤说明。
[0112] 在图5中,第一节点和第二节点属于一个节点组,第三节点属于另一个节点组。针对a、b、c进行统计时混淆电路的输出结果记作fabc。
[0113] 对于另一个节点组,第三节点拆分服务数据c得到(c1,c2);
[0114] 在第一个节点组的组内统计完毕后,第二节点发送r2给第三节点,第三节点发送c2给第一节点;则作为代理节点,第一节点持有(maskab,c2),第三节点持有(c1,r2);
[0115] 第一节点与第三节点进行下轮比较,也即,组间统计;第一节点生成第五随机数r11,第三节点生成第六随机数r22;
[0116] 类似于组内统计,混淆电路的输入为(maskab,r2,c1,c2,r11,r22),执行混淆电路计算过程,混淆电路输出fabc;进一步地进行异或运算后,第一节点持有第三节点持有r22;
[0117] 若没有更多的节点,则可以直接执行虚线方框中的流程,第三节点将r22发送给第一节点,第一节点用r22与maskabc进行异或运算,还原出final,并可以将final发送回代理端,进而由代理端返回给用户;以统计具体为求最大值运算为例,final等于max(a,b,c)[0118] 而若有更多的节点,则以此类推迭代统计,直到全部节点统计完毕后,再还原出最终统计结果。
[0119] 基于同样的思路,本说明书实施例还提供了对应于上述方法的装置,如图6所示。
[0120] 图6为本说明书实施例提供的对应于图2的一种基于混淆电路的数据统计装置的结构示意图,该装置可以位于图2中流程的执行主体上,包括:
[0121] 分组模块601,对各节点进行分组,得到多个包含至多两个节点的节点组;
[0122] 组内统计模块602,在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;
[0123] 组间统计模块603,根据所述组内统计数据进行节点组间统计,得到组间统计数据;
[0124] 还原模块604,利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。
[0125] 可选地,所述组内统计模块602在节点组内进行节点间部分服务数据交换,具体包括:
[0126] 所述组内统计模块602基于秘密共享协议,分别将节点组内每个节点的服务数据拆分为两部分,其中,拆分前的服务数据能够根据所述两部分的异或结果还原;
[0127] 若节点组内包含第一节点和第二节点,则将这两个节点分别拆分出的一部分数据进行交换。
[0128] 可选地,所述组内统计模块602根据交换后数据和混淆电路统计服务数据,得到组内统计数据,具体包括:
[0129] 所述组内统计模块602生成混淆电路,该混淆电路以交换后数据和随机数为输入;根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据。
[0130] 可选地,所述组内统计模块602得到组内统计数据前,第一节点生成并持有第一随机数,第二节点生成并持有第二随机数;
[0131] 所述组内统计模块602根据该交换后数据和该混淆电路,通过第一节点与第二节点之间的交互,统计服务数据,得到组内统计数据,具体包括:
[0132] 所述组内统计模块602通过第一节点与第二节点之间的交互,第一节点将所述第一随机数和自己的交换后数据,以及第二节点将所述第二随机数和自己的交换后数据,输入该混淆电路统计服务数据,得到组内统计数据;
[0133] 其中,所述组内统计数据包括:该混淆电路的第一输出结果与所述第一随机数的异或结果,由第一节点持有;所述第二随机数,由第二节点持有。
[0134] 可选地,所述组内统计模块602得到组内统计数据,具体包括:
[0135] 第二节点得到该混淆电路的第一输出结果,并发送给第一节点;
[0136] 第一节点对所述第一随机数与接收的该混淆电路的第一输出结果进行异或运算,得到处于隐藏状态的对应统计结果,其在数值上等于该对应统计结果与所述第二随机数的异或结果。
[0137] 可选地,若另一节点组包含对应于第一节点的第三节点,以及对应于第二节点的第四节点,
[0138] 所述组间统计模块603根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体包括:
[0139] 所述组间统计模块603将第一节点、第三节点分别作为其所属节点组的代表节点,并进行随机数交换;
[0140] 根据交换后随机数、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;
[0141] 其中,该混淆电路以该交换后随机数和所述代表节点分别对应的部分组内统计数据为输入,该随机数交换包括:第二节点将第二随机数发送给第三节点,第四节点将其对应持有的第四随机数发送给第一节点。
[0142] 可选地,所述组间统计数据包括:该混淆电路的第二输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。
[0143] 可选地,若所述第二输出结果是针对全部节点统计的,所述还原模块604利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果,具体包括:
[0144] 第三节点将所述第六随机数发送给第一节点;
[0145] 第一节点对所述第六随机数与所述组间统计数据进行异或运算,还原出被隐藏的对应统计结果,作为最终统计结果。
[0146] 可选地,若所述第二输出结果并非针对全部节点统计的,所述还原模块604利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果前,所述组间统计模块603继续迭代统计直至得到:针对全部节点统计完毕后得到的组间统计数据,用于还原得到最终统计结果。
[0147] 可选地,若另一节点组只包含第三节点,
[0148] 所述组间统计模块603根据所述组内统计数据进行节点组间统计,得到组间统计数据,具体包括:
[0149] 所述组间统计模块603将第一节点、第三节点分别作为其所属节点组的代表节点,并进行数据交换;
[0150] 根据交换后数据、代表节点分别对应的组内统计数据和混淆电路,通过代表节点之间的交互,进行节点组间统计,得到组间统计数据;
[0151] 其中,该混淆电路以该交换后数据和所述代表节点分别对应的部分组内统计数据为输入,该数据交换包括:第二节点将第二随机数发送给第三节点,第三节点将基于秘密共享协议拆分出的自己的一部分数据发送给第一节点。
[0152] 可选地,所述组间统计数据包括:该混淆电路的第三输出结果与第一节点为所述节点组间统计生成的第五随机数的异或结果,由第一节点持有;所述第三节点为所述节点组间统计生成并持有的第六随机数。
[0153] 可选地,所述节点包括金融机构服务器。
[0154] 基于同样的思路,本说明书实施例还提供了对应于图2的一种基于混淆电路的数据统计设备,包括:
[0155] 至少一个处理器;以及,
[0156] 与所述至少一个处理器通信连接的存储器;其中,
[0157] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
[0158] 对各节点进行分组,得到多个包含至多两个节点的节点组;
[0159] 在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;
[0160] 根据所述组内统计数据进行节点组间统计,得到组间统计数据;
[0161] 利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。
[0162] 基于同样的思路,本说明书实施例还提供了对应于图2的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
[0163] 对各节点进行分组,得到多个包含至多两个节点的节点组;
[0164] 在节点组内进行节点间部分服务数据交换,并根据交换后数据和混淆电路统计服务数据,得到组内统计数据,其中,所述混淆电路用于对统计过程进行混淆,以及基于随机数隐藏统计结果;
[0165] 根据所述组内统计数据进行节点组间统计,得到组间统计数据;
[0166] 利用对应的随机数,对所述组间统计数据进行还原,得到最终统计结果。
[0167] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0168] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0169] 本说明书实施例提供的装置、设备、非易失性计算机存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
[0170] 在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0171] 控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0172] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0173] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0174] 本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0175] 本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0176] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0177] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0178] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0179] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0180] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0181] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0182] 本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0183] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0184] 以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。