浙江大学学报(工学版), 2025, 59(2): 269-277 doi: 10.3785/j.issn.1008-973X.2025.02.005

计算机技术

基于区块链的可信分布式工业数据治理方案

黄荣,, 杨文琴,, 宋志刚

1. 福州大学 数字中国研究院(福建),福建 福州 350003

2. 福州大学 空间数据挖掘与信息共享教育部重点实验室,福建 福州 350108

3. 福州大学 卫星空间信息技术综合应用国家地方联合工程研究中心,福建 福州 350108

Blockchain-based trusted distributed industrial data governance scheme

HUANG Rong,, YANG Wenqin,, SONG Zhigang

1. The Academy of Digital China(Fujian), Fuzhou University, Fuzhou 350003, China

2. Key Laboratory of Spatial Data Mining andInformation Sharing of Ministry of Education, Fuzhou University, Fuzhou 350108, China

3. National and Local Joint EngineeringResearch Center of Satellite Geospatial Information Technology, Fuzhou University, Fuzhou 350108, China

通讯作者: 杨文琴,女,工程师. orcid.org/0009-0003-9930-4871. E-mail: ywq@fzu.edu.cn

收稿日期: 2023-12-22  

基金资助: 中央引导地方科技发展专项资助项目(2022L3003).

Received: 2023-12-22  

Fund supported: 中央引导地方科技发展专项资助项目(2022L3003).

作者简介 About authors

黄荣(1973—),男,高级工程师,硕士,从事区块链及数据的分析与挖掘研究.orcid.org/0009-0006-3031-5857.E-mail:front@fzu.edu.cn , E-mail:front@fzu.edu.cn

摘要

针对当前工业系统缺乏统一的产品数据共享服务,限制了用户获取可信的产品追溯信息的问题,基于区块链设计可信分布式工业数据治理方案,实现高效、安全的产品数据共享与治理. 产品数据生成者将数据提交到区块链系统之前,在离链状态下对产品数据进行压缩和加密. 为了在离链过程中使产品数据可用,系统通过2种类型的区块链交易(生成者交易和数据交易)支持离链/链上数据访问. 提供混合访问控制机制用于加密产品数据,将秘密密钥仅提供给经过授权的数据用户. 该方案能够有效地保护产品数据的隐私性,提供细粒度的访问控制,能够对产品数据生成的全流程进行溯源. 系统性能的测试结果表明,在secp256k1椭圆曲线上(提供128 bit安全性),密钥生成阶段的计算和通信开销不高于81.592 ms和2.83 kB,数据提交阶段不高于50.251 ms和3.59 kB,数据更新时间不超过251.596 ms,数据读取时间不高于311.104 ms. 与同类方案的性能比较结果证实了该方案的高效性.

关键词: 区块链 ; 数据可信治理 ; 隐私保护 ; 细粒度访问控制 ; 全流程溯源

Abstract

A trusted distributed industrial data governance solution was designed based on blockchain technology in order to address the issue of the lack of a unified product data sharing service in current industrial systems, which limited users’ access to credible product traceability information. This solution enabled efficient and secure product data sharing and governance. Product data was compressed and encrypted off-chain by the data generator before it was submitted to the blockchain system. The system supported off-chain/on-chain data access through two types of blockchain transactions (producer transactions and data transactions) in order to ensure the availability of product data during the off-chain process. A hybrid access control mechanism was implemented to encrypt product data and share secret keys exclusively with authorized data users. This solution effectively protected the privacy of product data, provided fine-grained access control, and ensured end-to-end traceability of the entire product data generation process. Performance tests showed that the computation and communication costs during the key generation phase did not exceed 81.592 ms and 2.83 kB respectively on the secp256k1 elliptic curve (providing 128 bit security). The data submission phase incured cost of no more than 50.251 ms and 3.59 kB, the data update phase did not exceed 251.596 ms, and the data retrieval time remained under 311.104 ms. Performance comparisons with similar schemes confirmed the efficiency of this solution.

Keywords: blockchain ; data trusted governance ; privacy protection ; fine-grained access control ; whole process provenance

