一种基于同态加密的隐匿SQL查询方法技术

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

【技术实现步骤摘要】
一种基于同态加密的隐匿SQL查询方法


[0001]本专利技术涉及基于同态加密的隐匿SQL查询方法领域。

技术介绍

[0002]SQL查询是指客户端通过结构化查询语言SQL,向服务端数据库(如MySql,Oracle),查询满足指定条件的数据记录,数据库服务器在解析SQL语句后,向客户端返回满足条件的数据记录。
[0003]同态加密是一种可以直接对密文进行计算,其解密结果与明文进行同样的计算结果相同的一种加密算法。目前在保护用户数据隐私方面有非常多的应用场景。
[0004]同态加密又主要分为全同态加密,半同态加密和有限级数的全同态加密。
[0005](1)全同态加密
[0006]全同态加密是一种对密文可以进行任意计算(分为算术上的加法,乘法,或者逻辑比特位上的异或与AND)的一种同态加密算法。
[0007](2)半同态加密,有限级数的全同态加密
[0008]目前,由于全同态加密在应用上往往存在效率和存储上的限制,应用更加广泛的是半同态加密,或者有限级数的全同态加密。其中半同态加密算法是只支持密文加法或者乘法的同态运算,而有限级数的全同态加密则支持加法同态及有限层数的乘法同态运算。
[0009]数据是互联网的基础,也是互联网最具有价值的资产,信息时代最重要的生产要素。包括云计算,人工智能,数据挖掘,区块链等高新技术的发展,都离不开数据。
[0010]而数据的使用则离不开数据库来存储,管理,数据库是“按照数据结构来组织、存储和管理数据的仓库”,长期存储在计算机系统内、有组织的、可共享的、统一管理的大量数据的集合。
[0011]SQL语言则是一种用户用来与数据库交互的计算机语言,通过将SQL语句发送给数据库管理系统解析并执行,客户端可以对数据库执行查询、创建、更新、删除数据库表等操作。当前各类主流的关系型数据库,非关系型数据库如MySQL,SQL Server,Oracle,Redis,Postgresql,MongoDB,Hbase等,都支持SQL语言。
[0012]SQL语言中,SQL查询是最常见的一种,用于客户端从数据库服务端获取满足某些条件的数据记录。
[0013]在实际应用中,由于互联网云计算等的发展,客户端和数据库服务端往往不是同一个主体,很多数据库均已部署在云上,用于对外提供数据服务。如果客户端直接使用明文SQL语句向数据库服务端发送请求,容易导致客户端隐私泄露,如客户端如果使用如下SQL查询一些用户的基本信息“Select*from people where age>25and age<50and salary>20000”,那么服务端在收到此SQL语句后,可得知客户端感兴趣的目标群体为年龄在25和50之间,以及月薪大于2w的人,进一步分析可获得其商业模式。如果服务端将这类信息泄露给客户端的商业竞争对手,则会给客户端带来一定经济损失。
[0014]此外,很用户多为了更加方便服务自己的业务,很多企业、机构还会将自己的数据
库直接部署在云数据库服务上,这时候也需要采取加密等一定措施防止云服务商获取其隐私敏感数据。
[0015]另一方面,隐私计算这几年也在飞速发展中,各项技术逐渐由学术研究拓展到了实际应用中,如可信执行环境TEE,同态加密HE,多方计算MPC,联邦学习等等。
[0016]其中同态加密可以在不泄露明文数据的情况下,直接对密文进行计算分析,是隐私计算技术的一个重要分支。尽管早期的同态加密算法,尤其是全同态加密,效率很低,占用存储很大。但是近年来,随着硬件的更新换代,学术研究的深入,全同态加密的计算效率不断提升,也扩大了其商业应用场景,不少云厂商都开始提供全同态加密服务。其在金融,医疗,大数据等方向也都有了应用场景。
[0017]当前,已有一些研究成果通过使用同态加密,保护数据库查询的隐私,如Two

Cloud Secure Database for Numeric

