一种支持正负混合浮点数的密文范围查询方法和系统与流程

文档序号:34820029发布日期:2023-07-20 00:40阅读:40来源:国知局
一种支持正负混合浮点数的密文范围查询方法和系统与流程

本技术涉及支持正负混合浮点数的密文范围查询,特别是涉及一种支持正负混合浮点数的密文范围查询方法和系统。


背景技术:

1、随着云计算等基础设施即服务的广泛应用,很多企业都将数据库放到了云端进行存储。范围查询是数据库中常用的查询方式,根据给定查询的起点和终点,返回满足该范围条件的数据。为了保证数据的安全性,企业在上传数据时几乎都对数据进行了加密。但传统的数据加密算法是对明文进行随机性的变换,破坏了明文的顺序信息,不能支持对密文数据的范围查询。如果将密文数据在云端进行解密后查询则又显然违背了数据加密时想提供的安全初衷,因此,设计支持密文数据的范围查询方法是一个非常有应用价值的研究方向。

2、支持密文数据的范围查询算法的核心是设计的加密算法要能够保持原来明文的顺序。现有较早的方案是基于不经意随机访问内存(oram,oblivious random accessmemory)来设计的,思想是在不暴露内存位置的前提下访问该位置的数据,如stefanov等人提出的基于oram的协议。全同态加密算法提出后,可以将明文进行全同态加密,然后在密文上执行比较运算从而完成范围查询。这两类方案有着比较明显的缺陷,基于oram的方案需要较高的网络带宽,协议交互轮数多。全同态加密方案密文扩展大,计算效率较差,因此都难以适用于大数据量的场景。相比而言,保序加密是目前最高效的支持范围查询的加密方案。这类加密方法的密文保持了原有明文的大小顺序,因此可以直接在密文上进行大小比较。agrawal等人于2004年首次提出了保序加密的概念,boldyreva等人于2009年首次给出了保序加密的安全性定义并进行了效率上的改进。2013年popa等人构造了第一个达到理想安全性的保序加密方案。2015年beneh等人对保序加密进行了安全方面的改进,将直接进行密文大小的比较改进为通过一个比较函数来计算两个密文的大小关系,这类更安全的方案称为揭序加密ore(order revealing encryption)。chenette、furukawa、lewi等人随后提出了一些效率改进版本的揭序加密算法。bogatov等人详细地分析和比较了现有揭序加密算法的安全性和效率。

3、现有的保序加密算法难以精确地刻画数据加密后的信息泄露量,因此方案的安全性分析后得到的结果不能准确反映出实际安全性。目前支持密文范围查询效率最高的是chenette等人提出的揭序加密方案,但是该方案只能针对数值类型为整数的明文进行加密和密文比较,而实际场景中的数值常常含有浮点型,这就使该方案的应用受到了很大的限制。目前基于揭序加密的范围查询只能支持符号一致的明文数据,现有方案中只支持正数,但理论上若数据全部是负数,则只需把比较结果取反即可,不能支持正负混合的明文数据加密后的密文比较。


技术实现思路

1、基于此,针对上述技术问题,提供一种支持正负混合浮点数的密文范围查询方法和系统,以解决现有方案中存在不支持浮点数的密文范围查询、不能支持正负混合的明文数据加密后的密文比较以及难以精确地刻画数据加密后的信息泄露量的问题。

2、第一方面,一种支持正负混合浮点数的密文范围查询方法,所述方法包括:

3、生成待查询密文的加密密钥和混淆密钥,调用第一算法对待查询密文数据表中指定列的每个明文浮点数据进行加密,生成密文数据表;

4、将所述密文数据表发送给云服务器,云服务器接收并存储所述密文数据表;

5、调用第二算法生成所述待查询密文的查询陷门trap,将所述查询陷门trap发送云服务器;

6、云服务器收到查询陷门trap,调用第四算法生成所述待查询密文范围的判定结果,并记录所述第四算法返回true的所有数据行index的集合s;

7、接收云服务器发送的所述集合s,得到所述待查询密文的范围查询结果。

8、上述方案中,可选地,所述第一算法为浮点型明文加密算法floatencrypt,包括:接收单精度浮点数m,安全参数λ长度的加密密钥和混淆密钥,所述密文数据表中数据m所在的行号index;

9、判断所述浮点数m的正负性,若m<0,令m←-m,记符号位s=1;若m≥0,符号位s=0;

10、设定放大倍数δ=106,提取出m的放大后的基数b和指数e;其中,所述指数e为真实指数加上38;

11、对长度为7比特的指数e进行编码;设整数m=3,令

12、

13、f为伪随机函数,其中,为密钥空间,[n]表示整数集合{1,2,…,n},表示模m的剩余类;对待编码的数据p,设b1,b2,…,bn是p的二进制表示形式;对i∈[n],计算

14、ti=f(key1,(i,b1b2…bi-1||0n-i))+bi(mod m)

15、其中,符号||表示数据级联;,其中,n取值7;

16、令t=t1||t2…||tn,使伪随机函数f对24比特的基数b进行编码,输出v=v1||v2…||vn2;其中,n2取值24;添加上符号位,得到的m的编码为u=s||t||v,数据m的编码函数为floatencode(m,key1),所述函数的输出为u;

17、令伪随机函数其中,表示自然数集合,表示包含32个分量的向量,每个分量取值都在中;计算mix=r(key2,index);

18、计算明文数据m的密文符号表示u和mix按照分量模3相加,密文c=c1||c2||…||c32,其中,c1为符号位s;

19、输出所述密文c。

20、上述方案中,进一步可选地,所述第二算法为范围查询陷门生成算法floattrapgen,包括:

