分享

基于区块链的电子政务数据共享设计研究

 宋志刚k5lpi995 2020-05-02

谷宁静.基于区块链的电子政务数据共享设计研究[J].信息安全与通信保密, 2020(04):91-97.

区块链技术提供了链上数据不可篡改、共享可查的链上记录等能力,提供了多方信任和数据共享机制。因此,区块链技术可以实现各个政府部门之间的数据共享访问验证。为此,针对“一网通办”电子政务数据共享的需求,深入的对区块链技术进行研究,将电子政务数据存储在区块链上,采用主链和子链的分层架构来增强了权限管理、安全控制等机制,基于 Hyperledger Fabric1.4来设计的,并对智能合约和区块链的存储的核心模块的开发进行阐述。

0 引 言

为进一步推动构建一体化的网上政务“一网通办”服务体系,实现各政府部门业务协同,上海市人力资源和社会保障局提供了统一的数据交换平台,设计基于社保、居住证积分、职称职业资格等统一政务信息资源库模型。

然而,在实践中由于各委办的应用系统架构和网络架构、硬件服务器性能差异较大等问题,该统一数据交换平台采用了数据实时交换接口、ftp、数据库文件交互等不同交互模式,导致仍然存在信息共享范围不广、数据交换实时性不高、数据生命周期管理困难、数据正确性和安全性管理困难、数据信息泄露等诸多问题。

区块链提供了链上数据不可篡改、共享可查的链上记录等能力,提供了多方信任和数据共享机制。区块链技术利用共享记录账本可以实现数据生命周期的追溯管理,还可以对数据共享授权实现精细化的管理。

区块链具有的可溯源,不可篡改,去中心化、高度安全等特点,能有效解决当前政务信息资源共享中存在的上述问题。为此,本文构建了基于区块链技术的电子政务数据信息资源共享系统,针对“一网通办”电子政务数据共享的需求,将政务数据存储在区块链中,同时设计了主链和子链模式增强了权限管理、安全控制等能力。

1 基于区块链的政务信息共享架构体系

本文依托区块链底层技术,针对电子政务数据共享的需求,通过数字证书身份验证加入数据共享网络中,数据提供方仅将数据的摘要值或者加密后的密文发布到区块链中。数据需求方从区块链获取数据提供方发布的数据信息,发布数据权限请求到区块链。数据提供方根据区块链上的信息获取数据需求方发布的数据权限请求,权限验证通过后,将结果发布到区块链上。数据需求方则可以访问该共享数据,基于区块链的电子政务数据共享设计模型如图1所示。

基于区块链的电子政务数据共享设计研究

图1 基于区块链的电子政务数据共享设计模型

Hyperledger Fabric网络中的节点必须经过授权认证后才能加入,避免了采用PoW共识算法的资源开销,大幅提高了交易处理效率。Hyperledger Fabric采用模块用了高度模块化设计,将权限认证模块 (MSP)、区块提交模块 (committing peers) 等进行分离部署,实现了模块的插件式管理 (plug-in/plug-out),适合企业联盟链应用场景。

因此,基于区块链的电子政务数据共享系统是基于Hyperledger Fabric1.4来设计的。按照业务类型或者参与方对数据的访问需求,将区块链划分为若干通道,每个通道即是一条物理区块链,与其他通道的数据隔离存储和传输,数据只能被此通道的参与方访问。在单个通道中,可以使用“私有数据集”特性管理数据的可访问范围。通过在智能合约代码中定义规则,只允许特定的角色有权限访问数据。

每个委办通过通道channel来实现跟其他委办数据共享,每个通道上均对应着一个账本,该账本是该通道上的成员共享的,该账本和KV数据库都是完整的副本,通过任意节点可以快速查询到区块链中的政务数据信息。

委办提交一个向区块链新增数据信息的交易,会首先在节点上验证身份,身份验证通过再验证数据交易信息,数据交易信息验证将该数据信息加密存储到区块链中,通过后order节点交易共识到其他节点,最后会在kv数据库中增加数据账本。本文设计了一个主链和子链双链结构,主链管理子链,主链和子链通过智能合约通信。

基于区块链的电子政务信息共享系统关键模块机制主要包括主链子链双链机制设计实现、智能合约开发设计、区块链数据存储机制实现、还有身份认证和权限管理机制。

2 基于区块链的政务信息共享关键机制

2.1 双链机制设计

