APP下载

智慧水务数据的私有链监管方法

2022-03-02卿晓霞

计算机工程与应用 2022年4期
关键词:证明文件私钥算力

简 春,卿晓霞,王 波

1.重庆大学 计算机学院,重庆400044

2.重庆大学 土木工程学院,重庆400045

智慧水务是智慧城市的重要组成部分,也是城市水务事业发展、行业管理与服务提升的重要支撑和保障[1]。智慧水务系统是基于物联网、移动互联网、大数据、云计算和人工智能等新一代信息技术构建的综合监管平台,能实时感知、模拟计算、分析评估城市供排水系统以及水环境状况,全面支持水务系统生产、管理和服务,达到智慧决策的目的。在智慧水务系统中,无论是系统内部业务运行还是对外服务,都需要对各类数据进行统计分析,甚至实施特征提取、关联挖掘、深度学习等智能计算,以实现对系统状态的认知、智能诊断及预测,实现水务系统的功能。可以说,真实的数据是支撑智慧水务系统正确决策的重要基础保障。然而,由于各种原因,在实际系统运行中数据被篡改的情况时有发生。如何保证在系统运行过程中各环节数据不被或难以篡改,以及被篡改后能及时发现,是保障智慧水务系统数据安全必须研究解决的问题。本文引入区块链技术,被监管方实时地将智慧水务数据采集并生成哈希树,将哈希树存储至私有链中并由监管方实时签名。以此私有链作为智慧水务数据的证明文件,则可校验数据是否被篡改,进而达到数据监管的目的。

区块链(Blockchain)是集共识机制、P2P网络、加密算法等技术的分布式数据库,具有去中心化、防篡改、隐私性与匿名性等特点[2-3]。目前,区块链作为我国核心技术自主创新的重要突破口,已上升为国家战略,可在建设网络强国、发展数字经济、助力社会经济发展等方面发挥重要的支撑作用[4]。

2008 年,区块链1.0 最先应用于比特币(Bitcoin)。比特币采用非图灵完备语言,且可扩展性有限[5-6],无法应用于除虚拟货币之外的领域。区块链2.0由数字货币领域拓展至更广泛的金融领域,2013年,推出了以太坊(Ethereum)——用于开发和部署分布式应用的统一平台[7],支持智能合约与图灵完备语言。区块链3.0不仅可用于数字货币及金融领域,而且能够结合其他实体行业,实现不依赖第三方建立信任,从而减少信任成本,提高行业效率[8-9]。目前,区块链3.0 已在医疗、教育、车联网等领域开展了一些研究及应用[10-13],主要是应用区块链防篡改的特点来解决行业中的数据不可信问题。如焦通等[14]提出了一种基于区块链的数据库,该数据库分布地存储数据,有可查询、防篡改的特性,可以解决传统数据库易被篡改的问题,但由于所有数据均存储在链上,效率过低且不易落地实现;Bui等[15]提出了一种视频存档防篡改账本系统,该系统运用SHA256算法生成视频片段的摘要,并将摘要存储在以权威证明(proof of authority)作为共识算法的授权区块链分布式系统中,可检测出被篡改的视频片段;文献[16-18]分别从学分管理系统、数据可信存储、可信车联网等方面用区块链技术实现了数据的防篡改。然而,上述研究均采用公有链或联盟链(都需要维护一个多方参与的区块链网络),由于受制于共识算法性能的限制,公有链与联盟链多节点共同维护一个账本往往达不到实时性要求,且计算成本较高。

