数据统计方法和装置
技术领域
本说明书涉及互联网技术领域,尤其涉及一种数据统计方法和装置。
背景技术
大数据时代,存在非常多的数据孤岛。例如,一个自然人的数据,可以分散存储于不同的企业中,而企业与企业之间由于竞争关系和用户隐私保护的考虑,并不是完全的互相信任,这就为涉及企业之间数据合作的统计工作造成了障碍。如何在充分保护企业核心数据隐私的前提下,既能够利用双方拥有的数据完成一些数据统计计算,又不会泄露企业各自的数据隐私安全,成为一个亟待解决的迫切问题。
发明内容
有鉴于此,本说明书提供一种数据统计方法和装置。
具体地,本说明书是通过如下技术方案实现的:
一种数据统计方法,应用于联合N个数据持有方之间的数据进行数据统计,所述数据持有方持有待计算统计值的数据,所述方法应用于所述数据持有方,包括:
与其他数据持有方两两协商出共同的伪随机数序列,得到与协商对象一一对应的N-1个伪随机数序列;
根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数;
根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,所述参与值是所述伪随机数或所述伪随机数的相反数;
对持有的数据和所述N-1个伪随机数的参与值进行求和计算;
将所述求和结果发送给所述第三方,以供第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值;
其中,N是大于等于2的自然数。
一种数据统计装置,应用于联合N个数据持有方之间的数据进行数据统计,所述数据持有方持有待计算统计值的数据,所述装置应用于所述数据持有方,包括:
两两协商单元,与其他数据持有方两两协商出共同的伪随机数序列,得到与协商对象一一对应的N-1个伪随机数序列;
伪随机数选取单元,根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数;
参与值确定单元,根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,所述参与值是所述伪随机数或所述伪随机数的相反数;
求和计算单元,对持有的数据和所述N-1个伪随机数的参与值进行求和计算;
结果发送单元,将所述求和结果发送给所述第三方,以供第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值;
其中,N是大于等于2的自然数。
一种数据统计装置,包括:
处理器;
用于存储与数据统计逻辑对应的机器可执行指令的存储器;
所述数据统计逻辑对应的机器可执行指令应用于联合N个数据持有方之间的数据进行数据统计,所述数据持有方持有待计算统计值的数据,
通过读取并执行所述与数据统计逻辑对应的机器可执行指令,所述处理器被促使:
与其他数据持有方两两协商出共同的伪随机数序列,得到与协商对象一一对应的N-1个伪随机数序列;
根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数;
根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,所述参与值是所述伪随机数或所述伪随机数的相反数;
对持有的数据和所述N-1个伪随机数的参与值进行求和计算;
将所述求和结果发送给所述第三方,以供第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值;
其中,N是大于等于2的自然数。
由以上描述可以看出,本说明书在进行数据统计时,各数据持有方可对持有的数据和伪随机数的参与值进行求和,从而将自身真实的数据隐藏在求和结果中,确保数据不泄露。并且,各数据持有方将其他数据持有方看作协商对象,与协商对象两两协商出共同的伪随机数序列,还可采用全局相同的伪随机数选取策略从所述伪随机数序列中进行伪随机数选取,从而得到相同的伪随机数,并根据排列顺序,确定所述伪随机数在参与运算时的参与值,从而确保第三方可通过对所有数据持有方的求和结果进行求和计算得到统计值,实现多方安全求和计算。此外,在进行数据统计时,各个数据持有方之间无需相互通信,可有效减少数据统计过程中的通信量,提高计算效率。
附图说明
图1是本说明书一示例性实施例示出的一种数据统计方法的流程示意图。
图2是本说明书一示例性实施例示出的一种用于数据统计装置的一结构示意图。
图3是本说明书一示例性实施例示出的一种数据统计装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在大数据时代,多个数据持有方可以持有同一个统计对象的数据,在这种情况下,在对数据进行统计计算时,可能会涉及多个数据持有方,需要多个数据持有方合作完成数据统计。然而,由于不同企业之间的竞争关系或者隐私保护的考虑,在统计过程中不能泄露企业各自的数据。
例如,同一个自然人可以在不同的P2P(peer-to-peer,互联网金融点对点借贷)平台借款,各P2P平台存储有该自然人在本平台的借款数额。在统计该自然人总共的借款数额时,往往需要联合多个P2P平台合作完成统计计算。
在这个例子中,P2P平台是数据持有方,该自然人的借款数额是数据持有方持有的数据,该自然人总共的借款数额是待计算的统计值。
又例如,每个共享单车平台都可以为用户提供单车使用服务,各共享单车平台存储有该平台每天共享单车的使用量。在统计某一天共享单车的使用总量时,往往需要联合多个共享单车平台完成统计计算。
在这个例子中,共享单车平台是数据持有方,这一天共享单车的使用量是数据持有方持有的数据,这一天共享单车的使用总量是待计算的统计值。
图1是本说明书一示例性实施例示出的一种数据统计方法的流程示意图。
本实施例应用于联合N个数据持有方之间的数据进行数据统计,N为大于等于2的自然数。
请参考图1,所述数据统计方法可以应用于数据持有方,包括有以下步骤:
步骤102,与其他数据持有方两两协商出共同的伪随机数序列,得到与协商对象一一对应的N-1个伪随机数序列。
在本实施例中,每个数据持有方可将其他数据持有方看作协商对象,然后分别与各个协商对象进行两两协商,协商出共同的伪随机数序列。
在一个例子中,数据持有方可在每次进行数据统计时与其他数据持有方协商出所述N-1个伪随机数序列。即,每次进行数据统计时,均会更新所述伪随机数序列,所述伪随机数序列仅用于一次数据统计。
在另一个例子中,数据持有方也可以预先与其他数据持有方协商出所述N-1个伪随机数序列,所述N-1个伪随机数序列可用于多次数据统计。
步骤104,根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数。
在本实施例中,所述选取策略可用于从一个伪随机数序列中选取伪随机数,最终得到一个与该伪随机数序列对应的伪随机数,该伪随机数也与协商对象对应。
在一个例子中,所述选取策略可以是一个顺序号。所述顺序号可用于表示选取伪随机数序列中的该顺序号对应的伪随机数。假设顺序号是5,则表示选取伪随机数序列中第5位伪随机数。
所述顺序号也可用于表示从伪随机数序列中的该顺序号对应的伪随机数开始进行选取。仍假设顺序号是5,则可表示从伪随机数序列中第5位伪随机数开始,逐个选取K个伪随机数;也可表示从伪随机数序列中第5+H位伪随机数开始,逐个选取K个伪随机数;还可表示从伪随机数序列中第5位伪随机数开始,按照J的间隔选取K个伪随机数等,本说明书对此不作特殊限制。在选取得到K个伪随机数后,可将这K个伪随机数进行组合,得到一个组合后的伪随机数。其中,K是大于等于2的自然数,J和H是大于等于1的自然数。
当然,所述选取策略也可以包括若干个顺序号,可用于表示选取伪随机数序列中这些顺序号对应的伪随机数,然后对选取的伪随机数进行组合,得到一个组合后的伪随机数。
在另一个例子中,所述选取策略可以包括顺序号和排序规则。其中,所述排序规则可包括:从大到小进行排列、从小到大进行排列等。在本例中,可根据所述顺序号从排序后的伪随机数序列中选取伪随机数,具体的选取方法可参考前述描述,本实施例在此不再一一赘述。
上述选取策略仅为示例性的说明,在实际应用中,还可以采用其他的选取策略,本说明书对此不作特殊限制。
步骤106,根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,所述参与值是所述伪随机数或所述伪随机数的相反数。
在本实施例中,所述排列顺序可由数据持有方的ID号确定,例如,按照ID号从小到大,或从大到小的顺序对所有数据持有方进行排序。
当然,还可以基于其他信息对数据持有方进行排序,例如,基于IP地址的算法等,本说明书对此不作特殊限制。
在本实施例中,各数据持有方可根据排序结果确定每个协商对象对应的伪随机数在参与运算时的参与值。
在一个例子中,当所述协商对象排列在本数据持有方之后时,可将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数;当所述协商对象排列在本数据持有方之前时,可将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数的相反数。
在另一个例子中,当所述协商对象排列在本数据持有方之后时,可将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数的相反数;当所述协商对象排列在本数据持有方之前时,可将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数,本说明书对此不作特殊限制。
步骤108,对持有的数据和所述N-1个伪随机数的参与值进行求和计算。
在本实施例中,各个数据持有方可对其持有的数据和前述步骤106得到的N-1个伪随机数的参与值进行求和计算,以将其真实数据隐藏在求和结果中。
步骤110,将所述求和结果发送给所述第三方,以供第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值。
在本实施例中,各个数据持有方在计算得到求和结果后,可将求和结果发送给第三方,第三方对各个数据持有方的求和结果进行求和计算,以得到统计值。
由以上描述可以看出,本说明书每个数据持有方可与其他数据持有方两两协商出共同的伪随机数序列,以使得每个数据持有方持有N-1个伪随机数序列,还可根据全局相同的伪随机数选取策略分别从每个伪随机数序列中选取伪随机数,以得到N-1个与协商对象一一对应的伪随机数,然后确定各个伪随机数在参与运算时的参与值,并结合本端持有的数据进行求和计算,以将本端真实数据隐藏在求和结果中,确保数据不泄露。各数据持有方可将求和结果发送给第三方,由第三方进行求和计算,得到统计值,从而实现多方安全计算。并且,在数据统计时,各个数据持有方之间无需进行通信,可大大减少数据统计时的通信量,提高计算效率。
下面分别通过实施例一和实施例二两个实施例来描述本说明书的具体实现过程。
实施例一
在本实施例中,在生成伪随机数序列之前,每个数据持有方可以将其他数据持有方看作协商对象,然后分别与各个协商对象进行两两协商,以协商出共同的种子。
举例来说,假设有4个数据持有方,分别为数据持有方1至数据持有方4。以数据持有方1为例,数据持有方1可将数据持有方2至数据持有方4看作协商对象,然后分别与这3个协商对象进行协商,以确定用于生成伪随机序列的种子。
表1
请参考表1的示例,数据持有方1与数据持有方2协商,可确定共同的种子X12。数据持有方1与数据持有方3协商,可确定共同的种子X13。数据持有方1与数据持有方4协商,可确定共同的种子X14。对于数据持有方1而言,X12与数据持有方2对应,X13与数据持有方3对应,X14与数据持有方4对应。
表2
在表1的基础上,请参考表2的示例,对于数据持有方2而言,其与数据持有方1协商确定的共同种子是X12,与数据持有方3协商,可确定共同的种子X23,与数据持有方4协商,可确定共同的种子X24。其中,X12与数据持有方1对应,X23与数据持有方3对应,X24与数据持有方4对应。
|
种子 |
数据持有方1 |
X<sub>12</sub>、X<sub>13</sub>、X<sub>14</sub> |
数据持有方2 |
X<sub>12</sub>、X<sub>23</sub>、X<sub>24</sub> |
数据持有方3 |
X<sub>13</sub>、X<sub>23</sub>、X<sub>34</sub> |
数据持有方4 |
X<sub>14</sub>、X<sub>24</sub>、X<sub>34</sub> |
表3
依次类推,数据持有方1至数据持有方4可生成表3所示的种子示例。由此,每个数据持有方生成的种子分别与其他3个数据持有方一一对应。
在本实施例中,各数据持有方可预先生成与协商对象一一对应的N-1个伪随机数序列,所述N-1个伪随机数序列可用于多次数据统计。
在一个例子中,各数据持有方可将种子作为唯一入参输入伪随机数发生器以生成伪随机数序列,相同种子生成的伪随机数序列也相同。
表4
仍以表3所示的种子示例为例,请参考表4的示例,数据持有方1可生成3个伪随机数序列,分别为R12、R13和R14。其中,R12与数据持有方2对应,R13与数据持有方3对应,R14与数据持有方4对应等。
至此,数据持有方1至数据持有方4均生成3个伪随机数序列,并且,每两个数据持有方之间均具有1个共同的伪随机数序列,例如,数据持有方1和数据持有方2具有共同的伪随机数序列R12,数据持有方1和数据持有方3具有共同的伪随机数序列R13等。
在N个数据持有方的应用场景中,每个数据持有方持有N-1个伪随机数序列,这N-1个伪随机数序列分别与其他N-1个数据持有方一一对应,且任意两个数据持有方会具有一个共同的伪随机数序列。
在本实施例中,伪随机数序列的元素数量可由伪随机数发生器的算法确定,例如,AES128(Advanced Encryption Standard,高级加密标准)算法生成的伪随机数序列有128个元素,AES256算法生成的伪随机数序列有256个元素,HMAC256(Hash-based MessageAuthentication Code,哈希消息认证码)算法生成的伪随机数序列也有256个元素等。
在另一个例子中,在生成伪随机数序列时,除种子之外,还可以存在其他入参,例如计数值等。
以计数值为例,各数据持有方在协商种子时,还可与协商对象协商出共同的计数值,然后将种子和计数值输入伪随机数发生器,以生成伪随机数序列。基于相同的种子和相同的计数值,也可以生成相同的伪随机数序列。
在生成伪随机数序列之后,数据持有方可根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数。
在本实施例中,所述选取策略可由第三方在每次进行数据统计时指定。
所述第三方独立于各个数据持有方,可为各个数据持有方指定计数值,还可以联合所有数据持有方的求和结果计算统计值。
在实际实现中,所述第三方提供的上述功能可由一个平台来实现,也可由不同的平台来实现,例如:由指定平台为各个数据持有方指定计数值,由计算平台以联合所有数据持有方的求和结果计算统计值等,本说明书对此不作特殊限制。
在一个例子中,仍以前述数据持有方1至数据持有方4为例,假设所述伪随机数选取策略是顺序号5,表示选取伪随机数序列中第5位伪随机数,则各个数据持有方分别从自身生成的3个伪随机数序列中选取第5位伪随机数作为与协商对象对应的伪随机数。
表5
基于表4的示例,数据持有方1从伪随机数序列R12中选取第5位伪随机数,假设该第5位伪随机数是r12,从伪随机数序列R13中选取第5位伪随机数,假设该第5位伪随机数是r13,依次类推,可得到表5所示的伪随机数示例,数据持有方1至数据持有方4均选出3个与协商对象一一对应的伪随机数。
在本实施例中,由于每两个数据持有方之间均具有1个共同的伪随机数序列,并且,针对每个伪随机数序列,各个数据持有方采用全局相同的选取策略进行伪随机数选取,所以在选取得到伪随机数后,每两个数据持有方之间均具有1个共同的伪随机数。例如,数据持有方1和数据持有方2之间选取得到共同的伪随机数r12,数据持有方1和数据持有方3之间选取得到共同的伪随机数r13等。
由此,各数据持有方与其协商对象在生成共同的伪随机数序列后,还会从所述伪随机数序列中选取得到共同的伪随机数。
在另一个例子中,假设所述选取策略是顺序号5,表示从伪随机数序列中第5位伪随机数开始,逐个选取K个伪随机数,K是全局唯一,由数据持有方预先约定,其取值是3。各数据持有方可分别从其持有的伪随机数序列中选取第5位、第6位和第7位伪随机数,然后对选取得到的3个伪随机数进行组合,并将组合结果作为与所述伪随机数序列对应的伪随机数。
以数据持有方1为例,假设从伪随机数序列R12中选取的第5位伪随机数是123,第6位伪随机数是456,第7位伪随机数是789,则可以将123、456和789进行组合。
例如,可将这3个伪随机数按照顺序号从小到大的顺序拼接在一起,得到组合结果123456789,即r12是123456789。
再例如,还可将3个伪随机数按照顺序号从大到小的顺序拼接在一起,得到组合结果789456123,即r12是789456123。
当然还可以采用其他的组合方案,或者对选取的3个伪随机数进行设定的运算等,本说明书对此不作特殊限制。
在本实施例中,在选取得到与协商对象一一对应的N-1个伪随机数后,可确定每个伪随机数在参与运算时的参与值。
仍以表5所示的4个数据持有方为例,按照ID号从小到大进行排序,排序结果为:数据持有方1、数据持有方2、数据持有方3、数据持有方4。
假设,当所述协商对象排列在本数据持有方之后时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数;当所述协商对象排列在本数据持有方之前时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数的相反数。
表6
请继续参考表5,对于数据持有方2而言,其协商对象数据持有方1排列在前,因而可将数据持有方1对应的伪随机数r12的参与值确定为其相反数-r12,协商对象数据持有方3排列在后,因而可将数据持有方3对应的伪随机数r23的参与值确定为r23,依次类推,可得到表6所示的参与值示例。
在本实施例中,各数据持有方在确定N-1个协商对象对应的N-1个伪随机数的参与值后,可对持有的数据和所述N-1个伪随机数的参与值进行求和计算,以将其真实数据隐藏在求和结果中。
表7
请继续参考表6,假设数据持有方1持有的数据是X1,数据持有方2持有的数据是X2,依次类推,在进行求和后,可得到表7所示的求和结果。
在本实施例中,各个数据持有方在计算得到求和结果后,可将求和结果发送给第三方,第三方对各个数据持有方的求和结果进行求和计算,以得到统计值。
请继续参考表7,第三方对数据持有方1至数据持有方4的求和结果进行求和计算,得到统计值X1+X2+X3+X4。
在本实施例中,第三方对各个数据持有方的求和结果进行求和计算即可得到统计值,无需其他运算,简单快捷。
可选的,在另一个例子中,各个数据持有方在计算得到求和结果后,也可以广播求和结果,然后对所有参与统计的数据持有方的求和结果进行求和计算,得到统计值。
可选的,为确保数据持有方求和结果的随机性,第三方可在每次进行数据统计时,指定不同的全局选取策略。仍以选取策略是顺序号为例,第三方可为每次数据统计指定不同的顺序号,例如:第一次指定顺序号是1,第二次指定顺序号是2,依次类推,直到顺序号取值为伪随机数序列中伪随机数的数量。当顺序号取值为伪随机数序列中伪随机数的数量时,各个数据持有方可重新进行两两协商,以生成新的共同伪随机数序列,第三方可重新将顺序号指定为1、2、…,依次类推。
采用这样的实现方式,可在数据持有方侧对所述选取策略进行校验。例如,各个数据持有方可对所述选取策略进行记录,当再次接收到第三方指定的选取策略时,判断该接收到的选取策略是否与记录的选取策略冲突,所述冲突通常表示接收到的选取策略已被使用过。
若冲突,可向第三方返回错误提示。
若不冲突,则执行根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数的步骤,并更新记录的选取策略。
仍以第三方从1开始顺序指定顺序号为例,数据持有方可以记录第三方发送的顺序号,当再次接收到第三方发送的顺序号时,可判断接收到的顺序号是否大于记录的顺序号。
若大于,则可说明该顺序号对应的伪随机数尚未被使用过,可以根据接收到的顺序号从每个伪随机数序列中选取伪随机数,并可在选取结束后对记录的顺序号进行更新。
若小于等于,则可说明该顺序号对应的伪随机数已经被使用过,可以向第三方返回错误提示。
类似的,当顺序号表示从伪随机数序列中的该顺序号对应的伪随机数开始逐个选取K个伪随机数再进行组合时,数据持有方可记录选出的伪随机数的最大顺序号,即顺序号+K-1。当再次接收到第三方发送的顺序号时,判断接收到的顺序号是否大于记录的所述最大顺序号。
在本实施例中,可基于选取策略制定不同的策略记录、冲突判断方案,本说明书在此不再一一赘述。
本实施例在每次进行数据统计时,可从伪随机数序列中选取得到不同的伪随机数参与求和计算,使得求和结果具有随机性,可有效防止不法人员从多次求和结果中分析出数据持有方持有的真实数据,从而确保数据安全、不泄露。
值得注意的是,采用第三方下发选取策略的实现方案,当有数据持有方掉线时,并不影响在线数据持有方的数据统计,在线的数据持有方仍可基于第三方发送的选取策略进行伪随机数选取、求和计算等步骤,以得到所有在线数据持有方持有数据的统计值。
实施例二
在本实施例中,在生成伪随机数序列之前,每个数据持有方也可以将其他数据持有方看作协商对象,然后分别与各个协商对象进行两两协商,以协商出共同的种子。
种子协商的过程可以参考前述实施例一,在此不再一一赘述。
在本实施例中,第三方可在每次进行数据统计时,为数据持有方指定全局相同的计数值,各个数据持有方在接收到所述计数值后,可将种子和计数值作为入参输入伪随机数生成器,以生成伪随机数序列。
为避免数据持有方在多次数据统计时生成相同的伪随机数序列,第三方可在每次进行数据统计时,指定不同的计数值。
例如,第三方可从1开始顺序指定计数值,即第一次指定计数值是1,第二次指定计数值是2等,依次类推。
在本实施例中,可在数据持有方侧对计数值进行校验。例如,各个数据持有方可记录所述计数值,当再次接收到第三方指定的计数值时,判断该接收到的计数值是否大于记录的计数值。
若大于,则可说明该计数值尚未被使用过,可执行伪随机数序列的生成步骤,并可在生成伪随机数序列后对记录的计数值进行更新。
若小于等于,则可说明该计数值已经被使用过,可以向第三方返回错误提示。
当然,在实际实现中,计数值也不会一直取到无限大,可以设定一个循环周期,例如三个月、半年等。在到达该周期时,各个数据持有方可重新进行种子协商,第三方也可重新将计数值的取值设置为1。
采用第三方指定计数值的实现方案,可有效减少数据持有方之间频繁进行种子协商,减少网络通信量。
在本实施例中,每个数据持有方也可生成N-1个伪随机数序列,这N-1个伪随机数序列分别与其他N-1个数据持有方一一对应,且任意两个数据持有方会具有一个共同的伪随机数序列。
每次生成的伪随机数序列可仅用于一次数据统计。
在本实施例中,全局相同的选取策略也可由第三方指定,其具体实现方案可参考前述实施例一。
若所述选取策略是顺序号,较为简单的,当计数值未超出伪随机数序列元素的数量时,也可将第三方指定的计数值作为选取策略的顺序号,本说明书对此不作特殊限制。
可选的,在本实施例中,由于在每次进行数据统计时,各个数据持有方均会重新生成伪随机数序列,所以也可以采用全局相同的固定选取策略。例如,每次进行伪随机数选取时,均从伪随机数序列中选取第10位至20位伪随机数,然后对这些伪随机数进行组合,并将组合结果作为与协商对象对应的伪随机数。
在本实施例中,在选取得到与协商对象一一对应的伪随机数后,可根据数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,然后对持有的数据和所述N-1个伪随机数的参与值进行求和计算,并将所述求和结果发送给所述第三方,由第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值,这部分的处理与实现可以参照前述
实施例一,本实施例在此不再一一赘述。
与前述数据统计方法的实施例相对应,本说明书还提供了数据统计装置的实施例。
本说明书数据统计装置的实施例可以应用在数据持有方部署的服务器或者服务器集群上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在服务器的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本说明书数据统计装置所在服务器的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的服务器通常根据该服务器的实际功能,还可以包括其他硬件,对此不再赘述。
图3是本说明书一示例性实施例示出的一种数据统计装置的框图。
请参考图3,所述数据统计装置200可以应用于联合N个数据持有方之间的数据进行数据统计,所述数据持有方持有待计算统计值的数据,所述数据统计装置200包括有:两两协商单元201、伪随机数选取单元202、参与值确定单元203、求和计算单元204、结果发送单元205、冲突判断单元206和计数值判断单元207。
其中,两两协商单元201,与其他数据持有方两两协商出共同的伪随机数序列,得到与协商对象一一对应的N-1个伪随机数序列;
伪随机数选取单元202,根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数;
参与值确定单元203,根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,所述参与值是所述伪随机数或所述伪随机数的相反数;
求和计算单元204,对持有的数据和所述N-1个伪随机数的参与值进行求和计算;
结果发送单元205,将所述求和结果发送给所述第三方,以供第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值;
其中,N是大于等于2的自然数。
可选的,所述两两协商单元201:
与其他数据持有方两两协商出共同的种子,得到与协商对象一一对应的N-1个种子;
根据所述N-1个种子生成N-1个伪随机数序列。
可选的,所述选取策略由所述第三方在每次进行数据统计时指定。
冲突判断单元206,记录所述选取策略,当再次接收到第三方指定的选取策略时,判断该接收到的选取策略是否与记录的选取策略冲突;若不冲突,则执行根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数的步骤,并更新记录的选取策略。
可选的,所述两两协商单元201:
与其他数据持有方预先两两协商出共同的种子,得到与协商对象一一对应的N-1个种子;
接收所述第三方在每次进行数据统计时指定的全局相同的计数值;
根据所述N-1个种子和所述计数值生成N-1个伪随机数序列。
计数值判断单元207,记录所述计数值;当再次接收到第三方指定的计数值时,判断该计数值是否大于记录的计数值;若大于,则执行根据所述N-1个种子和所述计数值生成N-1个伪随机数序列的步骤,并更新记录的计数值。
可选的,所述选取策略是固定的。
可选的,所述选取策略是顺序号。
可选的,所述伪随机数选取单元202,从每个伪随机数序列中选取全局相同的顺序号对应的伪随机数。
可选的,所述伪随机数选取单元202,针对每个伪随机数序列,从所述伪随机数序列中全局相同的顺序号对应的伪随机数开始,选取若干个伪随机数;组合选取的若干个伪随机数,并将组合结果作为从所述伪随机数序列中选取的伪随机数。
可选的,所述伪随机数选取单元202,逐个选取固定数量的伪随机数,所述固定数量大于1。
可选的,所述参与值确定单元203:
当所述协商对象排列在本数据持有方之后时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数;
当所述协商对象排列在本数据持有方之前时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数的相反数。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与前述数据统计方法的实施例相对应,本说明书还提供一种数据统计装置,该数据统计装置包括:处理器以及用于存储与数据统计逻辑对应的机器可执行指令的存储器。其中,所述数据统计逻辑对应的机器可执行指令应用于联合N个数据持有方之间的数据进行数据统计,所述数据持有方持有待计算统计值的数据。所述处理器和所述存储器通常借由内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。
在本实施例中,通过读取并执行所述存储器存储的与数据统计逻辑对应的机器可执行指令,所述处理器被促使:
与其他数据持有方两两协商出共同的伪随机数序列,得到与协商对象一一对应的N-1个伪随机数序列;
根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数;
根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,所述参与值是所述伪随机数或所述伪随机数的相反数;
对持有的数据和所述N-1个伪随机数的参与值进行求和计算;
将所述求和结果发送给所述第三方,以供第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值;
其中,N是大于等于2的自然数。
可选的,在与其他数据持有方两两协商出共同的伪随机数序列时,所述处理器被促使:
与其他数据持有方两两协商出共同的种子,得到与协商对象一一对应的N-1个种子;
根据所述N-1个种子生成N-1个伪随机数序列。
可选的,所述选取策略由所述第三方在每次进行数据统计时指定。
可选的,所述处理器还被促使:
记录所述选取策略;
当再次接收到第三方指定的选取策略时,判断该接收到的选取策略是否与记录的选取策略冲突;
若不冲突,则执行根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数的步骤,并更新记录的选取策略。
可选的,在与其他数据持有方两两协商出共同的伪随机数序列时,所述处理器被促使:
与其他数据持有方预先两两协商出共同的种子,得到与协商对象一一对应的N-1个种子;
接收所述第三方在每次进行数据统计时指定的全局相同的计数值;
根据所述N-1个种子和所述计数值生成N-1个伪随机数序列。
可选的,所述处理器还被促使:
记录所述计数值;
当再次接收到第三方指定的计数值时,判断该计数值是否大于记录的计数值;
若大于,则执行根据所述N-1个种子和所述计数值生成N-1个伪随机数序列的步骤,并更新记录的计数值。
可选的,所述选取策略是固定的。
可选的,所述选取策略是顺序号。
可选的,在根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数时,所述处理器还被促使:
从每个伪随机数序列中选取全局相同的顺序号对应的伪随机数。
可选的,在根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数时,所述处理器还被促使:
针对每个伪随机数序列,从所述伪随机数序列中全局相同的顺序号对应的伪随机数开始,选取若干个伪随机数;
组合选取的若干个伪随机数,并将组合结果作为从所述伪随机数序列中选取的伪随机数。
可选的,在选取若干个伪随机数时,所述处理器被促使:
逐个选取固定数量的伪随机数,所述固定数量大于1。
可选的,在根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值时,所述处理器被促使:
当所述协商对象排列在本数据持有方之后时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数;
当所述协商对象排列在本数据持有方之前时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数的相反数。
与前述数据统计方法的实施例相对应,本说明书还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序应用于联合N个数据持有方之间的数据进行数据统计,所述数据持有方持有待计算统计值的数据,该程序被处理器执行时实现以下步骤:
与其他数据持有方两两协商出共同的伪随机数序列,得到与协商对象一一对应的N-1个伪随机数序列;
根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,得到与协商对象一一对应的N-1个伪随机数;
根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,所述参与值是所述伪随机数或所述伪随机数的相反数;
对持有的数据和所述N-1个伪随机数的参与值进行求和计算;
将所述求和结果发送给所述第三方,以供第三方对所有数据持有方的求和结果进行求和计算,得到所述统计值;
其中,N是大于等于2的自然数。
可选的,所述与其他数据持有方两两协商出共同的伪随机数序列,包括:
与其他数据持有方两两协商出共同的种子,得到与协商对象一一对应的N-1个种子;
根据所述N-1个种子生成N-1个伪随机数序列。
可选的,所述选取策略由所述第三方在每次进行数据统计时指定。
可选的,还包括:
记录所述选取策略;
当再次接收到第三方指定的选取策略时,判断该接收到的选取策略是否与记录的选取策略冲突;
若不冲突,则执行根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数的步骤,并更新记录的选取策略。
可选的,所述与其他数据持有方两两协商出共同的伪随机数序列,包括:
与其他数据持有方预先两两协商出共同的种子,得到与协商对象一一对应的N-1个种子;
接收所述第三方在每次进行数据统计时指定的全局相同的计数值;
根据所述N-1个种子和所述计数值生成N-1个伪随机数序列。
可选的,还包括:
记录所述计数值;
当再次接收到第三方指定的计数值时,判断该计数值是否大于记录的计数值;
若大于,则执行根据所述N-1个种子和所述计数值生成N-1个伪随机数序列的步骤,并更新记录的计数值。
可选的,所述选取策略是固定的。
可选的,所述选取策略是顺序号。
可选的,所述根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,包括:
从每个伪随机数序列中选取全局相同的顺序号对应的伪随机数。
可选的,所述根据全局相同的选取策略分别从每个伪随机数序列中选取伪随机数,包括:
针对每个伪随机数序列,从所述伪随机数序列中全局相同的顺序号对应的伪随机数开始,选取若干个伪随机数;
组合选取的若干个伪随机数,并将组合结果作为从所述伪随机数序列中选取的伪随机数。
可选的,所述选取若干个伪随机数,包括:
逐个选取固定数量的伪随机数,所述固定数量大于1。
可选的,所述根据所述N个数据持有方之间的排列顺序,确定每个协商对象对应的伪随机数在参与运算时的参与值,包括:
当所述协商对象排列在本数据持有方之后时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数;
当所述协商对象排列在本数据持有方之前时,将所述协商对象对应的伪随机数在参与运算时的参与值确定为所述伪随机数的相反数。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。