毕业设计Usbkey方式系统登录身份认证

上传人:无*** 文档编号:42674447 上传时间:2021-11-27 格式:DOC 页数:19 大小:520.51KB
收藏 版权申诉 举报 下载
毕业设计Usbkey方式系统登录身份认证_第1页
第1页 / 共19页
毕业设计Usbkey方式系统登录身份认证_第2页
第2页 / 共19页
毕业设计Usbkey方式系统登录身份认证_第3页
第3页 / 共19页
资源描述:

《毕业设计Usbkey方式系统登录身份认证》由会员分享,可在线阅读,更多相关《毕业设计Usbkey方式系统登录身份认证(19页珍藏版)》请在装配图网上搜索。

1、密 级 公 开 本科生毕业设计报告Usbkey方式系统登录身份认证陶建飞 吴 芳(2007081205) (2007081124)指导教师姓名:刘 彦职 称:副教授单 位:计算机科学系专 业 名 称:计算机科学与技术设计提交日期:2011年4月25日设计答辩日期:2011年4月27日学位授予单位:黔南民族师范学院答辩委员会主席:设 计 评 阅 人:2011 年 4 月 28 日摘要:在今天这样一个互联网驱动的社会中,网上银行也称在线银行,已经成为金融机构整体发展策略中不可或缺的一部分。近年来使用网上银行的用户数量巨大增长,并且每年保持了稳定的发展势头。网上银行在给它的用户带来诸多便捷服务、给银

2、行节省费用支出和带来更多利润增长点的同时,也承受着很多安全风险。很多银行意识到了这一点,纷纷采取行动,包括不断教育用户提高自身安全意识,安装杀毒软件,防木马软件;采用硬件USB Key或者动态口令牌方式进行身份认证等。USB Key是一种USB接口的硬件设备。它内置单片机或智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用USB Key内置的公钥算法实现对用户身份的认证。由于用户私钥保存在密码锁中,理论上使用任何方式都无法读取,因此保证了用户认证的安全性。USB Key产品最早是由加密锁厂商提出来的,原先的USB加密锁主要用于防止软件破解和复制,保护软件不被盗版,而USB Ke

3、y的目的不同,USB Key主要用于网络认证,锁内主要保存数字证书和用户私钥。目前工行的USB Key产品为“U盾”,招行的USB Key产品为“友Key”,两者的主要供应商都是USB Key的专业厂商捷德公司。在今天企业信息化的发展形势下,简单的用户密码验证方式已经暴露出很多问题,给管理和安全上带来很大隐患。所以需要一种安全性更高的而且人为影响因素小的用户认证方式来替代原有方式。为此本课题将从硬件数字加密方向开发出类似于网银登录的UKey登录的身份认证系统。目 录第一章 前言 41.1 设计目的 41.2 背景 41.3 课题 5第二章 环境的配置 52.1 设计环境 52.2 设计涉及到的

4、相关软件 52.3 设计开发语言 5第三章 系统的结构分析与设计53.1 储备知识 63.2设计要点分析 63.1.1 调查 63.1.2 可行性分析 63.3 模块分析设计 6第四章 系统实现与系统测试 84.1 加密锁内部结构 94.2 usbkey身份认证验证原理模块 104.3 部分设计成果展示图片 114.4 设计相关代码 164.1.1 前台相关代码 164.1.2 后台相关代码 16第五章 小结 165.1 系统开发中遇到的问题 165.2 小组分工与协作 17参考文献 17致谢 18第一章 前言1.1 设计目的本次毕业设计我们选择了Usbkey身份认证作为毕业设计课题。1.2

5、背景而今是一个网络信息时代在线交易(购物,付款),收发电子邮件,在线聊天交友及表单签名,文件数字签名等操作的用户越来越多、对自身身份认证的要求也越来越高,如果使用一般的软件进行身份认证将会造成;1、软件加密容易被破解2、 文件在传输过程中易被截获、纂改3、加密软件损坏,文件无法恢复。4、 用户名密码太长容易忘记 5、存储在计算机上容易被盗 6、 输入用户名和密码时容易被盗或多个信息系统的密码混淆等 。Usbkey认证系统安全登录解决方案:Usbkey是一种通过USB (通用串行总线接口)直接与计算机相连、具有密码于是USB接口设备,Usbkey通过USB端口提供的电源来工作,不需要额外的电源、

