CN110781524B - 一种混合云存储中数据的完整性验证方法 - Google Patents
一种混合云存储中数据的完整性验证方法 Download PDFInfo
- Publication number
- CN110781524B CN110781524B CN201911039267.0A CN201911039267A CN110781524B CN 110781524 B CN110781524 B CN 110781524B CN 201911039267 A CN201911039267 A CN 201911039267A CN 110781524 B CN110781524 B CN 110781524B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- cloud
- file block
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种混合云存储中数据的完整性验证方法,其特征在于,在PDP算法的基础上,借助变色龙签名算法以及私有云为文件分配秘钥以及生成标签,并存储于公有云中,当选定文件进行验证时,私有云生成验证信息,发送至公有云,公有云获取秘钥以及标签,形成证据,以私有云为平台,使证据与待验证文件块发生碰撞,判断待验证文件块是否完整。本发明中,借助变色龙哈希以及公有云私有云架构,实现了数据完整性校验方案中标签生成阶段的拆分,减少了用户的在线等待时间,提升了用户体验,减少了动态更新阶段的冗余计算,降低了计算开销。
Description
技术领域
本发明属于云资源分配以及安全性技术领域,具体涉及一种混合云存储中数据的完整性验证方法。
背景技术
传统的数据完整性验证方案往往针对的是公有云环境下云存储服务,其特点在于尽可能降低用户的计算开销与存储开销。而在混合云环境下,如果依旧沿用传统的数据完整性验证方案,将在很大程度上浪费私有云所具备的计算力以及存储空间。所以在混合云架构逐渐普及的今天,一种针对混合云架构,能充分发挥混合云技术优势的数据完整性校验方案就显得极为重要。
发明内容
为了解决现有技术中的问题,本发明提供一种混合云存储中数据的完整性验证方法,其通过将ProFileon算法委托给私有云执行,使得打标签阶段的绝大部分计算负载由用户端转移到私有云服务器端,降低了用户的计算压力;同时将Challenge和Verify算法委托私有云,取代了传统方案中的第三方审计机构,实现了自主校验,避免了挑战以及审计过程中可能出现的隐私泄露以及审计机构和云服务商串通的问题。
为了实现上述技术效果,本发明通过以下方案予以实现:
一种混合云存储中数据的完整性验证方法,在PDP算法的基础上,借助变色龙签名算法以及私有云为文件分配秘钥以及生成标签,并存储于公有云中,当选定文件进行验证时,私有云生成验证信息,发送至公有云,公有云获取秘钥以及标签,形成证据,以私有云为平台,使证据与待验证文件块发生碰撞,判断待验证文件块是否完整。
作为本发明的进一步改进,所述通过私有云为文件分配秘钥以及生成标签具体为:
私有云提前分配密钥以及离线标签,所述离线标签包括文件块替身信息、离线变色龙哈希辅助变量以及密钥中的动态更新通用变量。
作为本发明的进一步改进,所述选定文件进行验证前,还包括文件的分割,所述文件的分割具体为用户对将待上传的文件进行分块处理,得到文件块集合,对于每一个单独的文件块进行分区处理,将一个单独的文件块划分成若干扇区,根据陷门信息、文件块替身信息以及离线变色龙哈希辅助变量,计算出每个真实文件块对应的在线变色龙哈希辅助变量,并将其与待上传文件存储至公有云中。
作为本发明的进一步改进,当选定文件进行验证时,还包括挑战信息集合的获取,所述挑战信息集合的获取为:
私有云在文件块分区后得到的文件块中随机选取若干,生成长度为C的随机整数序列,所述随机整数序列序列包含C个不重复整数,对应要被验证的C个文件块的索引号;私有云在素数域初始化后得到的大整数群循环群中,挑选若C个随机大整数元素,与文件块的索引构成挑战信息集合,并发送至公有云。
作为本发明的进一步改进,所述公有云获取秘钥以及标签,形成证据,具体为:
第一聚合值的形成:公有云获取验证信息,根据挑战信息集合以及密钥,将所有被选中文件块的特定扇区在与挑战信息中的大整数进行乘积操作后进行累加,得到第一聚合值。第一聚合值的个数与扇区数目一致。
第二聚合值的形成:公有云对待验证文件块的在线变色龙哈希辅助变量与挑战信息集合中的C个随机大整数元素进行乘积操作然后累乘求和后得到第二聚合值;
证据形成:公有云对待验证文件块所对应的离线标签与挑战信息集合中的随机大整数元素进行幂运算并进行累乘聚合,得到第三聚合值,所述第一聚合值、第二聚合值以及第三聚合值形成证据。
作为本发明的进一步改进,还包括数据的动态更新,所述数据的动态更新具体为:
构建认证数据结构以及版本索引表并存储于公有云中,当数据发生动态更新时,公有云获取更新文件块的认证树结构以及版本索引号信息并发送至私有云,私有云根据计算,判断数据动态更新是否成功。
作为本发明的进一步改进,所述构建认证数据结构具体为:
以多分支树结构为基础,借助变色龙哈希函数,对文件块进行签名,并结合文件块版本号进行签名的聚合操作,得到根节点签sig(R),并将所述根节点签sig(R)存储于bucket中;
所述用户文件被分割为若干个文件块,每个文件块对应一个叶子节点;
根据叶子节点,构建成所述认证数据结构,并将构建所述认证数据结构所需要的信息存储于公有云中bucket结构中。
具体地,此时的用户文件为用户上传的文件。
作为本发明的进一步改进,每个多分支树结构对应一个bucket,每个文件被分散存储于若干个bucket结构中,且每个bucket结构存放有p个文件块、一个根节点签名sig(R)以及一个整数mid,所述1≦mid≦p,所述1≦p≦8,每个文件块对应一个所述叶子节点。
作为本发明的进一步改进,所述构建版本索引表具体为:
以文件块对应的bucket编号、文件块在bucket内部的序号版本信息以及文件块的索引号形成版本索引表并存储于公有云中,用于对文件块进行组织管理,当数据发生动态更新时,所述索引版本表中的版本信息同时发生更新。
作为本发明的进一步改进,所述当数据发生动态更新时,公有云获取更新文件块的认证数据结构以及版本信息并生成动态更新证据发送至私有云,私有云根据计算,判断数据动态更新是否成功,具体为:
当发生数据动态更新时,公有云根据版本索引号查找更新文件块的位置,利用文件块构建多分支树,计算根节点R′;私有云利用公有云中的版本信息、待更新的叶子节点内存储的数据以及公有云返回的辅助认证路径的信息集合,生成更新前的根节点R0并签名的得到根节点签sig(R0),判断sig(R0)与sig(R)是否相等,如果相等,则说明数据被更新之前保持完整,私有云使用辅助认证路径的信息集合与更新后叶子节点存储的数据计算新的根节点R1,与之前的根节点R′比较,若相等,则将根节点R1的根节点签sig(R1)发送至公有云,替换sig(R0),实现更新。
本发明的有益效果如下:
本发明在传统数据完整性验证方案的基础上引入了变色龙签名技术,借助变色龙哈希函数可以人为制造碰撞的特点,使私有云可以在用户决定上传文件之前,即用户离线时,为用户准备好文件块签名,充分利用了私有云具备的计算能力,且大大缩短了用户在线等待时间,提升了用户的使用体验。为了更好地支持数据动态更新操作,本发明采用固定高度的多分支树构成的多分支树树森林作为认证结构,大大缩减了动态更新时认证路径过长,以及多次更新重复计算中间节点带来冗余计算的问题,使得整个动态更新操作更加高效。
本发明中,借助变色龙哈希以及公有云私有云架构,实现了数据完整性校验方案中标签生成阶段的拆分,减少了用户的在线等待时间,提升了用户体验,减少了动态更新阶段的冗余计算,降低了计算开销。
附图说明
图1是本发明提供的实施例1中的多分支森林认证树的结构图;
图2是本发明提供的实施例1中标签生成阶段计算开销随文件大小变化而变化的折线图;
图3是本发明提供的实施例1中生成认证结构森林与生成MHT计算开销对比图;
图4是本发明提供的实施例1中对不同大小文件修改30%叶子节点计算开销对比图;
图5是本发明提供的实施例1中对不同大小文件插入30%叶子节点计算开销对比图;
图6是本发明提供的实施例1中对不同大小文件删除30%叶子节点计算开销对比图;
图7是本发明提供的实施例1中对不同大小文件存储开销对比图。
具体实施方式
为进一步阐述本发明达成预定目的所采取的技术手段及功效,以下结合附图及实施例对本发明的具体实施方式、结构特征及其功效,详细说明如下。
本发明的具体方案为:在PDP算法的基础上,借助变色龙签名算法以及私有云为文件分配秘钥以及生成标签,并存储于公有云中,当选定文件进行验证时,私有云生成验证信息,发送至公有云,公有云获取秘钥以及标签,形成证据,以私有云为平台,使证据与待验证文件块发生碰撞,判断待验证文件块是否完整。
本发明基于混合云环境改进了算法流程,在原有PDP协议模型的基础上,引进了私有云作为参与者,充分发挥了私有云具备计算能力以及存储能力的优势。本发明中将ProFileon算法委托给私有云执行,使得打标签阶段的绝大部分计算负载由用户端转移到私有云服务器端,降低了用户的计算压力;同时将Challenge和Verify算法委托私有云,取代了传统方案中的第三方审计机构,实现了自主校验,避免了挑战以及审计过程中可能出现的隐私泄露以及审计机构和云服务商串通的问题。
本方案在传统数据完整性验证方案的基础上引入了变色龙签名技术,借助变色龙哈希函数可以人为制造碰撞的特点,使私有云可以在用户决定上传文件之前,即用户离线时,为用户准备好文件块签名,充分利用了私有云具备的计算能力,且大大缩短了用户在线等待时间,提升了用户的使用体验。
实施例1
本实施例中,从私有云以及公有云各自的工作过程进行阐述,具体如下:
通过私有云为文件分配秘钥以及生成标签具体为:
私有云提前分配密钥以及离线标签,所述离线标签包括文件块替身信息、离线变色龙哈希辅助变量以及密钥中的动态更新通用变量。
此时,由于隐私性较强,从安全角度考虑,采用私有云进行密钥分配,安全性高。
进一步地,选定文件进行验证前,还包括文件的分割,所述文件的分割具体为用户对将待上传的文件进行分块处理,得到文件块集合,对于每一个单独的文件块进行分区处理,将一个单独的文件块划分成若干扇区,根据陷门信息、文件块替身信息以及离线变色龙哈希辅助变量,计算出每个真实文件块对应的在线变色龙哈希辅助变量,并将其与待上传文件存储至公有云中。
本方案对待上传文件块进行分块并生成文件块替身信息,有利于后期验证以及变色龙哈希的过程计算。
针对替换攻击,本方案在两方面采取了针对性的预防措施。一方面,在为文件块生成签名时,为每一个文件块随机生成了一个对应的辅助变量,并使其包含在文件块签名之中,在验证时借助这些与文件块一一对应的辅助变量,校验者可以快速判断出收到的证据信息是否由被挑战文件块及其标签聚合而成;另一方面,在进行动态更新操作时,为确保云服务器返回的辅助认证路径以及将要更新的文件块与用户请求一致,方案借助变色龙函数对文件块进行校验,从而避免云服务器返回别的完整文件块欺骗用户。
当选定文件进行验证时,还包括挑战信息集合的获取,所述挑战信息集合的获取为:
私有云在文件块分区后得到的文件块中随机选取若干,生成长度为C的随机整数序列,所述随机整数序列序列包含C个不重复整数,对应要被验证的C个文件块的索引号;私有云在素数域初始化后得到的大整数群循环群中,挑选若C个随机元素,与文件块的索引构成挑战信息集合,并发送至公有云。
所述公有云获取秘钥以及标签,形成证据,具体为:
第一聚合值的形成:公有云获取验证信息,根据挑战信息集合以及密钥,将所有被选中文件块的特定扇区在与挑战信息中的大整数进行乘积操作后进行累加,得到第一聚合值。第一聚合值的个数与扇区数目一致。
第二聚合值的形成:公有云对待验证文件块的在线变色龙哈希辅助变量与挑战信息集合中的C个随机元素进行乘积操作后进行累加求和后得到第二聚合值;
证据形成:公有云对待验证文件块所对应的离线标签与挑战信息集合中的随机大整数元素进行幂运算作并进行累乘聚合,得到第三聚合值,所述第一聚合值、第二聚合值以及第三聚合值形成证据。
本发明在文件块标签的生成部分使用了变色龙哈希函数进行签名,在最终的验证环节应用了双线性映射的性质。
下面对双线性映射以及变色龙哈希函数的性质进行简单介绍。
设G是以g为生成元的素数阶乘法循环群,其中,g就是循环群G的生成元,也就是说乘法循环群G中的所有元素都可用g进行乘法运算得到;如果存在一个素数阶的乘法循环去群GT以及一个双线性映射关系e:G×G→GT,则该映射满足以下性质:
双线性:对G中任意元素u和μ,以及Zq中任意元素α和β,均有e(uα,μβ)=e(u,μ)αβ。
非退化性:并不是G中都将被映射到GT的单位元上,即G中存在元素u和μ,使e(u,μ)≠1GT成立,其中1GT代表GT的单位元。
可计算性:对G中任意元素u和μ,都存在高效的多项式时间算法来计算e(u,μ)。
本方案中涉及到的变色龙哈希函数由三个多项式时间算法构成,包括:密钥生成(CkGen)、哈希计算(Chash)、陷门碰撞(TkColl)。
CkGen(1k)→(hk,tk):以安全参数1k作为输入,生成公钥信息hk以及私钥信息tk,tk也被称为陷门信息。
Chash(hk,m,r)→hashValue:以公钥信息hk、信息数据m以及变色龙辅助变量r作为输入,对m进行哈希,输出对应的哈希值。
TkColl(tk,m,m′,r)→r′:利用陷门信息tk,计算与替身消息m′对应的r′,使Chash(hk,m,r)=Chash(hk,m′,r′)成立。
实施例2
下面结合实施例,对本发明进行详细的阐述:
S1:密钥生成阶段,其具体通过以下详细步骤实现:
生成用户公私密钥:初始化G1、G2、GT为素数阶的乘法循环群,并定义双线性映射运算e:G1×G2→GT;初始化素数阶的整数群Zq,在Zq群中随机挑选任意大整数α,作为用户私钥,记为sk=α,随机选取G2群的生成元,记为g;计算用户公钥v=gα;
其中,定义双线性映射运算中的G1以及G2是根据开源代码自动生成。
本实施例中,提到的任意大整数,即超大型整数,数字长度可能在几十位的整数。
生成变色龙哈希函数公钥以及陷门信息:在Zq群中挑选s个随机变量,记为x1,...,xs,并对应地计算u1,...,us,对应关系为k∈[1,s],其中x1,…,xs为变色龙哈希函数的陷门密钥信息,u1,...,us为变色龙哈希函数的公开密钥信息;
于Zq群中随机挑选任意大整数rt作为动态更新阶段的通用变量,于Zq群中随机挑选任意大整数y,用于标签计算;
经过上述步骤,得到整个方案的公钥PK=(g,v,{uk}1≤k≤s,y,rt)以及整个方案的私钥SK=(α,{xk}1≤k≤s)。
S2离线计算阶段:
于Zq群中挑选随机元素fi,1≤i≤n,作为第i号文件块mi的标识变量,同时在Zq中选取两组随机变量,分别是文件块替身变量{m′i}1≤i≤n以及变色龙哈希辅助变量{ri′}1≤i≤n,其中n为离线阶段将要生成离线标签的数量。
生成离线标签,计算公式如下:
上面公式(1)的目的是为选定的文件块生成标签数据。
S3:在线计算阶段,详细步骤如下:
文件分割:在选定将要上传的文件F后,将文件F分割成大小固定的若干个文件块,记为F=(m1,...,mn),然后将单个文件块划分为s个扇区,记为mi=(mi1,...,mis),利用提前生成的陷门信息x1,...,xs以及提前生成的替代信息m′i和ri′,计算真实文件块mi所对应的ri,
在线计算阶段:将所有文件块以及对应的标签文件上传公有云端,并将变色龙哈希函数需要的在线变色龙哈希辅助变量ri发送给公有云服务器。
S4挑战阶段:
S41:私有云服务器接收到用户发出的校验请求之后,在[1,n]的范围内生成长度为c的随机子序列I,I由[1,n]的范围内c个不重复的整数构成,代表着将要被验证的c个文件块的索引,记为I={s1,...,sc};
S42:在Zq群中挑选c个随机大整数元素,记为{vi}i∈I;
S43:私有云服务器将挑战信息集合{(si,vi),1≤i≤c}发送给公有云服务器。
S5:证据生成阶段:
S51:公有云响应挑战阶段发出的校验请求,根据私有云服务器发送的挑战信息集合{(si,vi),1≤i≤c},获取待验证文件块的文件块信息以及标签信息;
S52:首先,根据公式(2)计算公有云服务器:
其中,Vi代表被挑战的第i块对应的随机数,mi则代表被挑战的文件块。
最后,公有云服务器将证据集合反馈给私有云服务器。
验证阶段的正确性说明如下:
本发明中,还包括S7数据结构的构建以及动态更新阶段,具体如下:
本发明中,为支持数据的动态更新设计了两种数据结构,一种是由若干棵多分支认证树生成的多分支认证森林,另一种是对文件版本信息进行管理的版本索引表。
多分支认证森林中的每一棵多分支树的高度都是固定的,在本方案中,我们将多分支认证树的高度设置为3,当然,多分支认证树的高度还可以为4、5、6等等;在初始化阶段每一棵多分支认证树都是一个高度为3的满二叉树。在本方案中多分支认证树的叶子节点的生成方式不同于以往的多分支认证树,它的叶子节点中存储的不是文件块的哈希值,而是使用变色龙哈希函数对文件块进行签名的得到的值。计算叶子节点value=Chash(mi+vari,ri+rt),其中Chash()为变色龙哈希函数。vari为文件块mi对应的版本号,rt则是计算叶子节点使用的通用变量。除叶子节点外其他所有节点的计算方式均与默克尔哈希树方案中相同。
参照附图1所示,其为多分支认证树的结构图,文件块m3对应的叶子节点e中存储的哈希值为valuee=Chash(m3+var3,r3+rt),同样的可以计算得到valuec,valued,然后使用默克尔哈希树方案中非叶子节点的生成方式,将叶子节点的值依次拼接然后哈希,计算节点a中存储的哈希值为H(valuec||valued||valuee)。
本发明中,将同一棵多分支认证树上所有叶子节点对应的文件块,按顺序排放于一个bucket中,从而将整个文件块集合划分为若干个bucket结构,记为F=(m1,...,mn)=(bucket1,...,bucketk)。bucket中存放有p,1≤p≤8个文件块、一份根节点签名数据sig(R)以及一个整数mid,1≤mid≤p。bucket中存放的p个文件块被mid划分为两部分,bucket中第1块到第mid块对应多分支树左子树上的叶子节点,剩余节点则对应多分支树右子树上的节点。Bucket与多分支认证树存在以一一对应的关系,如图1所示。
版本索引表是一种将文件块索引号转化为bucket索引号(BI,Bucket Index)与文件块在bucket中位置的一种数据结构。版本索引表还存储了文件块索引号Index、bucket索引号BI、文件块在bucket内位置(Bucket Position)以及文件块对应的版本信息ver。文件块对应的版本信息ver初始值为1,文件块被更新一次,则对应的版本信息也被更新一次ver=ver+1。版本索引表示意图如下表1所示。
表1:
Index | BI | BP | Version |
1 | 1 | 1 | 1 |
2 | 1 | 2 | 1 |
3 | 1 | 3 | 1 |
4 | 1 | 4 | 1 |
5 | 1 | 5 | 1 |
6 | 2 | 1 | 1 |
7 | 2 | 2 | 1 |
8 | 2 | 3 | 1 |
9 | 2 | 4 | 1 |
a)进行修改操作时,因为本方案的在线/离线特性,使得文件数据发生改变时,文件标签可以保持不变。用户将数据更新请求req={MODIFY,mnew,i}发送给私有云服务器。
修改更新具体如下:
A1:私有云服务器利用陷门信息对应的生成新的在线哈希函数辅助变量ri_new,然后将新的文件块mnew、新的在线变色龙哈希辅助变量ri_new以及被更新文件块位置i发送给公有云服务器。
A2:公有云服务器按照用户请求对文件块集合、版本索引表以及哈希函数辅助变量进行更新,在版本索引表中查找到该文件块对应的bucket地址,使用bucket中所有文件块构建多分支树,计算根节点R′。公有云服务器将被更新块对应的辅助认证路径信息集合Ωi、更新文件块之前该bucket中存放的根节点签sig(R)、更新文件块后生成的根节点R′以及文件块被更新后对应的版本信息ver发送给私有云服务器。
A3:私有云服务器利用返回的版本信息计算更新之前叶子节点内存储的数据,计算公式如下value=Chash(m′,r′)·Chash(var-1,rt),利用该值与辅助认证信息生成更新前的根节点R0,利用用户私钥对R0进行签名有判断sig(R0)与sig(R)是否相等,若相等说明返回的辅助认证路径是对应的辅助认证节点,否则通知用户更新失败,终止校验流程。若相等,私有云服务器计算更新之后叶子节点内存储的数据value,value=Chash(m′,r′)·Chash(var,rt),计算新的根节点R1,与返回的新根节点R′进行对比,若相等将sig(R1)发送给公有云服务器,替换sig(R),并通知用户文件块修改操作完成,否则通知用户修改操作失败。
当进行插入操作更新时,用户将数据更新请求req={INSERT,mnew,i}发送给私有云服务器,然后进行如下操作:
B1:私有云服务器为新文件块随机生成替身变量m′new以及变色龙哈希函数辅助变量r′new,利用陷门信息对应的生成新的哈希函数辅助变量rnew,然后为新插入的文件块生成标签最后将rnew和θnew发送给公有云服务器。
B2:公有云服务器按照用户请求对文件块集合、版本索引表以及哈希函数辅助变量进行更新,在版本索引表中查找到该插入位置对应的bucket地址,将文件块插入到bucket对应位置,使用bucket中所有文件块构建多分支树,计算根节点R′。公有云服务器将被更新块对应的辅助认证路径信息集合Ωi、更新文件块之前该bucket中存放的根节点签sig(R)、更新文件块后生成的根节点R′以及版本索引表被更新后新文件块对应的版本信息ver发送给私有云服务器。
B3:私有云服务器利用返回的辅助认证信息Ωi生成更新前的根节点R0,使用私钥对R0进行签名有判断sig(R0)与sig(R)是否相等,若相等说明返回的辅助认证路径是对应的辅助认证节点,否则通知用户更新失败,终止校验流程。若相等,私有云服务器计算更新之后叶子节点内存储的数据value,value=Chash(m′,r′)·Chash(var,rt),计算新的根节点R1,与返回的新根节点R′进行对比,若相等将sig(R1)发送给公有云服务器,替换sig(R),并通知用户文件块修改操作完成,否则通知用户修改操作失败。
当进行删除操作时,用户将数据更新请求req={DELETE,i}发送给私有云服务器,然后进行如下操作:
C1:私有云服务器直接将请求req={DELETE,i}转发给公有云服务器。公有云服务器按照用户请求对标签集合、版本索引表以及哈希函数辅助变量进行更新,在版本索引表中查找到该删除位置对应的bucket地址,将文件块从bucket对应的文件块存储位置删除,使用bucket中所有文件块构建多分支树,计算根节点R′。公有云服务器将被删除块对应的辅助认证路径信息集合Ωi、更新文件块之前该bucket中存放的根节点签sig(R)、更新文件块后生成的根节点R′以及版本索引表被更新后新文件块对应的版本信息ver发送给私有云服务器。
C2:私有云服务器利用返回的版本信息计算更新之前叶子节点内存储的数据,计算公式如下value=Chash(m′,r′)·Chash(var-1,rt),利用该值与辅助认证信息Ωi生成更新前的根节点R0,使用私钥对R0进行签名有判断sig(R0)与sig(R)是否相等,若相等说明返回的辅助认证路径是对应的辅助认证节点,否则通知用户更新失败,终止校验流程。若相等,私有云服务器使用Ωi计算新的根节点R1,与返回的新根节点R′进行对比,若相等将sig(R1)发送给公有云服务器,替换sig(R),并通知用户文件块修改操作完成,并在私有云端删除对应地辅助信息(m′,r′),否则通知用户修改操作失败。
本发明中的安全性分析
结合上述技术方案,对本算法各个环节进行分析,表明本算法具有良好的安全性。
重放攻击:云服务器在响应校验者发出的挑战请求时,有可能将一些关键变量或者证据进行存储,并与挑战信息一一对应,当同样的挑战信息再次出现时,云服务器在不借助真实数据的情况下就可以就直接使用已经存储好的数据顺利通过验证,使验证方案失效。为避免这一安全隐患,本发明在生成的挑战信息中包含一系列随机数,云服务器做出的响应必须包含这些随机数据,使证据信息只在本次校验过程内有效,以抵御重放攻击。
替换攻击:在一些传统的数据完整性验证方案中,文件块签名中并不含有文件块索引信息,当服务器接收证据信息进行校验时,云服务提供商很可能使用完好的文件块及其标签信息替换某些受损挑战块及其标签信息,校验者无法有效判断接收到的证据信息是否由被挑战文件块及其标签聚合而成,从使整个校验方案失效。
针对替换攻击,本方发明在两方面采取了针对性的预防措施。一方面,在为文件块生成签名时,为每一个文件块随机生成了一个对应的辅助变量,并使其包含在文件块签名之中,在验证时借助这些与文件块一一对应的辅助变量,校验者可以快速判断出收到的证据信息是否由被挑战文件块及其标签聚合而成;另一方面,在进行动态更新操作时,为确保云服务器返回的辅助认证路径以及将要更新的文件块与用户请求一致,方案借助变色龙函数对文件块进行校验,从而避免云服务器返回别的完整文件块欺骗用户。
隐私攻击:在一些支持公开验证的数据完整性验证方案中,第三方审计机构有可能会多次挑战相同序列的文件块,取得文件块与挑战变量的线性组合,以数学手段最终获取用户信息,造成隐私泄露。为了避免这一安全隐患,本方案引入私有云替代第三方审计机构,使证据信息的验证更加安全可靠。
本发明的实验结果分析如下:
本发明在Ubuntu 16.04操作系统下搭建了实验环境,物理机具体配置为IntelCore i5-6600CPU@3.3GHz以及2GB内存,为实现实验方案中的核心运算双线性映射,实验环境中部署了GMP库以及PBC库,其中PBC库提供了双线性对运算的高效实现,本采用Goalng语言作为方案实现语言,借助PBC库的Golang语言封装包对算法进行了实现。
在进行实验结果分析时,着重对数据标签生成以及动态更新阶段进行了多组实验数据的对比分析。针对数据标签生成阶段,将本方案给40MB、500MB、1024MB三个不同大小文件的打标签的时间开销进行对比分析,从而得出签名生成阶段中在线操作和离线操作各自的时间开销。针对数据动态更新阶段,分别对建树、文件块更新(包括文件块修改、文件块插入以及文件块删除)的时间开销与MHT树方案的各项同类操作开销进行对比。
本实验沿用了传统PDP模型中对于挑战块数的选择策略,即仅需随机选择文件块集合中的460块,即可将校验出数据受损的概率提升到99%以上。
本发明中涉及到的实验数据均是根据多次实验结果计算而来的平均值,尽可能缩减了误差,并从整个方案中各个参与者的角度分别对整个实验的各项指标进行了量化分析。
本发明的开销计算如下:
本发明提出的数据完整性校验方案可以划分为密钥生成、标签生成、挑战生成、证据生成、证据校验以及动态更新六个部分。其中密钥生成部分主要完成了借助系统参数为用户生成公钥、私钥的任务,其实质是在对应的循环群中选取随机数,公钥和私钥包含的数据个数不会随文件大小改变而改变,所以在处理不同的文件时,密钥生成阶段计算开销变化不大。
本方案的时间开销主要集中在标签生成以及动态更新阶段。
具体实验分析下图2所示:
图2为本方案中标签生成阶段计算开销随文件大小变化而变化的折线图。
本方案中的标签生成算法不同于传统的数据完整性验证方案中的标签生成算法,由在线阶段和离线阶段两部分构成。由图2可知,本方案中的离线阶段占用时间较长,因为离线阶段的标签计算公式为类似于传统PDP算法中的标签生成操作,存在较多幂指运算,计算复杂度较高,故计算开销较大。本方案中的在线阶段占用时间较短,该阶段计算公式为计算难度显然比离线阶段低。又因为θi和ri与文件块一一对应,所以当文件块大小固定时,θi和ri的计算开销与文件大小成正比。标签生成算法的离线阶段由私有云端执行,且可以在用户不参与的情况下完成,而在传统的PDP方案中,标签的生成必须有用户的参与。所以与现有的PDP方案相比,本发明相当于将原本属于用户的计算压力转移到私有云端,减少了用户等待时间。
图3表示在文件大小逐渐增大的条件下,本实施例生成多分支树森林以及现有技术的方案中生成默克尔哈希树认证结构所需计算开销的对比图。由对比图可知,在处理同样大小的文件时,生成多分支认证森林的计算开销要小于生成默克尔哈希树的计算开销,而且随着文件大小的逐步增加,差距也越来越大。因为默克尔哈希树作为树形认证结构,其节点中不仅包含着对应哈希值,还包含着父节点以及子节点的信息,以方便认证路径的计算。而本文提出的多分支认证森林的数据结构是由若干棵高度固定的多分支树组成的,结构简单并不需要计算其他信息,所以随着文件块数目的增加,生成两种认证结构所需的时间差距越来越大。
图4表示的是应用本文的认证结构以及默克尔哈希树修改叶子节点总数的的30%需要的计算开销随所处理的文件大小而增长的对比图。由图4可知,在对同一文件相同叶子节点进行修改操作后,默克尔哈希树所需时间开销要大于本文提出的多分支认证森林。这是因为在对默克尔哈希树进行多次修改叶子节点的操作时,每一次都会更新从叶子结点到根节点的认证路径,随着文件块总数的增加,认证路径长度也会增加,计算开销会随之上升。而且随着更新次数的增多,就会有越来越多的中间结点被重复计算,导致了计算资源的浪费。而本方案提出的认证结构,是以单个多分支树为基本更新单位的,认证路径长度固定,不会随着文件块总数的增加而增加,重复计算节点数有限。所以在对同一文件相同数量叶子节点进行修改操作时,默克尔哈希树方案的计算开销大,且随着文件大小快速增长。而进行同样的操作,本文的计算开销较小,且当文件大小增长,本文的计算开销的增长速率变化不大。
图5以及图6分别表示对不同大小文件,插入或者删除30%叶子节点的计算开销对比图,从图中可以看出,在对同一文件相同叶子节点进行插入或删除等修改操作后,默克尔哈希树所需时间开销要大于本实施例中的多分支认证森林。即进行同样的操作,本实施例的计算开销相对于现有技术较小,且当文件大小增长,本文的计算开销的增长速率变化不大。
存储开销
这里将数据完整性方案的存储开销定义为除所上传文件外的其他数据所占存储空间的大小。本节将对数据完整校验过程中各个参与者的存储开销分别进行分析。
用户在秘钥生成阶段对私钥SK=(α,{xk}1≤k≤s)进行了保存,其中α,xk∈Zq,因此用户端存储开销为(s+1)·length(Zq)bit;私有云在离线阶段预生成标签的过程中随机生成了文件块数据的替代信息{m′i},1≤i≤n以及{ri′},1≤i≤n,其中m′i,ri′∈Zq,同时私有云服务上还存有用户公钥信息PK=(g,v,{uk}1≤k≤s,y,rt),其中g,v,uk∈G2而y,rt∈Zq,故私有云端的存储开销为2(n+1)·length(Zq)+(s+2)·length(G2)bit;公有云服务器端额外存储了标签文件{θi},1≤i≤n,以及变色龙函数辅助变量{ri},1≤i≤n,其中θi∈G1,ri∈Zq。所以服务器端的存储开销上限为n·length(G1)+n·length(Zq)bit。
由图7可以看出本方案中的私有云服务器端以及公有云服务器端的存储开销与文件大小成正比,且存储开销远远小于文件本身大小,具有实际应用价值。
经过上述分析可以看出,本方案额外存储了文件块替身信息{m′i},1≤i≤n以及变色龙哈希辅助变量等信息,增加了存储开销,但是占用的是私有云以及公有云的存储空间,用户端的存储开销没有增加,而用户的在线等待时间大大缩减,也就是说本方案以存储开销少量增加换取了用户使用体验的提升。
通信开销
通信开销是指完成一次数据完整性校验所产生的数据通信开销,这里的一次数据完整性校验指的是从挑战信息生成并发送到输出校验结果的过程。
挑战生成阶段,私有云服务器生成挑战信息{(si,vi),1≤i≤c},将其发送给公有云服务器端,产生通信开销为c·(length(Zq)+8)bit;证据生成阶段,公有云服务器端生成证据信息{μj,1≤j≤s,r,θ},其中θ∈G1,r,μj∈Zq,将证据信息返回给私有云产生的通信开销为length(G1)+(s+1)·length(Zq)bit。
本发明对支持在线/离线以及动态更新的数据完整性校验算法进行了全面介绍,首先阐述了新算法所应达到的算法目标以及所应抵御的几种攻击类型,然后算法的核心思想以及具体流程进行详细介绍。最后进行仿真实验,对方案中的各个阶段进行实现,并将方案中动态更新阶段的实验数据与MHT方案进行对比。最后实验结果表明,本方案通过引入变色龙哈希算法实现了数据标签的离线生成,使用户的在线时间缩减,提升了用户体验。而本发明动态更新部分引入的多分支认证森林算法在建立认证结构、插入节点、修改节点以及删除节点等操作方面,计算开销都远远小于默克尔哈希树方案。
本发明的目的是:
在设计支持在线/离线以及动态更新的数据完整性验证方案时需要考虑以下算法目标:
快速签名:在本方案中借助变色龙哈希函数,将标签生成这一操作划分为在线和离线两个阶段,减少用户等待时间,提升用户体验;
高效更新:算法应通过设计高效的数据结构,存储文件块的认证信息,减少冗余计算;
精确审计:算法应该有效抵御校验过程中可能会出现的重放攻击、替换攻击,能有效区分云服务器返回的证据是否对应被挑战的文件块索引。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种混合云存储中数据的完整性验证方法,其特征在于,在PDP算法的基础上,借助变色龙签名算法以及私有云为文件分配秘钥以及生成标签,并存储于公有云中,当选定文件进行验证时,私有云生成验证信息,发送至公有云,公有云获取秘钥以及标签,形成证据,具体为:第一聚合值的形成:公有云获取验证信息,根据挑战信息集合以及密钥,将所有被选中文件块的特定扇区在与挑战信息中的大整数进行乘积操作后进行累加,得到第一聚合值,所述第一聚合值的个数与扇区数目一致;第二聚合值的形成:公有云对待验证文件块的在线变色龙哈希辅助变量与挑战信息集合中的C个随机大整数元素进行乘积操作然后累加求和后得到第二聚合值;证据形成:公有云对待验证文件块所对应的离线标签与挑战信息集合中的随机大整数元素进行幂运算并进行累乘聚合,得到第三聚合值,所述第一聚合值、第二聚合值以及第三聚合值形成证据;以私有云为平台,使证据与待验证文件块发生碰撞,判断待验证文件块是否完整。
2.根据权利要求1所述的一种混合云存储中数据的完整性验证方法,其特征在于,通过所述私有云为文件分配秘钥以及生成标签具体为:
私有云提前分配密钥以及离线标签,所述离线标签包括文件块替身信息、离线变色龙哈希辅助变量以及密钥中的动态更新通用变量。
3.根据权利要求2所述的一种混合云存储中数据的完整性验证方法,其特征在于,所述选定文件进行验证前,还包括文件的分割,所述文件的分割具体为用户对将待上传的文件进行分块处理,得到文件块集合,对于每一个单独的文件块进行分区处理,将一个单独的文件块划分成若干扇区,根据陷门信息、文件块替身信息以及离线变色龙哈希辅助变量,计算出每个真实文件块对应的在线变色龙哈希辅助变量,并将其与待上传文件存储至公有云中。
4.根据权利要求3所述的一种混合云存储中数据的完整性验证方法,其特征在于,当选定文件进行验证时,还包括挑战信息集合的获取,所述挑战信息集合的获取为:
私有云在文件分区后得到的文件块中随机选取若干,生成长度为C的随机整数序列,所述随机整数序列序列包含C个不重复整数,对应要被验证的C个文件块的索引号;私有云在素数域初始化后得到的大整数群循环群中,挑选若C个随机大整数元素,与文件块的索引构成挑战信息集合,并发送至公有云。
5.根据权利要求1-4之一所述的一种混合云存储中数据的完整性验证方法,其特征在于,还包括数据的动态更新,所述数据的动态更新具体为:
构建认证数据结构以及版本索引表并存储于公有云中,当数据发生动态更新时,公有云获取待更新文件块的认证树结构以及版本索引号信息并发送至私有云,私有云根据计算,判断数据动态更新是否成功。
6.根据权利要求5所述的一种混合云存储中数据的完整性验证方法,其特征在于,所述构建认证数据结构具体为:
以多分支树结构为基础,借助变色龙哈希函数,对文件块进行签名,并结合文件块版本号进行签名的聚合操作,得到根节点签sig(R),并将所述根节点签sig(R)存储于bucket中;
用户文件被分割为若干个文件块,每个文件块对应一个叶子节点;
根据叶子节点,构建成所述认证数据结构,并将构建所述认证数据结构所需要的信息存储于公有云中bucket结构中。
7.根据权利要求6所述的一种混合云存储中数据的完整性验证方法,其特征在于,每个多分支树结构对应一个bucket,每个文件被分散存储于若干个bucket结构中,且每个bucket结构存放有p个文件块、一个根节点签名sig(R)以及一个整数mid,1≦mid≦p,1≦p≦8,每个文件块对应一个所述叶子节点。
8.根据权利要求7所述的一种混合云存储中数据的完整性验证方法,其特征在于,所述构建版本索引表具体为:
以文件块对应的bucket编号、文件块在bucket内部的序号版本信息以及文件块的索引号形成版本索引表并存储于公有云中,用于对文件块进行组织管理,当数据发生动态更新时,所述版本索引表中的版本信息同时发生更新。
9.根据权利要求8所述的一种混合云存储中数据的完整性验证方法,其特征在于,所述当数据发生动态更新时,公有云获取更新文件块的认证数据结构以及版本信息并生成动态更新证据发送至私有云,私有云根据计算,判断数据动态更新是否成功,具体为:
当发生数据动态更新时,公有云根据版本索引号查找更新文件块的位置,利用文件块构建多分支树,计算根节点R′;私有云利用公有云中的版本信息、待更新的叶子节点内存储的数据以及公有云返回的辅助认证路径的信息集合,生成更新前的根节点R0并签名的得到根节点签sig(R0),判断sig(R0)与sig(R)是否相等,如果相等,则说明数据被更新之前保持完整,私有云使用辅助认证路径的信息集合与更新后叶子节点存储的数据计算新的根节点R1,与之前的根节点R′比较,若相等,则将根节点R1的根节点签sig(R1)发送至公有云,替换sig(R0),实现更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911039267.0A CN110781524B (zh) | 2019-10-29 | 2019-10-29 | 一种混合云存储中数据的完整性验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911039267.0A CN110781524B (zh) | 2019-10-29 | 2019-10-29 | 一种混合云存储中数据的完整性验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110781524A CN110781524A (zh) | 2020-02-11 |
CN110781524B true CN110781524B (zh) | 2023-05-05 |
Family
ID=69387438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911039267.0A Active CN110781524B (zh) | 2019-10-29 | 2019-10-29 | 一种混合云存储中数据的完整性验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110781524B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111614470A (zh) * | 2020-05-27 | 2020-09-01 | 贵州大学 | 基于改进Merkle-Tree认证方法的可验证多关键字搜索方法 |
CN111641712B (zh) * | 2020-05-29 | 2023-11-17 | 深圳市迅雷网络技术有限公司 | 区块链数据更新方法、装置、设备、系统及可读存储介质 |
CN111966638B (zh) * | 2020-08-26 | 2022-06-07 | 北京工业大学 | 一种适用于工业云上的ida数据恢复的动态更新方法 |
CN112035890B (zh) * | 2020-09-04 | 2022-08-05 | 北京邮电大学 | 一种数据完整性验证方法及装置 |
CN112688990A (zh) * | 2020-12-14 | 2021-04-20 | 百果园技术(新加坡)有限公司 | 一种混合云数据审计方法、系统、电子设备及存储介质 |
CN112738250B (zh) * | 2020-12-30 | 2022-07-08 | 中国建设银行股份有限公司 | 一种混合云互联专线管理系统 |
CN115037530B (zh) * | 2022-05-25 | 2024-03-26 | 淮阴工学院 | 基于区块链的密文去重和去中心化审计方法 |
CN114978753B (zh) * | 2022-06-21 | 2023-05-05 | 金陵科技学院 | 一种抗密钥泄露的云存储数据完整性验证方法 |
CN116561810B (zh) * | 2023-07-10 | 2023-09-22 | 长沙睿展数据科技有限公司 | 基于混合云平台的仓储管理大数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023862A (zh) * | 2011-09-21 | 2013-04-03 | 索尼公司 | 用于完整性保护和验证的方法、服务器及系统 |
CN104601605A (zh) * | 2015-02-28 | 2015-05-06 | 北方工业大学 | 云存储中基于变色龙哈希函数的高效隐私保护审计方案 |
CN106301789A (zh) * | 2016-08-16 | 2017-01-04 | 电子科技大学 | 应用基于格的线性同态签名的云存储数据的动态验证方法 |
WO2018045568A1 (zh) * | 2016-09-09 | 2018-03-15 | 深圳大学 | 一种面向云存储服务平台的访问控制方法及其系统 |
-
2019
- 2019-10-29 CN CN201911039267.0A patent/CN110781524B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023862A (zh) * | 2011-09-21 | 2013-04-03 | 索尼公司 | 用于完整性保护和验证的方法、服务器及系统 |
CN104601605A (zh) * | 2015-02-28 | 2015-05-06 | 北方工业大学 | 云存储中基于变色龙哈希函数的高效隐私保护审计方案 |
CN106301789A (zh) * | 2016-08-16 | 2017-01-04 | 电子科技大学 | 应用基于格的线性同态签名的云存储数据的动态验证方法 |
WO2018045568A1 (zh) * | 2016-09-09 | 2018-03-15 | 深圳大学 | 一种面向云存储服务平台的访问控制方法及其系统 |
Non-Patent Citations (1)
Title |
---|
邵必林 ; 吴书强 ; 刘江 ; 胡家发 ; .重要数据完整性分布式检测系统.探测与控制学报.2018,(02),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110781524A (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110781524B (zh) | 一种混合云存储中数据的完整性验证方法 | |
CN111709058B (zh) | 一种基于身份和环签名的数据完整性校验方法 | |
CN109525403B (zh) | 一种支持用户全动态并行操作的抗泄露公开云审计方法 | |
CN108200208B (zh) | 基于云计算的物流区块链共识算法 | |
CN103268460A (zh) | 一种云存储数据完整性验证方法 | |
CN109861829B (zh) | 支持动态更新的云数据公正审计系统及其审计方法 | |
CN103605784A (zh) | 一种多重云环境下数据完整性验证方法 | |
JP2023133560A (ja) | コンピュータにより実施される投票処理及びシステム | |
CN112560091B (zh) | 数字签名方法、签名信息的验证方法、相关装置及电子设备 | |
CN106897368A (zh) | Merkle哈希求和树及其可验证数据库更新操作方法 | |
CN110263584A (zh) | 一种基于区块链的数据完整性审计方法和系统 | |
CN105162583A (zh) | 一种单个、单级和多级密钥对分散方法及其系统 | |
CN113098691B (zh) | 数字签名方法、签名信息的验证方法、相关装置及电子设备 | |
CN110958109A (zh) | 基于层次默克尔哈希树的轻型动态数据完整性审计方法 | |
CN108111313A (zh) | 对云服务器上存储的用户文件进行第三方审计的方法 | |
CN110599175A (zh) | 一种区块处理方法及相关设备 | |
CN107612969B (zh) | 基于B-Tree布隆过滤器的云存储数据完整性审计方法 | |
CN105187218A (zh) | 一种多核心基础设施的数字化记录签名、验证方法 | |
CN106611136A (zh) | 云存储中一种数据篡改验证方法 | |
EP3920464A1 (en) | Method for storing transaction that represents asset transfer to distributed network and program for the same | |
CN104899525A (zh) | 改进动态操作的云数据完整性证明方案 | |
Zhao et al. | Fuzzy identity-based dynamic auditing of big data on cloud storage | |
CN109274504B (zh) | 一种基于云平台的多用户大数据存储分享方法及系统 | |
CN109743327B (zh) | 基于无证书的云存储中共享数据的完整性公开验证方法 | |
CA3161664A1 (en) | Method and system for digital signatures utilizing multiplicative semigroups |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |