一种云存储环境下的基于区块链的日志行为审计方法与流程

文档序号:16579259发布日期:2019-01-14 17:49阅读:241来源:国知局
一种云存储环境下的基于区块链的日志行为审计方法与流程

本发明属于云存储安全技术领域,更具体地,涉及一种云存储环境下的基于区块链的日志行为审计方法。



背景技术:

利用云数据存储的公共审计服务可以让用户在需要审查外包数据时求助于独立的第三方审计者(tpa)。tpa拥有用户所不具备的专业知识和能力,可以代表用户定期审计存储在云存储服务器中的所有数据的完整性,从而为用户提供更简单经济的方式,以确保其数据能正确地存储在云端。此外,除了能帮助用户评估其订购的云存储服务的风险之外,tpa的审计结果还有助于云存储提供方改进其基于云的服务平台,甚至可以利用tpa实现独立的仲裁目的。总而言之,公共审计服务将在这个新兴的云存储领域发挥重要作用,并有可能成为建立用户与云存储提供方之间信任关系的重要方式。

无论数据拥有者还是普通用户都依赖于一个可信第三方进行认证和授权,但近年来屡次发生的一些数据泄露和篡改等安全问题足以表明:可信第三方并不总是值得信任,他们可能出于利益会出卖用户的数据或访问控制等安全信息。另一方面,用户也有可能恶意宣称数据丢失从而向服务商索取高额赔偿。云存储平台与用户之间的信任缺失已经影响到云存储技术的发展,需要用一些新的方法和新的技术手段来解决目前的问题。

目前对云数据审计的研究大多是关于数据完整性方面的,对云数据操作行为审计的研究较少,基于日志记录的操作行为审计对于确认责任归属、追溯用户数据以及限制非法操作等都有很大帮助,可以有效地缓解用户和云存储提供方之间的信任问题。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于解决现有技术云数据审计依赖于第三方、缺少对云数据操作行为的审计的技术问题。

为实现上述目的,第一方面,本发明实施例提供了一种云存储环境下的基于区块链的日志行为审计方法,该方法包括以下步骤:

s1.数据拥有者和云服务提供方共同商议一个智能合约,将所述智能合约部署至区块链网络上,如果部署成功,则转入步骤s2,否则,结束;

s2.对于数据拥有者,在向云存储服务器端上传数据文件后,调用智能合约向区块链网络添加日志记录;

s3.对于普通用户,调用智能合约输入想要对云存储服务器上数据文件进行的操作请求信息,智能合约返回给普通用户所述数据文件的元数据信息,转入步骤s4;

s4.普通用户根据操作请求信息和元数据信息,向云存储服务器发起操作请求并发送日志记录,判断所述操作请求是读操作请求还是写操作请求,若为写操作请求,则转入步骤s5;若为读操作请求,则转入步骤s6;

s5.云存储提供方调用智能合约认证所述日志记录,在收到智能合约同意所述写操作请求的反馈后,按照所述写操作请求执行相应的写入操作,并调用智能合约向区块链网络中添加日志记录;

s6.云存储提供方调用智能合约认证所述日志记录,在收到智能合约同意所述读操作请求的反馈后,按照所述读操作请求执行相应的读取操作,将请求的数据文件返回给普通用户,并调用智能合约向区块链网络中添加日志记录,转入步骤s7;

s7.当云存储服务器返回的数据文件与之前通过智能合约获取的数据文件不一致时,普通用户调用智能合约对该数据文件发起审计请求。

更具体地,所述智能合约包括多种接口,具体如下:

upload:数据拥有者通过该接口将已经上传到云服务提供方的数据文件的元数据信息记录至区块链网络,并生成该数据文件的初始访问记录,由用户私钥签名后的日志记录在区块链网络进行广播,并被打包入块在区块链网络中达成共识;

getfile:用户通过此接口获取数据文件在云存储服务器的地址l,用户在向云存储服务器端发出远程读/写请求时,需要通过该接口获取地址和一个临时token;

verifyrequest:该接口提供给云存储提供方使用且只能由云存储提供方调用,当云存储提供方收到用户的操作请求时,首先调用该接口查询用户是否有访问权限,同时该接口会获取用户的访问请求信息,并将其作为日志记录存储在区块链网络上;

grant:数据拥有者通过该接口设置普通用户对自己存放于云存储服务器上的数据的访问权限,该接口用于给普通用户授权,即赋予该用户对数据文件的读写权限;

revoke:数据拥有者通过该接口撤销之前赋予普通用户对自己存放于云存储服务器上的数据文件的读写权限;