6、具有密码验证功能、可靠高速的小型存储设备。Usbkey 是对现行的网络安全体系的一个极为有力的补充,通过中国信息安全测评认证中心认证的网络安全产品。基于可信计算基及智能卡技术把易用性,便携性和最高级别的安全性带给了使用Microsoft IE或Netscape Navigator进行Web访问,在线交易(购物,付款),收发电子邮件,在线聊天交友及表单签名,文件数字签名等操作的用户,保证用户在Usbkey下的操作不可篡改、抵赖。Usbkey最大的特点就是安全性高,技术规范一致性强,操作系统兼容性好,携带使用灵活。Usbkey作为网络身份认证令牌,它是Web站点用户密码的安全便携存储器。Usbke

7、y代表用户身份,通过使用Usbkey, 可以控制同一时间只能有一个用户登陆网页。由于Usbkey使用USB接口,因此具有体积小,速度快,兼容性好的特点而且Usbkey自身所具备的存贮器可以用来存储一些个人信息或证书,Usbkey的内部密码算法可以为数据传输提供安全的管道,Usbkey是适用于单机或网络应用的身份认证安全防护产品。 1.3 课题硬件加密。本课题以Usbkey硬件为设计对象,设计的内容包括。第二章 设计环境2.1运行环境操作系统:windows XP 内存:1GCPU主频:2.01GHz2.2开发工具Visualstudio 20052.3开发语言C#面向对象程序设计语言第三章 系

8、统的结构分析与设计3.1 储备知识 完成课题的条件:本课题的研究设计难度较大,需要掌握的知识较多,也需要花费大量时间,由于学习单片机设计的时间有限,对这方面知识的认识和掌握并不是很透彻,并且没有相关方面的实践经验,应用起来就显得相对很难。设计还没有投入到真真切切的环境中去,不过我一直在致力于这方面知识的收集和整理。若要顺利完成该usbkey身份认证的设计,要认真做好需求分析,加强自学,进一步提高usbkey的使用方法,同时要积极与指导教师沟通,认真听取指导教师的指导意见和要求。尽管自身条件在做该课题设计并不是很有实力,但是通过指导教师的帮助,小组人员共同努力,认真做好每一个内容,该课题设计一定

9、会顺利完成。综合该usbkey设计的内容和要求,若要很好地完成该课题需要以下条件:1认真进行课题研究,做好自己的本职工作,全身心投入到设计过程中;2需要指导教师耐心指导,多给学生提供意见和方法,以及经验帮助;3同组人员通力合作,共同讨论,相互帮助;4大量查阅相关书籍和资料;5向有相关系统开发经验的前辈请教;3.1.1 调查 调查的具体内容:1对使用工行“U盾”进行过网购的部分学生进行调查分析。2.了解硬件的构造,以及相关固化函数。3.向专业人士请教,指点设计的关键之处。3.1.2 可行性分析可行性分析:通过可行性分析对所开发的usbkey从适用性、经济效益以及开发成本进行研究。通过调查和usb

10、key设计目标分析,对要开发的硬件、软件从技术、经济、资源和管理进行可行性的分析。以保证资源合理使用、避免失误和浪费。l 技术可行性:本课题采用C#语言进行编程,使用查找锁函数,获取锁基本信息,固化算法函数,读写存储器函数以及增强算法函数来实现身份认证。l 经济可行性: 本课题使用的单片机, 具有极高的性能价格比,受到人们的重视和关注。它体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易,而且操作的时间非常短,因此使用起来非常方便。l 操作可行性:要进行身份验证,必须要在客户端安装锁的驱动程序,它其实不是真正的驱动程序,而是安装必要的客户端控件。然后安装us

11、bkey开发工具,对读写锁进行设置,生成加密代码和模板工程等其他相关配置,将基本实现用户身份认证功能。 3.2 模块分析设计 (1)、设计流程设计可行性分析阶段酒店Usbkey硬件购买认证函数库的学习酒店室内设计阶段软硬件结合并测试编写程序控制代码(2)、设计的具体步骤安排:前期(设计准备阶段):此阶段根据选题的具体内容和指导老师进行细致的沟通,听取老师的意见和向老师表达自己的设计理念。 对设计进行可行性分析和对相关资料的收集整理,购买usbkey硬件。 中期(设计的具体实施阶段):该阶段按部就班地进行设计,并根据实际情况修改设计细节,同时在设计上遇到问题及时向老师求助。定期向老师汇报设计进度

