基于区块链技术构建高校可信数据服务应用

2023-12-13 01:15杨春节
关键词:背书数据服务哈希

杨春节①

(安徽农业大学 信息化办公室,安徽 合肥 230036)

0 引言

进一步改进区块链的开发方式,采用接口技术,提供简单易用、语言无关性的区块链服务接口,简化传统信息系统与区块链集成,实现数据上链、验证、防篡改,可以推动在高校信息化建设中普及区块链技术,加强数据监管,建设可信数据。但当前高校可信数据建设步骤极其缓慢,应用区块链技术仍处于探索阶段,主要原因归结于:(1)可信数据服务建设需要投入大量研发成本,软件厂商并未将区块链技术纳入到软件设计范围,主动应用区块链技术的积极性不高;(2)高校在全局可信数据建设方面不完善,普遍未建设可信数据基础设施及面向第三方信息系统的可信数据接入服务;(3)有利于可信数据建设的区块链技术应用具有一定的技术门槛。信息系统开发及应用中融合区块链技术是提升数据安全的一条有效途径,数据上链及链上数据校验可以加强信息系统数据的安全管理和监测;高校传统信息系统众多,均以中心化数据库模式部署,公司运维人员对数据的管理权限过大,开发厂商在产品设计时过多地信赖中心化模式,而没有考虑其中的各种风险。信息技术发展的同时,网络安全和数据安全面临的情况也变得更加复杂,其中有黑客攻击行为,也有删库跑路等工作人员行为,由此也带来各种数据风险及中心化数据权威性等信任问题。围绕这一问题,国内外研究学者开展诸多研究,也取得很多创造性的成果,如在数据采集、存储、应用等过程中优化加密算法[1]、应用区块链[2]和密码技术[3]等来提高数据安全和可信。其中区块链具有去中心化、数据透明可追踪、不可篡改和伪造等特点,已成为学术界和工业界的研究热点。在相关研究中,区块链关键技术、区块链安全、智能合约、基于区块链的信息系统开发等研究较多,但在高校信息化中为传统信息系统提供区块链支撑服务,简化传统信息系统接入区块链、加强数据安全可信的研究较少。蔡维德等[4]实现Java版的区块链连接器—JBCC,给传统信息系统引入区块链技术提供可借鉴的方法,但这需要传统软件开发团队进一步掌握区块链技术。朱昱锦等[5]提出的“云计算让传统信息行业变得前所未有的便捷。利用云计算所提供的服务,只需要简单的开发工作,便可以完成需要大量研发和运营时间成本的任务”。区块链即服务,简化区块链应用是普及区块链技术的一条有效途径。本研究从高校信息化建设实际出发,立足可普及性,侧重应用推广,进一步简化区块链的应用门槛,传统信息系统开发者可以以熟悉的接口技术使用区块链加强原系统的数据安全,而无须了解区块链的技术原理和实现过程,研究成果对促进区块链在高校可信数据建设方面具有较好的促进作用和推广价值。

1 关键技术

1.1 区块链

区块链把数据分成不同的区块,每个区块通过特定的信息链接到上一区块的后面,前后顺连,呈现一套完整的数据。每个区块的块头包含前一个区块的哈希值,该值是对前区块的块头进行哈希函数计算而得到。区块之间都会由这样的哈希值与先前的区块环环相扣形成一个链条,存储于其中的数据或信息,具有不可伪造、全程留痕、可以追溯、公开透明和集体维护等特征。区块链接示意如图1。

图1 区块链接

1.2 Fabric

Fabric 比较适合构建联盟链,适用于行业、团体间构建可信数据应用。它是超级账本联盟推出的核心区块链框架,适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标,Fabric被建设为一个模块化的、支持可插拔组件的基础联盟链框架。

1.3 智能合约

“智能合约”的概念产生于1995年,由密码学家Szabo首次提出,是一种模块化、可重用的自动执行脚本,可替代第三方信任平台实现交易双方直接进行可信交易,这些交易可追溯且无法发生回滚[6]。智能合约按照实际业务逻辑定义相应规则,调用智能合约将会按照合约定义的交易规则来实现链上的交易,访问链上信息。

1.4 API接口

API应用程序编程接口允许2个不相关的应用程序相互通信[7]。它就像一座桥梁,从一个程序接收请求或消息,然后将其传递给另一个程序,翻译消息并根据API的程序设计执行协议。

