一次性口令认证

2024-09-08

一次性口令认证(共7篇)

一次性口令认证 篇1

一、引言

随着信息技术的发展,信息安全问题受到人们的关注,而身份认证作为网络安全的第一道防线就显得至关重要。传统的身份认证技术采用口令认证机制来验证用户的合法性,其用户名和口令都是以明文的方式在网上传输,一旦攻击者截获用户名和口令,系统就被攻破了。一次性口令(OTP,One Time Password)认证技术是一种比传统口令鉴别技术更加安全的身份认证,其基本思想是在登录过程中加入不确定因素,使每次登录时计算的密码都不相同,系统也做同样的运算来验证登录,以提高登录过程安全性。本文针对我校成绩管理系统中存在的安全性缺陷,提出了一个简便有效的解决方案,利用ECC[1]密码体制对现有口令系统进行改进,对教师和服务器的身份进行双向验证。

二、椭圆曲线密码体制

椭圆曲线密码体制[2]来源于对椭圆曲线的研究,所谓椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程:

所确定的平面曲线。(1)式中系数ai(i=1,2,…,6)定义在某个域上,可以是有理数域、实数域、复数域,还可以是有限域GF(pr)。椭圆曲线密码体制中用到的椭圆曲线都定义在有限域上的。

椭圆曲线上所有的点外加一个无穷远点构成的集合连同其上定义的加法运算构成一个Abel群。在中,已知m和点P求点Q比较容易,反之已知点Q和点P求m却是相当困难,这个问题称为椭圆曲线上点群的离散对数问题,椭圆曲线密码体制正是利用这个困难问题设计而来。

加解密过程:

(1)A用户首先选择一条椭圆曲线EP(a,b),同时取椭圆曲线上一点,作为基点G,并选择一个私有密钥k,生成公开密钥K=k G;

(2)A用户将EP(a,b)和点K,G传给B用户;

(3)B用户收到A的信息后,将要传输的明文映射到EP(a,b)的一点M,并产生一个随机整数r(1≤rn≤-1),计算点C1=M+r K,C2=r G;

(4)B用户将C1,C2传给A用户;

(5)A用户收到B的信息后,计算C1-k C2=M+r K-k(r G)=M+r K-r(k G)=M,然后对M进行逆映射即可得到明文。

公开传输的参数,只有EP(a,b)、K、G、C1、C2,通过K、G求k或通过C1、C2求r都是相当困难的,从理论上保证了传输过程的安全性。

ECC密码体制优点[3]:安全性高、实现效率高、实现代价低、灵活等。

选取安全椭圆曲线的方法很多,本文采用随机选取方法生成椭圆曲线。

三、一次性口令认证系统

一次性口令(One.Time Password,简称OTP),指用户在网上传送的口令只使用一次,从而使攻击者无法通过窃取用户口令非法访问系统。90年代,基于MD4和MD5单向散列函数,Bellcore建立了“S/Key一次性口令系统”(S/Key one-time password system)。在S/Key一次性口令系统中,分为服务器端和客户端:客户端根据用户通行密语和收到服务器的挑战信息计算产生一次性口令;服务器端产生挑战信息,并校验客户端送来的一次性口令应答,将最近一次认证成功的口令和序号存储在数据记录中,并且服务器端必须让用户能够方便且安全地改变自己的通行密语。其中服务器产生的挑战信息由种子seed和迭代次数N组成。RFC1760介绍了一次性口令系统[4,5,6]。认证过程如图2-1所示:

因为服务器产生的挑战信息由种子seed和迭代次数N组成,所以每次传输的口令是不相同的,即使攻击者截取了口令也无法再次使用。可以看到,在上述过程中,客户端的通行密语并不在网上传输,也不存储在服务器端和客户端,只有使用者本人知道,不会被窃取,因此有一定的安全性。

四、成绩管理系统中ECC一次性口令身份认证方案

1、身份验证系统协议

学校服务器和教师之间采用双向认证策略。要求服务器和教师分别产生基于椭圆曲线的密钥对,采用的认证协议如下:

(1)教师用服务器的公钥加密自己的唯一标识号ID;

(2)服务器用自己的私钥解密,获得教师的ID;

(3)服务器按照该教师的公钥对随机信息Key进行加密;

(4)教师用私钥进行解密,获得Key

(5)用Key登陆服务器,对相应数据库进行操作。

2、认证方案

在本方案中,用Utch代表教师,S代表服务器,pwt代表教师的秘密短语。kTR、kTS分别代表教师的公钥和私钥,KSR、kSS分别代表服务器的公钥和私钥。K(m)表示用密钥k对明文m加密,Dk(c)表示用密钥k对密文c解密。H表示hash函数,‖表示连接。

教师注册时,通过安全信道向服务器提供自己的身份证明,服务器也要向教师提供自己的身份证明,然后确定用户名,交换双方的公开密钥。这里的公开密钥交换并不需要第三方参与,这样就避免了复杂的CA认证体系。在认证过程中,双方要选择适于建立密码体制的椭圆曲线。同时,教师注册时还要提供用自己的公钥加密的秘密短语KTR(pwt),服务器把这个加密的秘密短语存放在数据库中,与用户名一一对应,待认证时使用。认证过程如下:

(1)S初始化生成安全椭圆曲线,选取自己的公钥KSR和私钥k SS;

(2)Utch根据安全椭圆曲线系统选取自己的密钥对k TR和k TS;

(3)Utch首先向服务器发出认证请求;

(4)S收到Utch的请求,根据数据库中保存的用户名,验证Utch是否合法,若数据库中没有该用户名,则拒绝认证;如果用户名合法,则S产生一个随机数据串R,并从数据库中提出用户对应的加密的秘密短语KTR(pwt),然后计算a=H(KTR(pwt)‖R),将a,R用Utch的公开密钥加密,得到b=k TR(a‖R),同时保留副本R′,将b作为挑战信息传送给Utch;

(5)Utch收到S挑战信息b,并用其私钥解密,计算Dk TS(b),分离出a,R,同时输入自己的秘密短语pwt′,并用自己的公钥加密pwt′,得到KTR(pwt′),Utch再计算c=H(KTR(pwt′)‖R),验证c是否等于a,若通过验证,则产生随机数RT,再计算d=H(KTR(pwt′)‖R‖RT),把d和RT用S公钥加密,得到e=KSR(d‖RT),把e发送给S;

(6)S用其私钥解密e,计算Dk SS(KSR(d‖RT)),分离出d和RT,并做hash运算f=H(KTR(pwt)‖R′‖RT),比较d和f,若相等则通过验证,否则拒绝通过验证。

其中Utch验证和S的验证证明如下:

五、安全性分析

所设计的认证方案中,服务器保存的用户口令是用用户自己的公钥加密的,没有用户的私钥,也就无法获得用户的密码;口令明文只在教师端输入时出现,在网络中传输的口令是采用加密的形式隐藏在随机数据串中,而每次认证产生的随机数据串是不同的,从而保证了每次认证的内容是不相同的;教师端和服务器端实现了双向身份认证,基于安全hash函数的特性,双方都可以对收到信息的完整性进行判断;另外此方案不保存上一次登录的口令信息。因此,此方案可防止重放攻击、基于篡改的攻击等,加之ECC本身的优点,相对于其它认证方案该方案具有更高的安全性。

六、结束语

椭圆曲线密码体制是较新的加密体制,它比以往的公钥体制具有更多优点,其安全性由椭圆曲线离散对数问题保证。由于一次性口令认证技术不需要第三方公证的参与,认证简单,安全性也较高,本文所提出的成绩管理系统中ECC一次性口令认证方案的特色在于,认证方案实现了教师和服务之间的双向身份验证,有效地防止了重放攻击,在运算速度和存储空间方面相对于其他的身份认证方案具有很大优势,具有安全性高、密钥量小、灵活性好的特点,可以很好地弥补学校目前成绩管理系统存在的漏洞,具有实际应用价值。

摘要:本文阐述了椭圆曲线密码体制的基本原理及其优点,介绍了一次性口令认证技术的原理,分析了S/Key一次性口令系统。利用ECC密码体制对现有的一次口令系统进行改进,实现了成绩管理系统中双向认证的一次性口令认证方案,在运算速度和存储空间方面相对其它身份认证方案有较大的优势。

关键词:椭圆曲线密码体制,身份认证,一次性口令,成绩管理

参考文献

[1]张雁,林英等.椭圆曲线公钥密码体制的研究热点[J].计手8工艺品/算机工程,2004,30(3):127-129.

[2]曹阳,基于无线局域网认证中ECC密码体制的应用研究[D],2008,11:18-34.

[3]李佟鸿,麦永浩.椭圆曲线密码体制安全性分析[J].网络安全技术与应用,2007,7:92-93.

[4]Haller N.The S/KEY One-Time Password System[S].RFC1760,1995-02.

[5]王滨,张远洋.一次性口令身份认证方案的分析与改进[J].计算机工程,2006,7,149-150.

[6]张宏,陈志刚.一种新型一次性口令身份认证方案的设计与分析[J].计算机工程,2004,30(17):112-113.

基于口令的安全用户认证模型 篇2

随着网络在人们生活中的不断深入, 网络安全越来越受到人们的关注。身份认证是网络安全中最令人关心的热点问题之一。通常, 用户在使用网络服务前必须向认证服务器提供一个对应的身份标识以及相应的秘密信息用于身份认证, 网络服务提供商根据认证结果决定是否提供所需的网络服务及用户权限。目前网络应用大致利用以下三种类型的秘密信息实现身份认证机制:用户拥有的, 比如利用智能IC卡存放一个足够大的秘密随机数 (128/256 b) 进行身份认证;用户知道的, 比如用户利用自选的口令进行身份认证;用户的特征, 比如用户用自身的生物特征, 例如指纹、声纹、视网膜、脸型等进行身份认证。在这三类机制中, 由于成本最低、实施方便使得基于口令的认证方式应用最为广泛。

1 相关工作

目前主要应用两种口令管理方式来增强口令的安全性:一种是一次口令 (OneTime Password, OTP) 的方式[1,2];另外一种是基于Hash函数的口令管理方式。对于一次口令的方式中用户在每次认证的时候, 所提交的认证信息都是不同的, 使整个认证过程更加安全, 从而能够较好地应用在Internet环境下。但这样的OTP认证系统每隔一段时间需要用户重新初始化系统, 这使得服务器的额外开销比较大;另外, 用户在认证时需要进行多次Hash运算, 在应用上也不够方便。

