基于区块链的学生身份认证系统的研究与实现.docx
- 文档编号:26112448
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:55
- 大小:1.25MB
基于区块链的学生身份认证系统的研究与实现.docx
《基于区块链的学生身份认证系统的研究与实现.docx》由会员分享,可在线阅读,更多相关《基于区块链的学生身份认证系统的研究与实现.docx(55页珍藏版)》请在冰豆网上搜索。
基于区块链的学生身份认证系统的研究与实现
摘 要
区块链(Blockchain)是近些年伴随比特币而出现的一项技术,是一个个数据块,块于块之间通过哈希之进行链接成链,具有令人振奋的去中心化技术。
它基于密码学,任何达成一致的双方都可以直接进行交易,无须第三方的介入,可实现一个全球同步的分布式账本,记录着所有的交易,具有高透明、不可篡改、可追溯的特点,有效的提高了交易的安全性。
本系统基于区块链设计并实现了一个类似于校园卡的学生身份认证系统。
本系统基于用户和管理员的不同身份分别设计并实现了用户的注册、登陆、注销、支付、充值、修改信息、修改密码、信息查询、流水查询的功能和管理员的登陆、注销指定用户、指定用户支出与充值、修改管理员密码、修改指定用户信息和密码、查询指定用户信息、查询指定用户的流水功能、查询全部用户信息和流水功能。
本系统整体采用的是采用Java语言开发,SpringMVC与Spring完美适配,负责控制器和视图渲染,前端部分使用JSP和jQuery,数据库使用MySQL,后端使用JDBC对应实体层和Dao层的实现,Dao层通过Java后端与MySQL数据库进行交互,根据前期设计好的功能实现最基本的数据库增删改查工作,保持可拓展性,为之后设计业务层的数据需求提供服务。
前端基于用户和管理员对应的权限和功能设计不同的页面,通过session来进行用户权限和管理员权限的分类,前端的代码与后端的控制层及服务层同期实现,控制层接收到前端传来的事件之后进行相应跳转,提供相应服务。
前端通过web3.js提供的接口与Solidity编写的智能合约交互,智能合约部署至测试网络正常运行后,再搭建基于以太坊的私有链网络,成功将智能合约部署至私有链,从而实现系统在私有链的部署和数据上链,通过区块链浏览器查看区块信息。
关键词:
学生身份认证 区块链 以太坊 Java Solidity 智能合约
TheStudentIdentityAuthenticationSystemBaseonBlockchain
Abstract:
BlockchainisatechnologythathasappearedwithBitcoininrecentyears.Itisablockofdata.Theblocksarelinkedintochainsbyhashesbetweenblocks,andhaveexcitingdecentralizationtechniques.Itisbasedoncryptography.Anypartythatagreescandirectlyconducttransactions.Withouttheinterventionofathirdparty,agloballysynchronizeddistributedledgercanberealized,recordingalltransactions,featuringhightransparency,non-tamperabilityandtraceability.Effectivelyimprovethesecurityofthetransaction.
Thesystemdesignsandimplementsastudentidentityauthenticationsystemsimilartothecampuscardbasedontheblockchain.Thesystemdesignsandimplementstheuser'sregistration,login,logout,payment,recharge,modificationinformation,passwordmodification,informationquery,flowqueryfunction,administratorlogin,logoutofdesignatedusers,anduseridentificationbasedondifferentidentitiesofusersandadministrators.Specifyuserexpenditureandrecharge,modifyadministratorpassword,modifyspecifieduserinformationandpassword,queryspecifieduserinformation,querythespecifieduser'spipelinefunction,queryalluserinformationandpipelinefunction.
ThewholesystemisdevelopedinJavalanguage.SpringMVCisperfectlyadaptedtoSpring.Itisresponsibleforcontrollerandviewrendering.ThefrontendpartusesJSPandjQuery,thedatabaseusesMySQL,andthebackendusesJDBCcorrespondingentitylayerandDaolayerimplementation.DaoThelayerinteractswiththeMySQLdatabasethroughtheJavabackend,andimplementsthemostbasicdatabaseaddition,deletion,andchangeworkaccordingtothepre-designedfunctions,maintainsscalability,andprovidesservicesfordesigningthedatarequirementsofthebusinesslayer.Thefrontenddesignsdifferentpagesbasedonthepermissionsandfunctionscorrespondingtotheuserandtheadministrator,andclassifiestheuserrightsandadministratorrightsthroughtheSession.Thefront-endcodeisimplementedsynchronouslywiththeback-endcontrollayerandtheservicelayer,andthecontrollayerreceivesthefront-end.Aftertheevent,acorrespondingjumpismadetoprovidethecorrespondingservice.ThefrontendinteractswiththesmartcontractwrittenbySoliditythroughtheinterfaceprovidedbyweb3.js.Afterthesmartcontractisdeployedtothetestnetwork,theprivatechainnetworkbasedonEthereumisbuilt,andthesmartcontractissuccessfullydeployedtotheprivatechain.Chaindeploymentanddatachaining,blockinformationthroughtheblockchainbrowser.
Keywords:
StudentidentityauthenticationEthereumJavaSoliditySmartcontract
目 录
1 前言
1.1 研究背景
当今社会,信息网络十分普及,随着全球信息化进程的加剧,信息安全也成为了热门话题。
在网络给生活生产带来便利快捷的今天,网络安全也变得格外引人关注,而信息安全则在网络安全问题之中尤为突出。
时至今日,经常能在新闻之中看到个人信息泄漏的新闻,而信息泄露的源头则来源于网络,用户信息不知在何时何地就轻易泄露出去,人们的个人信息安全显得尤为重要。
人们在网络中在当今信息网络化网络信息技术在给生产生活带来极大便利的同时也带来了极大的安全隐患(王文杰,2019)。
用户信息的轻易泄露,使得身份认证在基于网络环境的信息安全系统之中成为重要课题。
学生作为网络用户的一大用户,学生信息的安全也显得格外重要,在今天高校的学生几乎每天都使用网络,在网络中的学生信息安全也显得十分重要。
有一些不法网站就专门针对学生,进行学生用户信息的搜集或是对学生用户进行非良好的引导等等,这些给在校的学生带来十分不好的负面影响等等。
尤其是今天社会出台了失信人员的相关政策,信息的泄露很可能使得在用户在不知何时登上失信人员的名单,使得出行都成为了难题。
身份认证技术是计算机及网络系统确认操作者身份的过程,主要是解决验证网络通讯双方真实身份的问题,为了在通信双方之间建立相互信任可靠的关系,认证在共享秘密会话密钥中起着至关重要的作用(TanmoyMaitra,DebasisGiri,RamN.Mohapatra,2019)。
身份认证技术能鉴别信息收发的双方真实的身份,然后根据使用者的权限分配相应网络资源,是网络信息安全的第一道门槛,在根源直接保证用户信息的安全,是保护网络安全的第一道屏障,是保障网络安全的关键,是其它安全机制的基础(常玲,赵蓓,薛姗等,2018)。
身份认证除了可以鉴别使用者的身份和权限级别还可以在使用者使用网络时进行一定的监督,杜绝不正当的网络行为,降低或避免计算机收到黑客入侵或者病毒攻击等,从而保障网络环境的安全和用户信息的安全。
1.2 发展现状
目前,银行业的身份认证系统产业居多。
随着今天技术的不断进步,网络攻击和黑客手段也日益先进,网络安全环境越来越严峻(刘兆江,2019)。
互联网增加了集体与个人之间沟通中侵权企图的可能性,对网络身份认证需求日益提高(GeetaSharma,SheetalKalra,2019)。
随着身份认证系统在银行也的不断改善和应用,也使得身份认证系统也逐渐应用到了其它的行业之中,提高了技术的发展。
除此之外,随着手机的广泛应用和不断更新,移动互联网的不断改进,手机支付在今天变得十分普遍,所以移动互联网的身份认证也变得尤为重要,当前的移动互联网蓬勃发展,人们对移动智能终端的依赖越来越强烈(田野,2017)。
作为即将到来的5G时代,移动互联网的安全也显得十分的重要。
现在对随着网络的普及,很多学校的工作也转移到了网上,所以对于学生的信息安全也变得尤为重要,学生个人的信息泄漏问题也十分引人关注。
作为手机和电脑的熟用者,网络信息安全对于学生用户来说是一个十分重要的课题,对于身份认证信息安全产品的需要十分迫切。
1.3 研究内容及意义
本次毕设将结合以太坊平台技术实现学生身份认证系统,不仅将系统的数据保存至MySQL数据库中,还同步保存至以太坊私有链上,以提高学生用户的身份安全。
区块链的核心特征就是去中心化和非实名化,因此区块链技术很适合应用于身份认证的场景(吕婧淑,操晓春,杨培,2019)。
在学生身份认证系统上应用区块链技术,存储学生的身份信息,对学生的信息安全大有裨益。
区块链技术会将每一次信息的更改都同步记录至链上,而且存储的学生用信息和每一笔更改记录都难以被篡改,这样保护了学生用户的信息安全,再加上每一笔更改记录都可以找出,更加巩固了学生的信息安全。
使用区块链作为底层存储数据库,实现了设备、用户和节点间的去中心化结构(宋文斌,2018)。
因此,将区块链技术应用于用户身份认证,有较强的现实意义。
基于这样的社会背景,从管理员以及学生用户的需求展开分析,设计出每个角色对应的功能并予以实现,通过后台与MySQL数据库完成交互记录用户信息,在以太坊平台上基于区块链实现每个角色功能相应的业务逻辑,并调用以太坊官方提供的与节点交互的JavaScriptSDK——web3.js通过智能合约鱼以太坊节点完成交互,实现去中心化的DApp开发。
本系统在非本系统用户情况下需要通过用户注册成为学生用户,经过用户登陆后进入本系统实现用户的信息修改、信息查询、流水查询、充值支付、用户登出等相关用户操作,管理员身份不可注册,由已设的管理员账号和相应的管理员密码进入系统可以查看所有用户的相关信息并予以修改,亦可修改管理员信息。
在登陆页面通过session进行区分用户和管理员的身份实现对应的前端界面和相应的权限区分,以方便用户在友好的图形化界面下对合约进行调用,后台与前端交互获取表单信息并将对应的信息存入MySQL数据库完成数据存储。
然后将在测试环境可以成功运行的系统部署至配置好的以太坊私有链上,实现在私有链环境中学生身份认证系统的运行和数据上链的实现。
1.4 论文组织结构
本文分为六个章节,采用由上至下,总体到局部逐步细化的方法对学生身份认证系统的需求和功能模块展开论述。
各章内容主要如下:
第一章是前言,主要介绍本系统的研究背景、发展现状和研究内容及意义。
第二章是相关技术知识的简介,主要介绍了本系统开发时所需用到的技术,包括MVC框架,jQuery框架,以太坊平台技术,智能合约以及智能合约开发语言Solidity。
第三章是系统的需求分析和总体概要设计,通过系统用例图和流程图和MySQL系统的数据库以及数据库表进行相关的设计和说明等分析了本系统的核心的功能,大致了解系统的运行过程。
第四章主要是系统的技术实现即关键技术的实现过程,通过代码和相关解释来详细阐述用到的关键技术和核心功能的具体实现过程。
第五章是系统的运行与测试。
通过截取系统相应的运行截图来展示系统的相关界面和运行测试从而详细展示系统的各功能运行过程和具体实现效果。
第六章是对本文的总结与展望,主要对研究的工作进行总结,并且对系统存在的问题和可进一步完善的功能进行了展望分析。
2 相关技术介绍
2.1 MVC框架
MVC的全称是ModelViewController,即模型-视图-控制器,是软件设计的基本分层方式,它以业务逻辑、数据、界面为分层分离代码,业务逻辑整合到一起,全部设计好之后,再设计用户界面,界面设计好之后不用再重新再编写业务逻辑。
MVC框架可以结合传统的输入输出和处理功能于一个完整的业务逻辑整体的图形化用户界面的结构中。
Java的MVC框架是由Model模型(JavaBean),View视图(JSP)和Controller控制器(Controller)组成。
其中JSP负责前台展示,也就是用户看到的界面,Servlet负责流程逻辑控制,在代码中实现了数据传输等功能,Javabean则负责数据封装(封琪,王贵鑫,2018)。
Java的Model模型(JavaBean)不仅用来承载数据,还可以计算前台提交的请求。
所以JavaBean分为两类,一类称为数据承载Bean,指项目中的实体对象类,专门用来承载业务数据的。
另一类是业务处理Bean,指项目中的Service或Dao对象,专门用于处理前台提交请求的;View为用户提供图形化用户界面,用户直接接触,并通过它提交请求以实现业务逻辑;控制器Controller负责将用户提交的用户请求转发给相应的JavaBean进行业务处理,并将Model处理的计算结果返回给用户。
简而言之就是用户通过用户界面提交请求给控制器,控制器调用相关接口和类即Model进行计算,结果再返回给控制器,然后控制器响应给用户请求。
MVC三层架构描述图1如示:
图1 MVC框架描述图
2.2 Sping+SpringMVC+JDBC框架
本系统使用Sping+SpringMVC+JDBC框架,这个框架可以用来作为的简单web项目开发框架。
Spring,SpringMVC和JDBC三者在MVC框架的三层架构中所处的位置是不同的,他们在三层架构中的功能各不相同的(王崟,2018)。
套用MVC的结构,SpringMVC实现了MVC结构的View层和Controller层,在用户的请求接收功能实现View层之外,SpringMVC的Controller再作为整个应用的控制器,完成控制器的工作即用户请求的转发及响应;数据访问层(Dao层)由JDBC与MySQL数据库之间的交互实现,通过调用JDBC连接MySQL数据库,对数据进行相关操作;Spring则负责管理整个应用系统,Spring管理整个应用之中所有Java模型类的生命周期行为,包括应用中类实体的创建销毁和初始化的等相关操作,以及类实体之间的相互关联等。
2.3 jQuery框架
本系统使用的jQuery是一个优秀的轻量级JavaScript框架。
它是一个快速和简洁的JavaScript库。
可以简化HTML文档元素的遍历,事件处理,动画和Ajax交互以实现快速Web开发,它被设计用来改变编写JavaScript脚本的方式。
jQuery的文档非常丰富,不过作为一个轻量级的框架它的文档也并不复杂,由于它的简单不复杂,用户渐长,版本不断更新并翻译成不同的语言,这也为jQuery的流行提供了条件。
jQuery被包括在语法上,jQuery支持CSS1-3的选择器,兼容IE6.0+,FF2+,Safari3.0+,Opera9.0+,Chrome等浏览器,其模块化的开发方式可以让开发者按需加载资源(潘杰,周传生,2015)。
jQuery因为插件的多种多样,丰富的扩展支持和社区支持,为jQuery在功能较少的短板上弥补了不足,提供了非常多的功能扩展,并且由于它的简单易学直接导致了它的用户逐渐增多,使得jQuery很快成为现在最流行JavaScript库,成为开发复杂度较低的web应用程序时的首选JavaScript库,获得了微软等的大力支持。
2.4 以太坊
以太坊,英文名为Ethereum,它是一个平台和一种编程语言,它使开发人员能够建立和发布下一代分布式应用(陈亚飞,2018)。
以太坊包括一套内置的、图灵完备(指计算能力强大,满足任意数据按照一定的顺序可以计算出结果)的脚本语言,允许通过智能合约来编写代码,每个合约相当于一个自动代理,当它接收到一项特定的输入交易后,合约就会运行特定的代码,是交易内容得以发生,进一步增强了去中心化。
总的来说,以太坊是以智能合约为主要特色功能的一种分布式计算平台,它提供了一种分布式虚拟机——以太坊虚拟机(EVM),这种虚拟机采用系统内含的加密货币——以太币,可以执行点对点合约(MuneebUlHassan,MubashirHusainRehmani,JinjunChen,2019)。
借助以太坊平台可以更方便地去进行去中心话应用DApp的开发。
按照以太坊提供的服务及使用过程,可将以太坊粗略地分为如下图所示的三层:
核心层、应用层、外围辅助层(顾燕,2018)。
以太坊体系架构如图2所示:
图2 以太坊体系架构图
2.5 智能合约
以太坊上的程序被称为“智能合约”,其包括代码和相应的状态数据。
以太坊是区块链和智能合约的完美结合,通过编写智能合约可以实现强大的功能,实现去中心化的Dapp开发。
智能合约(SmartContract)是尼克·萨博在1995年提出,在自己的文章中给智能合约下的这样的定义:
“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可在上面执行这些承诺的协议。
”在区块链没有出现时,智能合约可运行的环境尚缺,所以没有合理的应用。
区块链出现让智能合约重新焕发光芒,被应用到更多事件中(马春光,安婧等,2018)。
区块链中,智能合约根据合约中定义的功能拥有相应的权限,在区块链之中作为一个拥有账户地址的个体角色,作为中间人实现相应的功能,即信息或者价值的接收和转发。
VitalikButerin把他引入到以太坊中,表示以太坊程序能自动执行且无法被干预的特点。
现在智能合约已经扩展到所有的区块链平台,很多时候人们把超级账本、EOD等区块链平台的程序也称为“智能合约”(杨茜,2018)。
2.6 Solidity语言
Solidity语言是一种专门用于编写和执行智能合约的语言,是在以太坊虚拟机基础上运行的、面向合约的高级语言,最初是在2014年8月由以太坊的前任CTO和联合创始人GavinWood提出来的,后来由以太坊开发人员组建了一支专门的团队对Solidity语言进行不断改进,目前仍在开发和优化之中。
在语言的风格上,Solidity语言收到C++、Python和JavaScript3种语言的深刻影响,它是一种静态类新改的编程语言,以字节码(Bytecode)的模式进行编译,因此可以在以太坊虚拟机上运行。
GavinWood早开发Solidity语言时借鉴了JavaScript的ECMAScript脚本语言的语法规则,是它与现有的网页开发语言有点类似,但其实有较大的不同,如
Solidity语言拥有静态类型、可变返回函数等。
最重要的一点是,Solidity语言可以编写具有自执行的业务逻辑、嵌入智能合约中的合约,因此它不但是以太坊的基础编程语言之一。
而且是其他绝大部分基于以太坊的、具有智能合约的各种区块链产品的基础编程语言,被广泛应用与目前绝大多数区块链产品。
3 系统概述
3.1 需求分析
本系统为学生身份认证系统,技术上主要是围绕学生用户身份认证和维护方面来展开需求分析。
本系统有两大角色,学生用户角色和管理员角色,对于学生用户角色又分为已注册的学生用户角色和未注册的学生用户角色。
未注册的学生用户角色在使用本系统是需要先通过注册成为本系统用户,然后通过登陆进入本系统实现对应的权限功能。
管理员角色由预设的管理员账户为方便管理员的高权限给与无须注册由单一的管理员账号登陆进入管理员界面系统实现相应的管理员权限功能。
根据本系统的角色和功能实现在MySQL数据库建立了五张表来实现角色的信息存储,分别为用户表、管理员表、信息表、支出记录表和充值记录表。
用户的业务需求为未注册学生用户的用户注册:
通过填写相关的注册所需信息实现未注册用户的注册;已注册用户的登陆:
通过填写用户正确的账号和密码信息实现用户登陆系统,如账号信息有错误则拒绝登录请求;已注册用户的信息修改:
通过填写用户相关的信息实现用户的信息修改;已注册用户的注销:
通过正确填写两次用户的账号密码以确认注销当前登陆的用户账号,如密码填写不正确则拒绝注销请求;已注册用户的密码修改:
通过正确填写原密码和新密码来完成当前登陆用户密码的修改,如填写错误则拒绝修改请求;已注册用户的充值:
用户通过填写充值的金额和账户的密码完成账户充值,如密码错误则拒绝充值请求;已注册用户的支付:
用户通过填写支付的金额和账户的密码完成账户支出,如密码错误或者余额不足支付则拒绝充值请求;已注册用户的信息查询:
分为用户信息查询和用户支出信息查询和用户充值记录查询,用户收支记录通过分页显示流水记录;已登陆用户登出:
用户登出学生身份认证系统。
用户的注册和信息修改密码修改以及支出充值操作将通过前端JS交互智能合约来实现数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 区块 学生 身份 认证 系统 研究 实现