PDF (1274KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

黄荣, 杨文琴, 宋志刚. 基于区块链的可信分布式工业数据治理方案. 浙江大学学报(工学版)[J], 2025, 59(2): 269-277 doi:10.3785/j.issn.1008-973X.2025.02.005

HUANG Rong, YANG Wenqin, SONG Zhigang. Blockchain-based trusted distributed industrial data governance scheme. Journal of Zhejiang University(Engineering Science)[J], 2025, 59(2): 269-277 doi:10.3785/j.issn.1008-973X.2025.02.005

在现代社会中追踪单个产品的数据信息对于许多应用至关重要[1],包括防伪检测、有针对性的产品召回. 目前的工业系统缺乏统一的数据共享服务,这使得用户无法获得可信的产品追溯性. 由于数据被分散存储在各自的数据库中,形成了数据孤岛,跨系统数据共享变得困难. 此外,工业数据涉及敏感信息,对数据的安全和隐私保护要求较高,但现有系统缺乏统一的安全策略和机制,跨系统数据共享可能导致安全风险和隐私泄露.

区块链技术为分布式环境中的可信数据存储和治理提供了强有力的支持[2]. 其去中心化和数据分布式存储的特点适用于构建可信的数据治理平台[3]. 将产品数据直接存储于区块链中,存在存储成本高、通信开销大及敏感信息泄露等问题,限制了其在工业数据场景中的应用.

杨业平等[4]通过密文属性策略基加密和可验证随机函数技术,设计基于区块链的物联网安全数据共享系统. 宁建廷等[5]研究云存储数据共享机制中部署密文策略属性基加密时出现的解密权限泄露问题,设计白盒和黑盒“泄露”解密权限的追踪机制. 张建标等[6]利用基于属性的访问控制模型,提出以区块链为交互方式的域间数据治理访问控制模型. Wang等[7]提出基于区块链和匿名证书的物联网数据治理机制. 尽管这些方法实现了数据的交换和共享,然而这些方法未在提高数据管理效率和溯源方面提供解决方案.

为了解决这些问题,本文提出基于区块链的新型可信分布式工业数据治理方案,实现在区块链上的高效安全工业数据共享与治理. 在本方案中,产品数据提交到区块链系统之前,在离链状态下进行压缩和加密,通过2种类型的区块链交易(生成者交易和数据交易)支持离链/链上数据访问. 在产品数据发布到区块链后,内部参与者沿着产品处理流程传递产品记录的路径,终端参与者将接收所有用于压缩的产品记录,提高存储效率. 本文方案提供了混合访问控制机制以加密产品数据,并将秘密密钥仅提供给授权用户. 本方案系统架构包含访问控制中心,用于为加密指定访问策略,通过向数据用户分发密钥来分配访问权限. 这种方式避免了参与者的高密钥分发开销以及数据使用者的复杂授权定义开销. 此外,方案为区块链系统设计了辅助索引结构,以便在区块链数据上高效搜索产品数据. 本文在Fabric[8]上实现了方案原型,分析了该方案的安全性和效率优势.

1. 系统模型和设计目标

图1所示,提出的区块链可信分布式数据治理系统包含产品数据生成者、数据使用者和访问控制管理中心. 访问控制中心为数据生成者和数据使用者分配密钥(步骤①),执行访问控制策略. 产品数据生成者(依据对产品数据的处理流程,分为起始参与者、内部参与者和终端参与者)处理产品. 当产品通过生成者路径流动时,每个生成者都会创建一条记录来描述产品的状态(如所有权、时间戳、位置、产品规格等),这些记录的集合包含了产品的完整数据. 在提交数据时,数据生成者定义访问控制策略,对数据进行加密,将产品数据提交到区块链上(步骤②). 数据使用者(例如政府机构和消费者)从区块链中读取产品数据:政府机构可以审核产品的生产过程,消费者了解产品特性和流通过程. 用户提交数据访问请求(步骤③),只有具备满足访问控制权限的用户(数据生成者或使用者)才能获得授权并访问产品的数据(步骤④). 此外,数据使用者可以提交数据查询请求(步骤⑤),获得数据查询结果(步骤⑥). 当产品信息发生变动时,本系统允许数据生成者对数据进行更新,由区块链进行变更记录(步骤⑦). 系统使用的符号及描述如表1所示.

图 1

图 1   区块链可信分布式数据治理系统的架构图

Fig.1   Architecture of blockchain-based trusted distributed data governance system


表 1   可信分布式工业数据治理系统的符号及描述

Tab.1  Notation and description of trusted distributed industrial data governance system

符号描述
$ \mathrm{A}\mathrm{B}\mathrm{E}/\mathrm{C}\mathrm{o}\mathrm{m}\mathrm{p} $属性基加密方案/
数据压缩算法
$ \mathrm{A}\mathrm{g}\mathrm{g}\mathrm{S}\mathrm{i}\mathrm{g}/\mathrm{S}\mathrm{E}\mathrm{n}\mathrm{c} $聚合签名方案/
对称加密方案
$ \mathrm{P}\mathrm{P}/\mathrm{M}\mathrm{S}\mathrm{K}/\mathrm{D}\mathrm{K}/\mathrm{A}\mathrm{T}\mathrm{T}\mathrm{R} $公开参数/主密钥/
属性密钥/属性集合
$ \mathrm{S}\mathrm{K}/\mathrm{V}\mathrm{K}/\sigma $签名密钥/验证密钥/签名值
$ {P}_{1},\cdots ,{P}_{N} $/$ {m}_{1},\cdots ,{m}_{N} $产品数据生成者/产品信息
$ \text{add}{\text{r}}_{1},\cdots ,\text{add}{\text{r}}_{N} $产品数据生成者的地址(用于溯源)
$ \mathrm{i}\mathrm{d}/{\mathrm{v}} $产品标识/版本号
$ \text{C}{\text{T}}_{1}/\text{C}{\text{T}}_{2} $ABE密文/对称加密密文

新窗口打开| 下载CSV


系统提供了3种类型的操作:数据提交允许一组生成者将产品的数据提交到区块链上,数据更新允许为产品数据做出贡献的任何生成者更新存储在区块链上的数据,数据读取允许满足权限的用户从区块链上读取产品的数据. 系统的设计目标如下. 1)数据认证:数据用户应能够验证产品数据是由有效的参与者路径贡献的,且未被篡改. 2)数据访问控制:存储在区块链上的产品数据应受到细粒度访问控制策略的约束,以确保只有经授权的数据用户能够访问. 3)数据管理效率:大量的产品数据应以有效的方式存储并通过区块链访问.

采用基于属性的加密(attribute-based encryption, ABE)和对称加密的混合访问控制机制. ABE允许根据用户的属性来控制对数据的访问,对称加密用于高效地加密和解密数据. 混合访问控制机制实现了以下功能. 1)隐私保护:只有具有匹配属性的用户才能获取解密密钥,因此只有这些用户才能解密数据. 其他用户无法访问数据或获取密钥,有效保护了产品数据的隐私. 2)细粒度访问控制:通过灵活定义访问策略,可以实现对数据的细粒度访问控制. 数据生成者可以根据实际需求定义不同的访问策略,确保只有授权用户才能访问特定的数据,提高了数据的安全性和可控性. 混合访问控制机制结合ABE和对称加密的优势,既保护了产品数据的隐私,又提供了灵活而精细的访问控制机制.

2. 系统构造

本系统利用属性基加密(ABE)[9]、聚合签名(aggregating several signatures, AggSig)[10]、对称加密(symmetric encryption, SEnc)等技术,实现基于区块链的可信分布式数据治理.

2.1. 系统初始化和密钥分发

访问控制中心,生成公开参数和主密钥$ (\text{PP},\text{MSK})\leftarrow \mathrm{ABE}.\mathrm{Setup}(\lambda ) $. 它在系统中公布公开参数$ \text{PP} $,并将$ \text{MSK} $保密. 当一个用户加入系统时,访问控制中心从列表中选择适当的属性子集$ \text{ATT} $,描述用户访问权限. 访问控制中心生成ABE密钥$ \mathrm{D}\mathrm{K}\leftarrow \mathrm{ABE}.\mathrm{KeyGen}(\mathrm{M}\mathrm{S}\mathrm{K},\mathrm{A}\mathrm{T}\mathrm{T}) $,通过安全通道(例如安全套阶层SSL)将$ \text{DK} $分发给参与者. 参与者还生成一个聚合签名密钥对 $(\mathrm{S}\mathrm{K},\mathrm{V}\mathrm{K})\leftarrow {\mathrm{A}\mathrm{g}\mathrm{g}\mathrm{S}\mathrm{i}\mathrm{g}.} $$ {\mathrm{K}\mathrm{e}\mathrm{y}\mathrm{G}\mathrm{e}\mathrm{n}\left(\lambda \right) }$ ,向访问控制管理器请求$ \text{VK} $的凭证. 该凭证使其他方能够确认验证密钥$ \text{VK} $的有效性. 最后,参与者使用此密钥对产品记录进行签名.

当第三方用户想要读取产品$ \text{id} $的数据时,第三方用户提供产品信息,包括产品标识“$ \text{id} $”,并向管理器证明其权限. 管理器检查第三方用户是否有权读取产品的数据. 例如,消费者可以向管理器证明他已经购买了某个产品,并有权访问该产品数据. 若消费者拥有权限,管理器生成ABE密钥$ \mathrm{D}\mathrm{K}\leftarrow \mathrm{ABE}.\mathrm{KeyGen}(\mathrm{M}\mathrm{S}\mathrm{K},\mathrm{{'}}\mathrm{i}\mathrm{d}\mathrm{{'}}) $,通过安全通道将$ \mathrm{D}\mathrm{K} $分发给第三方用户.

2.2. 数据提交

