谭振江,邹孟欣,王坤昊,周 伟
(吉林师范大学 数学与计算机学院,吉林 四平 136000)
2009年开始,比特币的流行使各行各业的目光都聚集到了区块链技术.各领域的研究人员和组织相继投入到将区块链技术应用于各领域的研究中,包括银行业、金融服务业、医疗保健业、供应链行业和IT行业等[1].
2022年,孙志斌[2]提出一种基于软件开发技术的大学教务管理系统,但其本质还是集中式中心化系统,依然存在单点故障的风险,并且缺乏访问控制机制和对数据的隐私保护等.同年,Han[3]提出一种基于离散傅立叶变换的职业教育管理系统,虽然可以有效地节省存储单元的大小和读取旋转因子的次数和频率,从而提高运算速度,但是并没有注意数据安全问题.郭俊[4]提出了基于区块链技术的高校教务管理决策支持系统,利用区块链搭建了共享数据仓库,虽然在区块链框架的支持下数据安全问题得到了有效解决,但是没有考虑不同用户的不同访问需求和相应的隐私保护问题.
本方案利用Fabric平台配置通道解决不同角色的数据获得情况,在保证满足不同需求的同时确保了数据的机密性.同时选择使用Raft 共识协议,因为它可以在部分节点崩溃的情况下工作而不会影响系统,避免了单点故障带来的重大损失风险.而且Raft是一种基于消息传递的一致性算法[5],在分布式系统的实际场景中效率更高.还通过智能合约实现基于属性的访问控制,以根据用户分配的属性来限制数据可访问性,只有满足访问权限的用户才能对加密数据进行解密.所有对数据的访问操作都存储在链上,确保数据的可追溯性和隐私性.
区块链是一种安全的、共享的分布式账本,将分布式存储、密码学、点对点(P2P)通信和共识算法[6]4项技术相结合,实现无中央可信机构要求的情况下匿名、记录和跟踪资源等自主运行过程.它的基本数据结构称为块,由头部分和内容部分组成,使用哈希函数进行识别,并且可以按时间顺序链接为有序列表,称为“链”结构.终端用户节点使用非对称加密方案(公钥和私钥)发布交易,交易数据被打包成块并进行哈希处理.块被传播到所有节点,然后存储并列出到本地链.列表序列由所有参与节点通过“达成共识”方案协作维护,防止对先前块的恶意修改[7],所以在教务管理这种节点众多的应用环境中能够有效利用节点众多的特点提高安全性.区块链基础架构如图1所示.
图1 区块链基础架构
根据系统控制权和交易信息是否公开[8],区块链可分为三类:公共链、私有链和联盟链.公共区块链是一个完全去中心化的平台,对所有人开放,但能源消耗较大且监管困难.私有区块链又被称为“许可的”区块链,通常由一个实体维护和运营,对节点的控制高度集权化,适用场景有限.联盟区块链则同时具有公共链和私有链去中心化和高效的特点.节点需要通过合法证书才能在区块链上发起交易或访问内容,保护隐私的同时可以解决跨机构之间的相互信任问题.教务信息中很多数据涉及个人隐私,不同部门和用户间共享数据的同时也需要做到不同层次的隐私保护,所以联盟区块链更加适合教务信息安全共享的应用需求.
Hyperledger是一个高度模块化的伞形结构的开源区块链项目,包括共识层、合约层、通信层、数据存储模块、加密模块、身份服务模块、策略服务模块、 API和互操作性模块共9个组件.目前Hyperledger正在开发模块化、可扩展的框架,其中包含可重复使用的通用构建块[9].这种模块化方法能够使开发人员在不断发展的过程中试验不同类型的组件,并在不影响系统其余部分的情况下更改单个组件,有助于创建可组合的组件,以构建适合不同需求的分布式账本解决方案.这种模块化方法还意味着可以在不同的模块上独立工作,并在多个项目中重复使用通用模块.Hyperledger架构工作组还为通信、共识、密码学、身份、账本存储、智能合约和策略等问题定义了功能模块和相应接口.
目前,随着技术的进步,有5种基于超级账本的框架,分别是Burrow、Fabric、Indy、Iroha和Sawtooth.据IBM介绍,最频繁被使用的平台是企业级区块链Hyperledger Fabric,也是本方案选择使用的平台.大量开发人员通过Hyperledger Fabric平台开发具有问责制、透明性和信任机制等功能的应用程序.
Hyperledger Fabric(HLF)是目前联盟区块链中最具有代表性的一种技术,由几个组织参与和管理,所以不是完全去中心化的.HLF专门配置了一个专用证书授权中心——Fabric Certification Authority(Fabric CA)来处理节点(用户)身份注册、吊销等问题.在加入Hyperledger网络之前,用户需要向Fabric CA提出注册申请,以获得合法证书,然后使用合法证书通过Client命令行或Fabric SDK等才可以与区块链网络进行交互.
HLF因为具有模块化架构,可提供高度的机密性、灵活性、弹性和可扩展性[10].其支持的通道可以部署为完全不相交的网络,每个通道都有独立的区块链账本,具有独立的背书集和排序节点[11].块是根据通道ID分布的,通道之间的数据是完全隔离的,以提供隐私和机密性.因此本方案通过设置通道达到不同层次的数据共享,数据访问仅限于获得许可的各方.在不损害数据安全性的情况下,能够提供区块链在交易不可否认性和数据完整性的优势.采用这种新颖的体系结构方法不仅实现了灵活性,同时还改进了区块链对非确定性、资源耗尽和性能攻击等问题的应对方式.
HLF系统架构组成如图2所示.上层应用通过API、SDK和事件来使用成员管理、账本管理、交易管理、链码管理等平台提供的功能[12].成员管理服务包括证书授权中心(Fabric CA)和成员服务模块,主要提供成员登录注册、吊销等服务和权限管理控制,以此保障平台的安全性.区块链服务模块包含分布式账本、P2P协议、共识机制、账本存储,实现数据向各个节点的高效分发,并保证数据的同步及各节点本地账本的一致性.链码(智能合约)支持多种开发语言,使用Docker容器作为隔离环境为智能合约提供部署和运行条件.注册仓储管理实现进行环境的快速部署和测试.
图2 HLF系统架构
HLF还可以通过将监督机构或实体纳入通道成员来实现对内和对外两方面不同的监管要求.此外HLF允许即插即用的组件,例如共识和成员服务等.HLF支持各种针对不同的用例和信任模型定制的共识协议,而本方案选用的Raft 共识协议,在教务管理这种数据量庞大且节点众多的应用环境中优势更加突出.
与传统的公链技术相比,Hyperledger在智能合约的可扩展性和功能完整性方面有了很大的提高.此外,Hyperledger支持多种传统编程语言的智能合约,如Go、Node.js和Java.也就意味着部署在Hyperledger区块链上的智能合约理论上可以支持任何功能[13].所以本方案通过设计智能合约可以实现基于属性的访问控制.
智能合约的基本架构如图3所示,主要由数据层、传输层、智能合约主体、验证层、执行层、应用层6部分构成.
图3 智能合约基础架构
(1)数据层
负责在区块链上数据存储,并通过API与传输层交互,从而将相关数据传输到智能合约主体.
(2)传输层
用来封装与区块链通信和数据传输的协议.
(3)智能合约的主体
包括协议和参数两部分.协议是标准组织发布的一个完全实例化的模板.参数主要分布在合约管理、用户管理、数据管理和业务逻辑中,是合约的关键部分.
(4)验证层
包括验证算法,以确保合约代码和文本的有效性.
(5)执行层
用于封装与智能合约运行环境有关的软件,以保证合约的正常运行.
(6)应用层
以智能合约架构为基础的高级应用,主要用于与计算机交互,进而实现实时交易、分布式计算、可编程金融等应用.
方案架构设计如图4所示,主要由展示层、业务层和存储层3部分组成.
图4 高校教务信息安全共享方案架构图
(1)展示层
主要使用了HTML、JQuery等技术开发了用户前端界面以供用户使用平台的各项功能.该层通过HTTP协议与后端进行通信.
(2)业务层
作为核心层,主要实现平台的业务逻辑.其中功能主要分为教务报告管理、个人信息管理、系统管理、激励机制、Fabric模块.在教务报告管理中主要有新增教务报告、查询教务报告、不同类型用户的鉴定或复议申请提交以及教务报告共享权限设置四个功能.个人信息管理主要提供用户对自己个人信息以及密码设置的修改与查看.系统管理面向管理者提供对于系统账户、Fabric通道和链码的管理.管理者通过这些功能实现对Fabric通道的配置和维护,以及链码的批准和定义.激励机制主要实现随机鉴定节点和教务报告鉴定两个功能.随机选中的节点对提交申请的教务报告进行鉴定,并提交鉴定结果和记录.最终以各节点的鉴定结果判断该教务报告是否可以得到相应的实际奖励.具体实现流程在下文的2.4节有详细讲解.Fabric模块主要使用了Invoke方法[14]来把本地用户装入的数据以二进制的形式传输给各个节点.还使用了Query方法[14],以实现查询功能.
(3)存储层
主要作用是实现对全部数据的存储.因为是使用HLF框架搭建的,所以在与区块链通信环节使用了Fabric-SDK[15].业务层的数据经过请求后存储在Fabric文件系统中,数据的键值存储在Couch DB中(Couch DB作为世界状态数据库).新增数据通过SDK发送存储请求,然后教务报告存储在区块链中,而它对应的唯一键值存储在Couch DB中.用户使用查询功能,Couch DB调用链码,将数据以JSON形式返回,再通过SDK解析数据包将解析后的完整数据返回给用户端.
每个院系非学生用户包括教师、辅导员及院系教务管理者三种角色.在基于超级账本的结构中,不同院系有多个链码(智能合约),每个智能合约在使用前都会由参与共享的用户节点共同确认,每个参与共享的用户节点都有相同的合约.不同院系之间如需共享,需要通过不同的通道.所有节点发出的交易请求都先由Orderer节点进行排序,经过一定量的背书节点背书后生成新的区块,然后将记录上传超级账本系统.每个院系内部学生、教师和辅导员三者之间的交互同理.教师可以根据辅导员提交的报告中记录的德育表现对学生进行更具有针对性的指导,辅导员也可以根据各任课教师提交的报告中记录的学习阶段性表现掌握学生的学习动态,以此实现对学生的全方面了解和针对性培养.这些数据也可作为学生的一份公认的数字证据(通过所有记录参与者的共识),避免仅凭成绩对学生整体评价过于片面和主观.在确保安全存储的同时,部分可共享的教师记录报告将在教研领域中提供一定的探索作用.
整体分为教师用户模块、学生用户模块和管理员模块3部分,各模块功能设计如图5所示.
图5 模块功能设计
在教师用户模块中,包括登录密码设置、个人信息管理、成绩管理、课程安排、考务安排、教学评价、溯源日志查看和教务报告鉴定功能.作为数据的提供者,在提交教务报告时可以选择申请鉴定,以此参与激励机制获得相应奖励,促进教师工作热情的同时提高了教学及教研质量.
在学生用户模块中,除了登录密码设置、个人信息管理、个人课表、成绩查看、课程选择、学生评教和考试安排7个基本功能外,还设计了教务报告查看和复议申请功能.当学生对自己的成绩或评价存在异议时,可以通过提交复议申请来申请成绩或教务报告进行复议.
在管理员模块中,包括登录密码设置、个人信息管理、教师用户管理、学生用户管理、课程管理、成绩管理、考务管理、教学评价管理、教学周历、溯源日志查看、教务报告管理和系统管理共12项功能.管理员可以通过这些功能实现对用户的管理(注销、状态修改或暂停使用等)和相应教学安排的管理.同时可以通过教务报告管理功能对教学工作质量起到监督的作用.相关技术管理用户也可通过系统管理功能对系统异常数据和攻击进行查看和修复.此外,管理员用户能够共享部分教务报告数据,但部分隐私信息根据具体属性提供不同层次共享权限.
基于属性的访问控制(ABAC)是一种将属性、对象、权限和环境作为输入的访问控制技术[16].它通过检查对象是否包含适当的属性来确定是否授予权限.ABAC可以提供细粒度的访问控制,可以支持大量的输入决策集,定义多种可能的规则,表达多种策略,但计算消耗和属性有限.这种灵活性可以解耦主体和客体之间的关系.例如,一个院系的所有任课老师都可以访问同学X相关的报告数据.在基于属性的访问控制下,可以通过简单地更改属性值来修改访问决策,而不会对个别主体与客体之间的关系产生影响.所以可以提供更动态、更灵活的访问控制管理能力,降低长期维护成本[17].
本方案将访问控制策略通过智能合约的方式部署在区块链上,同时还提供了基于数据使用者属性的访问控制接口[18].实现属性的细粒度划分,为不同隐私级别的主体和资源匹配不同细粒度的访问控制策略,有助于用户实现合理、高效的细粒度访问控制.具体的属性标签设置如下:
(1)C:学院标识符合集,表示为i个不同学院的合集C={C1,C2,…,Ci};
(2)M:专业标识符合集,表示为j个同一学院不同专业的合集M={M1,M2,…,Mj};
(3)SID:学生用户标识符,用于表示一个特定的学生,规定使用学生学号作为学生用户标识符字段(非学生用户默认为0);
(4)TID:教师用户标识符,用于表示一个特定的教师,规定使用教师工号作为教师用户标识符字段(非教师用户默认为0);
(5)G:教务管理人员标识符,管理等级以1—3标识字段区分(非管理人员默认为0),1为辅导员,2为院级教务管理人员,3为校级教务管理人员.
不同教务数据基于属性生成特定的访问控制策略,例如:教务报告R0是工号为1134的教师提交的C1学院M2专业学号为230102的学生的教务报告.那么该报告访问控制策略生成和访问请求判断的智能合约算法如下所示:
生成R0的访问控制策略(Policy)
INPUT:R0
OUTPUT:R0.Policy
if input==null
return error
else R0.Policy←{ C,M,SID,TID,G }
(SID==230102 or TID==1134) or G >=2 or (C==C1and M==M2and G==1)
return R0.Policy
判断访问请求是否合法(Allow access/Prohibit access)
INPUT:C,M,SID,TID,G
OUTPUT:Allow access/Prohibit access
if (SID==230102 or TID==1134)
return Allow access
else
if G >=2
return Allow access
else
if(C==C1and M==M2and G==1)
return Allow access
else return Prohibit access
end
返回比较结果.
系统激励机制具体情况如图6所示,展示了优秀的教师记录者如何在超级账本下的教务管理平台系统中获取奖励.
图6 激励机制流程
其中将所有院系的教授以上职称教师设置为一级教育专家群节点,随机筛选一定数量的二级鉴定专家群节点.等待提交鉴定申请的教师将记录报告以匿名(请求ID)的方式提交到超级账本中,并设置独立的通道以防数据的恶意篡改和丢失.二级专家群节点加入通道,系统将统计鉴定结果为优秀报告的占比.达到70%的响应比后将判定此报告为优秀报告,此时系统会发放给提交优秀报告的教师直接的经济回报.轻量级的共识鉴定算法旨在减少算力的消耗,进而减少开发成本.此外,通过轻量级的激励机制策略既可以筛选优秀的教务记录以供教学研究,又可以使教师通过认真工作的方式保证经济来源,避免教师因经济压力减少对教学环节的投入,实现真正意义上的双赢.
数据的完整性由区块链的不变性确保[19].生成的教务信息数据上传至区块链,在数据传输和存储的整个过程中,未经教务管理人员授权,任何人都没有权限进行修改或读取数据的操作,所以教务数据的完整性得到了保证.
存储在区块链中的每一笔交易数据都经过签名并永久保存,数据透明,可公开验证判断区块链中的数据是否合法.不同属性的用户可以通过查看溯源日志进行数据溯源,但仅可以查看已有访问权限的数据溯源日志,所以可追溯性得到了保证.
选择采用Raft共识,只需要2N+1个节点就可以应对N个潜在的恶意节点,可以在部分节点崩溃的情况下工作而不会影响整个系统的运作,避免了单点故障问题[20].且选择使用Raft共识,在复杂性和成本降低的同时,更适合HLF这种许可制的联盟链环境,抗攻击性也得到了保障.
因为整体采用基于属性的访问控制机制,所以没有相应属性权限的用户是无法获取数据的.避免了数据涉及的部分个人信息,达到了隐私保护的作用.激励机制环节中教师提交教务报告鉴定申请时采用匿名提交的方式,所以对于报告提交者和学生的个人信息也起到了隐私保护的作用.
本方案借助区块链技术,使用Hyperledger Fabric 平台配置通道满足不同层次的数据安全共享需求.采用Raft共识机制,利用Raft共识“主从”特性增强抗攻击性和去中心化,确保故障节点不超过二分之一时仍能正常运行.此外,通过设计智能合约实现ABAC机制,有效缓解了高校教务信息管理中存在的数据安全和不同属性用户安全共享的问题.下一步将对教务管理中众多节点间的资源调度进行深入研究和改进.