用于对加密数据进行多字符通配符搜索的系统和方法技术方案

技术编号:24289911 阅读:53 留言:0更新日期:2020-05-26 20:09
一种用于使用通配符关键字来对加密数据进行搜索的方法和系统。该方法包括:通过第一计算设备获得针对要被加密的数据的关键字,其中关键字具有固定长度;生成素数序列;针对关键字的每个字符,从素数序列中确定对应的一个素数;以及将关键字的字符的对应素数的乘积定义为加密数据的索引,其中可以使用通配符搜索关键字来对索引进行搜索。

The system and method of multi character wildcard search for encrypted data

【技术实现步骤摘要】
用于对加密数据进行多字符通配符搜索的系统和方法交叉引用在本公开的描述中引用和讨论了一些参考文献,其可以包括专利、专利申请和各种出版物。提供对这些参考文献的引用和/或讨论仅仅是为了阐明本公开的描述,而不是承认任何这种参考文献是本文所述公开内容的“现有技术”。本说明书中引用和讨论的所有参考文献均以引用的方式整体并入本文中,其程度如同通过引用单独并入每篇参考文献。
本公开总体上涉及数据加密和搜索加密数据,更具体地,涉及用于针对加密数据执行多字符通配符搜索以便仅从加密数据检索有关数据的系统和方法。
技术介绍
本文中所提供的
技术介绍
描述是出于大体上呈现本公开的背景的目的。在本
技术介绍
部分所描述范围内,目前署名的专利技术人的工作,以及在递交时可能无法被另外视为现有技术的描述的各方面,既不明确也不暗含为针对本公开的现有技术。数据泄漏频繁发生,给公司和客户带来了巨大损失。因此,越来越多的数据以加密格式存储。考虑到效率,通常通过对称加密方案(例如,三重数据加密标准(3DES)或高级加密标准(AES))来对数据进行加密。在一些情况下,可以通过非对称加密方案(例如,RSA(Rivest-Shamir-Adleman))对数据进行加密。为了实现可证明的安全性,所有常规加密方案都实现了不可区分性(IND)的安全性。特别地,概率多项式时间(PPT)攻击者无法基于加密的消息来区分两个密文。换句话说,对于没有解密密钥(对称设置的秘密密钥或非对称设置的私钥)的实体,密文是随机值。因此,如果通过常规加密方案对数据进行加密,则没有解密密钥的服务器将无法再对数据执行搜索。为了对加密数据进行搜索,数据所有者必须下载所有数据,在本地对数据进行解密,然后完全靠自己对明文进行搜索。这带来了以下问题。第一,通信开销较高,尤其是在大数据时代,数据大小可能处于千兆字节(GB)、太字节(TB)级别。第二,客户端侧必须存储下载的密文,这对于资源受限的设备而言是昂贵的。第三,客户端侧必须对所有密文进行解密,并且解密在计算上很繁重,由此给客户端带来了沉重负担,并且对于资源受限的设备而言将非常耗时甚至不切实际。因此,在本领域中存在如下未解决的需求:在客户端和服务器之间提供轻量级且易于使用的密钥管理。
技术实现思路
在某些方面,本公开涉及一种用于提供对加密数据进行通配符关键字搜索的方法。在某些实施例中,该方法包括:由第一计算设备提供数据加密密钥(DEK);由第一计算设备提供用于进行加密的数据,其中数据包括具有M个字符的关键字,字符中的每个字符均选自N个预定字符,M和N为正整数;由第一计算设备使用数据加密密钥将数据加密为加密数据;由第一计算设备使用密钥导出函数(KDF),根据数据加密密钥计算索引加密密钥(IEK);提供M×N个素数;基于索引加密密钥将M×N个素数置乱以形成素数序列;根据关键字中字符的位置和关键字中字符的值,为关键字中的每个字符计算序列值;根据序列值,针对关键字中的每个字符从素数序列中选择素数;计算关键字的索引,索引是针对关键字的字符选择的素数的乘积;以及将加密数据和索引上传到第二计算设备上,以便第三计算设备可以访问加密数据和索引,其中,第三计算设备具有数据加密密钥和密钥导出函数,且被配置为:根据数据加密密钥和密钥导出函数生成索引加密密钥;提供通配符搜索关键字,其中,通配符搜索关键字具有M个字符,该M个字符包括至少一个查询字符和至少一个通配符字符,并且至少一个查询字符选自N个预定字符;提供M×N个素数;基于索引加密密钥将M×N个素数置乱以形成素数序列;根据通配符搜索关键字中至少一个查询字符的位置和值,为至少一个查询字符计算查询序列值;根据查询序列值,针对通配符搜索关键字中的至少一个查询字符从素数序列中选择素数;计算通配符搜索关键字的查询索引,该查询索引是针对通配符搜索关键字的至少一个查询字符选择的素数的乘积;以及使用查询索引来查询存储在第二计算设备中的索引,以便获得与查询索引匹配的索引相对应的加密数据。在某些实施例中,搜索关键字包括多个通配符字符。在某些实施例中,通过以下公式计算关键字中第p位置处的字符的序列值:p×(M-1)+C%N,其中p是从0到N的整数,并且表示关键字中的字符的位置,C是在第p位置处的字符值,C%N是C除以N的余数。在某些实施例中,还可以通过以下公式计算关键字中第p位置处的字符的序列值:p×(M-1)+C,即使用C替代C%N,其提供相同的结果。在某些实施例中,第一计算设备是数据提供方,第二计算设备是存储服务器,第三计算设备是数据消费方;并且第一计算设备被配置为对第二计算设备执行存储操作,第三计算设备被配置为向第二计算机发送查询索引以及从第二计算设备接收搜索响应。在某些实施例中,方法还包括:以预定时间间隔更新第一计算设备和第二计算设备上的数据加密密钥。在某些实施例中,当更新数据加密密钥时,M×N素数矩阵的排列(permutation)将被改变。在这种情况下,方法还包括基于旧数据加密密钥和新数据加密密钥两者来恢复矩阵。在某些实施例中,可以用从新数据加密密钥(基于索引加密密钥)导出的新映射来替代计算映射素数的方式。因此,如果在第p位置处的字符c映射到素数p1(新数据加密密钥),则方法使用两个数据加密密钥来构建转换函数,以将第p位置处的c映射到素数p2(原始素数),使得数据加密密钥的更新不改变针对对应的关键字计算的索引。在某些实施例中,数据加密密钥是高级加密标准(AES)密钥,密钥导出函数是SHA-256散列值函数。在某些实施例中,N个预定字符包括数字0至9、小写字符a至z和大写字符A至Z中的至少一个。在某些实施例中,将M×N个素数置乱的步骤通过使用索引加密密钥作为种子的Fisher-Yates置乱算法来执行。在某些实施例中,对索引进行查询的步骤包括:对存储在第二计算设备中的索引执行关于查询索引的模操作;以及当查询索引和存储在第二计算设备中的索引中的一个索引的模为0时,将与索引中的所述一个索引相对应的加密数据从第二计算设备传送到第三计算设备。在某些方面中,本公开涉及一种用于提供对加密数据进行通配符关键字搜索的方法。该方法包括:通过第一计算设备获得要被加密的数据的关键字,其中该关键字具有固定长度;生成素数序列;针对该关键字的每个字符,从素数序列中确定对应的一个素数;以及将关键字的字符的对应素数的乘积定义为加密数据的索引,其中索引可以使用通配符搜索关键字来搜索。在某些实施例中,关键字具有M个字符,字符中的每个字符选自N个预定字符,M和N是正整数,并且素数序列包括M×N个素数。在某些实施例中,方法还包括:使用数据加密密钥(DEK)来对数据进行加密以获得加密数据;使用密钥导出函数(KDF)来处理数据加密密钥以获得索引加密密钥(IEK);从素数数字1开始获得顺序递增的M×N个素数;以及使用以索引加密密钥作为种子的随本文档来自技高网
...

【技术保护点】
1.一种用于提供对加密数据进行通配符关键字搜索的方法,包括:/n由第一计算设备提供数据加密密钥;/n由所述第一计算设备提供用于进行加密的数据,其中所述数据包括具有M个字符的关键字,所述字符中的每个字符选自N个预定字符,M和N为正整数;/n由所述第一计算设备使用所述数据加密密钥来将所述数据加密为加密数据;/n由所述第一计算设备使用密钥导出函数,根据所述数据加密密钥计算索引加密密钥;/n提供M×N个素数;/n基于所述索引加密密钥将所述M×N个素数置乱以形成素数序列;/n针对所述关键字中的每个字符,根据所述关键字中的所述字符的位置和所述关键字中的所述字符的值计算序列值;/n针对所述关键字中的每个字符,根据所述序列值从所述素数序列中选择素数;/n计算所述关键字的索引,所述索引是针对所述关键字的字符选择的素数的乘积;以及/n将所述加密数据和所述索引上传到第二计算设备上,以便第三计算设备能够访问所述加密数据和所述索引,/n其中,所述第三计算设备具有所述数据加密密钥和所述密钥导出函数,且被配置为:/n根据所述数据加密密钥和所述密钥导出函数生成所述索引加密密钥;/n提供通配符搜索关键字,其中所述通配符搜索关键字具有M个字符,所述M个字符包括至少一个查询字符和至少一个通配符字符,并且所述至少一个查询字符选自所述N个预定字符;/n提供所述M×N个素数;/n基于所述索引加密密钥将所述M×N个素数置乱以形成所述素数序列;/n根据所述通配符搜索查询中所述至少一个查询字符的位置和值,计算所述至少一个查询字符的查询序列值;/n针对所述通配符搜索关键字中的所述至少一个查询字符,根据所述查询序列值从所述素数序列中选择素数;/n计算所述通配符搜索关键字的查询索引,所述查询索引是针对所述通配符搜索关键字的所述至少一个查询字符选择的所述素数的乘积;以及/n使用所述查询索引来查询存储在所述第二计算设备中的所述索引,以便获得与同所述查询索引匹配的索引相对应的所述加密数据。/n...

