一种区块链的云计算电子取证模型
黄晓芳, 徐蕾, 杨茜     
西南科技大学 计算机科学与技术学院, 四川 绵阳 621010
摘要

提出了一种区块链的云计算电子取证模型,设计基于Merkle Tree的证据保全及改进的共识算法,实现云计算环境下的去中心化电子取证,防止任何参与方,包括取证调查者、云服务提供商、用户等对取证信息的共谋篡改.实验结果表明,该模型能够有效地对电子证据信息进行保全和验证,保障取证数据的完整性和时效性.

关键词: 电子取证     区块链     去中心化     共识算法    
中图分类号:TP393 文献标志码:A 文章编号:1007-5321(2017)06-0120-05 DOI:10.13190/j.jbupt.2017-079
Blockchain Model of Cloud Forensics
HUANG Xiao-fang, XU Lei, YANG Xi     
School of Computer Science and Technology, Southwest University of Science and Technology, Sichuan Mianyang 621010, China
Abstract

An electronic forensics model of cloud computing based on blockchain was proposed, in which, an evidence prevention scheme based on Merkle Tree and an improved consensus algorithm were designed to implement the decentralized electronic forensics under cloud computing environment. This model can prevent any involved party-forensic investigators, cloud service providers, users, etc.-from colluding to tamper with the digital evidence. Experiments show that the model can effectively preserve and verify the electronic evidence, and guarantee the integrity and timeliness of the data.

Key words: electronic forensics     blockchain     decentralization     consensus algorithm    

计算机取证是在1991年的美国国际计算机专家会议上(IACIS, international association of computer specialists)被首次提出[1],传统的取证模式主要是通过具体的设备和文件对取证对象进行隔离和保护,整个取证过程基本上在一个静止的封闭空间中进行.而在云计算环境下,多个用户共用分布式异构虚拟计算资源,产生各种临时数据和文件访问记录,因此云计算电子证据取证的实现与传统的取证模式具有显著区别[2].在“云”中进行取证调查时无法对物理资源进行封闭控制,很难保证参与方不会篡改原有信息.针对以上问题,提出基于区块链技术的云计算电子取证模型,该模型基于Merkle Tree的证据保全及改进的共识算法实现证据保全的去中心化,防止任何参与方的共谋,并且在区块中的电子记录上绑定用户信息和时间戳,实现云计算上的电子证据可追溯,保证取证数据的真实性、完整性、可靠性.

1 相关工作 1.1 云取证技术

现有的云取证模型主要集中在云环境日志取证方面,Shams Zawoad[3]等从云服务提供商角度出发,设计了一种安全的记录即服务模型.谢亚龙[4]等基于基础设施即服务提出一种新的云模型下的取证框架,在虚拟机中收集证据. Ting Sang[5]提出在云端以日志的形式记录用户的操作信息,将日志同步到客户端. Hale[6]指出利用亚马逊云驱动进行取证分析可能造成数据篡改,探讨通过文件雕复技术进行变更数据的恢复. Shah[7]等提出云取证3层架构. Nanda[8]等与法律调查团队合作提出一种在云环境中支持自动化取证分析的创新3层取证.

上述研究中,在“云”中进行取证时主要依靠云服务提供者完成,调查者不能保证所获取信息的完整性和真实性,特别是在云服务提供者不诚实的情况下,很难防止一方或双方的共谋篡改.

1.2 区块链技术

区块链即通过去中心化的方式集体维护一个可靠数据库的技术方案[9].该方案消息传输验证的流程如图 1所示.

图 1 区块链的工作原理
1.3 Merkle树概念

Merkle树[10]结构是Ralph Merkle所创造用来同步数据一致性的算法.笔者采用Merkle树的方法记录区块内的交易信息数据,如果树的叶子节点加入一个伪造的恶意记录,则该节点所引起的改动将导致上层节点以及更上层节点的改动,最终导致根节点以及区块哈希的改动.当在云计算环境中进行比对或验证时,Merkle树很容易进行定位.

2 基于区块链的云计算取证模型 2.1 云计算取证模型及节点管理协议设计

本模型中参与的各个交易商可以作为取证节点负责向全网提供取证服务,并维护全局的电子证据库,系统架构如图 2所示.其中,所有的管理节点、普通节点统称为计算节点. 图 3为节点认证协议流程图.

图 2 云计算取证系统架构设计

图 3 节点认证协议流程
2.2 基于Merkle Tree的证据保全算法设计

基于区块链的云取证系统中,对证据信息需要经过一定的运算形成一种数据结构,每一个证据区块记录了4个内容:区块ID;证据区块头部信息;证据详情;区块保全证据总数.系统中区块生成的正常流程如图 4所示.

图 4 区块生成流程
2.3 证据区块共识算法设计

比特币区块链网络中常用的共识算法都是为了解决区块链网络中存在的拜占庭问题而提出的解决办法,如工作量证明(PoW, Proof of Work)[11]、股权证明(PoS, Proof of Stake)[12]、股份授权证明(Dpos, Delegated prorf of stake)[13]等.但是这些算法由于计算时间较长在取证系统中并不适用.因此笔者基于1999年由Castro和Liskov提出的实用拜占庭容错算法(PBFT, practical Byzantine fault tolerance)[14]及由张铮文[15]在2016年提出的一种基于区块链的拜占庭容错算法基础上,提出一种改进的高效共识算法.