audit:审计用户通过该接口追踪数据文件的生命周期,即知道该数据文件何时被创建和销毁、何时被普通用户访问以及被执行过哪些操作;

logging:该接口用于在区块链网络中广播普通用户访问数据文件产生访问日志记录,并向区块链添加存储所述日志记录,由上述接口共同完成。

更具体地,所述地址l为url。

更具体地,步骤s2具体如下:

s201.数据拥有者为每一个待上传的数据文件创建一个编号fid,并将该数据文件上传至云存储提供方;

s202.数据拥有者调用智能合约的upload接口将数据文件的元数据信息记录至区块链网络;

s203.数据拥有者将签名后的日志记录(uid,fid,type,h(x0),opm,ts,sign)发送给云存储提供方;

s204.云存储提供方检查日志记录各个字段的正确性,如果都正确,则调用智能合约的logging接口将日志记录添加至区块链网络中,否则,结束过程;

其中,uid为远程访问数据的用户唯一识别编号,fid为被访问的数据文件的唯一标识,type为用户对数据文件的操作类型,h(x0)为被操作前的数据哈希值;ts为当前时间戳;sign为当前访问数据的用户利用其私钥对访问记录生成的签名;opm为开放的数据溯源模型。

更具体地,所述操作请求信息为(type,fid),其中,type为用户对数据文件的操作类型,type有create、read、write三种,分别表示上传数据、读数据和写数据;fid为被访问的数据文件的唯一标识;所述数据文件的元数据信息包括数据文件在云存储服务器上的地址l、数据文件被操作前的哈希值以及令牌token。

更具体地,所述读操作请求为(read,l,h(x0),token),所述写操作请求为(write,l,h(xn),token);步骤s4中所述日志记录由访问记录(uid,fid,type,h(x0),h(xn),opm,ts,sign)私钥签名生成;

其中,uid为远程访问数据的用户唯一识别编号,fid为被访问的数据文件的唯一标识,type为用户对数据文件的操作类型,h(x0)为被操作前的数据哈希值;h(xn)为被操作后的数据哈希值;ts为当前时间戳;sign为当前访问数据的用户利用其私钥对访问记录生成的签名;opm为开放的数据溯源模型。

更具体地,步骤s5具体如下:

s501.云存储提供方接收到普通用户的请求后,检查日志记录各个字段的正确性,如果都正确,则转入步骤s502,否则,结束过程;

s502.调用智能合约的verifyrequest接口对普通用户的身份进行验证,在智能合约内部查询对应数据文件的访问控制策略,若用户身份符合条件,则同意该请求,并转入步骤s503,若不符合,则拒绝用户的请求,并结束过程;

s503.云存储提供方在收到智能合约同意所述写操作请求的反馈后,按照用户的请求执行相应的写入操作;

s504.智能合约将该日志记录添加至区块链网络中。

更具体地,步骤s6具体如下:

s601.云存储提供方接收到用户的请求后,检查日志记录各个字段的正确性,如果都正确,则转入步骤s602,否则,结束过程;

s602.调用智能合约的verifyrequest接口对该用户的身份进行验证,在智能合约内部查询对应数据文件的访问控制策略,若用户身份符合条件,则同意该请求,并转入步骤s603,否则,拒绝用户的请求,并结束过程;

s603.云存储提供方在收到智能合约同意所述读操作请求的反馈后,按照用户的请求执行相应的读取操作,并将请求的数据文件返回给普通用户;

s604.智能合约将该日志记录添加至区块链网络中,转入步骤s7。

更具体地,步骤s7具体如下:

普通用户在接收到云存储服务器发送的数据文件后,先计算其hash值,再与之前通过智能合约获取的数据文件最新hash值h(x0)进行比较,若相同,则证明读取的数据文件是正确的,否则,说明数据文件被篡改或者不是最新的版本,用户可调用智能合约的audit接口对该数据文件发起审计请求。

第二方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述第一方面所述的日志行为审计方法。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

1.本发明通过将云日志存储从云存储提供方转移到区块链,利用区块链的去中心化,去信任化和高可靠性等特点,保证了日志数据的安全性和完整性。

2.本发明利用智能合约使区块链网络提供了日志的读写接口和审计结构,并针对用户和云服务提供方之间的交互设计了数据访问流程,可以保证用户和云存储双方会将日志完整地记录在区块链网络上,且不可对日志记录进行否认和篡改。

附图说明

图1为本发明提供的一种云存储环境下的基于区块链的日志行为审计模型示意图;

图2为本发明提供的一种云存储环境下的基于区块链的日志行为审计方法流程图;

图3为本发明提供的步骤s2的流程图;

图4为本发明提供的对存储在云存储服务器的数据进行远程写操作的流程图;

图5为本发明提供的对存储在云存储服务器的数据进行远程读操作的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为本发明提供的一种云存储环境下的基于区块链的日志行为审计模型示意图。如图1所示,所述日志行为审计模型包括以下组成部分:

云存储用户:由数据拥有者和普通用户这两类组成,可以是个体或者组织。数据拥有者可以向云存储提供方上传数据,同时在区块链网络中广播本次上传操作并由区块链记录下该操作日志;普通用户则主要对云数据进行读写操作,同时在区块链网络中进行广播并记录下其操作记录。

云存储提供方:云存储提供方根据用户的需求,将其虚拟化的资源以存储资源池的方式提供给用户自由使用。用户可以向云数据服务器上传数据并对数据进行远程读写操作,同时云存储提供方加入区块链网络与用户一起对日志记录进行验证。

区块链网络:用户和云存储提供方作为节点构成整个区块链网络,每个节点平等地接受用户节点广播的操作记录的信息,通过挖矿算法将记录信息打包入块。整个区块链网络作为一个分布式数据库存储操作行为日志。

第三方审计者:拥有用户所不具备的专业知识和能力,可以代表用户定期审计存储在云存储服务器中的所有数据的完整性,从而为用户提供更简单经济的方式,以确保其数据能正确地存储在云端。

为了使云存储用户和云存储提供方双方均不能对日志记录进行否认,在记录一条日志时需要得到双方的确认,本发明提供了一种云存储环境下的基于区块链的日志行为审计方法,该方法流程中所需的各个接口由智能合约编写,保证双方均不可对其行为否认,从而使得区块链网络中的日志记录是完全可信的。

图2为本发明提供的一种云存储环境下的基于区块链的日志行为审计方法流程图。如图2所示,该方法包括以下步骤:

s1.数据拥有者和云服务提供方共同商议一个智能合约,将所述智能合约部署至区块链网络上,如果部署成功,则转入步骤s2,否则,结束;

s2.对于数据拥有者,在向云存储服务器端上传数据文件后,调用智能合约向区块链网络添加日志记录;

s3.对于普通用户,调用智能合约输入想要对云存储服务器上数据文件进行的操作请求信息,智能合约返回给普通用户所述数据文件的元数据信息,转入步骤s4;

s4.普通用户根据操作请求信息和元数据信息,向云存储服务器发起操作请求并发送日志记录,判断所述操作请求是读操作请求还是写操作请求,若为写操作请求,则转入步骤s5;若为读操作请求,则转入步骤s6;

s5.云存储提供方调用智能合约认证所述日志记录,在收到智能合约同意所述写操作请求的反馈后,按照所述写操作请求执行相应的写入操作,并调用智能合约向区块链网络中添加日志记录;

s6.云存储提供方调用智能合约认证所述日志记录,在收到智能合约同意所述读操作请求的反馈后,按照所述读操作请求执行相应的读取操作,将请求的数据文件返回给普通用户,并调用智能合约向区块链网络中添加日志记录,转入步骤s7;

s7.当云存储服务器返回的数据文件与之前通过智能合约获取的数据文件不一致时,普通用户调用智能合约对该数据文件发起审计请求。

步骤s1.数据拥有者和云服务提供方共同商议一个智能合约,将所述智能合约部署至区块链网络上,如果部署成功,则转入步骤s2,否则,结束。

首先,系统需要进行初始化,由用户和云服务提供方共同商议一个智能合约规则,然后将此合约部署至区块链网络上,合约部署的过程即发起一个接受地址为0的交易,该交易的数据字段会包含已经编译成字节码的合约代码。该交易在区块链网络上广播,被节点接收并打包入块,此时会得到一个唯一的合约地址,我们可以通过这个地址调用合约。由于包含合约代码的交易被打包入块,并在全网达成共识,因而合约代码是不能被篡改的,我们可以相信这段代码一定会按照我们所制订的规则去运行。该过程会向用户端和云服务提供方返回智能合约地址。

智能合约包括多种接口,用户、云存储提供方以及取证调查方通过以下接口实现日志记录和审计工作:

upload:数据拥有者通过该接口将已经上传到云服务提供方的数据文件的元数据信息记录至区块链网络,并生成该数据文件的初始访问记录,由用户私钥签名后的日志记录在区块链网络进行广播,并被打包入块在区块链网络中达成共识。

