CN115168909A - 一种基于比较索引的密文数据范围查询方法和系统 - Google Patents

一种基于比较索引的密文数据范围查询方法和系统 Download PDF

Info

Publication number
CN115168909A
CN115168909A CN202211086567.6A CN202211086567A CN115168909A CN 115168909 A CN115168909 A CN 115168909A CN 202211086567 A CN202211086567 A CN 202211086567A CN 115168909 A CN115168909 A CN 115168909A
Authority
CN
China
Prior art keywords
data
plaintext
query
ciphertext
algorithm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211086567.6A
Other languages
English (en)
Other versions
CN115168909B (zh
Inventor
张李军
潘光明
张�浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Basebit Shanghai Information Technology Co ltd
Wing Fang Jianshu Beijing Information Technology Co ltd
Original Assignee
Basebit Shanghai Information Technology Co ltd
Wing Fang Jianshu Beijing Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Basebit Shanghai Information Technology Co ltd, Wing Fang Jianshu Beijing Information Technology Co ltd filed Critical Basebit Shanghai Information Technology Co ltd
Priority to CN202211086567.6A priority Critical patent/CN115168909B/zh
Publication of CN115168909A publication Critical patent/CN115168909A/zh
Application granted granted Critical
Publication of CN115168909B publication Critical patent/CN115168909B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于比较索引的密文数据范围查询方法和系统,从数据提供者提供的数据及待查询列数据开始处理,首先生成密文数据内容和待查询列的比较索引,存储在密文数据库存储模块中;然后数据查询者根据查询范围发起查询,范围查询陷门生成模块产生出查询陷门,密文数据库查询模块利用查询陷门进行密文范围查询获得数据库表行号集合ID;数据解密模块解密ID中对应行所需的密文数据列,最终将明文结果返回给数据查询者。本发明的查询算法高效并能并行化地执行,算法泄露的明文信息比特数少,适用于大规模数据量下的范围查询业务场景;同时基于按比特的索引大小比较算法能够保证范围查询结果的准确性。

Description

一种基于比较索引的密文数据范围查询方法和系统
技术领域
本发明涉及数据安全存储与共享技术领域,尤其涉及一种基于比较索引的密文数据范围查询方法和系统。
背景技术
目前许多云服务厂商为企业和个人提供了方便和实惠的数据外包存储服务,由于网络攻击导致数据泄露的事件时有发生,企业和个人更倾向于将自己的数据进行加密后存储到云服务器中。虽然加密给数据存储带来了安全保障,但同时也给数据的使用带来了困难。比如想要在这些密文数据上进行查询操作,这对于常规加密算法生成的密文数据是难以实现的。针对关键字查询,人们发明了可搜索加密这样的特殊加密算法,能够在密文数据中搜索出含有该关键字的数据。实际应用场景中,除了关键字查询,还有一类重要的查询就是范围查询。查询者通过提交查询范围的起点和终点,期望在密文数据库中搜索出满足该查询范围的数据。这其中的关键就是设计出高效和安全的密文数据范围查询算法。
要在密文数据上进行数据的范围查询就要求能根据密文来比较出对应明文数据的大小,学者们提出了几类解决方案,如Stefanov等人提出的基于不经意随机访问内存方案,Gentry等人提出的全同态加密方案以及Agrawal等人提出的保序加密方案。目前最有效的一类方案是保序加密,即密文序列保持着相应明文序列的顺序,云服务器通过比较密文和查询者提供的查询范围的陷门就可以知道密文是否在要求的查询范围之内。我们可以将保序加密细分为三种:一种是直接的保序加密,Agrawal等人于2004年提出的方案就属于这一种,密文是直接根据明文的顺序来进行排序的,没有额外的索引结构,这种方案的安全性没有严格的定义和证明。Hore等人利用分桶的思想于2004年提出带索引结构的保序加密,Liu等人于2012年提出了基于线性索引结构的保序加密。Roche于2016年提出了基于部分保序编码的树型结构的保序加密。这些带索引结构的保序加密方案中,对应明文的大小关系可以通过索引的大小来得到,而明文内容的加密可以采用独立的加密算法来实现。这类型的保序加密安全性不高,而且基于分桶思想的方案返回的查询结果有一定的误差(因为同一个桶里的元素无法比较大小)。第三种保序加密同样基于索引结构,称为揭序加密,最早于2015年由Boneh等人提出。这种加密方式的密文具有一种能揭示明文大小的索引结构。这种索引并不能直接展示出大小关系,而是通过一个特殊设计的比较函数来计算出两个索引的大小。2016年,Chenette和Cash等人对揭序加密进行了效率上的改进,并且通过定义泄露函数来严格证明方案的安全性。
上述现有方案存在以下问题:
1、密文索引尺寸扩展较大,方案需要多轮的交互。目前揭序加密方案虽然提高了保序加密的算法安全性(服务器只能知晓密文大小的比较结果),但比较索引的尺寸扩展过大(达到明文比特长度的100倍以上),并且方案需要多轮交互才能比较出两个密文值的大小,影响了方案的效率和实用性。
2、范围查询结果的准确率低,比如效率较高的基于分桶思想和矩阵密钥的保序加密方法,它们查询结果的准确性却比较低,误差甚至达到了40%以上,难以满足实际场景中的准确度需求。
3、保序加密的安全性不足,泄露的明文比特较多或者攻击者能够从范围查询陷门中恢复出陷门生成密钥。另外,由于保序加密的很多方案并没有严格定义出明文数据的泄露信息,导致无法准确衡量方案的安全性。
4、相同查询范围生成的查询陷门相同,不具备变化性。现有技术方案中范围查询陷门的生成是确定性的算法,攻击者可以利用这种确定性来发起重放攻击等非法查询。
发明内容
为了解决上述至少一个技术问题,本发明提出了一种高效安全的基于比较索引的密文数据范围查询方法和系统。
本发明第一方面提出了一种基于比较索引的密文数据范围查询方法,所述方法包括:
获取填有多条明文数据内容的数据库明文表以及数据加密密钥,采用数据加密密钥并利用第一算法对数据库明文表进行加密,得到对应的密文数据库表;
从数据库明文表中获取待查询列,利用第二算法对数据库明文表的待查询列生成比较索引,将生成的比较索引加入所述密文数据库表的比较索引列;
获取数据查询者提供的查询范围,基于查询范围并通过第三算法计算生成范围查询陷门;
基于范围查询陷门,并通过第四算法查询所述密文数据库表中的比较索引列,得到查询结果;
基于查询结果获取对应的数据解密密钥,并从密文数据库表中获取对应的密文数据内容,基于数据解密密钥并通过第五算法对密文数据内容进行解密,输出明文查询结果。
本方案中,获取填有多条明文数据内容的数据库明文表以及数据加密密钥,采用数据加密密钥并利用第一算法对数据库明文表进行加密,得到对应的密文数据库表,具体包括:
预设数据库明文表包括由多条明文数据内容,每条明文数据内容包括多个明文列项数据;
基于不同的明文数据内容分别生成对应的数据加密密钥;
采用数据加密密钥并按照第一算法对相应明文数据内容中的明文列项数据进行加密得到对应的密文列项数据,将密文列项数据置于密文数据库表的密文列中,同时将数据加密密钥与明文数据内容在数据库明文表中的位置标识信息进行关联存储在密钥库中;
其中,所述第一算法的执行过程为:
预设数据库明文表中的明文列项数据为M,数据加密密钥为K;
根据算法C=Enc(M,K),计算出对应的密文列项数据C,其中Enc为对称加密算法,优选为AES或国密SM4算法。
本方案中,从数据库明文表中获取待查询列,利用第二算法对数据库明文表的待查询列生成比较索引,具体包括:
预设数据库明文表中待查询列的明文列项数据为{M_1,M_2,…, M_n};
预设安全参数为
Figure 303137DEST_PATH_IMAGE001
,随机选择
Figure 54055DEST_PATH_IMAGE002
比特长度的索引生成密钥
Figure 161820DEST_PATH_IMAGE003
设伪随机函数
Figure 74412DEST_PATH_IMAGE004
,其中
Figure 697155DEST_PATH_IMAGE005
Figure 986185DEST_PATH_IMAGE006
分别表示
Figure 745193DEST_PATH_IMAGE007
比特和m-1 比特长度的二进制字符串,
Figure 359845DEST_PATH_IMAGE008
表示模3的整数剩余类环;
对每个明文列项数据M,M取自于集合{M_1,M_2,…, M_n},设M的二进制表示为
Figure 204305DEST_PATH_IMAGE009
,令
Figure 765867DEST_PATH_IMAGE010
表示整数集合{1, 2, …,m},对
Figure 910541DEST_PATH_IMAGE011
,计算:
Figure 899356DEST_PATH_IMAGE012
,符号
Figure 231112DEST_PATH_IMAGE013
表示字符串级联,
Figure 658682DEST_PATH_IMAGE014
表示取模运算符;
计算出明文列项数据M的比较索引为
Figure 595545DEST_PATH_IMAGE015
输出索引生成密钥
Figure 552000DEST_PATH_IMAGE016
和待查询列的所有明文列项数据的比较索引,并基于所有明 文列项数据的比较索引形成比较索引列。
本方案中,获取数据查询者提供的查询范围,基于查询范围并通过第三算法计算生成范围查询陷门,具体包括:
预设安全参数为
Figure 105472DEST_PATH_IMAGE017
,随机选择
Figure 274416DEST_PATH_IMAGE018
比特长度的陷门生成密钥
Figure 659261DEST_PATH_IMAGE019
获取查询请求信息
Figure 521038DEST_PATH_IMAGE020
,所述查询请求信息包括查询范围和token信息,
Figure 827385DEST_PATH_IMAGE021
表示查询范围的上下区间值,
Figure 800021DEST_PATH_IMAGE022
本次数据查询者的请求令牌;
选择伪随机函数
Figure 242634DEST_PATH_IMAGE023
,其中
Figure 9733DEST_PATH_IMAGE024
表示token的取值空间,
Figure 600115DEST_PATH_IMAGE025
表示m维的
Figure 87424DEST_PATH_IMAGE026
向量,
Figure 384544DEST_PATH_IMAGE027
表示模3的整数剩余类环;
根据查询请求信息
Figure 853703DEST_PATH_IMAGE028
,利用第三算法计算:
Figure 72326DEST_PATH_IMAGE029
,
Figure 652343DEST_PATH_IMAGE030
Figure 335128DEST_PATH_IMAGE031
表示查询陷门生成算法;
Figure 912871DEST_PATH_IMAGE032
Figure 884369DEST_PATH_IMAGE033
Figure 736919DEST_PATH_IMAGE034
,其中符号
Figure 274210DEST_PATH_IMAGE035
表示m维向量按分量模3相加;
输出范围查询陷门
Figure 819592DEST_PATH_IMAGE036
本方案中,基于范围查询陷门,并通过第四算法查询所述密文数据库表中的比较索引列,得到查询结果,具体包括:
对两个索引值
Figure 75124DEST_PATH_IMAGE037
Figure 669048DEST_PATH_IMAGE038
,定义索引比较函数
Figure 264108DEST_PATH_IMAGE039
Figure 245971DEST_PATH_IMAGE040
,
Figure 926482DEST_PATH_IMAGE041
, 如果
Figure 386413DEST_PATH_IMAGE042
,输出0;
否则令
Figure 632718DEST_PATH_IMAGE043
Figure 519903DEST_PATH_IMAGE044
的最小正整数,若满足
Figure 484448DEST_PATH_IMAGE045
,则输出-1
若满足
Figure 951332DEST_PATH_IMAGE046
,则输出1;
比较函数输出1表示
Figure 317722DEST_PATH_IMAGE047
对应的明文数据值大于
Figure 579071DEST_PATH_IMAGE048
对应的明文数据值,-1表示
Figure 30912DEST_PATH_IMAGE049
对应 的明文数据值小于
Figure 832646DEST_PATH_IMAGE050
对应的明文数据值,0则表示两者相等;
对查询陷门
Figure 787963DEST_PATH_IMAGE051
,初始化集合ID为空,进行下面的计算:
还原范围查询的端点值
Figure 548109DEST_PATH_IMAGE052
Figure 221667DEST_PATH_IMAGE053
,符号
Figure 561512DEST_PATH_IMAGE054
表示m维向量按分量模3相 减;
对密文数据库表中查询列的每个索引值
Figure 840178DEST_PATH_IMAGE055
,利用比较函数计算函数值:
Figure 505646DEST_PATH_IMAGE056
Figure 400921DEST_PATH_IMAGE057
如果
Figure 75616DEST_PATH_IMAGE058
Figure 474367DEST_PATH_IMAGE059
,则表示
Figure 45157DEST_PATH_IMAGE060
对应的明文
Figure 896569DEST_PATH_IMAGE061
在查询的范围
Figure 109376DEST_PATH_IMAGE062
内;
将满足条件的
Figure 97055DEST_PATH_IMAGE063
所在的行号id添加到集合ID中;
输出集合ID作为查询结果。
本方案中,基于查询结果获取对应的数据解密密钥,并从密文数据库表中获取对应的密文数据内容,基于数据解密密钥并通过第五算法对密文数据内容进行解密,输出明文查询结果,具体包括:
验证查询是否有效,计算
Figure 127762DEST_PATH_IMAGE064
,如果等于
Figure 263209DEST_PATH_IMAGE065
,表示查询有效,进行后续解密,否 则输出“查询无效”,算法退出;
预设需要输出的明文数据集合为PlainData,初始化PlainData为空,对每个
Figure 14127DEST_PATH_IMAGE066
,执行:
获取id对应行的数据解密密钥DK,根据实际需要解密这一行中某一列的的密文数据,得到明文数据Plain=Dec(Cipher,DK),其中Cipher表示需要的那一列的密文数据内容,Dec表示对称解密算法;
将明文数据Plain添加到明文数据集合PlainData中;
输出明文数据集合PlainData。
本方案中,在将生成的比较索引加入所述密文数据库表的比较索引列之后,所述方法还包括:
预设在预设时间段内有多个数据查询者提出查询请求信息,每个数据查询者的查询请求信息中包括各自的查询范围;
对多个查询范围进行取交集处理;
预设待查询列的数据依据对应的刻度线取值,统计在每个刻度参与交集的数据查询者数量;
将参与交集的数据查询者数量超过第一预设阈值的刻度判定为合并查询刻度;
将所有合并查询刻度进行并集处理,得到合并查询刻度的并集范围;
基于合并查询刻度的并集范围进行查询,得到合并明文查询结果;
基于每个数据查询者,判断其查询范围是否包含合并查询刻度,如果包括,则从合并明文查询结果中提取所有包含的合并查询刻度对应的明文查询结果,对所有包含的合并查询刻度以外的其它查询刻度,则执行第四算法查询过程;如果不包括,则基于对应数据查询者的查询范围直接执行第四算法查询过程。
本发明第二方面还提出一种基于比较索引的密文数据范围查询系统,用于实现上述的基于比较索引的密文数据范围查询方法,所述系统包括:
密钥管理和授权模块,负责生成和管理数据加解密密钥和比较索引生成密钥,在数据查询者授权的前提下,提供比较索引生成密钥和数据解密密钥;
数据加密模块,负责从密钥管理和授权模块获取数据加密密钥,运行第一算法对数据库明文表中的明文数据内容进行加密,产生密文数据内容;
比较索引构造模块,负责从密钥管理和授权模块获取比较索引生成密钥,运行第二算法对数据库明文表中的待查询的明文列项数据生成比较索引;
范围查询陷门生成模块,负责接收数据查询者的查询范围,从密钥管理和授权模块获取陷门生成密钥,运行第三算法生成对应的范围查询陷门;
密文数据库查询模块,负责从范围查询陷门生成模块接收查询陷门,运行第四算法从密文数据库表中比较索引列进行查询,获得查询结果;
数据解密模块,负责从密文数据库查询模块接收查询结果,从密钥管理和授权模块获取比较索引生成密钥和数据解密密钥,运行第五算法验证本次查询的有效性,若有效则解密出明文数据内容,返回给数据查询者;
密文数据库存储模块,负责统一存储密文数据库表,供密文数据库查询模块进行查询以及为数据解密模块提供密文数据内容。
本方案中,数据加密模块还执行以下步骤:
预设数据库明文表包括由多条明文数据内容,每条明文数据内容包括多个明文列项数据;
基于不同的明文数据内容分别生成对应的数据加密密钥;
采用数据加密密钥并按照第一算法对相应明文数据内容中的明文列项数据进行加密得到对应的密文列项数据,将密文列项数据置于密文数据库表的密文列中,同时将数据加密密钥与明文数据内容在数据库明文表中的位置标识信息进行关联存储在密钥库中;
其中,所述第一算法的执行过程为:
预设数据库明文表中的明文列项数据为M,数据加密密钥为K;
根据算法C=Enc(M,K),计算出对应的密文列项数据C,其中Enc为对称加密算法,优选为AES或国密SM4算法。
本方案中,比较索引构造模块还执行以下步骤:
预设数据库明文表中待查询列的明文列项数据为{M_1,M_2,…, M_n};
预设安全参数为
Figure 121891DEST_PATH_IMAGE067
,随机选择
Figure 300063DEST_PATH_IMAGE068
比特长度的索引生成密钥
Figure 126068DEST_PATH_IMAGE069
设伪随机函数
Figure 415098DEST_PATH_IMAGE070
,其中
Figure 174106DEST_PATH_IMAGE071
Figure 523179DEST_PATH_IMAGE072
分别表示
Figure 367638DEST_PATH_IMAGE073
比特和m-1 比特长度的二进制字符串,
Figure 663622DEST_PATH_IMAGE074
表示模3的整数剩余类环;
对每个明文列项数据M,M取自于集合{M_1,M_2,…, M_n},设M的二进制表示为
Figure 277137DEST_PATH_IMAGE075
,令
Figure 797111DEST_PATH_IMAGE076
表示整数集合{1, 2, …,m},对
Figure 394445DEST_PATH_IMAGE077
,计算:
Figure 228540DEST_PATH_IMAGE078
,符号
Figure 962141DEST_PATH_IMAGE079
表示字符串级联,
Figure 121858DEST_PATH_IMAGE080
表示取模运算符;
计算出明文列项数据M的比较索引为
Figure 675330DEST_PATH_IMAGE081
输出索引生成密钥
Figure 375433DEST_PATH_IMAGE082
和待查询列的所有明文列项数据的比较索引,并基于所有明 文列项数据的比较索引形成比较索引列。
本发明的查询算法高效并能并行化地执行,算法泄露的明文信息比特数少,适用于大规模数据量下的范围查询业务场景。基于按比特的索引大小比较算法能够保证范围查询结果的准确性。利用token机制保证了范围查询请求的合法性和新鲜性,避免敌手发起非法查询或重放攻击,提高了范围查询业务的安全性。
本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1示出了本发明一种基于比较索引的密文数据范围查询方法的流程图;
图2示出了本发明一种基于比较索引的密文数据范围查询系统的框图;
图3示出了本发明一种数据库明文表的示意图;
图4示出了本发明一种未加比较索引的密文数据库表的示意图;
图5示出了本发明一种已加比较索引的密文数据库表的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了本发明一种基于比较索引的密文数据范围查询方法的流程图。
如图1所示,本发明第一方面提出一种基于比较索引的密文数据范围查询方法,所述方法包括:
S102,获取填有多条明文数据内容的数据库明文表以及数据加密密钥,采用数据加密密钥并利用第一算法对数据库明文表进行加密,得到对应的密文数据库表;
S104,从数据库明文表中获取待查询列,利用第二算法对数据库明文表的待查询列生成比较索引,将生成的比较索引加入所述密文数据库表的比较索引列;
S106,获取数据查询者提供的查询范围,基于查询范围并通过第三算法计算生成范围查询陷门;
S108,基于范围查询陷门,并通过第四算法查询所述密文数据库表中的比较索引列,得到查询结果;
S110,基于查询结果获取对应的数据解密密钥,并从密文数据库表中获取对应的密文数据内容,基于数据解密密钥并通过第五算法对密文数据内容进行解密,输出明文查询结果。
本发明提出了一种基于比较索引的针对密文数据的范围查询方法,将待查询的明文数据转化为密文数据形式的比较索引,数据库中其他相关联的明文数据能灵活地进行独立加密,利用范围查询结果可以输出这些相关联的数据。技术方案主要包括明文数据的加密算法、比较索引构造算法、查询陷门生成算法、范围查询搜索算法以及密文数据解密算法等5个算法,可应用于密文数据库的范围查询业务场景。
需要说明的是,本发明针对多个数据提供者的数据共享场景设计了一种基于比较索引的密文数据范围查询的实用性方法,主要解决了以下技术问题:
1、有效控制了密文索引的扩展尺寸,扩展倍数仅为2倍。对常用的整型数据的范围查询,明文数据长度为4个字节,此时密文索引固定为8个字节。即使对于明文数据条数比较庞大的场景,密文索引存储量也是可接受的。
2、范围查询结果具有较好的准确性。针对明文数据,按比特设计用于比较的密文索引和比较函数,可以准确地比较出两个索引密文的大小(也是对应明文的大小),保证了查询结果的准确性。
3、给出了明文数据的具体泄露信息,严格地度量了算法方案的安全性。
4、每次范围查询的陷门不同,可以为查询进行授权和规避重放攻击。通过引入查询令牌token(一个随机字符串),为每次查询生成不同的查询陷门,实现了查询请求的唯一性。
根据本发明的实施例,获取填有多条明文数据内容的数据库明文表以及数据加密密钥,采用数据加密密钥并利用第一算法对数据库明文表进行加密,得到对应的密文数据库表,具体包括:
预设数据库明文表包括由多条明文数据内容,每条明文数据内容包括多个明文列项数据;
基于不同的明文数据内容分别生成对应的数据加密密钥;
采用数据加密密钥并按照第一算法对相应明文数据内容中的明文列项数据进行加密得到对应的密文列项数据,将密文列项数据置于密文数据库表的密文列中,同时将数据加密密钥与明文数据内容在数据库明文表中的位置标识信息进行关联存储在密钥库中;
其中,所述第一算法的执行过程为:
预设数据库明文表中的明文列项数据为M,数据加密密钥为K;
根据算法C=Enc(M,K),计算出对应的密文列项数据C,其中Enc为对称加密算法,优选为AES或国密SM4算法。
根据本发明的实施例,从数据库明文表中获取待查询列,利用第二算法对数据库明文表的待查询列生成比较索引,具体包括:
预设数据库明文表中待查询列的明文列项数据为{M_1,M_2,…, M_n};
预设安全参数为
Figure 963540DEST_PATH_IMAGE083
,随机选择
Figure 294159DEST_PATH_IMAGE084
比特长度的索引生成密钥
Figure 600506DEST_PATH_IMAGE085
设伪随机函数
Figure 776404DEST_PATH_IMAGE086
,其中
Figure 484597DEST_PATH_IMAGE087
Figure 517275DEST_PATH_IMAGE088
分别表示
Figure 45339DEST_PATH_IMAGE089
比特和m- 1比特长度的二进制字符串,
Figure 24928DEST_PATH_IMAGE090
表示模3的整数剩余类环;
对每个明文列项数据M,M取自于集合{M_1,M_2,…, M_n},设M的二进制表示为
Figure 853207DEST_PATH_IMAGE091
,令
Figure 260048DEST_PATH_IMAGE092
表示整数集合{1, 2, …,m},对
Figure 275409DEST_PATH_IMAGE093
,计算:
Figure 589847DEST_PATH_IMAGE094
,符号
Figure 7053DEST_PATH_IMAGE095
表示字符串级联,
Figure 647112DEST_PATH_IMAGE096
表示取模运算符;
计算出明文列项数据M的比较索引为
Figure 353031DEST_PATH_IMAGE097
输出索引生成密钥
Figure 940002DEST_PATH_IMAGE098
和待查询列的所有明文列项数据的比较索引,并基于所有明 文列项数据的比较索引形成比较索引列。
根据本发明的实施例,获取数据查询者提供的查询范围,基于查询范围并通过第三算法计算生成范围查询陷门,具体包括:
预设安全参数为
Figure 946135DEST_PATH_IMAGE099
,随机选择
Figure 491517DEST_PATH_IMAGE100
比特长度的陷门生成密钥
Figure 481470DEST_PATH_IMAGE101
获取查询请求信息
Figure 583114DEST_PATH_IMAGE102
,所述查询请求信息包括查询范围和token信息,
Figure 443754DEST_PATH_IMAGE103
表示查询范围的上下区间值,
Figure 160037DEST_PATH_IMAGE104
本次数据查询者的请求令牌;
选择伪随机函数
Figure 637286DEST_PATH_IMAGE105
,其中
Figure 300480DEST_PATH_IMAGE106
表示token的取值空间,
Figure 812364DEST_PATH_IMAGE107
表示m维的
Figure 699548DEST_PATH_IMAGE108
向量,
Figure 132935DEST_PATH_IMAGE109
表示模3的整数剩余类环;
根据查询请求信息
Figure 130978DEST_PATH_IMAGE110
,利用第三算法计算:
Figure 497368DEST_PATH_IMAGE111
,
Figure 758716DEST_PATH_IMAGE112
Figure 210557DEST_PATH_IMAGE113
表示查询陷门生成算法;
Figure 215554DEST_PATH_IMAGE114
Figure 702030DEST_PATH_IMAGE115
Figure 134279DEST_PATH_IMAGE116
,其中符号
Figure 807837DEST_PATH_IMAGE117
表示m维向量按分量模3相加;
输出范围查询陷门
Figure 678841DEST_PATH_IMAGE118
根据本发明的实施例,基于范围查询陷门,并通过第四算法查询所述密文数据库表中的比较索引列,得到查询结果,具体包括:
对两个索引值
Figure 957507DEST_PATH_IMAGE119
Figure 357395DEST_PATH_IMAGE120
,定义索引比较函数
Figure 783829DEST_PATH_IMAGE121
Figure 192944DEST_PATH_IMAGE122
,
Figure 326117DEST_PATH_IMAGE041
, 如果
Figure 365748DEST_PATH_IMAGE123
,输出0;
否则令
Figure 279477DEST_PATH_IMAGE124
Figure 429967DEST_PATH_IMAGE125
的最小正整数,若满足
Figure 479963DEST_PATH_IMAGE126
,则输出-1
若满足
Figure 487233DEST_PATH_IMAGE127
,则输出1;
比较函数输出1表示
Figure 825941DEST_PATH_IMAGE128
对应的明文数据值大于
Figure 576860DEST_PATH_IMAGE129
对应的明文数据值,-1表示
Figure 419045DEST_PATH_IMAGE130
对应 的明文数据值小于
Figure 66058DEST_PATH_IMAGE131
对应的明文数据值,0则表示两者相等;
对查询陷门
Figure 688800DEST_PATH_IMAGE132
,初始化集合ID为空,进行下面的计算:
还原范围查询的端点值
Figure 181093DEST_PATH_IMAGE133
Figure 940101DEST_PATH_IMAGE134
,符号
Figure 758016DEST_PATH_IMAGE135
表示m维向量按分量模3相 减;
对密文数据库表中查询列的每个索引值
Figure 602475DEST_PATH_IMAGE136
,利用比较函数计算函数值:
Figure 695196DEST_PATH_IMAGE137
Figure 574290DEST_PATH_IMAGE138
如果
Figure 117702DEST_PATH_IMAGE139
Figure 449457DEST_PATH_IMAGE140
,则表示
Figure 80290DEST_PATH_IMAGE141
对应的明文
Figure 813891DEST_PATH_IMAGE142
在查询的范围
Figure 442449DEST_PATH_IMAGE143
内;
将满足条件的
Figure 261501DEST_PATH_IMAGE144
所在的行号id添加到集合ID中;
输出集合ID作为查询结果。
根据本发明的实施例,基于查询结果获取对应的数据解密密钥,并从密文数据库表中获取对应的密文数据内容,基于数据解密密钥并通过第五算法对密文数据内容进行解密,输出明文查询结果,具体包括:
验证查询是否有效,计算
Figure 696024DEST_PATH_IMAGE145
,如果等于
Figure 752973DEST_PATH_IMAGE146
,表示查询有效,进行后续解密,否 则输出“查询无效”,算法退出;
预设需要输出的明文数据集合为PlainData,初始化PlainData为空,对每个
Figure 614750DEST_PATH_IMAGE147
,执行:
获取id对应行的数据解密密钥DK,根据实际需要解密这一行中某一列的密文数据,得到明文数据Plain=Dec(Cipher,DK),其中Cipher表示需要的那一列的密文数据内容,Dec表示对称解密算法;
将明文数据Plain添加到明文数据集合PlainData中;
输出明文数据集合PlainData。
根据本发明的实施例,在将生成的比较索引加入所述密文数据库表的比较索引列之后,所述方法还包括:
预设在预设时间段内有多个数据查询者提出查询请求信息,每个数据查询者的查询请求信息中包括各自的查询范围;
对多个查询范围进行取交集处理;
预设待查询列的数据依据对应的刻度线取值,统计在每个刻度参与交集的数据查询者数量;
将参与交集的数据查询者数量超过第一预设阈值的刻度判定为合并查询刻度;
将所有合并查询刻度进行并集处理,得到合并查询刻度的并集范围;
基于合并查询刻度的并集范围进行查询,得到合并明文查询结果;
基于每个数据查询者,判断其查询范围是否包含合并查询刻度,如果包括,则从合并明文查询结果中提取所有包含的合并查询刻度对应的明文查询结果,对所有包含的合并查询刻度以外的其它查询刻度,则执行第四算法查询过程;如果不包括,则基于对应数据查询者的查询范围直接执行第四算法查询过程。
可以理解,本发明通过合并查询能够减少部分刻度的重复查询,减少了算法计算次数,进而提升了多个数据查询者的查询效率。
根据本发明的具体实施例,所述方法还包括:
对数据库明文表中的所有数据提供者的每一条明文数据内容进行摘要值计算,得第一摘要值,并存入摘要值数据库中;
当后续接收到其他数据库明文表的明文数据内容时,则对每条明文数据内容进行摘要值计算,得到每条明文数据内容的第二摘要值;
将每条明文数据内容的第二摘要值分别遍历摘要值数据库,并查找摘要值数据库中是否有相同的第一摘要值,如果有,则中止对该明文数据内容的存储处理。
根据本发明的具体实施例,在获取对应的数据解密密钥之前,所述方法还包括:
预设数据库明文表中带有数据提供者设定的共享信息,并规定拥有该共享信息身份的数据查询者有权限获得数据解密密钥;
预设某数据查阅者有共享信息,且共享信息包括按照顺序排列的p个字符,且p为偶数;
将共享信息的p个字符进行两两配对,形成p/2个配对组,每个配对组包括前字符和后字符;
数据查阅者将共享信息的p/2个配对组的前字符分别作为调制光子串的各个调制基随机选取的第一选取源,并将每个字符串中的p/2个配对组的后字符作为调制光子串的调制初始信号的第二选取源;
数据查阅者从第一选取源中,随机选取对应的前字符,作为调制基,并从第二选取源中选取与前字符相对应的后字符,作为调制初始信号,由各个调制基分别将对应的调制初始信号调制成光子的偏振态;
将光子的偏振态与共享信息对应调制基的随机选取方式一并通过量子通信发送给查询系统;
查询系统接收到光子的偏振态与共享信息对应调制基的随机选取方式,基于共享信息对应调制基的随机选取方式从共享信息的p/2个配对组的前字符中找出对应的前字符作为测量基,并采用测量基对光子的偏振态进行测量,得到测量结果,将获得的测量结果与共享信息中的后字符进行比对,若都一致,则通过对数据查阅者的认证。
需要说明的是,数据加解密密钥存储在密钥数据库中,且不同数据提供者的数据采用不同的密钥进行加密,即数据库明文表的不同位置标识的明文数据内容采用对应的密钥进行加密。然而在数据查询者从密钥数据库中获取对应的数据解密密钥时,则需要进行身份验证,本发明则基于共享信息进行对数据查询者授权身份进行验证。
本发明的密钥数据库中包括每个密钥对应有一个认证共享信息,则在比对时,则遍历密钥数据库中的全部共享信息并进行比对,待有比对成功时,即可认证通过。
本发明第二方面还提出一种基于比较索引的密文数据范围查询系统,用于实现上述的基于比较索引的密文数据范围查询方法,所述系统包括:
密钥管理和授权模块,负责生成和管理数据加解密密钥和比较索引生成密钥,在数据查询者授权的前提下,提供比较索引生成密钥和数据解密密钥;
数据加密模块,负责从密钥管理和授权模块获取数据加密密钥,运行第一算法对数据库明文表中的明文数据内容进行加密,产生密文数据内容;
比较索引构造模块,负责从密钥管理和授权模块获取比较索引生成密钥,运行第二算法对数据库明文表中的待查询的明文列项数据生成比较索引;
范围查询陷门生成模块,负责接收数据查询者的查询范围,从密钥管理和授权模块获取陷门生成密钥,运行第三算法生成对应的范围查询陷门;
密文数据库查询模块,负责从范围查询陷门生成模块接收查询陷门,运行第四算法从密文数据库表中比较索引列进行查询,获得查询结果;
数据解密模块,负责从密文数据库查询模块接收查询结果,从密钥管理和授权模块获取比较索引生成密钥和数据解密密钥,运行第五算法验证本次查询的有效性,若有效则解密出明文数据内容,返回给数据查询者;
密文数据库存储模块,负责统一存储密文数据库表,供密文数据库查询模块进行查询以及为数据解密模块提供密文数据内容。
根据本发明的实施例,数据加密模块还执行以下步骤:
预设数据库明文表包括由多条明文数据内容,每条明文数据内容包括多个明文列项数据;
基于不同的明文数据内容分别生成对应的数据加密密钥;
采用数据加密密钥并按照第一算法对相应明文数据内容中的明文列项数据进行加密得到对应的密文列项数据,将密文列项数据置于密文数据库表的密文列中,同时将数据加密密钥与明文数据内容在数据库明文表中的位置标识信息进行关联存储在密钥库中;
其中,所述第一算法的执行过程为:
预设数据库明文表中的明文列项数据为M,数据加密密钥为K;
根据算法C=Enc(M,K),计算出对应的密文列项数据C,其中Enc为对称加密算法,优选为AES或国密SM4算法。
根据本发明的实施例,比较索引构造模块还执行以下步骤:
预设数据库明文表中待查询列的明文列项数据为{M_1,M_2,…, M_n};
预设安全参数为
Figure 655518DEST_PATH_IMAGE148
,随机选择
Figure 893733DEST_PATH_IMAGE149
比特长度的索引生成密钥
Figure 601926DEST_PATH_IMAGE150
设伪随机函数
Figure 634604DEST_PATH_IMAGE151
,其中
Figure 365930DEST_PATH_IMAGE152
Figure 142256DEST_PATH_IMAGE153
分别表示
Figure 704956DEST_PATH_IMAGE154
比特和m-1 比特长度的二进制字符串,
Figure 174115DEST_PATH_IMAGE155
表示模3的整数剩余类环;
对每个明文列项数据M,M取自于集合{M_1,M_2,…, M_n},设M的二进制表示为
Figure 189475DEST_PATH_IMAGE156
,令
Figure 707175DEST_PATH_IMAGE157
表示整数集合{1, 2, …,m},对
Figure 389960DEST_PATH_IMAGE158
,计算:
Figure 764441DEST_PATH_IMAGE159
,符号
Figure 470360DEST_PATH_IMAGE160
表示字符串级联,
Figure 588489DEST_PATH_IMAGE161
表示取模运算符;
计算出明文列项数据M的比较索引为
Figure 125781DEST_PATH_IMAGE162
输出索引生成密钥
Figure 671162DEST_PATH_IMAGE163
和待查询列的所有明文列项数据的比较索引,并基于所有明 文列项数据的比较索引形成比较索引列。
为了进一步说明本发明的技术方案,下面以具体实施例进行说明。
本发明提出了一种基于比较索引的针对密文数据的范围查询方法,将待查询的明文数据转化为密文数据形式的比较索引,数据库中其他相关联的明文数据能灵活地进行独立加密,利用范围查询结果可以输出这些相关联的数据。技术方案主要包括明文数据的加密算法、比较索引构造算法、查询陷门生成算法、范围查询搜索算法以及密文数据解密算法等5个算法,可应用于密文数据库的范围查询业务场景。
算法1: 明文数据的加密算法PlainEnc
明文数据的加密算法对数据库中的明文内容进行加密,生成密文数据。这里的明文内容不限于要进行范围查询的数据(也可以对数据库中的其他关联数据进行加密)。
算法输入:数据库中的明文数据M,加密密钥K(密钥K可以根据加密强度要求设置为对数据库中的每行或每列都不同,甚至每个数据都不同)。
算法输出:M的密文数据C。
算法描述:计算C=Enc(M,K),其中Enc为一个对称加密算法(AES、SM4等)。
算法2: 比较索引构造算法BuildIndex
比较索引构造算法是对待查询的数据库表每列的明文数据进行索引构造,这些索引用于后续的大小比较,我们称这些索引为比较索引。
算法输入:数据库表中待查询列的明文数据{M_1,M_2,…, M_n}.
算法输出:每个数据的比较索引index。
算法描述:
(a)对安全参数为
Figure 661115DEST_PATH_IMAGE164
,随机选择
Figure 582935DEST_PATH_IMAGE165
比特长度的索引生成密钥
Figure 709154DEST_PATH_IMAGE166
(b)设伪随机函数
Figure 159858DEST_PATH_IMAGE167
,其中
Figure 433844DEST_PATH_IMAGE168
Figure 628196DEST_PATH_IMAGE169
分别表示
Figure 874501DEST_PATH_IMAGE170
比特和m- 1比特长度的二进制字符串,
Figure 558423DEST_PATH_IMAGE171
表示模3的整数剩余类环。对每个明文数据M(M取自于集合 {M_1,M_2,…, M_n}),设M的二进制表示为
Figure 522968DEST_PATH_IMAGE172
,令
Figure 989853DEST_PATH_IMAGE173
表示整数集合{1, 2, …,m},对
Figure 90664DEST_PATH_IMAGE174
,计算:
Figure 414329DEST_PATH_IMAGE175
,符号
Figure 803853DEST_PATH_IMAGE176
表示字符串级联。
明文M的比较索引为
Figure 871166DEST_PATH_IMAGE177
(c)输出索引生成密钥
Figure 295326DEST_PATH_IMAGE178
和所有明文数据的比较索引。
算法3:查询陷门生成算法TrapGen
查询陷门生成算法是利用陷门生成密钥
Figure 524313DEST_PATH_IMAGE179
对要查询的范围
Figure 440013DEST_PATH_IMAGE180
和本次查询请 求令牌token(每次的token是不同的随机值)生成查询陷门T。
算法输入:查询范围和token信息
Figure 45437DEST_PATH_IMAGE181
算法输出:范围查询陷门
Figure 120841DEST_PATH_IMAGE182
算法描述:
(a)选择伪随机函数
Figure 723992DEST_PATH_IMAGE183
,其中
Figure 884846DEST_PATH_IMAGE184
表示token的取值空间,
Figure 28382DEST_PATH_IMAGE185
表示m维的
Figure 958292DEST_PATH_IMAGE186
向量。根据查询请求
Figure 794661DEST_PATH_IMAGE187
,利用算法3(TrapGen算法)计算:
1)
Figure 708390DEST_PATH_IMAGE188
,
Figure 390038DEST_PATH_IMAGE189
;
2)
Figure 440034DEST_PATH_IMAGE190
;
3)
Figure 384987DEST_PATH_IMAGE191
Figure 520434DEST_PATH_IMAGE192
,其中符号
Figure 474614DEST_PATH_IMAGE193
表示m维向量按分量模3相加。
(b)输出范围查询陷门
Figure 379116DEST_PATH_IMAGE194
.
算法4:范围查询搜索算法Search
范围查询搜索算法是利用范围查询陷门T来比对密文数据库表中比较索引列,通过设计的索引比较函数得到满足查询范围的数据库表的对应行序号id。
算法输入:范围查询陷门
Figure 557288DEST_PATH_IMAGE195
,密文数据库DB;
算法输出:满足查询范围的数据库表行号的集合ID。
算法描述:
(a)对两个索引值
Figure 914451DEST_PATH_IMAGE196
Figure 469060DEST_PATH_IMAGE197
,定义索引比较函数
Figure 228069DEST_PATH_IMAGE198
Figure 577142DEST_PATH_IMAGE199
,
Figure 421601DEST_PATH_IMAGE200
如果
Figure 452005DEST_PATH_IMAGE201
,输出0;
否则令
Figure 127837DEST_PATH_IMAGE202
Figure 851074DEST_PATH_IMAGE203
的最小正整数,若满足
Figure 182829DEST_PATH_IMAGE204
,则输出-1;
若满足
Figure 813662DEST_PATH_IMAGE205
,则输出1;
容易看出,比较函数输出1表示
Figure 547262DEST_PATH_IMAGE206
对应的明文数据值大于
Figure 238138DEST_PATH_IMAGE207
对应的明文数据值,- 1表示
Figure 57189DEST_PATH_IMAGE208
对应的明文数据值小于
Figure 491713DEST_PATH_IMAGE209
对应的明文数据值,0则表示两者相等。
(b)对查询陷门
Figure 283082DEST_PATH_IMAGE210
,初始化集合ID为空,进行下面的计算:
1)还原范围查询的端点值
Figure 676018DEST_PATH_IMAGE211
Figure 716786DEST_PATH_IMAGE212
,符号
Figure 689421DEST_PATH_IMAGE213
表示m维向量按分量模3 相减;
2)对密文数据库表中查询列的每个索引值
Figure 194352DEST_PATH_IMAGE214
,利用比较函数计算函数值:
Figure 695871DEST_PATH_IMAGE215
Figure 489515DEST_PATH_IMAGE216
3)如果
Figure 265841DEST_PATH_IMAGE217
Figure 31803DEST_PATH_IMAGE218
,则表示
Figure 235382DEST_PATH_IMAGE219
对应的明文
Figure 250743DEST_PATH_IMAGE220
在查询的范围
Figure 932277DEST_PATH_IMAGE221
内。准确地 说,明文
Figure 349483DEST_PATH_IMAGE222
处于范围
Figure 723963DEST_PATH_IMAGE223
.如果要求
Figure 226620DEST_PATH_IMAGE224
,则可以修改判断条件为
Figure 344749DEST_PATH_IMAGE225
并且
Figure 819724DEST_PATH_IMAGE226
即可。将满足条件的
Figure 630685DEST_PATH_IMAGE227
所在的行号id添加到集合ID中(用于后续输出该行对应的所 需要的数据信息)。
(c)输出集合ID。
算法5:密文数据解密算法CipherDec
密文数据解密算法是对密文数据内容进行解密,首先根据数据表行号集合ID获取到对应的解密密钥,然后解密出该数据的明文值。注意这里我们可以根据实际需要,通过行号灵活地输出数据库表中任意关联数据列的值,而不是局限于查询列的明文值。我们在实施例中会给出一个简单的例子。
算法输入:查询请求和查询结果信息
Figure 620637DEST_PATH_IMAGE228
算法输出:相关需要的明文数据集合PlainData。
算法描述:
(a)验证查询是否有效,计算
Figure 276878DEST_PATH_IMAGE229
,如果等于
Figure 668676DEST_PATH_IMAGE230
,表示查询有效,进行后续解密, 否则输出“查询无效”,算法退出;
(b)初始化PlainData为空,对每个
Figure 525905DEST_PATH_IMAGE231
,执行:
1)获取id对应行的解密密钥DK,根据实际需要解密这一行中某一列的的密文数据,得到明文数据内容Plain=Dec(Cipher,DK),其中Cipher表示需要的那一列的密文数据内容。
2)将明文数据Plain添加到集合PlainData中。
(c)输出明文数据集合PlainData。
利用上面给出的5个算法,本发明设计了基于比较索引的密文数据范围查询系统,系统由密钥管理和授权模块、数据加密模块、比较索引构造模块、范围查询陷门生成模块、密文数据库查询模块、数据解密模块以及密文数据库存储模块等7个模块构成,系统如图2所示。
(1)密钥管理和授权模块:负责生成和管理数据加解密密钥和比较索引生成密钥,在数据查询者授权的前提下,提供比较索引生成密钥和数据解密密钥。
(2)数据加密模块:负责从密钥管理和授权模块获取数据加密密钥,运行算法1(PlainEnc算法)对数据库表中明文数据内容进行加密,产生密文数据内容。
(3)比较索引构造模块:负责从密钥管理和授权模块获取比较索引生成密钥,运行算法2(BuildIndex算法)对数据库表中待查询的数据列生成比较索引,并存储到密文数据库存储模块。这里也可以看出我们给出的算法2能够应对数据动态变化的情况(新增或删除),新增的数据只需要计算新增数据的比较索引并添加到密文数据库即可。数据删除时只需删除对应数据行即可,对数据库表的其他数据没有影响。
(4)范围查询陷门生成模块:负责接收数据查询者的查询范围,从密钥管理和授权模块获取陷门生成密钥,运行算法3(TrapGen算法)生成对应的范围查询陷门。
(5)密文数据库查询模块:负责从范围查询陷门生成模块接收查询陷门,运行算法4(Search算法)从密文数据库中比较索引列进行查询,获得查询结果ID。
(6)数据解密模块:负责从密文数据库查询模块接收查询结果ID,从密钥管理和授权模块获取比较索引生成密钥和解密密钥,运行算法5(CipherDec算法)验证本次查询的有效性,若有效则解密出明文数据内容,返回给数据查询者。
(7)密文数据库存储模块:负责统一存储密文数据库,供密文数据库查询模块进行查询以及为数据解密模块提供密文数据内容。
图2中也依次标识了整个系统的运行流程(用流程箭头上数字表示),从数据提供者提供的数据及待查询列数据开始处理,首先生成密文数据内容和待查询列的比较索引,存储在密文数据库存储模块中。然后数据查询者根据查询范围发起查询,范围查询陷门生成模块产生出查询陷门,密文数据库查询模块利用查询陷门进行密文范围查询获得数据库表行号集合ID。数据解密模块解密ID中对应行所需的密文数据列,最终将明文结果返回给数据查询者。
方案效率分析:
(1)方案中涉及的算法全部采用对称密码原语进行设计,保证了算法执行的高效性。
(2)范围查询算法中比较两个索引时,只需要查找索引分量的不同值并验证是否有相差1的关系,比较算法非常高效。并且可以采用并行计算方式进一步提高比较效率,这样即使对数据库表比较庞大的情况也能兼顾范围查询的速度。
系统安全性分析:
(1)数据库表中对不同数据提供者的数据行可以采用不同的加密密钥,数据库表中同一行的不同列理论上能采用不同的密钥(但实际中为了减少密钥管理的复杂度可以不用如此高强度的加密方式),由此保证数据内容的安全性。
(2)密文数据库存储模块中存储的都是密文形式的比较索引和数据内容,即使密文存储模块被攻破,敌手也无法解密数据或根据比较索引反推查询列的明文(这是由加密算法和伪随机函数提供的安全性)。
(3)数据查询者提供的查询范围会被范围查询陷门生成模块进行变换,密文数据库查询模块和密文存储模块都不能知道查询范围的明文(只能比较出大小),保证了查询范围的安全性。
(4)相比现有技术中可能泄露一半以上的明文比特,我们方案中泄露的明文信息仅有1比特。这是因为在比较函数Compare中,当两个索引不完全相同时,对应的明文总会有1比特不同,而比较函数会返回两个明文第一个不同的比特位置。虽然在安全性上可以通过设计交互式方案来进一步减少泄露的信息量,但多轮的交互会严重影响方案的执行效率。
下面以一个具体实施例来展示本发明中给出的范围查询算法的执行过程。
(1)利用算法1(明文数据的加密算法PlainEnc)对数据库表的明文进行加密。这里以图3中的数据库表为例,范围查询列为年龄列,假设资产列也是需要加密的数据列,因此我们将年龄列和资产列都进行加密。这里我们使用AES加密算法,前两行和后两行分别使用不同的密钥加密,用来模拟两个数据提供者各自提供的两条数据,得到的密文数据库表如图4所示。
(2)利用算法2(比较索引构造算法BuildIndex)对数据库明文表的年龄列生成比较索引,其中伪随机函数F使用SHA256哈希算法实现,将生成的比较索引一起放入密文数据库表中,如图5所示。
(3)设查询者现在提出的查询范围[30, 36],要求输出满足该范围的人员姓名和资产信息。设本次查询的token为abcdef-123456-789012,利用算法3(查询陷门生成算法TrapGen)生成范围查询陷门T=(01001121, 01111200, 12100011). 注意这里为了方便表示,我们将陷门T中的每个向量的分量进行级联成字符串,比如其中起点的陷门向量为(0,1, 0, 0, 1, 1, 2, 1)就直接表示为01001121。
(4)利用范围查询陷门T和算法4(范围查询搜索算法Search)查询密文数据库的比较索引列,得到查询结果为ID={1,2},表示数据库表中的第1行和第2行的数据在要求的查询范围之内。
(5)利用查询结果ID,输出要求的姓名和资产信息,其中资产信息是密文数据需要解密。最终的查询结果为:(张三,100w) 和 (李四,50w)。
本发明设计了一种高效安全的基于比较索引的密文数据范围查询方法,查询算法 高效并能并行化地执行,算法泄露的明文信息比特数少。索引尺寸扩展小,扩展倍数为明文 比特长度的
Figure 799891DEST_PATH_IMAGE232
倍(约为1.58倍,具体编码实现时为2倍),非常适用于大规模数据量下的范 围查询业务场景。
基于按比特的索引大小比较算法能够保证范围查询结果的准确性,对于数据动态变化的场景,方案也能够支持方便地进行新数据比较索引的增加和已有数据的删除。
利用token机制保证了范围查询请求的合法性和新鲜性,避免敌手发起非法查询或重放攻击,提高了范围查询业务的安全性。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种基于比较索引的密文数据范围查询方法,其特征在于,所述方法包括:
获取填有多条明文数据内容的数据库明文表以及数据加密密钥,采用数据加密密钥并利用第一算法对数据库明文表进行加密,得到对应的密文数据库表;
从数据库明文表中获取待查询列,利用第二算法对数据库明文表的待查询列生成比较索引,将生成的比较索引加入所述密文数据库表的比较索引列;
获取数据查询者提供的查询范围,基于查询范围并通过第三算法计算生成范围查询陷门;
基于范围查询陷门,并通过第四算法查询所述密文数据库表中的比较索引列,得到查询结果;
基于查询结果获取对应的数据解密密钥,并从密文数据库表中获取对应的密文数据内容,基于数据解密密钥并通过第五算法对密文数据内容进行解密,输出明文查询结果。
2.根据权利要求1所述的一种基于比较索引的密文数据范围查询方法,其特征在于,获取填有多条明文数据内容的数据库明文表以及数据加密密钥,采用数据加密密钥并利用第一算法对数据库明文表进行加密,得到对应的密文数据库表,具体包括:
预设数据库明文表包括由多条明文数据内容,每条明文数据内容包括多个明文列项数据;
基于不同的明文数据内容分别生成对应的数据加密密钥;
采用数据加密密钥并按照第一算法对相应明文数据内容中的明文列项数据进行加密得到对应的密文列项数据,将密文列项数据置于密文数据库表的密文列中,同时将数据加密密钥与明文数据内容在数据库明文表中的位置标识信息进行关联存储在密钥库中;
其中,所述第一算法的执行过程为:
预设数据库明文表中的明文列项数据为M,数据加密密钥为K;
根据算法C=Enc(M,K),计算出对应的密文列项数据C,其中Enc为对称加密算法,优选为AES或国密SM4算法。
3.根据权利要求1所述的一种基于比较索引的密文数据范围查询方法,其特征在于,从数据库明文表中获取待查询列,利用第二算法对数据库明文表的待查询列生成比较索引,具体包括:
预设数据库明文表中待查询列的明文列项数据为{M_1,M_2,…, M_n};
预设安全参数为
Figure 282772DEST_PATH_IMAGE001
,随机选择
Figure 606437DEST_PATH_IMAGE002
比特长度的索引生成密钥
Figure 995961DEST_PATH_IMAGE003
设伪随机函数
Figure 797695DEST_PATH_IMAGE004
,其中
Figure 284172DEST_PATH_IMAGE005
Figure 716421DEST_PATH_IMAGE006
分别表示
Figure 389979DEST_PATH_IMAGE007
比特和m-1比特长 度的二进制字符串,
Figure 260983DEST_PATH_IMAGE008
表示模3的整数剩余类环;
对每个明文列项数据M,M取自于集合{M_1,M_2,…, M_n},设M的二进制表示为
Figure 336386DEST_PATH_IMAGE009
, 令
Figure 939537DEST_PATH_IMAGE010
表示整数集合{1, 2, …,m},对
Figure 365970DEST_PATH_IMAGE011
,计算:
Figure 712769DEST_PATH_IMAGE012
,符号
Figure 642679DEST_PATH_IMAGE013
表示字符串级联,
Figure 947890DEST_PATH_IMAGE014
表示取模运算符;
计算出明文列项数据M的比较索引为
Figure 861619DEST_PATH_IMAGE015
输出索引生成密钥
Figure 277688DEST_PATH_IMAGE016
和待查询列的所有明文列项数据的比较索引,并基于所有明文列 项数据的比较索引形成比较索引列。
4.根据权利要求1所述的一种基于比较索引的密文数据范围查询方法,其特征在于,获取数据查询者提供的查询范围,基于查询范围并通过第三算法计算生成范围查询陷门,具体包括:
预设安全参数为
Figure 773088DEST_PATH_IMAGE017
,随机选择
Figure 514779DEST_PATH_IMAGE018
比特长度的陷门生成密钥
Figure 119067DEST_PATH_IMAGE019
获取查询请求信息
Figure 401143DEST_PATH_IMAGE020
,所述查询请求信息包括查询范围和token信息,
Figure 508908DEST_PATH_IMAGE021
表示查询范围的上下区间值,
Figure 952659DEST_PATH_IMAGE022
本次数据查询者的请求令牌;
选择伪随机函数
Figure 513084DEST_PATH_IMAGE023
,其中
Figure 802114DEST_PATH_IMAGE024
表示token的取值空间,
Figure 826702DEST_PATH_IMAGE025
表示m维的
Figure 379037DEST_PATH_IMAGE026
向量,
Figure 223496DEST_PATH_IMAGE027
表示模3的整数剩余类环;
根据查询请求信息
Figure 316217DEST_PATH_IMAGE028
,利用第三算法计算:
Figure 195311DEST_PATH_IMAGE029
,
Figure 918548DEST_PATH_IMAGE030
Figure 515883DEST_PATH_IMAGE031
表示查询陷门生成算法;
Figure 146715DEST_PATH_IMAGE032
Figure 817999DEST_PATH_IMAGE033
Figure 774454DEST_PATH_IMAGE034
,其中符号
Figure 796768DEST_PATH_IMAGE035
表示m维向量按分量模3相加;
输出范围查询陷门
Figure 700133DEST_PATH_IMAGE036
5.根据权利要求4所述的一种基于比较索引的密文数据范围查询方法,其特征在于,基于范围查询陷门,并通过第四算法查询所述密文数据库表中的比较索引列,得到查询结果,具体包括:
对两个索引值
Figure 288240DEST_PATH_IMAGE037
Figure 150017DEST_PATH_IMAGE038
,定义索引比较函数
Figure 659627DEST_PATH_IMAGE039
Figure 897841DEST_PATH_IMAGE040
,
Figure 809296DEST_PATH_IMAGE041
, 如果
Figure 45237DEST_PATH_IMAGE042
,输出0;
否则令
Figure 104460DEST_PATH_IMAGE043
Figure 880786DEST_PATH_IMAGE044
的最小正整数,若满足
Figure 381168DEST_PATH_IMAGE045
,则输出-1
若满足
Figure 584748DEST_PATH_IMAGE046
,则输出1;
比较函数输出1表示
Figure 865687DEST_PATH_IMAGE047
对应的明文数据值大于
Figure 648967DEST_PATH_IMAGE048
对应的明文数据值,-1表示
Figure 331752DEST_PATH_IMAGE049
对应的明 文数据值小于
Figure 909495DEST_PATH_IMAGE050
对应的明文数据值,0则表示两者相等;
对查询陷门
Figure 677731DEST_PATH_IMAGE051
,初始化集合ID为空,进行下面的计算:
还原范围查询的端点值
Figure 795860DEST_PATH_IMAGE052
Figure 67572DEST_PATH_IMAGE053
,符号
Figure 612954DEST_PATH_IMAGE054
表示m维向量按分量模3相减;
对密文数据库表中查询列的每个索引值
Figure 626344DEST_PATH_IMAGE055
,利用比较函数计算函数值:
Figure 485847DEST_PATH_IMAGE056
Figure 877645DEST_PATH_IMAGE057
如果
Figure 859508DEST_PATH_IMAGE058
Figure 540019DEST_PATH_IMAGE059
,则表示
Figure 265529DEST_PATH_IMAGE060
对应的明文
Figure 511834DEST_PATH_IMAGE061
在查询的范围
Figure 399019DEST_PATH_IMAGE062
内;
将满足条件的
Figure 301247DEST_PATH_IMAGE063
所在的行号id添加到集合ID中;
输出集合ID作为查询结果。
6.根据权利要求5所述的一种基于比较索引的密文数据范围查询方法,其特征在于,基于查询结果获取对应的数据解密密钥,并从密文数据库表中获取对应的密文数据内容,基于数据解密密钥并通过第五算法对密文数据内容进行解密,输出明文查询结果,具体包括:
验证查询是否有效,计算
Figure 564869DEST_PATH_IMAGE064
,如果等于
Figure 931259DEST_PATH_IMAGE065
,表示查询有效,进行后续解密,否则输 出“查询无效”,算法退出;
预设需要输出的明文数据集合为PlainData,初始化PlainData为空,对每个
Figure 192608DEST_PATH_IMAGE066
,执 行:
获取id对应行的数据解密密钥DK,根据实际需要解密这一行中某一列的密文数据,得到明文数据Plain=Dec(Cipher,DK),其中Cipher表示需要的那一列的密文数据内容,Dec表示对称解密算法;
将明文数据Plain添加到明文数据集合PlainData中;
输出明文数据集合PlainData。
7.根据权利要求1所述的一种基于比较索引的密文数据范围查询方法,其特征在于,在将生成的比较索引加入所述密文数据库表的比较索引列之后,所述方法还包括:
预设在预设时间段内有多个数据查询者提出查询请求信息,每个数据查询者的查询请求信息中包括各自的查询范围;
对多个查询范围进行取交集处理;
预设待查询列的数据依据对应的刻度线取值,统计在每个刻度参与交集的数据查询者数量;
将参与交集的数据查询者数量超过第一预设阈值的刻度判定为合并查询刻度;
将所有合并查询刻度进行并集处理,得到合并查询刻度的并集范围;
基于合并查询刻度的并集范围进行查询,得到合并明文查询结果;
基于每个数据查询者,判断其查询范围是否包含合并查询刻度,如果包括,则从合并明文查询结果中提取所有包含的合并查询刻度对应的明文查询结果,对所有包含的合并查询刻度以外的其它查询刻度,则执行第四算法查询过程;如果不包括,则基于对应数据查询者的查询范围直接执行第四算法查询过程。
8.一种基于比较索引的密文数据范围查询系统,用于实现上述权利要求1至7任意一项所述的基于比较索引的密文数据范围查询方法,其特征在于,所述系统包括:
密钥管理和授权模块,负责生成和管理数据加解密密钥和比较索引生成密钥,在数据查询者授权的前提下,提供比较索引生成密钥和数据解密密钥;
数据加密模块,负责从密钥管理和授权模块获取数据加密密钥,运行第一算法对数据库明文表中的明文数据内容进行加密,产生密文数据内容;
比较索引构造模块,负责从密钥管理和授权模块获取比较索引生成密钥,运行第二算法对数据库明文表中的待查询的明文列项数据生成比较索引;
范围查询陷门生成模块,负责接收数据查询者的查询范围,从密钥管理和授权模块获取陷门生成密钥,运行第三算法生成对应的范围查询陷门;
密文数据库查询模块,负责从范围查询陷门生成模块接收查询陷门,运行第四算法从密文数据库表中比较索引列进行查询,获得查询结果;
数据解密模块,负责从密文数据库查询模块接收查询结果,从密钥管理和授权模块获取比较索引生成密钥和数据解密密钥,运行第五算法验证本次查询的有效性,若有效则解密出明文数据内容,返回给数据查询者;
密文数据库存储模块,负责统一存储密文数据库表,供密文数据库查询模块进行查询以及为数据解密模块提供密文数据内容。
9.根据权利要求8所述的一种基于比较索引的密文数据范围查询系统,其特征在于,数据加密模块还执行以下步骤:
预设数据库明文表包括由多条明文数据内容,每条明文数据内容包括多个明文列项数据;
基于不同的明文数据内容分别生成对应的数据加密密钥;
采用数据加密密钥并按照第一算法对相应明文数据内容中的明文列项数据进行加密得到对应的密文列项数据,将密文列项数据置于密文数据库表的密文列中,同时将数据加密密钥与明文数据内容在数据库明文表中的位置标识信息进行关联存储在密钥库中;
其中,所述第一算法的执行过程为:
预设数据库明文表中的明文列项数据为M,数据加密密钥为K;
根据算法C=Enc(M,K),计算出对应的密文列项数据C,其中Enc为对称加密算法,优选为AES或国密SM4算法。
10.根据权利要求8所述的一种基于比较索引的密文数据范围查询系统,其特征在于,比较索引构造模块还执行以下步骤:
预设数据库明文表中待查询列的明文列项数据为{M_1,M_2,…, M_n};
预设安全参数为
Figure 644449DEST_PATH_IMAGE067
,随机选择
Figure 711762DEST_PATH_IMAGE068
比特长度的索引生成密钥
Figure 667079DEST_PATH_IMAGE069
设伪随机函数
Figure 161646DEST_PATH_IMAGE070
,其中
Figure 38466DEST_PATH_IMAGE071
Figure 643891DEST_PATH_IMAGE072
分别表示
Figure 719294DEST_PATH_IMAGE073
比特和m-1比特长 度的二进制字符串,
Figure 384762DEST_PATH_IMAGE074
表示模3的整数剩余类环;
对每个明文列项数据M,M取自于集合{M_1,M_2,…, M_n},设M的二进制表示为
Figure 545616DEST_PATH_IMAGE075
,令
Figure 892415DEST_PATH_IMAGE076
表示整数集合{1, 2, …,m},对
Figure 87904DEST_PATH_IMAGE077
,计算:
Figure 924273DEST_PATH_IMAGE078
,符号
Figure 510106DEST_PATH_IMAGE079
表示字符串级联,
Figure 457334DEST_PATH_IMAGE080
表示取模运算符;
计算出明文列项数据M的比较索引为
Figure 772908DEST_PATH_IMAGE081
输出索引生成密钥
Figure 717862DEST_PATH_IMAGE082
和待查询列的所有明文列项数据的比较索引,并基于所有明文列 项数据的比较索引形成比较索引列。
CN202211086567.6A 2022-09-07 2022-09-07 一种基于比较索引的密文数据范围查询方法和系统 Active CN115168909B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211086567.6A CN115168909B (zh) 2022-09-07 2022-09-07 一种基于比较索引的密文数据范围查询方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211086567.6A CN115168909B (zh) 2022-09-07 2022-09-07 一种基于比较索引的密文数据范围查询方法和系统

