虚拟Token的安全认证方案在.NET下使用

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:tiger0092009
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文分析了使用Token进行身份认证的方法。提出一种在.NET环境下使用虚拟Token的身份认证方案,并结合实际的系统分析了该方案在实践运行中的结果。
  关键词:身份认证;虚拟Token;.Net;网络;通信;安全
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-1pppp-0c
  
  1 前言
  
  随着网络技术的广泛应用,越来越多的应用系统通过网络传输和处理信息,随之而来的是信息的安全性令人忧虑。一个突出的事实是:许多最具有危害性的犯罪都是绕过密码保护以获取对信息或资金的访问权限。简单的“用户名 口令”的身份认证方式已经远远不能满足很多系统的安全性要求。
  .NET环境下,对用户的权限分配和用户角色的管理都有较完善的方案。用户认证的方法也有对称密钥、非对称密钥等多种方案可以选择。但客户端提交自己的用户名和密码还是明文,所有的安全工作都在服务器端完成。这种情况下,网络监听和抓包工具可以很方便地还原相应的用户名和密码。当然使用SSL可以保证信息的加密和传输的安全,但设置繁杂、维护成本高,在中小型的系统中应用较少。为此,基于双因素用户认证的Token应运而生。其基本思路是,用户成功登录要有两个因素:一个是只有他知道的口令,另一个是他拥有的,即Token。Token根据其特有的根和时间,每分钟产生一个无法预知的编码,该编码和用户口令构成了用户的通行码。要登录的机器和该用户的Token共享一个秘密。即Token的根;同时使用和Token相同的编码生成函数。机器除检查用户的口令外,还在一个小的时间片内逐个生成Token编码,并和用户输入的编码做比较,若有一个匹配,则用户的身份得到确认。显然双因索的用户认证要比单一的口令更安全。
  目前常规的做法是使用昂贵的硬件Token,一般经过三个回合的信息交换。我们提出一种更高效更经济的方案,在.NET环境下使用动态口令技术通过两个回合的信息交换用虚拟Token完成整个认证过程。
  
  2 挑战/应答式的身份认证方式
  
  挑战/应答机制身份认证属于动态身份认证。在挑战/应答机制中,每个系统用户都持有相应的挑战应答Token。Token内置种子密钥和加密算法。用户访问系统时,认证系统提示输入用户名和静态口令,认证通过后,系统下传一个中心系统随机生成的挑战数,用户将挑战数输入到挑战应答Token中,挑战应答Token利用内置的种子密钥和加密算法计算出相应的应答数。用户将该应答数上传给认证中心。认证中心根据该用户在认证中心保存的种子密钥和同样的加密算法计算出同样的应答数,并和用户上传的应答数进行比较。由于每个用户的种子密钥不同,不同用户对同样的挑战数可以计算出不同的应答数,只有用户持有指定的挑战应答Token才能计算出正确的应答数,同时该应答数只能网络中身份认证技术的研究在本次挑战应答过程中有效,不担心被他人截取,因此能保证很高的安全性。这种方式是可靠有效的认证方法。这种身份认证方法是基于物理硬件设备Token实现的。但价格昂贵,限制了技术的推广与应用。
  
  3 虚拟Token的安全性分析
  
  3.1 虚拟Token身份认证方式
  本系统的身份认证采用了安全性较高的挑战/应答式的身份认证模式。
  在认证过程中,系统将时间作为挑战数。客户使用通用的虚拟Token,用时间片和用户身份的种子算出应答数。再将应答数提交到系统进行验证。验证操作主要有2个步骤:
  第一、验证应答数是否在允许的时间片段内。第二、由服务器端预存的用户身份种子和时间片再次生成验证码,将验证码与应答数进行比较,通过后可登录系统。
  这种方式下,时间作为挑战数是一次性的,对于相同的用户身份种子加上不同的时间片在虚拟Token中运算得到的应答数是不同的,这样就可以有效防止回放攻击。
  这种方式提供了一种通用的虚拟Token,比静态口令安全性更高。
  3.2 安全通信:虚拟Token在防侦听中的作用
  在整个通信过程中,在网络中传输的是加密的应答数,加密算法选择了单向散列函数SHA-1。单向函数计算起来非常容易,但是对其求逆却异常困难。也就是说已知x,很容易计算f (x),但己知f (x),却难以计算出x。(1) (2) (3)这里所说的“难以计算”在密码学中的含义就是:即使世界上所有的计算机都用来计算,f (x)计算出x也要花费数百万年的时间。散列函数把可变输入长度的串(叫做预映射)转换成固定长度的输出串(叫做散列值)的一种函数。散列函数是典型的多到一的函数,因为不同的预映射可能会得到相同的散列值。不能用散列函数来确定两个串一定相同,但是却可以用作校验预映射的手段。
  单向函数与散列函数相结合形成单向散列函数,在密码学中应用非常广泛,它是许多安全应用协议的基本模块。(4)单向散列函数就是在一个方向上工作的散列函数,从预映射很容易计算散列值,但要从其散列值推出一个预映射却很难。另外单向散列函数要保证是无冲突的,即难于产生两个预映射的值,使它们的散列值相同,换句话说,单向散列函数是一对一的函数。
  散列函数是公开的,对处理过程不用保密,它的安全性就在于它的单向性,其输出不依赖于输入。(5) (6) (7)平均而言,预映射的单个位的改变将引起散列值中一半的位改变。(8)已知一个散列值,要找到预映射的值,使它的散列值等于己知的散列值在计算上是不可行的。
  本系统中,我们选用了SHA-1这种使用广泛的散列算法。这种算法经过密码学领域中许多专家相当长时间的测试,安全性高。这样,通过SHA-1加密的应答数即使被非法用户截取,也不会对系统安全造成威胁,这样就解决了口令明文传递的问题。
  
  4 .NET下虚拟Token认证方案
  
  本文针对硬件Token性价比过低的情况,设计了使用虚拟Token代替物理硬件Token进行挑战/应答式的身份认证。虚拟Token是一种软件形式的Token,因此成本较低,适合广泛使用。
  4.1 虚拟Token的生成方案
  用户A通过普通的用户注册过程得到了用户名和Token的根RA,同时用户A下载一个虚拟Token到本地的计算机上。
  4.2 虚拟Token的验证
  登录时,虚拟Token根据本地的时间戳TA及Token的根RA由一个单向加密算法J得到对称密钥KA=J(RA,TA),此单向加密算法在服务器端也存在。密钥的验证在服务器端实现。服务器端接收到客户端传来的消息后由当前的时间根据设定的时间片生成最多至2个(当前时间片和前一时间片)的TA,并根据用户A的用户名查出用户的根RA,之后用快速的单向加密算法得到密钥至多2 个的K’A。 最后比较客户端传来的密钥KA和服务器端生成的密钥K’A。相同时用户就被验证通过。
  
  5 实践应用
  
  .NET Framwork编程(9)最困难的一方面是确定Framework是否已经提供了系统所需的功能,还是要全部自己实现。
  本系统不创建自己的安全系统,但使用自己的Pricipal和identity,同Microsoft已有的安全体系相吻合。为了让程序员方便地采纳已有的安全系统,Micosoft提供了Iprincipal和Iidentity接口。
  为此,创建两个实现Iprincipal和Iidentity的类,分别命名为:SunewsPrincipal和SunewsIdentity,就可以让我们的类符合Microsoft原有的系统了。在SunewsPrincipal类中为实现两套不同的认证方法,这里只是简要地概括类成员。
  SunewsPrincipal类成员(通过HttpContext.User可用)
  
  图2 SunewsIdentity类
  
  6 结论
  
  身份认证是系统确认访问用户身份真实性、合法性和唯一性的手段。根据不同系统的安全要求建立性能、价格都合适的身份认证系统对信息系统的推广使用具有重要的意义。本文设计了一种使用虚拟Token的身份认证方案,并结合了.Net本身的安全认证体系,实现了使用虚拟Token的安全信息发布系统。并在实践中经过了大量的使用和检验。
  
  参考文献:
  [1]陈鲁生,沈世锰.现代密码学[M].北京:科学出版社.2002.
  [2]黄月江,龚奇敏.信息安全与保密[M].北京国防工业出版社,1999.
  [3]杨义先,林晓东,邢育森.信息安全综论[M].北京邮电大学,2000.
  [4]武新华,安向东,苏雅.加密解密全方位学习[M].中国铁道出版社,2006.
  [5]邱志聪.加密解密技能百练[M].中国铁道出版社,2005.
  [6]郭栋,孙锋,唐植明.加密与解密实战攻略[M].清华大学出版社,2003.
  [7]卢开澄.计算机密码学[M].清华大学出版社,1999.
  [8]Bruce Schneier,吴世忠,祝世雄,张文政.应用密码学[M].机械工业出版社,2000.
  [9]微软公司,詹文军,王新程.ASP.NET安全应用程序开发[M].清华大学出版社,2003.