某城市依托国家首批16 个海绵城市试点项目,在智慧水务框架下,构建了一个海绵城市运行监管平台,从水生态、水环境、水资源和水安全等各方面对近20 km2示范区的海绵城市运行状况实施综合监测及预测、预警,并为城市智慧水务系统建设提供数据支撑。示范区内共安装了水文、水质、水位、土壤、热岛效应等各类传感器共300 余个。该系统中的传感器监测数据由被监管方(平台运维方或平台使用方)采集、存储,并对系统进行维护及应用,同时上报监管方(政府相关部门等)监督审查。在其他领域中,应用联盟链与公有链设计智能合约的方式,由于区块链网络有大量的通信成本和存储成本,往往性能不能满足大量时间序列数据的防篡改需求。针对该海绵城市运行监管平台的时间序列数据采样周期较短(现为5 min,周期可能会更短)、数据量较大(现为10万/天,数据量由传感器增加而增加)的特点,本文设计并实现一种基于内存难度的Cuckoo Cycle算法[19]的私有链监管方法。基于内存难度的Cuckoo Cycle 算法相较于基于计算难度的算法,篡改所需要的硬件成本更高。私有链较联盟链和公有链虽然安全性较低,但性能更高,计算成本更低[20-22]。在满足数据安全需求、篡改可验证的情况下,采用私有链作为时间序列数据证明文件的方式计算成本更低,也更便于部署应用。

1 相关算法概要

1.1 Cuckoo Cycle共识算法

Cuckoo Cycle 是一种基于图论的工作量证明(proof of work)算法。该算法能解决基于计算难度的工作量证明算法导致的大型矿场集中算力使区块链网络中心化的问题。Cuckoo Cycle 算法根据一个哈希值生成偶图G(N,M),N为图顶点数,M为图边数。算法要求在该图G中找到一个长为L的环[23]。如图1中,共有12 个节点、13 条边,其中(V1V4V5V8V9V6V1)为长度为6的环。

图1 偶图问题示意图Fig.1 Schematic diagram of bipartite graph problem

图1中,图顶点的数量小于2edgebits,图边的数量小于2nodebits。edgebits与nodebits决定了图的规模,其值越大,占用更大的内存,反之则占用更少的内存。生成的图边数与顶点数之比必须小于M/N。M/N决定了问题的难度,其值越大,越容易找到环。在CPU 算力足够大时,Cuckoo Cycle算法的计算性能受内存带宽约束。

1.2 椭圆曲线算法

椭圆曲线(elliptic curve)是式(1)的解集。

椭圆曲线是连续的,无法应用于加密。椭圆曲线算法(elliptic curve cryptography)实际上是有限域内的离散对数(discrete logarithm)问题[24]。椭圆曲线数字签名算法(elliptic curve digital signature algorithm)是基于椭圆曲线算法的数字签名算法[25]。设有公钥K、私钥k,而K=kG′(x,y),G′(x,y)为曲线上一点。通过k、G′(x,y)求得K是有限域的模乘,可以直接求得。已知K、G′(x,y)求k是离散对数问题,当点G′(x,y)数值很大时,难以在有效的时间破解[25]。基于椭圆曲线的离散对数问题较其他经典离散对数问题更难求解[26]。在数字签名应用的工业领域中,椭圆曲线仍是目前主要算法之一。

椭圆曲线在数字签名中的私钥加密算法由算法1描述。

算法1椭圆曲线私钥签名算法

椭圆曲线在数字签名中的公钥验证算法由算法2描述。

算法2椭圆曲线公钥验证算法

2 智慧水务系统数据监管方法研究

监管方法基本思路:监管方提供时间签名服务,被监管方对采集的每一段数据都需要向时间签名服务器请求签名,并实时生成数据对应的区块,然后存储至私有链中。监管方则通过区块的合法性和区块与数据的对应关系来高效检测数据是否被篡改。

2.1 区块结构设计

前述海绵城市运行监管平台运行时间序列监测数据如表1 所示,监测数据不仅类别多样,而且除了都具有时间点、传感器编号特征外,数据特征的数量与格式也不统一。因此将各采集点数据内容序列化为二进制流,故一个设备在一个时间点采集的数据为设备编号、时间戳、二进制流组合的三维数据。

表1 时间序列数据类别Table1 Kinds of time series data

根据上述数据特征,本文设计一种适宜的区块结构,如图2 所示。区块头包括上一区块头Hash 值、时间戳签名、时间戳、Nonce 值、时间序列数据起始时间戳、时间序列数据结束时间戳、哈希树根。区块体中存储每个传感器在该时间段内数据的索引值Key 和Hash 值。Key值对应一个传感器,Hash值对应该传感器在该时间段内采集的数据。两个子节点Key与Hash值的字节数据再哈希得到其父结点的Hash 值,不断迭代得到最终的哈希树根[25]。

