【技术实现步骤摘要】
一种面向外包流式数据的查询完整性验证系统及方法
本专利技术属于网络安全领域,具体涉及一种面向外包流式数据的查询完整性验证系统及方法。
技术介绍
随着云计算的发展和物联网应用的普及,数据量和用户数快速增长,数据流被广泛应用于当今的信息系统。如传感器实时采集到的气温、气压及PM2.5等数据,可穿戴医疗设备实时监控到的血压、心率等数据,或DNA计算服务器生成的DNA数据等,都可以看作为流式数据。由于流式数据的数据量庞大,且不断产生,使得设备对数据的存储、管理与维护变得更具挑战性。许多设备受到存储资源或计算资源的限制,更愿意将这些数据外包到资源强大的第三方服务器进行存储和管理,当数据使用者需要用到这些数据时,再从服务器所存储的数据库中进行查询。然而,由于数据脱离了拥有者的物理控制,使用者无法确认服务器返回的数据是否为正确且完整的。此外,由于第三方服务器不一定是可信的,恶意的服务器可能会对存储的数据进行篡改,或对数据流中数据的顺序进行交换,使得用户在不知情的情况下接收到错误的查询结果,并可能造成很大的损失,如DNA序列中数据顺序的一点点不同就将导致诊断结果的不同。因此,保证用户可以从第三方服务器查询或更新数据记录,并能够检测和验证所查询数据的完整性具有重要的意义。为了实现安全的查询,一种最简单的方式是用户从第三方下载所有的数据流信息并且验证它们。然而,流式数据是一个动态的、实时增长的数据集合,想要将其全部下载下来是不可行的。又或者,可以在发送给服务器之前先对每个数据元素进行数字签名,但是这种方法不仅效率低下,且不能保证流式数据中数据之间的先后顺序,并且只有拥有签名值 ...
【技术保护点】
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...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。