当前位置: 首页 > 专利查询>东北大学专利>正文

一种面向外包流式数据的查询完整性验证系统及方法技术方案

技术编号:20224564 阅读:20 留言:0更新日期:2019-01-28 22:35
本发明专利技术涉及一种面向外包流式数据的查询完整性验证系统及方法,该系统包括初始化模块、数据管理模块和查询验证模块。初始化模块用于系统启动时数据拥有者生成公私钥等系统所需的参数,并将公钥分发给服务器和数据使用者;数据管理模块用于数据拥有者将实时的流式数据外包到服务器,之后需要对服务器端之前存储的数据进行更改时,执行更新数据子模块对数据及相应的证据进行更新;查询验证模块用户数据使用者对服务器存储的数据进行查询,将会得到服务器返回的对应查询索引的数据以及相应的证据,并利用其返回的证据来验证查询结果是否正确。

【技术实现步骤摘要】
一种面向外包流式数据的查询完整性验证系统及方法
本专利技术属于网络安全领域,具体涉及一种面向外包流式数据的查询完整性验证系统及方法。
技术介绍
随着云计算的发展和物联网应用的普及,数据量和用户数快速增长,数据流被广泛应用于当今的信息系统。如传感器实时采集到的气温、气压及PM2.5等数据,可穿戴医疗设备实时监控到的血压、心率等数据,或DNA计算服务器生成的DNA数据等,都可以看作为流式数据。由于流式数据的数据量庞大,且不断产生,使得设备对数据的存储、管理与维护变得更具挑战性。许多设备受到存储资源或计算资源的限制,更愿意将这些数据外包到资源强大的第三方服务器进行存储和管理,当数据使用者需要用到这些数据时,再从服务器所存储的数据库中进行查询。然而,由于数据脱离了拥有者的物理控制,使用者无法确认服务器返回的数据是否为正确且完整的。此外,由于第三方服务器不一定是可信的,恶意的服务器可能会对存储的数据进行篡改,或对数据流中数据的顺序进行交换,使得用户在不知情的情况下接收到错误的查询结果,并可能造成很大的损失,如DNA序列中数据顺序的一点点不同就将导致诊断结果的不同。因此,保证用户可以从第三方服务器查询或更新数据记录,并能够检测和验证所查询数据的完整性具有重要的意义。为了实现安全的查询,一种最简单的方式是用户从第三方下载所有的数据流信息并且验证它们。然而,流式数据是一个动态的、实时增长的数据集合,想要将其全部下载下来是不可行的。又或者,可以在发送给服务器之前先对每个数据元素进行数字签名,但是这种方法不仅效率低下,且不能保证流式数据中数据之间的先后顺序,并且只有拥有签名值的人才能对数据进行验证。针对上述问题,为了实现高效且安全的外包流式数据查询,许多人研究并实现了针对流式数据查询完整性验证的方案。但仍然存在着很多问题,比如需要预先定义好外包流式数据的数据总量或者附加数据操作开销过大不适用于实际场景等。目前针对流式数据的数据量大、实时产生的特点,如何更加安全、高效地对其进行查询及完整性验证具有十分广阔的研究意义和应用价值。
技术实现思路
针对现有技术的不足,提供一种面向外包流式数据的查询完整性验证系统及方法。本专利技术的技术方案如下:一种面向外包流式数据的查询完整性验证系统,包括初始化模块、数据管理模块和查询验证模块,在数据使用者、数据拥有者、服务器三个实体的作用下运行。所述的初始化模块主要包括密钥生成和通信功能两个子模块。系统在启动时,系统中的实体首先会建立通信连接,数据拥有者通过执行密钥生成子模块生成公私钥等系统所需的参数,然后通过通信功能将公钥分发给服务器和数据使用者。所述的数据管理模块主要包括附加数据和更新数据两个子模块。附加数据子模块和更新数据子模块的执行者都为数据拥有者,数据拥有者将实时的流式数据不断外包给服务器,即依次附加数据到服务器。当之后需要对服务器端之前存储的数据进行更改时,数据拥有者执行更新数据子模块来对数据及相应的证据进行更新。所述的查询验证模块主要包括查询数据和查询结果验证两个子模块。当数据使用者想要查询数据时,通过执行查询数据子模块将会得到服务器返回的对应查询索引的数据以及相应的证据,之后执行查询结果验证子模块利用服务器返回的证据验证查询结果是否正确。运用一种面向外包流式数据的查询完整性验证系统,进行流式数据查询完整性验证的方法,包括以下步骤:步骤1:数据拥有者以自身为信任中心,生成公钥和私钥,并将公钥分发给服务器和数据使用者,将私钥自己保存。步骤1.1:数据拥有者随机选择计算其中是一个随机的生成元,和为两个素数p阶群,满足映射e:步骤1.2:令公共参数pp=(g,h1,h2,h1,2,h2,1),陷门td=(z1,z2),初始化计数器为cnt=0,初始化版本更新信息T=null;步骤1.3:数据拥有者随机选择k←{0,1}λ作为伪随机函数PRF的种子,计算r0=PRFk(0),对向量n0=(0,0)计算承诺值得到步骤1.4:数据拥有者将得到的公钥PK=(pp,Croot,T)分发给服务器和数据使用者,将私钥SK=(k,td,cnt)自己保存。步骤2:数据拥有者要将实时产生的流式数据外包到服务器,将新数据d以及数据的插入路径发送给服务器。步骤2.1:数据拥有者为新添加的数据设置索引i=cnt+1,计数器也随之加1,即cnt=cnt+1;步骤2.2:数据拥有者利用伪随机函数得到ri←PRFk(i),计算得到该节点ni的承诺值Ci,计算ri'=ri+z1(0-d)使得等式成立,从而实现将新数据d添加至该节点ni1处;步骤2.3:数据拥有者还要将该节点添加到服务器端存储数据的认证树结构中。数据拥有者计算该节点父节点的索引计算其为父节点的第j=((i-1)modq)+1个孩子节点,其中q为认证树的分叉树。利用伪随机函数得到rp←PRFk(p),计算得到该节点np的承诺值Cp,构造指针ptpj=(Cp,j)将节点ni连接在父节点np下面,计算得到ri”=ri+z2(0-ptpj)使得等式成立,从而将指针插入到该节点ni2处;步骤2.4:数据拥有者计算d存在于ni节点中ni1位置的证据以及节点ni为节点np的第j个孩子节点的证据步骤2.5:数据拥有者将数据d以及证据组成的插入路径Inspath=(Pi1,ni,Pi2)发送给服务器进行存储。步骤3:数据使用者向服务器发送查询索引i,服务器会返回对应的数据及证据。步骤3.1:服务器接收到数据使用者发送的查询索引,计算该节点处于认证树的层数找到节点ni中ni1处存储的数据步骤3.2:接下来按照层数递减的顺序,自下向上分别找到该节点和根节点之间每一层的证据,包括每一层节点中所存数据的证据及其父节点的证据,从而构成一个认证路径为AuPathi=(Pi1,ni,Pi2,np,Pp2,…,n0);步骤3.3:服务器将查询到的数据及认证路径AuPathi发送给数据使用者。步骤4:数据使用者对查询结果进行验证,从而保证得到的查询数据确实为数据使用者上传到服务器的第i个数据。步骤4.1:数据使用者根据公钥中存储的版本更新信息T判断该节点存储的数据值是否为最近版本,及将得到的服务器返回的版本更新信息与本地所存T(i)进行比对,若不同,则终止操作。否则,继续下面的验证步骤;步骤4.2:数据使用者根据认证路径AuPathi,按照层数递减的顺序,自下向上分别对节点中的数据di及父节点验证等式e(C/him,hi)=e(Pi,g)是否成立。若每一层都验证通过,则将输出数据库中位置i处对应的数据d。反之,则终止操作。步骤5:数据拥有者可以对之前上传到服务器的数据进行更新。步骤5.1:数据拥有者想要将索引i处的数据更新为d',将更新索引i以及新数据d'发送到服务器;步骤5.2:服务器首先执行查询算法查询索引i处原数据d,将d以及认证路径AuPathi返回给数据拥有者;步骤5.3:数据拥有者首先验证服务器查询结果的正确性,若不正确,则终止操作。反之,则利用伪随机函数得到ri←PRFk(i),计算得到该节点ni的承诺值Ci,令版本更新信息T(i)=T(i)+1并存入T,连接新数据d'和版本信息T(i)。计算ri'=ri+z1(0-(d'||T(i)))使得等式成立,从而实现将新数据d'|本文档来自技高网
...

