基于区块链技术的数据溯源与取证模型设计

2023-11-11 02:30孟彩霞
中国人民警察大学学报 2023年10期
关键词:哈希合约共识

孟彩霞

铁道警察学院 图像与网络侦查系,河南 郑州 450053

0 引言

区块链技术与密码算法是信息通信领域的重要研究方向,由于区块链具有去中心化、不可篡改等特点,在电子数据取证方面有着独特优势[1]。在司法认证制度改革、利用计算机犯罪案件日益增多的背景下,利用区块链技术实现电子数据取证有望得到更广泛的应用。电子数据储存于载体内,它是无形的,其内容具有关联性,可以用作量刑证据。然而,电子数据在正常情况下无法直接阅读,如果没有可以查看电子数据的载体,就难以关联出案件情况,提取电子数据的难度很高[2]。目前,国内对数据溯源的研究大多在理论层面和审查数据层面,国外对数据可追溯性的研究主要集中在可追溯性模型、可追溯性存储、可追溯性应用以及可追溯性数据的安全性等方面[3]。何蒲等[4]提出将具有唯一标识的数据添加到区块链中,解决现有数据溯源的难题,但并没有实现最终方案。现在较为流行的数据溯源模型是OPM 和PROV 模型,这些模型可移植性强,可以在不同场景下实现数据溯源[1,4]。针对传统电子数据存在集中存储、易被修改等问题,使用PROV 数据溯源模型,利用区块链去中心化的特点与电子数据取证相结合,研究区块链监测和溯源取证的关键技术。

1 区块链技术

1.1 密码学技术

区块链基于密码学建立多方间的信任,区块链的可信正是因为有密码学技术作支持。在区块链技术中涉及很多加密算法,包括哈希算法、对称加密算法、非对称加密算法等。哈希算法是一种常见的单向加密算法,其功能是提取数据的指纹信息作为数据内容的唯一标识符对数据进行校验[5]。对称加密技术是采用同一个混淆因子,然后使用混淆算法对输入数据进行混淆,得到加密后的数据,之后采用相同的混淆因子进行逆运算,可以得到原始输入值。非对称密码技术[6]是利用一对公钥和私钥对数据进行加密和解密。公钥与私钥一起出现,数据拥有者可以利用公钥对数据进行加密,只有使用与公钥相对应的私钥才能成功解密。

在区块链中,区块不直接保存节点的交易信息,只保存交易的哈希值,如果有节点想要验证某个交易是否合法,可以验证区块中存储的哈希值,使区块链具有防篡改的特性。时间戳是对文件创建、修改的时间进行记录,能够证明一份文件的存储、创建、修改发生于哪个时间点[7]。在生成区块的过程中形成时间戳并写入区块头中,可以让其他节点对交易进行验证,实现整个区块链的可信,保证区块链数据的不可篡改和不可伪造。

1.2 Merkle Tree

在分布式系统中经常使用一种数据结构Merkle Tree(默克尔树),这是一种哈希二叉树,能校验数据的完整性[8]。Merkle Tree 由一个根节点、若干子节点倒置组成,可用于验证区块链中存储、处理数据的真实性和可靠性。在构造Merkle Tree 时,首先要计算写入区块链交易的哈希值,通常选用SHA-256 等哈希算法传递到根哈希值。将计算的交易哈希值进行两两组合,由此计算出上一层哈希值,然后不断重复组合计算,直到算出根哈希值。这种结构使得产生的区块头部中只包含根哈希值,不需要把区块下所有交易的哈希值写入区块中,提高了区块链的效率。在树上交易产生的任何变动,都会传递到根节点,根节点的哈希值验证了底层所有数据的完整性和一致性。因此,一旦发现交易数据被篡改,沿着Merkle Tree 节点哈希值的传递,最多通过运行时间O(lgn)即可快速定位实际发生改变的数据。Merkle Tree能快速比对大量数据,快速定位篡改位置。

1.3 共识机制

共识机制是区块链的核心组成要素,定义了区块链如何工作。目前常用的共识机制包括工作量证明、权益证明、委托权益证明等[9]。工作量证明(PoW共识机制)是指通过完成一定计算量工作来证明某个节点不是恶意节点,从而起到维护区块链的作用。PoW 机制每次交易都能被快速验证,系统承担了大量的节点,导致用户不能私自篡改交易记录,从而自觉遵守规则。权益证明(PoS 共识机制)是指持有权益多者才有资格去证明,也就是账本是由持币最多者去记录。与PoW 共识机制相比,PoS 的出块速度更快,从根本上解决了大量运算带来的资源耗费问题,并且PoS 共识机制还排除了利益无关者对账本的干扰,使整个系统更加安全[10]。委托权益证明(DPoS 共识机制)是一种基于投票选举的共识算法,每个持有权益者都可以为其信任的代理人投票,代理人负责验证交易并为这些交易创建区块,在完成职责的同时可以获得一定收益。

2 区块链溯源模型

2.1 区块链架构

一般情况下区块链架构有六层,其架构模型如图1 所示。区块链中各个层都有不同的功能,任何一个区块链都必须包含共识层、网络层、数据层,而另外三层开发者可以根据需求进行开发,但区块链的整个架构都依照这个结构进行开发。数据层负责封装区块,生成链结构;网络层主要负责区块链的P2P 网络以及不同区块链的传播验证机制;共识层则封装节点之间的各类共识机制,保证数据进入区块链后的一致性,防止恶意节点摧毁区块链。

图1 区块链基础架构

2.2 开放溯源模型OPM

开放溯源模型OPM 是在首届国际来源与注释研讨会上提出的[11],目的是提供可用来交换的溯源信息,该模型支持的范围很广,可以应用到任何需要数据溯源的地方。在这个模型中,溯源记录是一个有方向但是不会形成环状的图形,代理、过程和工件是模型的节点。虽然OPM 可以应用于很多场景,但在实际操作中,实现OPM 的过程有一定难度,主要表现为一些专业术语和用法介绍得比较模糊,并且一些概念设计不恰当。

2.3 PROV溯源模型

PROV 模型融合了国内外各个领域数据溯源描述模型的共性描述方法,具有较好的通用性和灵活性。PROV 模型中包含类型和关系两个组件。类型是由实体、活动和代理构成:实体主要记录溯源信息的数据描述;活动是作用在实体的某种操作,例如实体的产生、转换或修改;代理是溯源所关注的实体质量及可信度等特性。关系是连接各个构件的纽带,构件与构件之间需要通过关系产生关联,PROV模型中通过引入上位构件和下位构件这两个概念来描述构件的主客体关系。

本文选择PROV 溯源模型,可以保证溯源数据一旦上传到区块链中就不能被修改,实现对数据的溯源,主要原因有两点:一是PROV 溯源模型与OPM模型相同,适用于不同的场景,可移植性强,可以根据需求使用该模型;二是PROV 溯源模型具有较完善的参考文档和开源代码,对新手比较友好,方便使用与借鉴。

3 基于区块链的溯源与取证模型设计

3.1 数据溯源模型设计

3.1.1 数据溯源模型构建

数据溯源模型的核心是保证数据在传输过程中不被篡改,要实现可靠的数据溯源,可信任的存储方式十分关键,应确保存储的数据不会发生任何问题以及数据校验不会被恶意控制。基于区块链监测的溯源取证技术主要是解决原始电子证据的中心化存储、易被篡改等问题。本文采用PROV 数据溯源模型实现数据溯源,该模型不仅能让溯源数据不被随意篡改,保证数据可靠性,还能提供数据的校验功能,让各个节点向区块链发送需要查询的数据,并对数据进行验证。这些功能主要通过轻节点和全节点来实现。从功能实现角度,该模型的功能模块划分如图2 所示。根据上述功能模块建立的溯源数据模型如图3所示。

图2 溯源模型功能模块

图3 溯源数据模型

在该数据模型中,所有节点对数据进行的增、删、查、改都会记录到区块链中,而其他节点在对数据进行校验时,可以向区块链发送请求来验证数据,从而形成溯源链,如图4 所示。随着区块链的不断扩展增长,数据在校验后存储到区块链上,所有节点可以随时校验数据,验证数据的完整性,便于溯源。

3.1.2 基于数据溯源的智能合约

智能合约是存储在区块链上的代码,当区块链发生交易时,就会触发智能合约,合约对交易进行安全检查,防止恶意节点的存在,智能合约为数据的传输和存储提供了一种安全可靠的机制。开发人员编写的代码程序都是应用在合约层,通过将PROV 数据溯源模型搭建好的溯源链加入智能合约中,进而运行到区块链上。本文将区块链上数据的溯源操作通过智能合约的方式进行编码,将其放入区块链中进行编译及部署应用,当溯源数据时会自动触发智能合约的功能。

智能合约的构建和执行可分为三步:(1)区块链的各个节点根据要求以及网络自身的需求设定一份标准化、可信任的智能合约;(2)将智能合约部署到区块链中,智能合约通过区块链的P2P 网络进行传播;(3)区块链中发生交易时,就会自动触发部署好的智能合约,从而实现制定智能合约时的需求。由于智能合约的可编程性,它可以封装区块链各个节点用户的复杂行为。所有操作都由区块链底层内置的智能合约系统自动完成,减少了人为干预,实现了数字自动化管理。