日志记录被视作交易数据被打包进入区块。

getfile:用户通过此接口获取数据文件在云存储服务器的地址l,用户在向云存储服务器端发出远程读/写请求时,需要通过该接口获取地址和一个临时token。

优选地,所述地址l为url。智能合约在收到请求后会记录此次行为作为一个预请求日志,用于后续对用户操作行为进行审计,同时token可以防止用户直接利用上一次调用getfile接口获取的url对云存储服务器提出请求。

verifyrequest:该接口提供给云存储提供方使用且只能由云存储提供方调用,当云存储提供方收到用户的操作请求时,首先调用该接口查询用户是否有访问权限,同时该接口会获取用户的访问请求信息,并将其作为日志记录存储在区块链网络上。

grant:数据拥有者通过该接口设置普通用户对自己存放于云存储服务器上的数据的访问权限,该接口用于给普通用户授权,即赋予该用户对数据文件的读写权限。

revoke:数据拥有者通过该接口撤销之前赋予普通用户对自己存放于云存储服务器上的数据文件的读写权限。

audit:审计用户通过该接口追踪数据文件的生命周期,即知道该数据文件何时被创建和销毁、何时被普通用户访问以及被执行过哪些操作。

logging:该接口用于在区块链网络中广播普通用户访问数据文件产生访问日志记录,并向区块链添加存储所述日志记录,由上述接口共同完成。

步骤s2.对于数据拥有者,在向云存储服务器端上传数据文件后,调用智能合约向区块链网络添加日志记录。

步骤s2对应数据拥有者对数据的create访问操作。在合约部署成功后,系统即已初始化完成。接下来,每当数据拥有者向云端上传数据后都会调用智能合约的upload接口上传文件元数据并写入一条日志记录,调用智能合约的过程便是在区块链网络中广播一条交易的过程,这条交易的接受地址为智能合约地址,data字段中包含了发送者提供的参数,同时交易包含发送者的签名并会被其它节点验证。

当交易被其它节点接收便会执行此智能合约并保存相应的状态变量,接着交易被打包入块,并在全网达成共识,此智能合约运行后的状态便被全网确认,因此文件元数据和日志记录会被写入区块链且不可被篡改。

数据拥有者还可以通过grant接口和revoke接口为文件制定访问控制策略。当此交易在区块链网络广播时,接收节点会验证交易的签名并且只有数据拥有者可以制定策略,否则此次调用会被认为是无效操作。

图3为本发明提供的步骤s2的流程图。如图3所示,步骤s2具体如下:

s201.数据拥有者为每一个待上传的数据文件创建一个编号fid,并将该数据文件上传至云存储提供方;

s202.数据拥有者调用智能合约的upload接口将数据文件的元数据信息记录至区块链网络。

s203.数据拥有者将签名后的日志记录(uid,fid,type,h(x0),opm,ts,sign)发送给云存储提供方。

日志记录上附带的用户签名可以确保用户不可对此次操作行为进行抵赖。

s204.云存储提供方检查日志记录各个字段的正确性,如果都正确,则调用智能合约的logging接口将日志记录添加至区块链网络中,否则,结束过程;

其中,uid为远程访问数据的用户唯一识别编号,fid为被访问的数据文件的唯一标识,type为用户对数据文件的操作类型,h(x0)为被操作前的数据哈希值;ts为当前时间戳;sign为当前访问数据的用户利用其私钥对访问记录生成的签名;opm为开放的数据溯源模型。

例如,检查用户uid是否正确,操作类型是否对应,再验证用户签名的有效性,最后计算数据文件的哈希值是否与h(x0)相同,若都是正确的,则可以调用智能合约的logging接口将日志记录写入区块链网络中。

步骤s3.对于普通用户,调用智能合约输入想要对云存储服务器上数据文件进行的操作请求信息,智能合约返回给普通用户所述数据文件的元数据信息,转入步骤s4;

具体地,所述操作请求信息为(type,fid),其中,type为用户对数据文件的操作类型,type有create、read、write三种,分别表示上传数据、读数据和写数据;fid为被访问的数据文件的唯一标识。所述数据文件的元数据信息包括数据文件在云存储服务器上的地址l、数据文件被操作前的哈希值以及令牌token。同时还包括了文件所有者对文件所指定的访问控制策略,在本系统中是利用一个访问控制列表实现的。