2.3.1 算法基础

该算法中,只要参与共识计算的错误节点不超过f=(n-1)/3,就能保证云取证系统正常运行,其中n=|R|表示全网中参与共识节点的总数,R是共识节点的集合,f是指网络中允许错误节点的最大数.其中主要符号及其含义如表 1所示.

表 1 符号标识及其含义

系统中,一次共识从开始到结束所使用的数据的集合被称为视图,每一个视图均有一个编号v,编号从0开始,如果在当前视图中节点无法达成共识则需更换视图,此时编号v逐渐递增,直到共识达成.一旦产生新的区块,则新一轮共识立即开启,并置视图编号v=0.

2.3.2 改进的共识算法流程

假设云取证系统中产生区块的时间为T,则在正常情况下,用户由某一节点向取证系统中传输证据信息,算法流程如图 5所示.

图 5 共识算法流程

1) 管理节点先检测网络中存活节点是否符合触发共识算法的要求,即存活节点数量大于等于n-f.若符合要求,则管理节点计算出议长节点P,同时收到用户证据信息的节点向全网广播证据信息.若不符合要求,则保全网络等待新的节点加入,同时,接收到用户证据信息的节点向网络中广播证据信息;

2) 全网节点接收网络中广播的证据信息,并记录在内存;

3) 议长在经过时间t后,发送提案〈PerpareRequest, h, v, P, block, 〈block〉σP〉;

4) 议员在接收到提案后,对提案进行验证,验证通过则发送〈PerpareResponse, h, v, i, block, 〈block〉σi〉, 其中验证规则为:一方面,在参与共识算法的节点中,至少要有n-f个具有相同的初始状态,即全网中的节点i要具有相同的区块高度h和视图编号v.系统中通过区块同步达到h的一致性,通过视图更换达到v的一致性;另一方面,议员i自身生成的区块信息与其他议员生成的区块信息、议长生成的区块信息相互进行验证;

5) 网络中任意节点i包括管理节点在收到至少n-f个〈block〉σi后,共识达成并发布完整的区块;

6) 任意节点在将区块加入区块链后,将加入区块的证据信息从缓存中清除,并开始下一轮共识.

2.3.3 视图更换规则

在共识算法流程中涉及视图更换,其规则如下.

1) 当节点i在接收到议长提议后,提议验证不通过,则申请更换视图.当管理节点收到至少n-f个来自不同节点的更换请求后,则执行更换请求的操作.

2) 当网络中自议长广播提案后,经过2v+1t的时间间隔后仍未达成共识,则直接更换视图.

3) 更换视图的流程如下:

① 令k=1, vk=v+k

② 节点i广播视图更换请求〈ChangeView, h, v, i, vk〉;

③ 当管理节点接收到至少n-f个来自不同节点i的相同vk后,视图更换达成,令vvk,并开始共识流程;

④ 若在经过2v+1t时间间隔后,共识仍未达成,则k递增并回到第②步.

2.4 系统安全性分析与证明

定理1 如果其中一个节点将取证信息篡改,取证数据区块的信息将会把该节点取证数据从链中删除,防止取证区块链中的数据被篡改.

所有的取证信息都是按照Merkle树的结构组织起来,假设区块中某一个取证信息发生改变,那么其Hash值也会变化,最终区块的ID就会随之改变,因此这样存储就起到了防止数据被篡改的作用.

定理2 在区块链计算过程中,加入管理节点及节点认证机制,防止了节点的欺骗和共谋.

通过节点认证机制,管理节点将注册节点的相关认证信息发布到全网络中.管理节点经过分区计算节点进行选举,而且如果管理节点“不作为”则会被重新选举替换掉,因此起到防止恶意节点联合共谋、保证参与交易计算节点的可信及数目、确定共识时节点临界值的作用.

定理3 对于由n个共识节点组成的共识网络,提供f=(n-1)/3的容错能力,此算法具有安全性和可用性,且适用于任何的网络环境[16].

因为在节点请求的信息中包含了发送者的签名,恶意节点将无法对请求进行伪造,它只能试图将系统的状态回退到过去,从而使系统发生“分叉”,即在系统中有可能造成在区块链的某一高度产生2条不同的链.

假设在共识网络中,将所有的共识节点分为3个部分,分别为R1R2F,即R=R1R2F,且R1R2=Ø,R1F=Ø.假设R1R2是由诚实的共识节点组成的集合,且节点只能与各自集合内的节点进行通信;F是由恶意节点组成的集合,且F中的节点可以与网络中的任一节点进行通信.

F若想使系统发生“分叉”,则只需在与R1达成共识并发布区块后,在不通知R2的情况下与之达成第2次共识,且“撤销”与R1的共识即可.