目前的研究热点主要集中在基于Hash函数的口令管理方式上, 此方式的特点是真正的口令是由Hash函数计算产生, 如Gabber等提出的LPWA[3], Ross等提出的PwdHash[4], Halderman等提出的Password Multiplier[5]和Yee等提出的Passpet[6]方案。LPWA和PwdHash方案都是将用户主口令和站点域名的Hash值作为真正的账号口令。这两个方案解决了多个口令的维护问题, 但由于Hash函数的运算速度很快, 它们容易遭到暴力破解。Password Multiplier和Passpet方案首先用主口令和用户信息经过多次执行Hash运算得到中间变量v, 并保存在本地主机上, 然后使用主口令、v和Web站点域名多次执行Hash运算得到账号对应的口令, 两次计算中都执行迭代Hash运算, 增加了计算的时间复杂度, 提高了暴力破解的难度。以上基于Hash函数的方案存在明显的安全漏洞, 只要攻击者攻破主口令, 就可以计算出用户的所有账号口令, 并且用户不能修改单个账号的口令。

Gajek等[7]提出应用每个用户使用高熵的口令并且不同的帐号使用不同的口令的方法来增强口令的强度, 但没有解决用户需要记忆多个口令的问题, 并且实现方法复杂。Bruce Schneier提出的Password Safe方案[8], 将用户所有的帐号和对应的口令存储在经Twofish加密算法加密的口令库中, 用户只需要记忆访问口令库对应的主口令就能管理所有的口令, 但将口令文件存储在本地磁盘上, 非常容易被窃取和破坏, 因此不但没有增强口令的强度和安全性, 反而增加了口令的不安全因素。

本文在挑战/响应的基础上, 结合Hash函数的口令管理技术和隧道技术提出了一个基于口令的安全用户认证模型。

2 提出的基于口令的安全用户认证模型

应用Diffe-Hellman密钥交换协议, DES和SHA-512提出了一个基于口令的安全用户认证模型, 如图1所示。此模型既能够抵抗中间人攻击, 重放攻击, 字典攻击和拒绝服务攻击, 同时还能提供完善向前保密。在此模型中客户端连接器和服务器端连接器使用彼此的公钥加密Diffe-Hellman交换参数以抵抗中间人攻击;抵抗重放攻击通过在客户端连接器和服务器端连接器使用挑战/响应方式进行会话密钥建立;引入口令处理器以增加口令的强度, 同时在服务器端引入“挂起”机制以抵抗字典攻击;抵抗拒绝服务攻击通过应用Email Server用于接受服务器发送过了的激活码;为了提供完善向前保密, 客户端连接器和服务器端连接器在创建隧道时随机选择秘密指数, 隧道创建成功后就将秘密指数删除。

提出的模型主要包含:登陆模块, 口令处理器模块, 连接器模块, 数据库模块, Email Server模块。

用户通过登陆模块输入“用户名”和“口令”, 登陆模块将“用户名”和“口令”传给口令处理器模块处理, 连接器模块将“用户名”和处理过的“口令”通过隧道方式传给数据库, 数据库将处理后的结果返回给连接器, 然后通过隧道将结果返回给登陆模块。各模块的功能如下:

登陆模块:与用户实现交互的界面, 向其他模块提出请求, 并显示其他模块的响应。

口令处理器模块:用户注册和修改口令时, 主动检查用户的口令;用户登陆时, 加密用户的口令。

由于一般的用户往往会选择短的、有意义的字母组合或日常生活中常用的号码作为口令以方便记忆, 而这些类型的口令数是有限的, 因此攻击者可以利用电脑将所有可能的口令存放在字典中, 然后快速地遍历字典进行反复猜测与比对, 并在很短的时间内就有可能猜出一个用户的口令。

主动的口令检查在用户注册和试图修改口令的时候就进行。这样就可以有效地消除脆弱的, 易被破解的口令。主动的口令检查对时间和资源也没有太大的消耗, 因为其检查的过程不是一个破解的过程, 而是利用口令本身检查其脆弱性的过程[9]。

登陆时用户的口令被当作DES的密钥用以加密用户名和口令的Hash值, 为了提高安全性这里建议Hash算法使用SHA-512。加密算法被重复25次, 得出结果中包含了11个字符长的字符串和两个字符的“Salt”。在系统校验用户口令时, 系统把经过加密后的口令与Password表中存储的加密字串进行比较, 如果相同则证明用户输入的口令正确。

连接器模块:为模块之间的通信提供加密解密功能。在模块之间建立隧道, 提供相互认证, 分配会话密钥和PFS。gp是公共的Diffe-Hellman参数, a是A选择的秘密指数, b是B选择的秘密指数。

(1) 连接器A向连接器B发送质询RA;

(2) 连接器B收到质询RA, 计算gbmod p, 并将计算结果和RA一起用A的公钥加密, B再对加密结果{RA, gbmod p}A进行签名操作, 并将运算结果[{RA, gbmod p}A]B和质询RB一起发送给连接器A;

(3) 连接器A将收到结果进行解密, 得到质询RB, 质询RA和gbmod p , A计算gamod p, 并将计算结果和RB一起用B的公钥加密, A再对加密结果{RB, gamod p}B进行签名操作, 并将运算结果[{RA, gbmod p}B]A发送给连接器B;

(4) 连接器B将收到结果进行解密, 得到质询RB和gamod p;

(5) 连接器A和B各自计算gabmod p, 得到共享的会话密钥K, 隧道建立成功。

数据库模块:存储用户的相关信息。

数据库中包含Users, Password和Faillog表。这三个表解决了文献[10]中提到的如何既能防止字典攻击, 又能防止拒绝服务攻击的问题。Users表通过访问Password表获得用户的口令;Password表只能被Users表访问, 提高口令的安全性;Faillog表记录用户登陆失败的情况, 设置一个阈值, 与阈值比较, 超过阈值将该用户挂起不允许该用户再次登陆, 这样可以完全抵制字典攻击;并将一个生成的激活码发送给该用户的Email中, 以便用户再次激活帐号, 这样可以抵制拒绝服务攻击。三个表的关系如图2所示。

下面给出这三个表的具体的结构。

Users表用来记录用户登陆时认证和授权的信息, 其结构如下:

用户名:标识一个惟一用户, 设为主码, 这里用用户的邮箱地址作为用户名。

连接Password:用来连接Password表, 存取用户的口令。

用户标识:标识用户的安全级别。只有当用户的安全级别高于文件的安全级别时才可以对文件有“读”访问权[10]。

组标识:标识用户所属的组。

状态:标识用户帐户的有效性。有两个状态:“有效”和“挂起”。它能完全杜绝字典攻击。

激活码:激活用户帐户, 能防止拒绝服务攻击。

Password表用来记录用户的口令, 只能由Users表来连接调用和读取, 对其他任何操作透明。其结构如下:

用户名:同表1的“用户名”字段。

口令:这里实际存储的是加密后的口令。

Faillog表用来记录用户用户登陆时的一些相关信息, 其结构如下:

用户名:同表1的“用户名”字段。

次数:统计用户登陆失败的次数。

时间:记录最近一次登陆失败时间。

在此安全模型中另外还包括例外处理模块, 各例外处理模块的功能如下:

用户名不存在例外处理模块:向调用模块返回“用户名不存在”, 并进行相应处理。

状态无效例外处理模块:向调用模块返回“状态无效”, 要求用户输入激活码, 并与Users表中该用户的“激活码”字段比较, 相等时激活用户的帐号。

密码不正确例外处理模块:向调用模块返回“密码不正确”, 并进行相应处理。

Email Server:用于接受数据库发送过来的激活码, 可以防止拒绝服务攻击。

3 基于C/S方式的原型实现

本文提出的基于口令的安全用户认证模型的实现可以采用B/S方式, 也可以采用C/S方式。在此给出一个基于C/S结构的原型实现, 如图3所示, 客户端包含登陆模块, 口令处理模块和连接器模块;服务器端包含连接器模块和数据库。

3.1 用户注册

用户输入注册名, 连接器A使用会话密钥K加密用户名并将结果发送给连接器B, B使用会话密钥K解密将结果发送给数据库, 数据库检查用户名是否存在, 并将检查结果返回;用户名通过检测, 用户输入口令;口令处理器主动检查输入口令, 不允许弱口令通过;口令通过检测, 口令处理器对口令加密, 连接器A使用会话密钥K对用户名和加密后的口令进行加密, 并发送到连接器B;连接器B使用会话密钥K解密得到用户名和加密过的口令, 将用户名和加密过的口令发送给数据库, 数据库将用户的相关信息添入表中。

3.2 用户登陆

用户登陆时, 过程如下:

(1) 用户在登陆模块中输入用户名和口令;

(2) 口令处理器加密口令;

(3) 用户名和加密过的口令通过隧道传给数据库;

(4) 数据库验证用户

① 在Users表中查找, 如果用户名存在并且状态为“有效”, 则进入下一步;如果用户名不存在, 转向用户名不存在例外处理模块;如果用户名存在但是状态为“挂起”, 则转向状态无效例外处理模块。

② 通过连接Password字段, 连接Password表。在Password中查找用户名所对应的口令进比较如果相等进入第 (5) 步;否则进入下一步。

③ 在Faillog表查找用户名对应的记录。记录此次登陆失败的时间。将登陆失败次数加1, 比较是否超过最大限制次数。如果超过进入下一步;否则, 转向密码不正确例外处理模块。

④ 将Users表中用户的状态字段改为“挂起”。通过Faillog表中用户最近一次登陆失败时间生成一个激活码 (用于激活用户帐号) , 存储到Users表中用户对应的“激活码”字段并发送到用户的邮箱中, 转向状态无效例外处理模块。

(5) 验证通过, 通过Users表对用户进行初始化。

在客户端使用HOOK (钩子) 技术来加强登陆的安全性。

钩子函数实际上是一个处理消息的程序段, 每当一个应用程序调用函数GetMessage或PeekMessage而恰有一个消息即将被处理时, 系统调用钩子函数。也就是说, 当特定的消息发出, 在没有到达目的窗口前, 钩子函数先捕获消息, 亦即钩子函数先获得控制权。这时钩子函数既可以加工处理该消息, 也可以不作处理而继续传递消息, 还可以强制结束消息传递。系统为每种类型的钩子维护一个钩子链, 最近安装的钩子放在链的开始, 而最先安装的钩子放在最后, 也就是后加入的钩子先获得控制权。

由于最后安装的钩子总是放在最前, 也就是最先获得对消息的控制权。为此可以在客户端每次登陆时, 安装键盘钩子, 钩子截取用户输入的用户名和口令, 发送给口令处理模块和连接器模块, 登陆成功后卸载键盘钩子。由钩子函数来阻断键盘消息在钩子链中的传递, 将消息直接发送给消息接受窗口。本模型创建钩子的核心代码如下:

创建一个键盘线程钩子WHKEYBOARD, 在登陆窗口中SetWindowsHookEx (WHKEYBOARD, (HOOKPROC) KeyboardProc, hInst, GetCurrentThreadId () ) ;