本文设计了一个双链结构,这种结构具有两个独特属性:1)主链结构和子链结构, 2) 不可变主链和弹性子链。弹性子链解决区块链的可伸缩性、吞吐量和延迟问题。主链存储账本和资产信息,如状态、交易以及智能合约。主链适合存储少量信息,因为它是不可变的。主链负责管理整体交易和子链。子链通过智能合约与主链通信。

存储每个小块的元信息和哈希存储在子链中,称为文件状态。主链对应多个子链,跟主链共享交易账本,根据账本信息检索到区块信息,然后获取所需的政务共享数据信息。

2.2 智能合约

在区块链网络中,智能合约在每个节点的一个独立空间运行,智能合约负责区块链网络的权限控制,对区块链数据的存储,以及对数据的访问,只有满足智能合约的条款才能对数据进行操作。

另外,智能合约也是区块链网络与外界交互的接口,一般提供有区块链内部访问 SDK等,便于用户获取链上数据。通过智能合约和访问控制策略来限制访问数据的角色和用户,通过智能合约的方式提供了更灵活的访问权限控制,可以针对节点、针对组织、针对角色、针对用户制定不同的策略。

Hyperledger Fabric( 后面简称 HLF)的智能合约应用就是部署在区块链网络中的无状态的、事件驱动的、支持图灵完备的自动执行代码,直接与账本进行交互,实现了逻辑与数据的分离,跟底层账本是相互分开的,如果升级智能合约的时候并不用往新的智能合约当中同步迁移账本数据。故本系统采用HLF智能合约框架。本模型涉及的区块链账本操作均通过智能合约完成。智能合约原理图如图2所示。

基于区块链的电子政务数据共享设计研究

图2 智能合约原理

本文设计单独的应用服务器,主要完成通过fabric-node-sdk来调用智能合约,还在前端界面进行结果反馈,前端界面采用zookeeper+dubbo的设计框架。流程设计如图3所示。

基于区块链的电子政务数据共享设计研究

图3 智能合约设计流程

本文就对居住证积分数据共享平台的智能合约设计进行阐述。功能描述:该智能合约实现了一个简单的上海市居住证积分信息共享管理的案例。背景为:对已经办理上海市居住证的人员,符合一定条件的人才可以申请上海市居住证积分,享受教育、医疗、购房等市民待遇, 一年一申请。

对于在上海市人力资源和社保保障局审批通过的有居住证积分信息,必须提供给教委、医保、房管局等部门可以随时共享查验。该智能合约中三种角色如下:上海人社局、个人、需要居住证积分认证的机构。上海人社局可以根据相关信息在区块链上为某个人授予居住证积分信息,相关机构可以查询某人的积分信息,由于使用私钥签名,确保了信息的真实有效。

另居住证被注销或者违法,上海人社可以修改或者注销其相应的积分信息。账户私钥应该由安装在本地的客户端生成。智能合约中通过结构体生成个人居住证积分数据模型,如表1积分数据模型设计表所示。

表1 积分数据模型设计表

基于区块链的电子政务数据共享设计研究

fabric账本中数据如果要进行修改,则必须通过链码 (chaincode) 来实现;fabric-sdk-node 是封装好的nodeSDK,通过它调用部署在fabric上的智能合约,实现设定的业务逻辑,首先调用install.js,实现把智能合约安装到 fabric上,然后调用instantiate.js,实现实例化智能合约,这两个js文件都是按照node.js语法设计,通过export方式进行导出。智能合约中的函数模型设计如表2所示。

表2 智能合约中的函数模型设计表

基于区块链的电子政务数据共享设计研究

2.3 区块链数据存储机制

针对电子政务数据共享需求,本文对区块链的存储结构进行了相应的简化,减少了工作量证明等字段,本文中区块链上的账本数据包括区块链数据和状态数据,都使用块链式的存储模型,区块链由包含N个随时间排序的块串联起来而组成。每个区块由区块头和区块体两部分组成,每个区块头中包含区块元信息,还包含一个指向前一个区块头哈希值的指针,该指针就是用来防止区块链被篡改的关键因素。

所有数据记录都存在区块里,每一区块包含了前一区块所有数据记录的Hash值。按照这个方式,最新的区块总是间接包含了所有之前的区块的数据交易信息。如果更改区块链中任何一个数据信息,会让所有之后的区块的Hash值发生变化,这样就验证无法通过。因此,只要验证最后一个区块的Hash值就相当于验证了整个账本,这样的区块链构成了一个易验证、不可篡改的总账本。

针对居住证积分信息的区块头信息的设计如表3所示,其中业务数据就是指的居住证积分详细信息的jason字符串。区块链式存储结构如图4所示。

表3 区块头结构

基于区块链的电子政务数据共享设计研究