其他文献
摘要:目前,网络已成反映社会舆情的重要载体。而随着网络舆情的快速发展,其对社会的影响是巨大的,已受到各个部门的重点关注。现阶段,网络舆情的监控系统的分析一般是通过人工方式实现。因为需要实时跟踪与监控的网站数据量比较多,而且模式复杂,人工方式已经难以满足相关要求。因此,应该加强网络舆情监控系统主题网络爬虫功能研究,从而有效满足面向特定范围内的信息采集和监测有关要求。  关键词:网络舆情监控系统;主题
摘要:该文对一种新型的折杆式舵机摆动机构进行了原理方面的深入研究,确定了折杆自转和公转的关系,通过轨迹计算机仿真,得出了在工程运用中折杆折角为小角度的结论以及自转角速度与公转角速度的关系。  关键词:新型舵机摆动机构;公转;自转;折角;计算机仿真  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)14-0237-02  通常所用的的舵机摆动机构安装在舱内,通过驱动舵
摘要:在微时代中,各种微技术充斥着我们的视野,微课、微视频、微博、微内容、微课程等都被广泛应用到教学中,那么到底什么是微课,怎么制作,怎么应用?本文从微课的概念界定、制作微课一般过程、微课在《网线的制作》一课中的应用展开,认为利用微课可以提高学生的积极性、参与性、让学生获得学习成就感。  关键词:微课;微课概念;微课制作;微课应用;网线的制作;应用效果  中图分类号:G642 文献标识码:A 文章
摘要:Windows脚本程序能够在Windows系统环境下快速地完成机房软件的安装与部署,为机房维护与管理节省大量的人力和财力资源。该文设计了 Windows脚本执行流程图,分别实现了读取主机名、修改UGS配置文件、修改UGS环境变量、读取MAC地址、修改ProE配置文件、重启计算机和删除脚本程序等七个功能模块。实践证明,采用Windows脚本程序,能够快速解决软件的批量安装与配置问题。  关键词
摘要:现今在自动化控制和网络通讯过程中经常会遇到很多的通讯不畅以及网络无法建立的问题, 文章中阐述了RS-485总线规范,描述了检查常见故障和建立比较麻烦的RS-485网络的几种方法,同时提出了相应的解决方法并讨论了利用总线得到PC上位机的RS485电路的详细方法。  关键词: RS-485;总线标准;建立方法;问题解决  中图分类号:TN91 文献标识码:A 文章编号:1009-3044(200
摘要:文章提出以就业为导向的中职计算机实训教学研究的新观点,并以《计算机组装与维护》课为例,阐述了《计算机组装与维护》课实训教学的现状,分析了原因,提出了解决的办法,尝试使用以就业为导向的方式探索新的教育教学方法,最终培养出社会需要的人才。  关键词:以就业为导向;实训教学;现状;原因  中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)30-0091-02  伴随着信
摘要:国家教育部在关于推进高等职业教育改革创新引领职业教育科学发展的若干意见中指出,高等职业教育人才培养中要改革培养模式,增强学生可持续发展能力,要把现代企业优秀文化理念融入人才培养全过程,强化学生职业道德和职业精神培养。该文主要以Flash技术课程为例,分析了以工作过程为导向从教学目标定位、重组教学内容、转变教学方式、调整考核评定、实践教学实施的保障等方面入手的教学改革研究。  关键词:工作过程
摘要:分析传统软件工程教学过程中出现的问题,提出在课堂教学中引入案例教学法的解决思路。以“图书管理系统”作为教学案例,提出教学过程中需要遵循的两个原则以及具体实施方案。实践证明,案例教学法的应用获得不错的效果,帮助学生更好地掌握软件工程思想及设计方法,强调作为软件工程师应具备的技能,更好地适应社会需求。  关键词:软件工程;案例教学;图书管理系统  中图分类号:G424 文献标识码:A 文章编号:
摘要:该文阐述了大学生实践能力的重要性,并从实验、课程设计、实习三个重要实践环节,就如何提高自动化专业学生的实践能力、创新能力做了详细的分析。  关键词:自动化专业;实践能力;大学生  中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)03-0587-02  科研成果或智力产品无论怎样杰出,没有动手能力和创新能力,或没有杰出的职工队伍,就无法形成高效的生产力,形成不了新
摘要:通过对传统仓库管理系统的不足的分析,提出了将web开发技术应用到仓库管理系统的设计与开发中的方法。按照这个思路,对系统进行了设计,最后采用JSP SQLServer2000的方式对该系统进行开发,并以出入库维护模块为例介绍了系统实现的主要方法。   关键词:仓库管理系统;web;JSP  中图分类号:TP315文献标识码:A文章编号:1009-3044(2008)18-2pppp-0c