钩子处理函数KeyboardProc如下:

登陆成功后UnhookWindowsHookEx (hook) ;

4 结 语

身份认证是网络安全中热点问题之一, 本文对基于口令的安全用户认证模型进行研究, 应用DES, SHA-512和Diffe-Hellman密钥交换协议提出一个能够有效抵抗中间人攻击, 重放攻击, 字典攻击和拒绝服务攻击, 同时能提供完善向前保密的安全用户认证模型, 并且进行了安全性分析。最后给出了一个基于C/S结构的原型实现。

摘要:对基于口令的访问控制进行研究, 应用DES, SHA-512和Diffe-Hellman密钥交换协议, 提出一个基于口令的安全用户认证模型。此模型可以抵抗中间人攻击、重放攻击、字典攻击和拒绝服务攻击, 同时还能提供完善向前保密。基于提出的安全用户认证模型应用HOOK技术, 给出了一个基于C/S方式的原型实现。

关键词:访问控制,身份认证,弱口令,哈希函数,HOOK,DES,Diffe-Hellman密钥交换协议

参考文献

[1]Lamport L.Password Authentication with Insecure Commu-nication[J].Communications of the ACM, 1981, 24 (11) :770-772.

[2]Haller N.The S/KEY One-Time Password System.RFC1760.1995.

[3]Gabber E, Gibbons P B, Matias Y, Mayer A.How to MakePersonalized Web Browsing Simple, Secure and Anonymous[J].Proceedings of Financial Cryptography′97, Anguilla:Springer-Verlag, 1997:17-31.

[4]Ross B, Jackson C, Miyake N, et al.Stronger Password Au-thentication Using Browser Extensions[A].Proceedings ofthe 14th USENIX Security Symposium[C].2005:17-32.

[5]Halderman J A, Waters B, Fehen E W.A ConvenientMethod for Securely Managing Passwords[A].Proceedingsof the 14th International Conference on World Wide Web[C].Chiba:ACM Press, 2005:471-479.

[6]Yee K P, Sitaker K.Passpet:Convenient Password Manage-ment and Phishing Protection[A].Proceedings of the SecondSymposium on Usable Privacy and Security[C].New York:ACM, 2006:32-43.

[7]Gajek S, Sadeghi A R, Stuble C, et al.Compartmented Secu-rity for Browsers-or How to thwat a phisher with trustedcomputing[A].Proceedings of the 2nd International Confe-rence on Availability, Reliability and Security[C].Washing-ton DC:IEEE Computer Society, 2007:120-127.

[8]Schneier B.Password Safe[EB/OL].http://www.schneier.com/passsafe.html.

[9]董光宇, 高安全等级操作系统及网络服务的标识鉴别机制[D].北京:中科院软件所, 2002.

基于动态口令的身份认证方法 篇3

关键词:动态口令,静态口令,轻量级密码,组合单钥

0前言

随着网络应用的不断发展, 解决具有海量用户的网络快速认证技术需求迫在眉睫, 这种安全需求主要是要提高海量用户的密钥交换的速度, 使用现有技术已经不能满足处理大数据的安全需求。若使用双钥密码体制如:RSA或ECC算法, 建立安全认证协议, PKI架构建设成本较高, 认证协议效率较低, 制约了PKI技术针对海量用户的应用。基于令牌设备的动态口令认证系统提高了时效, 但是, 这类动态口令是由用户根据动态令牌显示屏上显示的动态口令, 实时输入计算机后, 由客户端再提交到网络认证中心端, 实施网络身份认证, 该认证模式容易受到“假银行”式的病毒攻击, 安全等级相对来说较低些。

为解决动态口令的安全隐患, 我们提出采用轻量级密码算法和一种安全单钥管理方法, 在客户机和认证中心两端建立加密和认证协议, 将用户在客户机端输入的静态口令和认证系统自动生成的静态口令, 通过密钥元素代替表, 代替成一次一变的认证密钥, 再生成动态口令, 实现身份认证, 从而, 建立一种基于动态口令的身份认证系统。

1 动态口令的安全架构

1.1 动态口令的客户机端安全架构

在客户端的客户机上使用USB接口的智能卡, 或者在移动终端上使用SD智能卡, 在智能卡的芯片里, 建立客户端的加密系统, 写入:轻量级密码算法、单钥组合生成算法、客户端动态口令认证协议, 且写入数据:客户端智能卡的标识和一套“密钥种子”表C的元素。

每个用户的客户端智能卡都有唯一的标识, 且两两互不相同, 每位用户都持有不同的一支基于USB接口的智能卡或SD智能卡。

1.2 动态口令的认证中心端安全架构

认证中心由认证服务器和加密卡硬件设备组成, 在认证服务器的PCI接口上插入加密卡, 在加密卡的芯片里建立认证中心端的加密系统, 写入轻量级密码算法、单钥组合生成算法、认证中心端用户的静态口令和“密钥种子”表C元素的加密和数字签名协议, 认证中心端用户的静态口令和“密钥种子”表C元素密文的解密和签名验证协议, 认证中心端动态口令认证协议, 在认证中心端认证服务器的硬盘存储区, 建立“密钥种子”数据库, 该数据库中存储每条记录的字段内容为:①用户名i、用户客户端智能卡的标识Ti、②用户的静态口令密文、③“密钥种子”表Ci元素的密文、④静态口令和“密钥种子”表Ci元素的数字签名即:静态口令和“密钥种子”表Ci元素摘要信息Gi的密文, 其中:i=1~n, n为全体云用户数量总和。

2 安全单钥管理技术

安全单钥管理技术是指:通过单钥组合生成算法来实时产生认证密钥, 解决认证系统中单钥更新的管理方法。

2.1 单钥组合生成算法

单钥组合生成算法是通过一组时间戳和随机数组成的选取参数, 来对一套“密钥种子”表C的元素进行选取, 用时间戳对“密钥种子”表C的“行”元素进行选取, 选出W行Y列的“密钥种子”表C的 (V×Y) 子表D, 再根据随机数, 对 (V×Y) 子表D的“列”元素进行选取, 选出V个元素, 将这V位元素组成一套 (V×1) “密钥种子”子表E, 其中:W=109, V=36, Y=32, 将“密钥种子”子表E的元素, 与全体静态口令元素之间, 建立一一对应关系, 生成密钥元素代替表, 再根据用户输入的静态口令和认证系统自动增添的静态口令, 从密钥元素代替表中选出对应的密钥元素, 并合成一组认证密钥。

2.2 建立密钥种子表

在密钥初始化过程中, 由认证中心端加密卡芯片里的随机数发生器, 生成一组F1字节随机数, F1=1744字节, 将F1字节的随机数组成, 一套W×Y的密钥种子表C,

其中:表C的元素为占1字节, W=109, Y=16;

密钥种子表C的组成:“年”子集、“月”子集、“日”子集、“时”子集和固定子集组成, “年”子集占10行16列, “月”子集占12行16列, “日”子集占31行16列, “时”子集占24行16列, “固定”子集占32行16列, 5个子集共占W=109行, 16列。

2.3 单钥组合生成算法的具体实施过程

2.3.1

由时间戳从“密钥种子”表C的元素中选V=36行元素, 首先, 根据时间戳从表C选出4行, 其方法是:用时间戳“年”数字中个位数的数值, 取表C中“年”对应的行数, 如:时间戳为:2013XXXXXX, 则:取表C中的第4行, ……, 用时间戳“时”数字的数值, 取表C中“时”对应的“行”, 如:时间戳为:20XXXXXX21, 则:取表C中的第74行, 再将表C的“固定”子集共32行全部选出, 共选出V=36行, 组成:36×16表C的子表D,

其中:表D的元素占1字节, 表D中第5行~第V=36行的元素与表C的第78行~第W=109行的元素完全相同;

2.3.2

根据随机数从表D中选出V=36位元素, 设:随机数为:Q1, Q2, ......, Q36, 对应随机数的数值分别为:q1, q2, ......, q36, 当Y=16时, 每位随机数为4比特十六进制数组成, 36位随机数对应的数值为:0~15之间, 用:q1, q2, ......, q36, 对表D的1~V=36行中列的元素进行选取, 即:用第1位随机数Q1的数值q1, 来选取表D第1行的第q1+1列的元素, 用第2位随机数Q2的数值q2, 来选取表D第2行的第q2+1列的元素, ......, 用第V=36位随机数Q36的数值q36, 来选取表D第V=36行的第q36+1列的元素, 共选取V=36个元素, 将选取出的这36个元素组成一个 (36×1) 的子密表E;

其中:“密钥种子”子密表E的元素占1字节, V=36。

2.3.3 建立密钥元素代替表

用户的全体静态口令由0~9或A~Z组成, 将这36个数字或字母与表E的元素建立一一对应关系, 即:将“0”对应子表E的第1行元素E1, 将“1”对应子表E的第2行元素E2, ……, 将“Z”对应子表E的第36行元素E36, 组成密钥元素代替表:

2.3.4 生成认证密钥

(1) 增添静态口令, 设:用户的静态口令的长度为:N1=6~16位, 认证密钥K占16字节 (128比特) , 由N1位静态口令从密钥元素代替表中, 选取N1组密钥元素来合成认证密钥K, 若合成的认证密钥K小于16字节, 则认证系统增添N2位静态口令, 其中:N2=Y-N1位, Y=16或32, 表C的元素占1或0.5字节, N1=6~16位, N2=0~26位。

若时间戳的“时”为偶数, 从0到9这连续的10个数字, 再从A到P这连续16个英文字母共26位口令元素中, 取N2位数字或英文字母作为增添的静态口令。若时间戳的“时”为奇数, 从A到Z这连续26个英文字母中, 取N2位英文字母作为增添的静态口令。

(2) 生成认证密钥,

设:用户输入的N1位静态口令为:R1、R2、……、RN1, 由认证系统增添的静态口令为:T1、T2、……、TN2。由静态口令:R1、R2、……、RN1, 从密钥元素代替表选出对应的N1组密钥元素“Eb1、Eb2、……、Eb N1”, 1≤b 1~b N1≤36, 将“Eb1、Eb2、……、Eb N1”合并后作为K1, Y=16, 表C的元素都占1字节, 则N1组密钥元素占6~16字节。

由认证系统自动增添的静态口令:T1、T2、……、TN2, 从密钥元素代替表选出对应的N2组密钥元素为:“Ec 1、Ec2、……、Ec N2”, 将“Ec 1、Ec 2、……、Ec N2”, 1≤c 1~c N2≤36, 合并后作为K2。Y=16, 表C的元素都占1字节, 则N2组密钥元素共占0~10字节。

将K1与K2合并成认证密钥K, 即:K=Eb1、Eb2、……、Eb N1、Ec 1、Ec 2、……、Ec N2。

