CN108595554B - 一种基于云环境的多属性范围查询方法 - Google Patents

一种基于云环境的多属性范围查询方法 Download PDF

Info

Publication number
CN108595554B
CN108595554B CN201810318428.9A CN201810318428A CN108595554B CN 108595554 B CN108595554 B CN 108595554B CN 201810318428 A CN201810318428 A CN 201810318428A CN 108595554 B CN108595554 B CN 108595554B
Authority
CN
China
Prior art keywords
vector
request
index
query
data
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.)
Active
Application number
CN201810318428.9A
Other languages
English (en)
Other versions
CN108595554A (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.)
Hunan University
Original Assignee
Hunan University
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 Hunan University filed Critical Hunan University
Priority to CN201810318428.9A priority Critical patent/CN108595554B/zh
Publication of CN108595554A publication Critical patent/CN108595554A/zh
Application granted granted Critical
Publication of CN108595554B publication Critical patent/CN108595554B/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/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)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于云环境的多属性范围查询方法,本地服务器将数据集索引构造成索引向量并加密,将查询请求构造成请求向量并加密,云端服务器通过计算加密后的索引向量和请求向量的内积确定目标数据,从而实现高效的查询操作。同时,本地服务器将数据加密并打包发送至云端服务器,用户可以直接对云端服务器的密文进行多属性的范围查询,云端服务器接收到查询请求后,在不解密任何数据的情况下,检索出满足查询范围的数据,并将其返回给用户,期间所有的操作都是以密文的形式运行,保证云端服务器无法获知任何数据信息,保证数据的隐私安全。

Description