Publications (2)

Publication Number Publication Date
CN115168909A true CN115168909A (zh) 2022-10-11
CN115168909B CN115168909B (zh) 2022-12-30

Family

ID=83481829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211086567.6A Active CN115168909B (zh) 2022-09-07 2022-09-07 一种基于比较索引的密文数据范围查询方法和系统

Country Status (1)

Country Link
CN (1) CN115168909B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024130721A1 (en) * 2022-12-23 2024-06-27 Huawei Technologies Co., Ltd. Data storage server and client devices for securely storing and retrieving data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017222407A1 (en) * 2016-06-22 2017-12-28 Autonomous Non-Profit Organization For Higher Education "Skolkovo Institute Of Science And Technology" Two-mode encryption scheme allowing comparison-based indexing
CN112800088A (zh) * 2021-01-19 2021-05-14 东北大学 基于双向安全索引的数据库密文检索系统及方法
CN114254344A (zh) * 2021-12-14 2022-03-29 北京师范大学 一种基于区块链的共享数据库的隐私数据范围查询方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017222407A1 (en) * 2016-06-22 2017-12-28 Autonomous Non-Profit Organization For Higher Education "Skolkovo Institute Of Science And Technology" Two-mode encryption scheme allowing comparison-based indexing
CN112800088A (zh) * 2021-01-19 2021-05-14 东北大学 基于双向安全索引的数据库密文检索系统及方法
CN114254344A (zh) * 2021-12-14 2022-03-29 北京师范大学 一种基于区块链的共享数据库的隐私数据范围查询方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024130721A1 (en) * 2022-12-23 2024-06-27 Huawei Technologies Co., Ltd. Data storage server and client devices for securely storing and retrieving data