该操作允许$ N $个产品数据生成者$ \{{{P}_{i}\}}_{i=1}^{N} $共同将产品$ {\mathrm{id}} $的数据提交到区块链上. 当$ \text{id} $$ \{{{P}_{i}\}}_{i=1}^{N} $中进行处理时,每个$ {P}_{i}\in \{{{P}_{i}\}}_{i=1}^{N-1} $将产品记录沿着产品处理流程传输给下一个参与者$ {P}_{i+1} $. 该操作的工作流程分为以下3个步骤.

1)$ {P}_{1} $设置生成者版本号$ {v}_{{P}_{1}}=1 $,并生成对称密钥$ k\leftarrow \mathrm{SEnc}.\mathrm{KeyGen}(\lambda ) $. $ {P}_{1} $使用签名密钥$ {\mathrm{S}\mathrm{K}}_{1} $对产品记录$ {m}_{1}\left|\left|\text{id}\right|\right|{v}_{{P}_{1}} $进行签名,生成签名值${\sigma }_{1} \leftarrow $$ {\mathrm{{AggSig}}}.{\mathrm{{Sign}}}({\mathrm{{S}}}{{\mathrm{{K}}}}_{1},{m}_{1}\left|\left|\rm{i}\rm{d}\right|\right|{v}_{{P}_{1}}) $,其中$ {m}_{1} $$ {P}_{1} $处理时产生的产品信息. 之后,$ {P}_{1} $$ {P}_{2} $发送消息$ {M}_{1}=(k, ({m}_{1}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{1}},{\sigma }_{1}),\mathrm{V}{\mathrm{K}}_{1}) $. $ {P}_{1} $使用签名密钥$ {\mathrm{S}\mathrm{K}}_{1} $对消息$ (\mathrm{i}\mathrm{d},\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1},{v}_{{P}_{1}}) $进行签名,生成签名$ {\sigma }_{{P}_{1}} \xleftarrow{{\;\;\;\;}}{\mathrm{AggSig}}. {\mathrm{Sign}}({\mathrm{S}}{\mathrm{K}}_{1},{\mathrm{i}}{\mathrm{d}}\left\|{\mathrm{a}}{\mathrm{d}}{\mathrm{d}}{\mathrm{r}}_{1}\right\|{v}_{{P}_{1}}) $,其中$ \mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{1} $$ {P}_{1} $的地址,可以用于产品溯源. $ {P}_{1} $将一个生成者交易${\mathrm{T}{\mathrm{x}}}_{{{P}}_{1}}= $$ ({\mathrm{i}\mathrm{d}},{\mathrm{a}\mathrm{d}\mathrm{d}}{\mathrm{r}}_{1},{v}_{{P}_{1}},{\sigma }_{{P}_{1}},{\mathrm{V}}{\mathrm{K}}_{1}) $提交至区块链,并将对称密钥$ k $通过安全信道发送给下一个产品数据生成者$ {P}_{2} $.

2)对于$ {P}_{i}(2\le i\le N-1) $,在接收到$ {M}_{i-1} $后,$ {P}_{i} $存储$ k $并设置生成者版本号$ {v}_{{P}_{i}}=i $. $ {P}_{i} $使用签名密钥$ {\mathrm{S}\mathrm{K}}_{1} $对产品记录$ {m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}} $签名,生成签名值$ {\sigma }_{i}\leftarrow \mathrm{AggSig}.\mathrm{Sign}(\mathrm{S}{\mathrm{K}}_{{i}},{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}) $,其中$ {m}_{i} $$ {P}_{i} $处理时产生的产品信息. $ {P}_{i} $$ {P}_{i+1} $发送$ {M}_{i}=\left(k,\{{m}_{j}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{j}}\right., \left. {\sigma }_{j}{\}}_{j=1}^{i}, \{\mathrm{V}{\mathrm{K}}_{{j}}\}_{j=1}^{i}\right) $. $ {P}_{i} $使用签名密钥$ {\mathrm{S}\mathrm{K}}_{1} $对消息$ (\mathrm{i}\mathrm{d},\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{i}},{v}_{{P}_{i}}) $签名,生成签名$ {\sigma }_{{P}_{i}}\xleftarrow{{\;\;\;\;}} {\mathrm{A}}\mathrm{ggSig}.\mathrm{Sign}(\mathrm{S}{\mathrm{K}}_{{i}}, \mathrm{i}\mathrm{d}\left|\right|\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{i}}\left|\right|{v}_{{P}_{i}}) $,其中$ \mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{i}} $$ {P}_{i} $的地址. $ {P}_{i} $向区块链提交一个生成者交易$ {\mathrm{T}}{\mathrm{x}}_{{P}_{i}}= (\mathrm{i}\mathrm{d},\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{i}},{v}_{{P}_{i}},{\sigma }_{{P}_{i}},\mathrm{V}{\mathrm{K}}_{{i}}) $,将对称密钥$ k $通过安全信道发送给下一个产品数据生成者$ {P}_{i+1} $. 以上过程反复进行,直至终端参与者$ {P}_{N} $收到$ {M}_{N-1} $.

3)$ {P}_{N} $将产品数据进行压缩、加密并提交到区块链. $ {P}_{N} $使用数据压缩方案,将$ N $个产品记录$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N} $进行压缩,得到压缩结果$ {m}_{1}^{N}\xleftarrow{{\;\;\;\;}} \mathrm{C}\mathrm{o}\mathrm{m}\mathrm{p}. \mathrm{C}\mathrm{o}\mathrm{m}\mathrm{p}\mathrm{r}\mathrm{e}\mathrm{s}\mathrm{s}\left(\right\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N}) $,通过使用聚合签名方案将生成者的$ N $个签名$ \{{\sigma }_{i}{\}}_{i=1}^{N} $聚合成为$ {\sigma }_{1}^{N}\xleftarrow{{\;\;\;\;}} \mathrm{AggSig}. \mathrm{Aggregate}\left(\{{\sigma }_{i}{\}}_{i=1}^{N}\right) $. 之后,$ {P}_{N} $从访问控制中心检索访问策略$ {P} $. $ {P}_{N} $使用ABE方案加密$ k $,得到$ {\mathrm{C}\mathrm{T}}_{1}\leftarrow \mathrm{ABE}.\mathrm{Enc}(\mathrm{P}\mathrm{P},{P},k) $. 使用密钥$ k $$ ({m}_{1}^{N},{\sigma }_{1}^{N}) $进行对称加密,得到$ \mathrm{C}{\mathrm{T}}_{2}\leftarrow \mathrm{SEnc}.\mathrm{Enc}(k,{m}_{1}^{N},{\sigma }_{1}^{N}) $. $ {P}_{N} $设置数据版本号$ {v}_{D}=1 $,使用$ {P}_{N} $的签名密钥$ \mathrm{S}{\mathrm{K}}_{{N}} $对消息$ \mathrm{D}\mathrm{A}\mathrm{T}\mathrm{A}=(\mathrm{i}\mathrm{d},\mathrm{C}{\mathrm{T}}_{1},\mathrm{C}{\mathrm{T}}_{2},\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N},{v}_{D},{\sigma }_{D},\mathrm{V}{\mathrm{K}}_{{N}}) $进行签名,得到$ {\sigma }_{D}\leftarrow \mathrm{AggSig}.\mathrm{Sign}(\mathrm{S}{\mathrm{K}}_{{N}},\mathrm{D}\mathrm{A}\mathrm{T}\mathrm{A}) $. 在完成加密与签名后,$ {P}_{N} $向区块链系统中提交数据交易$ \mathrm{T}{\mathrm{x}}_{D}=(\mathrm{i}\mathrm{d},\mathrm{C}{\mathrm{T}}_{1},\mathrm{C}{\mathrm{T}}_{2},\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N},{v}_{D},{\sigma }_{D},\mathrm{V}{\mathrm{K}}_{{N}}) $. 其中,$ (\mathrm{C}{\mathrm{T}}_{1}, \mathrm{C}{\mathrm{T}}_{2}) $分别为产品压缩数据和聚合签名值$ ({m}_{1}^{N},{\sigma }_{1}^{N}) $的密文,$ \{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N} $是用于验证$ {m}_{1}^{N} $的签名值$ {\sigma }_{1}^{N} $的一组验证密钥.

