基于数据混淆实现匿踪查询功能的系统及其方法与流程

文档序号:18621321发布日期:2019-09-06 22:31阅读:931来源:国知局
基于数据混淆实现匿踪查询功能的系统及其方法与流程

本发明涉及数据交换领域,尤其涉及用户数据查询领域,具体是指一种基于数据混淆实现匿踪查询功能的系统及其方法。



背景技术:

现有技术中,数据价值随着拥有者的增加而减少:

在数据共享应用中,数据累积是让企业不想分享他数据的重要原因。当一份数据只有自己有时他的市场价值为n,当企业不论是收费或免费将数据提供给另一个人时,他的价值就变成了n/2,随着知道此数据的人数越来越多,价值直线下降,最终会变成一个公开数据。

查询本身就是一种数据:

参与数据交换的双方都会存在这种担忧,数据输出者的担忧很直接,他提供了自己的数据,由于数据的可复制性,对方即知道了此数据。同样对于查询方而言一样存在这种数据泄漏,当查询方向输出方查询用户a的数据时,输出方即知道了a这个用户在查询方的业务场景中,而累积此数据便可使此类数据产生价值。

互联网贷款场景案例:

在信贷场景中,由于放贷公司数据不完整,所以会向第三方购需数据,比如有一家公司x,向信贷企业提供黑名单服务,x公司有一个用户逾期的库,信贷公司y想在x公司查询用户a是否在黑名单库中。当x收到y公司请求时,便知道用户a正在y公司申请贷款,如果有很多信贷公司都通过y公司来查询用户是否在黑名单中,那么y公司便可以知道一个用户是否存在多头借贷的风险。

用户特征数据共享场景案例:

一个手机app会根据不同的用户来显示不同的产品或广告,通常一个app只有用户的部分数据,为了达到更加精准的消息推送,需要有更广泛的用户标签。在数据市场中有很多提供用户画像的公司,这些公司的输入为用户标识如:手机号、身份证号、手机设备码等。需求方输入用户标识,提供方根据这些信息从自已的库中找到信息,输出给需求方。由于提供用户画像公司知道请求app的性质,如为交友类、贷款类、旅游类等,所以数据的提供方在提供给需求方数据的同时,也知道了这个用户正在使用什么app,对此数据按用户进行聚合可以衍生出用户的其他特征。



技术实现要素:

本发明的目的是克服了上述现有技术的缺点,提供了一种满足保密性、便捷性、难破解的基于数据混淆实现匿踪查询功能的系统及其方法。

为了实现上述目的,本发明的基于数据混淆实现匿踪查询功能的系统及其方法如下:

该基于数据混淆实现匿踪查询功能的系统,其主要特点是,所述的系统包括:

查询模块,用于通过对提供的用户标识id进行散列计算来查询数据;

数据输出服务模块,与所述的查询模块相连接,与查询模块通过https协议进行传输,用于进行数据输出;

所述的查询模块包括:

第一混淆单元,用于随机生成若干个假用户标识id,以及用于对数据保留预设位数的号码;

哈希单元,与所述的第一混淆单元相连接,用于对查询数据和混淆数据进行md5计算;

第一查询单元,与所述的哈希单元和数据输出服务模块相连接,用于将所述的保留预设位数的md5码的号码发生至数据输出服务模块;

验证单元,与所述的查询单元相连接,用于通过数据输出服务模块提供的随机数和公钥进行加密,在返回数据中查询加密后的字符串;

所述的数据输出服务模块包括:

接口单元,与所述的查询模块相连接,用于在查询模块和数据输出服务模块间传输数据;

第二查询单元,与所述的接口单元相连接,用于在数据库中匹配满足条件的预设位数的md5码;

第二混淆单元,与所述的第二查询单元相连接,用于随机生成若干个假md5码;

加密单元,与所述的第二混淆单元和接口单元相连接,用于对第二查询单元匹配到的md5码和第二混淆单元生成的假md5码添加随机数,并通过公钥进行加密,将加密后的数据返回至查询模块;

数据存储单元,与所述的第二查询单元相连接,用于存储待查数据。

较佳地,所述的加密单元的加密函数,具体为:

根据以下加密函数进行加密:

f(x)=encryption(哈希(md5_code+random_number));

其中,f(x)为加密函数,random_number为随机数,md5_code为md5码。

较佳地,所述的数据输出服务模块将随机数回传至查询模块。

较佳地,所述的预设位数为7位。

该利用上述系统实现基于数据混淆的匿踪查询控制的方法,其主要特点是,所述的方法包括以下步骤:

(1)所述的查询模块生成混淆数据,并对查询数据和混淆数据进行哈希计算;

(2)所述的查询模块隐藏若干位后数据,向数据输出服务模块发起查询;

(3)所述的数据输出服务模块向数据库查询匹配数据,生成混淆数据;

(4)所述的数据输出服务模块对真假数据进行加密并返回至查询模块;

