[发明专利]基于ADS的外包数据库SQL查询完整性验证系统及方法有效
申请号: | 201710672216.6 | 申请日: | 2017-08-08 |
公开(公告)号: | CN107451281B | 公开(公告)日: | 2020-09-29 |
发明(设计)人: | 周福才;王强;玄鹏开;吴淇毓;王红伟 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/22;G06F21/62 |
代理公司: | 大连东方专利代理有限责任公司 21212 | 代理人: | 李馨 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 ads 外包 数据库 sql 查询 完整性 验证 系统 方法 | ||
1.基于认证数据结构的外包数据库SQL查询完整性验证系统,其特征在于:包括:
初始化模块,包括密钥生成模块,由数据拥有者执行,用于生成私钥和公钥;系统初始化模块,由数据拥有者执行,生成认证数据结构和摘要;
证据生成模块,用于客户端向服务器发送查询请求时,根据服务器接收客户端发送的查询请求,计算查询结果及证据,返回给客户端;
完整性验证模块,由客户端执行,利用查询结果及证据验证查询结果的完整性;
其中,所述证据生成过程为:计算单维范围查询及证据、计算集合交集及证据、计算多维范围查询及证据、计算连接查询及证据、或计算函数查询及证据;
计算单维范围查询及证据步骤如下:
步骤1:读取客户端的单维范围查询语句,连接数据库,接受客户端的查询请求;
步骤2:对认证跳表ASL调用RangeCover,得到对应的结果result1;
步骤3:返回对应的的根节点值,根节点值中包含acc(Ci),得到结果对应的证据proof1为acc(Ci);
acc(Ci)为累加值,随机选取陷门累加器对中的元素进行累加,输出属于群的元素;令χ为集合,χ中的元素均在中,用acc(χ)表示χ的累加值,其定义如下:
步骤4:将查询的到的结果result1、证据proof1返回给客户端;
计算集合交集及证据步骤如下:
步骤1:首先若集合A为空,则交集查询结果I为空,计算出证据digestI,W1,W2,Q1,Q2;
步骤2:集合A不为空,计算出A和B的交集I,计算集合A和交集I的差集A_I,计算集合B和交集I的差集B_I;
步骤3:使用公钥pubs_g1计算集合A的累加值accA,计算集合B的累加值accB;
步骤4:对于集合A_I中的元素,计算得到每个元素的逆元,调用NTL库中的BuildFromRoots函数,得到逆元形成的多项式系数polyA;
步骤5:使用公钥pubs_g2和polyA计算出集合A_I的累加值W1;
步骤6:同步骤4,计算关于集合B_I的多项式系数polyB;
步骤7:同步骤5,计算关于集合B_I的累加值W2;
步骤8:使用NTL库中的XGCD函数,计算polyA和polyB的最大公约数polyD,得到polyS和polyT,满足polyA*polyS+polyB*polyT=polyD;
步骤9:根据公钥pubs_g1和polyS计算出证据Q1,Q1是使用生成元,计算的累加值;
步骤10:同步骤9,根据公钥pubs_g1和polyT计算出证据Q2;
步骤11:调用compute_digest_pub函数,使用公钥pubs_g1计算集合I累加值digestI,再用公钥pubas_g1计算集合I的累加值w_extra;
步骤12:最终,返回结果为I,返回证据有accA,accB,W1,W2,Q1,Q2,digestI和w_extra;
计算多维范围查询及证据步骤如下:
步骤1:读取客户端的多维范围查询请求,连接服务器,接受客户端的查询请求,将其拆分为多个单维范围查询;
步骤2:对认证跳表ASL调用RangeCover,如果RangeCover查询返回节点的集合为Nw={n1,...},得到每一个单维范围查询对应的结果Rw和Rz,则:
步骤3:计算证据和
步骤4:对多个结果进行集合交集运算
步骤5:将结果R*、证据proof2、proof3返回给客户端;
计算连接查询及证据步骤如下:
步骤1:读取客户端的连接查询请求,连接数据库,接受客户端的查询请求;
步骤2:对认证跳表ASL调用RangeCover,得到每一个数据库中的数据表对应的结果Ci和Cj;
步骤3:返回对应的的根节点值,根节点值中包含acc(Ci),得到结果对应的证据proof4为acc(Ci);返回对应的的根节点值,根节点值中包含acc(Cj),得到结果对应的证据proof5为acc(Cj);
步骤4:对多个结果进行集合交集运算C*=Ci∩Cj;
步骤5:找到包含结果中元素的每一行数据;
步骤6:将结果C*、证据proof4、proof5返回给客户端;
计算函数查询及证据步骤如下:
函数查询为FUNC={SUM,COUNT,AVG,MAX,MIN},其中计数查询可转化为2个求和查询相减,平均值查询可转化为求和查询与计数查询相除,最大值最小值查询可转化为单维范围查询;
计算求和查询及证据:
步骤1:读取客户端的求和查询请求,连接数据库,接受客户端的查询请求,查询集合S={x0,x1,...,xn}中所有元素的和,集合中元素的累加值为:
步骤2:计算多项式系数以及
步骤3:计算集合S中的元素的和为
步骤4:根据pk中的来计算证据w1,w2,其中
计算计数查询及证据:
步骤1:读取客户端的计数查询请求,连接数据库,接受客户端的查询请求,原始表格中需要计数的是第j列;
步骤2:在第j列之后增加一列j',然后将第j列每一行(i)的元素加1并赋值给第j'列,即xij'=xij+1;
步骤3:分别对第j和j'列求和,分别表示为SUM(j)和SUM(j'),以及证据a0、a1、a′0、a′1;
步骤4:计算第j列上的计数查询,即COUNT(j)=SUM(j')-SUM(j);
计算平均值查询及证据:
步骤1:读取客户端的平均值查询请求,连接数据库,接受客户端的查询请求,需要查询第j列的平均值;
步骤2:在第j列之后增加一列j',然后将第j列每一行(i)的元素加1并赋值给第j'列,即xij'=xij+1;
步骤3:分别对第j和j'列求和,分别表示为SUM(j)和SUM(j'),以及证据a0、a1、a′0、a′1;
步骤4:计算第j列上的计数查询,即COUNT(j)=SUM(j')-SUM(j);
步骤5:通过求和查询的结果除以计数查询的结果可以得到第j列的平均值,即AVG(j)=SUM(j)/COUNT(j);
计算最大值查询及证据:
步骤1:向服务器查询第j列的最大值Jmax;
步骤2:服务器将最大值查询转换为单维范围查询,求第j列中所有大于等于Jmax的值即为最大值的结果result2;
步骤3:服务器计算出单维范围查询的证据proof6为acc(Cj);
计算最小值查询及证据:
步骤1:向服务器查询第j列的最小值Jmin;
步骤2:服务器将最小值查询转换为单维范围查询,求第j列中所有小于等于Jmin的值即为最小值的结果result3;
步骤3:服务器计算出单维范围查询的证据proof7为acc(Cj)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710672216.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种供应室工作用医疗器械清洗装置
- 下一篇:一种管道超声清洗装置