图2 区块结构Fig.2 Block structure

定义共有n个传感器,则一个区块的大小bs由式(2)描述为:

其中,257 是区块头固定大小,36n为区块体大小,单位字节。私有链证明文件区块长度为l,则该私有链证明文件大小为ls字节,由式(3)描述为:

定义证明文件采样时间间隔为t,总共记录的时间为T,单位均为分。则私有链证明区块长度l为:

区块头中每一个字段的意义如表2所示。

表2 区块头字段意义表Table 2 Meaning of block head field

2.2 监管方法研究

监管方法分为时间签名服务、生成私有链证明文件、数据验证三部分。

2.2.1 时间签名服务

时间签名服务由监管方提供。如流程1、图3所示。

图3 时间签名流程图Fig.3 Process of time signatures

流程1时间签名服务流程

监管方提供时间签名服务以对时间序列数据实时性进行监管。时间戳签名保证了监管方提供的时间戳与哈希树根对应,不能被伪造。一个具有实时性的区块,其时间戳与时间序列结束时间戳的间隔必须在一定的时间内。若间隔超过该设定值,可认为数据没有被及时打包,存在被篡改的可能性。这使得被监管方实时篡改数据的时间非常有限。

2.2.2 私有链证明文件

被监管方负责实时对数据生成区块并存储到私有链中,如流程2、图4所示。

图4 私有链证明文件生成流程图Fig.4 Generation process of supporting document based on private blockchain

流程2生成私有链证明文件流程

被监管方需要实时对数据请求签名以保证数据的实时性,并执行Cuckoo Cycle算法保证一定的计算量。Cuckoo Cycle算法性能瓶颈取决于内存带宽,相对于工作量证明算法既保证了生成证明文件的计算难度,也更加节约计算成本。

2.2.3 数据验证

被监管方提供私有链证明文件与数据,监管方校验文件与数据是否对应,如流程3、图5所示。

图5 数据验证流程图Fig.5 Process of data validation

流程3数据验证流程

比对私有链证明文件,可检查数据被篡改的时间段、设备编号、数据的时间有效性、数据工作量证明以及区块是否成链。

2.3 智慧水务数据篡改可能性研究

研究篡改数据所需的时间成本、硬件成本以及能否被篡改,可分为监管方私钥未泄露与私钥泄露两种情况。

2.3.1 监管方私钥未泄露

(1)被监管方篡改实时数据

若被监管方篡改时间t1至时间t2之间的数据,数据打包最大时间限制为Δt,平均一个区块打包时间为tˉ,则要成功篡改数据,其数据被篡改的时间点td需满足式(5):

令Δt为一个满足网络延迟、数据处理有效延迟且人为难以篡改的时间量,既保证系统可正常运行,又可以防止人为难以在Δt时间内实时篡改数据。

(2)被监管方篡改历史数据

监管方保密私钥k,其签名s不可伪造,故区块的时间戳t不可伪造。篡改历史数据时,无法向时间戳服务器申请到小于t2+Δt的合法时间戳t,那么篡改数据后,无法保证区块的时间有效性。

2.3.2 监管方私钥泄露

监管方私钥泄露,被监管方可获取到监管方生成的合法签名,故区块能保证时间有效性,但可从篡改开始起在式(6)的时间tp内保证数据篡改可被验证。

要保证私有链证明文件与数据可被监管方审查,被监管方不仅要用算力v维护原有链,且需要大于v的算力生成伪造链,直至伪造链长度大于等于原有链。采用基于内存难度的Cuckoo Cycle 工作量证明算法,在增加vt-v算力的同时,也要增加倍内存带宽以保证计算速度提升倍,相较于仅需增加算力的工作量证明篡改时需要更大的硬件成本。

3 实验及结果分析

3.1 实验目的与环境