2.3. 数据更新

该操作允许任何处理过$ \mathrm{i}\mathrm{d} $的参与者$ {P}_{i}\in \{{{P}_{i}\}}_{i=1}^{N} $通过向区块链发送请求$ Q $,更新$ \mathrm{i}\mathrm{d} $的数据. 区块链会返回数据交易或生成者交易. 前一种情况意味着$ \mathrm{i}\mathrm{d} $的数据已经在区块链上发布. 后一种情况意味着$ \mathrm{i}\mathrm{d} $的数据在离链过程中处理.

在链上情况下,区块链返回数据交易$ {\mathrm{T}\mathrm{x}}_{D}= (\mathrm{i}\mathrm{d},\mathrm{C}{\mathrm{T}}_{1},\mathrm{C}{\mathrm{T}}_{2},\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N},{v}_{D},{\sigma }_{D},\mathrm{V}{\mathrm{K}}_{{N}}) $. $ {P}_{i} $通过$ k $$ \mathrm{C}{\mathrm{T}}_{2} $进行对称解密,以获取$ {\mathrm{id}} $的压缩数据:$ ({m}_{1}^{N},{\sigma }_{1}^{N})\xleftarrow{{\;\;\;\;}} \mathrm{SEnc}. \mathrm{Dec}(k,\mathrm{C}{\mathrm{T}}_{2}) $.$ {m}_{1}^{N} $进行解压,获取$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N}\xleftarrow{{\;\;\;\;}} \mathrm{Comp}. \mathrm{Decompress}({m}_{1}^{N}) $. $ {P}_{i} $检查$ {\sigma }_{1}^{N} $是否是关于$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N} $$ \{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N} $的有效签名,即执行聚合签名验证算法$ 1/0\xleftarrow{{\;\;\;\;}} \mathrm{AggSig}.\mathrm{Verify} (\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N},{\sigma }_{1}^{N}, \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N}) $. 若算法返回$ {\sigma }_{1}^{N} $是有效签名,则$ {P}_{i} $将签名的产品记录$ ({m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}},{\sigma }_{i}) $更新为新版本$ ({m}_{i}{'}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}},{\sigma }_{i}{'}) $,其中$ {m}_{i}{'} $$ {P}_{i} $处理时产生的更新产品信息,$ {\sigma }_{i}{'} $为更新后的签名$ {\sigma }_{i}{'}\xleftarrow{{\;\;\;\;}} \mathrm{AggSig}.\mathrm{Sign}(\mathrm{S}{\mathrm{K}}_{{i}}, {m}_{i}{'} \left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}) $. $ {P}_{i} $使用对称加密的密钥$ k $,对更新后的消息$ \mathrm{D}\mathrm{A}\mathrm{T}\mathrm{A}{'}=\left({m}_{1}^{N}||{m}_{i}{'}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}},{\sigma }_{1}^{N}||{\sigma }_{i}{'}\right) $进行加密并生成密文$ \mathrm{C}{\mathrm{T}}_{2}\mathrm{{'}}\leftarrow \mathrm{SEnc}.\mathrm{Enc}(k,\mathrm{D}\mathrm{A}\mathrm{T}\mathrm{A}{'}) $. 将版本号$ {v}_{D} $增加1. $ {P}_{i} $向区块链提交新的数据交易$ \mathrm{T}{\mathrm{x}}_{D}{'}= (\mathrm{i}\mathrm{d},\mathrm{C}{\mathrm{T}}_{1},\mathrm{C}{\mathrm{T}}_{2}{'},{v}_{D},{\sigma }_{D}{'},\mathrm{V}{\mathrm{K}}_{{i}}) $.

在离链情况下,区块链返回生成者交易$ \mathrm{T}{\mathrm{x}}_{{P}_{j}}= (\mathrm{i}\mathrm{d},\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{j}},{v}_{{P}_{j}},{\sigma }_{{P}_{j}},\mathrm{V}{\mathrm{K}}_{{j}}) $. $ {P}_{i} $$ \mathrm{T}{\mathrm{x}}_{{P}_{j}} $中提取地址$ \mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{j}} $,根据$ \mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{j}} $向参与者$ {P}_{j} $发送请求$ Q $. $ {P}_{j} $通过密钥$ k $对产品记录和对应的签名$ \left(\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j},\{{\sigma }_{i}{\}}_{i=1}^{j}\right) $进行对称加密,得到密文$ \mathrm{C}{\mathrm{T}}_{0}\xleftarrow{{\;\;\;\;}} \mathrm{SEnc}.\mathrm{Enc}(k,\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right| {v}_{{P}_{i}}{\}}_{i=1}^{j}, \{{\sigma }_{i}{\}}_{i=1}^{j}) $. 之后,向$ {P}_{i} $发送$ (\mathrm{C}{\mathrm{T}}_{0},\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{j}) $. $ {P}_{i} $使用密钥$ k $$ \mathrm{C}{\mathrm{T}}_{0} $解密,得到$ \left(\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j},\{{\sigma }_{i}{\}}_{i=1}^{j}\right)\xleftarrow{{\;\;\;\;}} \mathrm{SDec}.\mathrm{Enc}(k,\mathrm{C}{\mathrm{T}}_{0}) $. $ {P}_{i} $$ j $个签名$ \{{\sigma }_{i}{\}}_{i=1}^{j} $进行聚合,得到签名$ {\sigma }_{1}^{j}\leftarrow \mathrm{AggSig}.\mathrm{Aggregate}\left(\{{\sigma }_{i}{\}}_{i=1}^{j}\right) $. 数据用户计算$ 1/0\leftarrow \mathrm{AggSig}.\mathrm{Verify}(\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{j},{\sigma }_{1}^{j},\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j}) $,即验证$ {\sigma }_{1}^{j} $是否是关于$ \{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{j} $$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j} $的有效签名. 若算法输出$ {\sigma }_{1}^{j} $是有效签名,则$ {P}_{i} $继续计算$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j}\backslash \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\}\cup \{{m}_{i}{'}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\} $,即用新数据$ \left\{{m}_{i}{'}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\right\} $替换掉原数据$ \left\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\right\} $,将更新后的信息记为$ \left\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\right\}{{'}}_{i=1}^{j} $. 之后,生成签名值$ {\sigma }_{i}{'}\leftarrow \mathrm{AggSig}.\mathrm{Sign}(\mathrm{S}{\mathrm{K}}_{{i}},{m}_{i}{'}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}) $,更新签名集合$ \left\{{\sigma }_{i}\right\}{{'}}_{i=1}^{j}\leftarrow \{{\sigma }_{i}{\}}_{i=1}^{j}\backslash {\sigma }_{i}\cup {\sigma }_{i}{'} $,即用新签名值$ {\sigma }_{i}{'} $替换原签名值$ {\sigma }_{i} $. $ {P}_{i} $生成签名值$ \sigma \xleftarrow{{\;\;\;\;}} \mathrm{AggSig}.\mathrm{Sign}(\mathrm{S}{\mathrm{K}}_{{i}}, \left\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\right\}{{'}}_{i=1}^{j},\left\{{\sigma }_{i}\right\}{{'}}_{i=1}^{j}) $,将$ \left(\right\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\}{{'}}_{i=1}^{j}, \{{\sigma }_{i}\}{{'}}_{i=1}^{j}, \sigma ,\mathrm{V}{\mathrm{K}}_{{i}}) $发送给$ {P}_{j} $.$ \sigma $ 是关于 $ \left(\right\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}\}{{'}}_{i=1}^{j}, \{{\sigma }_{i}\}{{'}}_{i=1}^{j}) $$ \mathrm{V}{\mathrm{K}}_{{i}} $的有效签名,则$ {P}_{j} $将接受此更新并继续离链操作.