2 研究过程与结果

本文提出的可信数据服务总体架构如图2所示,分为可信数据服务基础平台层、数据上链管理平台及接口服务层、调用层。

可信数据服务基础平台层负责数据存储且具备真实可信、不可篡改等特性。数据上链管理平台及接口服务层负责管理接入的信息系统及数据源,对数据上链、查询等API接口进行授权。调用层为已建设的中心化模式的信息系统,相关信息系统在数据上链管理平台中获得授权后,可以调用接口服务层的API接口实现数据异步上链。API接口调用不影响信息系统原有功能,通过在原系统的数据新增、修改、删除、查询函数中增加对API接口的调用,实现数据上链、链上数据变动历史查询、链上数据核验等。为区分不同的信息系统、不同的表及表记录,这里约定链上数据的唯一标识为由系统标识+表名+表唯一标识(表唯一标识一般为表ID)构成。系统标识由接口管理员在授权接入时确定,表名由业务系统用户根据上链业务需要自行添加。

在这种架构中,信息系统会通过API(数据上链管理平台提供)间接与区块链节点进行互动,优点在于简化信息系统应用区块链技术、轻松实现数据链上存证与验证。

2.1 可信数据服务基础平台

在查阅文献和技术文档的基础上,选择Fabric作为区块链基础平台,部署区块链平台和区块链浏览器,命名为“青禾链”,依赖区块链链上数据不可篡改等特点,将其作为可信数据服务的基础支撑平台。

2.1.1 数据存储方式

从数据管理的角度,青禾链是一个分布式数据记录系统,数据均存储在区块内并以区块的粒度进行管理,不可篡改。在区块链系统中,一个区块前后分别连接父区块和子区块,各个区块包含区块头和区块体。区块头包含当前区块的全部数据,以及用于确保其完整性和验证共识的关键信息,区块头有6个字段组成。按照功能又可分成3部分:第1部分父区块的Hash值,用于将该区块与区块链中前一区块相连;第2部分是难度、时间戳和随机数,与节点记账权有关;第3部分是Merkle根数据,与区块体中交易数据有关。区块本身的哈希值(区块主标识)是通过SHA256算法[8]对区块头进行二次哈希计算得到的32位字节哈希值。区块体中存放被纳入在该区块中的交易信息,可以是一笔交易,也可以是多笔交易。为在区块头中记录区块体中的交易数据,同时为防篡改,区块链中用Merkle树[9]来组织数据。图3中,以交易1、交易2、交易3、交易4,4笔交易构成一个区块体,先计算4笔交易的哈希值,然后将哈希值放置相应的叶子节点。这些叶子节点是Hash1、Hash2、Hash3和Hash4,然后再将相邻的叶子节点哈希值串接起来再次哈希计算,形成父节点Hash12、Hash34(如果交易数量是奇数,则前面两两计算哈希值,最后一个单独计算哈希值),最终得到Merkle树的根哈希值Hash1234,并存储至区块头,作为交易数据的指纹。Merkle树逐层记录哈希值的特点使得它具有对数据修改敏感的特征,可以快速地比较大量数理、快速定位数据块的修改、零知识证明[10]。

在区块链技术中,每个区块都包含前一个区块的哈希值,这个哈希值指向前一个区块中所有记录的数字指纹,整个区块链就形成一个不可逆的系统,区块之间紧密相连,任何一处数据的修改都会导致这个区块之后所有区块哈希值发生变化,这个过程就会被其他节点检测到并排除掉,并将其视为无效数据。这种强大的防篡改特性对可信数据存储具有重要意义。

2.1.2 数据存储过程

青禾链由1个排序节点、3个组织节点组成,创建1个通道,运用GO语言[11]开发链码。区块链网络不直接面向用户和信息系统提供服务,仅面向数据上链管理平台提供服务。数据上链管理平台代理各信息系统负责在区块链平台提交交易,实现存证、验证等。具体流程如图4所示。

图4 数据存储流程及原理

(1)客户端业务请求。客户端访问各信息系统,与各信息系统交互完成数据请求和发送。为加强对重要环节、关键数据的监管,各信息系统在完成业务处理后,通过数据上链服务平台提供的授权和API,接口向该平台提交数据上链、查询的请求和相关数据,服务平台代理完成与区块链的交互。

