贾朋飞,丁锰,张玉龙,王兴
(中国人民公安大学,北京100032)
随着计算机技术的不断发展,互联网已经渗透到生活中的各个领域。当互联网方便了我们生活的同时,各种各样的依托于互联网的犯罪也层出不穷,越来越多的证据以电子证据的形式出现在诉讼中。不同的电子证据有着不同的形成方式,但是普遍存在易篡改、易消失、技术依赖性强等特点,与传统的实物证据相比较,电子证据的合法性、真实性、关联性的司法认定难度更大[1]。传统的电子证据存储方式已经不能适应现代科技快速发展的节奏,区块链的去中心化、高冗余存储、隐私保护和高安全性等特点使其特别适合保护和存储重要的隐私数据,以避免因权限管理不当或中心机构遭受黑客攻击而造成大规模的数据泄露或丢失[2]。
当前社会上的电子证据保全主要采取公证的形式,保全的方式包括:打印、备份、拷贝、拍摄等[3],保全的主要流程如图1 所示。
综上可以看出传统的电子证据公证的流程比较复杂而且证据保全的成本较高。由于电子证据存在易变更、易消失的特点,传统的电子证据保存程序需要复杂的流程、一定的时间,有可能在证据保存流程时间内,网络上的证据已经消失,所以迫切需要一种即时性的电子证据存储方式来满足当前互联网在线取证的需要。
图1
区块链(Block Chain)是一种使用密码学方法来保证传输和访问安全,由多方共同维护的采用分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的不可伪造、不可篡改的分布式数据存储系统[4]。区块链的关键技术主要包括以下四部分。
P2P(Peer-to-Peer)技术就是对等网络技术,又称点对点技术,是无中心化服务器并且依靠节点(Peers)传递信息的互联网体系。与传统的Server/Client 模式不同的是在P2P 网络中各节点同时具备客户端和服务器的双重属性,各个不同节点可以使用服务也可以对网络中其他节点提供服务[5]。传统模式下服务器的负载依靠P2P 技术能够成功分配给网络中所有节点,是分布式理论的成功拓展。如图2 所示,是一个完整的P2P 网络结构模型图。
图2
数字签名(Digital Signature)技术是使用非对称加密技术和数字摘要(Digital Digest)技术来鉴别数据来源的真实性和数据的完整性的方法[6]。
共识机制通过制定达成共识的规则实现节点选举、数据一致性和数据同步控制等功能从而协调区块链全网中各节点数据的一致性。当前的共识机制有实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)、权益证明(Proof of Stake,PoS)、工作量证明(Proof of Work,PoW)、授权权益证明(Delegated Proof of Stake,DPoS)等[7]。
在普通链表中的区块包括要存储的数据和一个可以指向上一个区块的指针。而在区块链当中,指针被置换为哈希指针,在哈希指针中不仅存储上一个数据块的地址,也包括上一个数据块中记录数据的数字摘要[8]。区块头(Block Header)中包括上一个区块哈希值、难度值、Merkle Tree 根节点、时间戳、版本号、随机数而区块体(Block Body)包括本区块所记录的所有的交易记录。
本系统基础架构分为4 层,包括数据层、网络层、共识层、应用层。每层分别完成一项核心功能,各层之间互相配合构建一个去中心化的信任机制,实现互联网电子证据的在线实时、安全存储。
网络中的节点分为管理节点和普通节点。普通用户可以通过节点认证协议加入网络,即节点在加入网络时先要向管理节点进行实名制注册成为本系统的普通节点。普通节点可以将自己认为需要进行存证的网页上传到系统进行存证,但是不参与系统的维护和区块数据的认证。管理节点主要由公安机关、检察院、法院等司法机关和公证机构组成。管理节点主要负责网络的维护以及对证据进行认证。在用户注册的过程中,系统会在用户的本地产生一对公开密钥和私有密钥同时管理节点将注册节点的相关认证信息发布到全网络中,以便其他节点在达成共识过程中对节点信息进行验证。当普通用户需要上传证据时,只需写入需要存证的网页的网址,系统会根据用户提供的网址提取网页的源代码和服务器数据等相关内容,并对网页页面进行截屏和加盖时间戳,然后利用哈希算法对数据提取数字摘要,最后将系统提取到的数据和数字摘要使用用户的私有密钥进行加密形成数字签名发送给系统的议长节点。议长节点是根据系统的共识机制从管理节点中选取出来,未被选中的节点称为议员节点。议长节点在收到普通节点传来的数据后会将该数据广播给网络中的议员节点,议员节点会对议长节点发来的数据的真实性进行验证并将验证结果反馈给议长节点,当议长节点收到的反馈数量满足系统要求后,议长节点就将所有数据打包进该区块,并将该区块加入到区块链中。
系统首先建立的一个起始节点是“创世区块”,之后在同样规则下创建的规格相同的区块通过一个链式的结构依次相连组成一条主链条。各数据区块中包括区块头和区块体,其中区块头中包括指向上一个区块的哈希指针、时间戳、协议版本、本区块体所包括数据的根哈希值等内容,而区块体中则包括一段时间内所有节点提交的通过认证的数据和这些数据的摘要信息。在区块体中数据以Merkle Tree 的形式存储普通节点只存储区块头所包括的内容,而管理节点即存储区块头的数据又存储区块体中的数据。
在一段时间内每一个用户向管理节点发送的需要存证的数据都必须通过哈希函数计算其数字摘要,然后才会将其加入Merkle Tree 的数据结构中。本系统的哈希函数采用SHA2-256 算法[9]。系统的根哈希值由该区块内存储的所有用户节点提交的存证文件共同决定。当用户需要验证自己提供的证据是否被区块接纳时,管理节点会根据用户提供数据在Merkle Tree 中的位置,向用户提供由用户节点到根哈希值计算路径中的其余哈希值,用户根据系统提供的哈希值和自己要上传到系统的文件的哈希值按照计算路径,最终计算出该区块的根哈希值,如果计算出的根哈希值与区块头中存储的根哈希值一致,则证明用户所提供数据已经被区块接受。
如果某个恶意用户想要修改第N 个区块的数据,则第N+1 个区块中所记录的哈希指针便不能与第N个区块中的数据相匹配,这样系统便能检测出第N 个区块的数据已经被篡改。当然恶意用户还可以继续更改第N+1 个区块的哈希指针来掩盖这次篡改,但是它后面的区块的哈希指针又无法与其相匹配,所以如果恶意用户如果想篡改区块链中某一区块中存储的数据而不被发现就必须将其后所有区块的数据一起进行更改,由于区块链是分布式的结构,每一个节点对应不同的用户,所以说在区块链当中某个恶意用户想要修改数据而不被发现几乎是不可能的。
网络层包括P2P 组网机制和数据传播机制主要通过P2P 技术实现分布式网络的机制。管理节点保存所有区块中完整的区块链数据,并通过实时参与区块数据的校验和增加新的区块来动态更新主链实现对整个系统的监督和管理。普通节点可以对互联网中的非法信息进行存证,并可以查询和下载自己所上传信息是否被系统所接受,但是不参与系统管理。普通用户可以注册成为普通节点,而司法机关、公证机构等可以注册成为管理节点参与整个系统的管理和维护,并通过系统中的数据验证机制实现证据在各部门之间的共享。网络结构如图3 所示。
图3
共识层主要利用共识算法让高度分散的节点在去中心化的区块链网络中针对区块数据的真实性达成共识。系统根据管理节点的内存和计算状态,随机选取议长节点,未被选取的管理节点为议员节点。议长节点将需要写入区块的信息广播给所有议员节点,议员节点收到信息后会对信息进行验证当议长节点收到2/3 的议员节点的肯定反馈后,将信息写入下一个区块。当议员节点收到议长节点发送的数据后,首先利用用户的公开密钥对用户的数字签名进行解密,验证数据来源的真实性,并利用系统提供的SHA2-256 函数计算用户提供数据的数字摘要与用户提供的数字摘要是否一致从而判断文件在传输过程中是否被篡改验证用户所传文件的真实性。
本系统的应用层写入基于Scrapy 框架编写的网络爬虫,通过爬虫脚本获取用户提供的非法网页的源代码和服务器相关信息并通过WebKit 对网页进行截屏然后加入系统时间戳(Time Stamp),系统会将将保存的内容用SHA2-256 算法计算出文件的数字摘要,然后将此数字摘要和系统获取的文件作为区块链内容发送给管理节点进行审核。
安全存证和提高取证效率是区块链技术应用在电子证据领域的两个主要优势。传统的电子证据存储方式会导致文件在传输或者备份等过程中存在被篡改或丢失的风险。在电子证据生成时被赋予时间戳,同时采用非对称加密算法对电子证据进行加密保障传输安全,在电子证据上链时通过比对数据的哈希值来验证证据真实性,这些措施充分保障了证据真实性和安全性。在取证环节中,由于区块链存证方式为分布式存储,允许审计机构、仲裁机构、司法机构等多个节点共享电子证据,理论上可以实现数据的秒级传输,降低取证成本,简化仲裁流程,提高效率。