一种实现双向认证的动态口令身份认证方案.docx
《一种实现双向认证的动态口令身份认证方案.docx》由会员分享,可在线阅读,更多相关《一种实现双向认证的动态口令身份认证方案.docx(10页珍藏版)》请在冰豆网上搜索。
一种实现双向认证的动态口令身份认证方案
一种实现双向认证的动态口令身份认证方案
来源:
网店装修
摘要本文在分析现有动态身份认证系统的基础上,结合使用国际标准加密算法设计了双向通信协议、动态密码生成算法、以及动态重调机制,解决了目前动态身份认证系统只能实现服务器对客户端的单向认证的缺陷,和以牺牲口令随机度来解决“失步”问题的不足。
关键词双向身份认证、动态口令、同步重调,动态身份认证系统
身份认证技术是信息安全理论与技术的一个重要方面,它是网络安全的第一道防线,用于限制非法用户访问受限的网络资源,是一切安全机制的基础。
这也就使之成为黑客攻击的主要目标。
因此使用一个强健有效的身份认证系统对于网络安全有着非同寻常的意义。
就国内外身份认证技术的发展情况来看,最传统的身份认证方式是帐号——口令方式;新兴的身份认证方式包括:
生物特征识别法、动态口令(又称一次性口令)认证法等。
本文中主要展开对动态口令认证法的讨论和研究。
1背景知识介绍1.1PKI体系
PKI(PublicKeyInfrastructure公共密钥基础设施)是一种遵循标准的密钥管理平台,它能够为所有网络应用透明的提供采用加密和数字签名等密码服务所必需的密钥和证书管理。
公共密钥基础设施则是希望从技术上解决网上身份认证、信息的保密性、信息的完整性和不可抵赖性等安全问题,为网络应用提供可靠的安全服务。
PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数字签名等。
完整的PKI系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建PKI也将围绕着这五大系统来着手构建。
1.2RSA加密算法
RSA加密算法,又称非对称算法,采用公钥——私钥对来对信息进行加、解密。
RSA加密算法的过程如下:
(1)取两个随机大素数p和q(保密)。
(2)计算公开的模数r=pq(公开)。
(3)计算秘密的欧拉函数®=(p-1)(q-1)(保密),丢弃两个素数p和q。
(4)随机选取整数e,满足gcd(e,®)=1(公开e,加密密钥)。
(5)计算d,满足de≡1(mod®)(保密d,解密密钥,陷门信息)
(6)将明文x(其值的范围在0到r-1之间)按模为r自乘e次幂以完成加密操作,从而产生密文y(其值也在0到r-1范围内)
y=xe(modr)
(7)将密文y按模为r自乘d次幂,完成解密操作
x=yd(modr)
下面用一个简单的例子来说明RSA公开密钥密码算法的工作原理。
取两个素数p=11,q=13,p和q的乘积为r=p×q=143,算出秘密的欧拉函数®=(p-1)×(q-1)=120,再选取一个与®=120互质的数,例如e=7,作为公开密钥,e的选择不要求是素数,但不同的e的抗攻击性能力不一样,为安全起见要求选择为素数。
对于这个e值,可以算出另一个值d=103,d是私有密钥,满足e×d=1mod®,其实7×103=721除以120确实余1。
欧几里德算法可以迅速地找出给定的两个整数a和b的最大公因数gcd(a,b),并可判断a与b是否互素,因此该算法可用来寻找解密密钥。
1.3动态口令生成原理及技术
动态口令(DynamicPassword),又称一次性口令(OTP-OneTimePassword),是相对于传统的静态口令而说的。
它一般由某种终端设备,根据动态口令生成算法产生的随动态参数变化而变化的口令。
动态口令是变化的密码,其变化来源于产生密码的运算因子是变化的。
动态口令的生成算法一般都采用双运算因子,一是用户身份的识别码,是固定不变的,如用户的私有密钥;二是变动因子,如时间、随机数、计数器值等。
根据动态因子的不同,产生了不同的动态口令认证技术。
主要分为两种,即同步认证技术和异步认证技术。
其中同步认证技术又分为基于时间同步认证技术(TimeSynchronous)和基于事件同步认证技术(EventSynchronous);异步认证技术即为挑战/应答认证技术(Challenge/Response)。
一次性口令的概念是在20世纪80年代初由美国科学家LeslieLamport提出的。
之后贝尔通信研究中心于1991年研制出了第一个动态口令认证系统S/KEY。
随之美国著名加密算法研究室RAS研制成功了基于时间同步的动态口令认证系统RSASecureID。
自此身份认证步入了动态口令身份认证系统的时代。
国内最早的动态口令系统大约出现在十年前,但技术不成熟,市场前景惨淡,至今尚未得到推广。
2现存动态口令认证系统的不足和缺陷以及解决方案2.1存在的不足和缺陷
不可否认基于动态口令的身份认证系统给网络安全带来了福音。
它的优点,如动态性、一次性、随机性、多重安全性等,从根本上有效修补了传统身份认证系统存在的一些安全隐患。
比如,可以有效防止重放攻击、窃听、猜测攻击等。
但就目前的研究成果、使用情况来看,它同样也存在这不足,以及技术上的难关。
现有的基于动态口令的身份认证系统都只能实现单向认证,即服务器对客户端的认证,这样就不能避免来自服务器端的攻击。
随着网络应用的多样性发展,越来越多的网络应用要求能够实现双向认证以确保双发的利益,如电子商务、金融业务等,因此实现双向认证就成为了身份认证的一个必然趋势。
对于同步认证技术来说,保证服务器端和客户端的高度同步是必需的。
此时如何保持服务器和众多客户端同步就成了一个技术难关。
基于同步认证技术的动态身份认证系统都存在“漂移”问题,也即“失步”。
目前的解决办法往往是以牺牲口令的随机度来弥补这个缺陷。
这无疑给系统带来了很大的安全隐患。
当然异步认证技术不存在“漂移”问题,但是它进行认证的过程比较繁琐,占用通讯时间太长,效率比较低。
本文针对上面提到的动态口令认证系统的不足和缺陷设计了一个新方案。
该方案采用双向认证通信协议实现了双向认证,并设计了一种失步重调机制。
2.2改进方案2.2.1双向认证通信协议
在这个协议中使用了直接信任模型,即客户端和服务器端通过注册阶段而建立直接信任关系。
(直接信任是最简单的信任形式。
两个实体之间无须第三方介绍而直接建立起来的信任关系称为直接信任。
)
协议中包括两个阶段:
注册阶段、登陆阶段。
1)注册阶段
注册阶段是为了让Client和Server建立初始信任关系。
整个注册过程通过安全信道进行。
注册阶段中Client和Server交换各自的id和公钥。
服务器端将
加密后存储。
客户端将
加密后存储在令牌中。
图1client通过安全信道在服务器进行注册
2)登陆阶段
符号说明:
表示用密钥加密括号内信息。
表示用密钥解密括号内信息。
表示客户端公钥。
表示客户端私钥。
表示服务器端公钥。
表示服务器端私钥。
表示客户端id。
表示服务器端id。
表示客户端某一次的动态密码。
R表示客户端生成的一次性随机数。
图2登陆阶段的通信过程
在登陆阶段,主要有七个步骤。
Client将
和本次的动态密码
用自己的私钥加密,再和
,此次产生的随机数R一并用Server的公钥加密后发送给Server。
发送完毕后,客户端会将R备份,并启动计时器,若超过一定时间T后仍无收到Server的应答数据包则丢弃该随机数R;或在T范围之内收到Server应答数据包进行验证后丢弃该随机数R。
Server先用自己的私钥对收到的消息C1进行解密,得到用用户私钥加密的数据包,记为M2,以及
和R。
Server根据得到的
,在数据库中查找对应用户的公钥
。
用
解密M2,得到
和本次动态密码。
(4)验证动态密码
的正确性。
根据和Client端一样的动态密码生成算法,生成动态密码
。
比较
和Client端发送过来的
。
若不同,拒绝Client的登陆请求,向Client发送拒绝登陆数据包;若相同,接受Client登陆请求,进入第⑤步。
Server向Client发送数据包C2,即将
和Client发送过来的R用Server的私钥
加密,再和
一块打包用Client的公钥
加密。
Client收到Server发送的反馈消息后,先用自己的私钥
解密得到用
加密的加密数据包,记为M4,以及
。
根据第⑥步中得到的
,取出对应的公钥
。
用
机密M4,得到
和R。
将R和本身暂存的R进行比较。
若相同,则验证服务器为合法身份,Client和Server建立正常通信连接;若不同,判定该服务器为非法的,拒绝和该服务器建立通信连接。
2.2.2动态口令的生成算法
动态密码,纠根揭底就是将动态因子和用户的固有秘密信息融合在一起生成登陆密码。
动态因子可以是时间、计数器次数、随机数等。
本文中设计使用的动态密码生成算法采用计数器作为动态因子。
Client端和Server端各拥有一个计数器,初始值为0。
Client和Server每成功地进行一次相互认证计数器值增1,以此来保证双方计数器的同步。
采用单向哈希函数进行加密。
HASH(哈希)函数提供了这样一种计算过程:
输入一个长度不固定的字符串,返回一串定长度的字符串,又称HASH值。
MD5算法是希哈函数的一种,输入为任意长度的报文,以512比特报文分组进行处理,产生一个128比特长度的报文摘要。
“单向”也就说明了Hash函数的不可逆性,即知道输出结果不能推出输入。
它的不可逆性大大提高了安全性。
本文中使用MD5算法来计算生成动态口令。
用户固有秘密信息为:
用户自定义的
、用户私钥
;动态因子为:
计数器的计数值,即Client和Server成功通过双向认证的次数。
定义Hash值为h=H(M)。
H表示Hash函数;M表示需要加密的信息。
。
h为Hash值,即为本文中设计算法的动态密码
。
从本质上来说,动态密码就是使用MD5加密后的密文。
相应的身份认证系统还要配备必需的硬件设施:
令牌卡。
令牌卡为客户持有,里面芯片集成动态口令生成算法,并有一个计数器。
客户每次要登陆的时候,将令牌卡插入读卡器,读取计数器值,生成本次登陆的密码传给客户端登陆程序。
客户端登陆程序根据双向认证的通信协议进行打包发送给服务器。
服务器端接收到客户发送过来的请求数据包,解密后验证动态密码的合法性。
服务器端会根据同步认证算法来验证密码的合法性。
并根据判定结果发送给服务器端应答包。
成功完成双向认证后,Client端令牌卡和服务器中的计数器各增加1。
2.2.3失步重调机制
采用同步认证技术的动态口令身份认证系统还存在着一个不可避免的问题:
同步。
若要保证Client和Server能够顺利通过双向认证就必须保持双方的高度同步。
具体到本文中来说就是要保持Client端计数器和Server端计数器的计数同步。
在正常登陆验证过程中双方计数器都会同步增1。
但网络中存在各种各样的隐患和不可预测情况,会不可避免地出现这样或那样的情况。
比如,Client成功通过Server验证,Server端计数器增1;但Server应答Client的数据包被黑客截获、篡改,或丢失,这样Server就不能成功通过Client端的验证,Client端令牌中的计数器不会增1。
很明显在这种情况下,Client端和Server端就会“失步”。
在“失步”情况下,为保证以后登陆的正常验证就要进行“失步重调”。
所谓“失步重调”就是重新同步Client端和Server端的计数器值。
本文中设计使用挑战/应答认证方法来实现“失步重调”。
挑战/应答方式是一种很好的身份认证方式,但因认证过程比较繁琐、通信量比较大,所以应用不广。
但把它用到“失步重调”机制中,只是偶尔用一次并不会影响整个系统的认证性能。
这里不再赘述挑战/应答方式的工作机制,主要介绍一下“同步重调”机制。
“同步重调”机制的原理其实很简单,它的实质就是在双方实现身份认证的情况下进行通信。
大致可以分为三步,如下示:
⑴Client将自己计数器值传送给Server。
⑵Server将之与本身的计数器值进行比较,取较大的一个进行更新。
⑶Server通知Client进行同样的更新。
这个通信过程完成后,也就完成了“同步重调”工作。
此时Server端和Client端的计数器值应该一样,且为之前两者中较大的一个。
取两者中较大的一个,是为了避免某两次使用同一个计数值计算出一样的动态口令,保证了动态口令的唯一性。
3新方案的性能分析
该方案具有如下有点:
⑴ 登陆简单,操作方便
本方案,客户端用户持有一个验证登陆令牌卡。
该卡中集成了动态口令的生成算法,服务器身份验证算法,计数器等。
登陆时用户只需将令牌卡插入专用读卡器。
在整个登陆过程中,客户端和服务器端只需两次通信,消耗带宽少,消息延迟低,效率高。
⑵ 失步重调安全、便捷
目前的动态身份认证系统中,在进行失步重调时需要用户打电话给管理员进行调较,更甚至于要到服务器端重新初始化。
然而,本方案中,只需要按令牌卡上的一个重调按钮,客户端和服务器端就会在进行身份认证的前提下进行自动重调,避免了非法用户的恶意重调,而且简单便捷。
结合使用同步认证技术和异步认证技术,两者取长补短,即解决了“失步”问题,又不影响系统的效率。
⑶ 安全性能高
方案中采用了双向身份认证,同时保证了客户端和服务器端双向安全。
通信时的随机数保证了消息的新鲜性,有效防止了重放攻击和拒绝服务攻击。
而双重加密防止了非法用户对消息的篡改和伪造,有效抵制了网络监听。
动态口令的随机性、动态性和唯一性,有效防止了猜测攻击、字典式攻击和穷举法攻击。
可见,新方案与旧方案相比具有更好的安全性,使用也更方便、简单,而且仍然保持高效可靠,具有明显的优势。
4结束语
本文中设计的动态身份认证系统实现了双向认证,采用了动态口令,结合使用同步认证技术和异步认证技术解决了“同步重调”问题。
双向认证的实现保证了客户端的安全,保证客户端不会被伪装服务器攻击;动态口令保证了服务器不会被非法用户入侵;同步认证技术和异步认证技术的结合一方面保持了系统的认证性能,另一方面解决了“同步重调”,使之变的可靠、简单。