12、和呈现设计成果。详细分析usbkey硬件内部结构、以及起固化函数库。理清设计思路,并根据设计安排查阅相应书籍和搞懂实现的关键操作。编写程序代码。后期(设计的整合编制阶段): 该阶段主要是对设计成果进行相应整合,制作成设计作品,同时应反复和老师交流,更正设计中的不足,完善设计作品。 主要工作是对编写的代码进行调试,以及软硬件结合并测试。 3.2设计要点分析 该设计我们使用visualstudio2005软件进行代码编写,安装驱动,在加密锁中写入用户名,密码。通过页面来进行身份认证的测试。第四章 系统实现与系统测试4.1加密锁内部结构图:KEYID固化硬件加密算法512字节数据储存区-可读可写密码

13、区(储存读写密码)硬件增强算法储存增强算法密码320到430的储存空间用于储存网站及相关的信息 加密锁内部结构4.2 usbkey身份认证验证原理模块:服务器端产生随机数服务器端使用相应的算法对随机数时行加密,生成服务端验证码服务器端将随机数发给客户端服务器端将服务器端验证码与从客户端返回的客户端验证码相比较,如果相同,则为合法用户,否则为非法用户客户端使用加密锁对随机数进行加密后,生成客户端验证码并返回给服务器端usbkey身份认证验证原理模块图4.3部分设计成果图片展示 图一、没有插入usbkey 图二、没有插入usbkey 点击提交后的效果 图三、插入usbkey,并且已经写入用户名和密

14、码 图四、插入usbkey后,返回后的效果图示 图五、插入usbkey 返回后修改随机数所得到的效果4.4 相关设计代码 4.4.1 前台代码 0; ) i -= 4; var digit = ( n i ) & 0xf; if (!start | digit != 0) start = false; result += digitArraydigit; return ( result = ? 0 : result );function Button1_Click() var DevicePath,ret,n,mylen;try/建立操作我们的锁的控件对象,用于操作我们的锁 var aObje

