CN112800088A - 基于双向安全索引的数据库密文检索系统及方法 - Google Patents
基于双向安全索引的数据库密文检索系统及方法 Download PDFInfo
- Publication number
- CN112800088A CN112800088A CN202110068413.3A CN202110068413A CN112800088A CN 112800088 A CN112800088 A CN 112800088A CN 202110068413 A CN202110068413 A CN 202110068413A CN 112800088 A CN112800088 A CN 112800088A
- Authority
- CN
- China
- Prior art keywords
- encryption
- database
- data
- key
- proxy server
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6245—Protecting personal data, e.g. for financial or medical purposes
Abstract
本发明提供一种基于双向安全索引的数据库密文检索系统及方法,所述系统包括客户端、数据库服务器和代理服务器,客户端用于上传包含明文数据的文件或SQL查询语句,代理服务器创建本地密钥库,对数据进行加密、解密处理,对SQL查询语句进行重写生成能查询密文数据库的查询语句,数据库服务器对用户进行身份认证,解析查询语句并查询密文数据,可随时更新安全索引,可在保证数据机密性的前提下,支持用户高效查询加密数据库内的数据,通过采用双向索引结构,提高密文数据库的查询效率。同时支持多种SQL语句查询,包含等值查询、布尔查询、范围查询、排序查询、比较查询、分组查询以及聚合查询,满足实际业务需求的同时保证高效的密态数据库查询。
Description
技术领域
本发明涉及可搜索加密技术领域,具体涉及一种基于双向安全索引的数据库密文检索系统及方法。
背景技术
随着云计算的普及,越来越多的互联网公司把自己的数据外包给第三方云服务公司以减少成本开销,但这也带来了数据泄露的安全危机。为了防止机密数据外泄,互联网公司采取加密数据的措施来保证数据机密性。然而,标准的加密措施只能保证数据的完整性和机密性,无法高效的对密态数据库中的加密数据进行有效的操作例如数据检索,使得原来可以在明文上进行的查询、聚合、排序等数据库操作无法有效进行。
现有的解决数据库中数据泄露的方法有很多,比如通过访问控制策略解决网站中的数据安全问题,但是此方案无法解决第三方云服务公司的恶意管理员窃取用户数据信息;其他的方案通过加密数据来解决数据泄露问题,如CryptDB通过多层洋葱模型加密数据库,虽然保证了数据的机密性,但是多层加密带来严重的使用效率慢问题;同时,部分加密数据库方案只支持简单的SQL查询,无法完成业务需求。
发明内容
针对现有技术的不足,本发明提出一种基于双向安全索引的数据库密文检索系统,包括客户端、数据库服务器和代理服务器;
所述客户端用于接收用户上传的包含结构化明文数据的文件或SQL查询语句,并上传到代理服务器,同时接收代理服务器反馈回来的明文数据;
所述代理服务器用于在代理服务器上创建本地密钥库,对用户上传的明文数据进行加密,对数据库服务器反馈回来的密文数据进行解密处理,还用于提取明文数据表中的关键字信息生成数据字典,根据数据字典生成等值安全索引和保序安全索引,还用于提取用户上传的SQL查询语句中包含的关键字信息,对关键字信息进行加密处理并生成陷门,对SQL查询语句进行重写生成能查询密文数据库中密文数据的查询语句;
所述数据库服务器用于对用户进行身份认证和安全性检测,并根据代理服务器上传的陷门和重写后的SQL查询语句提取密文数据,还用于将SQL查询语句更新后的关键字信息同步到安全索引中。
所述代理服务器包括密钥生成模块、数据结构信息加密模块、加密策略表创建模块、数据字典创建模块、安全索引建立模块、密钥管理模块、加密数据库创建模块、数据加密解密模块、陷门生成模块和查询语句重写模块;
所述密钥生成模块用于在代理服务器上创建本地密钥库,并根据主密钥km利用伪随机数函数和Hash散列函数创建三种加密密钥,所述三种加密密钥包括用于满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法的加密密钥kα、用于Hash散列函数的加密密钥kβ以及用于MAC消息认证的加密密钥kγ;
所述数据结构信息加密模块用于提取明文数据表的数据库结构信息,所述数据库结构信息包括数据库名、明文数据表名和明文数据表中的所有列名,并对结构信息进行Hash加密处理;
所述加密策略表创建模块用于根据Hash处理后的明文数据表的数据库结构信息生成对应的加密策略表,加密策略表用于记录密文数据库中每一列的加密信息,所述加密信息包括Hash加密后的列名以及每一列对应的加密算法;
所述数据字典创建模块用于创建兼容云端数据库存储格式的包含每一项明文数据关键字信息的数据字典;
所述安全索引建立模块用于构造包含明文数据的关键字信息所在位置的标识符rowID的安全索引,并根据明文数据类型生成对应类型的安全索引;
所述密钥管理模块用于对用户进行身份和权限管理验证后提取密文数据库中的三种加密密钥kα、kβ、kγ;
所述加密数据库创建模块用于根据明文数据表生成加密后的数据库名、表名和列名创建存储密文数据的密文数据库;
所述数据加密解密模块用于对本地密钥库中的密钥进行加盐处理,盐值由根据加密后的数据库名、表名和列名输入到伪随机数函数中生成,使用满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法对明文数据进行加密生成密文数据,解密时从本地密钥库提取对应的密钥,对密文数据进行解密;
所述陷门生成模块用于对SQL查询语句中的关键字信息进行满足IND-CPA安全的非确定性对称加密,若SQL查询语句中的包含范围查询语句块,则对数值型关键字信息进行保序加密,并生成能够解密安全索引的陷门上传到云端服务器;
所述查询语句重写模块用于将用户上传的SQL查询语句改写成能查询密文数据库中密文数据的查询语句。
所述数据库服务器包括身份认证模块、解析查询语句模块、安全索引更新模块,UDF聚合计算模块;
所述身份认证模块用于系统对用户进行身份验证和安全性检测;
所述解析查询语句模块用于解析代理服务器上传的陷门,通过解析陷门得到密文数据在密文数据库中位置的标识符rowID,并获取对应的密文数据;
所述安全索引更新模块用于处理客户端发出的SQL更新语句update,将更新后的关键字信息同步到安全索引中;
所述UDF聚合计算模块用于处理聚合查询请求,调用用户自定义函数UDF对存储同态加密数据值的属性列中的密文数据进行同态相乘计算,将密文计算结果返回给代理服务器。
一种采用基于双向安全索引的数据库密文检索系统的检索方法,包括系统初始化方法、密文数据存储方法、密文数据库查询方法三部分;所述系统初始化方法,包括以下步骤:
步骤S1:用户输入身份认证信息给数据库服务器,身份认证模块验证用户是否有权限使用云端数据库,若是,则继续步骤S2,若否,则数据库服务器将“用户信息认证失败”提示消息返回给客户端,系统初始化结束;
步骤S2:若验证通过,数据库服务器将认证成功信息发送给代理服务器,代理服务器判断本地密钥库是否存在,若本地密钥库不存在则继续步骤S2.1,若本地密钥库存在则继续步骤S5;
步骤S2.1:代理服务器向客户端索要创建密文数据库的主密钥km;
步骤S2.2:用户输入密文数据库的主密钥km给代理服务器;
步骤S2.3:代理服务器创建密文数据库并将用户输入的主密钥km作为使用密文数据库的密钥;
步骤S3:代理服务器端调用密钥管理模块生成三种加密密钥,分别为用于满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法的加密密钥kα、用于Hash散列函数的加密密钥kβ以及用于MAC消息认证的加密密钥kγ;所述加密密钥生成公式如下:
kα,kβ,kγ=Random(Hash(km,uid))
式中,Random()表示伪随机数函数,Hash()表示哈希散列函数,uid表示用户的身份ID;
步骤S4:代理服务器将三种加密密钥kα、kβ、kγ存入本地密钥库中;
步骤S5:将系统使用界面发送给客户端,系统初始化结束;
所述密文数据存储方法,包括以下步骤:
步骤Ca1:客户端向代理服务器发送封装后的明文数据集;
步骤Ca2:代理服务器调用数据结构信息加密模块提取明文数据集中每个明文数据表的数据库结构信息,并对数据库结构信息进行Hash加密处理;
步骤Ca3:代理服务器调用加密数据库创建模块,根据明文数据表生成Hash加密后的数据库名、表名和列名创建存储密文数据的密文数据库;
步骤Ca4:代理服务器调用加密策略表创建模块,生成加密策略表保存在代理服务器端,用于记录密文数据库每一列的加密方式信息;加密策略表创建语句如下:
CREATE TABLE ENCRYPT_SCHEMA(colName text,encolName text,Type varchar(20),Algorithm varchar(20));
式中,CREATE TABLE表示创建数据表的语句,ENCRYPT_SCHEMA表示加密策略表的表名;colName表示明文数据表中的列名;encolName表示Hash加密后的列名;Type表示明文数据类型;Algorithm表示加密算法;
步骤Ca5:代理服务器调用数据字典创建模块遍历所有明文数据;
步骤Ca6:代理服务器调用数据字典创建模块提取明文数据的关键字信息,并创建数据字典;
步骤Ca7:代理服务器调用数据字典创建模块,根据创建的数据字典生成明文数据表中的关键字信息所在列的位置标识符rowID,并将位置标识符以集合的形式存入关键字信息标识符集合rowList中;关键字信息标识符集合rowList的结构表示为:
式中,mn表示明文数据表中包含第n个关键字的记录数;
若明文数据为数值型数据,代理服务器调用数据字典创建模块,根据创建的数据字典,生成明文数据表中的关键字信息所在列的位置标识符rowID,并将位置标识符集合存入保序标识符集合colList中;保序标识符集合colList的结构表示为:
colList={colName1:{w1:[rowID1,rowID2,…,rowIDm1],
式中,c表示明文数据表中包含数值型属性列的记录数;
步骤Ca8:代理服务器调用安全索引建立模块,为明文数据表新增一列存储标识符rowID的列,用于存储每组明文数据关键字信息所在列位置的标识符;
式中,rowIDj表示一个关键字对应的第j个标识符,ki,j表示解密下一个节点的密钥,p()表示大数组Le的索引位置,ctr表示当前节点的标号;
式中,rowIDSeti表示第i个关键字信息对应的位置标识符集合,ORE()表示保序加密函数,vi表示第i个关键字信息;
步骤Ca10:代理服务器调用安全索引建立模块,构造双向哈希等值安全索引Se和保序安全索引So;
步骤Ca11:代理服务器调用加密数据库创建模块,根据加密后的数据库名、表名以及列名生成密文数据库;
步骤Ca12:代理服务器调用数据加密解密模块从密钥库中提取加密密钥kα并使用伪随机数函数生成盐值对加密密钥kα进行加盐处理,生成加盐后的加密密钥Salt(kα),然后使用Salt(kα)对明文数据使用满足IND-CPA安全的非确定性加密算法进行加密,对数值型数据进行保序加密和同态加密计算生成密文数据;加盐后的加密密钥结构表示为:
Salt(kα)=kα+Hash(db+tableName+colName)
式中,db表示数据库名,tableName表示表名;
步骤Ca13:代理服务器将密文数据以及安全索引发送给数据库服务器;
步骤Ca14:数据库服务器接收并存储密文数据和安全索引到数据库中,密文数据存储结束;
所述密文数据库查询方法,包括以下步骤:
步骤Z1:用户向客户端上传查询请求,客户端将查询请求发送给代理服务器;
步骤Z2:代理服务器对上传的SQL查询语句进行解析,若用户输入查询请求时出现SQL语法错误,则代理服务器将“SQL语法错误”提示消息返回客户端,返回步骤Z1,若用户输入查询请求时SQL语法正确,则继续步骤Z3;
步骤Z3:代理服务器调用陷门生成模块提取SQL查询语句中的关键字信息,并生成对应的陷门,若SQL查询语句中包含等值类型的查询语块,则继续步骤Z3.1,若SQL查询语句中包含范围查询、排序查询、比较查询以及分组查询语块,则继续步骤Z3.4;若SQL查询语句中包含聚合查询语块,则继续步骤Z4;
步骤Z3.1:代理服务器调用陷门生成模块以“属性=数据明文值”的形式提取等值类型查询语句中的关键字信息;
步骤Z3.2:代理服务器调用陷门生成模块提取出本地密钥库的加密密钥kα,并对等值类型查询语句中的关键字信息采用满足IND-CPA安全的非确定性加密算法进行非确定性加密;
等值类型查询语句关键字信息加密公式如下:
Encrypt_keyworde=CBC(keyword,Salt(kα))
式中,Encrypt_keyworde表示加密后的等值类型查询语句的关键字,keyword表示关键字,CBC()表示满足IND-CPA安全的非确定性加密算法;
步骤Z3.3:代理服务器调用陷门生成模块提取hash散列函数密钥kβ对加密后的关键字进行Hash加密,并生成等值型陷门,陷门生成结束继续步骤Z4;所述等值型陷门Tropdoore表示为:
Tropdoore={Hash(Encrypt_keyworde,kβ),MAC(keyword,kγ)}
式中,MAC()表示消息认证加密函数;
步骤Z3.4:代理服务器调用陷门生成模块提取本地密文数据库的加密密钥kα,并对范围查询语句中的关键信息采用ORE加密算法进行保序加密;
所述范围查询语句关键字信息加密公式如下:
Encrypt_keywordo=ORE(keyword,Salt(kα))
式中,Encrypt_keywordo表示加密后的范围查询语句的关键字,ORE()表示保序加密函数;
步骤Z3.5:代理服务器调用陷门生成模块提取hash散列函数密钥kβ对保序加密后的关键字信息进行Hash加密,并生成范围型陷门,陷门生成结束继续步骤Z4;
所述范围型陷门Tropdooro表示为:
Tropdooro={Hash(Encrypt_keywordo,kβ),MAC(keyword,kγ)}
步骤Z4:代理服务器调用数据加密解密模块,提取SQL查询语句中的数据库结构信息;
步骤Z5:代理服务器调用数据加密解密模块,从加密策略表中查询对应SQL查询语句的数据库加密信息;
步骤Z6:代理服务器调用数据加密解密模块,提取本地密钥库中的加密密钥kα对SQL查询语句中的关键字使用满足IND-CPA安全的非确定性加密算法进行加密操作;
步骤Z7:代理服务器端调用查询语句重写模块,对查询语句进行重写操作,然后将重写后的SQL查询语句和陷门发送给数据库服务器;
重写后的查询语句Encrypt_SQL表示为:
Encrypt_SQL={SELECTencColName FROM encTableName WHERE(inside onTropdoor)}
式中,SELECT FROM WHERE表示SQL查询语句格式,encColName表示加密后的待查询的列名,encTableName表示加密后待查询的表名,inside on表示自定义的SQL关键词,Tropdoor表示陷门;
步骤Z8:数据库服务器调用解析查询语句模块,判断查询语句的类型,若查询语句为单表查询、等值查询、布尔查询、范围查询、分组查询、排序查询、比较查询则继续步骤Z9,若查询语句为聚合查询则继续步骤Z8.1;
步骤Z8.1:数据库服务器调用UDF聚合计算模块,对查询语句中指定的聚合计算属性列中的密文值进行相乘,将计算后的结果返回给代理服务器,继续步骤Z14;
步骤Z9:数据库服务器调用解析查询语句模块,提取陷门中加密后的关键字信息;
步骤Z10:数据库服务器调用解析查询语句模块,根据加密后的关键字信息对应的安全索引查找到加密数据在密文数据库中的标识符rowID,若没有在安全索引中查找到标识符rowID,则数据库服务器将“没有查找结果”提示信息返回给客户端,返回步骤Z1;若查找到则获取Hash表中初始节点;
步骤Z11:数据库服务器调用解析查询语句模块,解析初始节点的信息,获取后续节点在链表中的索引位置;
步骤Z12:数据库服务器调用解析查询语句模块,查找陷门中的加密后的关键字信息在链表中的索引位置,获得加密信息对应的标识符;
步骤Z13:数据库服务器调用解析查询语句模块,根据加密信息对应的标识符获取密文数据库中对应的密文数据,并将查询到的密文数据发送给代理服务器;
步骤Z14:代理服务器调用数据加密解密模块对数据库服务器发送的密文查询结果进行解密,得到明文查询结果;
步骤Z15:代理服务器向客户端发送明文查询结果,客户端将明文查询结果显示给用户,加密数据库查询结束。
所述步骤Ca6包括:
步骤Ca6.1:代理服务器调用数据字典创建模块以“属性=数据明文值”的格式提取明文数据的关键字信息,并生成关键字集合W和数据字典Dic;提取关键字信息的公式如下:
columnAttribute=value
式中,columnAttribute表示数据表中明文列列名,value表示该列对应的某一条记录值;
关键字集合W的结构如下:
W={w1,w2,w3,…wi,…,wn},i=1,2,…n
式中,wi为第i个关键字信息的值,n为关键字去重后的个数;
数据字典Dic的结构如下:
Dic={w1:num1,w2:num2,w3:num3,…,wi:numi,…,wn:numn}
式中,numi为第i个关键字信息出现的次数;
步骤Ca6.2:代理服务器调用数据字典创建模块以“属性=列名”的格式提取明文数据的关键字信息,并生成保序关键字集合Wo和保序数据字典dicSet;
Wo={tableName1:{w1,w2},tableName2:{w3},…,tableNamex:{wn}}
式中,tableName表示明文属性列名,x表示明文数据表中数值型属性列的个数;
保序数据字典dicSet的结构如下:
dicSet={tableName1:{w1:num1,w2:num2},tableName2:{w3:num3},…,tableNamex:{wn:numn}}
所述步骤Ca10包括:
步骤Ca10.1:代理服务器构建等值安全索引Se,包含哈希表Te和链表Ae,哈希表Te用于存储Le的初始节点Pi,链表Ae用于以伪随机排序顺序地存储Le中所有等值关键字节点的信息,等值安全索引构建结束;
所述初始节点Pi的结构表示为:
Pi=<addr[Ae(Ni,j)]||ki,0>
式中,addr[]表示后续节点Ni,j在链表Ae中的索引位置,Ae(Ni,j)表示存储在Ae中的节点Ni,j,ki,0表示解密后续节点Ni,1的密钥;
哈希表Te的结构表示为:
Te={Encrypt_keyworde:(prf(keyword,kγ)xorPi)}
式中,Encrypt_keyworde表示非确定性对称加密后的关键字信息,prf表示MAC消息认证加密函数,xor表示异或操作;
步骤Ca10.2:代理服务器构建保序安全索引So,包含哈希表To和链表Ao,哈希表To用于存储Lo的初始节点Pi,链表Ao用于存储Lo中所有保序关键字节点的信息,保序安全索引构建结束;哈希表To的结构表示为:
To={Encrypt_keywordo:(prf(keyword,kγ)xorPi)}
式中,Encrypt_keywordo表示保序加密后的关键字信息。
本发明的有益效果是:
本发明提出了一种基于双向安全索引的数据库密文检索系统及方法,根据可搜索加密技术特性,保证数据机密性的前提下,支持用户高效查询加密数据库内的数据,通过采用双向索引结构,减少数据库存储和内存消耗,同时减少用户本地的计算开销,将计算压力分摊给第三方云服务商,并且本发明检索功能尊重SQL语句语义,仅要求用户输入语义正确的SQL语句,系统对用户的查询语句进行改写,在此基础上实现单表查询、等值查询、布尔查询、范围查询、分组查询、排序查询、比较查询以及聚合查询,满足用户实现多种不同的SQL查询的需求。
附图说明
图1为本发明中的基于双向安全索引的数据库密文检索系统框图;
图2为本发明中的于双向安全索引的数据库密文检索系统架构图;
图3为本发明中的基于双向安全索引的数据库密文检索系统的检索方法流程图,其中(a)为系统初始化流程图;(b)为密文数据存储流程图;(c)为查询密文数据库流程图;
图4为本发明中的身份认证流程图;图5为本发明中的数据字典创建流程图;
图6为本发明中的安全索引建立流程图;图7为本发明中的陷门生成流程图;
图8为本发明中的解析查询语句流程图;图9为本发明中的系统初始化时序图;
图10为本发明中的密文数据存储时序图;图11为本发明中的查询密文数据库时序图。
具体实施方式
下面结合附图和具体实施实例对发明做进一步说明。本发明首先对对称可搜索加密进行研究,基于对称加密算法,实现数据在客户端加密和解密,用户和云服务器交互的数据皆是密文格式。其次,本发明优化倒排安全索引(Inverted Index)结构,提出了基于布谷鸟哈希表和链表的双向索引结构,并将关键数据以伪随机连续的加密节点方式存储在双层安全索引中,用户通过查询索引内容来确定加密数据在密态数据库中的地址位置从而得到特定的密文数据。同时为了节约范围查询、聚合查询以及排序等数据库操作的性能开销,本发明针对数值型明文数据构建专门的保序索引,用于保存数值型明文数据的数值大小关系。通过查询数据所在地址位置而非查询数据的特定值的方式,既保证外包数据的机密性,又可以对加密数据库中的数据进行高效且准确的查询。
如图1~2所示,一种基于双向安全索引的数据库密文检索系统,采用JAVA语言开发,包括客户端、数据库服务器和代理服务器;
所述客户端用于接收用户上传的包含结构化明文数据的文件或SQL查询语句,并上传到代理服务器,同时接收代理服务器反馈回来的明文数据;
所述代理服务器用于在代理服务器上创建本地密钥库,对用户上传的明文数据进行加密,对数据库服务器反馈回来的密文数据进行解密处理,还用于提取明文数据表中的关键字信息生成数据字典,根据数据字典生成等值安全索引和保序安全索引,还用于提取用户上传的SQL查询语句中包含的关键字信息,对关键字信息进行加密处理并生成陷门,对SQL查询语句进行重写生成能查询密文数据库中密文数据的查询语句;
所述代理服务器包括密钥生成模块、数据结构信息加密模块、加密策略表创建模块、数据字典创建模块、安全索引建立模块、密钥管理模块、加密数据库创建模块、数据加密解密模块、陷门生成模块和查询语句重写模块;
所述密钥生成模块用于在代理服务器上创建本地密钥库,并根据主密钥km利用伪随机数函数和Hash散列函数创建三种加密密钥,所述三种加密密钥包括用于满足IND-CPA(选择明文攻击下的不可区分性,Indistinguishability under chosen-plaintextattack简称IND-CPA)安全的非确定性对称加密算法、保序加密(Order-preservingSymmetric Encryption)算法和同态加密算法的加密密钥kα、用于Hash散列函数的加密密钥kβ以及用于MAC消息认证的加密密钥kγ;
所述数据结构信息加密模块用于提取明文数据表的数据库结构信息,所述数据库结构信息包括数据库名、明文数据表名和明文数据表中的所有列名,并对结构信息进行Hash加密处理;
所述加密策略表创建模块用于根据Hash处理后的明文数据表的数据库结构信息生成对应的加密策略表,加密策略表用于记录密文数据库中每一列的加密信息,所述加密信息包括hash加密后的列名以及每一列对应的加密算法;加密策略表的四列分别用于存储明文数据表的列名、Hash加密后的列名、明文数据类型以及对应的加密算法;
加密策略表创建模块根据明文数据表的SM3(SM3密码杂凑算法简称SM3)散列加密后的数据库结构信息,生成对应的加密策略表,加密策略表由明文列名、SM3散列加密后的列名、明文列类型以及对应加密算法这四列构成,用于记录密文数据库中每一列的加密信息。加密策略表的部分表结构如表1所示。
表1加密策略表的部分表结构
表1中,colName表示存储明文列名的属性列名,encColName表示存储密文列名的属性列名,Type表示存储属性列数据类型的属性列名,Algorithm表示存储属性列加密算法的属性列名;
所述数据字典创建模块用于创建兼容云端数据库存储格式的包含每一项明文数据关键字信息的数据字典;
数据字典创建流程图如图5所示,代理服务器调用数据字典创建模块以“属性=值”的格式提取明文数据表中的关键字信息并创建关键字集合W和记录关键字信息出现记录数的数据字典Dic,若明文数据表中包含数值型的属性列,以“属性=列”的格式提取明文数据的关键字信息,并生成保序关键字集合Wo和记录数值型属性列中的数据值出现记录数的保序数据字典dicSet;
所述安全索引建立模块用于构造包含明文数据的关键字信息所在位置的标识符rowID的安全索引,并根据明文数据类型生成对应类型的安全索引;
安全索引建立流程图如图6所示,代理服务器端调用安全索引建立模块为用户上传的明文数据构建安全索引,安全索引建立模块根据之前创建的数据字典,为每一个数据字典中的关键字分配地址位置的标识符rowID,同时为明文数据中增加一列属性rowID用于记录数据的地址位置,之后根据关键字信息的数据类型不同,分别创建保存不同类型关键字信息的数据节点,并将每组关键字信息保存在大数组中,同时创建哈希表T用于保存每一个数组的头节点信息Pi和链表A用于以随机插入的方式将后续数组中的节点伪随机地插入到链表中,创建等值安全索引和保序安全索引,安全索引创建结束。
所述密钥管理模块用于对用户进行身份和权限管理验证后提取密文数据库中的三种加密密钥kα、kβ、kγ;这里采用JCEKS密钥库格式,代理服务器输入用户密钥库管理密码,获得访问密钥库中密钥的权限。
所述加密数据库创建模块用于根据明文数据表生成加密后的数据库名、表名和列名创建存储密文数据的密文数据库;
表2给出了明文数据表的部分表结构,对应的密文数据表的表结构如表3所示。
表2明文数据表的部分表结构
表3密文数据表的部分表结构
表2、表3中ID、NAME、SEX表示明文数据表中的明文属性列名,其中ID属性列为数值型类型,ENC(ID)、ENC(NAME)、ENC(SEX)表示明文列名通过SM3哈希加密后的密文列名,ENC_P(ID)表示用于聚合查询的密文列名,用于存储同态加密后的数值型密文数据,IV表示存储加密初始向量的属性列名;
所述数据加密解密模块用于对本地密钥库中的密钥进行加盐处理,盐值由根据加密后的数据库名、表名和列名输入到伪随机数函数中生成,使用满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法对明文数据进行加密生成密文数据,解密时从本地密钥库提取对应的密钥,对密文数据进行解密;
代理服务器端创建安全索引后,调用数据加密解密模块根据明文数据类型进行不同方式的加密,对非数值型数据进行SM4-CBC加密,对数值型数据进行ORE加密和PAILLIER加密,但不加密rowID列的所有数据,数据加密结束。数据库服务器端将匹配用户查询条件的密文数据发送给代理服务器端,代理服务器端调用数据加密解密模块,查询加密策略表后得知对应数据的加密方式,从密钥库中提取解密密钥kα对密文数据进行解密操作得到明文数据,数据解密结束。
所述陷门生成模块用于对SQL查询语句中的关键字信息进行满足IND-CPA安全的非确定性对称加密,若SQL查询语句中的包含范围查询语句块,则对数值型关键字信息进行保序加密,并生成能够解密安全索引的陷门上传到云端服务器;
陷门生成流程图如图7所示,代理服务器端判断用户查询语句的类型,若查询语句为等值或布尔查询,则提取密钥kα对关键字进行SM4-CBC加密,若查询语句为范围,排序或分组查询,则使用密钥kα对WHERE语句后的关键字信息进行ORE保序加密,若查询语句为聚合查询,则使用密钥kα对聚合查询语句块的关键字信息进行PAILLIER加密,加密关键信息流程结束,之后使用密钥kγ对关键信息进行MAC加密,将加密后的MAC消息认证码进行Base64编码后与加密后的关键信息进行封装生成陷门,陷门生成结束。
所述查询语句重写模块用于将用户上传的SQL查询语句改写成能查询密文数据库中密文数据的查询语句。
代理服务器端将用户输入的SQL查询语句中的所有明文选项加密成密文,并将陷门和加密后的SQL查询语句通过自定义关键字inside on进行组合,将重写后的加密SQL查询语句发送到数据库服务器端。
所述数据库服务器用于对用户进行身份认证和安全性检测,并根据代理服务器上传的陷门和重写后的SQL查询语句提取密文数据,同时调用UDF同态计算功能处理聚合查询的计算请求,还用于将SQL查询语句更新后的关键字信息同步到安全索引中。
所述数据库服务器包括身份认证模块、解析查询语句模块、安全索引更新模块;
所述身份认证模块用于系统对用户进行身份验证和安全性检测;
身份认证流程图如图4所示,用户输入自己的用户名密码和安全验证码,客户端判断安全验证通过后将身份信息上传到数据库服务器端,数据库服务器端对用户身份进行认证,如果认证通过,数据库服务器端输出提示信息“登陆成功”给客户端,身份认证结束。
所述解析查询语句模块用于解析代理服务器上传的陷门,通过解析陷门得到密文数据在密文数据库中位置的标识符rowID,并获取对应的密文数据;
解析查询语句流程图如图8所示,数据库服务器端接受加密的SQL语句并对加密SQL语句进行解析,判断加密SQL的查询类型,若查询语句为等值、范围、排序、分组、布尔查询则解析陷门信息,提取出Base64编码后的MAC消息认证码和加密关键字,通过输入加密关键字获取对应安全索引中加密后的初始节点Pi,并用Base64编码后的MAC消息认证码与加密后的初始节点Pi异或操作后得到初始节点,获取后续节点再链表中的索引位置,进而获取待查询关键字信息的rowID,生成查询对应rowID的查询语句发送给DBMS(DatabaseManagement System简称DBMS,数据库管理系统)执行,若查询语句为聚合查询,数据库服务器调用UDF聚合计算模块,对将要进行聚合计算的属性列里的指定值进行同态相乘计算,并返回相乘结果。
所述安全索引更新模块用于处理客户端发出的SQL更新语句update,将更新后的关键字信息同步到安全索引中;
所述UDF聚合计算模块用于处理聚合查询请求,调用UDF(用户自定义函数)对存储同态加密数据值的属性列中的密文数据进行同态相乘计算,将密文计算结果返回给代理服务器。
如图2所示,一种采用基于双向安全索引的数据库密文检索系统的检索方法,包括系统初始化方法、密文数据存储方法、密文数据库查询方法三部分;
所述系统初始化方法,包括以下步骤:
步骤S1:用户输入身份认证信息给数据库服务器,身份认证模块验证用户是否有权限使用云端数据库,若是,则继续步骤S2,若否,则数据库服务器将“用户信息认证失败”提示消息返回给客户端,系统初始化结束;
步骤S2:若验证通过,数据库服务器将认证成功信息发送给代理服务器,代理服务器判断本地密钥库是否存在,若本地密钥库不存在则继续步骤S2.1,若本地密钥库存在则继续步骤S5;
步骤S2.1:代理服务器向客户端索要创建密文数据库的主密钥km;
步骤S2.2:用户输入密文数据库的主密钥km给代理服务器;
步骤S2.3:代理服务器创建密文数据库并将用户输入的主密钥km作为使用密文数据库的密钥;
步骤S3:代理服务器端调用密钥管理模块生成三种加密密钥,分别为用于满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法的加密密钥kα、用于Hash散列函数的加密密钥kβ以及用于MAC消息认证的加密密钥kγ;
所述加密密钥生成公式如下:
kα,kβ,kγ=Random(Hash(km,uid))
式中,Random()表示随机数函数,Hash()表示哈希散列函数,uid表示用户的身份ID;
步骤S4:代理服务器将三种加密密钥kα、kβ、kγ存入本地密钥库中;
系统初始化的流程图如图3(a)所示,系统初始化时序图如图9所示,用户通过客户端输入用户名和密码,数据库服务器端认证成功后,密钥生成模块根据用户的个人信息生成本地密钥库,同时通过随机数函数生成三种密钥kα,kβ,kγ分别用于SM4-CBC(SMS4分组密码算法简称SM4,Cipher Block Chaining简称CBC,是一种加密模式)对称加密密钥、SM3散列加密密钥以及MAC消息认证密钥,本地密钥库创建成功后代理服务器端提示信息“密钥库创建成功”,密钥库创建结束。
步骤S5:将系统使用界面发送给客户端,系统初始化结束;
所述密文数据存储方法,包括以下步骤:
步骤Ca1:客户端向代理服务器发送封装后的明文数据集;
步骤Ca2:代理服务器调用数据结构信息加密模块提取明文数据集中每个明文数据表的数据库结构信息,本方法采取的是从csv(逗号分隔值文件格式)文件中读取明文数据,数据之间以“,”号间隔,数据库结构信息保存在文件第一行中,并用SM3加密算法对数据库结构信息加密处理;
步骤Ca3:代理服务器调用加密数据库创建模块,根据明文数据表生成Hash加密后的数据库名、表名和列名创建存储密文数据的密文数据库;
步骤Ca4:代理服务器调用加密策略表创建模块,生成加密策略表保存在代理服务器端,用于记录密文数据库每一列的加密方式信息;加密策略表创建语句如下:
CREATE TABLE ENCRYPT_SCHEMA(colName text,encolName text,Type varchar(20),Algorithm varchar(20));
式中,CREATE TABLE表示创建数据表的语句,ENCRYPT_SCHEMA表示加密策略表的表名;colName表示明文数据表中的列名;encolName表示Hash加密后的列名;Type表示明文数据类型;Algorithm表示加密算法;
步骤Ca5:代理服务器调用数据字典创建模块遍历所有明文数据;
步骤Ca6:代理服务器调用数据字典创建模块提取明文数据的关键字信息,并创建数据字典,包括:
步骤Ca6.1:代理服务器调用数据字典创建模块以“属性=数据明文值”的格式提取明文数据的关键字信息,并生成关键字集合W和数据字典Dic;
提取关键字信息的公式如下:
columnAttribute=value
式中,columnAttribute表示数据表中明文列列名,value表示该列对应的某一条记录值;
关键字集合W的结构如下:
W={w1,w2,w3,…wi,…,wn},i=1,2,…n
式中,wi为第i个关键字信息的值,n为关键字去重后的个数;
数据字典Dic的结构如下:
Dic={w1:num1,w2:num2,w3:num3,…,wi:numi,…,wn:numn}
式中,numi为第i个关键字信息出现的次数;
步骤Ca6.2:代理服务器调用数据字典创建模块以“属性=列名”的格式提取明文数据的关键字信息,并生成保序关键字集合Wo和保序数据字典dicSet;
Wo={tableName1:{w1,w2},tableName2:{w3},…,tableNamex:{wn}}
式中,tableName表示明文属性列名,x表示明文数据表中数值型属性列的个数;
保序数据字典dicSet的结构如下:
dicSet={tableName1:{w1:num1,w2:num2},tableName2:{w3:num3},…,tableNamex:{wn:numn}}
步骤Ca7:代理服务器调用数据字典创建模块,根据创建的数据字典生成明文数据表中的关键字信息所在列的位置标识符rowID,并将位置标识符以集合的形式存入关键字信息标识符集合rowList中;
关键字信息标识符集合rowList的结构表示为:
式中,mn表示明文数据表中包含第n个关键字的记录数;
若明文数据为数值型数据,代理服务器调用数据字典创建模块,根据创建的数据字典,生成明文数据表中的关键字信息所在列的位置标识符rowID,并将位置标识符集合存入保序标识符集合colList中;
保序标识符集合colList的结构表示为:
式中,c表示明文数据表中包含数值型属性列的记录数;
步骤Ca8:代理服务器调用安全索引建立模块,为明文数据表新增一列存储标识符rowID的列,用于存储每组明文数据关键字信息所在列位置的标识符;
式中,rowIDj表示一个关键字对应的第j个标识符,ki,j表示解密下一个节点的密钥,p()表示大数组Le的索引位置,ctr表示当前节点的标号;
式中,rowIDSeti表示第i个关键字信息对应的位置标识符集合,ORE()表示保序加密函数,vi表示第i个关键字信息,即第i个数值型明文数据;
步骤Ca10:代理服务器调用安全索引建立模块,构造双向哈希等值安全索引Se和保序安全索引So;
步骤Ca11:代理服务器调用加密数据库创建模块,根据加密后的数据库名、表名以及列名生成密文数据库;
步骤Ca12:代理服务器调用数据加密解密模块从密钥库中提取加密密钥kα并使用伪随机数函数生成盐值对加密密钥kα进行加盐处理,生成加盐后的加密密钥Salt(kα),然后使用Salt(kα)对明文数据使用满足IND-CPA安全的非确定性加密算法进行加密,对数值型数据进行保序加密和同态加密计算生成密文数据;加盐后的加密密钥结构表示为:
Salt(kα)=kα+Hash(db+tableName+colName)
式中,db表示数据库名,tableName表示表名;
步骤Ca13:代理服务器将密文数据以及安全索引发送给数据库服务器;
步骤Ca14:数据库服务器接收并存储密文数据和安全索引到数据库中,密文数据存储结束;
用户执行密文数据存储的流程如图3(b)所示密文数据存储的时序图如图10所示,用户通过客户端上传明文存储数据并发送给代理服务器端,然后数据字典创建模块遍历并解析明文数据,若数据为非数值型数据,则以“属性=明文数据值”的格式提取出明文数据中的关键字,若数据为数值型数据,则以“属性=列名”的格式额外提取明文数值型数据的关键信息,并生成数据字典存储明文数据的所有关键字信息,数据字典创建结束。
所述密文数据库查询方法,包括以下步骤:
步骤Z1:用户向客户端上传查询请求,客户端将查询请求发送给代理服务器;
步骤Z2:代理服务器对上传的SQL查询语句进行解析,若用户输入查询请求时出现SQL语法错误,则代理服务器将“SQL语法错误”提示消息返回客户端,返回步骤Z1,若用户输入查询请求时SQL语法正确,则继续步骤Z3;
步骤Z3:代理服务器调用陷门生成模块提取SQL查询语句中的关键字信息,并生成对应的陷门,若SQL查询语句中包含等值类型的查询语块,则继续步骤Z3.1,若SQL查询语句中包含范围查询、排序查询、比较查询以及分组查询语块,则继续步骤Z3.4;若SQL查询语句中包含聚合查询语块,则继续步骤Z4;
步骤Z3.1:代理服务器调用陷门生成模块以“属性=数据明文值”的形式提取等值类型查询语句中的关键字信息;
步骤Z3.2:代理服务器调用陷门生成模块提取出本地密钥库的加密密钥kα,并对等值类型查询语句中的关键字信息采用满足IND-CPA安全的非确定性加密算法进行非确定性加密;
等值类型查询语句关键字信息加密公式如下:
Encrypt_keyworde=CBC(keyword,Salt(kα))
式中,Encrypt_keyworde表示加密后的等值类型查询语句的关键字,keyword表示关键字,CBC()表示满足IND-CPA安全的非确定性加密算法;
步骤Z3.3:代理服务器调用陷门生成模块提取hash散列函数密钥kβ对加密后的关键字进行Hash加密,并生成等值型陷门,陷门生成结束继续步骤Z4;
所述等值型陷门Tropdoore表示为:
Tropdoore={Hash(Encrypt_keyworde,kβ),MAC(keyword,kγ)}
式中,MAC()表示消息认证加密函数;
步骤Z3.4:代理服务器调用陷门生成模块提取本地密文数据库的加密密钥kα,并对范围查询语句中的关键信息采用ORE加密算法进行保序加密;
所述范围查询语句关键字信息加密公式如下:
Encrypt_keywordo=ORE(keyword,Salt(kα))
式中,Encrypt_keywordo表示加密后的范围查询语句的关键字,ORE()表示保序加密函数;
步骤Z3.5:代理服务器调用陷门生成模块提取hash散列函数密钥kβ对保序加密后的关键字信息进行Hash加密,并生成范围型陷门,陷门生成结束继续步骤Z4;
所述范围型陷门Tropdooro表示为:
Tropdooro={Hash(Encrypt_keywordo,kβ),MAC(keyword,kγ)}
步骤Z4:代理服务器调用数据加密解密模块,提取SQL查询语句中的数据库结构信息;
步骤Z5:代理服务器调用数据加密解密模块,从加密策略表中查询对应SQL查询语句的数据库加密信息;
步骤Z6:代理服务器调用数据加密解密模块,提取本地密钥库中的加密密钥kα对SQL查询语句中的关键字使用满足IND-CPA安全的非确定性加密算法进行加密操作;
步骤Z7:代理服务器端调用查询语句重写模块,对查询语句进行重写操作,然后将重写后的SQL查询语句和陷门发送给数据库服务器;
重写后的查询语句Encrypt_SQL表示为:
Encrypt_SQL={SELECTencColName FROM encTableName WHERE(inside onTropdoor)}
式中,SELECT FROM WHERE表示SQL查询语句格式,encColName表示加密后的待查询的1个或多个列名,encTableName表示加密后待查询的表名,inside on表示自定义的SQL关键词,Tropdoor表示陷门;
步骤Z8:数据库服务器调用解析查询语句模块,判断查询语句的类型,若查询语句为单表查询、等值查询、布尔查询、范围查询、分组查询、排序查询、比较查询则继续步骤Z9,若查询语句为聚合查询则继续步骤Z8.1;
步骤Z8.1:数据库服务器调用UDF聚合计算模块,对查询语句中指定的聚合计算属性列中的密文值进行相乘,将计算后的结果返回给代理服务器,继续步骤Z14;
步骤Z9:数据库服务器调用解析查询语句模块,提取陷门中加密后的关键字信息;
步骤Z10:数据库服务器调用解析查询语句模块,根据加密后的关键字信息对应的安全索引查找到加密数据在密文数据库中的标识符rowID,若没有在安全索引中查找到标识符rowID,则数据库服务器将“没有查找结果”提示信息返回给客户端,返回步骤Z1;若查找到则获取Hash表中初始节点;
步骤Z11:数据库服务器调用解析查询语句模块,解析初始节点的信息,获取后续节点在链表中的索引位置;
步骤Z12:数据库服务器调用解析查询语句模块,查找陷门中的加密后的关键字信息在链表中的索引位置,获得加密信息对应的标识符;
步骤Z13:数据库服务器调用解析查询语句模块,根据加密信息对应的标识符获取密文数据库中对应的密文数据,并将查询到的密文数据发送给代理服务器;
步骤Z14:代理服务器调用数据加密解密模块对数据库服务器发送的密文查询结果进行解密,得到明文查询结果;
步骤Z15:代理服务器向客户端发送明文查询结果,客户端将明文查询结果显示给用户,加密数据库查询结束。
用户查询密文数据库的流程如图3(c)所示,用户上传查询语句到代理服务器,代理服务器首先判断查询类型,若查询语句包含等值类型语句块,则代理服务器调用陷门生成模块提取查询语句中的关键字信息,根据关键字信息生成等值型陷门;若查询语句包含范围类型查询语句块,则代理服务器调用陷门生成模块提取查询语句中的关键字信息,根据关键字信息生成范围型陷门;若查询语句包含聚合查询语句块,则代理服务器生成调用数据库服务器的UDF查询语句块。之后代理服务器调用查询语句重写模块,对查询语句中出现的明文选项进行加密重写,生成能够查询密文数据库的查询语句并上传给数据库服务器,数据库服务器解析查询语句类型,若语句中含有UDF调用语句块则调用代理服务器查询密文数据库的时序图如图11所示。
Claims (6)
1.一种基于双向安全索引的数据库密文检索系统,其特征在于,包括客户端、数据库服务器和代理服务器;
所述客户端用于接收用户上传的包含结构化明文数据的文件或SQL查询语句,并上传到代理服务器,同时接收代理服务器反馈回来的明文数据;
所述代理服务器用于在代理服务器上创建本地密钥库,对用户上传的明文数据进行加密,对数据库服务器反馈回来的密文数据进行解密处理,还用于提取明文数据表中的关键字信息生成数据字典,根据数据字典生成等值安全索引和保序安全索引,还用于提取用户上传的SQL查询语句中包含的关键字信息,对关键字信息进行加密处理并生成陷门,对SQL查询语句进行重写生成能查询密文数据库中密文数据的查询语句;
所述数据库服务器用于对用户进行身份认证和安全性检测,并根据代理服务器上传的陷门和重写后的SQL查询语句提取密文数据,还用于将SQL查询语句更新后的关键字信息同步到安全索引中。
2.根据权利要求1所述的一种基于双向安全索引的数据库密文检索系统,其特征在于,所述代理服务器包括密钥生成模块、数据结构信息加密模块、加密策略表创建模块、数据字典创建模块、安全索引建立模块、密钥管理模块、加密数据库创建模块、数据加密解密模块、陷门生成模块和查询语句重写模块;
所述密钥生成模块用于在代理服务器上创建本地密钥库,并根据主密钥km利用伪随机数函数和Hash散列函数创建三种加密密钥,所述三种加密密钥包括用于满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法的加密密钥kα、用于Hash散列函数的加密密钥kβ以及用于MAC消息认证的加密密钥kγ;
所述数据结构信息加密模块用于提取明文数据表的数据库结构信息,所述数据库结构信息包括数据库名、明文数据表名和明文数据表中的所有列名,并对结构信息进行Hash加密处理;
所述加密策略表创建模块用于根据Hash处理后的明文数据表的数据库结构信息生成对应的加密策略表,加密策略表用于记录密文数据库中每一列的加密信息,所述加密信息包括Hash加密后的列名以及每一列对应的加密算法;
所述数据字典创建模块用于创建兼容云端数据库存储格式的包含每一项明文数据关键字信息的数据字典;
所述安全索引建立模块用于构造包含明文数据的关键字信息所在位置的标识符rowID的安全索引,并根据明文数据类型生成对应类型的安全索引;
所述密钥管理模块用于对用户进行身份和权限管理验证后提取密文数据库中的三种加密密钥kα、kβ、kγ;
所述加密数据库创建模块用于根据明文数据表生成加密后的数据库名、表名和列名创建存储密文数据的密文数据库;
所述数据加密解密模块用于对本地密钥库中的密钥进行加盐处理,盐值由根据加密后的数据库名、表名和列名输入到伪随机数函数中生成,使用满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法对明文数据进行加密生成密文数据,解密时从本地密钥库提取对应的密钥,对密文数据进行解密;
所述陷门生成模块用于对SQL查询语句中的关键字信息进行满足IND-CPA安全的非确定性对称加密,若SQL查询语句中的包含范围查询语句块,则对数值型关键字信息进行保序加密,并生成能够解密安全索引的陷门上传到云端服务器;
所述查询语句重写模块用于将用户上传的SQL查询语句改写成能查询密文数据库中密文数据的查询语句。
3.根据权利要求1所述的一种基于双向安全索引的数据库密文检索系统,其特征在于,所述数据库服务器包括身份认证模块、解析查询语句模块、安全索引更新模块、UDF聚合计算模块;
所述身份认证模块用于系统对用户进行身份验证和安全性检测;
所述解析查询语句模块用于解析代理服务器上传的陷门,通过解析陷门得到密文数据在密文数据库中位置的标识符rowID,并获取对应的密文数据;
所述安全索引更新模块用于处理客户端发出的SQL更新语句update,将更新后的关键字信息同步到安全索引中;
所述UDF聚合计算模块用于处理聚合查询请求,调用用户自定义函数UDF对存储同态加密数据值的属性列中的密文数据进行同态相乘计算,将密文计算结果返回给代理服务器。
4.一种采用基于双向安全索引的数据库密文检索系统的检索方法,其特征在于,包括系统初始化方法、密文数据存储方法、密文数据库查询方法三部分;
所述系统初始化方法,包括以下步骤:
步骤S1:用户输入身份认证信息给数据库服务器,身份认证模块验证用户是否有权限使用云端数据库,若是,则继续步骤S2,若否,则数据库服务器将“用户信息认证失败”提示消息返回给客户端,系统初始化结束;
步骤S2:若验证通过,数据库服务器将认证成功信息发送给代理服务器,代理服务器判断本地密钥库是否存在,若本地密钥库不存在则继续步骤S2.1,若本地密钥库存在则继续步骤S5;
步骤S2.1:代理服务器向客户端索要创建密文数据库的主密钥km;
步骤S2.2:用户输入密文数据库的主密钥km给代理服务器;
步骤S2.3:代理服务器创建密文数据库并将用户输入的主密钥km作为使用密文数据库的密钥;
步骤S3:代理服务器端调用密钥管理模块生成三种加密密钥,分别为用于满足IND-CPA安全的非确定性对称加密算法、保序加密算法和同态加密算法的加密密钥kα、用于Hash散列函数的加密密钥kβ以及用于MAC消息认证的加密密钥kγ;
所述加密密钥生成公式如下:
kα,kβ,kγ=Random(Hash(km,uid))
式中,Random()表示伪随机数函数,Hash()表示哈希散列函数,uid表示用户的身份ID;
步骤S4:代理服务器将三种加密密钥kα、kβ、kγ存入本地密钥库中;
步骤S5:将系统使用界面发送给客户端,系统初始化结束;
所述密文数据存储方法,包括以下步骤:
步骤Ca1:客户端向代理服务器发送封装后的明文数据集;
步骤Ca2:代理服务器调用数据结构信息加密模块提取明文数据集中每个明文数据表的数据库结构信息,并对数据库结构信息进行Hash加密处理;
步骤Ca3:代理服务器调用加密数据库创建模块,根据明文数据表生成Hash加密后的数据库名、表名和列名创建存储密文数据的密文数据库;
步骤Ca4:代理服务器调用加密策略表创建模块,生成加密策略表保存在代理服务器端,用于记录密文数据库每一列的加密方式信息;加密策略表创建语句如下:
CREATE TABLE ENCRYPT_SCHEMA(colName text,encolName text,Type varchar(20),Algorithm varchar(20));
式中,CREATE TABLE表示创建数据表的语句,ENCRYPT_SCHEMA表示加密策略表的表名;colName表示明文数据表中的列名;encolName表示Hash加密后的列名;Type表示明文数据类型;Algorithm表示加密算法;
步骤Ca5:代理服务器调用数据字典创建模块遍历所有明文数据;
步骤Ca6:代理服务器调用数据字典创建模块提取明文数据的关键字信息,并创建数据字典;
步骤Ca7:代理服务器调用数据字典创建模块,根据创建的数据字典生成明文数据表中的关键字信息所在列的位置标识符rowID,并将位置标识符以集合的形式存入关键字信息标识符集合rowList中;
关键字信息标识符集合rowList的结构表示为:
式中,mn表示明文数据表中包含第n个关键字的记录数;
若明文数据为数值型数据,代理服务器调用数据字典创建模块,根据创建的数据字典,生成明文数据表中的关键字信息所在列的位置标识符rowID,并将位置标识符集合存入保序标识符集合colList中;
保序标识符集合colList的结构表示为:
式中,c表示明文数据表中包含数值型属性列的记录数;
步骤Ca8:代理服务器调用安全索引建立模块,为明文数据表新增一列存储标识符rowID的列,用于存储每组明文数据关键字信息所在列位置的标识符;
式中,rowIDj表示一个关键字对应的第j个标识符,ki,j表示解密下一个节点的密钥,p()表示大数组Le的索引位置,ctr表示当前节点的标号;
式中,rowIDSeti表示第i个关键字信息对应的位置标识符集合,ORE()表示保序加密函数,vi表示第i个关键字信息;
步骤Ca10:代理服务器调用安全索引建立模块,构造双向哈希等值安全索引Se和保序安全索引So;
步骤Ca11:代理服务器调用加密数据库创建模块,根据加密后的数据库名、表名以及列名生成密文数据库;
步骤Ca12:代理服务器调用数据加密解密模块从密钥库中提取加密密钥kα并使用伪随机数函数生成盐值对加密密钥kα进行加盐处理,生成加盐后的加密密钥Salt(kα),然后使用Salt(kα)对明文数据使用满足IND-CPA安全的非确定性加密算法进行加密,对数值型数据进行保序加密和同态加密计算生成密文数据;
加盐后的加密密钥结构表示为:
Salt(kα)=kα+Hash(db+tableName+colName)
式中,db表示数据库名,tableName表示表名;
步骤Ca13:代理服务器将密文数据以及安全索引发送给数据库服务器;
步骤Ca14:数据库服务器接收并存储密文数据和安全索引到数据库中,密文数据存储结束;
所述密文数据库查询方法,包括以下步骤:
步骤Z1:用户向客户端上传查询请求,客户端将查询请求发送给代理服务器;
步骤Z2:代理服务器对上传的SQL查询语句进行解析,若用户输入查询请求时出现SQL语法错误,则代理服务器将“SQL语法错误”提示消息返回客户端,返回步骤Z1,若用户输入查询请求时SQL语法正确,则继续步骤Z3;
步骤Z3:代理服务器调用陷门生成模块提取SQL查询语句中的关键字信息,并生成对应的陷门,若SQL查询语句中包含等值类型的查询语块,则继续步骤Z3.1,若SQL查询语句中包含范围查询、排序查询、比较查询以及分组查询语块,则继续步骤Z3.4;若SQL查询语句中包含聚合查询语块,则继续步骤Z4;
步骤Z3.1:代理服务器调用陷门生成模块以“属性=数据明文值”的形式提取等值类型查询语句中的关键字信息;
步骤Z3.2:代理服务器调用陷门生成模块提取出本地密钥库的加密密钥kα,并对等值类型查询语句中的关键字信息采用满足IND-CPA安全的非确定性加密算法进行非确定性加密;
等值类型查询语句关键字信息加密公式如下:
Encrypt_keyworde=CBC(keyword,Salt(kα))
式中,Encrypt_keyworde表示加密后的等值类型查询语句的关键字,keyword表示关键字,CBC()表示满足IND-CPA安全的非确定性加密算法;
步骤Z3.3:代理服务器调用陷门生成模块提取hash散列函数密钥kβ对加密后的关键字进行Hash加密,并生成等值型陷门,陷门生成结束继续步骤Z4;
所述等值型陷门Tropdoore表示为:
Tropdoore={Hash(Encrypt_keyworde,kβ),MAC(keyword,kγ)}
式中,MAC()表示消息认证加密函数;
步骤Z3.4:代理服务器调用陷门生成模块提取本地密文数据库的加密密钥kα,并对范围查询语句中的关键信息采用ORE加密算法进行保序加密;
所述范围查询语句关键字信息加密公式如下:
Encrypt_keywordo=ORE(keyword,Salt(kα))
式中,Encrypt_keywordo表示加密后的范围查询语句的关键字,ORE()表示保序加密函数;
步骤Z3.5:代理服务器调用陷门生成模块提取hash散列函数密钥kβ对保序加密后的关键字信息进行Hash加密,并生成范围型陷门,陷门生成结束继续步骤Z4;
所述范围型陷门Tropdooro表示为:
Tropdooro={Hash(Encrypt_keywordo,kβ),MAC(keyword,kγ)}
步骤Z4:代理服务器调用数据加密解密模块,提取SQL查询语句中的数据库结构信息;
步骤Z5:代理服务器调用数据加密解密模块,从加密策略表中查询对应SQL查询语句的数据库加密信息;
步骤Z6:代理服务器调用数据加密解密模块,提取本地密钥库中的加密密钥kα对SQL查询语句中的关键字使用满足IND-CPA安全的非确定性加密算法进行加密操作;
步骤Z7:代理服务器端调用查询语句重写模块,对查询语句进行重写操作,然后将重写后的SQL查询语句和陷门发送给数据库服务器;
重写后的查询语句Encrypt_SQL表示为:
Encrypt_SQL={SELECTencColName FROM encTableName WHERE(inside onTropdoor)}
式中,SELECT FROM WHERE表示SQL查询语句格式,encColName表示加密后的待查询的列名,encTableName表示加密后待查询的表名,inside on表示自定义的SQL关键词,Tropdoor表示陷门;
步骤Z8:数据库服务器调用解析查询语句模块,判断查询语句的类型,若查询语句为单表查询、等值查询、布尔查询、范围查询、分组查询、排序查询、比较查询则继续步骤Z9,若查询语句为聚合查询则继续步骤Z8.1;
步骤Z8.1:数据库服务器调用UDF聚合计算模块,对查询语句中指定的聚合计算属性列中的密文值进行相乘,将计算后的结果返回给代理服务器,继续步骤Z14;
步骤Z9:数据库服务器调用解析查询语句模块,提取陷门中加密后的关键字信息;
步骤Z10:数据库服务器调用解析查询语句模块,根据加密后的关键字信息对应的安全索引查找到加密数据在密文数据库中的标识符rowID,若没有在安全索引中查找到标识符rowID,则数据库服务器将“没有查找结果”提示信息返回给客户端,返回步骤Z1;若查找到则获取Hash表中初始节点;
步骤Z11:数据库服务器调用解析查询语句模块,解析初始节点的信息,获取后续节点在链表中的索引位置;
步骤Z12:数据库服务器调用解析查询语句模块,查找陷门中的加密后的关键字信息在链表中的索引位置,获得加密信息对应的标识符;
步骤Z13:数据库服务器调用解析查询语句模块,根据加密信息对应的标识符获取密文数据库中对应的密文数据,并将查询到的密文数据发送给代理服务器;
步骤Z14:代理服务器调用数据加密解密模块对数据库服务器发送的密文查询结果进行解密,得到明文查询结果;
步骤Z15:代理服务器向客户端发送明文查询结果,客户端将明文查询结果显示给用户,加密数据库查询结束。
5.根据权利要求4所述的一种检索方法,其特征在于,所述步骤Ca6包括:
步骤Ca6.1:代理服务器调用数据字典创建模块以“属性=数据明文值”的格式提取明文数据的关键字信息,并生成关键字集合W和数据字典Dic;
提取关键字信息的公式如下:
columnAttribute=value
式中,columnAttribute表示数据表中明文列列名,value表示该列对应的某一条记录值;
关键字集合W的结构如下:
W={w1,w2,w3,…wi,…,wn},i=1,2,…n
式中,wi为第i个关键字信息的值,n为关键字去重后的个数;
数据字典Dic的结构如下:
Dic={w1:num1,w2:num2,w3:num3,…,wi:numi,…,wn:numn}
式中,numi为第i个关键字信息出现的次数;
步骤Ca6.2:代理服务器调用数据字典创建模块以“属性=列名”的格式提取明文数据的关键字信息,并生成保序关键字集合Wo和保序数据字典dicSet;
Wo={tableName1:{w1,w2},tableName2:{w3},…,tableNamex:{wn}}
式中,tableName表示明文属性列名,x表示明文数据表中数值型属性列的个数;
保序数据字典dicSet的结构如下:
dicSet={tableName1:{w1:num1,w2:num2},tableName2:{w3:num3},…,tableNamex:{wn:numn}}。
6.根据权利要求4所述的一种检索方法,其特征在于,所述步骤Ca10包括:
步骤Ca10.1:代理服务器构建等值安全索引Se,包含哈希表Te和链表Ae,哈希表Te用于存储Le的初始节点Pi,链表Ae用于以伪随机排序顺序地存储Le中所有等值关键字节点的信息,等值安全索引构建结束;
所述初始节点Pi的结构表示为:
Pi=<addr[Ae(Ni,j)]||ki,0>
式中,addr[]表示后续节点Ni,j在链表Ae中的索引位置,Ae(Ni,j)表示存储在Ae中的节点Ni,j,ki,0表示解密后续节点Ni,1的密钥;
哈希表Te的结构表示为:
Te={Encrypt_keyworde:(prf(keyword,kγ)xorPi)}
式中,Encrypt_keyworde表示非确定性对称加密后的关键字信息,prf表示MAC消息认证加密函数,xor表示异或操作;
哈希表To的结构表示为:
To={Encrypt_keywordo:(prf(keyword,kγ)xorPi)}
式中,Encrypt_keywordo表示保序加密后的关键字信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110068413.3A CN112800088B (zh) | 2021-01-19 | 2021-01-19 | 基于双向安全索引的数据库密文检索系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110068413.3A CN112800088B (zh) | 2021-01-19 | 2021-01-19 | 基于双向安全索引的数据库密文检索系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112800088A true CN112800088A (zh) | 2021-05-14 |
CN112800088B CN112800088B (zh) | 2023-09-19 |
Family
ID=75810406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110068413.3A Active CN112800088B (zh) | 2021-01-19 | 2021-01-19 | 基于双向安全索引的数据库密文检索系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112800088B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312643A (zh) * | 2021-06-09 | 2021-08-27 | 杭州趣链科技有限公司 | 基于sm2和sm3算法的关键字匹配方法 |
CN113568927A (zh) * | 2021-06-24 | 2021-10-29 | 华控清交信息科技(北京)有限公司 | 数据处理系统、方法、数据库引擎及用于数据处理的装置 |
CN113609492A (zh) * | 2021-08-05 | 2021-11-05 | 上海交通大学 | 面向tee加密数据库接口攻击的防御方法和系统 |
CN113704303A (zh) * | 2021-08-03 | 2021-11-26 | 浙江大学 | 一种支持可组合sql查询的加密数据库方法 |
CN113742370A (zh) * | 2021-11-02 | 2021-12-03 | 阿里云计算有限公司 | 全加密数据库的数据查询方法、统计信息密文生成方法 |
CN113742362A (zh) * | 2021-09-03 | 2021-12-03 | 西安电子科技大学 | 一种面向密态数据库的密文查询计算方法 |
CN113852676A (zh) * | 2021-09-14 | 2021-12-28 | 交通运输部北海航海保障中心天津海事测绘中心 | 一种海事水文信息监控服务系统 |
CN113886418A (zh) * | 2021-09-28 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置、电子设备及机器可读存储介质 |
CN114416773A (zh) * | 2021-12-30 | 2022-04-29 | 联通智网科技股份有限公司 | 数据处理方法、装置、存储介质和服务器 |
CN115033925A (zh) * | 2022-08-11 | 2022-09-09 | 三未信安科技股份有限公司 | 一种数据库安全检索方法 |
CN115168909A (zh) * | 2022-09-07 | 2022-10-11 | 翼方健数(北京)信息科技有限公司 | 一种基于比较索引的密文数据范围查询方法和系统 |
CN115412299A (zh) * | 2022-08-02 | 2022-11-29 | 浪潮云信息技术股份公司 | 一种重要数据存储加密方法及系统 |
CN115525817A (zh) * | 2022-11-16 | 2022-12-27 | 阿里云计算有限公司 | 聚合查询方法、系统、电子设备及计算机存储介质 |
WO2023010273A1 (zh) * | 2021-08-03 | 2023-02-09 | 浙江大学 | 一种支持可组合sql查询的加密数据库方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005119960A2 (en) * | 2004-06-01 | 2005-12-15 | Ben-Gurion University Of The Negev Research And Development Authority | Structure preserving database encryption method and system |
CN104899517A (zh) * | 2015-05-15 | 2015-09-09 | 陕西师范大学 | 基于短语的可搜索对称加密方法 |
CN105610793A (zh) * | 2015-12-18 | 2016-05-25 | 江苏大学 | 一种外包数据加密存储与密文查询系统及其应用方法 |
CN107370725A (zh) * | 2017-06-21 | 2017-11-21 | 西安电子科技大学 | 一种云环境下通用加密数据库的存取方法及系统 |
CN108595971A (zh) * | 2018-04-25 | 2018-09-28 | 杭州闪捷信息科技股份有限公司 | 一种数据库自适应加密方法 |
CN108959567A (zh) * | 2018-07-04 | 2018-12-07 | 武汉大学 | 一种云环境下适用于大规模图像的安全检索方法 |
CN109815723A (zh) * | 2019-02-28 | 2019-05-28 | 东北大学 | 一种基于后缀树的可搜索加密系统及方法 |
CN110138561A (zh) * | 2019-03-22 | 2019-08-16 | 西安电子科技大学 | 基于cp-abe自动校正的高效密文检索方法、云计算服务系统 |
-
2021
- 2021-01-19 CN CN202110068413.3A patent/CN112800088B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005119960A2 (en) * | 2004-06-01 | 2005-12-15 | Ben-Gurion University Of The Negev Research And Development Authority | Structure preserving database encryption method and system |
CN104899517A (zh) * | 2015-05-15 | 2015-09-09 | 陕西师范大学 | 基于短语的可搜索对称加密方法 |
CN105610793A (zh) * | 2015-12-18 | 2016-05-25 | 江苏大学 | 一种外包数据加密存储与密文查询系统及其应用方法 |
CN107370725A (zh) * | 2017-06-21 | 2017-11-21 | 西安电子科技大学 | 一种云环境下通用加密数据库的存取方法及系统 |
CN108595971A (zh) * | 2018-04-25 | 2018-09-28 | 杭州闪捷信息科技股份有限公司 | 一种数据库自适应加密方法 |
CN108959567A (zh) * | 2018-07-04 | 2018-12-07 | 武汉大学 | 一种云环境下适用于大规模图像的安全检索方法 |
CN109815723A (zh) * | 2019-02-28 | 2019-05-28 | 东北大学 | 一种基于后缀树的可搜索加密系统及方法 |
CN110138561A (zh) * | 2019-03-22 | 2019-08-16 | 西安电子科技大学 | 基于cp-abe自动校正的高效密文检索方法、云计算服务系统 |
Non-Patent Citations (4)
Title |
---|
MAO-PANG LIN 等: "Design and Implementation of Multi-user Secure Indices for Encrypted Cloud Storage", 2013 ELEVENTH ANNUAL CONFERENCE ON PRIVACY, SECURITY AND TRUST (PST), pages 177 - 184 * |
孙僖泽 等: "基于可搜索加密机制的数据库加密方案", 计算机学报, vol. 44, no. 4, pages 806 - 819 * |
项菲 等: "云计算环境下密文搜索算法的研究", 通信学报, vol. 34, no. 07, pages 143 - 153 * |
黄保华 等: "数据库中数值型数据的加密存储与查询方法", 计算机工程, vol. 42, no. 07, pages 123 - 128 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312643A (zh) * | 2021-06-09 | 2021-08-27 | 杭州趣链科技有限公司 | 基于sm2和sm3算法的关键字匹配方法 |
CN113568927A (zh) * | 2021-06-24 | 2021-10-29 | 华控清交信息科技(北京)有限公司 | 数据处理系统、方法、数据库引擎及用于数据处理的装置 |
CN113568927B (zh) * | 2021-06-24 | 2024-03-29 | 华控清交信息科技(北京)有限公司 | 数据处理系统、方法、数据库引擎及用于数据处理的装置 |
WO2023010273A1 (zh) * | 2021-08-03 | 2023-02-09 | 浙江大学 | 一种支持可组合sql查询的加密数据库方法 |
CN113704303A (zh) * | 2021-08-03 | 2021-11-26 | 浙江大学 | 一种支持可组合sql查询的加密数据库方法 |
CN113704303B (zh) * | 2021-08-03 | 2023-09-29 | 浙江大学 | 一种支持可组合sql查询的加密数据库方法 |
US11734448B2 (en) * | 2021-08-03 | 2023-08-22 | Zhejiang University | Method for encrypting database supporting composable SQL query |
US20230048229A1 (en) * | 2021-08-03 | 2023-02-16 | Zhejiang University | Method for encrypting database supporting composable sql query |
CN113609492A (zh) * | 2021-08-05 | 2021-11-05 | 上海交通大学 | 面向tee加密数据库接口攻击的防御方法和系统 |
CN113609492B (zh) * | 2021-08-05 | 2023-10-31 | 上海交通大学 | 面向tee加密数据库接口攻击的防御方法和系统 |
CN113742362A (zh) * | 2021-09-03 | 2021-12-03 | 西安电子科技大学 | 一种面向密态数据库的密文查询计算方法 |
CN113852676A (zh) * | 2021-09-14 | 2021-12-28 | 交通运输部北海航海保障中心天津海事测绘中心 | 一种海事水文信息监控服务系统 |
CN113886418A (zh) * | 2021-09-28 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置、电子设备及机器可读存储介质 |
CN113742370A (zh) * | 2021-11-02 | 2021-12-03 | 阿里云计算有限公司 | 全加密数据库的数据查询方法、统计信息密文生成方法 |
CN114416773B (zh) * | 2021-12-30 | 2023-01-06 | 联通智网科技股份有限公司 | 数据处理方法、装置、存储介质和服务器 |
CN114416773A (zh) * | 2021-12-30 | 2022-04-29 | 联通智网科技股份有限公司 | 数据处理方法、装置、存储介质和服务器 |
CN115412299A (zh) * | 2022-08-02 | 2022-11-29 | 浪潮云信息技术股份公司 | 一种重要数据存储加密方法及系统 |
CN115033925B (zh) * | 2022-08-11 | 2022-10-28 | 三未信安科技股份有限公司 | 一种数据库安全检索方法 |
CN115033925A (zh) * | 2022-08-11 | 2022-09-09 | 三未信安科技股份有限公司 | 一种数据库安全检索方法 |
CN115168909A (zh) * | 2022-09-07 | 2022-10-11 | 翼方健数(北京)信息科技有限公司 | 一种基于比较索引的密文数据范围查询方法和系统 |
CN115525817A (zh) * | 2022-11-16 | 2022-12-27 | 阿里云计算有限公司 | 聚合查询方法、系统、电子设备及计算机存储介质 |
CN115525817B (zh) * | 2022-11-16 | 2023-05-02 | 阿里云计算有限公司 | 聚合查询方法、系统、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112800088B (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112800088B (zh) | 基于双向安全索引的数据库密文检索系统及方法 | |
CN106815350B (zh) | 一种云环境中动态的密文多关键词模糊搜索方法 | |
US9977918B2 (en) | Method and system for verifiable searchable symmetric encryption | |
JP6180177B2 (ja) | プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム | |
CN111026788B (zh) | 一种混合云中基于同态加密的多关键词密文排序检索方法 | |
CN106934301B (zh) | 一种支持密文数据操作的关系型数据库安全外包数据处理方法 | |
JP5348337B2 (ja) | 暗号化データベース管理システム、クライアントおよびサーバ、自然結合方法およびプログラム | |
Kissel et al. | Verifiable phrase search over encrypted data secure against a semi-honest-but-curious adversary | |
CN113254955A (zh) | 前向安全的连接关键词对称可搜索加密方法、系统及应用 | |
Li et al. | Towards efficient verifiable boolean search over encrypted cloud data | |
Xu et al. | PPSEB: a postquantum public-key searchable encryption scheme on blockchain for E-healthcare scenarios | |
Peng et al. | LS-RQ: A lightweight and forward-secure range query on geographically encrypted data | |
CN109213731B (zh) | 云环境中基于迭代加密的多关键词密文检索方法 | |
CN107294701B (zh) | 具有高效密钥管理的多维密文区间查询装置及查询方法 | |
CN113434739A (zh) | 一种云环境下前向安全的多用户动态对称加密检索方法 | |
CN106874379B (zh) | 一种面向密文云存储的多维区间检索方法与系统 | |
WO2018080857A1 (en) | Systems and methods for creating, storing, and analyzing secure data | |
CN116186108A (zh) | 加密敏感字段支持模糊查询的方法 | |
CN115455463A (zh) | 一种基于同态加密的隐匿sql查询方法 | |
Zhou et al. | Integrity preserving multi-keyword searchable encryption for cloud computing | |
CN109582818B (zh) | 一种基于可搜索加密的曲库云检索方法 | |
Abdelraheem et al. | Executing boolean queries on an encrypted bitmap index | |
Mu et al. | Encrypted data retrieval scheme based on bloom filter | |
Liu et al. | KCB-BC-SSE: a keyword complete binary tree searchable symmetric encryption scheme using blockchain | |
Bhavya et al. | EFUMS: Efficient File Upload and Mutli-Keyword Search over Encrypted Cloud Data |
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 |