举例说明, 设:N1位用户静态口令为“9、A、1、0、Z、Z”, 共6位, 根据密钥元素代替表代替后, 生成的密钥元素K1=“E10、E11、E2、E1、E36、E36”;

当时间戳中“时”为偶数时, 则认证系统增添的静态口令为:“0~9, 即:N2=16-6=10位, 根据密钥元素代替表代替后, 生成的密钥元素K2=“E1、E2、……、E10”。将K1与K2合并后生成K, 即:K=“E10、E11、E2、E1、E36、E36、E1、E2、……、E10”。当时间戳的“时”为奇数时, 则认证系统增添的静态口令为:“A~J”, 即:N2=16-6=10位, 根据密钥元素代替表代替后, 生成的密钥元素K2=“E11、E12、……、E20”。将K1与K2合并后生成K, 即:K=“E10、E11、E2、E1、E36、E36、E11、E12、……、E20”, 其中:K占16字节。

3 基于动态口令认证系统的安全协议

3.1 客户端的动态口令认证协议

当用户登录WEB服务器后, 首先, 用户输入用户名和用户的静态口令, 由连接WEB服务器的认证中心端加密系统, 产生一组时间戳和随机数, 并产生认证生命周期T, 将该组时间戳和随机数发送客户端智能卡芯片里, 在客户端智能卡芯片里, 根据时间戳和随机数组成的单钥组合生成算法, 首先, 生成密钥元素代替表, 再将用户输入的H1位用户的静态口令, 代替成H1组密钥元素并合成密钥元素K1, 将认证系统自动增添的N2位静态口令, 代替成N2组密钥元素并合成密钥元素K2, 将K1与K2合并成认证密钥K, 客户端加密系统用认证密钥K将随机数加密成密文, 得到随机数密文即:动态口令, 并与用户名和客户端智能卡的标识等3组认证参数一起发送给认证中心端。

3.2 认证中心端的动态口令认证协议

认证中心端加密系统, 在接收到客户端发送来的3组认证参数后, 首先, 计算对应的认证生命周期T, 测试T是否过期, 若过期, 则为非法用户, 返回“非法用户!”, 否则, 认证中心端的加密系统, 根据用户名和客户端智能卡的标识, 在“密钥种子”数据库中定位对应的记录, 将该记录对应的H1位静态口令密文和“密钥种子”表C元素密文, 输入加密卡芯片里, 在加密卡芯片里, 用一组固定对称密钥KK, 将该记录中的静态口令密文和“密钥种子”表C元素密文解密, 再根据根据时间戳和随机数组成的单钥组合生成算法, 对“密钥种子”表C元素进行选取, 生成密钥元素代替表, 将H1位静态口令代替成H1组密钥元素并合成K1, 将认证系统自动增添的H2位静态口令, 代替成H2组密钥元素并合成K2, 将K1和K2合并成认证密钥K, 认证中心的加密系统, 用K加密随机数生成认证中心端的动态口令, 通过对比两端的动态口令是否相同?来判断客户端的用户身份是否合法。

3.3 认证中心端用户的静态口令和“密钥种子”表C元素的加密和数字签名协议

认证中心端加密系统, 在加密卡芯片里, 用摘要算法 (如:SM3或SHA-1等) 对用户的静态口令和密钥种子表C元素进行摘要, 得到其摘要信息L1, 再用一组固定的对称密钥KK, 分别将每个用户的静态口令和“密钥种子”表C的元素加密成密文, 并将每个用户的静态口令和“密钥种子”表C元素的“摘要”信息L1进行加密, 得到每个用户的静态口令和“密表种子”表C元素的密文, 并得到每个用户的静态口令和“密表种子”表C元素摘要信息L1的密文即:每个用户静态口令和“密表种子”表C元素数字签名, 再将每个用户的用户名、客户端智能卡的标识、用户的静态口令密文、“密钥种子”表C元素的密文、用户的静态口令和“密表种子”表C元素的数字签名, 一并事先存储在认证中心端的“密钥种子”数据库中。

3.4 认证中心端用户的静态口令和“密钥种子”表C元素密文的解密和签名验证协议

认证中心端加密系统, 首先, 在“密钥种子”数据库中选出一条记录, 输入加密卡芯片里, 在加密卡芯片里, 调用固定对称密钥KK, 将该记录中用户的静态口令和“密钥种子”表C元素密文解密, 并将用户的静态口令和“密表种子”表C元素的数字签名解密, 得到用户的静态口令和“密钥种子”表C元素的明文, 并得到用户的静态口令和“密钥种子”表C元素摘要的明文L1, 再调用“摘要”算法对用户的静态口令和“密钥种子”表C元素, 进行摘要得到摘要信息L2, 通过对比L1和L2是否相同?来判别认证中心端对应用户的静态口令和“密钥种子”表C的元素是否可信、完整。

4 动态口令身份认证系统的主要优势

客户端用户的静态口令一部分由用户输入计算机, 一部分由认证系统自动产生, 通过密钥元素代替表生成认证密钥, 认证密钥生成过程都是在智能卡或加密卡的芯片里生成, 明文不出芯片, 保证两端认证密钥运行安全。

客户端“密钥种子”和单钥组合生成算法, 存放在智能卡芯片里, 保证客户端单钥组合生成算法和“密钥种子”数据的存储安全。认证中心端的单钥组合生成算法存放在加密卡芯片里, 全体用户的静态口令和“密钥种子”是以密文的形式存储, 保证认证中心端单钥组合生成算法和全体用户密钥种子的存储安全, 防止黑客通过篡改用户的各种认证参数, 来攻击认证系统。

由时间戳和随机数组成的单钥组合生成算法, 从“密钥种子”表C中选出的36组元素, 组成的子表E并由子表E元素, 与全体静态口令元素组成密钥元素代替表中的密钥元素变化量为:1636或3236, 即:2144或2180, 基本上一次一变。

用户输入计算机的静态口令虽然不变, 且认证系统自动增添的静态口令也基本不变, 但是, 经过实时产生一次一变的密钥元素表的代替, 生成的认证密钥一次一变。

用一次一变的认证密钥加密36位随机数生成随机数密文即:动态认证口令, 其中:每位十六进制的随机数占4比特, 36位十六进制随机数共占144比特, 变化量为:2144, 动态口令的变化量也为:2144, 基本上一次一变。

采用挑战/应答式认证模式, 能通过在认证中心端设置认证过程的生命周期T, 来控制用户进行身份认证的整个进程, 防止黑客利用截获的动态认证口令, 来攻击认证系统。

采用一种安全单钥管理技术建立安全协议的策略, 是基于智能卡和加密卡的芯片是可信的基础上, 认证系统中的各种安全协议, 是在智能卡芯片和加密卡芯片里完成, 都是基于“芯片级”的协议, 安全性高。

5 结束语

本方案提出在客户机端智能芯片和认证中心端加密卡芯片里, 采用轻量级密码和安全单钥管理技术来建立动态口令认证系统, 将用户输入的静态口令和认证系统增添的静态口令, 通过一次一变的密钥元素代替表代替后, 生成的认证密钥一次一变, 并产生的动态认证口令也一次一变, 保证认证系统既高效, 又安全。能满足具有海量用户的网络身份认证, 为我国未来网络的应用和发展保驾护航。

参考文献

[1]GM/T 0021-2012, 动态口令密码应用技术规范.

[2]专利申请号:200510107835.8发明名称:一种防止银行信用卡被盗用的方法发明人:胡阳.

[3]胡祥义, 徐冠宁, 杜丽萍.基于云计算的文件加密传输方法[J].网络安全技术与应用.2013.5.

[4]沈昌祥.云计算安全与等级保护[J].信息安全与通信保密.2012.

[5]冯登国.开启云计算安全时代[J].信息网络安全.2011.

[6]张云勇, 陈清金.云计算安全关键技术分析[J].电信科学.2010.

[7]冯志刚, 马超.浅谈云计算安全[J].科技风.2010.

基于动态口令的IKE认证实现 篇4

认证服务机制是实现网络安全的重要机制之一。通过这种机制, 认证服务器通过网络验证用户的身份与所宣称的是否一致, 然后才能实现对用户的访问控制。目前有多种认证机制, 如基于DCE/Kerberos的认证机制、基于公钥的认证机制以及基于挑战/应答的认证机制等。本文在基于挑战/应答认证机制的基础上, 提出了一种基于动态口令的认证机制, 能够有效地抵抗冒充服务器攻击, 具有更高的安全性。

1 动态口令认证系统

动态口令认证系统是基于时间变化的, 每次登录时传送的信息都不同, 可以有效地避免重放、窃听、猜测等攻击, 解决了静态密码可能出现的在传输中被窃取和在数据库中被盗用的问题。其主要思想是为每个用户分配一个账号, 每个账号配有种子、迭代值和共享密钥, 种子以及变化的迭代值就能够产生一系列口令, 每个口令用户只能使用一次, 用户与服务器间的共享密钥离线分发。在VPN服务器上内置一个动态口令认证服务器, 可以对动态口令客户端外设产生的动态口令进行认证。动态口令也作为密钥交换的一个因素, 来保证密钥交换的安全性, 从而保证VPN的传输安全。这样我们就得到一种混合的协议, 我们把它称为基于动态口令的IKE协议。

利用动态口令可以产生Diffie-Hellman密钥交换的验证随机串。在第一阶段交换中利用Diffie-Hellman密钥交换得到安全关联的主密钥;利用验证随机串验证。之后在第一阶段安全关联保护下完成IPSec安全关联的协商。

1.1 认证过程

动态口令认证阶段客户端和服务器端共享随机串N1, N2;用户输入用户ID和动态口令PW, 计算ClientAuth=Hash (N1+PW) , 发送消息ID和给服务器, 要求认证并建立连接;这里Hash采用的是SHA-1函数。服务器获取用户ID后, 利用内置的动态口令认证服务器计算出口令PW, 计算ServerAuth=Hash{N1+PW) , 认证串ServerAuth与ClientAuth比较:若一致, 再查看PW是否使用过 (保证动态口令的一次性) , 未使用过则认证通过, 返回认证成功;否则返回认证失败, 中止协议交互。

认证成功后, 客户端和服务器端同时利用动态口令和共享静态串生成验证随机串ProKey=Hash (N2+PW) , 以保证DiffieHellman交换的完整性, 防止中间人攻击。

1.2 第一阶段交换

(1) 客户端临时生成随机数x, 计算ga=gxmodp作为Diffie-Hellman交换的公开值。客户端和服务器提前共享了素数P和整数g, 其中g是P的原根。

(2) 客户端生成校验串HASH_I=HMAC (ga, ProKey) , 校验ga的完整性, 并将ga, HASH_I发往服务器 (HMAC采用的是SHA-1函数) 。