基于区块链的电子政务数据共享设计研究

图4 区块链的块链式存储结构

区块头哈希值:通过对前块哈希、时间戳和Merkle根进行两次SHA3-256计算得。Merkle根节点就是区块中所有业务数据构成的默克尔树根的哈希值,构造原理图如图5所示。以上的哈希值生成算法主要使用SHA3-256(Keccak256)散列算法,实现将任意长度的输入转换成固定长度的输出,是一个单向函数,难以或不可能反推,该算法是目前业界的认可的最为安全的散列算法。

基于区块链的电子政务数据共享设计研究

图 5 Merkle 树根节点构造

2.4 数据写入和检索流程

HLF的存储系统是由普通的文件和kv的数据库 (levelDB/couchDB)组成。每个通道对应了一个账本,账本目录由一个个64MBytes的文件所组成中由以blockfile_000000、blockfile_000001 为命名的格式的文件名所组成。为了能快速检索到区块数据,每个文件的都是64MBytes。

每个区块的数据都会序列成二进制字节码的形式 (本文使用jason)写入到blockfile文件中。在序列化的过程中,程序以append方式打开blockfile文件,然后将区块大小和和区块数据写入至blockfile文件中。在序列化的过程中,如果检测到当前写入文件尺寸加上区块尺寸大于64MBytes,则会重新生成一个dat文件。

以下是区块数据写入的具体流程设计:

(1)区块头数据写入,包括区块高度(该区块到区块链上区块头的区块数量)、交易哈希值和前一个区块的哈希值等信息;

(2)写入交易数据,依次写入的数据为区块包含交易总量和每笔交易详细数据;

为了便于HLF的快速查询,区块和交易在blockfile文件中的索引信息会保存在kv数据库中,该索引由在kv数据库中存储的最终的 LevelKey 值有前缀标志和区块hash组成,LevelKey值由channel_name,chaincode_name和chaincode中的key值组合而成,而LevelValue的值由区块高度,区块hash,本地文件信息(文件名,文件偏移等信息),每个交易在文件中的偏移列表。

2.5 身份认证和权限管理机制

本系统使用数字证书CA作为身份认证的凭证。数字证书CA包含了该证书拥有者的身份信息和公钥信息,以及数字签名。公开密钥基础设施PKI采用CA证书来管理公钥,通过CA证书,用来实现通信的双方的身份认证和通信安全。Membership Service Provider,联盟链成员的证书管理,它定义了哪些RCA以及ICA在链里是可信任的,包括定义了channel上的合作者。

HLF强化了隐私保护能力,HLF支持在同一套企业网络上建立多个不同的通道channel,一个通道等同于一个子链,每一个通道都有自己的区块链和访问控制,彼此互不影响。每个通道都是和具体的某一个账本相关联的,通道是用来限制数据信息传播的范围。

每个交易都是和唯一的通道关联的,可以明确地限定哪些节点能够获知这个交易信息。这有利于复用基础设施,如人社和公安部门可以建立一个通道来分享居住证办理信息,而房管局和税务建立另一个通道来分享税务数据。每个通道上都有N个成员,他们就是一个区块链网络的子链。

通道权限限制策略主要包括获取通道的交易、区块等数据的读操作和向通道发起交易的写 操作、还有加入通道、修改通道的配置信息的管理操作等。这些策略靠修改策略 (mod_policy)来进行管理。操作者的签名组合需要满足相应的身份规则策略,才能够被允许执行相应的操 作,会对签名数据按照进行规则校验。符合则说明满足了该策略;不符合的不允许后续操作执行。策略相关的数据结构主要包括Policy、SignaturePolicyEnvelope(内嵌SignaturePolicy结构)和ImplicitMetaPolicy三种数据结构,均在protos/ common/policies.proto文件中定义。

3 结 语

本文通过对区块链技术深入研究,针对电子政务数据信息共享需求,应用了区块链技术中数据防篡改等功能,又增强了权限管理、安全控制等能力。本文使用了目前较为成熟的Hyperledger Fabric智能合约框架,详细地阐述了数据共享中区块链数据的存储写入和读取流程,使用数字证书CA作为网络通信双方用于身份认证及安全通信的保障,并采用了云链结合技术以政务云为依托,为各政府委办提供金融安全级区块链基础设施服务,通过区块链云上的服务,为行业提供安全、可靠、灵活的解决方案。区块链技术发展目前还处于早期阶段,尤其是在电子政务数据共享方面,应用还不广,在以后的发展中,针对数据安全和管理的标准还有待更进一步完善和加强。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多