一种数据统计方法和装置
技术领域
本公开涉及网络技术领域,特别涉及一种数据统计方法和装置。
背景技术
大数据时代,存在非常多的数据孤岛。例如,一个自然人的数据,可以分散存储于不同的企业中,而企业与企业之间由于竞争关系和用户隐私保护的考虑,并不是完全的互相信任,这就为涉及企业之间数据合作的统计工作造成了障碍。如何在充分保护企业核心数据隐私的前提下,既能够利用双方拥有的数据完成一些数据统计计算,又不会泄露企业各自的数据隐私安全,成为一个亟待解决的迫切问题。但是目前并没有很好的解决方案。
发明内容
有鉴于此,本公开提供一种数据统计方法和装置,以在保护两个数据拥有方的数据隐私的基础上,实现两方安全计算。
具体地,本说明书一个或多个实施例是通过如下技术方案实现的:
第一方面,提供一种数据统计方法,所述方法应用于联合本地数据方和合作数据方的数据进行数据统计,本地数据方具有待计算统计值的多个第一数据,所述多个第一数据分别对应不同的数据标识,合作数据方具有所述数据标识对应的多个第二数据,所述方法包括:
将所述多个第一数据分别进行同态加密,得到加密数据;
将所述多个第一数据对应的数据标识以及加密数据,发送至合作数据方;
接收合作数据方返回的加密统计值,所述加密统计值是所述合作数据方对标识交集中的各个数据标识对应的加密数据进行统计得到,所述标识交集是由所述多个第一数据对应的多个数据标识中选择的对应合作数据方参与数据统计的第二数据的标识;
对所述加密统计值进行同态解密,得到所述统计值。
第二方面,提供一种数据统计方法,所述方法应用于联合本地数据方和统计数据方的数据进行数据统计,统计数据方具有待计算统计值的多个第一数据,所述多个第一数据分别对应不同的数据标识,本地数据方具有所述数据标识对应的多个第二数据;所述方法包括:
接收统计数据方发送的数据标识和对应的加密数据,所述数据标识是统计数据方参与数据统计的多个第一数据对应的标识,所述加密数据是统计数据方对所述多个第一数据进行同态加密得到;
根据本地数据方参与数据统计的多个第二数据对应的数据标识、以及所述多个第一数据的数据标识,确定标识交集;
对所述标识交集中的各个数据标识对应的加密数据进行统计处理,得到加密统计值;
将所述加密统计值发送至统计数据方,以使得统计数据方对所述加密统计值进行同态解密得到统计值。
第三方面,提供一种数据统计方法,所述方法用于在本地数据方与合作数据方之间进行数据统计,所述本地数据方具有数据标识对应的第一数据,所述合作数据方存储同一所述数据标识对应的第二数据;并且,所述方法应用于在多个第一数据中获取统计值;所述方法包括:
将本地参与数据统计的多个第一数据进行同态加密,得到加密数据;
将所述多个第一数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个本地处理标识;
将对应同一个第一数据的所述本地处理标识和加密数据,发送至所述合作数据方,以使得所述合作数据方对本地处理标识进行对端私钥处理后生成第一密钥处理标识,并存储所述第一密钥处理标识和所述加密数据的对应关系;
接收所述合作数据方发送的第二处理标识,所述第二处理标识是所述合作数据方对参与数据统计的第二数据的数据标识进行对端私钥处理得到;
对所述第二处理标识进行本地私钥处理后,生成第二密钥处理标识,并将所述第二密钥处理标识发送至所述合作数据方;
接收所述合作数据方发送的加密统计值,所述加密统计值是所述合作数据方对第一密钥处理标识和第二密钥处理标识的标识交集对应的各个加密数据进行统计处理得到;
对所述加密统计值进行同态解密,得到统计值。
第四方面,提供一种数据统计方法,所述方法用于在本地数据方与统计数据方之间进行数据统计,所述统计数据方具有数据标识对应的第一数据,所述本地数据方存储同一数据标识对应的第二数据,并且,所述方法应用于在多个第一数据中获取统计值;所述方法包括:
接收所述统计数据方发送的多个对端处理标识、以及与所述多个对端处理标识分别对应的多个加密数据,所述对端处理标识是所述统计数据方对参与数据统计的第一数据的数据标识根据密钥交换协议进行对端私钥处理得到,所述加密数据是所述统计数据方对所述第一数据进行同态加密得到;
对每个本地处理标识根据密钥交换协议进行本地私钥处理,生成第一密钥处理标识,并存储所述第一密钥处理标识和对应的加密数据的对应关系;
将本地参与数据统计的多个第二数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个第二处理标识;
将所述第二处理标识发送至统计数据方,并接收所述统计数据方返回的第二密钥处理标识,所述第二密钥处理标识是所述统计数据方对第二处理标识进行对端私钥处理得到;
获取所述第一密钥处理标识和第二密钥处理标识的标识交集对应的各个加密数据,并对所述各个加密数据进行统计处理得到加密统计值;
将所述加密统计值发送至所述统计数据方,以使得所述统计数据方对所述加密统计值进行同态解密得到统计值。
第五方面,提供一种数据统计装置,所述装置用于在本地数据方与合作数据方之间进行数据统计,所述本地数据方具有数据标识对应的第一数据,所述合作数据方具有同一所述数据标识对应的第二数据;并且,所述装置应用于在多个第一数据中获取统计值;所述装置包括:
数据加密模块,用于将多个第一数据分别进行同态加密,得到加密数据;
数据发送模块,用于将所述多个第一数据对应的数据标识以及所述加密数据,发送至合作数据方;
数据接收模块,用于接收合作数据方返回的加密统计值,所述加密统计值是所述合作数据方对标识交集中的各个数据标识对应的加密数据进行统计得到,所述标识交集是由所述多个第一数据对应的多个数据标识中选择的对应合作数据方参与数据统计的第二数据的标识;
解密处理模块,用于对所述加密统计值进行同态解密,得到所述统计值。
第六方面,提供一种数据统计装置,所述装置用于在本地数据方与统计数据方之间进行数据统计,所述统计数据方具有待计算统计值的多个第一数据,所述多个第一数据分别对应不同的数据标识,本地数据方具有所述数据标识对应的多个第二数据;所述装置包括:
数据获取模块,用于接收统计数据方发送的数据标识和对应的加密数据,所述数据标识是统计数据方参与数据统计的多个第一数据对应的标识,所述加密数据是统计数据方对所述多个第一数据进行同态加密得到;
交集确定模块,用于根据本地数据方参与数据统计的多个第二数据对应的数据标识、以及所述多个第一数据的数据标识,确定标识交集;
统计处理模块,用于对所述标识交集中的各个数据标识对应的加密数据进行统计处理,得到加密统计值;
统计发送模块,用于将所述加密统计值发送至统计数据方,以使得统计数据方对所述加密统计值进行同态解密得到统计值。
第七方面,提供一种数据统计设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现以下步骤:
将所述多个第一数据分别进行同态加密,得到加密数据;
将所述多个第一数据对应的数据标识以及所述加密数据,发送至合作数据方;
接收合作数据方返回的加密统计值,所述加密统计值是所述合作数据方对标识交集中的各个数据标识对应的加密数据进行统计得到,所述标识交集是由所述多个第一数据对应的多个数据标识中选择的对应合作数据方参与数据统计的第二数据的标识;
对所述加密统计值进行同态解密,得到所述统计值。
第八方面,提供一种数据统计装置,所述装置用于在本地数据方与统计数据方之间进行数据统计,所述统计数据方存储数据标识对应的第一数据,所述本地数据方存储同一数据标识对应的第二数据,并且,所述装置应用于在多个第一数据中获取统计值;所述装置包括:
数据接收模块,用于接收所述统计数据方发送的多个对端处理标识、以及与所述多个对端处理标识分别对应的多个加密数据,所述对端处理标识是所述统计数据方对参与数据统计的第一数据的数据标识根据密钥交换协议进行对端私钥处理得到,所述加密数据是统计数据方对所述第一数据进行同态加密得到;
关系存储模块,用于对每个本地处理标识根据密钥交换协议进行本地私钥处理,生成第一密钥处理标识,并存储所述第一密钥处理标识和对应的加密数据的对应关系;
私钥加密模块,用于将本地参与数据统计的多个第二数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个第二处理标识;
标识发送模块,用于将所述第二处理标识发送至统计方数据方,并接收所述统计数据方返回的第二密钥处理标识,所述第二密钥处理标识是所述统计数据方对第二处理标识进行对端私钥处理得到;
统计处理模块,用于获取所述第一密钥处理标识和第二密钥处理标识的标识交集对应的各个加密数据,并对各个加密数据进行统计处理得到加密统计值;
数据发送模块,用于将所述加密统计值发送至所述统计数据方,以使得所述统计数据方对所述加密统计值进行同态解密得到统计值。
第九方面,提供一种数据统计装置,所述装置用于在本地数据方与合作数据方之间进行数据统计,所述本地数据方具有数据标识对应的第一数据,所述合作数据方存储同一所述数据标识对应的第二数据;并且,所述装置应用于在多个第一数据中获取统计值;所述装置包括:
数据加密模块,用于将本地参与数据统计的多个第一数据进行同态加密,得到加密数据;
标识处理模块,用于将所述多个第一数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个本地处理标识;
数据发送模块,用于将所述多个本地处理标识和所述加密数据,发送至所述合作数据方,以使得所述合作数据方对本地处理标识进行对端私钥处理后生成第一密钥处理标识,并存储所述第一密钥处理标识和加密数据的对应关系;
标识接收模块,用于接收所述合作数据方发送的第二处理标识,所述第二处理标识是所述合作数据方对参与数据统计的第二数据的数据标识进行对端私钥处理得到;
私钥处理模块,用于对所述第二处理标识进行本地私钥处理后,生成第二密钥处理标识,并将所述第二密钥处理标识发送至所述合作数据方;
统计接收模块,用于接收所述合作数据方发送的加密统计值,所述加密统计值是所述合作数据方对第一密钥处理标识和第二密钥处理标识的交集对应的各个加密数据进行统计处理得到;
解密数据模块,用于对所述加密统计值进行同态解密,得到统计值。
本说明书一个或多个实施例的数据统计方法和装置,通过将经过同态加密的数据发送至合作数据方,这样就可以使合作数据方对加密数据进行统计处理,只要本端进行同态解密即可得到相同的结果。该方式保护了本端的数据隐私安全,使得既实现了两个数据源结合的数据处理,而且又不会暴露数据隐私,在保护两个数据拥有方的数据隐私的基础上,实现了两方安全计算。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的一种数据统计方法的流程图;
图2为本说明书一个或多个实施例提供的一种数据统计方法的流程图;
图3为本说明书一个或多个实施例提供的一种数据统计装置的结构示意图;
图4为本说明书一个或多个实施例提供的一种数据统计装置的结构示意图;
图5为本说明书一个或多个实施例提供的一种数据统计装置的结构示意图;
图6为本说明书一个或多个实施例提供的一种数据统计装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
在大数据时代,数据的存储方式可以是垂直模式,即多个数据拥有方可以拥有同一个实体的不同属性信息,例如,同一个自然人的车险分在一个机构,该自然人的理赔金额在另一个机构。这种垂直模式的数据存储,可能导致在进行一些数据统计计算时,会涉及到多个数据拥有方,需要多个数据拥有方合作完成一次数据统计。然而,由于不同企业之间的竞争关系或者隐私保护的考虑,不能泄露企业各自的数据秘密。
本公开的例子中,旨在基于不同的数据拥有方的数据进行数据统计,同时又不会泄露数据拥有方各自的数据隐私。如下以一个示例性的应用场景详细描述该方法,但是该方法并不局限于该应用场景。
应用场景:
以车险的保险分的数据统计为例,并且该例子中可以有两个数据源,分别为:数据源A和数据源B。假设数据源A可以是一个数据机构,数据源B可以是一个保险机构,这两个数据源可以分别存储同一个车主的不同信息。
数据源A:假设该数据源A可以存储每个车主的车险分,车险分可以是对车主进行精准画像和风险分析后得到的分数,车险分的分数越高,可以表明风险越低。如表1所示,数据源A侧存储车险分的数据结构如下:
表1数据源A的数据结构
列名 |
类型 |
说明 |
示例 |
idcard_no |
string |
身份证号 |
******197309119564 |
score |
int |
车险分 |
510 |
数据源B:假设该数据源B可以存储每个车主的理赔信息,例如,车主的理赔信息可以包括理赔次数、理赔金额等。如表2所示,数据源B侧存储的每个车主的数据结构如下:
表2数据源B的数据结构
列名 |
类型 |
说明 |
示例 |
idcard_no |
string |
身份证号 |
******197309119564 |
gender |
string |
性别 |
female |
times |
int |
最近一年理赔次数 |
3 |
amount |
int |
理赔金额 |
3500 |
基于上述的应用场景,可以基于数据源A和数据源B的数据,共同完成一次数据统计工作。例如,可以进行的统计工作需求是“统计理赔次数大于5次的女性用户车险分的总和”,这个需求中,“理赔次数大于5次的女性用户”表明可以将数据源B中的数据作为统计值获取的过滤条件,“车险分的总和”表明可以对数据源A中的数据“score”进行求和统计。
基于表1所示的数据结构,假设数据源A拥有的车险分数据如下表3,其中,idcard_no可以是车主的身份证号,score可以是该车主的车险分。
表3数据源A的数据
idcard_no |
score |
1234567 |
490 |
2345678 |
501 |
3456789 |
530 |
基于表2所示的数据结构,假设数据源B拥有的数据如下表4:
表4数据源B的数据
idcard_no |
gender |
times |
amount |
1234567 |
男 |
3 |
5000 |
2345678 |
女 |
7 |
23000 |
3456789 |
女 |
6 |
16000 |
假设要基于上述表3和表4,统计理赔次数大于5次的女性用户车险分的总和。还可以看到,本次统计工作的统计数据“车险分”存储在数据源A,表3中的score这一列可以称为“统计列”,即要对这一列的数据进行统计,进行车险分的求和。而过滤条件中的“理赔次数”、“女性”都存储在数据源B,因此,需要数据源A和数据源B合作完成对车险分的求和统计。
在如下对数据统计方法的描述中,可以将拥有统计数据“车险分”的数据源A称为统计数据方,可以将另一个数据源B称为合作数据方。并且,上面提到过,这两个数据源可以分别存储同一个车主的不同信息,可以将数据源A中存储的车主信息(例如,车险分score)称为第一数据,将数据源B中存储的参数数据统计的车主信息(例如,性别、最近一年理赔次数、理赔金额)称为第二数据,该第二数据可以作为统计时的过滤条件。此外,数据源A和数据源B中都包括的身份证号idcard_no可以称为数据标识,即数据源A可以存储该数据标识对应的第一数据,数据源B可以存储该同一数据标识对应的第二数据。
图1示例了一种数据统计方法的流程,如图1所示,该方法可以包括:
在步骤100中,统计数据方将多个第一数据分别进行同态加密,得到加密数据。
本步骤中的多个第一数据,可以是统计数据方要参与数据统计的数据,这些数据可以是根据统计数据方的数据过滤条件选择得到。
在步骤102中,统计数据方将多个第一数据对应的数据标识以及加密数据,发送至合作数据方。
在步骤104中,合作数据方根据本地数据方参与数据统计的多个第二数据对应的数据标识、以及所述多个第一数据的数据标识,确定标识交集。
本步骤中,合作数据方可以根据本地过滤条件,选择得到要参与本次数据统计的第二数据,并得到这些第二数据对应的数据标识。结合在步骤102中接收到的统计数据方发送的数据标识,将这两部分数据标识的交集称为标识交集,标识交集中可以包括至少一个数据标识,标识交集中的每个数据标识对应的第一数据是统计数据方要参与数据统计的数据,且该数据标识对应的第二数据是合作数据方要参与数据统计的数据。
在步骤106中,合作数据方对所述标识交集中的各个数据标识对应的加密数据进行统计处理,得到加密统计值。
本步骤中,合作数据方可以对标识交集中的各个数据标识对应的加密数据进行统计,具体进行何种数据统计可以根据具体业务需求而定,比如可以是求和、求平均值等。并且,这里进行的统计处理是对加密数据进行的处理,而不是原始的第一数据,这种统计方式既不会暴露统计数据方的真实数据,又可以使得合作数据方在满足自身数据过滤条件下自由的进行所需的数据统计。
在步骤108中,合作数据方将所述加密统计值发送至统计数据方。
在步骤110中,统计数据方对加密统计值进行同态解密,得到统计值。
本步骤中,根据同态加密的特点,将返回的加密统计值进行同态解密,就可以得到与原始的第一数据统计得到的相同的统计值。
本例子的数据统计方法,通过将同态加密方式应用于两方的联合数据计算,使得合作数据方接收到的数据是同态加密后的数据,不会暴露统计数据方的真实数据,而且统计数据方在接收到加密统计值时,同态解密即可得到所需数据,非常方便,也保护了两个数据拥有方的数据隐私。
在另一个例子中,为了对两个数据拥有方的数据隐私提供更安全的保护,还可以在本地数据方和合作数据方之间进行数据传输时,对数据标识按照密钥交换协议进行加密处理。例如,统计数据方可以利用本地私钥对数据标识进行本地私钥处理后,发送至对端,以使得对端继续对数据标识进行对端私钥处理。统计数据方还可以接收合作数据方发送的经过对端私钥处理的数据标识,并继续对该数据标识进行本端私钥处理后,返回至合作数据方。经过双方对数据标识进行密钥交换协议的处理,可以避免暴露数据标识,提供更安全的保护。
如下的图2示例了一种数据统计方法的流程,该流程可以基于表3和表4,统计理赔次数大于5次的女性用户的车险分的总和,并且,该例子以将同态加密和密钥交换的处理进行结合为例,如图2所示,该方法可以包括:
在步骤200中,统计数据方对本地参与数据统计的多个第一数据,进行同态加密,得到对应第一数据的加密数据。
本例子中,数据源A是统计数据方,车险分score所在列可以称为统计列,其中每一个车险分可以称为第一数据。
在一个例子中,数据源A可以是统计表3中的统计列score中所有车险分的总和,即统计490、501、530这三个车险分的总和。可以将490、501、530这三个车险分称为“本地参与数据统计的三个第一数据”。
在另一个例子中,数据源A还可以根据预定的数据过滤条件,选择部分车险分参与求和统计。例如,可以选择501和530这两个车险分进行求和。
本步骤中,假设数据源A侧没有数据过滤条件,则可以对统计列中的所有第一数据进行同态加密,得到分别对应各个第一数据的加密数据。例如,车险分490的加密数据可以表示为Enc(490),车险分501的加密数据可以表示为Enc(501)。
在步骤202中,统计数据方将本地参与数据统计的多个第一数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个第一处理标识。
本步骤中,表3中与车险分score对应的身份证号idcard_no,可以称为与第一数据对应的数据标识。为了保护数据源A和数据源B双方的明细数据不泄露,可以利用密钥交换协议(例如,可以采用迪菲-赫尔曼密钥交换Diffie–Hellmankey exchange,简称“D–H”),对上述的数据标识进行处理。
例如,可以对idcard_no做hash,得到H(K)。同时数据源A可以生成密钥交换协议中自己的私钥α,并进行本地私钥处理,该处理可以是对H(k)做α指数运算,得到H(k)α,该H(k)α可以称为第一处理标识。
以数据源A将统计列的全部第一数据参与本次求和统计为例,经过本步骤的处理后,数据源A可以得到参与统计的各个第一数据对应的加密数据和第一处理标识。如下表5所示,H(k)α即Hash(idcard_no)α是第一处理标识,Enc(score)即加密数据。以表3中的第一位车主为例,该车主的车险分490,对应的加密数据是Enc(490),该车险分490对应的数据标识是1234567,对该数据标识进行哈希和本地私钥处理后,得到第一处理标识H(1234567)α。
表5第一处理标识和加密数据
Hash(idcard_no)<sup>α</sup> |
Enc(score) |
H(1234567)<sup>α</sup> |
Enc(490) |
H(2345678)<sup>α</sup> |
Enc(501) |
H(3456789)<sup>α</sup> |
Enc(530) |
在步骤204中,统计数据方将多个第一数据分别对应的第一处理标识和加密数据,发送至合作数据方。
本步骤中,数据源A可以将表5中的数据,发送至数据源B。
在步骤206中,合作数据方对所述第一处理标识根据密钥交换协议进行本地私钥处理,生成第一密钥处理标识,并存储所述第一密钥处理标识和加密数据的对应关系。
本步骤中,数据源B在接收到表5的数据后,根据密钥交换协议,可以生成数据源B本地的私钥β,并利用该私钥β对第一处理标识H(k)α进行本地私钥运算,即做指数运算,得到H(k)αβ。该H(k)αβ可以称为第一密钥处理标识。经过本步骤的β指数运算处理后,表5就可以变换为表6,如下:
表6第一密钥处理标识和加密数据
Hash(idcard_no)<sup>αβ</sup> |
Enc(score) |
H(1234567)<sup>αβ</sup> |
Enc(490) |
H(2345678)<sup>αβ</sup> |
Enc(501) |
H(3456789)<sup>αβ</sup> |
Enc(530) |
在步骤208中,合作数据方对本地参与数据统计的多个第二数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个第二处理标识。
本步骤中,数据源B也可以确定本地参与数据统计的多个第二数据。例如,可以是全部的数据,也可以是根据预定的过滤条件进行本地过滤得到的数据。
例如,预定的过滤条件是“理赔次数大于5次的女性用户”,根据该条件可以对表4中的数据做筛选,可以得到表4中后两行数据要参与统计。表4中数据源B中的性别和理赔次数可以称为第二数据,例如,“女、7”、“女、6”。这两个第二数据对应的数据标识可以分别是2345678和3456789。
数据源B可以对上述的数据标识分别做hash,得到H(K),再根据密钥交换协议,对对H(k)做β指数运算,该β是数据源B的私钥,得到H(k)β。该H(k)β可以称为第二处理标识。如下表7所示:
表7第二处理标识
Hash(idcard_no)<sup>β</sup> |
H(2345678)<sup>β</sup> |
H(3456789)<sup>β</sup> |
在步骤210中,合作数据方将所述第二处理标识发送至统计数据方。
本步骤中,数据源B可以将上述表7中的数据发送至数据源A。
在步骤212中,统计数据方对第二处理标识进行本地私钥处理后,生成第二密钥处理标识。
例如,数据源A接收到表7中的Hash(idcard_no)β后,可以再利用数据源A的本地私钥处理,生成第二密钥处理标识Hash(idcard_no)βα,如下表8所示。
表8第二密钥处理标识
Hash(idcard_no)<sup>βα</sup> |
H(2345678)<sup>βα</sup> |
H(3456789)<sup>βα</sup> |
在步骤214中,统计数据方将第二密钥处理标识发送至合作数据方。
在步骤216中,合作数据方获取第一密钥处理标识和第二密钥处理标识的标识交集对应的各个加密数据,并对各个加密数据进行统计处理得到加密统计值。
本步骤中,数据源B可以将表8中的第二密钥处理标识与表6中的第一密钥处理标识求取交集,数值相同的Hash(idcard_no)βα和Hash(idcard_no)αβ,表示对应的是同一个idcard_no,即该相同的idcard_no代表的车主既满足统计数据方参与统计的数据的过滤条件,也满足合作数据方参与统计数据的过滤条件。根据交集,并结合表6中的第一密钥处理标识和加密数据的对应关系,可以得到交集中的第一密钥处理标识对应的加密数据。如下表9所示,假设表9中包括交集部分,以及交集对应的各个加密数据。
表9标识交集和对应的加密数据
Hash(idcard_no)<sup>αβ</sup> |
Hash(idcard_no)<sup>βα</sup> |
Enc(score) |
H(2345678)<sup>αβ</sup> |
H(2345678)<sup>βα</sup> |
Enc(501) |
H(3456789)<sup>αβ</sup> |
H(3456789)<sup>βα</sup> |
Enc(530) |
根据表9,可以对上述标识交集中对应的各个加密数据进行统计求和,例如,Enc(501)+Enc(530),得到的数值可以称为加密统计值。
在步骤218中,合作数据方将所述加密统计值发送至统计数据方。
例如,数据源B可以将上述加密统计值“Enc(501)+Enc(530)”发送至数据源A。
在步骤220中,统计数据方对加密统计值进行同态解密,得到统计值。
例如,数据源A在接收到加密统计值“Enc(501)+Enc(530)”时,可以进行同态解密DEC(Enc(501)+Enc(530))=1031,该1031即为统计值,为理赔次数大于5次的女性用户的车险分的总和。
本例子的数据统计方法,在进行数据统计时,通过将经过同态加密的数据发送至合作数据方,这样就可以使合作数据方对加密数据进行统计处理,只要本端进行同态解密即可得到相同的结果。该方式保护了本端的数据隐私安全,使得既实现了两个数据源结合的数据处理,而且又不会暴露数据隐私。并且,通过采用密钥交换协议,也保护了所有过滤筛选字段的隐私安全。
此外,上述图2所示的流程,是以统计值是多个第一数据之和为例。在其他的例子中,本说明书一个或多个实施例的数据统计方法,还可以应用于其他统计计算的场景,比如,统计值还可以是求取多个第一数据的平均值。
以求取“理赔次数大于5次的女性用户的车险分的平均值”为例,还可以采用图2所示的处理流程,不同的是,数据源B在对各个加密数据进行统计处理时,还可以是对各个加密数据求取平均值,比如,Enc(501)+Enc(530)的数值可以再除以2,即得到加密统计值。而数据源A在接收到数据源B反馈的加密统计值后,可以进行同态解密即可得到平均值。
为了实现上述的方法,本说明书一个或多个实施例还提供了一种数据统计装置,该装置用于在本地数据方与合作数据方之间进行数据统计,所述本地数据方具有数据标识对应的第一数据,所述合作数据方具有同一所述数据标识对应的第二数据;并且,所述装置应用于在多个第一数据中获取统计值。如图3所示,该装置可以包括:数据加密模块31、数据发送模块32、数据接收模块33和解密处理模块34。
数据加密模块31,用于将多个第一数据分别进行同态加密,得到加密数据;
数据发送模块32,用于将所述多个第一数据对应的数据标识以及所述加密数据,发送至合作数据方;
数据接收模块33,用于接收合作数据方返回的加密统计值,所述加密统计值是所述合作数据方对标识交集中的各个数据标识对应的加密数据进行统计得到,所述标识交集是由所述多个第一数据对应的多个数据标识中选择的对应合作数据方参与数据统计的第二数据的标识;
解密处理模块34,用于对所述加密统计值进行同态解密,得到所述统计值。
为了实现上述的方法,本说明书一个或多个实施例还提供了一种数据统计装置,该装置用于在本地数据方与统计数据方之间进行数据统计,所述统计数据方具有待计算统计值的多个第一数据,所述多个第一数据分别对应不同的数据标识,本地数据方具有所述数据标识对应的多个第二数据。如图4所示,该装置可以包括:数据获取模块41、交集确定模块42、统计处理模块43和统计发送模块44。
数据获取模块41,用于接收统计数据方发送的数据标识和对应的加密数据,所述数据标识是统计数据方参与数据统计的多个第一数据对应的标识,所述加密数据是统计数据方对所述多个第一数据进行同态加密得到;
交集确定模块42,用于根据本地数据方参与数据统计的多个第二数据对应的数据标识、以及所述多个第一数据的数据标识,确定标识交集;
统计处理模块43,用于对所述标识交集中的各个数据标识对应的加密数据进行统计处理,得到加密统计值;
统计发送模块44,用于将所述加密统计值发送至统计数据方,以使得统计数据方对所述加密统计值进行同态解密得到统计值。
为了实现上述的方法,本说明书一个或多个实施例还提供了一种数据统计装置,如图5所示,该装置可以包括:数据加密模块51、标识处理模块52、数据发送模块53、标识接收模块54、私钥处理模块55、统计接收模块56和解密数据模块57。
数据加密模块51,用于将本地参与数据统计的多个第一数据进行同态加密,得到加密数据;
标识处理模块52,用于将所述多个第一数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个第一处理标识;
数据发送模块53,用于将所述多个第一处理标识和所述加密数据,发送至所述合作数据方,以使得所述合作数据方对第一处理标识进行对端私钥处理后生成第一密钥处理标识,并存储所述第一密钥处理标识和加密数据的对应关系;
标识接收模块54,用于接收所述合作数据方发送的第二处理标识,所述第二处理标识是所述合作数据方对参与数据统计的第二数据的数据标识进行对端私钥处理得到;
私钥处理模块55,用于对所述第二处理标识进行本地私钥处理后,生成第二密钥处理标识,并将所述第二密钥处理标识发送至所述合作数据方;
统计接收模块56,用于接收所述合作数据方发送的加密统计值,所述加密统计值是所述合作数据方对第一密钥处理标识和第二密钥处理标识的标识交集对应的各个加密数据进行统计处理得到;
解密数据模块57,用于对所述加密统计值进行同态解密,得到统计值。
在一个例子中,该装置还可以包括:数据过滤模块,用于根据预定的数据过滤条件,选择得到所述本地参与数据统计的多个第一数据。
为了实现上述的方法,本说明书一个或多个实施例还提供了一种数据统计装置,如图6所示,该装置可以包括:数据接收模块61、关系存储模块62、私钥加密模块63、标识发送模块64、统计处理模块65和数据发送模块66。
数据接收模块61,用于接收所述统计数据方发送的多个对端处理标识、以及与所述多个对端处理标识分别对应的多个加密数据,所述对端处理标识是所述统计数据方对参与数据统计的第一数据的数据标识根据密钥交换协议进行对端私钥处理得到,所述加密数据是统计数据方对第一数据进行同态加密得到;
关系存储模块62,用于对每个第一处理标识根据密钥交换协议进行本地私钥运算,生成第一密钥处理标识,并存储所述第一密钥处理标识和对应的加密数据的对应关系;
私钥加密模块63,用于将本地参与数据统计的多个第二数据分别对应的数据标识,根据密钥交换协议进行本地私钥处理,得到多个第二处理标识;
标识发送模块64,用于将所述第二处理标识发送至统计数据方,并接收所述统计数据方返回的第二密钥处理标识,所述第二密钥处理标识是所述统计数据方对第二处理标识进行对端私钥处理得到;
统计处理模块65,用于获取所述第一密钥处理标识和第二密钥处理标识的交集对应的各个加密数据,并对各个加密数据进行统计处理得到加密统计值;
数据发送模块66,用于将所述加密统计值发送至所述统计数据方,以使得所述统计数据方对所述加密统计值进行同态解密得到统计值。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述方法实施例所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。
例如,对应于上述方法,本说明书一个或多个实施例同时提供一种数据统计设备,该设备可以包括处理器、存储器、以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器通过执行所述指令,用于实现如下步骤:
将所述多个第一数据分别进行同态加密,得到加密数据;
将所述多个第一数据对应的数据标识以及所述加密数据,发送至合作数据方;
接收合作数据方返回的加密统计值,所述加密统计值是所述合作数据方对标识交集中的各个数据标识对应的加密数据进行统计得到,所述标识交集是由所述多个第一数据对应的多个数据标识中选择的对应合作数据方参与数据统计的第二数据的标识;
对所述加密统计值进行同态解密,得到所述统计值。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于服务端设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。