一种基于云环境的多属性范围查询方法
技术领域
本发明涉及大数据领域,尤其涉及一种基于云环境的多属性范围查询方法。
背景技术
随着大数据的蓬勃发展,传统平台的数据存储能力与数据处理能力早已无法满足数据的容量和增长速度,云计算的发展为大数据创造了更好的数据处理平台与技术支持。为了减轻本地存储负担,并改善服务质量,越来越多的企业或单位开始将他们的数据打包存放在云端服务器上,同时,为了保护数据的隐私安全,他们会将数据加密。但是,加密带来的最重要的问题就是对数据的查询处理问题,比如范围查询。如何在加密数据的同时,实现对密文数据的安全且高效的查询处理,是云计算领域的一大难题。
目前,已存在的解决方案中最突出的就是保序加密技术(OPE),即一种数据在加密过后、保证密文与明文顺序保持一致的加密方式,可直接在密文中进行范围查询。但是,现在存在的大多数OPE机制都存在安全性不高的问题。另外,文献《An ideal-securityprotocol for order-preserving encoding》中提出了一种名为“mOPE”的安全OPE机制,但是,其需要客户端与服务器进行大量的交互,存在效率低的问题。
发明内容
为了解决现有技术所存在的上述问题,本发明提供了一种基于云环境的多属性范围查询方法,本地服务器将数据集索引构造成索引向量并加密,将查询请求构造成请求向量并加密,云端服务器通过计算加密后的索引向量和请求向量的内积确定目标数据,从而实现高效的查询操作。同时,用户可以直接对云端服务器中的密文进行多属性的范围查询,云端服务器接收到查询请求后,在不解密任何数据的情况下,检索出满足查询范围的数据,并将其返回给用户,期间所有的操作都是以密文的形式运行,保证云端服务器无法获知任何数据信息,保证数据的隐私安全。
本发明提供了一种基于云环境的多属性范围查询方法,包括:
步骤S1:本地服务器根据预设数据加密算法加密明文数据集得到密文数据集;
步骤S2:本地服务器将与所述明文数据集对应的初始索引构造成索引向量,并采用预设的索引加密算法加密索引向量,得到安全索引向量,将所述密文数据集和安全索引向量发送给云端服务器;
步骤S3:本地服务器根据用户发送的查询请求构造请求向量,并采用所述索引加密算法加密请求向量,得到安全查询向量,将所述安全查询向量发回用户;
步骤S4:云端服务器根据用户转发的所述安全查询向量,计算安全索引向量与安全查询向量的内积,通过内积计算结果确定目标数据密文,并将所述目标数据密文发回用户;
步骤S5:用户通过步骤S1的数据加密算法解密所述目标数据密文,得到目标数据明文。
本发明提供的方法,通过本地服务器根据明文数据构造索引向量,并加密得到安全索引向量,本地服务器根据用户发送的查询请求构造请求向量,并将请求向量加密得到安全查询向量,最后云端服务器通过计算两个向量内积来确定查询结果。使得加密过程只在本地服务器完成,查询过程由云端服务器独立执行,由此不需要用户与服务器的额外交互,提高了处理效率;且本方案密文包含加密后的随机向量,没有泄露与明文相关的信息;再者,本方案的数据传输过程仅传输密文数据,查询过程也是对密文数据直接进行处理,故全过程的安全性得到进一步提高。
进一步的,所述索引加密算法为kNN算法;
所述索引加密密钥为SK=(sk,σ,L1,L2);
其中,sk=(M1,M2,S),σ为随机排列数列[1,2,...,d]得到的洗牌函数,L1和L2均为长度为
Figure BDA0001624522140000021
的二进制随机字符串、该字符串仅由0和1构成且0和1的个数相等,d为正整数;
M1和M2均为d行d列的可逆矩阵,S为一个长度为d的二进制随机字符串、该字符串仅由0和1构成且0和1的个数相等。
现有文献资料《Secure knn Computation on Encrypted Databases》(W.K.Wong,D.W.-l.Cheung,B.Kao,and N.Mamoulis,Proc.Of SIGMOD,2009)公开了将kNN算法用于加密处理的方法,本发明则利用kNN算法来加密本方案中涉及的向量,从而加强方案中涉及向量的加密安全性。
进一步的,当所述明文数据集为DS={D1,D2,...,Di,...,Dn},n为正整数时,其中,每一个数据Di都对应包含m个属性值
Figure BDA0001624522140000022
的属性值集合
Figure BDA0001624522140000023
1≤k≤m且m为正整数;
每一个数据Di对应的每一个属性值
Figure BDA0001624522140000024
所对应的所述索引向量
Figure BDA0001624522140000025
的构造方法为:
步骤S201:随机生成一个包含
Figure BDA0001624522140000026
个非负数的填充集合C,
Figure BDA0001624522140000031
Figure BDA0001624522140000032
且集合中所有数的和大于0;
步骤S202:从第1位开始,依次填充索引向量
Figure BDA0001624522140000033
的前
Figure BDA0001624522140000034
位:
当字符串L1的第t位字符为1时,填充
Figure BDA0001624522140000035
的第t位为
Figure BDA0001624522140000036
否则,填充
Figure BDA0001624522140000037
的第t位为1,其中,
Figure BDA0001624522140000038
步骤S203:从第
Figure BDA0001624522140000039
位开始,依次填充索引向量
Figure BDA00016245221400000310
的后
Figure BDA00016245221400000311
位:
当字符串L2的第
Figure BDA00016245221400000312
位字符为1时,填充
Figure BDA00016245221400000313
的第t位为
Figure BDA00016245221400000314
并使x=x+1,否则,填充
Figure BDA00016245221400000315
的第t位为cy,并使y=y+1,其中,
Figure BDA00016245221400000316
步骤S204:采用洗牌函数σ对填充完毕后的索引向量
Figure BDA00016245221400000317
进行洗牌操作,得到洗牌后的索引向量
Figure BDA00016245221400000318
在本方案中,构造索引向量
Figure BDA00016245221400000319
时,每一个数据Di对应的每一个属性值
Figure BDA00016245221400000320
都对应一个索引向量
Figure BDA00016245221400000321
故每一个数据Di对应的为一个由m个索引向量构成的向量集合。
进一步的,采用kNN算法对所述索引向量
Figure BDA00016245221400000322
加密的方法为:
步骤S211:将d维索引向量
Figure BDA00016245221400000323
拆分为两个d维向量pa和pb,拆分规则为:
从字符串S的第1位开始,若第t位字符为1,则将索引向量
Figure BDA00016245221400000324
的第t位的值随机拆分为两个数值分别填充到向量pa和pb的第t位中;若第t位字符为0,则直接将索引向量
Figure BDA00016245221400000325
的第t位的值分别填充到向量pa和pb的第t位中;
步骤S212:将向量pa和pb分别乘以矩阵M1和M2的置换矩阵M1 T和M2 T,从而得到安全索引向量
Figure BDA00016245221400000326
在本方案中,先构造索引向量,然后采用kNN算法对索引向量加密,得到加密后的安全索引向量,再将安全索引向量从本地服务器发送给云端服务器。由此,在数据交互过程中汇总、传输的均为加密的内容,可以提高本方案的安全性。
进一步的,步骤S3中根据用户发送的查询请求构造请求向量的方法为:
当所述查询请求为
Figure BDA00016245221400000327
时,根据低边界
Figure BDA00016245221400000328
构造请求向量
Figure BDA00016245221400000329
根据高边界
Figure BDA00016245221400000330
构造请求向量
Figure BDA00016245221400000331
请求向量
Figure BDA0001624522140000041
的构造方法为:
步骤S301:随机生成一个包含
Figure BDA0001624522140000042
个非负数的填充集合
Figure BDA0001624522140000043
Figure BDA0001624522140000044
Figure BDA0001624522140000045
且集合中所有数的和大于0;
步骤S302:从第1位开始,依次填充请求向量
Figure BDA0001624522140000046
的前
Figure BDA0001624522140000047
位:
当字符串L1的第t位字符为1时,填充
Figure BDA0001624522140000048
的第t位为
Figure BDA0001624522140000049
并使x=x+1,否则,填充
Figure BDA00016245221400000410
的第t位为
Figure BDA00016245221400000430
并使y=y+1,其中,
Figure BDA00016245221400000411
步骤S303:从第
Figure BDA00016245221400000412
位开始,依次填充请求向量
Figure BDA00016245221400000413
的后
Figure BDA00016245221400000414
位:
当字符串L2的第
Figure BDA00016245221400000415
位字符为1时,填充
Figure BDA00016245221400000416
的第t位为-1,否则,填充
Figure BDA00016245221400000417
的第t位为
Figure BDA00016245221400000418
其中,
Figure BDA00016245221400000419
步骤S304:采用洗牌函数σ对填充完毕后的请求向量
Figure BDA00016245221400000420
进行洗牌操作,得到洗牌后的请求向量
Figure BDA00016245221400000421
其中,
Figure BDA00016245221400000422
中的s∈[1,u]。
在本方案中,因为查询请求为多属性的范围查询请求,故在构建请求向量时,需要分别根据查询范围的低边界和高边界分别构造请求向量,其中,
Figure BDA00016245221400000423
为低边界和高边界的通用标示符,
Figure BDA00016245221400000424
为请求向量的通用标示符。
进一步的,采用kNN算法对所述请求向量
Figure BDA00016245221400000425
加密的方法为:
步骤S211:将d维请求向量
Figure BDA00016245221400000426
拆分为两个d维向量qa和qb,拆分规则为:
从字符串S的第1位开始,若第t位字符为1,则直接将请求向量
Figure BDA00016245221400000427
的第t位的值分别填充到向量qa和qb的第t位中;若第t位字符为0,则将请求向量
Figure BDA00016245221400000428
的第t位的值随机拆分为两个数值分别填充到向量qa和qb的第t位中;
步骤S212:将向量qa和qb分别乘以矩阵M1和M2的逆矩阵M1 -1和M2 -1,从而得到安全查询向量
Figure BDA00016245221400000429
在本方案中,先构造请求向量,然后采用kNN算法对请求向量加密,得到加密后的安全查询向量,再将安全查询向量从本地服务器发送给用户,最后由用户将安全查询向量发送给云端服务器。由此,在数据交互过程中汇总、传输的均为加密的内容,可以提高本方案的安全性。
进一步的,所述步骤S4中内积的计算方法为:
步骤S401:计算安全查询向量
Figure BDA0001624522140000051
与安全索引向量
Figure BDA0001624522140000052
的内积:
Figure BDA0001624522140000053
其中,s∈[1,u],
Figure BDA0001624522140000054
表示低边界
Figure BDA0001624522140000055
对应的安全查询向量,
Figure BDA0001624522140000056
表示高边界
Figure BDA0001624522140000057
对应的安全查询向量;
步骤S402:当Vk,1≤0且Vk,u≥0时,确定此时安全索引向量
Figure BDA0001624522140000058
对应的多属性密文数据属于目标数据密文。
因为在本方案中,与多属性密文数据集对应的索引是向量,而查询请求也被构造成向量,故云端服务器无需查看密文数据的具体内容,只需计算索引向量和查询向量的内积,即可确定索引向量对应的密文数据是否为用户需要查找的目标数据。由此,云端服务器根本不需要进行加密或解密操作,直接对加密后的向量进行计算即可得到目标数据密文,然后将目标数据密文返回给用户。整个过程中都是对加密后的内容进行操作,因为不可能存在泄漏明文数据的风险,进一步保证了本方案的安全性。
进一步的,在对所述请求向量
Figure BDA0001624522140000059
加密前,根据随机数f、r和h将请求向量扩充为请求矩阵,然后,将所述请求矩阵中的每一列数据作为一个向量,采用kNN算法对向量进行加密,得到安全查询矩阵,最后,通过计算安全索引向量
Figure BDA00016245221400000510
与所述安全查询矩阵的内积,得到一个中间向量,再计算该中间向量所有元素之和,通过判断该和值是否满足预设条件,当满足预设条件时,确定此时安全索引向量
Figure BDA00016245221400000511
对应的多属性密文数据属于目标数据密文;
其中,r∈R,h∈R且r+h>0,f∈[2,d];
所述将请求向量扩充为请求矩阵扩充方法为:
步骤S221:构建一个d行f列的请求矩阵
Figure BDA00016245221400000512
将请求矩阵
Figure BDA00016245221400000513
中的各个元素初始化为0;
步骤S222:从请求矩阵
Figure BDA00016245221400000514
的第一行开始,将
Figure BDA00016245221400000515
随机填充到请求矩阵第i行的任意列上,并使得请求矩阵
Figure BDA00016245221400000516
中每一列至少包含一个请求向量中的元素;
步骤S223:将请求矩阵
Figure BDA00016245221400000517
第i行的剩余位置上填充随机数,并使得请求矩阵
Figure BDA00016245221400000518
第i行填充的随机数之和为
Figure BDA00016245221400000519
由此得到请求矩阵
Figure BDA00016245221400000520
因为基础的kNN算法无法抵御选择明文攻击,故本发明方案,将请求向量扩充为请求矩阵,以在向量内积的结果中加入噪声,从而使攻击者无法通过技术手段获得明文信息,进一步提高本方案的安全性。因为向量与矩阵的乘积结果为一个向量,而将请求向量扩充为请求矩阵并加密为安全查询矩阵(包括低边界安全查询矩阵和高边界安全查询矩阵)后,安全索引向量与两个安全查询矩阵的内积将会是两个向量,故只有分别计算两个向量中各个元素之和,得到低边界对应的向量元素之和与高边界对应的向量元素之和,然后判断是否满足“边界对应的向量元素之和小于等于0且高边界对应的向量元素之和大于等于0”这一条件,来确定此时安全索引向量对应的密文数据是否为目标数据密文。若满足这一条件,则安全索引向量对应的密文数据为目标数据密文。
有益效果
本发明提供了一种基于云环境的多属性范围查询方法,本地服务器将数据集索引构造成索引向量并加密,将查询请求构造成请求向量并加密,云端服务器通过计算加密后的索引向量和请求向量的内积确定目标数据,从而实现高效的查询操作。同时,本地服务器将数据加密并打包发送至云端服务器中,用户可以直接对云端服务器中的密文进行多属性的范围查询,云端服务器接收到查询请求后,在不解密任何数据的情况下,检索出满足查询范围的数据,并将其返回给用户,期间所有的操作都是以密文的形式运行,保证云端服务器无法获知任何数据信息,保证数据的隐私安全。本方案的加密算法都只涉及独立的数据,且查询算法由服务器独立执行,不需要客户端与服务器额外的交互,效率高。
附图说明
图1是本发明提供的一种基于云环境的多属性范围查询方法的步骤示意图;
图2是本发明实施例提供的具体示例的流程图;
图3是本发明实施例提供的具体示例的明文数据集;
图4是本发明实施例提供的具体示例的索引向量;
图5是本发明实施例提供的具体示例的请求向量;
图6是本发明实施例提供的具体示例的内积计算结果;
图7是本发明实施例提供的具体实例的请求矩阵。
具体实施方式
为了更好的理解本发明方案的内容,下面结合具体实施例进行进一步阐述。
本发明实施例提供了一种基于云环境的多属性范围查询方法,包括:
步骤S1:本地服务器根据预设数据加密算法加密明文数据集得到密文数据集;步骤S2:本地服务器将与所述明文数据集对应的初始索引构造成索引向量,并采用预设的索引加密算法加密索引向量,得到安全索引向量,将所述密文数据集和安全索引向量发送给云端服务器;步骤S3:本地服务器根据用户发送的查询请求构造请求向量,并采用所述索引加密算法加密请求向量,得到安全查询向量,将所述安全查询向量发回用户;步骤S4:云端服务器根据用户转发的所述安全查询向量,计算安全索引向量与安全查询向量的内积,通过内积计算结果确定目标数据密文,并将所述目标数据密文发回用户;步骤S5:用户通过步骤S1的数据加密算法解密所述目标数据密文,得到目标数据明文。
在本实施例中,所述索引加密算法为kNN算法;所述索引加密密钥为SK=(sk,σ,L1,L2);其中,sk=(M1,M2,S),σ为随机排列数列[1,2,...,d]得到的洗牌函数,L1和L2均为长度为
Figure BDA0001624522140000071
的二进制随机字符串、该字符串仅由0和1构成且0和1的个数相等,d为正整数;M1和M2均为d行d列的可逆矩阵,S为一个长度为d的二进制随机字符串、该字符串仅由0和1构成且0和1的个数相等。现有文献资料《Secure knn Computation on Encrypted Databases》(W.K.Wong,D.W.-l.Cheung,B.Kao,and N.Mamoulis,Proc.Of SIGMOD,2009)公开了将kNN算法用于加密处理的方法,本发明则利用kNN算法来加密本方案中涉及的向量,从而加强方案中涉及向量的加密安全性。
在本实施例中,当所述明文数据集DS为DS={D1,D2,...,Di,...,Dn},n为正整数时,其中,每一个数据Di都对应包含m个属性值
Figure BDA0001624522140000072
的属性值集合Ai
Figure BDA0001624522140000073
1≤k≤m且m为正整数;每一个数据Di对应的每一个属性值
Figure BDA0001624522140000074
所对应的所述索引向量
Figure BDA0001624522140000075
的构造方法为:步骤S201:随机生成一个包含
Figure BDA0001624522140000076
个非负数的填充集合C,
Figure BDA0001624522140000077
Figure BDA0001624522140000078
且集合中所有数的和大于0;步骤S202:从第1位开始,依次填充索引向量
Figure BDA00016245221400000715
的前
Figure BDA0001624522140000079
位:当字符串L1的第t位字符为1时,填充
Figure BDA00016245221400000710
的第t位为
Figure BDA00016245221400000711
否则,填充
Figure BDA00016245221400000712
的第t位为1,其中,
Figure BDA00016245221400000713
步骤S203:从第
Figure BDA00016245221400000714
位开始,依次填充索引向量
Figure BDA0001624522140000081
的后
Figure BDA0001624522140000082
位:当字符串L2的第
Figure BDA0001624522140000083
位字符为1时,填充
Figure BDA0001624522140000084
的第t位为
Figure BDA0001624522140000085
并使x=x+1,否则,填充
Figure BDA0001624522140000086
的第t位为cy,并使y=y+1,其中,
Figure BDA0001624522140000087
步骤S204:采用洗牌函数σ对填充完毕后的索引向量
Figure BDA0001624522140000088
进行洗牌操作,得到洗牌后的索引向量
Figure BDA0001624522140000089
在本方案中,构造索引向量
Figure BDA00016245221400000810
时,每一个数据Di对应的每一个属性值
Figure BDA00016245221400000811
都对应一个索引向量
Figure BDA00016245221400000812
故每一个数据Di对应的为一个由m个索引向量构成的向量集合。
在本实施例中,采用kNN算法对所述索引向量
Figure BDA00016245221400000813
加密的方法为:步骤S211:将d维索引向量
Figure BDA00016245221400000814
拆分为两个d维向量pa和pb,拆分规则为:从字符串S的第1位开始,若第t位字符为1,则将索引向量
Figure BDA00016245221400000815
的第t位的值随机拆分为两个数值分别填充到向量pa和pb的第t位中;若第t位字符为0,则直接将索引向量
Figure BDA00016245221400000816
的第t位的值分别填充到向量pa和pb的第t位中;步骤S212:将向量pa和pb分别乘以矩阵M1和M2的置换矩阵M1 T和M2 T,从而得到安全索引向量
Figure BDA00016245221400000817
在本方案中,先构造索引向量,然后采用kNN算法对索引向量加密,得到加密后的安全索引向量,再将安全索引向量从本地服务器发送给云端服务器。由此,在数据交互过程汇总,传输的均为加密的内容,可以提高本方案的安全性。
在本实施例中,步骤S3中根据用户发送的查询请求构造请求向量的方法为:当所述查询请求为
Figure BDA00016245221400000818
时,根据低边界
Figure BDA00016245221400000819
构造请求向量
Figure BDA00016245221400000820
根据高边界
Figure BDA00016245221400000821
构造请求向量
Figure BDA00016245221400000822
请求向量
Figure BDA00016245221400000823
的构造方法为:步骤S301:随机生成一个包含
Figure BDA00016245221400000824
个非负数的填充集合
Figure BDA00016245221400000825
Figure BDA00016245221400000826
且集合中所有数的和大于0;步骤S302:从第1位开始,依次填充请求向量
Figure BDA00016245221400000827
的前
Figure BDA00016245221400000828
位:当字符串L1的第t位字符为1时,填充
Figure BDA00016245221400000829
的第t位为
Figure BDA00016245221400000830
并使x=x+1,否则,填充
Figure BDA00016245221400000831
的第t位为
Figure BDA00016245221400000832
并使y=y+1,其中,
Figure BDA00016245221400000833
步骤S303:从第
Figure BDA00016245221400000834
位开始,依次填充请求向量
Figure BDA00016245221400000835
的后
Figure BDA00016245221400000836
位:当字符串L2的第
Figure BDA00016245221400000837
位字符为1时,填充
Figure BDA00016245221400000838
的第t位为-1,否则,填充
Figure BDA00016245221400000839
的第t位为
Figure BDA00016245221400000840
其中,
Figure BDA00016245221400000841
步骤S304:采用洗牌函数σ对填充完毕后的请求向量
Figure BDA00016245221400000842
进行洗牌操作,得到洗牌后的请求向量
Figure BDA00016245221400000843
其中,
Figure BDA00016245221400000844
中的s∈[1,u]。在本方案中,因为查询请求为多属性的范围查询请求,故在构建请求向量时,需要分别根据查询范围的低边界和高边界分别构造请求向量,其中,
Figure BDA0001624522140000091
为低边界和高边界的通用标示符,
Figure BDA0001624522140000092
为请求向量的通用标示符。
在本实施例中,采用kNN算法对所述请求向量
Figure BDA0001624522140000093
加密的方法为:步骤S211:将d维请求向量
Figure BDA0001624522140000094
拆分为两个d维向量qa和qb,拆分规则为:从字符串S的第1位开始,若第t位字符为1,则直接将请求向量
Figure BDA0001624522140000095
的第t位的值分别填充到向量qa和qb的第t位中;若第t位字符为0,则将请求向量
Figure BDA0001624522140000096
的第t位的值随机拆分为两个数值分别填充到向量qa和qb的第t位中;步骤S212:将向量qa和qb分别乘以矩阵M1和M2的逆矩阵M1 -1和M2 -1,从而得到安全查询向量
Figure BDA0001624522140000097
在本方案中,先构造请求向量,然后采用kNN算法对请求向量加密,得到加密后的安全查询向量,再将安全查询向量从本地服务器发送给用户,最后由用户将安全查询向量发送给云端服务器。由此,在数据交互过程汇总,传输的均为加密的内容,可以提高本方案的安全性。
在本实施例中,所述步骤S4中内积的计算方法为:步骤S401:计算安全查询向量
Figure BDA0001624522140000098
与安全索引向量
Figure BDA0001624522140000099
的内积:
Figure BDA00016245221400000910
其中,s∈[1,u],
Figure BDA00016245221400000911
表示低边界
Figure BDA00016245221400000912
对应的安全查询向量,
Figure BDA00016245221400000913
表示高边界
Figure BDA00016245221400000914
对应的安全查询向量;步骤S402:当Vk,1≤0且Vk,u≥0时,确定此时安全索引向量
Figure BDA00016245221400000915
对应的多属性密文数据属于目标数据密文。因为在本方案中,与多属性密文数据集对应的索引是向量,而查询请求也被构造成向量,故云端服务器无需查看密文数据的具体内容,只需计算索引向量和查询向量的内积,即可确定索引向量对应的密文数据是否为用户需要查找的目标数据。由此,云端服务器根本不需要进行加密或解密操作,直接对加密后的向量进行计算即可得到目标数据密文,然后将目标数据密文返回给用户。整个过程中都是对加密后的内容进行操作,因为不可能存在泄漏明文数据的风险,进一步保证了本方案的安全性。
具体而言,假设本地服务器为数据拥有者,则流程图如图2所示。假设此时明文数据集为DS={D1,D2,D3,D4,D5}={(300,480),(350,420),(400,440),(450,520),(450,300)},且每个数据都具有二维属性值。用户的查询请求为从属性值为(380,460)的位置开始查询距离该点50以内的其他数据(如图3所示)。采用的预设数据加密算法为AES加密算法。
步骤S1:数据拥有者采用AES加密算法加密明文数据集,得到密文数据集。
步骤S2:数据拥有者根据kNN算法生成索引加密密钥,SK=(sk,σ,L1,L2)其中,L1="1100",L2="0011";并根据明文数据集构造索引向量:例如,
Figure BDA0001624522140000101
代表数据D1的第一维属性值300对应的索引向量,其对应的填充集合为C=(c1,c2)=(0.1,0),其构造过程为:(1)因为L1="1100",所以填充
Figure BDA0001624522140000102
(2)因为L2="0011",所以填充
Figure BDA0001624522140000103
最后得到的所有索引向量如图4所示。再通过kNN算法对所有的索引向量加密,得到安全索引向量。
步骤S3:数据拥有者将密文数据集合安全索引向量发送到云端服务器。
步骤S4:用户向数据拥有者发送查询请求Q={Q1,Q2}={[q1,1,q1,u],[q2,1,q2,u]}={[330,410],[430,510]}。
步骤S5:数据拥有者根据查询请求Q构造请求向量(如图5所示):例如,与q1,1对应的填充集合为
Figure BDA0001624522140000104
故填充过程为:(1)因为L1="1100",所以填充
Figure BDA0001624522140000105
(2)因为L2="0011",所以填充q1,1[5]=q1,1[6]=330,q1,1[7]=q1,1[8]=-1,其他请求向量以此类推。再通过kNN算法对请求向量加密,得到安全查询向量,并将该安全查询向量发回给所述用户。
步骤S6:用户将接收到的安全查询向量转发给云端服务器。
步骤S7:所述云端服务器在接收到安全查询向量后,开始计算安全查询向量与安全索引向量的内积。因
Figure BDA0001624522140000106
Figure BDA0001624522140000107
则计算结果如图6所示:可知满足条件Vk,1≤0且Vk,u≥0的数据仅有D2和D3。故云端服务器向用户返回数据D2和D3对应的密文数据。
步骤S8:用户根据AES加密算法对云端服务器返回的密文数据进行解密,得到解密后的明文数据D2和D3
在其他实施例中,还可以在对所述请求向量
Figure BDA0001624522140000108
加密前,根据随机数f、r和h将请求向量扩充为请求矩阵,然后,将所述请求矩阵中的每一列数据作为一个向量,采用kNN算法对向量进行加密,得到安全查询矩阵,最后,通过计算安全索引向量
Figure BDA0001624522140000109
与所述安全查询矩阵的内积,得到一个中间向量,再计算该中间向量所有元素之和,通过判断该和值是否满足预设条件,当满足预设条件时,确定此时安全索引向量
Figure BDA00016245221400001010
对应的多属性密文数据属于目标数据密文;其中,r∈R,h∈R且r+h>0,f∈[2,d];所述将请求向量扩充为请求矩阵扩充方法为:步骤S221:构建一个d行f列的请求矩阵
Figure BDA0001624522140000111
将请求矩阵
Figure BDA0001624522140000112
中的各个元素初始化为0;步骤S222:从请求矩阵
Figure BDA0001624522140000113
的第一行开始,将
Figure BDA0001624522140000114
随机填充到请求矩阵第i行的任意列上,并使得请求矩阵
Figure BDA0001624522140000115
中每一列至少包含一个请求向量中的元素;步骤S223:将请求矩阵
Figure BDA0001624522140000116
第i行的剩余位置上填充随机数,并使得请求矩阵
Figure BDA0001624522140000117
第i行填充的随机数之和为
Figure BDA0001624522140000118
由此得到请求矩阵
Figure BDA0001624522140000119
因为现有文献《Secure Nearest Neighbor Revisited》揭示了基础的kNN算法无法抵御选择明文攻击,故本发明方案,将请求向量扩充为请求矩阵,以在向量内积的结果中加入噪声,从而使攻击者无法通过技术手段获得明文信息,进一步提高本方案的安全性。因为向量与矩阵的乘积结果为一个向量,而将请求向量扩充为请求矩阵并加密为安全查询矩阵(包括低边界安全查询矩阵和高边界安全查询矩阵)后,安全索引向量与两个安全查询矩阵的内积将会是两个向量,故只有分别计算两个向量中各个元素之和,得到低边界对应的向量元素之和与高边界对应的向量元素之和,然后判断是否满足“边界对应的向量元素之和小于等于0且高边界对应的向量元素之和大于等于0”这一条件,来确定此时安全索引向量对应的密文数据是否为目标数据密文。若满足这一条件,则安全索引向量对应的密文数据为目标数据密文。
假设给定的请求向量为q1,1和q1,u,则根据上述方法构造的请求矩阵如图7所示。
本发明提供了一种基于云环境的多属性范围查询方法,本地服务器将数据集索引构造成索引向量并加密,将查询请求构造成请求向量并加密,云端服务器通过计算加密后的索引向量和请求向量的内积确定目标数据,从而实现高效的查询操作。同时,本地服务器将数据加密并打包发送至云端服务器中,用户可以直接对云端服务器中的密文进行多属性的范围查询,云端服务器接收到查询请求后,在不解密任何数据的情况下,检索出满足查询范围的数据,并将其返回给用户,期间所有的操作都是以密文的形式运行,保证云端服务器无法获知任何数据信息,保证数据的隐私安全。本方案的加密算法都只涉及独立的数据,且查询算法由服务器独立执行,不需要客户端与服务器额外的交互,效率高。
以上所述仅为本发明的实施例而已,并不用以限制本发明,凡在本发明精神和原则之内,所作任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于云环境的多属性范围查询方法,其特征在于,包括:
步骤S1:本地服务器根据预设数据加密算法加密明文数据集得到密文数据集;
步骤S2:本地服务器将与所述明文数据集对应的初始索引构造成索引向量,并采用预设的索引加密算法加密索引向量,得到安全索引向量,将所述密文数据集和安全索引向量发送给云端服务器;
步骤S3:本地服务器根据用户发送的查询请求构造请求向量,并采用所述索引加密算法加密请求向量,得到安全查询向量,将所述安全查询向量发回用户;
步骤S4:云端服务器根据用户转发的所述安全查询向量,计算安全索引向量与安全查询向量的内积,通过内积计算结果确定目标数据密文,并将所述目标数据密文发回用户;
步骤S5:用户通过步骤S1的数据加密算法解密所述目标数据密文,得到目标数据明文;
所述索引加密算法为kNN算法;
所述索引加密密钥为SK=(sk,σ,L1,L2);
其中,sk=(M1,M2,S),σ为随机排列数列[1,2,...,d]得到的洗牌函数,L1和L2均为长度为
Figure FDA0002486146170000011
的二进制随机字符串,该字符串仅由0和1构成且0和1的个数相等,d为正整数;
M1和M2均为d行d列的可逆矩阵,S为一个长度为d的二进制随机字符串,该字符串仅由0和1构成且0和1的个数相等;
当所述明文数据集DS为DS={D1,D2,...,Di,...,Dn},n为正整数时,其中,每一个数据Di都对应包含m个属性值
Figure FDA0002486146170000012
的属性值集合Ai
Figure FDA0002486146170000013
1≤k≤m且m为正整数;
每一个数据Di对应的每一个属性值
Figure FDA0002486146170000014
所对应的所述索引向量
Figure FDA0002486146170000015
的构造方法为:
步骤S201:随机生成一个包含
Figure FDA0002486146170000016
个非负数的填充集合C,
Figure FDA0002486146170000017
Figure FDA0002486146170000018
且集合中所有数的和大于0;
步骤S202:从第1位开始,依次填充索引向量
Figure FDA0002486146170000019
的前
Figure FDA00024861461700000110
位:
当字符串L1的第t位字符为1时,填充
Figure FDA00024861461700000111
的第t位为
Figure FDA00024861461700000112
否则,填充
Figure FDA00024861461700000113
的第t位为1,其中,
Figure FDA00024861461700000114
步骤S203:从第
Figure FDA00024861461700000115
位开始,依次填充索引向量
Figure FDA00024861461700000116
的后
Figure FDA00024861461700000117
位:
当字符串L2的第
Figure FDA0002486146170000021
位字符为1时,填充
Figure FDA0002486146170000022
的第t位为
Figure FDA0002486146170000023
并使x=x+1,否则,填充
Figure FDA0002486146170000024
的第t位为cy,并使y=y+1,其中,
Figure FDA0002486146170000025
步骤S204:采用洗牌函数σ对填充完毕后的索引向量
Figure FDA0002486146170000026
进行洗牌操作,得到洗牌后的索引向量
Figure FDA0002486146170000027
步骤S3中根据用户发送的查询请求构造请求向量的方法为:
当所述查询请求为
Figure FDA0002486146170000028
k∈[1,m]时,根据低边界
Figure FDA0002486146170000029
构造请求向量
Figure FDA00024861461700000210
根据高边界
Figure FDA00024861461700000211
构造请求向量
Figure FDA00024861461700000212
请求向量
Figure FDA00024861461700000213
的构造方法为:
步骤S301:随机生成一个包含
Figure FDA00024861461700000214
个非负数的填充集合
Figure FDA00024861461700000215
Figure FDA00024861461700000216
Figure FDA00024861461700000217
且集合中所有数的和大于0;
步骤S302:从第1位开始,依次填充请求向量
Figure FDA00024861461700000218
的前
Figure FDA00024861461700000219
位:
当字符串L1的第t位字符为1时,填充
Figure FDA00024861461700000220
的第t位为
Figure FDA00024861461700000221
并使x=x+1,否则,填充
Figure FDA00024861461700000222
的第t位为
Figure FDA00024861461700000223
并使y=y+1,其中,
Figure FDA00024861461700000224
步骤S303:从第
Figure FDA00024861461700000225
位开始,依次填充请求向量
Figure FDA00024861461700000226
的后
Figure FDA00024861461700000227
位:
当字符串L2的第
Figure FDA00024861461700000228
位字符为1时,填充
Figure FDA00024861461700000229
的第t位为-1,否则,填充
Figure FDA00024861461700000230
的第t位为
Figure FDA00024861461700000231
其中,
Figure FDA00024861461700000232
步骤S304:采用洗牌函数σ对填充完毕后的请求向量
Figure FDA00024861461700000233
进行洗牌操作,得到洗牌后的请求向量
Figure FDA00024861461700000234
其中,
Figure FDA00024861461700000235
中的s∈[1,u]。
2.根据权利要求1所述的方法,其特征在于,采用kNN算法对所述索引向量
Figure FDA00024861461700000236
加密的方法为:
步骤S211:将d维索引向量
Figure FDA00024861461700000237
拆分为两个d维向量pa和pb,拆分规则为:
从字符串S的第1位开始,若第t位字符为1,则将索引向量
Figure FDA00024861461700000238
的第t位的值随机拆分为两个数值分别填充到向量pa和pb的第t位中;若第t位字符为0,则直接将索引向量
Figure FDA0002486146170000031
的第t位的值分别填充到向量pa和pb的第t位中;
步骤S212:将向量pa和pb分别乘以矩阵M1和M2的置换矩阵M1 T和M2 T,从而得到安全索引向量
Figure FDA0002486146170000032
3.根据权利要求2所述的方法,其特征在于,采用kNN算法对所述请求向量
Figure FDA0002486146170000033
加密的方法为:
步骤S311:将d维请求向量
Figure FDA0002486146170000034
拆分为两个d维向量qa和qb,拆分规则为:
从字符串S的第1位开始,若第t位字符为1,则直接将请求向量
Figure FDA0002486146170000035
的第t位的值分别填充到向量qa和qb的第t位中;若第t位字符为0,则将请求向量
Figure FDA0002486146170000036
的第t位的值随机拆分为两个数值分别填充到向量qa和qb的第t位中;
步骤S312:将向量qa和qb分别乘以矩阵M1和M2的逆矩阵M1 -1和M2 -1,从而得到安全查询向量
Figure FDA0002486146170000037
4.根据权利要求3所述的方法,其特征在于,所述步骤S4中内积的计算方法为:
步骤S401:计算安全查询向量
Figure FDA0002486146170000038
与安全索引向量
Figure FDA0002486146170000039
的内积:
Figure FDA00024861461700000310
其中,s∈[1,u],
Figure FDA00024861461700000311
表示低边界
Figure FDA00024861461700000312
对应的安全查询向量,
Figure FDA00024861461700000313
表示高边界
Figure FDA00024861461700000314
对应的安全查询向量;
步骤S402:当Vk,1≤0且Vk,u≥0时,确定此时安全索引向量
Figure FDA00024861461700000315
对应的多属性密文数据属于目标数据密文。
5.根据权利要求4所述的方法,其特征在于,在对所述请求向量
Figure FDA00024861461700000316
加密前,根据随机数f、r和h将请求向量扩充为请求矩阵,然后,将所述请求矩阵中的每一列数据作为一个向量,采用kNN算法对向量进行加密,得到安全查询矩阵,最后,通过计算安全索引向量
Figure FDA00024861461700000317
与所述安全查询矩阵的内积,得到一个中间向量,再计算该中间向量所有元素之和,通过判断该和值是否满足预设条件,当满足预设条件时,确定此时安全索引向量
Figure FDA00024861461700000318
对应的多属性密文数据属于目标数据密文;
其中,r∈R,h∈R且r+h>0,f∈[2,d];
所述将请求向量扩充为请求矩阵扩充方法为:
步骤S321:构建一个d行f列的请求矩阵
Figure FDA0002486146170000041
将请求矩阵
Figure FDA0002486146170000042
中的各个元素初始化为0;
步骤S322:从请求矩阵
Figure FDA0002486146170000043
的第一行开始,将
Figure FDA0002486146170000044
随机填充到请求矩阵第i行的任意列上,并使得请求矩阵
Figure FDA0002486146170000045
中每一列至少包含一个请求向量中的元素;
步骤S323:将请求矩阵
Figure FDA0002486146170000046
第i行的剩余位置上填充随机数,并使得请求矩阵
Figure FDA0002486146170000047
第i行填充的随机数之和为
Figure FDA0002486146170000048
由此得到请求矩阵
Figure FDA0002486146170000049
CN201810318428.9A 2018-04-11 2018-04-11 一种基于云环境的多属性范围查询方法 Active CN108595554B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810318428.9A CN108595554B (zh) 2018-04-11 2018-04-11 一种基于云环境的多属性范围查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810318428.9A CN108595554B (zh) 2018-04-11 2018-04-11 一种基于云环境的多属性范围查询方法