(5)所述的验证单元通过数据输出服务模块提供的随机数和公钥进行加密,在返回数据中查询是否存在加密后的字符串,如果是,则对方包含该用户的数据;否则,对方不包含该用户的数据。

较佳地,所述的步骤(1)具体包括以下步骤:

(1.1)所述的哈希单元对用户标识id进行md5计算;

(1.2)所述的第一混淆单元随机生成若干个假用户标识id的md5码。

较佳地,所述的步骤(2)具体包括以下步骤:

(2.1)所述的第一混淆单元对其生成的假md5码和哈希单元计算后的md5码隐藏若干位数据,仅保留预设位数的号码;

(2.2)所述的第一查询单元将所述的保留预设位数的md5码的号码发生至数据输出服务模块。

较佳地,所述的步骤(3)具体包括以下步骤:

(3.1)所述的第二查询单元在数据库中匹配满足条件的预设位数的md5码,并保存至数据存储单元;

(3.2)所述的第二混淆单元随机生成若干个假md5码。

较佳地,所述的步骤(4)具体包括以下步骤:

(4.1)所述的加密单元对第二查询单元匹配到的md5码和第二混淆单元生成的假md5码添加随机数,并通过公钥进行加密;

(4.2)所述的数据输出服务模块将加密后的数据返回至查询模块。

采用了本发明的基于数据混淆实现匿踪查询功能的系统及其方法,对10亿随机生成的身份证号md5做测试,前7位相同的最大号码数是19,平均相同数为4,8%的号码前7位唯一。然而,进行反向枚举的前提是用户知道所有用户标识id,而实际情况中有完整库是件非常困难的事。本发明中对返回结果中加入假数据在碰撞概率非常低,而且经计算在实际情况中碰撞的概率低至微乎其微,发生碰撞几乎不可能,因此本方法确保了用户的保密性和隐私性。

附图说明

图1为本发明的基于数据混淆实现匿踪查询功能的系统的结构图。

图2为本发明的实现基于数据混淆的匿踪查询控制的方法的流程图。

具体实施方式

为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。

本发明的该基于数据混淆实现匿踪查询功能的系统,其中包括:

查询模块,用于通过对提供的用户标识id进行散列计算来查询数据;

数据输出服务模块,与所述的查询模块相连接,与查询模块通过https协议进行传输,用于进行数据输出;

所述的查询模块包括:

第一混淆单元,用于随机生成若干个假用户标识id,以及用于对数据保留预设位数的号码;

哈希单元,与所述的第一混淆单元相连接,用于对查询数据和混淆数据进行md5计算;

第一查询单元,与所述的哈希单元和数据输出服务模块相连接,用于将所述的保留预设位数的md5码的号码发生至数据输出服务模块;

验证单元,与所述的查询单元相连接,用于通过数据输出服务模块提供的随机数和公钥进行加密,在返回数据中查询加密后的字符串;

所述的数据输出服务模块包括:

接口单元,与所述的查询模块相连接,用于在查询模块和数据输出服务模块间传输数据;

第二查询单元,与所述的接口单元相连接,用于在数据库中匹配满足条件的预设位数的md5码;

第二混淆单元,与所述的第二查询单元相连接,用于随机生成若干个假md5码;

加密单元,与所述的第二混淆单元和接口单元相连接,用于对第二查询单元匹配到的md5码和第二混淆单元生成的假md5码添加随机数,并通过公钥进行加密,将加密后的数据返回至查询模块;

数据存储单元,与所述的第二查询单元相连接,用于存储待查数据。

作为本发明的优选实施方式,所述的加密单元的加密函数,具体为:

根据以下加密函数进行加密:

f(x)=encryption(哈希(md5_code+random_number));

其中,f(x)为加密函数,random_number为随机数,md5_code为md5码。

作为本发明的优选实施方式,所述的数据输出服务模块将随机数回传至查询模块。

作为本发明的优选实施方式,所述的预设位数为7位。

本发明的该利用上述系统实现基于数据混淆的匿踪查询控制的方法,其中包括以下步骤:

(1)所述的查询模块生成混淆数据,并对查询数据和混淆数据进行哈希计算;

(1.1)所述的哈希单元对用户标识id进行md5计算;

(1.2)所述的第一混淆单元随机生成若干个假用户标识id的md5码;

(2)所述的查询模块隐藏若干位后数据,向数据输出服务模块发起查询;

(2.1)所述的第一混淆单元对其生成的假md5码和哈希单元计算后的md5码隐藏若干位数据,仅保留预设位数的号码;

(2.2)所述的第一查询单元将所述的保留预设位数的md5码的号码发生至数据输出服务模块;

(3)所述的数据输出服务模块向数据库查询匹配数据,生成混淆数据;

(3.1)所述的第二查询单元在数据库中匹配满足条件的预设位数的md5码,并保存至数据存储单元;

(3.2)所述的第二混淆单元随机生成若干个假md5码;