(3) 服务器临时生成随机数Y, 计算gb=gymod p和校验串HASH_R=HMAC (gb, ProKey) 。服务器将gb, HASH_R发往客户端。

(4) 服务器收到客户端发送来的ga, HASH_I后, 计算HASH-Check-S=HMAC (ga, ProKey) 。若HASH_I与HASH-Check-S一致, 校验成功;若不一致, 则说明中间人修改了ga, 服务器中止协议交互。

(5) 客户端收到服务器发送来的gb, HASH_R后, 利用相同的算法进行校验。

(6) 客户端, 服务器的校验都通过后, 客户端计算DH_Key= (gb) xmod p、服务器计算DH_Key= (ga) ymod p, 安全生成作为Diffie-Hellman交换的密钥。

由Diffie-Hellman交换原理我们知道, DH_Key= (gb) xmodp= (ga) ymod p。

由上述流程可知, 在DH_Key的生成过程中, 校验随机串ProKey生成了校验串HASH_I, HASH_R。一旦中间人修改了ga或gb, 将其转换为ga′, gb′, 由于ProKey只有客户端和服务器能够获得, 就无法生成相应的HASH_I′。所以校验随机串的验证保护使得Diffie-Hellman交换是安全的;而由Diffie-Hellman交换得到的密钥DH-Key衍生出第一阶段交换安全关联的主密钥部分。这样就可以利用第一阶段的安全关联保护下一步的安全通信。

在动态口令认证交换中, 只有服务器对客户的身份进行校验;而在本阶段交换过程中, 客户端发往服务器的校验串和服务器发往客户端的校验串都要经过对方校验, 也就是说本阶段过程中的校验是双向的。

1.3 第二阶段的交换

在第一阶段安全关联保护下, 利用3DES-CSC对称加密算法进行会话密钥等安全服务的交换, 进而保证了安全的VPN传输;其间加入了对虚拟IP的支持, 将标准IKE第二阶段的交换的信息类型进行了一定扩展。

第一阶段交换采用修正的IKE的主模式进行。首先交换安全关联的相关信息, 然后在动态口令认证的基础上, 进行带有校验的Diffie-Hellman交换, 生成第一阶段的安全关联。

在动态口令认证交换己经传输过身份消息, 对IKE的主模式的修正主要是在第5, 第6条消息的传输;没有加密后传输, 而是直接传输验证消息, 这样既能提高一些效率, 同时又不降低安全性。

在这一阶段交换完成后, 利用Diffie-Hellman交换得到的密钥DH_Key衍生出SKEYID_e作为第一阶段交换得到的安全关联的主密钥部分, 用于保护下一阶段的密钥交换。第二阶段交换在第一阶段交换的安全关联保护下, 完成IPSEC安全关联的协商。

2 基于动态口令认证的IKE协议的安全分析

在动态口令认证交换阶段, 如果攻击者冒充客户, 由于动态口令没有在网络上传输, 攻击者无法获得正确的动态口令, 无法计算出正确的ClientAuth值, 服务器端认证该使用者失败, 从而中断协议;如果攻击者假冒服务器端, 由于动态口令认证仅仅是单向客户端认证, 假冒的服务器无法获得动态口令, 因此无法产生正确的随机保护串ProKey。在下一阶段, 由于无法构造Diffie-Hellman密钥交换的校验串HASH_R, 而被客户端识别。

在第一阶段带校验的Diffie-Hellman密钥交换过程中, 攻击者不知道ProKey, 无法生成正确的HASH_I和HASH_R。因此在客户端和服务器端都可以校验出是否有“中间人”攻击, 从而停止协议。由于用户的口令是动态的, 使得每次的ProKey都不一样, 也保证了IKE密钥交换的安全。

在动态口令认证交换中, 只有服务器端对客户的身份进行一个单向的认证。而本文中基于动态口令认证的IKE协议, 在第一阶段交换过程中, 客户端和服务器端可以对对方的身份进行认证, 是双向认证。

由此可以看出, 基于动态口令认证的IKE协议在身份认证的过程中避免了静态口令存在的口令泄露等问题, 能够防范Diffie-Hellman密钥交换过程中中间人的攻击, 有效地防止了网络侦听, 实现了强口令身份认证。而IKE的安全性主要取决于diffie-hellman密钥交换的安全性, 从而保证了实现的VPN系统的认证安全和传输安全。

摘要:认证服务机制是实现网络安全的重要机制之一。在基于挑战/应答认证机制的基础上, 提出了一种基于动态口令的IKE认证实现, 使其成为一个安全的双向认证协议, 能够有效地抵抗冒充服务器攻击, 具有更高的安全性。

关键词:动态口令,认证,IKE,密钥交换

参考文献

[1]Hailer N.A one-time password system (RFC2289) [EB/OL].http://www.faqs.org/rfcs/rfc2289.htm1.

[2]Hailer N.The S/KEY one-time password system (RFC1760) [EB/OL].http://www.faqs.org/rfcs/rfc1760.htm1.

[3]王滨, 刘刚.动态口令认证方案的研究与改进[J].计算机工程与设计, 2007 (6) .

[4]Krawczyk, H.Bellare, R.Canetti, HMAC:Keyed-Hashing for Message Authentication, RFC2104, February1997.

[5]ANSI X9.52-1998, “Triple Data Encryption Algorithm Modes of Operation”, American Na-tional Standards Insitute, 1998.

[6]William Stallings, Cryptography and Network Secutity:Principles and Practices, Third Edition, Pearson Education, 2003.

一次性口令认证 篇5

随着计算机网络的高速发展, 越来越多的电子交易在网上进行, 但网络安全性一直是人们担心和不可忽略的一个问题。网络安全问题的存在, 一方面是由于网络黑客技术手段的高明, 另一方面则是因为网络协议存在着漏洞和不安全性。智能卡是一种集成且带有智能的电路卡, 它具有读写和存储并自动处理数据的功能。这种特性决定其可以在网络安全中扮演重要角色。

自从1981年Lamport首次提出远程口令认证方案以来, 口令认证的研究一直没有间断。近年来基于智能卡设计的认证协议也越来越多。文献[1]中阐述了一种可信的基于智能卡口令双向认证方案, 其特点是安全性高, 安全功能全面, 但是要求方案中的服务器处于可信计算环境中。文献[2]提出了一种基于双线性对和智能卡的认证方案, 利用椭圆曲线上离散对数的困难性, 使计算成本更低, 安全性更高。文献[3]中给出的基于智能卡的改进的身份认证方案, 有效地解决了原有方案存在的安全性缺陷, 同时具有较高的计算效率和较低的通信成本等优势。但也有一些协议存在着安全性问题。2006年, Liao等[4]人提出了一个一次性口令身份认证方案, 随后, 潘春兰等[5]分析了该方案, 发现一旦攻击者获取智能卡内秘密参数信息, 方案便易遭离线口令猜测攻击和仿冒攻击, 并针对这些安全缺陷进行了改进。2008年, 许春香等[6]提出一种使用双线性对构造的智能卡口令认证方案, 2010年邓栗等[7]通过分析该方案证明方案中存在不能抵抗仿冒攻击和单向认证等安全性缺陷, 进而提出了一个基于双线性对的智能卡口令认证改进方案, 并声明他们的改进方案克服了原方案的安全缺陷。2012年, 薛锋等[8]分别对潘和邓等人改进后的方案进行了分析, 发现潘春兰等方案不能抵御离线口令猜测攻击和登录阶段存在设计缺陷。邓粟等方案不能抵御Dos攻击、DDos攻击和内部攻击。除此之外, 本文指出潘方案还存在着一定的设计缺陷, 同时两个方案都不具备抵御劫取连接攻击的能力。针对此类攻击, 不同文献基本上都采用定时发送认证信息的思想来该攻击, 但实现发送中间认证信息的方式又略有所不同。根据两个方案的特点, 文中分别采用Hash函数计算和双线性对计算来抵御此类攻击。

1 基础知识

1. 1 双线性对

设G1是椭圆曲线群中阶为素数q的加法循环群, G2是与G1同阶的乘法循环群, P是G1的生成元, 称e: G1×G1→G2是一个双线性映射, 如果它满足以下性质:

(1) 对称性

给定元素P, Q, R∈G1有:

(2) 非退化性

存在元素Q、R∈G1, 使得e ( Q, R) ≠1G1, 其中, 1G1是群G2的单位元;

(3) 可计算性

对任意的元素Q, R∈G1, 存在一个有效的算法可计算e ( Q, R) 。

若群G1取有限域上超奇异椭圆曲线或超椭圆曲线, 双线性对就可以利用该曲线上的Weil配对或Tate配对构造。

1. 2 SM2 和 SM3 算法

SM3算法是我国自主的摘要算法, 它是对SHA的一个改进, 原理和SHA大致相同, 对于给定的长度为k ( k < 264) 的消息, SM3杂凑算法经过填充、迭代压缩和选裁, 生成长度为256比特杂凑值, 它的安全性高于MD5, 这里我们选择SM3作为方案中的摘要算法, 文献[9]对SM3做了详尽的介绍。

SM2算法[10]是由国家密码管理局编制的一种基于椭圆曲线理论实现的非对称算法, 是国际上ECC椭圆曲线算法的优化。SM2算法的总体安全性和性能方面与ECC算法一致, 是目前已知的公钥体制中对每比特所提供加密强度最高的一种算法, 192位的SM2密码强度已经比RSA 2048位密码强度要高。它的签名速度快, SM2在私钥运算上, 速度远比RSA快得多。

2 两个方案的安全性分析

除了薛锋等人在文献[8]中指出潘方案的不足之处外, 潘方案在口令更改阶段也存在着设计缺陷。

潘方案口令更改阶段设计如下:

( 1) 用户将智能卡插入读卡器, 提交身份ID和口令PW, 请求更改口令。

( 2) 智能卡SC首先判断用户身份ID的合法性。若ID非法, 拒绝口令更改请求, 否则, SC取出r, 计算hpw*= h ( PW⊕r) 、k = C1⊕hpw*、C2*= h ( k⊕r) , 比较C2*= ? C2, 如果不相等, 拒绝口令更改请求, 否则提示用户选择新登录口令PWnew。

( 3) 智能卡SC提交新登录口令PWnew, 计算C1*= k⊕PWnew, 将C1*写入智能卡代替C1完成口令更改。