(2)应用程序(数据上链服务平台)构造交易提案。应用程序(数据上链服务平台)获取区块链网络的授权,利用SDK(Software Development Kit)与区块链网络交互,在收到信息系统提交的请求后,构造交易提案,该提案是一个调用智能合约功能函数的请求。应用程序把交易提案发送给组织1和组织2等,背书策略要求所有交易都要2个节点背书,因此请求要到经过组织1和组织2或者其组织至少2个节点背书,交易提案中包含带有确定输入参数的调用链码方法的请求,该请求的作用是读取或者更新账本。

(3)区块链网络中背书节点(Endorser)验证签名并模拟执行交易。组织1和组织2中等背书节点Endorser Peer,收到交易提案后,验证签名并确定提交者是否有权执行操作。背书节点将交易提案的参数作为输入、执行交易,生成包含执行返回值、读操作集合和写操作集合的交易结果,此时不会更新账本,这些值的集合、背书节点的签名和背书结果作为提案的结果返回给应用程序(数据上链服务平台)SDK,SDK解析这些信息,判断是否应用于后续的交易。

(4)应用程序(数据上链服务平台)把交易发送到共识服务节点(Orderers)[12]。应用程序(数据上链服务平台)验证背书节点的签名,并比较这些提案响应,以确定其是否相同,当收到足够数量相同的“提案响应”后才会执行下一步。应用程序先确定响应信息是否满足指定的背书策略;若满足,将交易提交给排序节点(Orderers),对于查询请求,应用程序只查看响应结果,通常不会将交易提交给排序节点。

(5)区块链网络排序服务进行排序并将交易封装成区块。交易发送给排序服务(Order节点),交易包括读/写集,背书节点签名和Channel ID[13]。排序服务从所有的channel中接收交易,利用排序算法(kafka等)按时间和通道进行排序,并将每个channel中的交易打包成区块。

(6)区块链网络验证和提交交易。排序节点(Order)将交易区块发送给channel 上所有的peer 节点(包括commit peer,endorsing peer等),peer节点对区块内的交易进行验证:确保满足背书策略;确保自交易执行生成读集以来,没有对读集变量的账本状态进行更改。验证完之后对区块中的交易进行标记为有效或无效。

(7)区块链账本更新。Peer节点将区块添加到区块链上;Peer节点将每个有效交易写入各自的账本中以及世界状态;系统会发出一个事件,通知应用程序(数据上链服务平台)本次交易(调用)已被不可更改地附加到区块链上,同时还会通知交易验证结果是有效还是无效。

2.1.3 链上数据浏览

部署“青禾链”浏览器用于区块链中网络、区块、交易等信息的浏览。

网址:https://educhain.ahau.edu.cn/explorer。在区块列表中可以查看块编码、通道名称、交易数量、数据哈希、块哈希、上块哈希等信息,也可以根据块哈希和交易哈希查询区块;在交易列表中可以查看交易的创建者、通道名称、交易ID、类型、链码、时间等信息,也可以根据块哈希和交易哈希查询交易。同时,通过交易ID上的链接可以查看交易的详情(包含链上数据)。

2.1.4 特性分析

如果恶意篡改[14]区块链上某个区块的信息,首先需要暴力破解被攻击区块的哈希值,由于区块链后续的每个区块都保留有前一个区块的哈希值,必须要连同破解被攻击区块后续已经生成的所有区块和正在生成的区块Hash值,这显然并不现实。这种特性为构建可信数据服务基础平台提供有力支撑。

2.2 数据上链服务平台及接口服务层

采用JAVA 开发数据上链服务平台,平台包含接入系统的管理及上链数据管理等相关功能。同时,采用SDK与区块链进行交互,进一步包装实现语言无关性的API接口,面向调用层的各个信息系统提供接口服务。主要功能包含控制台、系统接入、表管理、链上数据、操作日志和系统管理等功能模块。API接口包含数据上链、数据校验、数据查询、数据溯源等接口。数据上链接服务平台总体功能如图5所示。

图5 数据上链服务平台主要功能