为验证本文提出的智慧水务数据监管方法的有效性、篡改时的硬件成本,通过网络从实际运行的某试点城市的海绵城市运行监管平台中实时地获取智慧水务数据并设定实验环境,如表3所示(Excel数据接口的实验源代码可以在https://github.com/a1094174619/Sponge_City_tamper_proof获取)。

表3 测试环境Table 3 Test environment

时间序列数据格式如表4 所示,包括传感器编号、时间戳以及各类数据字段。数据字段根据传感器不同其字段数量与类型均不同。

表4 数据格式Table 4 Data formats

3.2 私有链证明文件生成实验

私有链证明文件生成相关参数设定与意义如表5所示,easiness决定了一个区块的计算时间,在easiness、edgebits、nodebits、L取表5值时可使区块平均计算时间tˉ接近1 800 s。传感器采样间隔为300 s,tl取1 800 s,让一个哈希值对应6 次采样数据保证验证精度。该海绵城市运行监管平台共有357 个传感器,由式(2)计算一个区块大小为12.8 KB。

表5 实验相关参数意义及值Table 5 Related parameters

每个区块进行工作量证明后打包的时间如图6 所示,平均时间为1 796.38 s。对两天数据生成证明文件,96 个区块的私有链大小1.20 MB。若easiness过小,被监管方打包一个区块的平均时间tˉ远小于tl,被监管方篡改数据时所需要的计算成本过小。若easiness过大,tˉ大于tl,则随着时间累积,被监管方无法按时生成证明文件。调整easiness使得tˉ略小于tl,那么在区块链可以及时生成的前提下,尽可能使得被监管方篡改数据的难度最大。

图6 证明文件的各区块打包时间Fig.6 Packing time of generating block

被监管方数据实时采集,若对一段数据进行实时篡改,其平均篡改时间为tl-Δt,篡改历史数据的时间如式(6)。保证tl-0 的条件下,其余变量不变,tˉ越大,实时篡改的平均篡改时间tl-Δt越小,平均每个区块计算量cb越大,则篡改历史数据的时间tp越大。故尽可能使值越大,被监管方实时篡改数据的难度和篡改历史数据的难度都会增加。

3.3 智慧水务数据监管方法验证实验

3.3.1 监管方法有效性实验

监管方私钥未泄露时,被监管方只能申请伪造时的签名。即使被监管方完成了篡改的工作量证明,也能检测出区块被后期篡改。如图7 所示,后期篡改的第0、1个区块,签名时间较数据生成的时间晚了约3 天,验证程序可以检测出数据的实时性无效。

图7 检测出签名过期区块时的日志Fig.7 Log of detecting expired signature

若直接篡改数据,数据所对应的区块体中哈希值会改变,那么对应区块头中的哈希树根会改变。验证程序可检测出具体被篡改数据的传感器编号与时间段。如图8,第48 个区块时间段在2019-11-21 00:00:00—00:30:00,编号为1060747080、1060747200的数据被篡改。

图8 检查出数据被篡改的设备编号与时间段的日志Fig.8 Log of device number and its period of tampered data

综上所述,在监管方私钥未泄露时,被监管方申请篡改数据时的签名,方法能够检测出区块的实时性无效。若被监管方直接对数据进行篡改,方法能够检测出被篡改数据的传感器编号与时间段。

3.3.2 证明文件伪造成本实验

监管方私钥泄露的情况下,被监管方可以伪造签名,通过增加算力,从原有区块链的某个节点开始计算篡改区块,当篡改区块链长度等于原有区块链时,证明文件篡改成功。为对比方法采用Cuckoo Cycle 算法或POW 算法作为工作量证明算法时的证明文件伪造成本,进行以下实验。

为模拟篡改时的情况,以CPU的1个核心为原有区块链的算力,2、4、8个核心为篡改时算力,区块生成难度调整为0.43,共计算96 个区块,内存及其他硬件保持不变。如表6 所示,2 倍算力比基础算力的计算时间缩减47.6%。由于采用基于内存难度的Cuckoo Cycle算法,4倍算力比2倍计算时间缩减23.8%,而在4倍达到内存频率瓶颈,8 倍算力较4 倍算力计算速度没有提升。基于内存难度Cuckoo Cycle 算法较基于计算难度的算法需要更多的硬件成本,才能提升篡改时的区块计算速度。

表6 Cuckoo Cycle不同算力下的区块生成时间Table 6 Execution time of generating block with different computing power and Cuckoo Cycle

如图9所示为不同算力下的区块生成累计耗时,在CPU算力增加未达到内存频率限制时,区块生成时间减少明显。计算速度达到内存频率限制时则区块时间不减少。

图9 Cuckoo Cycle不同算力下生成区块累计时间图Fig.9 Cumulative execution time of generating block with different computing power and Cuckoo Cycle

在上述同等的硬件条件下,仅替换Cuckoo Cycle算法为经典工作量证明算法。如表7、图10,在基础算力到2、4、8 倍算力,区块的生成时间近似逐渐减半,故若采用基于计算难度的POW 算法,则仅需要增加CPU算力就能提升篡改速度。

表7 POW不同算力下的区块生成时间Table 7 Execution time of generating block with different computing power and POW

图10 POW不同算力下生成区块累计时间图Fig.10 Cumulative execution time of generating block with different computing power and POW

综上所述,采用Cuckoo Cycle 算法为工作量证明算法比POW 算法用以生成证明文件,伪造证明文件时需要同比例提升CPU 算力和内存频率,所需的硬件成本更高。

以下实验模拟监管方篡改数据时的实际情况,量化在以Cuckoo Cycle 为工作量证明算法情况下的时间成本以及计算成本。

实验如图11 所示,原有区块链以基础算力进行计算,以原有区块链开始计算为0秒计时,共计25 686 s生成96 个区块。在10 000 s 原有区块链已经生成37 个区块时,被监管方若要篡改第0 块所对应的数据,则需要从第0块开始生成伪造区块链。被监管方在A点以2倍基础算力(包含CPU 算力与内存频率)生成伪造区块链,约9 400 s 后,伪造区块链与原有区块链达到同等区块长度(B 点),此时伪造区块链可替换原有区块链,篡改数据成功。

图11 证明文件伪造实验图Fig.11 Experiment of forging document

被监管方在图11中的情况篡改成本需要满足拥有监管方的私钥、3倍的基础计算力(包含原有区块链的算力以及伪造区块链的2倍算力)、9 400 s的时间成本,其中伪造成本满足式(6)。

3.4 实验结果分析

私有链作为时间序列数据的证明文件,在监管方私钥未泄露的情况下,时间戳签名无法伪造,因而保证私有链无法伪造进而保证数据真实;在监管方私钥泄露的情况下,生成伪造区块链需要原有区块链2倍以上的计算量、内存带宽和式(6)的计算时间才能完成篡改,可保证式(6)中tp内私有链的可靠性。该方法不仅占用存储空间小,且采用基于内存难度的Cuckoo Cycle算法,在对数据篡改时需要保证计算能力与内存带宽同时满足条件。验证程序可快速对时间序列数据的真实性、时间有效性进行判断,且该方法可在不影响平台原有业务功能情况下成功部署。

4 结束语

本文以某城市的海绵城市运行监管平台为例,针对智慧水务系统数据可能被篡改的问题,研究设计并实现了一种基于内存难度的Cuckoo Cycle 算法的私有链数据监管方法,最后对该方法的有效性和篡改硬件成本进行了实验。结果表明,该方法相较于使用联盟链或公有链的编写智能合约的方式更适合大数据监管的需求,且在篡改时需要同时提升CPU 算力和内存频率,篡改的硬件成本更大。该方法不仅适用于智慧水务系统时间序列数据的监管,同样也适用于其他领域时间序列数据的监管。

猜你喜欢

证明文件私钥算力
算力盗用:一种新型财产侵害*
清扫机器人避障系统区块链私钥分片存储方法
中科曙光:联合发布全国首个“一体化算力交易调度平台”
中国电信董事长柯瑞文:算力成为数字经济的主要生产力
算力网络场景需求及算网融合调度机制探讨
比特币的安全性到底有多高
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
一种基于虚拟私钥的OpenSSL与CSP交互方案
我妈不想看到我这么累
商标局:简化部分商标申请材料和手续