由文献[5]中方案的注册阶段可以知道, hpw = h ( PW⊕r) 、C1= h ( ID‖x‖R) ⊕hpw、C2= h ( h ( ID⊕x⊕R) ⊕hpw) , 当合法用户需要更改口令时, 按上述步骤计算hpw*= h ( PW⊕r) 、k = C1⊕hpw*、C2*= h ( k⊕r) = h ( C1⊕hpw*⊕r) = h ( h ( ID‖x‖R) ⊕hpw⊕hpw*⊕r) , 当输入的PW正确时, hpw*= hpw, 则C2*= h ( h ( ID‖x‖R) ⊕r) , 而C2= h ( h ( ID⊕x⊕R) ⊕hpw) , 进而可知h ( ID‖x‖R) ⊕r与 ( h ( ID⊕x⊕R) ⊕hpw不会相等, 则无论输入的PW是否正确, C2*与C2是不会相等的。可知口令更改阶段不能实现更改口令的功能。

劫取连接攻击: 此类攻击最早由Bellovin提出, 文献[11]详细地介绍了此类攻击和相应的攻击工具Hunt。这类的攻击方法是: 1) 合法用户通过认证, 成功与服务器建立连接后, 2) 攻击者绕过身份认证确认这一关, 设法劫取此连接以冒充合法用户非法访问服务器。这样攻击者就成功地冒充合法用户, 达到欺骗服务器的目的。可知, 潘春兰方案和邓粟方案都不具备抵御此类攻击的能力。

3 方案的改进

本节主要介绍如何对两个方案进行改进, 对两个方案有设计缺陷的阶段进行重新设计, 协议本身的安全性尤其重要[12]。针对潘方案不能抵御离线口令猜测攻击的问题, 通过引入随机数保证口令信息的安全。同时引入国产加密算法SM2对两个方案中的关键信息进行加密处理。对于劫取连接问题, 文献[13]采用S/KEY口令的原理构造中间认证信息Hn ( N) , 利用n值的动态变化来保证中间认证信息的唯一性。文献[14]采用对称加密构造中间认证信息Ek ( N + i) , 利用i的动态变化防御中间认证信息被伪造, 本文给出的改进方案则采取两种截然不同的方法来抵御此类攻击。对于潘方案, 引入SM3摘要算法, 基于SM3算法的Hash计算构造中间认证信息, 而邓方案采取基于双线性对的计算来构造中间认证信息, 进而可以抵御劫取连接攻击。

改进方案使用的符号及其含义如下:

3. 1 潘等方案的改进

方案包含四个阶段, 即注册阶段、登录阶段、认证阶段和口令更新阶段。认证阶段过程见图1所示。

( 1) 注册阶段

Step1用户Ui选择身份标识IDi, 口令PWi和随机数r, 并计算hpw = h ( r⊕PWi) 、hid = h ( r⊕IDi) 。并发送EKsp ( hid‖hpw) 至S。

Step2服务器S收到来自Ui的注册请求后, 解密EKsp ( hid‖hpw) , 得到hid、hpw。生成随机数Ri, 计算k = h ( hid⊕x⊕Ri) , C1= h ( hid⊕x⊕Ri) ⊕h ( hpw⊕hid) ⊕hpw⊕hid, C2= h ( hid⊕x⊕Ri) ⊕h ( hpw⊕hid) , 将{ C1, C2, h ( ) , k, Ksp} 写入智能卡, 销毁hpw, 同时将EKsp ( hid‖Ri) 写入后台数据库。

Step3 S把智能卡通过安全通道交给Ui。

Step4 Ui将r写入智能卡。

( 2) 登录阶段

Step1用户将Ui插入智能卡, 输入IDi和PWi。

Step2智能卡计算hpw*= h ( r⊕PWi) 、hid*= h ( r⊕IDi) , C2*= C1⊕hpw*⊕hid*, 验证C2*和C2是否相等, 若不等, 则拒绝登录。

( 3) 认证阶段

Step1 Ui→S: { EKsp ( hid*) } 。

Step2服务器S解密EKsp ( hid*) 得到hid*, 解密后台数据库存储的EKsp ( hid‖Ri) , 得到hid, 比较hid和hid*是否相等。若不相等, 则拒绝, 否则生成随机数RS1, 取出与hid对应的Ri, 计算k*= h ( hid⊕x⊕Ri) , m1= k*⊕RS1。并把m1发送给U。

Step3智能卡生成随机数Ru、R0, 计算: m2= h ( h ( m1⊕k) ⊕Ru) 、m3= k⊕Ru。发送EKsp ( m2‖m3‖R0) 至S。

Step4 S解密EKsp ( m2‖m3‖R0) 得到m2、m3、R0, 计算R*u= k*⊕m3和m2*= h ( h ( RS1) ⊕R*u) , 比较m2*与收到的m2是否相等。若不等, 则结束会话, 否则, 接受Ui为合法用户并保存i = 1, 同时生成随机数RS2, 计算m4= h ( h ( R*u) ⊕RS2) 和m5= k*⊕RS2。发送{ m4, m5} 至U。

Step5智能卡得到m4、m5后, 计算R*S2= m5⊕k和m4*= h ( h ( Ru) ⊕R*S2) , 然后比较计算的m4*与接收到的m4是否相等, 若不相等, 则拒绝会话, 完成对S的身份认证, 保存j = 1。

Step6智能卡与服务器完成首次认证后, 定时 ( 间隔t时间) 发送认证信息。每发送一次认证信息i的值加1。

Step7服务器把第i次收到的定时认证信息SM3 ( R0⊕i) 与自己计算的SM3 ( R0⊕j) 进行比较, 如果相等, 则通过认证, 服务器将保存的j值加1, 如果没有及时并正确地收到用户端发送的定时认证信息, 就终止此连接, 用户如果要继续进行访问, 必须进行再次认证连接。

( 4) 口令更新阶段

Step1用户将智能卡插入读卡器, 提交身份IDi和口令PW*, 请求更改口令。

Step2智能卡取出r, 计算hpw*= h ( PW*⊕r) 、hid*= h ( r⊕IDi) 、C2*= C1⊕hpw*⊕hid*, 比较C2*= C2是否相等, 如果不相等, 拒绝口令更改请求, 否则提示用户选择新登录口令PW*。

Step3智能卡提交新登录口令PWnew, 计算hpw*=h (PW*⊕r) 、C*1=k⊕h (hpw*⊕hid*) ⊕hpw*⊕hid*、C*2=k⊕h (hpw*⊕hid*) , 将C*1、C*2写入智能卡代替C1、C2完成口令更改。

3. 2 邓等方案的改进

方案包含四个阶段, 认证阶段过程见图2所示。

( 1) 初始化阶段

初始化阶段由服务器执行, 包括如下4个步骤:

Step1选择群G1和G2, 其中: G1是椭圆曲线群中以P为生成元的加法循环群, 阶为素数q: G2是与G1同阶的乘法循环群。同时定义双线性映射e: G1×G1→G2和散列函数H: ( 0, 1) *→G1。

Step2选择一正整数x, 1 < x < q, 作为秘密密钥, 并计算公钥Pubs= x P。并公开系统参数{ G1, G2, e, q, H, P, Pubs} , 将私有密钥x保密。

( 2) 注册阶段

Step1用户根据公开系统参数{ G1, G2, e, q, H, P, Pubs} , 选择一正整数, 1 < y < q, 作为秘密密钥, 并计算公钥Pubu =y P。同时选择身份标识IDi和口令PWi, 同时生成随机数b。发送{ IDi, h ( b⊕PWi) , Pubu} 至S。

Step2服务器S计算注册身份, Reg = h ( x×h ( IDi) ) 、Re-g IDi= x×h ( IDi) + h ( b⊕PWi) ×Pubs, 将{ IDi, Pubs, Reg IDi, P, h ( ) , Reg} 写入智能卡。并通过安全通道把智能卡交送至Ui。

Step3 Ui将b写入智能卡。

( 3) 认证阶段

Step1用户Ui插入智能卡, 智能卡选择序列号Rn, 计算EKy ( EKPubu ( Rn) ) , 并发送EKy ( EKPubu ( Rn) ) 至S。

Step2服务器S用私钥x和用户公 钥Pubu计算SKx ( SKPubu ( EKy ( EKPubu ( Rn) ) ) ) 得到Rn*, 并发送至U。

Step3智能卡比较收到的Rn*与此前产生的Rn是否相等。如果相等, 则智能卡提示用户输入口令PWi, 否则结束会话。

Step4智能卡选择随机数r、n, 计算A = h ( b⊕PWi) ×Pubs, B = Reg IDi- A, Ci= r×P, Di= Tu×B + r×Pubs和Mi=EKPubs ( IDi‖Ci‖Di‖Tu‖n) 。其中Tu是用户当前时间戳。并发送Mi至S。

Step5服务器S在时间Ts收到Mi后, 用私钥x解密Mi得到{ ID*i, C*i, D*i, T*u, n} 。检查Tu*的有效性, 如果Ts—Tu>△T, 则拒绝。否则, 接着验证e ( Di, P) = e ( H ( IDi) , Pubs) Tu×e ( Pubs, Ci) 是否成立。若成立则接受, 否则拒绝Ui的登录。

Step6智能卡完成初次认证后, 计算D*i*= n×B + r×Pubs, 计算Q = e ( D*i*, P) , 把Q作为中间认证信息发送给服务器, 每发送一次认证信息n的值加1。

Step7服务器收到认证信息Q, 计算Q*= e ( H ( IDi) , Pubs) n×e ( Pubs, Ci) , 将Q与Q*进行比较, 如果相等, 则通过认证, 服务器把n的值加1。如果服务器没有及时并正确地接收到用户端的定时认证信息, 就终止次 = 此连接, 用户要再一次访问, 必须进行新一次认证连接。

( 4) 口令更新阶段

Step1用户Ui插入智能卡, 输入原口令PWi。智能卡计算Temp = Reg IDi- h ( b⊕PWi) ×Pubs、Reg*= h ( Temp) , 并验证Reg*与存储的Reg是否相等, 若不等则拒绝更新请求。

Step2智能卡提示用户输入新的口令PW*i, 计算新的注册身份Reg ID*i= Temp + h ( b⊕PW*i) ×Pubs, 并用RegI D*i替换智能卡中的Reg IDi。

4 安全性与效率分析

改进后的方案保留了原方案的所有安全性, 且具有以下安全性。

4. 1 改进的潘方案安全性分析

1) 抗离线口令猜测攻击

方案中采取公钥加密技术对在网络上传输的关键信息进行了加密, 同时引入随机数和哈希函数保护用户身份标识和用户口令, 用户身份标识ID不在网络上明文传输, 而且传输的关键信息m2、m3经过了加密处理, m4、m5虽然未加密, 但都经过随机数和哈希函数的处理, 且与m2、m3有着间接联系, 如果要完成一次离线口令猜测攻击, 则需要知道ID和m1、m2、m3的明文, 所以攻击者即使截获得到m1、m4、m5, 也无法实施有效的离线口令猜测攻击。

2) 登录阶段的正确性