【技术特征摘要】
20181119 US 16/195,7331.一种用于提供对加密数据进行通配符关键字搜索的方法,包括:
由第一计算设备提供数据加密密钥;
由所述第一计算设备提供用于进行加密的数据,其中所述数据包括具有M个字符的关键字,所述字符中的每个字符选自N个预定字符,M和N为正整数;
由所述第一计算设备使用所述数据加密密钥来将所述数据加密为加密数据;
由所述第一计算设备使用密钥导出函数,根据所述数据加密密钥计算索引加密密钥;
提供M×N个素数;
基于所述索引加密密钥将所述M×N个素数置乱以形成素数序列;
针对所述关键字中的每个字符,根据所述关键字中的所述字符的位置和所述关键字中的所述字符的值计算序列值;
针对所述关键字中的每个字符,根据所述序列值从所述素数序列中选择素数;
计算所述关键字的索引,所述索引是针对所述关键字的字符选择的素数的乘积;以及
将所述加密数据和所述索引上传到第二计算设备上,以便第三计算设备能够访问所述加密数据和所述索引,
其中,所述第三计算设备具有所述数据加密密钥和所述密钥导出函数,且被配置为:
根据所述数据加密密钥和所述密钥导出函数生成所述索引加密密钥;
提供通配符搜索关键字,其中所述通配符搜索关键字具有M个字符,所述M个字符包括至少一个查询字符和至少一个通配符字符,并且所述至少一个查询字符选自所述N个预定字符;
提供所述M×N个素数;
基于所述索引加密密钥将所述M×N个素数置乱以形成所述素数序列;
根据所述通配符搜索查询中所述至少一个查询字符的位置和值,计算所述至少一个查询字符的查询序列值;
针对所述通配符搜索关键字中的所述至少一个查询字符,根据所述查询序列值从所述素数序列中选择素数;
计算所述通配符搜索关键字的查询索引,所述查询索引是针对所述通配符搜索关键字的所述至少一个查询字符选择的所述素数的乘积;以及
使用所述查询索引来查询存储在所述第二计算设备中的所述索引,以便获得与同所述查询索引匹配的索引相对应的所述加密数据。


2.根据权利要求1所述的方法,其中,通过以下公式计算所述关键字中第p位置处的字符的序列值:p×(M-1)+C%N,其中p是从0到N中选择的整数,并且表示所述关键字中的字符的位置,C是在所述第p位置处的字符值,C%N是C除以N的余数。


3.根据权利要求1所述的方法,
其中,所述第一计算设备是数据提供方,所述第二计算设备是存储服务器,所述第三计算设备是数据消费方;并且
其中,所述第一计算设备被配置为对所述第二计算设备执行存储操作,所述第三计算设备被配置为向所述第二计算机发送所述查询索引并且从所述第二计算设备接收搜索响应。


4.根据权利要求1所述的方法,还包括:以预定时间间隔更新所述第一计算设备和所述第二计算设备上的所述数据加密密钥。


5.根据权利要求1所述的方法,其中,所述数据加密密钥是高级加密标准AES密钥,所述密钥导出函数是SHA-256散列值函数。


6.根据权利要求1所述的方法,其中,所述N个预定字符包括数字0至9、小写字符a至z和大写字符A至Z中的至少一个。


7.根据权利要求1所述的方法,其中,将所述M×N个素数置乱的步骤是通过使用所述索引加密密钥作为种子的Fisher-Yates置乱算法来执行的。


8.根据权利要求1所述的方法,其中,对所述索引进行查询的步骤包括:
对存储在所述第二计算设备中的所述索引执行关于所述查询索引的模操作;以及
当所述查询索引和存储在所述第二计算设备中的所述索引中的一个索引的模数为0时,将与所述索引中的所述一个索引相对应的加密数据从所述第二计算设备传送到所述第三计算设备。


9.一种用于提供对加密数据进行通配符关键字搜索的方法,包括:
由第一计算设备获得要被加密的数据的关键字,其中所述关键字具有固定长度;
生成素数序列;
针对所述关键字的每个字符,从所述素数序列中确定对应的一个素数;以及
将所述关键字的字符的对应素数的乘积定义为加密数据的索引,其中所述索引能够使用通配符搜索关键字来搜索。


10.根据权利要求9所述的方法,其中,所述关键字具有M个字符,所述字符中的每个字符选自N个预定字符,M和N是正整数,并且所述素数序列包括M×N个...

【专利技术属性】
技术研发人员:董秋香林岳勋高威苏志刚
申请(专利权)人:北京京东尚科信息技术有限公司京东美国科技公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1