2.4. 数据读取

数据用户(无论是参与者还是第三方用户)可以通过向区块链发送请求$ Q $来读取产品$ \mathrm{i}\mathrm{d} $的数据. 区块链会返回数据交易或生成者交易. 前一种情况意味着$ \mathrm{i}\mathrm{d} $的数据已经在区块链上发布. 后一种情况意味着$ \mathrm{i}\mathrm{d} $的数据在离链过程中处理.

在链上情况下,区块链返回数据交易$ \mathrm{T}{\mathrm{x}}_{D}= (\mathrm{i}\mathrm{d},\mathrm{C}{\mathrm{T}}_{1},\mathrm{C}{\mathrm{T}}_{2},\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N},{v}_{D},{\sigma }_{D},\mathrm{V}{\mathrm{K}}_{{N}}) $. 数据用户通过解密密钥$ \mathrm{D}\mathrm{K} $$ \mathrm{C}{\mathrm{T}}_{1} $进行ABE解密,获取对称密钥$ k\leftarrow \mathrm{A}\mathrm{B}\mathrm{E}.\mathrm{D}\mathrm{e}\mathrm{c}(\mathrm{D}\mathrm{K},\mathrm{C}{\mathrm{T}}_{1}) $. 使用对称密钥$ k $$ \mathrm{C}{\mathrm{T}}_{2} $进行对称解密,获取$ ({m}_{1}^{N},{\sigma }_{1}^{N})\leftarrow \mathrm{SEnc}.\mathrm{Dec}(k,\mathrm{C}{\mathrm{T}}_{2}) $,对$ {m}_{1}^{N} $解压缩,获取$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N}\xleftarrow{{\;\;\;\;}} \mathrm{Comp}.\mathrm{Decompress} ({m}_{1}^{N}) $.数据用户验证$ {\sigma }_{1}^{N} $是否是关于$ \{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{N} $$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N} $的有效签名. 若$ {\sigma }_{1}^{N} $是有效签名,则数据用户接收$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{N} $$ {\mathrm{id}} $的相关数据.

在离链情况下,区块链返回一个交易$ \mathrm{T}{\mathrm{x}}_{{P}_{j}}= (\mathrm{i}\mathrm{d},\mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{j}},{v}_{{P}_{j}},{\sigma }_{{P}_{j}},\mathrm{V}{\mathrm{K}}_{{j}}) $. 数据用户从$ \mathrm{T}{\mathrm{x}}_{{P}_{j}} $中提取地址$ \mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{j}} $,根据$ \mathrm{a}\mathrm{d}\mathrm{d}{\mathrm{r}}_{{j}} $向参与者$ {P}_{j} $发送请求$ Q $. 参与者$ {P}_{j} $向数据用户返回密文$ (\mathrm{C}{\mathrm{T}}_{1},\mathrm{C}{\mathrm{T}}_{2},\{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{j}) $. 数据用户通过解密密钥$ \mathrm{D}\mathrm{K} $$ \mathrm{C}{\mathrm{T}}_{1} $进行ABE解密,获取对称密钥$ k\leftarrow \mathrm{ABE}.\mathrm{Dec}(\mathrm{D}\mathrm{K},\mathrm{C}{\mathrm{T}}_{1}) $. 通过对称密钥$ k $$ \mathrm{C}{\mathrm{T}}_{2} $进行解密,获取$ \left(\{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j},\{{\sigma }_{i}{\}}_{i=1}^{j}\right)\xleftarrow{{\;\;\;\;}} \mathrm{SEnc}. \mathrm{Dec}({k},\mathrm{C}{\mathrm{T}}_{2}) $. 数据用户将$ \{{\sigma }_{i}{\}}_{i=1}^{j} $聚合成签名$ {\sigma }_{1}^{j}\xleftarrow{{\;\;\;\;}} \mathrm{AggSig}.\mathrm{Aggregate}\left(\{{\sigma }_{i}{\}}_{i=1}^{j}\right) $. 用户验证该聚合签名是否是关于$ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j} $$ \{\mathrm{V}{\mathrm{K}}_{{i}}{\}}_{i=1}^{j} $的有效签名. 若为有效签名,则数据使用者将接受 $ \{{m}_{i}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{i}}{\}}_{i=1}^{j} $作为$ \mathrm{i}\mathrm{d} $的关联数据.

2.5. 区块链上的搜索过程

在数据更新/读取的操作中,区块链系统在接收到请求$ Q $后,需要在区块链数据中搜索产品数据. 区块链系统的每个全节点都在区块链数据上建立索引并进行搜索.

在总体系统中,区块链系统仅存储数据交易和生成者交易. 对于区块链数据的每个区块,全节点建立本地反向索引,其中包含一系列键值对. 一个键值对$ \mathrm{K}\mathrm{V} $的形式为$ (\mathrm{i}\mathrm{d},D/P,L) $,其中$ \mathrm{i}\mathrm{d} $是产品标识,$ D/P $是交易类型,$ L $是包含$ \mathrm{i}\mathrm{d} $$ D/P $的交易标识列表,$ D $表示数据交易,$ P $表示生成者交易. 这意味着一个键值对$ \mathrm{K}\mathrm{V} $索引了所有具有相同产品标识和交易类型的区块中的交易.