15、ct = new ActiveXObject(Syunew3A.s_simnew3); /查找是否存在锁,这里使用了FindPort函数DevicePath = aObject.FindPort(0);if( aObject.LastError!= 0 )window.alert ( 没有发现加密锁,请插入加密锁!);return ; /读取锁的唯一ID form1.KeyID.value=toHex(aObject.GetID_1(DevicePath)+toHex(aObject.GetID_2(DevicePath);/GetID_1()返回指定加密锁的ID号的前4个字节;加密锁的ID号

16、由8个字节组成,GetID_2()功能:返回指定设备路径的加密锁的ID号的后4个字节; if( aObject.LastError!= 0 )/返回结果如果LastError的值为0,则表示方法执行成功,则返回结果为该加密锁的ID号的前4个字节。如果LastError值为其它值,则表示方法失败,错误原因可以参见错误代码含义 window.alert( Err to GetID,ErrCode is:+aObject.LastError.toString(); return ;/获取设置在锁中的用户名,使用默认的读密码FFFFFFFF,FFFFFFFFret=aObject.YReadEx(0,

17、1,ffffffff,ffffffff,DevicePath);/YReadEx ()功能:从加密锁的指定储存空间地址读出数据,该函数用于读取一批数据mylen =aObject.GetBuf(0);/在调用YReadEx方法后,应立即调用GetBuf方法从数据缓冲区中取回数据,如果返回结果为0,则表示方法执行成功,调用GetBuf方法从数据缓冲区中取回数据。如果为其它值,则表示方法失败form1.UserName.value=aObject.YReadString(1,mylen, ffffffff, ffffffff, DevicePath);/YreadString ( )功能:从加密锁

18、的指定起始位置读取字符串,返回结果如果LastError的值为0,则表示方法执行成功,则返回结果为加密锁address的储存空间中储存的字符串。if( aObject.LastError!= 0 )window.alert( Err to GetUserName,ErrCode is:+aObject.LastError.toString();return ;/获到设置在锁中的用户密码,使用默认的读密码FFFFFFFF,FFFFFFFFret=aObject.YReadEx(20,1,ffffffff,ffffffff,DevicePath);/mylen =aObject.GetBuf(0)

19、;form1.Password.value=aObject.YReadString(21,mylen,ffffffff, ffffffff, DevicePath);/21表示读出的字符串储存在加密锁的起始位置是21if( aObject.LastError!= 0 )window.alert( Err to GetPwd,ErrCode is:+aObject.LastError.toString();return ;/这里返回对随机数的HASH结果form1.return_EncData.value=aObject.EncString(form1.rnd.value,DevicePath)

20、;/EncString()功能:使用增强算法对字符串进行加密,form1.rnd.value是要加密的字符串if( aObject.LastError!= 0 )window.alert( Err to StrEnc,ErrCode is:+aObject.LastError.toString();return ; form1.submit();catch (e) alert(e.name + : + e.message);-                 身份认证的原理概述A、第一种方法只是简单地从客户端读取锁

21、的唯一ID或从锁中读取用户的用户名及密码,这样就容易被一些黑客编写一些程序对这些进行模仿,从而绕过从客户端读取加密锁。B、方法二则是先从服务器端生产一个随机数,然后将该随机数发给客户端,同时服务器端使用与锁对应的增强算法对该随机数进行加密,生成一服务器端验证码;C、而在客户端,在获得服务器商发过来的随机数后,客户端使用对应的算法同样对该随机数进行加密,生成一客户端验证码,返回给服务器端,D、如果相同,则为合法用户,如果不相同,则为非法用户。E、只有在服务器的加密密钥与设置在锁中的加密密钥一致时,两边加密的结果才能相符,才能被合法验证。 4.4.2 后台代码 using System;using

22、 System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;namespace testkey public partial class _Default : System.Web.UI.Page protected void Page_Lo

23、ad(object sender, EventArgs e) this.Title = usbkey客户服务端身份认证; if (KeyID.Text = ) System.Random random = new System.Random();/System.Random类生成随机数.Next()返回一个02147483647之间的整数 Sessionrnd = rnd.Text = random.Next().ToString(); protected void Button1_Click(object sender, EventArgs e) /获取客户端返回的唯一ID Response

24、.Write(); Response.Write(KeyID是:); Response.Write(KeyID.Text); Response.Write(); /获取客户端返回设置在Key中的用户名 Response.Write(); Response.Write(用户名是:); Response.Write(UserName.Text); Response.Write(); /获取客户端返回设置在Key中的用户登录密码 Response.Write(); Response.Write(用户登录密码是:); Response.Write(Password.Text); Response.Wr

25、ite(); /输出当前随机数 Response.Write(); Response.Write(随机数是:); Response.Write(Sessionrnd); Response.Write(); / 返回用户锁对随机数的HASH结果 Response.Write(); Response.Write(用户返回的HASH结果是:); Response.Write(return_EncData.Text); Response.Write(); /这里在服务器端对随机数进行同样的加密运算 String strData, m_StrEnc, Key; /Key:即加密密钥,这个要与设置在加密锁

26、中的密钥一致 Key = 1234567890ABCDEF1234567890ABCDEF; /strData:要进行加密的数据 strData = Sessionrnd.ToString(); /在服务器端对数据进行加密运算 m_StrEnc = Global.m_softkey.StrEnc(strData, Key);/strData是要加密的数据。key是密钥 Response.Write(); Response.Write(服务器要运算的随机数是:); Response.Write(strData); Response.Write(); Response.Write(); Respo

27、nse.Write(服务器HASH的结果是:); Response.Write(m_StrEnc); Response.Write(); /比较客户端加密锁返回的加密结果与服务端的加密结果是否相符,如果相符就认为是合法用户,由于使用了随机数,从而实现了一次一密的高安全性,可以用于高安全性的身份验证 if (m_StrEnc = return_EncData.Text) Response.Write(该用户是合法用户); / Response.Redirect(); else Response.Write(该用户不是合法用户); Response.Write(); protected void

28、KeyID_TextChanged(object sender, EventArgs e) protected void UserName_TextChanged(object sender, EventArgs e) protected void Password_TextChanged(object sender, EventArgs e) protected void rnd_TextChanged(object sender, EventArgs e) protected void return_EncData_TextChanged(object sender, EventArgs

29、e) 增强加密算法 public string StrEnc(string InString, string Key)/使用增强算法StrEnc(),加密字符串,InString是要加密的字符串,key是加密密钥,提示:要加密字符串以8个字节为一个分组;要加密的字符串少于8个字节时,不足的字节补数据0;要加密的字符串大于8个字节,但不是8的倍数时,多余的数据不作加密处理 byte b, outb; byte temp = new byte8, outtemp = new byte8;/字符串的加密过程,是先将字符串转化为字节数组,然后调用CAL函数对数据进行加密,加密后的数据将会以16进制字符

30、串的形式返回,所以加密后的字符串的长度是原来要加密字符串的长度(含结束字符)的两倍,且至少不少于16个字符串, int n, i, nlen, outlen; string outstring; nlen = lstrlenA(InString) + 1; if (nlen 8) outlen = 8; else outlen = nlen; b = new byteoutlen; outb = new byteoutlen; CopyStringToByte(b, InString, nlen); b.CopyTo(outb, 0); for (n = 0; n = outlen - 8;

31、n = n + 8) for (i = 0; i 8; i+) tempi = bi + n; EnCode(temp, outtemp, Key); for (i = 0; i 8; i+) outbi = outtempi + n; outstring = ; for (n = 0; n = outlen - 1; n+) outstring = outstring + outbn.ToString(X2); return outstring; 第五章 小结5.1、usbkey计中遇到的问题在本次在系统的开发中,我们遇到了不少的问题,其中遇到的主要问题是开发出类似于网银登录的基于B/S的使

32、用UKey登录的身份认证系统,以实现不同用户系统功能的使用权限的不同。我们对usbkey硬件加密的认识还很肤浅,加之usbkey核心技术没有对外公开,我们在收集资料的过程中也只能搜索到一些技术人员发表的一些认识和看法。我们没有借助学习的机会,加之书店也没有类似书籍的出售,我们的设计处于尴尬的场面,不知道如何着手?从什么地方入口?这个问题一直困扰着我们。在指导老师的指导下,以上遇到的问题都得到了一定的解决,其中我们也得到了很大的进步。基本实现了客户服务端身份认证,但是没有真正意义上的完成设计主题-开发基于B/S的使用UKey登录的身份认证系统,以实现不同用户系统功能的使用权限的不同。5.2、小组

33、分工与协助主要分工:日期(2011年)预计完成内容预计分工情况备注1月8日至1月15日参考资料收集及可行性分析吴 芳1月16日至1月20日需求分析共同完成2月10日至2月30验证代码编写共同完成3月8日至3月28日硬件测试陶建飞3月29日至4月7日软硬件组合并测试共同完成4月20日至结束设计报告总结共同完成设计过程中的主要收获:在这次毕业设计工作过程中,我们不仅对所学的理论知识有了更深层次的理解,更掌握了将理论知识运用到实践中的一些必备素质。通过本次设计,让我们对软硬件结合的开发设计思想有了进一步的认识,同时提高了在设计中解决问题的能力。还有,面对繁杂的设计以及各种各样需要解决的问题,经过这次

34、设计,我们更加认识到了团队合作的重要性。最主要的是对自己在独立面对并解决问题上面建立了信心。相信在以后的生活中,能更好的自我学习,在独立解决事情方面会我们会更加勇敢积极地面对,能更好的协调小组工作,快速高效的完成项目。主要参考文献 1 郭天祥.新概念51单片机C语言教程入门,提高,开发,拓展全攻略M.北京:电子工业出版社,2009.2 郭天祥.十天学会单片机和C语言编程3 C#程序设计人民邮电出版社致 谢 大学生涯转瞬即逝,四年了,回想起陪我们一起走过的老师们同学们,心里有种无法下咽的酸楚,这种感触包容了太多的感谢和不舍,和老师同学们一起度过的美好时光将离我越来越远,只有开辟一片幽静的空间把这些属于我的种种完好保存,在不久的将来打开我记忆的行囊,它是弥足珍贵。在此是特别感谢在毕业设计和论文的写作与准备答辩期间,导师李娟老师在百忙之中抽出时间耐心的指导,帮助我们分析毕业设计存在的问题,提出不少宝贵的意见。在此表示由衷的感谢!同时也要感谢四年里老师们的关怀和指导。 陶建飞 吴芳2011年4月20日19

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!