一种基于区块链的云上数据可信删除方法与系统与流程

文档序号:18704092发布日期:2019-09-17 23:23阅读:420来源:国知局
一种基于区块链的云上数据可信删除方法与系统与流程
本发明属于区块链与云计算结合的
技术领域
,特别涉及一种云数据的可信删除方法。
背景技术
:云存储是一种将数据外包在线存储的存储方式,外包的数据一般放在云服务提供商提供的存储服务器上,由云服务提供商来组织和管理数据,相应地,使用者只需为存储支付费用,可以大大节约服务器管理维护的成本,方便地实现多终端数据共享。但是,当使用者需要外包的数据比较机密时,就对云服务服务商提出了较高的对客户隐私数据保护的要求。但是,作为数据的管理者,云服务提供商有条件将客户外包的数据据为己有。例如,云服务提供商一方面可能偷窥客户上传的机密数据,另一方面可能在客户要求删除数据后仍保留原始数据。而且,目前的云存储技术中,数据删除的结果,往往只是以成功或失败的结果返回,云服务提供商无法向客户证明云上数据确实已经删除。在这种情况下,出现了一种基于可信第三方的可信删除方式。这种技术采用加密技术将需要外包的数据加密,而加密密钥则向可信第三方申请,可信第三方扮演着加密密钥的分发者与管理者身份,通过使第三方废止加密密钥来实现可信的删除,将删除任务从云存储服务器转移到密钥管理第三方。这种方式突破了通过数据覆盖删除大文件的低效,同时保证了删除数据不可恢复。不过,由于方案的安全性严重依赖于第三方的可信,第三方的诚实程度将限制方案的安全性,一旦分发与管理密钥的第三方出现恶意行为,文件的可信删除就很难保证。区块链是一种分布式的数据库,具有去中心化、不可篡改和可信性等特性。所有加入区块链网络中的节点都可以保有整个链的信息,矿工节点可以参与链上共识,来决定链的状态,共识机制保证链上数据最终达到正确的稳态,这保证了合约的执行结果经过矿工共识,可认为是符合执行逻辑的结果。一旦数据被上链成为区块链数据库中被承认的一部分,这部分数据就很难再被更改,除非攻击者拥有全网51%的算力,对于以以太坊为代表的支持图灵完备性的区块链平台来说,意味着被部署的合约代码几乎不可能被更改。因此,链上的智能合约运行可视为完全可信的运行。合约中存储的数据只能由合约代码访问,因此,不同于传统云存储技术中的数据外包,存储在客户创建的合约内部的数据虽然被客户外包出去,但只要对合约的调用略加限制,这些外包出去存储在合约内部的数据的控制权实际还在客户手中,很难被其他人获取。技术实现要素:本发明的目的是解决云存储数据的保护与可信删除的问题。鉴于区块链技术本身可信性与不可篡改性的特点,可以把区块链技术应用到云存储中去,在无需云服务提供商与客户之间建立完全信任的条件下实现客户机密数据的保护与数据的可信删除。本发明提出一种基于区块链的云上数据可信删除方法,包括:1)合约部署:客户端在文件被上传之前首先部署一个与文件对应的智能合约,智能合约中包括一块存储空间以及一组数据管理函数;数据管理函数包括,数据写入函数、数据读取函数以及数据删除函数。客户端发起创建智能合约的交易之后便不再监听区块链网络中的执行过程,只在本地保留有交易哈希,并与文件名对应;随后每次需要访问智能合约时,都使用对应文件名作为索引,首先找到对应交易的哈希,然后使用交易哈希找到对应智能合约的地址,再使用智能合约的地址调用智能合约;所述的智能合约是以以太坊为代表的区块链技术中的可执行合约;智能合约中存储空间包括有160bits的address类型用于记录该合约的部署者地址以及256bytes的byte32[8]类型用于保存被公钥加密后的文件密钥;2)文件上传过程,客户端本地保有非对称密钥对;为要上传的文件生成对称密钥,使用生成的对称密钥加密文件得到文件密文;使用本地保有的公钥加密文件密钥得到密钥密文;调用文件对应智能合约中的数据写入函数,以密钥密文作为输入数据,将密钥密文存储到智能合约中;把文件密文上传给云存储服务器;采用的对称密钥加密算法为aes-256;采用的非对称密钥加密算法为rsa-2048;在本地将机密数据使用文件密钥加密之后再外包给云,阻止云得到客户的机密信息,将文件密钥加密之后存储于智能合约中,节省本地存储空间,减小文件密钥损坏的可能性,同时密钥密文管理权仍留在客户手中;3)文件下载过程,客户端从云存储服务器下载得到文件密文,调用文件对应的智能合约的数据读取函数得到文件密钥密文;客户端使用本地保存的私钥解密文件密钥密文得到文件密钥,使用得到的文件密钥解密文件密文得到文件明文,即原文件;4)文件删除过程,客户端向云存储服务器发起文件删除请求,要求删除云存储服务器中保有的对应文件密文;调用对应文件的智能合约中的数据删除函数,要求智能合约删除其中保有的文件密钥密文;对应文件的智能合约中的数据删除函数执行时,首先将智能合约中存储文件密文的空间覆盖,随后调用自毁函数,合约自毁,存储空间被释放,文件密钥难以复原,则使用文件密钥加密的文件很难被破解,视为文件已被删除;5)删除验证过程,客户端再次调用对应文件的智能合约,如果合约无法被调用,则证明对应文件的文件密钥密文已经不能被获取,认为文件明文已经无法得到,即文件已经被删除。本申请还提供了一种基于区块链的云上数据可信删除系统,包括客户端部分与智能合约设计实现部分:客户端部分:主要完成客户控制的文件上传、下载、删除与删除验证的功能,包括数据编码与解码模块、密码模块、通信模块、本地存储管理模块以及顶层实现模块;所述数据编码与解码模块,用于与以太坊通信时需要的json格式数据构造与解析,以及调用智能合约函数时参数的abi格式编码构造与解析;所述密码模块,用于文件密钥的生成、文件密钥的加密与解密、机密文件的加密与解密;所述通信模块,用于与以太坊进行远程通信以及与远程云存储服务器进行通信,发送请求并获取响应,该模块调用数据编码与解码模块,在发送请求时构造请求消息,在接受响应后解码获取响应结果;所述本地存储管理模块,用于管理本地存储的机密文件以及文件名与交易哈希的对应文件的管理;所述顶层实现模块,该模块调用密码模块、以太坊通信模块以及本地存储管理模块,用于完成合约部署、文件上传、下载、删除、验证的逻辑与功能实现。智能合约设计实现部分:主要完成智能合约内部逻辑设置,包括数据写入函数、数据读取函数、数据删除函数的设计与实现,实现文件密钥密文在合约中的存储与管理,以及文件密钥密文的删除与合约自毁,并提供简单的访问控制。本发明的优点和有益效果为:阻止云服务提供商获取客户机密文件原文,减小云服务商非法使用客户机密数据的可能性;使用智能合约存储文件密钥密文,防止被篡改,防止文件密钥密文损坏,避免除合约部署者之外的客户调用合约,保护文件密钥密文不被窃取;使用智能合约保存与管理文件密钥密文,这部分数据的控制权交回到客户手中,由于云上数据需要使用这部分密钥解密,相当于把云上数据的控制权重新交还给客户,实现数据拥有者与数据管理者的统一。【附图说明】附图仅用于帮助理解本发明中方案与系统设计,并不会对本发明造成不当的限定。图1是本发明的客户端操作的流程图;图2是本发明中客户端、区块链与云之间的关系图;图3是本发明中文件上传、下载的执行过程图;图4是本发明中系统的构成图;图5是本发明中系统实现在不同文件大小测试下的传输时间图,其中,(a)为文件上传,(b)为文件下载。【具体实施方式】实施例1、一种基于区块链技术的云存储数据可信删除方法下面结合附图来更具体地介绍本发明中提出的云上数据可信删除的方法。下面的示意性的实施例仅用于帮助理解本发明中的方案与设计流程,并不对本发明造成不当的限定。在实施例中,客户不信任云服务提供商对自己机密数据删除的返回结果,云服务提供商是好奇的,不会恶意破坏客户数据但有可能查看客户机密数据。如图1所示,为本发明中一个机密文件的生存周期与操作流程图。如图3所示,为本发明中文件上传与下载的执行过程。步骤101:智能合约部署:假设用户user有保护数据可信删除的需求,需要首先创建一个与需要被保护的文件fsecret对应的智能合约cf,设文件fsecret的文件名为fname。客户端首先构造创建合约的交易tfdeploy,交易中重要的字段可由表1所示。客户端填充必要的交易字段,将表1中数据组织成json格式,以之为参数调用以太坊远程调用函数eth_sendtransaction。调用成功后,该合约创建交易被提交。函数立即返回交易哈希hfdeploy,在本地存储对应关系[fname,hfdeploy]。交易tfdeploy被矿工打包并执行后,智能合约cf被创建,其地址cfaddress存在交易tfdeploy的收据之中。可选地,本实施例中使用一个文件对应一个智能合约,实现简单的对应关系;可选地,本实施例中选取以太坊作为区块链技术实现平台,表1中所示字段也采用以太坊交易中的数据组织方式。表1智能合约创建交易构造字段说明from交易发起方的地址,为160bit的数据串,也是合约创建者地址data合约创建字节码,在合约代码编译成功后得到nonce由该交易发起方发起交易的序号,允许覆盖未执行交易步骤102:文件上传:仍以文件fsecret为例,它对应的智能合约cf已经存在于区块链网络中。为了完成文件上传操作,客户端需要分别与云存储服务器以及合约cf交互。其中,与合约cf交互就是调用该合约中的公开的数据写入函数funcfset。为了调用funcfset,需要构造合约调用交易。交易中重要的字段如表2所示。客户端通过搜索本地文件获得fname对应的交易哈希hfdeploy。调用远程调用函数eth_gettransactionreceipt,以hfdeploy作为参数,返回包含cf的合约地址cfaddress的json串,解析json数据获得合约地址cfaddress。随后,生成对称文件密钥kf,使用kf加密文件得到文件密文使用已生成的,本地保有的非对称密钥对(pk,sk)中的公钥pk加密文件密钥kf得到密钥密文enck=encpk(kf);客户端将文件密文encf上传给云存储服务器。随后根据表2字段构造交易所需json数据,其中data字段所指函数的abi编码为数据写入函数funcfset的编码数据以及参数数据。以构造得到的json数据串为参数调用eth_sendtransaction函数,发出交易。交易执行中,funcfset被执行,将传入参数覆盖在指定的byte32[8]的存储空间中,执行完毕后,密钥密文enck被放置于智能合约cf的内部存储空间中。表2调用合约交易构造字段说明from交易发起方的地址,为160bit的数据串,也是合约调用者地址to被调用的合约地址,为160bit的数据串,也即cfaqdressdata被调用函数的abi编码以及参数的abi编码nonce由该交易发起方发起交易的序号,允许覆盖未执行交易由于本实施例中云是好奇的,而用户user希望外包的数据又是机密的,因此为了尽可能防止user的机密数据被泄露,文件fsecret加密处理以及文件密钥kf加密处理都在客户机本地进行。加密算法一般可以分为两种,一种是加密密钥与解密密钥相同的对称加密算法,另一种是加密密钥与解密密钥不同的非对称密钥算法,或称公开密钥算法。前者加密时间短,但容易受到攻击,后者加密时间长,但安全性更高。为了兼顾被加密文件的安全性与加密效率,采用首先使用对称密钥加密机密文件,随后使用公钥加密文件密钥的方法。客户端生成文件密钥,示例性地,使用aes-256密码算法生成对称文件密钥kf,加密文件。非对称密钥(pk,sk)的生成使用rsa-2048。由于encf体积较大,它被外包给云服务提供商,交给云存储服务器来组织和管理。但是由于已经经过加密处理,即使是很好奇的云,也不能从encf中得到有用的信息。enck体积较小,且是encf得以被恢复成明文fsecret的重要纽带,因此被外包给带有访问控制、只允许部署者调用的智能合约cf。这样一来cf中文件密钥密文的存储位置就只能由cf自己访问,而cf则只能由user访问控制,因此实际上enck的控制权仍然被握在user手中,由user直接对它进行管理。另外,可选地,非对称密钥对(pk,sk)可以使用本地账户的公私钥对替代。这样,可以一定程度上减小因本地非对称密钥对丢失而造成的机密文件丢失的情况发生。可选地,需要重新上传机密文件fsecret时,可以选择不重新生成文件密钥,仍使用kf,或者重新生成文件密钥kf′。如果重新生成文件密钥kf′,则需要重新调用智能合约,按照前述方法向cf写入新的文件密钥密文enck′=encpk(kf′),但是更新密钥也能够增加文件fsecret的安全性。步骤103:文件下载:仍以文件fsecret为例,它对应的智能合约cf已经存在于区块链网络中,其文件密文encf已经存在于云存储服务器中,其密钥密文encf已经存在于cf内部存储空间中。客户端从云存储服务器下载得到文件密文encf,从智能合约cf中得到密钥密文enck。为了从cf中获取密钥密文enck,需要构建合约调用交易,交易中重要的字段如表2所示。客户端通过搜索本地文件获得fname对应的交易哈希hfdeploy。调用远程调用函数eth_gettransactionreceipt,以hfdeploy作为参数,返回包含cf的合约地址cfaddress的json串,解析json数据获得合约地址cfaddress。根据表2字段构造交易所需json数据,其中data字段所指函数的abi编码为数据写入函数funcfget的编码数据。以构造得到的json数据串为参数调用eth_sendtransaction函数,发出交易。交易执行中,funcfget被执行,仅允许合约创建者user获得密钥密文encf。客户端使用本地保存的私钥sk解密密钥密文得到文件密钥kf=decsk(enck)=decsk(encpk(kf)),使用文件密钥解密文件密文得到原文件明文为了拿回机密文件fsecret,客户端需要集齐三个必要条件:成功拿到机密文件的密文encf、成功拿到文件密钥的密文enck、成功拿到加密文件密钥的非对称密钥对中的私钥sk。缺少任意一个,都不能成功找回fsecret。在本实施例中,智能合约cf不允许非user用户调用funcfget读取文件密钥密文enck,而cf则完全按照合约中代码逻辑执行的执行,因此是可信的,非user用户难以从cf得到enck;user上传给云的机密数据encf需要客户在云上选择合适的访问控制机制,除云之外的攻击者难以获取encf;用于解密文件密钥的私钥sk存储于客户本地除非user自己泄露或存储介质丢失,sk不能被攻击者获取。如图2所示,云无法与cf产生关系,即使是云,由于无法获取cf中的文件密钥密文enck,更无法解密enck得到文件密钥kf,因此也无法看到客户机密数据的明文fsecret。步骤104:文件删除:仍以文件fsecret为例,它对应的智能合约cf已经存在于区块链网络中,其文件密文encf已经存在于云存储服务器中,其密钥密文encf已经存在于cf内部存储空间中。客户端向云存储服务器发送请求要求删除云存储中的encf,调用cf要求覆盖enck所在的存储空间并自毁。为了删除cf中密钥密文enck,需要构建合约调用交易,交易中重要的字段如表2所示。同步骤102所述,获取cf地址cfaddress。根据表2字段构造交易所需json数据,其中data字段所指函数的abi编码为数据删除函数funcfdel的编码数据。以构造得到的json数据串为参数调用eth_sendtransaction函数,发出交易。交易执行中,仅允许合约创建者user调用funcfdel。user调用时,funcfdel被执行,首先存储enck的空间被无关数据覆盖,随后触发合约自毁函数,在合约执行完成后cf自毁,所占空间被释放,cf无法被再次调用,enck不可被获取。在本实施例中,只要encf、fnck或客户本地私钥sk中的任意一个被删除且无法恢复,user的机密文件明文fsecret就无法恢复。具体地,由于本发明中一对公私钥对对应多个文件,因此不能通过删除私钥来达到可信删除的目的,而云服务提供商没有得到客户的信任,且无法提供encf被删除的证据,因此无法把encf删除作为可信删除完成的标准,因此,在本实施例中,把存储于cf中的enck的删除作为可信删除完成的标准。一方面,cf中的数据只由user即数据拥有者控制,不存在信任问题;另一方面cf的执行完全按照预设代码逻辑,难以篡改执行结果;最后,cf自毁之后便无法再被调用,存储于cf中的enck也将不能再被访问了。具体地,客户端分别要求云存储服务器删除encf,调用cf中的函数funcfdel,覆盖存在cf中的enck,随后调用cf自毁程序。客户端此时便可以不在乎云存储服务器的执行结果,因为cf中的enck被删除之后,fsecret就无法再被获取了。步骤105:文件删除验证:仍以文件fsecret为例,设想中,它对应的智能合约cf已经无法被调用。为了调用cf,需要构建合约调用交易,交易中重要的字段如表2所示。同步骤102所述,获取cf地址cfaddress。根据表2字段构造交易所需json数据,其中data字段所指函数的abi编码可以是funcfget、funcfset、funcfdel。以构造得到的json数据串为参数调用eth_sendtransaction函数,发出交易。如果cf无法被调用,无法读到有效的密钥密文enck,则证明删除工作已经完成,否则,则证明cf中删除的操作尚未完成,fsecret仍处于可访问状态。在本实施例中,fsecret的删除等同于加密fsecret的密钥密文enck的删除,即cf中enck的覆盖与cf自毁。自毁之后的cf,其特征在于,存储的enck空间不可再被访问,cf中所有的函数不可再被调用。鲜明的特征给数据删除的验证带来很大的方便。在本实施例中,由于智能合约代码执行结果的确定性与可信性,不会出现合约可调用但是文件密钥密文已被覆盖的情况。因此验证结果只可能有两种情况发生:cf已经自毁,无法调用,或是cf的删除调用尚未被完成,调用正常。基于这种情况,可选地,可以选择cf中任一函数来验证数据删除的情况,在可信的数据删除情况下,任何一个针对cf中任一函数funcfget、funcfset、funcfdel的调用都应该是无效调用。实施例2、一种基于区块链的云上数据可信删除系统另一方面,如图4所示,本发明还提出了一种基于区块链的数据可信删除系统,包括客户端部分与智能合约设计实现部分。按照系统的结构模块,客户端部分分为数据编码与解码模块、密码模块、通信模块、本地存储管理模块以及顶层实现模块。其中:数据编码与解码模块:用于与以太坊交互的json格式数据的编码与解密,以及调用智能合约时参数的abi格式编码与解码。该模块需要在通信模块中被调用,每当有交易需要被构造时,该模块接收由通信模块传来的如表1或表2的交易构建所需参数以及交易类型。对于表1所示的合约创建类型交易,该模块从通信模块获取data字段数据、from字段数据、nonce字段数据,构建json数据串,并返回给通信模块;对于表2所示的合约调用类型交易,该模块从通信模块获取data字段数据、参数信息、nonce数据以及合约地址,首先将参数编码成abi格式,随后将这些数据组织成json数据串形式,返回给通信模块。具体地,对每一个确定的文件fsecret与对应的操作op,例如文件上传操作,将上述字段分别替代为具体的数据。例如,将合约地址替换为cfaddress,将data字段数据替换为函数funcfget的abi编码。密码模块:用于各类数据的加密与解密。该模块在顶层实现模块中被调用,用于生成文件密钥、文件加密解密与文件密钥的加密和解密。例如,对文件fsecret来说,需要生成对应的文件密钥kf,加密文件得到文件密文加密文件密钥得到密钥密文enck=encpk(kf);需要解密密钥密文得到密钥kf=decsk(enck)=decsk(encpk(kf)),解密文件密文得到文件明文可选地,本实施例中使用aes-256作为生成文件密钥、加密文件的密码算法,使用rsa-2048作为生成非对称密钥对,加密解密文件密钥的算法。通信模块:该模块完成与以太坊、云的交互。通过构造http包向以太坊发送远程调用请求,并得到以太坊的http包作为回应。该模块需要调用数据编码模块,来构造与以太坊交互的json格式数据并解析以太坊返回的json格式数据。该模块被顶层实现模块调用,具体地,与以太坊的交互主要包括交易发起:创建智能合约的交易、调用智能合约的交易等以及账户列表获取等。使用以太坊预留的jsonapi进行调用。具体地,对特定的文件fsecret,该模块运作方式如步骤101、102、103、104所述。该模块使用客户在云服务提供商设置的访问密钥以及云服务提供商提供的存储服务sdk来访问云存储服务器中的文件。本地存储管理模块:完成本地文件的管理,包括机密文件的读取与保存,以及本地存储的文件名与交易哈希的对应文件的维护等。具体地,对特定文件fsecret,文件名与交易哈希对应关系获取如步骤101中所述,得到该对应关系后,本模块在关系维护文件中新增项[fname,hfdeploy]。文件更新时,由于合约地址不变,因此无需对关系维护文件中的项做更新操作。文件删除时,需要在关系维护文件中删除项[fname,hfdeploy]。当判断特定文件fsecret′是否被外包时,也可以通过查询关系维护文件中是否存在项[fname′,hfdeploy′]来实现。顶层实现模块调用密码模块、与以太坊的通信模块、本地存储管理模块来实现顶层功能:合约部署、文件上传、文件下载、文件删除与删除验证五个部分。合约部署功能模块主要完成步骤101所述内容;文件上传部分完成步骤102所述内容,即客户端数据的外包;文件下载部分完成步骤103所述内容,即文件原文恢复;文件删除部分完成步骤104所述内容,即删除文件密钥密文与云上的文件密文;步骤105的删除验证由删除验证部分完成,这部分分别调用对应合约的各个函数,以太坊返回调用错误则证明验证成功。智能合约设计实现部分:主要完成智能合约内部逻辑设置,包括数据写入函数、数据读取函数、数据删除函数的设计与实现,实现文件密钥密文在合约中的存储与管理,以及文件密钥密文的删除与合约自毁,并提供简单的访问控制。具体地,对于合约cf,其中包含数据管理函数funcfget、funcfset、funcfdel。对funcfget,当函数被调用,使用传入的参数覆盖byte32[8]空间中存在的原参数。对funcfset,返回byte32[8]中的数据enck。对funcfdel,首先使用无关参数覆盖byte32[8]空间中存在的原数据,随后触发合约自毁函数。对上述的每一个函数,都添加访问控制函数require,在执行前判断合约调用者地址address是否等于合约创建者地址msg.sender,只有二者相同,才允许函数调用。本申请还在实验环境下测试了本申请中提供的云上数据可信删除系统,如图5所示,是本系统在私链下的文件上传与下载时间趋势图。可以看到,相较传统云存储方式,本实施例保证了云上数据的可信删除,但并未大幅影响文件传输性能。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1