全节点在接收到请求$ Q $后,使用索引来搜索产品数据. 在本方案中,有关$ \mathrm{i}\mathrm{d} $的生成者交易和数据交易是按时间顺序提交到区块链系统的. 由于区块是按时间顺序附加到区块链系统中的,全节点按照逆时间顺序搜索区块链数据中的每个区块,以找到$ \mathrm{i}\mathrm{d} $的数据. 搜索过程解释如下. 对于一个区块,全节点扫描反向索引的每个$ \mathrm{K}\mathrm{V} $.$ \mathrm{K}\mathrm{V} $包含$ D $$ L $,则全节点将$ \mathrm{K}\mathrm{V} $中的$ L $添加到数据交易集合$ {S}_{D} $中. 若$ \mathrm{K}\mathrm{V} $包含$ P $$ \mathrm{i}\mathrm{d} $,则全节点将$ \mathrm{K}\mathrm{V} $中的$ L $添加到生成者交易集合$ {S}_{P} $中. 在扫描完区块后,全节点检查$ {S}_{D} $是否为空集. 若$ {S}_{D} $不为空,则全节点将$ {S}_{D} $中具有最大版本号$ {v}_{D} $的数据交易选择为搜索结果. 若$ {S}_{D} $为空,则全节点检查$ {S}_{P} $是否为空集. 若$ {S}_{P} $不为空,则全节点将$ {S}_{P} $中具有最大版本号$ {v}_{P} $的生成者交易选择为搜索结果. 若$ {S}_{D} $$ {S}_{P} $都为空,则全节点将在下一个区块上重新开始上述过程.

3. 安全性分析

本系统依赖区块链的安全性来确保数据的完整性,依赖加密算法和聚合签名的安全性来确保数据来源的可靠性. 对于只有一个产品$ \mathrm{i}\mathrm{d} $的数据,为了确保完整性,路径上的$ N $个参与者$ \{{{P}_{i}\}}_{i=1}^{N} $通过数据提交操作,将产品记录提交到区块链. 由于区块链系统具有不可撤销特性,查询者可以从区块链中检索出所有的$ N $个产品记录. 为了确保数据来源的可靠性,$ \{{{P}_{i}\}}_{i=1}^{N} $中的每个$ {P}_{i} $都对产品记录进行签名. 由于聚合签名方案的不可伪造性,查询者可以确保$ N $个产品记录来自$ N $个真实的产品数据生成者.

本系统依赖属性基加密算法的安全性来确保对数据的访问控制. 对于只有一个产品$ \mathrm{i}\mathrm{d} $的数据,终端参与者$ {P}_{N} $通过ABE方案和对称加密方案,将访问策略$ {P} $与其关联起来进行加密. 由于ABE方案具有保密性,没有满足条件的属性的查询者无法解密出对称密钥. 此外,由于对称加密方案具有保密性,没有获取对称密钥的查询者无法进一步访问$ \mathrm{i}\mathrm{d} $的数据.

通过ABE和对称加密方案进行混合加密,密文$ \mathrm{C}{\mathrm{T}}_{2}\leftarrow \mathrm{SEnc}.\mathrm{Enc}(k,{m}_{1}^{N},{\sigma }_{1}^{N}) $是产品数据通过对称加密得到的,该算法中所使用的对称密钥$ k $是使用ABE算法加密处理后隐藏于密文${\mathrm{C}}{\mathrm{T}}_{1}\leftarrow {\mathrm{ABE}}. $$ {\mathrm{Enc}}({\mathrm{P}\mathrm{P}},{P},k) $中的. 假设系统选取的ABE方案是IND-CPA(indistinguishability under chosen-plaintext attack)安全的,则外部攻击者及不满足访问策略的内部恶意用户无法获取对称密钥$ k $. 假设系统选取的对称加密方案$ \mathrm{S}\mathrm{E}\mathrm{n}\mathrm{c} $是CPA(chosen-plaintext attack)安全的,则敌手无法获取产品数据明文. 该混合加密系统确保了产品数据的保密性.

在数据提交阶段,数据生成者$ \{{{P}_{i}\}}_{i=1}^{N} $分别对产品记录进行签名,即每个数据生成者计算$ {\sigma }_{i}\leftarrow \text{AggSig}.\text{Sign}(\mathrm{S}{\mathrm{K}}_{{i}},{m}_{i}\mathrm{i}\mathrm{d}{v}_{{P}_{i}}) $,将这些签名值放在消息$ {M}_{i}=\left(k,\{{m}_{j}\left|\left|\mathrm{i}\mathrm{d}\right|\right|{v}_{{P}_{j}},{\sigma }_{j}{\}}_{j=1}^{i},\{\mathrm{V}\mathrm{K}{\}}_{j=1}^{i}\right) $中,传递给下一位数据生成者. 产品数据中包含了每一位生成者的签名. 为了提高存储效率,对所有数据生成者的签名$ \{{\sigma }_{i}{\}}_{i=1}^{N} $进行聚合,得到聚合后的签名值$ {\sigma }_{1}^{N}\leftarrow \mathrm{AggSig}.\mathrm{Aggregate}\left(\{{\sigma }_{i}{\}}_{i=1}^{N}\right) $. 当进行数据追溯时,需要将数据进行解压缩,分别对每个签名值使用验证密钥$ {\mathrm{V}\mathrm{K}}_{i} $进行验证. 假设系统选取的聚合签名方案AggSig具有不可伪造性(unforgeability),则攻击者无法伪造出合法的数据生成者的有效签名. 若其中某个环节的产品数据出现问题,则可以根据签名值追踪出恶意数据生成者.

传统ABE方案中只有一个访问控制中心,负责系统所有的属性,为每一位用户分发相应的私钥. 为了防止恶意用户发起单点故障攻击,可以在系统中使用拥有多授权机构的ABE方案(MA-ABE:multi-authority ABE)[11-13],多个授权中心独立管理属性并分配对应的属性密钥,每一个属性的私钥由对应的属性授权中心分配,降低了单点故障攻击带来的安全威胁. MA-ABE方案带来了安全性的提升,但由于计算更复杂,加密效率会降低. 在ABE方案选择时,需要在效率和安全性两者间直接进行权衡(tradeoff).

4. 对比与性能评估

使用Intel(R) Core(TM) i7-1255U 2.60 GHz处理器和32 GB RAM内存配置的个人笔记本电脑,开展实验.

涉及双线性对运算的算法仿真使用Charm库[14]来运行并评估执行开销,选择secp224r1、secp256k1、secp384r1 3条椭圆曲线,分别提供112、128、192 bit安全强度. 采用经典属性基加密[9]和聚合签名[10]方案进行实例化性能测试. 选择Fabric [8]来实现区块链,本方案的应用不局限于Fabric,可以部署在其他类型的区块链上,如比特币[15]和以太坊[16].