Publications (2)

Publication Number Publication Date
CN108595554A CN108595554A (zh) 2018-09-28
CN108595554B true CN108595554B (zh) 2020-06-30

Family

ID=63621869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810318428.9A Active CN108595554B (zh) 2018-04-11 2018-04-11 一种基于云环境的多属性范围查询方法

Country Status (1)

Country Link
CN (1) CN108595554B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992978B (zh) * 2019-03-05 2021-03-26 腾讯科技(深圳)有限公司 信息的传输方法、装置及存储介质
CN110765238A (zh) * 2019-10-12 2020-02-07 北京字节跳动网络技术有限公司 数据加密查询方法及装置
CN111104434B (zh) * 2019-11-25 2022-01-18 北京理工大学 一种基于隐私保护多级属性相似度的电子医疗推荐方法
CN112307149B (zh) * 2020-10-30 2022-11-25 陕西师范大学 一种具有访问模式保护的空间数据范围查询方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326360A (zh) * 2016-08-10 2017-01-11 武汉科技大学 一种云环境中密文数据的模糊多关键词检索方法
CN106559422A (zh) * 2016-11-10 2017-04-05 西安电子科技大学 基于密钥协商的多维密文区间查询方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EA036613B1 (ru) * 2016-06-22 2020-11-30 Автономная некоммерческая образовательная организация высшего образования "Сколковский институт науки и технологий" Двухрежимная схема шифрования, обеспечивающая сравнение, основанное на индексировании

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326360A (zh) * 2016-08-10 2017-01-11 武汉科技大学 一种云环境中密文数据的模糊多关键词检索方法
CN106559422A (zh) * 2016-11-10 2017-04-05 西安电子科技大学 基于密钥协商的多维密文区间查询方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Adaptive Indexing over Encrypted Numeric Data;Panagiotis Karras et al.;《Proceedings of the 2016 International Conference on Management of Data, SIGMOD 16》;20160701;论文第3部分 PROPOSED ENCRYPTION SCHEME *
Multi-Dimensional Range Query over Encrypted Data;E.Shi,J.Bethencourt,T.H.Chan,D.Song and A.Perrig;《2007 IEEE Symposium on Security and Privacy》;20070604;全文 *
Secure kNN Computation on Encrypted Databases;W. K. Wong, David W. Cheung, Ben Kao, and Nikos Mamoulis;《Proceedings of the ACM SIGMOD International Conference on Management of Data, SIGMOD 2009》;20090702;全文 *
云计算中模糊关键词可搜索加密方案研究;袁小龙;《中国优秀硕士学位论文全文数据库-信息科技辑》;20170315(第03期);全文 *