步骤s4.普通用户根据操作请求信息和元数据信息,向云存储服务器发起操作请求并发送日志记录,判断所述操作请求是读操作请求还是写操作请求,若为写操作请求,则转入步骤s5;若为读操作请求,则转入步骤s6。

具体地,读操作请求为(read,l,h(x0),token),写操作请求为(write,l,h(xn),token);步骤s4中所述日志记录由访问记录(uid,fid,type,h(x0),h(xn),opm,ts,sign)私钥签名生成;

其中,uid为远程访问数据的用户唯一识别编号,fid为被访问的数据文件的唯一标识,type为用户对数据文件的操作类型,h(x0)为被操作前的数据哈希值;h(xn)为被操作后的数据哈希值;ts为当前时间戳;sign为当前访问数据的用户利用其私钥对访问记录生成的签名;opm为开放的数据溯源模型。

步骤s5.云存储提供方调用智能合约认证所述日志记录,在收到智能合约同意所述写操作请求的反馈后,按照所述写操作请求执行相应的写入操作,并调用智能合约向区块链网络中添加日志记录。

图4为本发明提供的对存储在云存储服务器的数据进行远程写操作的流程图。如图4所示,步骤s5具体如下:

s501.云存储提供方接收到普通用户的请求后,检查日志记录各个字段的正确性,如果都正确,则转入步骤s502,否则,结束过程;

s502.调用智能合约的verifyrequest接口对普通用户的身份进行验证,在智能合约内部查询对应数据文件的访问控制策略,若用户身份符合条件,则同意该请求,并转入步骤s503,若不符合,则拒绝用户的请求,并结束过程;

s503.云存储提供方在收到智能合约同意所述写操作请求的反馈后,按照用户的请求执行相应的写入操作;

s504.智能合约将该日志记录添加至区块链网络中。

步骤s6.云存储提供方调用智能合约认证所述日志记录,在收到智能合约同意所述读操作请求的反馈后,按照所述读操作请求执行相应的读取操作,将请求的数据文件返回给普通用户,并调用智能合约向区块链网络中添加日志记录,转入步骤s7。

图5为本发明提供的对存储在云存储服务器的数据进行远程读操作的流程图。如图5所示,步骤s6具体如下:

s601.云存储提供方接收到用户的请求后,检查日志记录各个字段的正确性,如果都正确,则转入步骤s602,否则,结束过程;

s602.调用智能合约的verifyrequest接口对该用户的身份进行验证,在智能合约内部查询对应数据文件的访问控制策略,若用户身份符合条件,则同意该请求,并转入步骤s603,否则,拒绝用户的请求,并结束过程;

s603.云存储提供方在收到智能合约同意所述读操作请求的反馈后,按照用户的请求执行相应的读取操作,并将请求的数据文件返回给普通用户;

s604.智能合约将该日志记录添加至区块链网络中,转入步骤s7。

步骤s7.当云存储服务器返回的数据文件与之前通过智能合约获取的数据文件不一致时,普通用户调用智能合约对该数据文件发起审计请求。

普通用户在接收到云存储服务器发送的数据后,先计算其hash值,再与之前通过智能合约获取的数据最新hash值h(x0)进行比较,若相同,则证明读取的数据是正确的,否则,说明数据被篡改或者不是最新的版本,此时,用户可以调用智能合约的audit接口对该数据文件发起审计请求。

只有在读数据时才会关心数据是否被破坏或恶意篡改,写数据时并没有这个需求,不过智能合约也有提供接口,用户可以在任何时候通过该接口对数据进行完整性审计。对数据操作行为的审计可以基于对日志记录的提取和分析。当有审计需求时首先调用智能合约的审计接口,由智能合约对日志记录进行审查后将结果返回给提出请求的用户。

本发明提供了三个审计功能,并可以作为公开审计接口audit对所有用户开放。可以由第三方审计者调用,也可以是其他任何用户。这三个审计功能分别是:获取文件生命周期、查询非法用户以及验证文件完整性。

获取文件生命周期即提供一个数据文件从上传到被删除所经历的所有操作记录。

查询非法用户即提供有哪些用户试图进行非法操作,从而可以对这些用户采取一些惩罚措施或者及时撤销恶意用户的权限。通过比较getfile发出的请求和verifyrequest发出的请求是否是一致的,如果两者的请求操作不一致则说明用户发起了非法请求,则该用户是非法用户。

验证文件完整性即提供给用户验证其获取的文件是否被篡改过。通过将数据的哈希值与最新记录中的数据哈希值进行比较,如果不一致,则说明数据的完整性被破坏了。

以上,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1