4.1. 方案特性的对比

表2所示,将本系统与文献[2~5]的方案进行比较. 从数据保密性、数据是否可搜索、数据是否可更新、分布式数据治理、细粒度访问控制、全流程溯源6个方面进行对比.

表 2   数据治理方案的特性对比

Tab.2  Feature comparison of data governance program

特性文献[2]
方案
文献[3]
方案
文献[4]
方案
文献[5]
方案
本文
方案
数据保密性×
数据可搜索××××
数据可更新×××
分布式数据治理×
细粒度访问控制××
全流程溯源××××

新窗口打开| 下载CSV


1)数据保密性. Garcia等[2,4-5]和笔者均利用加密技术,确保共享数据的机密性. 文献[3]的方案未提供安全性保护. 文献[4]的方案使用随机掩码方式进行安全性保护,无法进行数据间的安全计算.

2)数据可搜索. 设计区块链上的数据搜索协议,实现了同一产品的数据聚合,而其他方案均未实现此功能.

3)数据可更新. 本文方案允许产品数据生成者对数据进行动态更新,而其他方案没有实现该功能.

4)分布式数据治理. 文献[2~4]的方案和本文方案实现了基于区块链的分布式数据治理,但是文献[5]的方案依赖中心化的数据管理,无法抵抗单点故障和数据篡改攻击.

5)细粒度访问控制. 文献[4, 5]的方案和本文方案均利用ABE技术,实现了细粒度访问控制.

6)全流程溯源. 本文方案实现了产品的全流程可追溯,能够对更新后的数据进行溯源,而其他文献的方案均未实现该功能. 上述对比表明,本文方案保证了可信分布式数据治理系统的保密性、可搜索性、可更新、细粒度访问控制及全流程的可追溯性,而文献[2~5]方案均无法满足所有性质.

4.2. 系统性能测试

根据系统初始化阶段、密钥生成阶段、物联网数据加密和共享阶段、物联网数据请求阶段、区块链聚合证明阶段及区块链聚合验证阶段的划分,对区块链安全数据共享系统的通信开销和计算开销进行测试. 实验结果如图2~5所示.

图 2

图 2   密钥生成阶段的计算和通信开销

Fig.2   Computation and communication overhead of key generation phase


图 3

图 3   数据提交阶段的计算和通信开销

Fig.3   Computation and communication overhead of data submission phase


图 4

图 4   数据更新阶段的计算开销

Fig.4   Computation overhead of data update phase


图 5

图 5   数据读取阶段的计算开销

Fig.5   Computation overhead of data read phase


图2所示为密钥生成阶段的计算和通信开销. 图中,$ n $为用户属性数量,$ N $为产品数据生成者数量,T为计算开销,B为通信开销. TB都随着$ n $线性增长,选择$ n $为5、10、15、20、25、30. 在密钥生成阶段,访问控制中心会执行$ \mathrm{A}\mathrm{B}\mathrm{E}.\mathrm{K}\mathrm{e}\mathrm{y}\mathrm{G}\mathrm{e}\mathrm{n} $算法,为用户生成密钥$ ({K}_{0},{K}_{1}) $;此外,访问控制中心为属性集合中的每个属性$ {A}_{i} $分别生成密钥$ \left({K}_{i,2},{K}_{i,3}\right) $,其中$ i\in \{1,\cdots ,n\} $. 随着$ n $的增长,访问控制中心在初始化过程中的计算量和通信量会随之增加. 当n = 30时,为了实现112、128和192 bit的安全性,密钥生成的时间开销分别为63.86、81.592和131.812 ms, 通信量分别为2.584、 2.83和4.307 kB.

图3所示为数据提交阶段的计算和通信开销. 两者都随着$ N $的增长而线性增长,最终选定$ N $的取值分别为5、10、15、20、25、30,将用户属性数量设置为5. 在数据提交阶段中,前$ N-1 $个产品数据生成者$ {P}_{1},\cdots ,{P}_{N-1} $会依次执行聚合签名方案中的$ \mathrm{A}\mathrm{g}\mathrm{g}\mathrm{S}\mathrm{i}\mathrm{g}.\mathrm{S}\mathrm{i}\mathrm{g}\mathrm{n} $算法,为数据产生签名. 第$ N $个数据生成者会执行$ \mathrm{A}\mathrm{g}\mathrm{g}\mathrm{S}\mathrm{i}\mathrm{g}.\mathrm{S}\mathrm{i}\mathrm{g}\mathrm{n} $算法产生签名,运行$ \mathrm{A}\mathrm{B}\mathrm{E}.\mathrm{E}\mathrm{n}\mathrm{c} $算法将压缩数据进行加密产生密文. 随着$ N $的增长,产品数据生成者在数据提交过程中的计算量和通信量会随之增加. 当N = 30时,为了实现112、128和192 bit的安全性,密钥生成的时间开销分别为39.372、50.251和86.959 ms,系统的通信量分别为3.281、3.59和5.643 kB.

图4所示为数据更新阶段(链上和离链情况)的计算开销. 可以看出,链上数据更新的时间比离链更新的计算时间长,链上更新时间随着$ N $而线性增长,离链更新时间随着第$ j $个数据生成者$ {P}_{j} $的序号顺序而线性递增. 数据更新的运算量主要来自于聚合签名验证的计算开销,耗时最多的是双线性对运算. 当N = 30时,对于secp384r1的椭圆曲线(192 bit安全性),链上数据更新的计算开销是409.355 ms,离链数据更新的计算开销是250.895 ms($ j=18 $时).

图5所示为数据读取阶段的计算开销. 链上和离链情况在本阶段消耗的计算量相同,主要来自$ \mathrm{A}\mathrm{B}\mathrm{E}.\mathrm{D}\mathrm{e}\mathrm{c} $算法中双线性对的运算开销,随着属性数量而线性增长. 当n = 30时,为了实现112、128和192 bit的安全性,数据读取的时间开销分别为251.61、311.104和575.393 ms.

表3所示,将本系统与文献[2~5]的4个方案进行性能比较,包括系统各阶段的计算开销和通信开销,其中“—”表示not applicable,即该方案不包含此算法. 性能对比测试选取了secp256k1椭圆曲线作为曲线参数,将用户属性数量设为5,产品数据生成者数量设为5. 文献[3]的方案相较于其他方案性能更优,这是因为其不提供隐私性保护和访问控制功能,只进行了存储证明(proof of storage allocation)的优化. 文献[2]方案的密钥生成计算和通信开销低于本文方案,数据提交、更新和读取开销均高于本文方案. 文献[4,5]的方案不支持基于区块链的文件存储,其计算和通信量均高于本文方案.

表 3   数据治理方案的性能对比

Tab.3  Performance comparison of data governance program

