云环境下基于改进多分支树的完整性动态审计方法
文献发布时间:2023-06-19 11:45:49
技术领域
本发明属于云计算安全技术领域,具体涉及云环境下基于改进多分支树的完整性动态审计方法,该方法提出基于身份的动态完整性审计方法和改进的多分支树构建这两个技术,既可实现云完整性审计过程中用户对文件的动态更新,又可提高云环境下完整性审计的效率,减少计算和通信开销。
背景技术
随着信息技术和网络技术的飞速发展,用户数据呈爆炸式增长,云服务的出现解决了大规模数据本地计算和存储的局限性,然而当数据以外包方式存储在云端时,用户失去了对数据的绝对控制,云端数据可能会受到攻击者或云服务商有意或无意篡改或破坏。例如,2020年,联合国欧洲云服务器遭入侵者下载大约400GB的数据,超过4000名联合国工作人员的个人信息被泄露。这些数据安全和隐私泄露事件极大降低用户对云服务的信任,制约云存储的发展及推广。因此,如何维护云端存储数据的安全性是当前云存储要解决的重要问题之一。
安全审计是一种确保数据完整性的重要手段。基于第三方的数据完整性审计是当前数据完整性审计方案的主流,然而在过程中,主要面临敏感信息保护(第三方审计者代替用户进行数据完整性校验时,其有可能通过云服务提供商返回的持有性证明反推出原始数据,导致用户数据泄露;云服务提供商CSP是非可信的,他有可能为了自身利益,将用户数据泄露给恶意用户)、数据动态更新以及审计性能优化三个方面的挑战。因此,如何高效审计非完全可信云上存储数据完整性是制约云存储发展的重要问题。现有的数据完整性审计方法虽已经关注这三个方面的问题,但大部分基于第三方审计的数据完整性检查结构依赖于公钥基础设施,用户需要生成并管理公钥证书,审计员需要对证书进行验证,这增加了用户与第三方审计员的开销,影响完整性审计的工作效率,且大部分动态审计方案采用Merkle哈希树认证结构,随着数据块的增多,存在认证过程中和认证数据所需辅助信息过多等缺点,因此在验证及更新过程中云服务提供商对数据块查询需要较长的时间,给云服务提供商带来额外的计算和通信开销。
发明内容
针对现有技术中存在的完整性审计动态更新以及审计效率问题,本发明提出一种云环境下基于改进多分支树的完整性动态审计方法,应用基于身份的动态完整性审计方法和改进的多分支树构建技术,实现云环境下完整性审计的动态更新和高效。
云环境下的数据完整性审计方案一般分为私有审计和第三方审计两类。私有审计效率较高,但只有用户才能进行,需要用户负责数据签名、审计证明验证等计算和维护大量的信息。第三方审计将审计任务委托给可信第三方,用户将数据预处理后存放到云服务器,并向第三方审计者发授权,由第三方完成数据的完整性验证,第三方审计者将验证报告发送给用户,可大大减少用户的计算开销。
在基于第三方的数据完整性审计过程中,大部分基于第三方审计的数据完整性检查结构依赖于公钥基础设施,用户需要生成并管理公钥证书,审计员需要对证书进行验证。为简化证书管理,相关学者基于双线性对提出了基于身份的完整性验证方案,在原有三方参与审计框架中引入密钥生成器,由可信的密钥生成器生成用户私钥以实现对用户数据的签名,并将用户如身份证号码、电子邮件地址或姓名等身份信息直接视为公钥,消除了用户证书生成与管理以及第三方审计员的证书验证,减少了两个实体的计算开销。然而,目前大部分基于身份的审计方案未考虑用户对云端数据更新时的完整性审计此外,大部分方案采用Merkle哈希树认证结构,随着数据块的增多,存在认证过程中和认证数据所需辅助信息过多等缺点,因此在验证及更新过程中云服务提供商对数据块查询需要较长的时间,给云服务提供商带来额外的计算和通信开销。
综上,本发明采用基于身份的审计模型避免了对公钥证书颁发、管理和吊销等复杂的证书管理工作;同时,为了解决用户动态操作引入的数据块增多、认证所需辅助信息过多的问题,结合Merkle哈希树支持数据动态操作的优点,提出改进的多分支认证树结构,通过选取副根节点存储信息来缩短认证路径长度,采用局部性原理减少数据块查询时间,提高了第三方审计效率,在实现动态审计的同时减少了验证过程的通信开销。
1.改进的多分支树构造方法
在本发明提出方法中,用户端首先通过改进多分支树认证结构构造模块构造多分支树,用于存储用户文件的数据块,然后由签名模块生成数据块的签名和多分支认证树根节点的签名,之后将文件、签名以及树的根节点签名γ,副根节点签名集合Γ和认证结构C一起发送给云服务器,最后再将本地数据块删除释放空间。而CSP端通过在多分支树查找相应数据块计算相应的持有性证明并发送给第三方审计员TPA,由TPA通过等式验证数据完整性并将审计结果发送给用户。在用户对数据进行更新时,CSP通过对文件块标识的查找,在多分支树结构上对文件进行增删改操作。
由于传统多分支认证树只在叶子节点存储数据块的Hash值导致数据结构规模庞大且节点有效利用率低。为了提高节点利用率,缩短认证路径长度,提高TPA审计效率,本发明如下改造多分支认证树:在多分支树非叶子节点(例如z
本发明提出方法通过在多分支树的非叶子节点存储文件信息,相比于原来的多分支树审计方案,同样层级和分支树结构,改进后会存储更多的文件块信息,因此可以将文件分割成更小的文件块,更小的文件块会缩短计算哈希值的时间,从而增加整个树结构的运算效率。此外,通过增设副根节点,让多分支树结构去中心化,在完整性审计过程中,CSP在根据TPA发来的审计质询来检索文件块时需要遍历树结构,改进的多分支树结构可以通过副根节点的节点存储信息查询到文件块的近期访问频率,从近期访问频率高的副根节点开始遍历,进行文件块的查找,快速找到目标文件所在的区域,从而无需像原来方案那样遍历整个树结构到叶子节点,缩短了检索路径,减少了CSP文件检索时间,能够减轻云服务提供商的计算开销。同样,在用户进行动态更新的时候,CSP通过从访问频率高的副根节点开始遍历,能更快找到相应的文件块,并对文件块进行更新,且只需更新部分副根节点的哈希值即可,缩短了哈希值的更新层级,自下而上计算哈希值的时候也缩短了计算路径,减少了CSP的计算开销。
2.基于身份的动态完整性方法
本发明采用基于身份的动态数据完整性审计方法示意图如图2所示。方法架构如图3所示,其中,PKG负责系统初始化、密钥生成;用户端执行授权及签名生成;第三方审计者执行挑战质询;云服务商执行证明生成与验证模块构成方法。
系统初始化功能是PKG生成初始化数据完整性审计的相关系统参数。用Setup算法实现,具体为Setup(1
密钥生成功能是PKG根据用户提供的身份信息,为用户生成对应的私钥,用KeyExtract算法实现,具体为KeyExtract(PP,msk,ID)→skID,即以公共参数PP、主密钥msk和用户身份标识ID作为输入,输出对应于身份标识的私钥skID。在这个过程中,用户将身份ID发给PKG,PKG随机选择b∈Z
改进多分支树认证结构构造模块主要是用户对改进多分支树认证结构C的构造,并将所构造的认证结构和签名一同发送给云服务提供商进行存储。用Construct算法实现,具体为用Construct(m)→C,即以文件块m
签名模块主要是用户端生成数据块的签名和多分支认证树根节点和副根节点的签名,用Sign算法实现,具体为:Sign(m,skID)→(σ
挑战质询功能是TPA代替用户生成审计质询并发送给云服务提供商以进行数据完整性验证,用Challenge算法实现,具体为Challenge(PP,ID)→chal:即将公共参数PP和用户的身份ID作为输入,输出一个挑战质询chal。当TPA对云端上的数据进行完整性审计时,TPA会产生一个审计质询发送给云端:首先,TPA随机选择一个有c个元素的集合I,其中
审计证明生成模块功能是CSP根据TPA发来的审计质询,根据云端存储的用户文件和认证标签生成审计证明发送给TPA进行数据完整性验证。用Proof算法实现,具体为Proof(chal,σ
验证模块功能是TPA根据等式验证CSP返回的审计证明,判断云端是否完整存储用户文件,并将验证结果发送给用户,用Verify算法实现,具体为Verify(chal,PP,ID,P)→{0,1}:以公共参数PP、用户身份标识ID、挑战质询chal和审计证明P作为输入,输出审计结果0或1来表示云中存储的文件是否被篡改。在接受到云端发来的持有性证明P后,TPA验证等式(3)e(γ,g)=e(H
常见的用户数据动态更新主要包括对数据块的增删改三个操作。在数据更新过程中,用户首先向云服务提供商发送更新请求,云服务提供商对文件块进行更新操作,生成新的证明、根节点与副根节点,更新认证结构,并生成新的持有性这证明发送给用户,用户验证更新数据块前多分支树认证结构的正确性,验证通过则继续,否则终止。之后重新计算根节点与副根节点,与CSP返回值进行对比,一致则说明CSP正确更新文件,否则则没有。验证通过后用户对新的根节点、副根节点进行签名并发送给云服务提供商进行更新。
由于本发明提出的改进多分支树认证结构比传统多分支树结构增设了副根节点R*,R*存储了以之为根的树上每个节点对应数据块的哈希值,这样在检索文件块时,不用对于每个要更新的文件块都检索到底层叶子节点,缩短了文件检索路径与哈希值的更新层级,减少了CSP的计算开销,同时减少了辅助信息量,降低了CSP与用户的通信开销。此外,本发明提出方法允许CSP只对距离要更新文件块最近的副根节点进行更新,这种方式减少了审计证明生成时的辅助信息量,提高了整个系统的审计效率。。
(1)数据修改时的验证协议
用户对数据修改操作本质上是一个替换的过程,总的来说是先找到要修改的目标数据块再进行替换的过程,将文件块mi修改为mi’,如图4(a)所示。
(2)数据删除时的验证协议
数据删除时的验证过程由图4(b)所示。数据删除过程中,用户首先向CSP发送删除请求消息update=(D,i),i表示文件块序号,CSP接受请求消息后对文件块执行删除算法,删除算法执行过程为:检索数据结构,找到并删除指定的文件块m
(3)数据插入时的验证协议
假设要在文件块mi后插入m
与现有技术相比,本发明具有以下优点:
(1)本发明所提方案采用基于身份的完整性审计架构,针对基于身份的加密体制的数据完整性审计中,几乎所有方案都是静态审计的问题,以及目前数据动态更新主要通过引入跳表和MHT两种认证结构,需要构造的认证树庞大,存在认证路径过长,每次认证都需要大量的辅助信息支持,计算代价和同性开销较大等问题。因此,为了确保动态环境下的数据完整性,本发明提出了一个动态更新机制,实现数据的动态更新,支持数据动态更新的完整性审计。
(2)本发明提出改进的多分支认证树结构,通过在认证树的非叶子节点上存储数据块信息提高节点利用率,选取副根节点描述该节点及其下面所有子孙节点的完整性,这样当云服务提供商对第三方发来的验证请求进行数据块查询时则无需遍历整个认证树,缩短了认证路径长度,在支持数据动态更新的同时可提高用户签名的效率。
附图说明
图1改进的多分支认证树结构示意图;
图2为基于身份的数据完整性动态审计方法示意图;
图3为基于身份的动态审计方法的架构示意图;
图4为完整性审计中用户数据动态更新时验证协议示意图(a)数据修改时的验证协议,(b)数据删除时的验证协议,(c)数据插入时的验证协议。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步说明。
本发明所述基于身份的数据完整性动态审计方法的具体实施过程如图2所示,包括以下步骤:
步骤1:用户将自己的用户身份标识ID发送给密钥生成器PKG。
步骤2:私钥生成。
(1)PKG进行系统初始化,以一个安全参数λ作为输入生成系统公共参数PP和主密钥msk。
(2)PKG根据用户提供的身份信息,为用户生成对应的私钥,以公共参数PP、主密钥msk和用户身份标识ID作为输入,输出对应于身份标识的私钥skID并通过安全通道发送给用户。
步骤3:私钥验证。
用户收到PKG发送的私钥通过等式(1)g
步骤4:构建改进的多分支树认证结构
用户按照图1所示构造改进的多分支树认证结构,即以文件块m
步骤5:签名
(1)用户通过私钥对文件块进行签名;
(2)用户通过私钥对根节点和副根节点签名;
(3)用户将文件块签名以及节点签名发送给云服务提供商CSP
(4)用户删除本地文件及签名。
步骤6:生成审计质询
(1)TPA代替用户进行完整性审计,生成审计质询chal,即以公共参数PP和用户的身份标识ID作为输入,输出一个挑战质询chal;
(2)TPA将审计质询发送给CSP。
步骤7:生成审计证明
(1)CSP接收审计质询chal;
(2)根据chal生成审计证明P;
(3)将审计证明P发送给TPA进行完整性验证。
步骤8:完整性验证
(1)TPA接受审计证明P;
(2)TPA验证等式(3)和等式(4)是否成立,如果不成立则不通过,无法确保文件的完整性;
(3)若(2)中验证通过,通过检查等式(5)是否成立来判断该持有性证明是否正确,如果上述等式成立,则说明证明是正确的,TPA输出成功,否则失败。
步骤9:用户数据更新
用户数据更新分为数据修改,数据删除和数据插入。
步骤9.1:用户修改数据并验证。
步骤9.2:用户删除数据并验证。
步骤9.3:用户插入数据并验证。
所述步骤4中改进的多分支树构造方法如图1所示,具体如下:
R*为副根节点,用于描述该节点及其下面所有子孙节点存储信息的完整性。节点R*是矩形方框区域中所有节点的副根节点,设定Q为副根节点的标识符。副根节点以下是一个n叉树,即树的每个内节点都有n个子节点,而每个叶子节点只能有一个父节点,树的深度为d,树中每个节点都是一个数据容器,用来存储数据块所对应节点标识信息及数据块哈希信息。根据局部性原理,即研究人员在对程序进行分析时发现数据访问具有阶段性和聚集性特征,其中聚集性通常体现为时间的局部性和空间的局部性。时间的局部性是指一个数据被访问之后,在不久后很可能会被再次访问;空间的局部性是指一个数据被访问之后,地址相邻的数据在不久后也可能会被访问。因此,本发明借助局部性原理设计多分支树节点存储的信息,旨在实现多分支树的高效查找。具体的,z
改进的多分支树构造过程步骤包括如下:
步骤1:设置节点结构
设置多分支树结构的信息集、儿子链表和父节点。
步骤2:建树
(1)输入文件信息M,n块,树的高度d,哈希函数H,遍历变量i;
(2)设置节点链表层数和当树的高度,自底向上遍历;
(3)初始化文件M,把信息文件M分成n^d份,构成d层的n叉树;
步骤3:筛选副根节点并输出
(1)构建临时父亲节点并继续遍历节点,取哈希值;
(2)设置副根节点条件,判断是否为副根节点,满足条件则输出。
所述步骤9.1用户修改数据及验证方法如图4(a)所示,包括以下步骤:
步骤1:用户通过新数据块的认证标签生成更新请求,认证标签为,更新请求为update=(M,i,m’
步骤2:用户向CSP发送更新请求,其中M表示修改操作。
步骤3:在CSP收到用户的更新请求后,CSP修改文件。首先,CSP用新的数据块m
步骤4:CSP将P
步骤5:用户根据CSP提供的证明程序验证信息,使用{H
步骤6:由用户判断公式(3)和式(4)是否正确。如果它们不为真,则用户输出失败。如果为真,则继续验证CSP的数据修改操作是否正确。
步骤7:用户用{H
步骤8:用户计算根节点γ'和副根节点Γ'的签名。
步骤9:用户将新签名发送给CSP。
所述步骤9.2用户删除数据及验证方法如图4(b)所示,包括以下步骤:
步骤1:在删除数据的过程中,用户首先向CSP发送一个删除请求update=(D,i),i表示要删除的数据块的序列号。
步骤2:用户向CSP发送更新请求,D表示删除操作。
步骤3:CSP在接收到请求消息后更新文件。CSP首先检索数据结构,查找并删除指定的数据块m
步骤4:CSP将P
步骤5:用户根据CSP提供的证明程序验证信息,使用{H
步骤6:由用户判断公式(3)和式(4)是否正确。如果它们不为真,则用户输出失败。如果为真,则继续验证CSP的数据修改操作是否正确。
步骤7:用户用{H
步骤8:用户计算根节点γ'和副根节点Γ'的签名。
步骤9:用户将新签名发送给CSP。
所述步骤9.3用户插入数据及验证方法如图4(c)所示,包括以下步骤:
步骤1:用户首先为要插入的数据块生成一个身份验证标签,并向CSP发送更新请求update=(I,i,m
步骤2:用户向CSP发送更新请求,I表示插入操作。
步骤3:CSP在指定位置插入数据块。在CSP接收到更新请求后,它将更新文件。首先,CSP检索数据块m
步骤4:CSP将P
步骤5:用户根据CSP提供的证明程序验证信息,使用{H
步骤6:由用户判断公式(3)和式(4)是否正确。如果它们不为真,则用户输出失败。如果为真,则继续验证CSP的数据修改操作是否正确。
步骤7:用户用{H
步骤8:用户计算根节点γ'和副根节点Γ'的签名。
步骤9:用户将新签名发送给CSP。
本发明所述的基于身份的动态审计方法的架构示意图如图3所示。
(1)私钥生成端PKG,是根据用户发送的身份标识为用户生成用户私钥,以进行后续验证过程中数据标签的生成、认证结构签名以及更新过程。其主要功能为:运行初始化模块进行整个系统初始化;运行私钥生成算法为用户生成私钥,并将相应私钥通过安全通道发送给用户端。
(2)用户端User,是指为用户提供与PKG、云端与第三方审计员进行交互的程序,主要是改进的多分支树构造、生成签名以及更新等模块,用户可选择相应的模块进行操作,主要功能有:改进的多分支树构造,即用户对文件进行分块并进行哈希值,并计算改进多分支树认证结构根节点和副根节点哈希值以形成改进的多分支树结构来进行文件块信息的存储和文件块的更新;签名生成,即将文件按照指定的格式划分为数据块,生成数字标签;文件更新,即用户向云服务器端发出文件更新请求,云服务提供商根据请求进行相应的文件块更新,生成新的认证结构并重新计算根节点和副根节点,最后将相应的更新信息发回给用户,由用户端验证云服务器是否正确更新文件块。
(3)第三方审计员端主要负责挑战质询的生成以及用户数据完整性的验证。挑战质询生成,即根据用户数据块总数,随机选取适合的挑战块数与随机数,形成挑战质询chal发送给云服务器端进行完整性挑战;数据完整性验证,即根据云服务端发送的审计证明进行完整性验证,最终将验证结果返回给用户端,告知用户其数据是否被完整存储在云端。
(4)云服务提供商端主要有审计证明生成模块和更新证明生成模块:审计证明模块指根据第三方审计员端的挑战质询,云服务器查找并获取相关的文件块哈希值,并计算审计证明,将审计证明发送给第三方审计员进行数据完整性验证。更新证明生成模块指云服务器接受用户发来的数据更新请求,根据请求对文件进行更新,并生成更新证明发送给用户用于验证云端是否正确更新文件。
- 云环境下基于改进多分支树的完整性动态审计方法
- 一种云环境下外包数据的在线/离线完整性审计方法