【技术保护点】
1.一种面向外包流式数据的查询完整性验证系统,其特征在于,包括初始化模块、数据管理模块和查询验证模块,在数据使用者、数据拥有者、服务器三个实体的作用下运行:所述的初始化模块包括密钥生成和通信两个子模块,在系统启动时密钥生成子模块提供数据拥有者生成公私钥等系统所需的参数,通讯子模块将公钥分发给服务器和数据使用者;所述的数据管理模块包括附加数据和更新数据两个子模块,附加数据子模块使数据拥有者将实时的流式数据外包到服务器,之后需要对服务器端之前存储的数据进行更改时,执行更新数据子模块对数据及相应的证据进行更新;所述的查询验证模块包括查询数据和查询结果验证两个子模块,用户数据使用者通过查询数据子模块对服务器存储的数据进行查询,得到服务器返回的对应查询索引的数据以及相应的证据,查询结果验证子模块利用其返回的证据来验证查询结果是否正确。

【技术特征摘要】
1.一种面向外包流式数据的查询完整性验证系统,其特征在于,包括初始化模块、数据管理模块和查询验证模块,在数据使用者、数据拥有者、服务器三个实体的作用下运行:所述的初始化模块包括密钥生成和通信两个子模块,在系统启动时密钥生成子模块提供数据拥有者生成公私钥等系统所需的参数,通讯子模块将公钥分发给服务器和数据使用者;所述的数据管理模块包括附加数据和更新数据两个子模块,附加数据子模块使数据拥有者将实时的流式数据外包到服务器,之后需要对服务器端之前存储的数据进行更改时,执行更新数据子模块对数据及相应的证据进行更新;所述的查询验证模块包括查询数据和查询结果验证两个子模块,用户数据使用者通过查询数据子模块对服务器存储的数据进行查询,得到服务器返回的对应查询索引的数据以及相应的证据,查询结果验证子模块利用其返回的证据来验证查询结果是否正确。2.根据权利要求1所述的一种面向外包流式数据的查询完整性验证系统,其特征在于:所述的初始化模块包括密钥生成和通信功能两个子模块:数据拥有者以自身为信任中心,生成公钥和私钥,并将公钥分发给服务器和数据使用者,将私钥自己保存。3.根据权利要求1所述的一种面向外包流式数据的查询完整性验证系统,其特征在于:所述的数据管理模块包括附加数据和更新数据两个子模块:数据拥有者通过附加数据子模块将实时产生的流式数据外包到服务器,将新数据d以及数据的插入路径发送给服务器,服务器对数据进行存储;数据拥有者还可以通过更新数据子模块对之前上传到服务器的数据进行更新,将数据索引以及更新后的数据发送给服务器,服务器对存储的数据进行更新。4.根据权利要求1所述的一种面向外包流式数据的查询完整性验证系统,其特征在于:所述的查询验证模块包括查询数据和查询结果验证两个子模块其工作过程为:数据使用者向服务器发送查询索引i,服务器会返回对应的数据及证据;之后数据使用者对查询结果进行验证,从而保证得到的查询数据确实为数据使用者上传到服务器的第i个数据;若验证成功,接受该数据;反之,则终止操作。5.运用权利要求1所述的一种面向外包流式数据的查询完整性验证系统进行流式数据查询完整性验证的方法,包括以下步骤:步骤1:数据拥有者通过初始化模块以自身为信任中心,生成公钥和私钥,通讯子模块将公钥分发给服务器和数据使用者,将私钥自己保存;步骤1.1:数据拥有者随机选择元素计算其中是一个随机的生成元,和为两个素数p阶群,满足映射e:步骤1.2:令公共参数pp=(g,h1,h2,h1,2,h2,1),陷门td=(z1,z2),初始化计数器为cnt=0,初始化版本更新信息T=null;步骤1.3:数据拥有者随机选择k←{0,1}λ作为伪随机函数PRF的种子,计算r0=PRFk(0),对向量n0=(0,0)计算承诺值得到步骤1.4:数据拥有者将得到的公钥PK=(pp,Croot,T)分发给服务器和数据使用者,将私钥SK=(k,td,cnt)自己保存;步骤2:数据拥有者通过数据管理模块中附加数据子模块将实时产生的流式数据外包到服务器,将新数据d以及数据的插入路径发送给服务器;步骤2.1:数据拥有者为新添加的数据设置索引i=cnt+1,计数器也随之加1,即cnt=cnt+1;步骤2.2:数据拥有者利用伪随机函数得到ri←PRFk(i),计算得到该节点ni的承诺值Ci,计算ri...

【专利技术属性】
技术研发人员:周福才吴淇毓王强
申请(专利权)人:东北大学
类型:发明
国别省市:辽宁,21

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

1