3.2 基于区块链的电子数据取证模型设计

3.2.1 模型设计

电子证据的不可篡改性包括数据的完整和保全,电子数据具有易篡改、可复制等性质,易被高技术犯罪分子篡改和伪造,难以成为量罪证据。电子证据若要成为量罪证据,须保证其可靠性。因此,需要在电子数据转移或修改的每个环节制作辅助证据,证明其可靠性。区块链技术通过对原始数据文件的哈希值在节点间的分布式记账,结合密码学技术,实现对原始电子证据的存证,降低了建立多方信任的成本[12]。据此构建了一种基于区块链的溯源取证模型,如图5所示。

图5 基于区块链的溯源取证模型

由于区块链技术的自身限制,如果上传的证据文件过大,可能导致无法有效将其存储在区块链中。因此,该模型将原始证据保存于数据库中,仅在区块链中存储证据的哈希值。同时,对访问者的身份进行限制,只允许那些经过授权的节点获取证据。该模型具体操作主要步骤如下:(1)利用取证技术固定电子证据并记入时间戳以及地理位置等信息;(2)对固定下来的电子证据使用公钥产生哈希摘要;(3)使用私钥进行签名;(4)利用共识机制选出记账节点;(5)记账节点对数据进行综合排序;(6)记账节点将排序后的数据打包到新区块中;(7)记账节点进行广播;(8)代表节点对广播区块的数据进行正确性验证,如果获得多数认可,则将新区块添加到主链上。

3.2.2 模型特点

基于区块链的取证模型不需要一个中心化的机构进行统一管理,不仅节省了大量人力物力,还具有更好的安全性和防篡改性。与此同时,办案人员不需要复杂的操作就能获得数据,并且这份数据安全性极高。当电子数据上链后,还可以对其进行溯源,检查证据的完整性。

3.3 模型验证

通过搭建区块链平台实现对电子数据溯源与取证的模型测试,采用sherrlock 0535 开发的二手交易平台的商品溯源智能合约来进行智能合约的二次编译,部署至本地已经搭建的区块链中,实现区块链监测与溯源取证。上传区块链前,需要对已经固定好的电子证据进行预处理,固定其哈希值、时间戳等信息。使用Python 的os、sys 等模块编写数据预处理脚本,使用该脚本即可实现电子数据镜像文件哈希值、时间戳等信息的自动计算。

3.3.1 区块链搭建

采用Python 语言搭建区块链,利用Python 语言的第三方库,如hashlib、datetime 等,无需针对时间戳技术、哈希算法等内容进行编写。区块链平台的代码架构如图6所示。

图6 区块链平台的代码架构

3.3.2 溯源与取证

将二次编译的智能合约放入搭建好的区块链网络中,并将电子数据取证模型应用于区块链中,实现区块链监测与溯源取证。本系统前端利用Web界面进行展示,采用MONSTRA CMS 的前端界面进行二次开发,系统内的数据采用Merkle Tree 的形式进行存储。固定好的电子数据通过文件上传页面进行上传,实现对数据的预处理,如图7所示。

图7 文件上传页面

将数据上传后可以浏览该文件的基本信息,结果如图8所示。

文件上传后,可以查看区块链的详情,发现新的区块产生,并生成了哈希值,在对电子数据进行溯源与取证时,可以比对区块链上的哈希值进行同一性认定,实现溯源与取证。区块链详情如图9所示。

图9 区块链详情

4 结束语

本文研究了基于区块链技术的溯源与取证模型设计。首先,分析区块链的核心架构,研究现有数据溯源与取证模型的特点,基于PROV 数据溯源模型进行优化与改进,设计了基于区块链的数据溯源模型。之后,根据电子数据取证的流程,设计了结合区块链技术的电子数据取证模型,最后进行了模型效果的验证与测试。结果表明,所有的运行功能实现以前端Web 页面的形式展示,可以比对区块链上的哈希值进行同一性认定,实现溯源与取证,方便办案人员使用。

猜你喜欢
哈希合约共识
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
商量出共识
基于OpenCV与均值哈希算法的人脸相似识别系统
基于维度分解的哈希多维快速流分类算法
别让“PX共识”在爆炸中瓦解
基于同态哈希函数的云数据完整性验证算法
一种基于Bigram二级哈希的中文索引结构
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望

中国人民警察大学学报2023年10期

中国人民警察大学学报的其它文章
王福柱副教授