用户在登录时通过输入IDi和PWi进行验证, 由于C2= C1⊕hpw⊕hid, 智能卡计算hpw*= h ( r⊕PWi) 、hid*= h ( r⊕IDi) 、C2*= C1⊕hpw*⊕hid*, 同时验证C2和C2*是否相等, 可知, 如果输入的PWi和IDi是正确的, 则C2与C2*相等, 说明用户合法, 如果输入的PWi和IDi是错误的, C2与C2*不会相等, 用户非法, 则拒绝登录。实现了能够正确登录的功能。

3) 口令更改阶段的有效性

当需要更改口令时, 输入ID和口令PW*, 智能卡计算hpw*= h ( PW*⊕r) 、hid*= h ( r⊕IDi) 、C2*= C1⊕hpw*⊕hid*, 比较C2*= C2是否相等, 因为C1= h ( h ( hid⊕x⊕Ri) ) ⊕h ( hpw⊕hid) ⊕hpw⊕hid, C2= h ( hid⊕x⊕Ri) ⊕h ( hpw⊕hid) , 当输入的口令不正确时, hpw和hpw*不会相等, hid和hid*也不相等, 则C2*和C2不会相等, 口令更新失败, 当输入正确的口令时, 同时用户身份合法时, hpw和hpw*相等, hid和hid*也相等, 则C2*和C2相等, 说明用户合法, 可以进行口令更改, 实现了有效更改口令的功能。

4) 抗劫取连接攻击

改进后方案通过比较根据事先约定的随机数R0和i、j生成摘要值SM3 ( R0⊕i) 和SM3 ( R0⊕j) 来抵御此类攻击。由于i、j的值每次的变化和Hash函数的无碰撞性。每次发送的中间认证信息都是唯一的, 故攻击者也不能伪造中间认证信息来实施重放攻击。同时即使攻击者窃取了连接, 也只能在一个时间t内访问服务器。

5) 抗冒充攻击和重放攻击

方案通过多次交互信息来实现双向认证。由于用户的ID受到加密保护, 而且认证过程中服务器端和客户端都引入随机数参与运算, 攻击者无法构造出认证信息hid, m1, m2等, 实现了双向认证, 可有效抵御假冒攻击。同时每次认证发送的认证信息中的关键信息经过了随机数的参与运算。每次传输的认证信息各异且无任何关键性信息泄露。攻击者截获的认证信息针对下次是无效的, 故可抵御重放攻击。

6) 抗中间人攻击

网络上传输的关键信息经过了加密运算或者随机数和哈希函数处理, 攻击者无法获得足够的关键信息的明文。同时传输的信息中有客户端和服务器端生成的随机数, 攻击者根据截获的信息无法构造出认证信息同时欺骗服务器端和客户端, 因此实施中间人攻击也是行不通的。

表1总结了改进方案的新的特性, 弥补了原方案的不足, 提高了原方案的安全性。

A1:抗离线口令猜测攻击A2:登录阶段正确A3:口令更改阶段有效A4:抗劫取连接攻击A5:抗冒充和重放攻击A6:抗中间人攻击Y:是N:否

4. 2 改进的邓方案安全性分析

1) 抗Do S攻击

方案中在传输序列号时, 采用双重加密, 首先用服务器的公钥加密, 然后再用用户的私钥加密, 攻击者无法得到服务器端的私有密钥, 这保证了攻击者即使截获到该信息, 也不能解密传输信息, 进而得到序列号的值, 同时攻击者无法得到用户的私钥, 不能伪造出EKy ( EKPubs ( N) ) 形式的传输信息。所以冒充合法用户传送信息建立连接是行不通的。当服务器端不能对EKy ( EKPubs ( N) ) 第一次解密时, 就可判断该认证信息为非法信息, 立即丢弃, 节约了时间, 因此能够有效地抵御Do S攻击。

2) 抗DDo S攻击

实施DDos攻击建立在将多个计算机联合起来作为平台的基础之上, 由1) 知, 攻击者不能实行一次有效的Do S攻击 , 而Do S攻击是DDo S攻击的基础[15]。因此, 实施DDo S攻击也是行不通的。

3) 抗内部人员攻击和离线口令猜测攻击

方案中在初始化阶段传给服务器端的口令加入了随机数r, 而用户得到智能卡后, 才将r写入智能卡。这样服务器内部人员就只能得到h ( b⊕PWi) , 无法得到用户的明文口令PWi, 由于随机数b对内部人员来说是未知的, 可以有效地防止内部人员离线猜测口令PWi, 从而有效地抵御此类攻击。

4) 口令更新阶段更新口令有效

口令更新时, 智能卡计算Reg*= h ( RegI Di- h ( b⊕PWi) ×Pubs) , 而Reg IDi= x×h ( IDi) +h ( b⊕PWi) ×Pubs, Reg = h ( x×h ( IDi) ) , 如果用户输入的不是正确的PWi, 表达式Reg IDi- h ( b⊕PWi) 的结果不会等于x×h ( IDi) , 进而, Reg*和Reg也不会相等, 更新口令失败。如果输入的是正确的PWi, 则Reg*与Reg相等, 可以成功更新口令。

5) 抗冒充攻击和重放攻击

方案首先通过客户端发送加密序列号进行连接, 每次连接的序列号是不同的, 由于攻击者无法获得服务器端的私有密钥, 故可以有效防止假冒服务器攻击, 同时序列号先经过服务器公钥的加密, 再次用客户私钥加密, 由于攻击者无法获得用户私钥, 故不肯能进行第二次有效加密。从而冒充客户端发起连接也是不可行的。在Step4中, 客户端引进了时间戳T, 这保证了每次发送中间信息的唯一性, 同时服务器可以通过Ts—Tu> △T来判断登录请求的合法性, 有效地阻止重放攻击。

6) 抗中间人攻击

方案采取每次发送经过加密处理的序列号来初次认证, 序列号经过两次加密, 由于攻击者没有服务器端的私钥, 无法解密得到客户端发送的序列号, 进而无法通过客户端的认证, 同时在后续的传输关键信息中也引入了随机数和加密的运算。攻击者无法得到关键的信息, 因此攻击者不可能实施中间人攻击。

7) 抗劫取连接攻击

改进后的方案通过客户端和服务器端保存的约定随机数来验证合法用户的连接是否被劫取。由于每次发送中间认证信息时m的值都递增1, 所以攻击者无法伪造中间认证信息。客户端计算Q = e ( Di**, P) , 服务器端计算Q*= e ( H ( IDi) , Pubs) n×e ( Pubs, Ci) , 然后比较它们是否相等, 显然是相等的。证明如下:

表2是原方案和改进方案在安全性方面的一个对比, 从表中可以看出, 改进的方案优于原方案。

A1:抗Do S攻击A2:抗DDo S攻击A3:抗内部人员攻击A4:口令更新阶段更改口令有效A5:抗冒充攻击和重放攻击A6:抗中间人攻击A7:抗劫取连接攻击Y:是N:否

4. 3 效率分析

改进的方案与原方案相比, 对关键信息进行了加密操作, 增加了开销, 在可以抵御劫取连接方案的前提下, 表3对文献[13, 14]方案与改进方案进行了一个比较, 这些方案都通过多次发送中间认证信息来抵御此类攻击, 这是增加开销的最主要原因, 表3中主要对各方案中服务器端一次发送的中间认证信息在计算量方面进行分析。从表中可以看出, 文中改进方案给出的方法和传统方案抵抗此攻击方法效率相当, 改进方案发送中间认证信息会增加一定程度上服务器的开销。但比原方案有更高的安全性。

D表示解密运算, P表示XOR运算, H表示哈希运算, B表示双线性对运算

5结语

随着电子商务的普及, 越来越多的电子交易在互联网上进行, 因此, 保障网络认证协议的安全显得尤其重要, 本文针对存在设计缺陷和安全性漏洞的两个口令认证协议分别进行了改进, 采用加密技术和引进随机数对方案中关键数据进行保护。同时, 在针对劫取连接攻击方面给出两种新的有效方法。分析表明: 对原协议改进后, 它们可以更好地适合安全需求较高的应用场合。

摘要:对两个基于智能卡的口令认证方案的安全性进行分析。发现除了薛锋等人针对这两个方案指出的安全性缺陷外, 其中一认证方案在口令更改阶段也存在设计缺陷。同时, 两个方案都不能抵御劫取连接攻击。在以上基础上, 分别对两个方案进行了改进, 改进后的方案分别采取散列函数和双线性对计算来抵御劫取连接攻击, 同时克服了协议中存在的安全性问题。通过理论分析证明可以有效地抵御Do S攻击、DDo S攻击、内部攻击和离线猜测攻击。提高了原方案的安全性。

一次性口令认证 篇6

目前,网络系统的用户认证方法主要有基于地址的、密码学的及口令的三种。

基于地址的认证是假设可以根据收到的数据包的源地址判断数据源的身份。这种认证不用担心被窃听,但却面临网络地址欺骗的威胁。

基于密码学的认证是指用户对系统提供一个数据做一些密码学运算,系统证明自己的身份。用户所实施的密码学运算是基于用户的秘密而进行的。

口令,可以分为静态口令和动态口令。当使用静态口令的认证时,是指用户用一个秘密数值(口令)来证明自己知道口令。动态口令是在登录过程中加入不确定变化因素动态口令,以一次性动态口令登录,每次登录的认证信息都不相同。由于每个正确的动态口令只能使用一次,即使非法用户截获了己经通过验证的正确口令,再次提交到认证服务器也不能通过验证。

2 基于动态口令认证的VPN网络安全性分析

表1定性分析了动态口令的安全性,但具体的动态口令系统的安全性还取决于其认证方案。

从表1可以看出,动态口令认证技术能有效的抵御大部分针对于静态口令认证的网络攻击,其安全性有了明显的提高。但是,在遭受伪造主机、口令猜测、拒绝服务等攻击时,有许多的动态口令认证系统还是存在着安全漏洞。

3 基于动态口令认证的VPN网络方案设计

3.1 设计要求

本设计方案的安全服务应当包括如下功能:

(1)双向认证。包括VPN客户端和VPN服务器间的双向认证。

(2)信息的安全性。信息的安全性包括认证信息的安全性和传输信息的安全性。

(3)唯一性。唯一的序列码、密钥及用户。

(4)可靠性。无效的用户无法通过验证。

(5)信息完整性。信息的接收者能判断信息在传输过程中是否被延迟、篡改或替换。

(6)信息的机密性。所有VPN客户的重要认证信息都以密文的形式保存在存储设备中或在信道中传输。

(7)抵抗截取/重放攻击等。攻击者不能用侦听的数据来冒充合法VPN客户再次登录,如果以后系统提供相同的口令进行认证,VPN服务器将拒绝进行认证,从而有效地防止了口令的重放攻击。

3.2 设计方案

本文实现的VPN系统的整体结构如图1所示。其中:

(1)动态口令认证密钥交换。负责在外网客户端和V-PN服务器间交换会话主密钥和其他安全参数。

(2)服务器端网络层。负责对网络层数据包根据一定规则进行封包,解封包,加密,解密等处理。

(3)安全策略数据库(SPD)和安全关联数据库(SA-D)。存储对应于不同外网客户端的不同安全策略/关联。

对一个IPSec实施点,进入/外出包都需参考安全策略数据库,从中查找相应的安全策略,对数据包进行相应处理。

(4)设定SA,SP(用户层和内核态通信):用于将IKE交换得到的主密钥和其他安全参数等信息传入内核,用于网络处理。

3.3动态口令认证交换流程(如图2)

在动态口令认证交换中,目的是:

(1)利用动态口令认证使用者的身份。

(2)利用动态口令产生Diffie-Hellman密钥交换的验证随机串。

①客户端和VPN服务器共享秘密信息串S1,S2。

②用户在VPN的客户端输入用户ID,若是新用户注册,认证服务器AS接收到用户的请求后,查询认证数据库此ID是否存在,若已经存在,则提示用户重新选择新ID。

③认证服务器AS产生一个随机数r,作为“提问”,发给用户;其中客户端与服务器的随机数r的生成过程如下:

在用户注册时,客户端与服务器端先协商一个随机数,称为种子随机数,假设为r0,以后每次登录时客户端与服务器的随机数生成的方法都是当前的随机数和全球同步时间(UCT)一起计算得到下一个当前随机数,如r1=f(UCT,r0),r2=f(UCT,r1),...,这样客户端与服务器之间可以通过全球同步时间(UCT)和目前拥有的随机数,计算出下一个随机数。

④用户将ID与随机数合并,使用HASH函数生成一个字节串作为动态口令P0。

⑤客户端计算ClientAuth=Hash(S1+P0)。

⑥客户端将ID和ClientAuth发送到VPN服务器端进行验证。

⑦VPN服务器获取用户ID后,认证服务器使用用户ID和随机数r用HASH函数计算出所对应的P0(注意:此P0不是通过网络传输,而是服务器自行计算出来的)。

⑧VPN服务器计算ServerAuth=Hash(S1+P0)。

⑨VPN服务器对ServerAuth与ClientAuth是否相等进行判断:若ServerAuth≠ClientAuth,则返回认证失败,中止协议交互;若ServerAuth=ClientAuth,则进一步在认证数据库中查看P0是否已存在,若存在,表示P0己经使用过,则认证不通过(保证动态口令的一次性),返回认证失败,中止协议交互;若不存在,则VPN服务器认证通过,返回认证成功。

⑩客户端计算验证随机串ProKey:

ProKey=Hash(S2+P0)(1)

其中,(1)式中P0是用户通过客户端生成的。

VPN服务器同时计算验证随机串ProKey:(10)11

ProKey=Hash(S2+P0)(2)

其中,(2)式中P0是VPN服务器通过ID和随机数r计算来的。

至此,动态口令认证交换完成,既实现了动态口令的身份认证,又产生了验证随机串ProKey,由于动态口令是不断变化的,用户每次使用VPN系统,这个ProKey都是不一样的,因此具有随机性,防止中间人攻击。

4 结束语

本文分析了动态口令用于VPN网络的安全性,将动态口令身份认证用于VPN网络,设计了网络的总体结构图。动态口令身份认证技术能够实现在没有公钥基础设施支持的情况下,保证VPN的认证安全和传输安全。

参考文献

[1]王小妮,杨根兴.基于挑战/应答方式的身份认证系统的研究[J].北京:机械工业学院学报,2003,18(4):14-18.

[2]李晓瑾,童恒庆.一次性口令认证技术的改进[J].太原:电脑开发与应用,2004,17(9):28-29.

一次性口令认证 篇7

1 动态口令下Wi Fi身份认证的简要概述

1.1 具体内涵

所谓的动态口令经常被人们称作一次性口令, 即一种能够进行随机变化的口令形式, 用户在每一次登录Wi Fi的过程当中使用的口令均不相同[1]。不仅如此, 在某一固定的时间间隔当中该口令只能被使用一次, 如果强行多次使用同一口令进行登录, 则Wi Fi网络系统将会拒绝接受用户的登录请求。具体来说, 在动态口令当中蕴含着一定的不确定因素, 比方说时间、随机数等等, 正是通过这些不断变化的因素使得用户的登录变得更加安全可靠。

1.2 优势特点

从动态口令的具体内涵当中我们可以看出动态口令下Wi Fi身份认证技术具有明显的随机性、动态性以及一次性。即每次用于认证的身份信息在交换的过程当中都会产生截然不同的随机数, 而此种不可预测性也使得Wi Fi网络变得更加安全。另外, 每一次的口令不仅各不相同而且只能在某一段时间内使用一次, 既没有任何规律可言也不会进行二次使用, 这对于提升Wi Fi网络系统的可靠性也有着较好的促进和保障作用。

2 几种常见的动态口令下Wi Fi身份认证方案介绍

2.1 时间动态口令

当前在动态口令下Wi Fi身份认证方案当中经常使用的一种技术便是, 立足于时间同步的动态口令身份认证技术。具体来说就是在服务器时间保持与用户持有令牌时间相同步的前提条件下, 将动态口令当中的不确定因素设定为时间, 而认证双方均需要使用同样的且具有一定复杂性的数学运算, 产生出可用于用户登录的统一的动态口令。而只有合法的用户才能够持有此令牌, 一般以六十秒为基准完成一次令牌刷新, 也就是说每六十秒便会出现一个全新的动态口令。由此我们可以看出基于时间同步的动态口令Wi Fi身份认证方案操作比较简单快捷, 用户只需完成单向的认证信息传输即可, 但其比较容易被劫持以及重放, 而且服务器与客户端时间保持完全同步的难度也比较大。

2.2 事件动态口令

立足于事件的动态口令Wi Fi身份认证方案即事件同步机制, 主要是通过将动态口令当中的不确定因素设定为不断变化的计数器数值, 利用计数器的值随机发生变化的原理不断生成全新的动态口令。此种Wi Fi身份认证方案无需保证工作流程与系统时钟的同步, 而且由于在事件动态口令Wi F身份认证方案当中双方之间的通信比较少, 因此操作也相对简单快捷[2]。但与此同时, 事件丧失同步的几率比较大, 往往需要通过硬件令牌完成对种子值的保存, 而这也在无形之中大大增加了该Wi Fi身份认证方案的实施成本。

2.3 挑战以及应答

以挑战/应答机制为基础的动态口令Wi Fi身份认证方案也可以被称作是异步交互的动态口令, 具体而言指的就是Wi Fi网络系统随机为用户提供一个挑战数。用户将使用某一种特定的算法为自己的身份认证信息以及获得的该随机数生成一个新的动态口令。考虑到在此种Wi Fi身份认证方案当中并不需要用户完成任何形式的同步, 因此, 能够有效规避上述两种Wi Fi身份认证方案当中容易失去同步的问题。但以挑战/应答机制为基础的动态口令Wi Fi身份认证方案需要用户在使用的过程中多输入一个挑战值, 并且往往需要反复多次认证, 因此对于用户而言其操作和通信步骤比较繁琐、复杂。

2.4 口令序列口令

以口令序列方式为基础的动态口令Wi Fi身份认证方案, 是以挑战/应答机制为基础的动态口令身份认证中至关重要的一部分。所谓的口令序列指的就是前后相关的一系列口令, 服务器只对用户第N次登录Wi Fi网络系统时使用的口令进行记录, 在该方案当中, 服务器能够在用户第N-1次登录Wi Fi网络系统时, 通过使用单向散列算法准确计算出用户第N次登录Wi Fi网络系统时使用的口令, 并通过与保存的正确动态口令相匹配之后认证用户的身份。但此种身份认证方案也存在一定的缺陷, 即攻击者可以利用算法能够计算出前后口令之间的相关性, 冒充他人身份使用小数攻击Wi F网络系统的认证过程[3]。

3 基于FIT AP的动态口令下的Wi Fi身份认证方案

3.1 注册模块

在注册模块当中主要包括Wi Fi网络共享注册用户以及付费享受注册用户。其中后者的注册用户主要为实现部分, 也就是当付费用户在注册时提交账号与用户名后, 利用服务器对其进行保护, 最后将手机号码与账号绑定在一起, 每月定期从中扣除费用。而Wi Fi网络共享注册用户则需要将自己的无线网络地址进行提交, 之后经由服务器进行判定并提交该注册用户的其他信息后, 统一由服务器完成保存。

3.2 认证模块

在C/S架构模式下处理数据的安全与可靠性被看作至关重要的部分, 因此, 在设计认证模块时, 为了能够进一步提升其安全性与可靠性, 设计了三个子模块分别为加密模块、身份认证模块以及解密模块[4]。其中身份认证模块用于负责用户登录Wi Fi网络系统, 而加密和解密模块则复杂完成客户端与服务器端之间的交互, 即客户端通过公钥将其随机生成的一组数加密并传输至服务器端, 当服务器端在接收到数据之后使用私钥完成解密, 同时查找出该用户的数据并使用相同的加密方式再将其反馈至客户端处, 从而完成服务器身份的成功验证并连接上Wi Fi网络。

3.3 定位检测

在定位检测模块当中主要负责完成对不同无线AP信息进行定位搜索与检测, 从而为广大用户在使用家庭无线AP当中提供便利。通过对是否处于网络平台的AP进行判定完成检测无线AP的任务。一般情况下主要利用无线适配器完成对无线AP的搜索, 并主要对其中的Createfile函数进行运用。在利用该函数后能够获取m-p BSSIDList, 通过从中提取出SSID以及RSSI用于完成身份验证。

4 结语

总而言之, 无线网络就像是一把双刃剑, 虽然其能够为人们使用网络以及日常生活带来巨大便利, 但与此同时其自身固有的破坏性、不安全性等也应受到人们应有的重视。而动态口令技术的诞生则能够有效提升无线网络的安全性与可靠性, 通过对客户端以及服务器端进行双重身份认证, 进而为广大网络用户提供更加安全可靠的无线Wi Fi认证系统, 使其能够真正合理使用更多的网络资源。

参考文献

[1]黄乙洲, 宁方楹, 农波, 等.云环境下基于动态口令与生物特征的身份认证方案[J].保密科学技术, 2015 (5) :19-23.

[2]陈立志, 李凤华, 戴英侠.基于动态口令下的WIFI身份认证机制及其安全性分析[J].计算机工程, 2015 (10) :48-49.

[3]张宏, 陈志刚.一种新型一次性口令身份认证方案的设计与分析[J].计算机工程, 2014 (17) :112-113.

上一篇:山楂中黄酮提取下一篇:茜芷胶囊/分析