基于区块链的电子学位证照数据保护共享方法
2022-04-18陈儒玉高玉建付保川
陈儒玉,戴 欢,,高玉建,付保川,陈 洁
(1.苏州科技大学 电子与信息工程学院,江苏 苏州 215009;2.教育部学位与研究生教育发展中心,北京 100083;3.华东师范大学 软件工程学院,上海 200241)
0 概述
学位证书是教育部门对学位获得者专业能力与受教育水平达到规定要求而颁发授予的一种凭证。近年来,由于传统纸质证书具有共享性低、传递性差等缺点,电子证照已经成为一种趋势。尽管使用电子学位证照可以有效提高学位证书的便捷性,但仍无法从根本上解决学位的造假问题。而集中式的证照管理系统存在信息泄露问题,中心化系统的所有功能权限均集中在一点,在遭受恶意入侵后,存储信息即可被随意读取、篡改或删除。例如在2016 年8 月19 日发生的“徐玉玉电信诈骗案”中,犯罪嫌疑人通过技术手段恶意入侵了“山东省2016 高考网上报名信息系统”,导致大量考生的学位信息泄露。因此,学位信息管理方迫切需要一种新技术,在服务端为用户提供个人学位信息保护并解决学位造假问题。
引入安全可信且不可篡改的区块链技术是解决上述问题的最有效方案之一。此外,我国多角色、多节点、多功能的学位授予流程与区块链的分布式结构相吻合,因此在学位授予中引入区块链技术拥有更高的契合度和更大的发展潜力[1]。
区块链技术在2008 年由[2]提出,是一种多方共同维护,使用加密技术保证信息传输和访问安全的分布链式结构数据库。所有事务数据被压缩并存储到不同的区块中,且可以在不需要第三方验证者的情况下进行验证。所有节点的运行遵循共识算法规则,并利用相关密码学技术保证存储数据的不可篡改,具有去中心化、高安全性、高可信度等特点[3]。
本文基于区块链技术的可信环境,利用智能合约与加密算法,设计电子学位证照的数据保护及共享方法。该方法基于权威证明(Proof of Authority,POA)共识算法搭建多角色联盟链,提出一种权威身份评估机制,对节点的相应操作进行积分奖励或惩罚以规范各节点行为,并基于节点的可信度分数选举权威用户节点,负责联盟链的事务打包与校验。基于智能合约技术,构建面向电子学位证照管理的分布式合约架构,存储电子学位证照的加密信息,并控制各合约的访问权限,保证数据安全与操作可信。在此基础上,设计基于联盟链的批量数据共享方案,数据共享双方基于多种加密方式保证数据的安全与可追溯,以验证共享数据的真实性,最终基于以太坊建立基于POA 共识算法的电子学位证照数据保护及共享系统,以对模型系统进行可行性与性能分析。
1 相关工作
2016 年10 月,工信部颁布的《中国区块链技术和应用发展白皮书》[4]指出:区块链系统的透明化、数据不可篡改等特征,完全适用于学生征信管理、升学就业、学术、资质证明、产学合作等方面,对教育就业的健康发展具有重要的价值。2019 年10 月24 日,中共中央政治局就区块链技术发展现状和趋势进行第十八次集体学习,习近平总书记在主持学习时强调,要把区块链作为核心技术自主创新的重要突破口,加快推动区块链技术和产业创新发展。将区块链技术应用于教育领域,应用于学位信息的安全保护已经成为一种具有可行性的研究方向,这也是时代发展的势趋。
近年来,国内外的研究人员与相关机构已经运用区块链技术进行学位信息的保护与验证,并得到了一定范围的应用与推广。2015 年,麻省理工学院基于比特币区块链平台开发了一个完整的区块链教育认证系统Blockcerts[5-7]。英国开放大学知识媒体学院是欧洲率先使用区块链技术的大学之一,该学院与英国电信合作创建了一个基于Ethereum 的区块链平台OpenBlockChain[8],旨在通过智能合约自主管理并记录学生学习过程,构建一个永久保存且持续更新的学生成长档案馆。2018 年,HUHAMED等[9]提出一个基于区块链的全球高等教育学分平台EduCTX,使用ECTX token 作为课程学分的记录凭证,为学生、教育机构以及其他组织提供一个全球信任的分布式高等教育信用评分系统。2019 年,LI等[10]提出一种基于区块链的教育记录存储与共享方案EduRSS,其具有更低的计算成本,可在多个机构中共享档案记录,简化教育档案移交流程,为学生提供一个可靠传输和验证学习档案的区块链系统。2020 年,RASOOL 等[11]提出一种基于区块链学位证书验证方法docschain,可同时执行多笔数据提交,实现批量审核学位证书的工作流程,并通过光学字符识别对纸质学位证书进行数字图像扫描,允许学生按照传统的物理方式提交学位认证材料。
2 区块链相关技术
区块链在比特币网络中作为底层技术,提供高度安全可信的记账手段,也因其在金融领域的这一成功应用,故被称为一种分布式账本技术。在脱离作为金融账本的应用后,仍易于在缺少可信第三方的应用场景下使用。在区块链网络中,不再由单一的中心节点进行数据存储与记录,其网络中存在大量的全节点,每个全节点地位相同并均记录了数据库中的所有数据,由所有全节点共同负责系统运行维护与数据安全[12]。
2.1 非对称加密技术
非对称加密算法使用密钥生成协议创建在数学上相互连接的公私钥密钥对,以满足安全性和所有权验证需求。公钥是区块链账户地址的重要依据,作为公开显示的部分,而私钥则仅由账户持有人保存。非对称加密在使用其中一个密钥加密信息后,只能通过另一个对应密钥进行解密,具有安全性高、传输速度快、不易密钥泄露等特点,常用于实现区块链中的信息加密与数字签名。
2.2 数字签名技术
数字签名技术主要用于确认数据发送者的身份真实性与数据完整性。数据发送者使用自身私钥对待发送数据的哈希值进行加密,作为唯一的身份标识。数据接收方通过发送者的公钥进行解密,若解密的数据哈希值与真实数据哈希值完全一致,则可证明消息发送者身份,且数据完整未被篡改。
2.3 智能合约
智能合约是一段可以按照预先设定好的规则自动执行的代码程序,广泛应用于执行交易条款,可以减少人为错误,避免合同纠纷。智能合约根据写入其中的触发条件作为判断机制,当写入条件被触发时,将自动执行符合该条件的合约动作[13]。此外,部署在区块链中的智能合约被复制到每个节点,避免合约内容被篡改。智能合约属于事务处理模块与状态机构成的系统,事务的执行与状态的改变不会对智能合约的内容进行修改,只通过数字化形式的条款,遵从编写者的意志正确而自主地执行。
3 方法架构
3.1 整体架构
本文针对电子学位证照(Electronic Degree Certificate,EDC)的认证与查询过程,拟建立一个包含高校用户(College User,CU)、教育管理用户(Education Administration User,EAU)、学生用户(Student User,SU)以及外部用户(External User,EU)的多角色信息联盟。以此为基础,搭建一个基于POA共识算法[14]的联盟链,并设计一种权威身份评估机制用于选举权威用户节点[15]。在POA共识算法中,权威用户节点主要负责产出区块并控制出块效率,共同维护区块数据的存储。其中教育管理用户由于功能的特殊性,在系统初始化时,即作为POA预先设置的权威用户节点存在,并结合权威性与节点稳定性等因素进行考虑,学生用户与外部用户不参与权威用户节点选举。因此,权威身份评估机制主要面向高校用户作为权威用户节点的资格审查,并提供一种动态的权威分数(Authority Score,AS)排名规则作为评判节点权威性的标准。
高校用户执行对电子学位证照的授予或撤销操作时,由权威用户群组共同审核高校用户的操作行为是否规范合格。当包含该操作的事务被公开上链时,证明高校用户执行了合格操作行为,权威身份评估机制为该高校用户增加一定的权威分数以提高高校用户的身份权威性权重。当某高校用户的权威分数达到设定的阈值时,该节点即可候选成为权威用户,参与联盟链的维护与运行。而进行不合格操作行为的高校用户,具有破坏网络稳定性与发布虚假信息的潜在威胁,减去相应的权威分数,此时权威用户群组依然将相关信息上链存储,但不公开显示,用于追溯追责执行操作的相关节点。最终根据各节点的权威分数进行分类,以评估当前节点的状态信息(积极、中立或恶意)。
此外,基于联盟链建立了一个多角色用户体制,各身份用户对应不同的操作权限与职能职责,如图1 所示。高校用户负责学位信息的存储与保护,可授予和撤销电子学位证照,定期更新节点数据信息并指定分享给教育管理用户。教育管理用户负责对高校节点完成授予的电子学位证照进行审核,合格的证照相关信息通过后端与联盟链交互,对证照进行上链存储。学生用户基于去中心化应用(Decentralized Application,DApp)接入联盟链系统,可下载电子学位证照,对证照进行验证与查询,并查询与证照相关的上链事务信息。外部用户在获得学生用户的授权后,可使用电子学位证照的Hash 值或电子学位证照原件,前往DApp 应用进行真伪验证。
图1 系统整体架构Fig.1 Overall system architecture
3.2 合约架构
本文智能合约架构如图2 所示,该架构主要由用户身份管理合约(User Identity Management Contract,UIMC)和电子学位保护合约(Electronic Degree Protection Contract,EDPC)两大合约共同构成。其中UIMC 合约主要用于合格电子学位证照上链过程中,对消息发送者身份的审核与验证,包括权威账户存储合约(Authoritative Account Storage Contract,AASC)和账户身份验证合约(Account Authentication Contract,AAC)。EDPC 则用于对电子学位证照及相关信息的存储,包括电子学位拟授予合约(Electronic Degree Confer Contract,EDCC)、电子学位审核合约(Electronic Degree Audit Contract,EDAC)、电子学位验证合约(Electronic Degree Verification Contract,EDVC)和电子学位撤销合约(Electronic Degree Revoke Contract,EDRC)。
图2 智能合约架构Fig.2 Smart contract architecture
在初始权威用户节点设置完成后,系统为每个节点分配唯一的账户地址作为标识符。管理员部署AASC,将权威用户的账户地址存储在该合约中,并将账户地址与多个属性相链接,以表明具有该账户地址的节点拥有这些属性,如节点所属的教育机构(Organization,Org)、当前的权威分数(AS)以及节点的状态信息。当权威用户群组新增或剔除节点时,AASC 将实时更新存储的账户地址。AAC 存储所有高校与教育管理用户的账户地址,以验证调用电子学位保护合约的请求者具有相应操作权限且身份真实可信,该合约通过与其他智能合约交互来实现访问控制。
EDCC 仅可由高校用户执行,通过调用AAC 验证请求者身份后,存储电子学位证照的Hash 值、相应高校用户数字签名(Sig_Certifier)以及证照持有人的姓名(Name)、学位编号(DipNo)、身份证号(IDNumber)等相关信息。EDAC 仅可由教育管理用户调用,用于对EDCC 完成授予的电子学位证照及相关信息进行审核,审核通过后,对高校用户发送的相关信息进行二次数字签名,并将完成审核的电子学位证照相关信息存储在EDPC 中。EDVC 为学生用户与外部用户提供验证ABI,验证者提供电子学位证照Hash 值或证照原件,对比存储在EDPC 中的合格证照,并返回相关证照的真伪、相关信息及上链事务信息。EDRC 向高校用户和教育管理用户开放使用,对合格电子学位证照执行撤销追回操作,并为已写入EDPC 中的合格证照添加撤销标识符(Tag)。
4 本文方法设计
4.1 系统初始化
为了实现对电子学位证照的数据保护与共享,本文方法基于POA 共识算法,建立一个联盟链网络。所有节点都使用相同的创世区块(Genesis Block)和包含权威用户地址的JSON 文件加入网络,联盟链网络的具体实现步骤如下:
1)System←Initialize(P,L,A)。任何区块链网络的初始化都涉及创世区块的创建,需要为其提供重要的初始化配置参数。其中:P 表示POA 共识算法中创建新区块的区块周期;L 表示一个区块中允许事务消耗的最大燃料限制;A 表示在创世区块中预先设置的权威用户账户地址。
2)(Pk,Sk)←Register(user)。user 使用web3.js 命令生成私钥Sk,并通过椭圆曲线加密(Elliptic Curve Cryptography,ECC)[16]算法随机映射出唯一对应的公钥Pk。
3)UIMC/EDPC←Transact(balance,Cre-Addr,Con-Addr)。系统管理员在这一阶段提出一个部署智能合约的事务上链请求,将合约余额(balance)、合约创建者地址(Cre-Addr)与拟建合约地址(Con-Addr)作为输入,并返回事务上链状态(status),完成UIMC 和EDPC 的链上部署。
4.2 权威用户生成及工作流程
4.2.1 权威用户选举
除初始化预设的权威用户外,新节点成为权威用户需要遵循基于权威身份评估机制的节点选举规则。根据系统中各节点的权威分数排位顺序,邀请高权威身份的节点成为新的权威用户,参与事务的处理与区块的打包。为了保证系统的可信性与安全性,权威用户群组的总权威分数应超过整个系统总权威分数的50%,且权威用户的加入或剔除都应获得超过50%的权威用户允许。此外,权威用户的身份应是动态持有的,以实时评估当前节点的可信度。如果权威用户宕机或执行可疑操作,都会导致权威分数下降,当某个非权威节点的权威分数超过权威用户节点时,系统将在下一次刷新时间内调整双方的权威身份标识。
如算法1 所示,当某个用户的权威分数达到系统设定的用户阈值Thr-U 时,表明该用户的权威权重已达到权威用户标准,按照权威分数顺序写入等待列表waiting-list 中。循环持续检查当前权威用户总分数TSAU 是否达到系统阈值Thr-S,即整个系统权威分数的50%,以及是否存在非权威用户分数高于权威用户AU 的情况,以判定系统是否仍需接收新权威用户。当循环为真时,选举waiting-list 列表中权威分数最高的用户为权威用户候选人Candidate。若超过半数的权威用户同意这一选举提案时,Candidate 成为新的权威用户New-AU,将其账户地址存入合法权威地址库(Legal Authority Address,LAA),并将New-AU 相应的权威分数加入权威用户总分数TSAU 中。之后,指针会指向waiting-list 中下一个等待成为Candidate 的用户,直到权威用户总权威分数符合要求。
算法1加入或剔除权威用户
同时系统会根据当前权威用户分数进行排序,得到权威分数最低的权威用户Last-AU。若权威用户的总权威分数TSAU 在不包含Last-AU 分数的情况下依然高于系统阈值Thr-S,则证明Last-AU 为不必要的权威用户。系统提案剔除Last-AU 的权威身份,若提案通过,则删除其在LAA 中的记录,并在TSAU 中减去Last-AU 的权威分数。
4.2.2 权威用户群组工作流程
为避免权威用户群组中存在拜占庭节点恶意添加大量无效区块破坏网络,每个权威用户只允许在每N/2+1 个块中创建其中的1 个区块,且在同一时刻最多允许N-(N/2+1)个权威用户创建新的区块。基于GHOST 协议[17],同一时刻有权限创建新区块的权威用户共同构成一个决策小组,并选举一个用户作为领导节点,具有创建区块的优先性。
图3 所示为基于POA 共识算法的权威用户基本工作流程。当LAA 中存在8 个权威用户时,同时最多允许3 个权威用户创建新区块。在第一阶段中,LAA-1 作为决策小组的领导节点创建了区块1,并在下一阶段中不再被允许创建新区块,而LAA-4 则加入了决策小组,并在组内重新选举了LAA-2 作为新的领导节点。在新的决策小组中,LAA-2和LAA-3各自创建并广播了新的区块2,而LAA-3 和LAA-4 先接收到LAA-3 发送的新区块,其他权威用户则相反,因此区块链中出现分叉现象。由于LAA-2 作为领导节点,具有更高的决策地位,LAA-3 和LAA-4 将舍弃LAA-3所发送的新区块,并接收LAA-2 发送的新区块,从而保证区块链网络的一致性。
图3 基于POA 共识算法的工作流程Fig.3 Working procedure based on POA consensus algorithm
4.3 电子学位证照拟授予与撤销
在对电子学位证照的保护中,存在两个对立性的目标需要实现:一方面,电子学位证照中存储着学生的隐私信息,本文方法不希望验证者在系统中随意获取电子学位证照文件原件,造成隐私泄露;另一方面,对颁发的合格证照文件能够实现真伪验证。因此,由高校用户收集符合学位授予条件的学生信息,将合格学生信息按照统一规定格式生成电子学位证照文件。对电子学位证照文件实行加密操作,仅将加密信息与学生部分信息上链。验证者通过对加密信息的验证,既保证了电子学位证照本身的真实可信性,又确保恶意验证者无法通过加密信息得到任何学生的有效信息。此外,在电子学位证照上链存储后,当学生出现学术不端等行为时,高校用户拥有对已授予的证照进行撤销追回的权限。
如算法2 所示,CU 根据学生信息生成统一标准规格的电子学位证照(EDC)文件,并向EDCC 发送拟授予操作请求。CU 对EDC 执行SHA3-256 哈希算法加密,输出一个固定长度的哈希散列值H(EDC)。这一输出散列值具有不可逆向推导,对EDC 原件的任意字节篡改都会引起雪崩效应,导致最终生成的H(EDC)完全不同。为申明信息发送者的身份可信性,CU 使用自身私钥Sk 对H(EDC)进行数字签名,并提取EDC 中的部分信息作为关键词索引KI。将关键词KI、加密信息H(EDC)和签名后信息SigCU(H(EDC))发送至AAC合约。
算法2CU 拟授予和撤销
在AAC 中,基于ecrecover()函数解密数字签名,验证签名地址真实可信。在身份确认通过后,还需要CU 提供原始文件file重新执行哈希加密,并与H(EDC)进行对比,保证EDC 及H(EDC)未被篡改。验证通过后,将KI、H(EDC)和SigCU(H(EDC))一起存储到EDCC中,完成高校用户拟授予操作。此外,EDCC 中设置了学位撤销函数revoke(),当撤销条件触发时,EDCC 将指定的EDC 相关信息初始化,并标记为“revoked”。
4.4 电子学位证照数据共享与审核
在节点间进行数据共享与教育管理用户的审核过程是本文方法的核心功能之一,如图4 所示,高校用户在完成授予过程后,将相应的电子学位证照及相关信息共享至教育管理用户,并由教育管理用户完成对电子学位证照的审核与上链存储。该过程可以保证数据共享发起方与接收方的身份可信,数据传输过程的信息安全,以及用于审核的电子学位证照原件未被作任何修改。
图4 电子学位证照共享与审核流程Fig.4 Procedure of electronic degree certificate sharing and verification
电子学位证照共享与审核流程具体步骤如下:
1)CU 完成对EDC 的授予流程,需要将该EDC 共享至EAU 进行审核。为保证数据传输安全,将EDC 文件切割为n个子块,对n个块分别执行哈希加密,设块集合N={H(EDC1),H(EDC2),…,H(EDCn)},其中各子块的字符数集合为Ω={l1,l2,…,ln}。CU 对N基于Merkle Tree方式加密[18],得到Merkle根散列值MR(N)。
2)CU 基于高级加密标准(Advanced Encryption Standard,AES)算法对EDC 进行对称加密并存储在本地数据库,返回存储地址addr 及加密密钥mk。
3)CU使用自身私钥Sk对MR(N)进行数字签名μ,并向EDAC 发起交互请求。EDAC 合约调用AAC,验证μ 签名者身份存在后,由CU 节点发送{KI,addr,mk,μ,MR(N),Ω}到EDAC 的待分享列表sharelist中,其中KI 作为该分享请求的索引关键词组。
4)EAU 监听CU 发送的KI-X,并向AAC 验证自身身份后,基于属性KI-X 检索sharelist 列表中的相应信息,返回该待分享消息列{KI,addr,mk,μ,MR(N),Ω}。
5)EAU 使用接收到的{addr,mk}检索本地数据库,并获取到CU 分享的EDC 文件原件。
6)EAU基于Ω对EDC重新切割并进行Merkle Tree加密,得到Merkle 根散列值MR’(N),并验证MR’(N)与MR(N)是否一致,以证明EDC文件未被篡改。在EAU完成审核后,使用私钥Sk.EAU 对μ 执行二次签名ε[19],将{KI,H(EDC),μ,ε,addr,mk}存储在EDPC 中作为最终合格证照数据存储库,其中H(EDC)为用于快速验证真伪的EDC 散列值。
4.5 电子学位证照验证
学生用户(SU)在本文方法中可以获取电子学位证照原件,并对证照进行真伪验证。当第三方的外部用户(EU)提出验证学生用户的电子学位证照真伪性时,需向学生用户发起申请。学生用户根据外部用户的可信性,可选择提供电子学位证照原件或仅提供包含EDC 哈希值的相关信息,用于外部用户验证。
如算法3 所示,SU 或EU 通过基于javascript 的DAPP 与区块链系统交互,提出调用EDVC 申请,将电子学位证照原件EDC 或证照相关信息RM 发送到EDVC。当合约接收到EDC 原件时,则对其重新执行哈希加密,与存储在EDPC 中的已认证EDC 进行对比,若存在完全一致的哈希值,则证明验证文件为真,并返回该EDC 的相关信息。当合约接收到RM 时,验证机制相同,但验证发起者仅可验证证照真伪,而无法获取任何有效返回信息,以防隐私泄露。
算法3SU/EU verify EDC
5 本文方法实现
本文方法实现了一套基于联盟链的电子学位证照保护与共享系统,包括数据存储系统、联盟链开发、智能合约开发、DAPP 开发4 个部分:
1)数据存储系统。电子学位证照均需要完成二次写入才可以完成认证审核,写入数据量较大,写入延迟一般较高,对写入能力需求较高。考虑系统偏重对高写入能力的需求,本文系统使用基于Key-Value 模型的非结构化数据存储系统LevelDB[20],采用基于硬盘磁盘的LSM-tree 数据结构,主要侧重于随机写能力的提升,系统的事务写入量的可达到7~10 Transactions/s。
2)联盟链。使用go-ethereum 客户端搭建联盟链[21],各个权威成员通过使用geth 命令创建新账户,成为电子学位证照系统中的初始权威用户节点。通过puppeth 创建genesis.json 配置文件,生成创世区块,将权威用户账户地址加入到联盟链中,Clique proof-of-authority[22]权威证明作为联盟链的共识算法。
3)智能合约。基于Solidity 语言编写设计,并通过Remix-Ethereum IDE 在线开发环境完成功能开发。使用SmartCheck[23]对智能合约代码的安全性进行评估,检测交易顺序假设、时间戳依赖、可重入性、短地址攻击等潜在安全漏洞,并部署在Ethereum 基于POA 共识机制的测试网络Rinkeby 中进行功能测试。
4)DAPP。Web 前端使用HTML5 以及Javascript开发,后端服务器通过node.js 调用web3 命令初始化联盟链,并编译与部署智能合约,提供API 接口供前端页面调用部署在联盟链中的智能合约。
如图5 所示,学生用户及外部用户可通过登录电子学位证照验证页面,选择输入需要验证证照的相关信息,或直接将证照文件拖放到指定区域进行验证。系统响应后,返回验证真伪结果,并提供部分学生信息及上链事务信息。而高校用户与教育管理用户则需要进行身份注册,使用账号密码登录管理页面,如图6 所示,在提供数字签名验证用户身份后,方可对电子学位证照进行授予或审核操作。
图5 电子学位证照验证与查询界面Fig.5 Interface of electronic degree certificate verification and inquiry
图6 电子学位证照拟授予界面Fig.6 Interface of electronic degree certificate confer
6 性能评估
6.1 仿真测试
本文方法基于geth 与Node.js 搭建联盟链系统,并通过Trebuchet-Box 框架运行负载仿真测试。模拟各用户调用智能合约,进行电子学位证照的授予、审核、验证等操作。测试过程在Ganache 开发环境下进行,测试账户数默认为10,设定并发虚拟用户阈值为10,最大事务并发数为10,随机进行部署智能合约、事务上链和合约调用等不同操作,分析系统运行60 s 过程中事务执行时间,评估系统的稳定性。事务执行时间如下式[24]所示:
其中:TET 表示事务执行时间;TETAVG表示在联盟链存在N个权威用户节点的情况下的平均事务执行时间;Tx 表示在联盟链中发起的事务;tTxEXESTART表示联盟链中一次测试事务发起的时间;tTxEXEDONE表示测试事务完成时的时间;(ti,tj)表示对事务执行时间进行测试的时间区间;Count 记录在测试时间内完成的事务数量。
如图7(a)所示,在60 s 内,系统共完成1 609 次事务测试,平均虚拟用户并发数为8.94,平均事务执行时间为332.84 ms,最大事务执行时间为828 ms,最小事务执行时间为153 ms。如图7(b)所示,在同一时间段,完成相同的1 609 次测试事务处理,系统的事务并发数为7.38,平均事务执行时间为263.54 ms,最大事务执行时间为695 ms,最小事务执行时间为98 ms。由于在在测试过程中涉及智能合约的变量赋值、参数返回等操作增加了本机处理时间,占用了压力测试的部分计算资源,使得系统设定每秒请求数略小于设定的并发数阈值。根据用户并发数、事务并发数分别对事务执行时间的测试结果可以看出,事务并发数对系统的影响较小,平均事务执行时间更短。而事务执行时间中存在波动情况,且图7(a)和图7(b)中的波动趋势相似,表明网络延迟的不稳定性对系统的事务执行时间产生了较大的影响。
图7 系统性能的仿真测试结果Fig.7 Simulation test results of system performance
此外,区块大小的动态变化影响着并发事务数的波动。在基于Ethereum 的环境下,使用gasLimit衡量区块的事务容纳能力,且这一指标可自适应地动态调整,以适应网络变化,其调整机制可描述为:
其中:ggasLimit表示新区块的区块大小限制;pparent.gasLimit表示其父区块的区块大小限制;pparent.gasUsed表示父区块实际使用的区块容量;BBoundDivisor表示影响区块大小增长率的敏感度参数。当父区块的实际使用率超过其区块大小限制的2/3 时,则提高新区块的区块大小限制,反之则降低该限制值,以此保证系统性能实时调整以适应交易需求。
综上仿真结果分析可以看出,系统整体的事务执行时间较为稳定,在进行电子学位证照授予与审核的调用请求时,产生的事务执行时间相对较长,而系统的硬件配置与网络延迟也是影响事务执行时间的重要影响因素。
6.2 共识算法对比
当前基于go-ethereum 搭建的联盟区块链主要以POW 和POA 作为主流共识算法。本文提出的学位数据保护与共享方法面向对象主要为高校与教育管理部门,具有特定群体针对性,且其身份均真实可信,权威性高。以上特性与基于POA 共识算法的联盟链适用情况高度契合,且无需依靠算力奖励机制维持系统运行,大幅降低方法成本,并减小能耗。
为了测试在不同共识算法下调用系统各部分智能合约的响应速度,分别基于POA 与POW 共识算法搭建联盟链并使用Aleth 测试工具进行评估测试,对实验数据进行记录比对,具体划分以下5 个部分进行响应测试:
A:部署智能合约。
B:EDC 拟授予。
C:EDC 撤销。
D:EDC 二次审核。
E:EDC 验证查询。
如图8 所示,在A~D 部分中,由于POA 共识算法的特性决定了其事务验证者被事先指定且数量有限,而POW 共识算法则由于节点数量的不断增加,导致事务信息广播到全部验证者节点需要等待更久的时间,因此基于POA 共识算法的联盟链延迟时间远小于POW 共识算法。此外,POA 通过选举权威用户节点处理上链事务的共识特点,也使得其在事务的处理速度上优于采用运算能力规则的POW 算法。在E 部分验证查询操作中,POA 联盟链延迟时间略小于POW 联盟链,性能差距不大,延迟时间均在200 ms 内,远小于前4 个部分延迟时间。这是由于智能合约中验证查询函数设置为view 函数,当请求验证时,调用该函数仅对存储在联盟链中的数据进行读取与对比,未改变存储在联盟链中的数据,无需创建上链事务与事务广播。
图8 POA 和POW 共识算法对智能合约调用延迟的影响Fig.8 Impact of POA and POW consensus algorithm on smart contract invocation latency
6.3 复杂度分析
6.3.1 本文方法复杂度分析
在基于Ethereum 的区块链中可以通过execution gas 交易费用来衡量执行一笔事务所需的操作量。而在基于POA 共识的联盟链环境中,gas不具备实际流通价值,但部署智能合约及相应ABI所需的gas 费用可以反映其复杂度与工作量大小。
除去打包交易与部署合约所需的gas 费用外,智能合约的gas 消耗成本主要来源于编码成本Codecost、存储成本Storagecost 与初始化成本Initcost,即[25]:
基于此,对本文方法中的电子学位证照拟授予、撤销与数据共享过程进行gas 成本评估,相关参数及其意义如表1 所示。
表1 相关参数及其含义Table 1 Relevant parameters and their meanings
1)EDC 的拟 授予
由于对EDC 的拟授予过程涉及在智能合约中实现授予功能与存储数据,因此gas 成本取决于编码成本与存储成本,其gas 消耗上限为:
其中:ω表示存储一个字符所需的gas 成本;ω×Ea×Ec表示拟授予过程相关属性的存储成本;Code(Ea)表示编码成本,且编码成本由Ea决定。例如,CU 完成拟授予过程后,发送EDC 相关消息列{KI,H(EDC),SigCU(H(EDC))}至EDCC 合约,该过程中所含属性数量为Ea=3,单一属性中SigCU(H(EDC))具有最大字符数Ec=130,存储一个字符所需的gas 为ω=625,编码成本Code(Ea)=197 619。
2)更新与撤销EDC 的相关信息
CU 对已授予的EDC 更新某一属性时,不涉及属性数量的改变,但存储成本由更新属性的字符数决定;而撤销某一EDC 不涉及存储内容的改变,该操作仅消耗编码成本。因此,更新EDC 信息与撤销EDC 消耗gas 可分别表示为:
其中:ω×Ec表示存储成本;Code(1)表示更改1 个属性所需的编码成本;Code(Ea)表示撤销一个已授予EDC 相关信息所需的编码成本。
3)EDC 相关信息的共享
当CU 面向EAU 进行数据共享时,首先需要在sharelist 列表中检索拟共享消息是否已存在,检索完成后将新的数据共享消息添加到sharelist 列表中等待EAU 发送共享请求。因此,此过程gas 成本由检索过程与添加共享消息过程组成。
检索过程成本如下:
其中:Code(Sa)表示编码成本;γ为sharelist 列表的待分享消息列数;δ为KI 中的单一属性检索成本;γ×δ×KIa表示检索某一消息的成本;ω×Sa×Sc表示存储成本。
添加共享消息过程成本如下:
其中:Code(Sa)表示编码成本;ω×Sa×Sc表示存储成本;init×1first表示第一次执行sharelist 列表时所消耗的初始化成本。
当CU 同时向EAU 进行批量数据共享时,需要检索并添加n个共享消息到sharelist 中,其gas 成本可表示如下:
其中:pk=,p表示sharelist 列表接收新共享消息的数量,初始接收数量p0为0,当检索第k个待共享消息未存在于sharelist 时,证明其为新的待共享消息,在上一轮次中的pk-1上增加1 个新共享消息,当检索到第k个消息已存在时,不计入pk统计。
6.3.2 权威身份评估机制分析
现有用于证明可信度的积分机制通常将其他节点对目标节点的反馈分数求和来评估该节点的可信度。但这一方式具有一定缺陷:一个执行多次可信事务但周期性执行一次恶意事务的节点信誉会高于执行事务次数较少但完全可信的节点,大量的诚实行为可以使得节点隐藏其较少的恶意行为;此外,其他节点的反馈分数无法完全可信,可信节点可能因为恶意节点的负反馈分数导致其被判定为低可信度节点。
因此,本文提出一种有效的权威身份评估机制,防止具有隐藏性恶意行为的出现,并保证反馈分数的可信性,权威分数评判的主要因素有以下2 点:
1)拟授予EDC 事务请求的可信度。在CU 对EDC 的拟授予相关事务上链过程中,事务发送至权威用户群组进行打包与校验,各权威用户通过分数反馈对该事务上链请求的可信性。
2)EDC 最终的审核结果。当EDC 最终经EAU审核合格时,相应的CU 将获得适当的权威分数增加;而EDC 审核不合格时,则该CU 被认为进行了虚假或错误的授予行为,该节点的权威分数将大幅下降。
基于以上两点评判因素,权威分数的计算标准如下:
式(11)第1 部分为各权威用户对拟授予事务的评判阶段,T(x)表示CU 发起的拟授予事务总数,P(C,j)表示参与打包校验CU 第j个拟授予事务的权威用户,B(C,j)表示CU 的第j个拟授予事务从P(C,j)中接收到的反馈分数,Tr(y)表示第y个权威用户提交反馈分数的可信度,α表示拟授予阶段权威用户分数评价的权重因子。
式(11)第2 部分为审核结果的反馈阶段,M表示EDC 审核合格时的反馈分数,β表示合格时的动态权重因子,随着经审核后合格事务数x的增加,β提供的反馈分数权重比例会提高,但反馈激励不会无限制增加,始终在0~2M之间,N表示EDC 审核不合格时的反馈分数,λ为不合格时的动态权重因子,用于监测不合格事务的数量,当不合格事务数n逐渐增加时,反馈惩罚会显著提升,以尽快降低节点的权威分数。其中,δ(δ>1)、ρ(ρ>0)、ω(ω>1)为预定义的权重调节参数。
7 结束语
本文基于区块链技术,提出一种新的电子学位证照数据存储、共享、验证与查询方法。该方法利用密码学相关技术实现电子学位证照的加密存储,且所有操作均具有可追溯性。设计面向学位管理的智能合约架构,自主管理电子学位证照授予、审核、验证等操作,实现节点间的数据共享,通过建立联盟链网络,形成“高校-教育管理部门-学生-外部”的多角色模式,赋予各角色相应的权限操作,并基于POA共识算法,使具有高度可信性与权威性的高校与教育管理节点负责联盟链的运行与维护,提高系统性能,节省经济成本。最终构建基于POA 共识算法的电子学位证照数据保护及共享系统,并对其可行性、性能、复杂度等进行评估与分析。实验结果表明,该方法可行性高,共识性能优异,智能合约构建合理。下一步将改进属性基加密算法,设计具有细粒度共享能力的访问控制方法,提高电子学位证照数据保护的安全性与共享的高效性。