功能模块介绍。控制台:主要显示链上数据、交易量、校验量、最近交易、链上数据分布等统计数据;系统接入:管理可使用接口的系统,在进行授权操作时生成AppId 和AppSecret 参数,用于接口调用时的验证;表管理:设置上链数据的表名称,该表名称是组成前文链上数据的唯一标识的关键信息;链上数据:可以查看成功上链的数据(私有数据允许自有加密算法加密);操作日志和系统管理:系统用户、角色、操作日志等查看和管理。

API接口介绍。数据上链接口(接口地址:/api/v1/uplink/data/upload):数据上链是指将业务系统中有价值或有审计需求的数据进行上链,利用区块链的特性保障数据不被篡改且能溯源。在接口设计中,数据上链接口变量包含recordid、data、data_hash、memo 等,调用接口保存数据至区块链时,如果保存成功后返回交易ID(开启debug 模式,数据不上链,不形成交易,接口中返回的交易ID值使用????表示;关闭debug 时,将返回数据上链后的交易ID 用作数据上链前的开发调试);链上数据查询接口(/api/v1/uplink/data/cc):数据查询是指第三方信息系统根据record_id,调用接口定位、获取链上数据;数据溯源接口(/api/v1/uplink/data/cc/history):返回指定的record_id所有的历史变更记录数据;业务数据校验接口(/api/v1/uplink/data/cc/check):根据交易数据Hash校验该值与链上数据Hash值是否一致(0-不同,1-相同)。

2.3 高校业务系统的可信数据服务实践

为对接口进行验证,笔者在工作中开展门户网站征求意见公正派奖活动,在传统投票系统的基础上,采用上述API轻松集成区块链技术,实现数据上链,确保派奖活动公正、可信,实践过程如图6所示。

图6 在业务系统中引入可信数据服务实践步骤

2.3.1 投票系统改造

程序开发人员使用熟悉的编程语言(本文以JAVA为例)创建线程类,使用HTTP的POST方法,调用数据上链接口,在保存投票结果时,新开线程实现数据上链,对原系统的改造和影响极小,可信数据服务接口的易用性、语言无关性得到验证。投票程序的新增函数中仅需增加4行代码,示例如下:

public String saveOrUpdate(){

……

QuestionanswerToChainThread questionanswerToChainThread = new QuestionanswerToChainThread();questionanswerToChainThread.setCatalogbh(catalogbh);questionanswerToChainThread.setAnsweruser(questionanswerArrayList.get(0).getAnsweruser());questionanswerToChainThread.start();

上链数据内容如下:

record_id:系统标识+表名+唯一标识

data:用户ID+投票内容

data_hash:取“用户ID+投票内容”的MD5值

memo:This is userid′s chaindata。

2.3.2 投票系统应用

在完成投票系统的改造后,在学校门户网站设计征求意见投票工作中进行应用。(1)首先发布通知,约定派奖规则。有效时间段内实名制参与调查,调查数据上链生成交易ID,末位数字为2或0,按时间顺序取符合上述条件的前50名派送奖品;(2)调查阶段。用户参与调查,业务系统保存数据时调用可信数据服务平台的数据上链接口,实现数据异步上链,生成交易ID。师生参与调查后可以查看链上ID,如图7所示。

图7 数据上链后的交易ID

2.3.3 恶意篡改数据

为检测数据恶意篡改后的感知,通过数据库管理工具Navicat 连接数据库、修改影响链上Hash 值的用户ID或者投票内容,在投票填写内容中增加“恶意”二字,此时发现链上ID处显示内容为“链上数据不一致”,如图8所示。

图8 数据篡改后的感知

3 讨论

通过相关工作,初步构建基于区块链技术的高校可信数据服务,进行小规模的实践。高校信息系统众多,加强关键数据安全监管非常必要,面向信息系统提供可信数据服务具有可行性。可信数据服务是全局数据安全监管的可行路径,但需要稳定、可靠,笔者将在后续研究中进一步扩大信息系统接入数量,探索高并发场景下的数据上链性能问题,不断提高可信数据服务的质量和效率。

猜你喜欢
背书数据服务哈希
地理空间大数据服务自然资源调查监测的方向分析
背书是写作的基本功
背书
如何运用税收大数据服务供给侧结构性改革
基于频繁子图挖掘的数据服务Mashup推荐
背书
基于OpenCV与均值哈希算法的人脸相似识别系统
基于维度分解的哈希多维快速流分类算法
背书连续性若干问题探析
一种基于数据服务超链进行情景数据集成的方法*