Related SQL Range Queries With Privacy Preserving(用于数字相关SQL范围查询的具有隐私保护的两个云安全数据库,)中,使用同态加密,提供基于数值类型的数据库查询。支持加密数据库的数值类型的查询,此方案需要部署两台数据库服务器,一个负责存储加密数据库,以及同态密文运算,一个负责计算满足查询条件的记录索引。
[0018]另外,CryptDB,CryptDB:Protecting Confidentiality with Encrypted Query Processing(通过加密查询处理保护机密性)也是在加密数据库上进行SQL查询,需要在客户端和数据库服务端部署一台代理Proxy,Proxy对用户的SQL的关键字段请求进行加密,并且依然保证SQL语句的语法要求,然后发送给服务端,处理完成以后,返回加密的数据给PROXY,在Proxy处解密,然后返回给客户端。
[0019]目前,这些成果中,有的只支持数值的查询,不支持字符串的查询。有的应用场景针对直接将加密数据库部署在云上,保护查询条件及返回数据的场景,但没有覆盖数据库服务商提供数据查询服务,只保护用户SQL查询隐私的场景。此外,有的方案还要求部署两台以上数据库服务器。另外,有些成果中,需要部署代理服务器,基于普通的对称加密,顺序保留加密等。应用场景也是针对加密的数据库隐私SQL执行,非只保护用户SQL查询隐私的场景。这种方案中,SQL语句也需要泄露给代理服务器,若代理非客户端自身部署,则达不到对隐藏SQL查询语句的目的。此外,为了支持多种查询操作,需要对同一个数据进行多种类型加密,生成多个密文,密文存储占用较大空间。

技术实现思路

[0020]本专利技术的目的是针对目前SQL查询方法中,有的要求部署两台以上数据库服务器,有的需要部署代理服务器的不足,提供一种基于同态加密的隐匿SQL查询方法,实现一个可以保护用户SQL查询语句隐私的SQL查询。
[0021]本专利技术为实现其技术目的所采用的技术方案是:一种基于同态加密的隐匿SQL查询方法,该方法在服务器/客户端的框架上实现;包括以下步骤:
[0022]步骤1、客户端在本地生成同态加密公钥pk、私钥sk,初始化查询列名col以及查询值y;如果查询条件是in或者between,那么查询值y就需要用一个数组,y=[y1,y2,

yk]来代替;
[0023]步骤2、客户端在本地使用公钥(pk)加密查询值(Encrypt
pk
(y));
[0024]步骤3、客户端将公钥(pk)、初始化后的查询列名(col)以及加密后的查询值(Encrypt
pk
(y))发送给服务器;
[0025]步骤4、服务器将本地数据库表所有记录的编号(id)对应查询列名(x)列数据与加密后的查询值(Encrypt
pk
(y))做本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于同态加密的隐匿SQL查询方法,该方法在服务器/客户端的框架上实现;其特征在于:包括以下步骤:步骤1、客户端在本地生成同态加密公钥(pk)、私钥(sk),初始化查询列名(col)以及查询值(y);步骤2、客户端在本地使用公钥(pk)加密查询值(y),形成加密后的查询值(Encrypt
pk
(y));步骤3、客户端将公钥(pk)、初始化后的查询列名(col)以及加密后的查询值(Encrypt
pk
(y))发送给服务器;步骤4、服务器将本地数据库表所有记录的编号(id)对应查询列名(col)列数据与加密后的查询值(Encrypt
pk
(y))做密文减法以及密文常数乘法,生成密文(C
id
);步骤5、服务器将记录的编号(id)、密文(C
id
)集合返回客户端;步骤6、客户端解密密文(C
id
)生成明文(m
id
),判断记录的编号(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,加密查询值(Encrypt
pk
(y)=Encrypt
pk
(1));如果查询条件为between,in;那么查询值是一个数组(y=[y1,y2,

,yk]),数组的值都需要加密,加密数组值(Encrypt
pk
([y1,y2...

【专利技术属性】
技术研发人员:谈扬
申请(专利权)人:深圳前海新心数字科技有限公司
类型:发明
国别省市:

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

1