若要满足以上条件,则需满足:|R1|+|F|≥n-f,且|R2|+|F|≥n-f.当|F|=f时是最坏的情况,即恶意节点的数量达到系统中所能容忍的最大值,以上关系则变为|R1|≥n-2f,|R2|+|F|≥n-2f.两式相加可得|R1|+|R2|≥2n-4f,化简可得n≤3f.由已知$f = \frac{{n - 1}}{3}$可得:nn-1,与事实相矛盾,因此可以证明系统在容错范围内无法被“分叉”,也证明了此系统可以保证在网络中每个节点均共同维护唯一一条公认的证据链.

3 实验与分析

针对以上算法的实现,开发并搭建了云取证中心进行模拟测试,对所提出的模型进行验证,在验证时,设置的区块生成时间为60 s,分别选择了不同时间段的保全数据,本系统的电子数据信息在设置的区块生成时间及超时时间(2v+1t)内将其加入区块链进行了保全.测试过程中的评价指标含义如表 2所示.

表 2 测试指标含义

采用JMeter分别模拟200、400、600、800、1 000个虚拟用户分别进行测试,并记录测试参数.测试结果如图 6所示.

图 6 保全验证负载测试

通过以上压力测试结果可知,该系统能够无差错地响应用户的请求,效率较高,但是在大量并发的情况下还需要进一步优化.

4 结束语

为了避免参与方的共谋篡改,实现去中心化的云计算电子取证模型,提出基于Merkle Tree的证据保全及改进的共识算法,降低共识区块产生的时间.实验在小的节点网络环境中进行,表明该模型能保障取证数据的完整性和时效性,但算法效率还需要进一步优化,以满足大量用户的并发请求.

参考文献
[1] Kaplan R E. Computer forensics-what is it good for?[J]. Journal of Digital Forensic Practice, 2008, 2(2): 57–61. doi: 10.1080/15567280801958464
[2] 何晓行, 王剑虹. 云计算环境下的取证问题研究[J]. 计算机科学, 2012(9): 105–108.
He Xiaoxing, Wang Jianhong. Research on evidence collection under cloud computing environment[J]. Computer Science, 2012(9): 105–108.
[3] Zawoad S, Dutta A K, Hasan R. SecLaaS: secure logging-as-a-service for cloud forensics[C]//Proceedings of the 8th ACM SIGSAC Symposium on Information, Computer and Communications Security. Hangzhou: ACM, 2013: 219-230.
[4] 谢亚龙, 丁丽萍, 林渝淇, 等. ICFF:一种IaaS模式下的云取证框架[J]. 通信学报, 2013, 34(5): 200–206.
Xie Yalong, Ding Liping, Lin Yuqi, et al. ICFF:a cloud forensics framework under the IaaS model[J]. Journal on Communications, 2013, 34(5): 200–206.
[5] Sang T. A log based approach to make digital forensics easier on cloud computing[C]//Intelligent System Design and Engineering Applications (ISDEA), 2013 Third International Conference on. Hong Kong: IEEE, 2013: 91-94.
[6] Hale J S. Amazon cloud drive forensic analysis[J]. Digital Investigation, 2013, 10(3): 259–265. doi: 10.1016/j.diin.2013.04.006
[7] Shah J J, Malik L G. An approach towards digital forensic framework for cloud[C]//Advance Computing Conference (IACC), 2014 IEEE International. Gurgaon: IEEE, 2014: 798-801.
[8] Nanda S, Hansen R A. Forensics as a service: three-tier architecture for cloud based forensic analysis[C]//Parallel and Distributed Computing (ISPDC), 201615th International Symposium on. Fuzhou: IEEE, 2016: 178-183.
[9] Nakamoto S. Bitcoin:a peer-to-peer electronic cash system[J]. Consulted, 2009: 1–9.
[10] Merkle R C. A certified digital signature[C]//Conference on the Theory and Application of Cryptology. Springer, New York: [s. n. ], 1989: 218-238.
[11] Lamport L, Shostak R, Pease M. The Byzantine generals problem[J]. ACM Transactions on Programming Languages and Systems (TOPLAS), 1982, 4(3): 382–401. doi: 10.1145/357172.357176
[12] Fischer M J. The consensus problem in unreliable distributed systems (a brief survey)[C]//International Conference on Fundamentals of Computation Theory. [S. l. ]: Springer Berlin Heidelberg, 1983: 127-140.
[13] Chandra T D, Toueg S. Unreliable failure detectors for reliable distributed systems[J]. Journal of the ACM (JACM), 1996, 43(2): 225–267. doi: 10.1145/226643.226647
[14] Castro M, Liskov B. Practical Byzantine fault tolerance[C]//Proceedings of the 3rd Symposium on Operating Systems Design and Implementation. New Orleans: [s. n. ], 1999: 173-186.
[15] 张铮文. 一种用于区块链的拜占庭容错算法[EB/OL]. 2016[2017-03-11]. http://docs.neo.org/zh-cn/node/consensus/whitepaper.html .
[16] Karame G. On the security and scalability of Bitcoin's blockchain[C]//Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. Vienna: ACM, 2016: 1861-1862.