21、接收所述范围查询的明文起点值start和终点浮点数end,且满足start≤end,所述加密密钥和混淆密钥;

22、计算范围查询起点的密文cstart=floatencode(start,key1);其中,所述key1为加密密钥;

23、计算范围查询终点的密文cend=floatencode(end,key1);其中,所述key2为混淆密钥;

24、输出范围查询的陷门trap=(cstart,cend)。

25、上述方案中,进一步可选地,所述调用第四算法为范围查询判定算法floatrangequery,包括:

26、接收所述范围查询的陷门trap=(cstart,cend),数据表中密文c,所述密文c所在的数据行号index,混合密钥key2;

27、对密文c进行去混淆,计算mix=r(key2,index),计算符号表示c和mix按照分量模3相减;

28、调用第三算法,计算

29、r1=floatcompare(cstart,c)和r2=floatcompare(cend,c),

30、若所述r1≠1且r2≠-1,则第一结果result=true,否则第一结果result=false,输出第一结果。

31、上述方案中,进一步可选地,所述若所述r1≠1且r2≠-1,则第一结果result=true,否则第一结果result=false,输出第一结果,具体为:r1≠1表示对应的明文start≤m为第一条件,r2≠-1表示对应的明文m≤end为第二条件;若第一条件和第二条件同时成立,则表示密文c对应的明文m满足查询的范围[start,end],所述第一结果为true,否则不满足,则所述第一结果为false。

32、上述方案中,进一步可选地,所述第三算法为密文数据大小比较算法floatcompare,包括:

33、接收密文数据c1和c2;

34、算法输出:大小比较结果result。

35、令所述c1=u1||u2||…||u32,所述c2=u'1||u'2||…||u'32,其中,所有的

36、若c1和c2相同,则结果result=0,算法结束;

37、若u1≠u'1且u1=0,则result=1,否则result=-1,算法结束;

38、设i是使得ui≠u'i的最小正整数,则i>1;

39、若u'i=ui+1(mod3),则result=-1,否则result=1;

40、若u1=u'1=1,则取反:

41、result←-result,算法结束;

42、输出结果result。

43、上述方案中,进一步可选地,所述输出结果result为-1表示所述c1对应的明文小于所述c2对应的明文;

44、所述输出结果result为0表示所述c1对应的明文等于所述c2对应的明文;

45、所述输出结果result为1表示所述c1对应的明文大于所述c2对应的明文。

46、第二方面,一种支持正负混合浮点数的密文范围查询系统,所述系统包括:

47、生成模块:用于生成待查询密文的加密密钥和混淆密钥,调用第一算法对待查询密文数据表中指定列的每个明文浮点数据进行加密,生成密文数据表;

48、发送模块:用于将所述密文数据表发送给云服务器,云服务器接收并存储所述密文数据表;

49、计算模块:用于调用第二算法生成所述待查询密文的查询陷门trap,将所述查询陷门trap发送云服务器;

50、记录模块:用于云服务器收到查询陷门trap,调用第四算法生成所述待查询密文范围的判定结果,并记录所述第四算法返回true的所有数据行index的集合s;

51、输出模块:用于接收云服务器发送的所述集合s,得到所述待查询密文的范围查询结果。

52、第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

53、生成待查询密文的加密密钥和混淆密钥,调用第一算法对待查询密文数据表中指定列的每个明文浮点数据进行加密,生成密文数据表;

54、将所述密文数据表发送给云服务器,云服务器接收并存储所述密文数据表;

55、调用第二算法生成所述待查询密文的查询陷门trap,将所述查询陷门trap发送云服务器;

56、云服务器收到查询陷门trap,调用第四算法生成所述待查询密文范围的判定结果,并记录所述第四算法返回true的所有数据行index的集合s;

57、接收云服务器发送的所述集合s,得到所述待查询密文的范围查询结果。

58、第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

59、生成待查询密文的加密密钥和混淆密钥,调用第一算法对待查询密文数据表中指定列的每个明文浮点数据进行加密,生成密文数据表;

60、将所述密文数据表发送给云服务器,云服务器接收并存储所述密文数据表;

61、调用第二算法生成所述待查询密文的查询陷门trap,将所述查询陷门trap发送云服务器;

62、云服务器收到查询陷门trap,调用第四算法生成所述待查询密文范围的判定结果,并记录所述第四算法返回true的所有数据行index的集合s;

63、接收云服务器发送的所述集合s,得到所述待查询密文的范围查询结果。

64、本发明至少具有以下有益效果:

65、本发明基于对现有技术问题的进一步分析和研究,认识到现有方案中存在不支持浮点数的密文范围查询、不能支持正负混合的明文数据加密后的密文比较以及难以精确地刻画数据加密后的信息泄露量的问题,本发明通过数据拥有者生成待查询密文的加密密钥和混淆密钥,调用第一算法对待查询密文数据表中指定列的每个明文浮点数据进行加密,生成密文数据表;将所述密文数据表发送给云服务器,云服务器接收并存储所述密文数据表;调用第二算法生成所述待查询密文的查询陷门trap,将所述查询陷门trap发送云服务器;云服务器收到查询陷门trap,调用第四算法生成所述待查询密文范围的判定结果,并记录所述第四算法返回true的所有数据行index的集合s,接收云服务器发送的所述集合s,得到所述待查询密文的范围查询结果。本发明算法支持浮点数的加密以及对应密文比较和范围查询,算法效率高,效率和目前基于整数的效率最高的揭序加密方案几乎相同,支持正负数混合的明文数据加密,并且加密后得到的密文数据可以方便地进行统一的比较和范围查询,本发明算法的密文数据进行大小比较时可以清楚地刻画出信息泄露量,由此对算法的安全性可以得到准确的分析结果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1