Also Published As

Publication number Publication date
CN108595554A (zh) 2018-09-28

Similar Documents

Publication Publication Date Title
US11144663B2 (en) Method and system for search pattern oblivious dynamic symmetric searchable encryption
CN108595554B (zh) 一种基于云环境的多属性范围查询方法
US9355271B2 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
CN108494768B (zh) 一种支持访问控制的密文搜索方法及系统
Mayberry et al. Efficient private file retrieval by combining ORAM and PIR
US8904171B2 (en) Secure search and retrieval
CN112270006A (zh) 电商平台中隐藏搜索模式和访问模式的可搜索加密方法
CN109740362B (zh) 一种基于熵编码的密文索引生成与检索方法及系统
CN104657673A (zh) 平均复杂度理想安全的保序加密
CN111541679B (zh) 一种云环境下基于秘密共享的图像安全检索方法
CN103049466A (zh) 一种基于分布式密文存储的全文检索方法及系统
CN106874516A (zh) 一种云存储中基于kcb树和布隆过滤器的高效密文检索方法
CN104967693A (zh) 面向云存储的基于全同态密码技术的文档相似度计算方法
CN107766739A (zh) 面向加密文本数据的短语检索方法及其装置
CN114139194A (zh) 一种基于任务内容的隐私保护任务分配方法
CN109672525B (zh) 一种具有前向索引的可搜索公钥加密方法及系统
US20230006813A1 (en) Encrypted information retrieval
WO2019178792A1 (zh) 一种支持访问控制的密文搜索方法及系统
CN111797097B (zh) 一种基于软硬件结合的方式实现安全范围查询的方法
Jiang et al. A novel privacy preserving keyword search scheme over encrypted cloud data
CN115225260B (zh) 一种动态可搜索加密方法
EP4283485A2 (en) Multi-key information retrieval
CN115168909B (zh) 一种基于比较索引的密文数据范围查询方法和系统
CN117076406A (zh) 文档存储方法、系统、装置、计算机设备和存储介质
Jordão et al. Secure data storage in distributed cloud environments

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