方案T/ms
密钥生成数据提交数据更新(链上)数据更新(离链)数据读取(链上)数据读取(离链)
文献[2]方案14.86531.08154.89348.68475.61275.612
文献[3]方案8.66415.648
文献[4]方案18.96426.98459.302
文献[5]方案26.743260.481126.846
本文方案15.79217.35148.68632.46458.61458.614
方案B/kB
密钥生成数据提交数据更新(链上)数据更新(离链)数据读取(链上)数据读取(离链)
文献[2]方案0.5822.5407.6816.5841.0831.083
文献[3]方案0.8930.084
文献[4]方案0.8691.2280.736
文献[5]方案1.0673.6822.948
本文方案0.5841.3440.6820.4450.0890.089

新窗口打开| 下载CSV


上述实验结果显示,利用提出的基于区块链的可信分布式数据治理方案,可以实现产品数据的可信分布式治理,提高数据管理的效率. 评估结果显示,方案中的各个阶段在不同的椭圆曲线上效率较高(计算开销均低于600 ms),通信量低(均低于5.7 kB). 与现有方案的功能对比表明,本文方案能够有效地保护产品数据的隐私性,提供细粒度的访问控制,对产品数据生成的全流程进行溯源.

5. 结 语

本文在属性基加密和聚合签名的基础上,为工业产品数据设计了隐私保护的数据上传、数据更新和数据读取算法. 在将产品数据提交到区块链系统前,采用离链处理过程对产品数据进行压缩和加密. 设计了2种类型的交易来支持离链/链上数据访问,保证产品数据在离链过程中可用. 本文方案保证了数据的隐私性、细粒度的访问控制和数据全流程溯源,区块链的分布式架构可以有效地防止单点故障攻击. 在计算和通信开销方面对基于区块链的可信分布式数据治理方案进行的性能评估表明,该方案具有较好的性能.

本文所提方案的潜在限制包括数据隐私和安全性方面的挑战,特别是涉及商业机密和个人身份的敏感信息时,需要采取额外的措施(如同态加密、多方计算)确保数据的隐私性和可计算性. 标准和互操作性问题是需要解决的关键,以促进不同工业系统间数据的集成和共享. 未来的改进方向包括性能优化、隐私保护技术的进一步研究和标准制定等方面的探索,以推动工业数据治理方案的发展和应用.

参考文献

ZHANG Yongpin, XU Xiwei, LIU Ang, et al

Blockchain-based trust mechanism for IoT-based smart manufacturing system

[J]. IEEE Transactions on Computational Social Systems, 2019, 6 (6): 1386- 1394

DOI:10.1109/TCSS.2019.2918467      [本文引用: 1]

GARCIA R D, RAMACHANDRAN G S, JURDAK R, et al

Blockchain-aided and privacy-preserving data governance in multi-stakeholder applications

[J]. IEEE Transactions on Network and Service Management, 2022, 19 (4): 3781- 3793

DOI:10.1109/TNSM.2022.3225254      [本文引用: 10]

XU Tianyi, QIU Tie, HU Dengcheng, et al

A scalable two-layer blockchain system for distributed multi-cloud storage in IIoT

[J]. IEEE Transactions on Industrial Informatics, 2022, 18 (12): 9173- 9183

DOI:10.1109/TII.2022.3179733      [本文引用: 6]

杨业平, 林德威, 黄芳芳, 等. 基于区块链的物联网安全数据共享系统[J]. 福州大学学报: 自然科学版, 2021, 49(6): 739-746.

[本文引用: 9]

YANG Yeping, LIN Dewei, HUANG Fangfang, et al. A blockchain-based secure data sharing system for the internet of things [J]. Journal of Fuzhou University: Natural Science Edition , 2021, 49(6): 739-746.

[本文引用: 9]

宁建廷, 黄欣沂, 魏立斐, 等

支持恶意用户追踪的属性基云数据共享方案

[J]. 计算机学报, 2022, 45 (7): 1431- 1445

DOI:10.11897/SP.J.1016.2022.01431      [本文引用: 11]

NING Jianting, HUANG Xinyi, WEI Lifei, et al

An attribute-based cloud data sharing scheme supporting malicious user tracking

[J]. Journal of Chinese Computer Science, 2022, 45 (7): 1431- 1445

DOI:10.11897/SP.J.1016.2022.01431      [本文引用: 11]

张建标, 张兆乾, 徐万山, 等

一种基于区块链的域间访问控制模型

[J]. 软件学报, 2021, 32 (5): 1547- 1564

[本文引用: 1]

ZHANG Jianbiao, ZHANG Zhaoqian, XU Wanshan, et al

A blockchain-based inter-domain access control model

[J]. Journal of Software, 2021, 32 (5): 1547- 1564

[本文引用: 1]

WANG Chao, WANG Shuo, CHENG Xiaoman, et al

A privacy and efficiency-oriented data sharing mechanism for IoTs

[J]. IEEE Transactions on Big Data, 2022, 8 (1): 174- 185

[本文引用: 1]

CHRISTIAN C. Architecture of the hyperledger blockchain fabric [C]// Workshop on Distributed Cryptocurrencies and Consensus Ledgers . Chicago: ACM, 2016: 14-17.

[本文引用: 2]

YANNIS R, BRENT W. Practical constructions and new proof methods for large universe attribute-based encryption [C]// ACM Sigsac Conference on Computer and Communications Security . Berlin: ACM, 2013: 463-474.

[本文引用: 2]

DAN B, CRAIG G, BEN L, et al. Aggregate and verifiably encrypted signatures from bilinear maps [C]// Annual International Cryptology Conference . Warsaw: Springer, 2003: 416-432.

[本文引用: 2]

DATTA P, KOMARGODSKI I, WATERS B. Fully adaptive decentralized multi-authority ABE [C]// Theory and Applications of Cryptographic Techniques. Lyon: Springer. 2023: 447-478.

[本文引用: 1]

YANG Yang, DENG R, GUO Wenzhong, et al

Dual traceable distributed attribute-based searchable encryption and ownership transfer

[J]. IEEE Transactions on Cloud Computing, 2021, 11 (1): 247- 262

LI Wei, XUE Kaiping, XUE Yingjie, et al

TMACS: a robust and verifiable threshold multi-authority access control system in public cloud storage

[J]. IEEE Transactions on Parallel and Distributed Systems, 2016, 27 (5): 1484- 1496

DOI:10.1109/TPDS.2015.2448095      [本文引用: 1]

JOSEPH A, CHRISTINA G, IAN M, et al

Charm: a framework for rapidly prototyping cryptosystems

[J]. Journal of Cryptographic Engineering, 2013, 3 (2): 111- 128

DOI:10.1007/s13389-013-0057-3      [本文引用: 1]

JOAN D, CRISTINA P, JORDI H. The Bitcoin P2P network [C]// Conference on Financial Cryptography . ChristChurch: Springer, 2014: 87–102.

[本文引用: 1]

Ethereum [EB/OL]. [2015-07-30]. https://ethereum.org/.

[本文引用: 1]

/