(4)所述的数据输出服务模块对真假数据进行加密并返回至查询模块;

(4.1)所述的加密单元对第二查询单元匹配到的md5码和第二混淆单元生成的假md5码添加随机数,并通过公钥进行加密;

(4.2)所述的数据输出服务模块将加密后的数据返回至查询模块;

(5)所述的验证单元通过数据输出服务模块提供的随机数和公钥进行加密,在返回数据中查询是否存在加密后的字符串,如果是,则对方包含该用户的数据;否则,对方不包含该用户的数据。

本发明的具体实施方式中,匿踪查询解决的问题为:在x通过y查询特征a相关联信息时,不让y知道x要查询的特征a是什么,从而使y无法对查询进行累积,减少信息的泄漏。同时y在此过程中也在极低的概率下泄漏出自己的数据。

本发明中供方为数据交换双方中输出数据的一方,即数据输出服务模块。需求方为数据交换双方中获得数据的一方,即查询模块。用户标识id可以是身份证号、手机号等用来唯一标识用户的值。

场景假设为需求方通过身份证号来供方查询指定用户是否为黑名单用户。

供方对身份证号进行散列,散列的算法要保证低碰撞率(假设我们以md5方式进行散列)。供方对身份证号进行散列后作为查询key进行存储;

需方现在查询a用户是否在供方黑名单库中,先将身份证号进行md5,然后再随机生成若干个假的身份证号的md5(比如9个),对这10个md5值去掉后面若干位,如:只保留前面的7位;

将10个只有7位md5码的号码发送给供方,供方在自己库中匹配前7位符合的用户,比如取到8位;

供方再随机生成若干个假的md5码(如13个),共20个号码,对这20个完整号码添加随机数后用公钥进行加密,返回给需方;

需方取用户a的md5码用供方提供的随机数和公钥加密,然后在20个号码中查询是否存在加密后的字符串;如果存在,则说明对方有此用户的数据,反之没有。

将身份证号md5的目的是为了增加枚举的成本,如果只隐藏身份证号的若干位,那么一方面号码本身有明确信息,如前有地区信息,出生信息等;另一方面可以对缺失位进行小范围的枚举。如果用md5后枚举难度为36^25(只显示7位那md5被隐藏了25位,每位有36种可能);

发送请求时加入假信息目的是为了即使对方有完整的库,且前7位只匹配到1位,那么也无法判断这1位是否是需方真正要查的那一位;

供方返回时加密方式:

f(x)=encryption(哈希(md5_code+random_number));

其中,random_number将会回传给需方,以便让需方用相同的方法进行加密

随机数的作用是为了让每次返回的加密方式都是动态的,这样提高了枚举的成本,即如果有一个固定的加密算法,那么需方可以预先把13亿身份证号加密算好,然后在返回时即在库中查找,然后知道实际用户是哪个。如果每次返回加密算法不一样,那就必须重算一次所有13亿,才有可能知道加密的原始内容是什么,他的成本会变得很高。

供方在返回时加入假的数据:因为用户如果有完整的库那在不计时间成本的情况下他是可以知道最终返回值是什么的,但如果在返回值中加入假的,那么即使知道了原始值也无法确定是否是真实值。

需方在返回结果中取交集最终确认对方是否存在他想查询的用户。这里可能会因为供方返回时加入的假的数据,而造成假数据碰撞到真数据,即用户造了一个假数据,但这个假数据正好是用户真的数据。在此案例中碰撞的概率为:n/(13×10^8),其中n为加入的假数据个数,因为md5后没有号码已被打散,所以是分母是所有身份证号。

系统架构图如图1所示,系统主要分两个部分,一个为查询的sdk,另一个为数据输出服务。模块包括:

1)哈希单元:用来生成查询数据哈希值;

2)混淆单元:包括第一混淆单元和第二混淆单元;用来生成混淆数据,混淆数据根据哈希规则的不同而有所不同,数据不能通过其他方式来验证真假数据;

3)加密单元:供方对返回数据进行随机加密(被加密值中加入随机数);

4)验证单元:用来最终验证从供方返回的数据是否有查询数据;

5)数据存储单元:用来存储待查数据;

6)查询单元块:包括第一查询单元和第二查询单元;sdk方用来向数据输出服务发起查询,数据输出服务用于查询数据库。

系统通过https协议来进行查询。

采用了本发明的基于数据混淆实现匿踪查询功能的系统及其方法,对10亿随机生成的身份证号md5做测试,前7位相同的最大号码数是19,平均相同数为4,8%的号码前7位唯一。然而,进行反向枚举的前提是用户知道所有用户标识id,而实际情况中有完整库是件非常困难的事。本发明中对返回结果中加入假数据在碰撞概率非常低,而且经计算在实际情况中碰撞的概率低至微乎其微,发生碰撞几乎不可能,因此本方法确保了用户的保密性和隐私性。

在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1