Also Published As

Publication number Publication date
CN115168909B (zh) 2022-12-30

Similar Documents

Publication Publication Date Title
US9977918B2 (en) Method and system for verifiable searchable symmetric encryption
CN111130757B (zh) 一种基于区块链的多云cp-abe访问控制方法
US9275250B2 (en) Searchable encryption processing system
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
CN112800445B (zh) 一种用于密文数据的前后向安全和可验证的布尔查询方法
CN112989375B (zh) 一种分级优化加密无损隐私保护方法
CN106776904A (zh) 一种不可信云计算环境中支持动态验证的模糊查询加密方法
KR20130039354A (ko) Dbms 및 데이터베이스에서 암호화 방법
CN113067702B (zh) 支持密文等值测试功能的身份基加密方法
GB2514428A (en) Enabling access to data
CN110069946B (zh) 一种基于sgx的安全索引系统
CN114417073B (zh) 一种加密图的邻居节点查询方法及装置、电子设备
CN108400970A (zh) 云环境中相似数据消息锁定加密去重方法、云存储系统
CN113918528A (zh) 一种基于可信硬件的安全云数据去重方法及系统
CN113489710A (zh) 一种文件共享方法、装置、设备和存储介质
CN110851848B (zh) 对称可搜索加密的隐私保护方法
CN115168909B (zh) 一种基于比较索引的密文数据范围查询方法和系统
KR101217491B1 (ko) 공개키 기반의 키워드 검색 방법
Zhang et al. Secdedup: Secure encrypted data deduplication with dynamic ownership updating
CN111556072A (zh) 一种改进索引加密算法与系统
Liu et al. Multi-user image retrieval with suppression of search pattern leakage
WO2023134576A1 (zh) 数据加密方法、属性授权中心及存储介质
CN117155615A (zh) 数据加密传输方法、系统、电子设备及存储介质
Singamaneni et al. An improved dynamic polynomial integrity based QCP-ABE framework on large cloud data security
CN114430321B (zh) 基于dfa自适应安全的黑盒可追踪密钥属性加密方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant