CN115455463A - 一种基于同态加密的隐匿sql查询方法 - Google Patents

一种基于同态加密的隐匿sql查询方法 Download PDF

Info

Publication number
CN115455463A
CN115455463A CN202210947370.0A CN202210947370A CN115455463A CN 115455463 A CN115455463 A CN 115455463A CN 202210947370 A CN202210947370 A CN 202210947370A CN 115455463 A CN115455463 A CN 115455463A
Authority
CN
China
Prior art keywords
query
client
value
server
ciphertext
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.)
Pending
Application number
CN202210947370.0A
Other languages
English (en)
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.)
Shenzhen Qianhai Xinxin Digital Technology Co ltd
Original Assignee
Shenzhen Qianhai Xinxin Digital 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 Shenzhen Qianhai Xinxin Digital Technology Co ltd filed Critical Shenzhen Qianhai Xinxin Digital Technology Co ltd
Priority to CN202210947370.0A priority Critical patent/CN115455463A/zh
Publication of CN115455463A publication Critical patent/CN115455463A/zh
Pending legal-status Critical Current

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)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于同态加密的隐匿SQL查询方法,该方法在C\S的框架上实现;包括生成同态加密公钥、私钥的步骤,初始化查询列名以及查询值的步骤;加密查询值的步骤;将公钥、初始化后的查询列名以及加密后的查询值发送给服务器的步骤;服务器将本地数据库表所有记录的编号对应查询列名列数据与加密后的查询值做密文减法以及密文常数乘法,生成密文的步骤;服务器将密文集合返回客户端;客户端解密密文,生成满足查询条件的数据库表记录的编号(id)集合({id});将查询数据库表记录的编号集合发送给服务器;服务器返回数据库表记录的编号集合对应的数据集合到客户端的步骤。本发明使用同态加密算法加密查询条件以及密文运算,保护SQL查询条件的隐私。

Description

一种基于同态加密的隐匿SQL查询方法
技术领域
本发明涉及基于同态加密的隐匿SQL查询方法领域。
背景技术
SQL查询是指客户端通过结构化查询语言SQL,向服务端数据库(如MySql,Oracle),查询满足指定条件的数据记录,数据库服务器在解析SQL语句后,向客户端返回满足条件的数据记录。
同态加密是一种可以直接对密文进行计算,其解密结果与明文进行同样的计算结果相同的一种加密算法。目前在保护用户数据隐私方面有非常多的应用场景。
同态加密又主要分为全同态加密,半同态加密和有限级数的全同态加密。
(1)全同态加密
全同态加密是一种对密文可以进行任意计算(分为算术上的加法,乘法,或者逻辑比特位上的异或与AND)的一种同态加密算法。
(2)半同态加密,有限级数的全同态加密
目前,由于全同态加密在应用上往往存在效率和存储上的限制,应用更加广泛的是半同态加密,或者有限级数的全同态加密。其中半同态加密算法是只支持密文加法或者乘法的同态运算,而有限级数的全同态加密则支持加法同态及有限层数的乘法同态运算。
数据是互联网的基础,也是互联网最具有价值的资产,信息时代最重要的生产要素。包括云计算,人工智能,数据挖掘,区块链等高新技术的发展,都离不开数据。
而数据的使用则离不开数据库来存储,管理,数据库是“按照数据结构来组织、存储和管理数据的仓库”,长期存储在计算机系统内、有组织的、可共享的、统一管理的大量数据的集合。
SQL语言则是一种用户用来与数据库交互的计算机语言,通过将SQL语句发送给数据库管理系统解析并执行,客户端可以对数据库执行查询、创建、更新、删除数据库表等操作。当前各类主流的关系型数据库,非关系型数据库如MySQL,SQL Server,Oracle,Redis,Postgresql,MongoDB,Hbase等,都支持SQL语言。
SQL语言中,SQL查询是最常见的一种,用于客户端从数据库服务端获取满足某些条件的数据记录。
在实际应用中,由于互联网云计算等的发展,客户端和数据库服务端往往不是同一个主体,很多数据库均已部署在云上,用于对外提供数据服务。如果客户端直接使用明文SQL语句向数据库服务端发送请求,容易导致客户端隐私泄露,如客户端如果使用如下SQL查询一些用户的基本信息“Select*from people where age>25and age<50and salary>20000”,那么服务端在收到此SQL语句后,可得知客户端感兴趣的目标群体为年龄在25和50之间,以及月薪大于2w的人,进一步分析可获得其商业模式。如果服务端将这类信息泄露给客户端的商业竞争对手,则会给客户端带来一定经济损失。
此外,很用户多为了更加方便服务自己的业务,很多企业、机构还会将自己的数据库直接部署在云数据库服务上,这时候也需要采取加密等一定措施防止云服务商获取其隐私敏感数据。
另一方面,隐私计算这几年也在飞速发展中,各项技术逐渐由学术研究拓展到了实际应用中,如可信执行环境TEE,同态加密HE,多方计算MPC,联邦学习等等。
其中同态加密可以在不泄露明文数据的情况下,直接对密文进行计算分析,是隐私计算技术的一个重要分支。尽管早期的同态加密算法,尤其是全同态加密,效率很低,占用存储很大。但是近年来,随着硬件的更新换代,学术研究的深入,全同态加密的计算效率不断提升,也扩大了其商业应用场景,不少云厂商都开始提供全同态加密服务。其在金融,医疗,大数据等方向也都有了应用场景。
当前,已有一些研究成果通过使用同态加密,保护数据库查询的隐私,如Two-Cloud Secure Database for Numeric-Related SQL Range Queries With PrivacyPreserving(用于数字相关SQL范围查询的具有隐私保护的两个云安全数据库,)中,使用同态加密,提供基于数值类型的数据库查询。支持加密数据库的数值类型的查询,此方案需要部署两台数据库服务器,一个负责存储加密数据库,以及同态密文运算,一个负责计算满足查询条件的记录索引。
另外,CryptDB,CryptDB:Protecting Confidentiality with Encrypted QueryProcessing(通过加密查询处理保护机密性)也是在加密数据库上进行SQL查询,需要在客户端和数据库服务端部署一台代理Proxy,Proxy对用户的SQL的关键字段请求进行加密,并且依然保证SQL语句的语法要求,然后发送给服务端,处理完成以后,返回加密的数据给PROXY,在Proxy处解密,然后返回给客户端。
目前,这些成果中,有的只支持数值的查询,不支持字符串的查询。有的应用场景针对直接将加密数据库部署在云上,保护查询条件及返回数据的场景,但没有覆盖数据库服务商提供数据查询服务,只保护用户SQL查询隐私的场景。此外,有的方案还要求部署两台以上数据库服务器。另外,有些成果中,需要部署代理服务器,基于普通的对称加密,顺序保留加密等。应用场景也是针对加密的数据库隐私SQL执行,非只保护用户SQL查询隐私的场景。这种方案中,SQL语句也需要泄露给代理服务器,若代理非客户端自身部署,则达不到对隐藏SQL查询语句的目的。此外,为了支持多种查询操作,需要对同一个数据进行多种类型加密,生成多个密文,密文存储占用较大空间。
发明内容
本发明的目的是针对目前SQL查询方法中,有的要求部署两台以上数据库服务器,有的需要部署代理服务器的不足,提供一种基于同态加密的隐匿SQL查询方法,实现一个可以保护用户SQL查询语句隐私的SQL查询。
本发明为实现其技术目的所采用的技术方案是:一种基于同态加密的隐匿SQL查询方法,该方法在服务器/客户端的框架上实现;包括以下步骤:
步骤1、客户端在本地生成同态加密公钥pk、私钥sk,初始化查询列名col以及查询值y;如果查询条件是in或者between,那么查询值y就需要用一个数组,y=[y1,y2,…yk]来代替;
步骤2、客户端在本地使用公钥(pk)加密查询值(Encryptpk(y));
步骤3、客户端将公钥(pk)、初始化后的查询列名(col)以及加密后的查询值(Encryptpk(y))发送给服务器;
步骤4、服务器将本地数据库表所有记录的编号(id)对应查询列名(x)列数据与加密后的查询值(Encryptpk(y))做密文减法以及密文常数乘法,生成密文(Cid);
步骤5、服务器将id、密文(Cid)集合返回客户端;
步骤6、客户端解密密文(Cid),生成mid,通过判断mid与0的大小关系,客户端可以判断id对应的记录是否满足查询条件,根据查询条件筛选数据库表记录的编号(id),同时加入干扰数据库表记录的编号(id),生成查询数据库表记录的编号(id)集合({id});
步骤7,将查询数据库表记录的编号(id)集合({id})发送给服务器;
步骤8、服务器返回集合({id})对应的数据库数据记录集合到客户端。
进一步的,上述的基于同态加密的隐匿SQL查询方法中:步骤1中,客户端选取同态加密算法及参数,,生成公钥(pk)私钥(sk);
进一步的,上述的基于同态加密的隐匿SQL查询方法中:步骤2中,通过查询条件确定查询值y,如查询条件为where t_host.label=1,那么查询值y=1,(Encryptpk(y)=Encryptpk(1));如果查询条件为between,in;那么查询值是一个数组(y=[y1,y2,…,yk]),数组的值都需要加密,加密数组值(Encryptpk([y1,y2,…,yk])。
进一步的,上述的基于同态加密的隐匿SQL查询方法中:所述的步骤4中,服务器使用客户端发送过来的公钥(pk),加密本地数据库表查询列col的值,数据库表某条记录的编号(id),查询值(x),那么服务器计算Encpk(x),同时与客户端发送过来的加密查询条件值做密文减法以及密文常数乘法生成加密密文Cid=(Encpk(x)-Encpk(y))*rand;其中rand为随机值,rand可以防止客户端解密后直接推导x值。
进一步的,上述的基于同态加密的隐匿SQL查询方法中:所述的步骤6中,客户端解密密文(Cid),得到明文(mid),服务器根据查询条件,以及明文(mid)与0的大小关系判断数据库表某条记录的编号(id)对应的库表记录是否是需要查询的;
如果查询条件是x<y,那么解密后明文(mid)的值小于0;
如果查询条件是x>y,那么解密后明文(mid)的值大于0;
如果查询条件是x=y,那么解密后明文(mid)的值等于0;
如果查询条件是between,y1<=x<y2那么解密后明文(mid)的值会有两个值mid=(m1,m2),需满足m1>0,m2<0;
如果查询条件是in,那么解密后明文(mid)的值会有多个值mid=(m1,m2,m3,…,mj),需满足其中某个等于0。
本发明基于同态加密,实现一个可以保护用户SQL查询语句隐私的SQL查询方法,具体来说:如果客户端Client方发起SQL查询任务,如:select t_host.money from t_hostwhere t_host.label=1,查询过程中,可以实现:
隐匿查询条件,Server方不知道Client的查询条件,如这里的t_host.label=1,就是查询条件。支持查询条件包括大于、小于、between、in等SQL查询条件。
本发明具有如下特点:
使用同态加密算法加密查询条件以及密文运算,保护SQL查询条件的隐私。
(Encpk(x)-Encpk(y))*rand,通过密文乘以一个随机值,以防止Client根据解密值还原所有x值。
为了防止Server从{id}中反推查询条件,Client在{id}中插入一定比例的不满足条件的id。
下面结合附图和具体实施方式对本发明进行进一步的说明。
附图说明
附图1为本发明实施例1基于同态加密的隐匿SQL查询方法流程图。
具体实施方式
如图1所示,本实施例的基本思路是:SQL查询本质上是比较数据库表查询列的值与查询条件值的大小,而大小的比较可以通过减法以及减后的值是否大于0来实现。如果使用支持减法的同态加密来加密查询条件,则可以做到隐藏SQL查询条件的目的。
包括以下步骤:
Client客户端本地生成同态加密公私钥:pk,sk。初始化查询值y,这里,使用pk加密查询条件值Encryptpk(y),如查询条件为where t_host.label=1,那么查询值y值等于1,如果查询条件为between,in等,那么查询值y是一个查询值数组y=[y1,y2,…,yk],那么数组的值都需要加密Encryptpk([y1,y2,…,yk])。
Client将pk,加密后的查询条件值Encryptpk(y),查询条件中的列名col(如label),发送给Server。
Server服务端使用Client发送过来的pk,加密本地数据库表查询列的值,假设数据库表某条记录的编号为id,查询列col的值为x,那么Server计算Encpk(x),同时与Client发送过来的加密查询条件值做密文减法生成加密密文Cid=(Encpk(x)-Encpk(y))*rand。其中rand为随机值,为了防止Client通过解密值获取Server的x值,导致隐私泄露。
Server将查询库表所有的{id,Cid}集合返回给Client。Client解密{id,Cid}中的Cid,得到明文mid,Client根据查询条件,以及mid与0的大小关系判断id对应的库表记录是否是需要查询的。
如果查询条件是x<y,那么解密后值mid小于0。
如果查询条件是x>y,那么解密后值mid大于0。
如果查询条件是x=y,那么解密后值mid等于0。
如果查询条件是between,y1<=x<y2那么解密会有两个值mid=(m1,m2),需满足m1>0,m2<0。
如果查询条件是in,那么解密会有多个值mid=(m1,m2,m3,…,mj),需满足其中某个等于0。
Client生成所有满足查询条件的id集合{id},并发送给Server。此外,为了防止Server根据查询{id}的集合,反推查询条件,可以在{id}中加入小部分不满足查询条件的id。
Server在得到Client的查询{id}集合后,返回{id}对应的库表记录{data}给Client。
本实施例的具体过程如下:
(1)、首先选取一个实施的客户端Client和服务端Server计算通信的框架,这里选择开源的联邦学习框架FATE,SQL查询语句可以在FATE的任务conf文件中配置。
(2)、Client端选取同态加密算法Paillier及安全参数(2048bit密钥长度),并生成公私钥pk,sk。
(3)、Client端确定查询条件,比如查询Server的People表中age>25的记录,那么查寻条件列col为age,查询条件值y为25。(如果查询条件为in或者between,那么y是一个数组)。
(4)、Client加密查询中条件值生成Encryptpk(y)=Encryptpk(25),查询条件中的列名col=age,以及pk,发送给Server。
(5)、Server获取pk后,加密本地People表中所有记录age的值,假设记录id的age值为x,那么Server生成二元组(id,Cid),其中(Encpk(x)-Encpk(y))*rand,其中rand取1-200之间的随机整数,以防止Client根据解密值还原所有x值。
(6)、Server计算所有记录的(id,Cid),并打包成集合{(id,Cid)}发送给Client。
(7)、Client从集合{(id,Cid)}中提取Cid并解密得到mid,因为查询的是age>25,那么如果mid>0,说明此id对应的记录满足查询条件,将id加入集合{id}中。
(8)、为了防止Server从{id}中反推查询条件,Client在{id}中插入一定比例的不满足条件的id,如满足条件总数10%比例的id,使得mid<=0。
(9)、Client将{id}发送给Server。
(10)Server将{id}集合对应的数据记录{data}返回给Client。

Claims (7)

1.一种基于同态加密的隐匿SQL查询方法,该方法在服务器/客户端的框架上实现;其特征在于:包括以下步骤:
步骤1、客户端在本地生成同态加密公钥(pk)、私钥(sk),初始化查询列名(col)以及查询值(y);
步骤2、客户端在本地使用公钥(pk)加密查询值(y),形成加密后的查询值(Encryptpk(y));
步骤3、客户端将公钥(pk)、初始化后的查询列名(col)以及加密后的查询值(Encryptpk(y))发送给服务器;
步骤4、服务器将本地数据库表所有记录的编号(id)对应查询列名(col)列数据与加密后的查询值(Encryptpk(y))做密文减法以及密文常数乘法,生成密文(Cid);
步骤5、服务器将记录的编号(id)、密文(Cid)集合返回客户端;
步骤6、客户端解密密文(Cid)生成明文(mid),判断记录的编号(id)对应的记录是否满足查询条件;
步骤7,客户端将所有满足查询条件的数据库表记录的编号(id)以及部分不满足查询条件的数据库表记录的编号(id)作为干扰打包成集合({id}),发送给服务器;
步骤8、服务器返回集合({id})对应的数据库数据记录集合到客户端。
2.根据权利要求1所述的基于同态加密的隐匿SQL查询方法,其特征在于:步骤1中,客户端选取同态加密算法及参数,生成公钥(pk)私钥(sk)。
3.根据权利要求1所述的基于同态加密的隐匿SQL查询方法,其特征在于:步骤1中,如果查询条件是in或者between,那么查询值是一个数组(y=[y1,y2,…yk])。
4.根据权利要求1所述的基于同态加密的隐匿SQL查询方法,其特征在于:步骤2中,通过查询条件确定查询值,如查询条件为where t_host.label=1,那么查询值y=1,加密查询值(Encryptpk(y)=Encryptpk(1));如果查询条件为between,in;那么查询值是一个数组(y=[y1,y2,…,yk]),数组的值都需要加密,加密数组值(Encryptpk([y1,y2,…,yk])。
5.根据权利要求1所述的基于同态加密的隐匿SQL查询方法,其特征在于:所述的步骤4中,服务器使用客户端发送过来的公钥(pk),加密本地数据库表查询列名(col)的值,数据库表某条记录的编号(id),查询值(x),那么服务器计算Encpk(x),同时与客户端发送过来的加密查询条件值做密文减法以及密文常数乘法生成加密密文Cid=(Encpk(x)-Encpk(y))*rand;其中rand为随机值,rand可以防止客户端解密后直接推导x值。
6.根据权利要求1所述的基于同态加密的隐匿SQL查询方法,其特征在于:所述的步骤6中,客户端解密密文(Cid),得到明文(mid),服务器根据查询条件,以及明文(mid)与0的大小关系判断数据库表某条记录的编号(id)对应的库表记录是否是需要查询的;
如果查询条件是x<y,那么解密后明文(mid)的值小于0;
如果查询条件是x>y,那么解密后明文(mid)的值大于0;
如果查询条件是x=y,那么解密后明文(mid)的值等于0;
如果查询条件是between,y1<=x<y2那么解密后明文(mid)的值会有两个值mid=(m1,m2),需满足m1>0,m2<0;
如果查询条件是in,那么解密后明文(mid)的值会有多个值mid=(m1,m2,m3,…,mj),需满足其中某个等于0。
7.根据权利要求1所述的基于同态加密的隐匿SQL查询方法,其特征在于:所述的步骤7中,将查询数据库表记录的编号(id)集合({id})发送给服务器时,查询数据库表记录的编号(id)集合({id})中包括部分不满足查询条件查询数据库表记录的编号(id),这部分(id)用来防止服务端通过查询值反推客户端查询条件。
CN202210947370.0A 2022-08-09 2022-08-09 一种基于同态加密的隐匿sql查询方法 Pending CN115455463A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210947370.0A CN115455463A (zh) 2022-08-09 2022-08-09 一种基于同态加密的隐匿sql查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210947370.0A CN115455463A (zh) 2022-08-09 2022-08-09 一种基于同态加密的隐匿sql查询方法

Publications (1)

Publication Number Publication Date
CN115455463A true CN115455463A (zh) 2022-12-09

Family

ID=84297246

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210947370.0A Pending CN115455463A (zh) 2022-08-09 2022-08-09 一种基于同态加密的隐匿sql查询方法

Country Status (1)

Country Link
CN (1) CN115455463A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117610079A (zh) * 2024-01-23 2024-02-27 中汽智联技术有限公司 数据安全处理方法、设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117610079A (zh) * 2024-01-23 2024-02-27 中汽智联技术有限公司 数据安全处理方法、设备和存储介质
CN117610079B (zh) * 2024-01-23 2024-04-09 中汽智联技术有限公司 数据安全处理方法、设备和存储介质

Similar Documents

Publication Publication Date Title
CN112800088B (zh) 基于双向安全索引的数据库密文检索系统及方法
US10936744B1 (en) Mathematical method for performing homomorphic operations
US9946810B1 (en) Mathematical method for performing homomorphic operations
EP3168771B1 (en) Poly-logarythmic range queries on encrypted data
US9355271B2 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
US9275250B2 (en) Searchable encryption processing system
JP6449093B2 (ja) 秘匿化データベースシステム及び秘匿化データ管理方法
US20100262836A1 (en) Privacy and confidentiality preserving mapping repository for mapping reuse
US7809142B2 (en) Data scrambling and encryption of database tables
EP2778953A1 (en) Encoded-search database device, method for adding and deleting data for encoded search, and addition/deletion program
CN112583809B (zh) 非浸入式多种加密算法的数据加密解密的方法
CN118245565B (zh) 一种多方参与隐私安全的知识库构建方法
Gahi et al. Privacy preserving scheme for location-based services
Liu Securing outsourced databases in the cloud
CN115455463A (zh) 一种基于同态加密的隐匿sql查询方法
CN106874379B (zh) 一种面向密文云存储的多维区间检索方法与系统
CN116132079B (zh) 数据处理方法及装置
Venugopal et al. A novel approach for preserving numerical ordering in encrypted data
Almakdi et al. A Secure Model to Execute Queries Over Encrypted Databases in the Cloud
Abdelraheem et al. Executing boolean queries on an encrypted bitmap index
Almarwani et al. Release-aware encryption adjustment query processing for document database
US11308233B2 (en) Method for information retrieval in an encrypted corpus stored on a server
Heidinger et al. Efficient and secure exact-match queries in outsourced databases
Sude et al. Authenticated CRF based improved ranked multi-keyword search for multi-owner model in cloud computing
CN116701493B (zh) 支持模糊查询的数据库操作方法及用户端

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