- 1 -
中国科技论文在线
一种动态口令身份认证协议的研究与改进
赵铭伟,于晓晨,江荣安*
作者简介:赵铭伟(1972-),女,高级工程师,信息安全
(大连理工大学电子信息与电气工程学部,大连 116023)
5 摘要:基于口令的身份认证技术是网络安全中最重要的分支之一。本文针对静态口令身份认
证的安全隐患,在深入分析了传统的 CHAP 动态口令身份认证方案的基础上,结合安全的
散列函数和异或运算,同时引入了保护认证信息的干扰因子,设计并实现了一种改进的
CHAP 一次性口令双向认证协议。与其它几种典型的 CHAP 改进方案相比,本方案通信量
小,灵活性高,安全性强,成本低,适合中小型电子商务网站的身份认证。 10
关键词:网络安全;CHAP;动态口令;散列函数;干扰因子;双向认证
中图分类号:TP393
Research and improvement of a dynamic password
authentication protocol 15
ZHAO Mingwei, YU Xiaochen, JIANG Rongan
(Electronic information and Electrical Engineering Department,Dalian University of Technology,
Dalian 116023)
Abstract: Identity authentication based on password is one of the most important branches in the
network light of the security vulnerability of static password authentication and based 20
on thorough analysis of traditional CHAP dynamic password authentication scheme,This paper
illustrates an improved CHAP dy-namic password mutual authentication protocol,which combines
secure hash function and exclusive operation,at the same time introduces interference factor
with other typical improved CHAP scheme, the scheme is suitable for small
and medium-sized e-commerce websites because of its small communication, high flexibility, high 25
safety and low cost.
Key words: Network security; CHAP; Dynamic Password; Hash Function; Interference Factor;
Mutual Authentication
0 引言 30
随着电子商务与电子政务的迅速普及,身份认证技术也飞速的发展。其中,动态口令技
术受到了热烈追捧。而目前大部分银行和大型电子商务网站都通过硬加密与软加密双因素相
结合的动态口令身份认证方式,其安全性固然坚不可摧。但对于还处于起步期和成长期的中
小型商务网站来说,成本较高,资金流也并不宽裕,用令牌或智能卡等硬加密设施来保障用
户身份认证的安全显然是不明智的。而开发一种简单易行的动态口令认证方法势在必行,这35
才能够为中小型商务网站提供更多的可选择的认证方式,解决他们的燃眉之急。而在众多动
态口令认证方案中,CHAP 协议安全而又高效,简单而又实用,无疑是一个好的选择。
1 CHAP 方案
CHAP 协议简介
CHAP(Challenge-Handshake Authentication Protocol)协议[1]是基于挑战/应答机制的一次40
性动态口令协议。其主要功能是对点对点(PPP)连接进行用户的身份认证。在网络设备的身
份识别中也广泛应用 CHAP 协议,例如 Cisco 的路由器就努力说服用户在 Cisco IOS 上安装
- 2 -
中国科技论文在线
CHAP 协议[2]。
CHAP 协议的认证过程
在协议的注册阶段,用户 U 通过安全信道将自己的身份标识 ID 与口令 s 发送给服务器45
S,服务器保存该用户口令,整个认证过程的步骤简单概括如下所示[3]:
(1)S→U:CH
连接请求建立完成之后,服务器向客户端 U 发送一个随机数 CH,作为挑战信息,并保
存该随机挑战数 CH。
(2)U→S:ID,H(s||CH) 50
客户端用户 U 接到 CH 后,计算 H(s||CH),然后将(ID,H(s||CH))作为响应消息回传给服
务器 S。
(3)S→U:ACK
服务器 S 收到 U 发来的响应消息后,根据已经存储的用户 ID 和口令 s 计算 H(s||CH),
并与接收到的消息摘要比较。如果两者相等,则服务器通过对客户端的验证,并给用户发送55
认证成功的回执。否则,拒绝用户的服务请求。
CHAP 协议分析
CHAP 协议作为典型的挑战/应答模式的动态口令认证机制,通过三次握手来对用户进
行周期性的验证登录和访问请求,其设计简单明了,通过随机数的唯一性和多变性,保证了
动态口令一次一密的要求,可以有效抵抗多种攻击。虽然只是一个单向协议,但可以通过对60
另一方的配置,实现通信的双向认证。当然,CHAP 协议也存在着不足。首先是在服务器端,
用户口令以明文存放,如果攻击者入侵了服务器,将直接获得用户口令。其次是登录口令中
的随机挑战数 CH 在网络中是明文传输的,没有任何的保护,很容易被黑客截取。虽然没有
直接的漏洞,但还是增加了安全隐患,用户在注册中往往使用最熟悉的数字组合,再加上
CH 是明文,黑客会根据 H(s||CH)的值进行离线密码猜测攻击,可能猜到 s 的值。最后,该65
方案没有交代临时会话密钥的建立过程。不得不提的是,一些网站,例如
仍然坚持宣称自己用 Cain 和 Abel 能够破解 CHAP 协议保护的密码。
近年来对 CHAP 协议方案的改进与研究
近年来,针对 CHAP 协议方案的不足,许多网络与信息安全的前沿学者提出了改进的
方案,如文献[4](2003)提出的用户私钥加密的 CHAP 协议的改进协议 ICHAP,文献[5](2005)70
基于服务器公钥加密的 CHAP 改进协议,文献[6](2008)提出的基于异或运算的 CHAPNEW
协议。文献[4-5]提出的改进协议都将动态口令与公钥加密算法相结合,因此认证双方可能还
需要可信的第三方作为认证中心,实现成本较高,且密钥的保存和传输是一个问题。而第三
种方案虽然实现了双向认证,且运算量较小,但服务器给用户的挑战随机数仍没有被保护,
且通信次数较多,达到了 4 次。2010 年,文献[7]也针对 CHAP 方案进行了研究与改进。该75
方案虽然很好的保护了随机数与哈希值,安全性也较高,但整个方案却需要三个随机数,也
引入了公钥加密系统,却仍旧没有从根本上改进之前方案的冗余。动态因子的变化也能够加
强动态口令的安全性,如文献[8](2011)所述,将 URL 也作为动态因子与随机数一同加入密
码中。但该方法仍然没有保护随机数,且将 Hash 值直接暴露在网络上,面临被破解的风险。
2012 年,文献[9]提出了一种引入干扰因子概念的动态身份认证协议。将用户的 ID 和口令作80
为干扰因子而不是动态因子,来隐藏随机数,这又为动态口令认证思路的创新提出了一种新
- 3 -
中国科技论文在线
思想。
鉴于以上各方案的优点和缺点,本文提出了一种改进的 CHAP 动态口令认证机制,不
但实现了不安全网络环境下的客户端和服务器的双向认证,而且很好的隐藏了挑战随机数,
而且交代了临时会话密钥的生成,最重要的是,它只需要 3 次通信。 85
2 一种改进的 CHAP 方案
本方案由两个实体组成:客户端和认证服务器端。服务器端保存用户 ID 和用户 ID 与
用户密码 pw 连接后的哈希散列值。认证过程中具体的符号定义如表 1 所示。
表 1 认证过程中的符号定义
Tab. 1 Notation and Definition 90
符号 符号意义
C 客户端主体标识
ID 用户 U 的身份标识
pw 用户 U 的静态口令
S 远程认证服务器
H(…) 单向散列函数
⊕ 按位异或运算
Rc 客户端产生的随机数
Rs 服务器端产生的随机数
|| 位连接运算
Result 认证结果
本方案共分为三个阶段:用户注册阶段,登录认证阶段和密码修改阶段。注册过程只在
用户首次登录服务器时执行一次。登录认证阶段在用户每次登录身份认证系统时都要执行。
用户注册阶段
用户 U 任意选择身份标识 ID 和登陆口令 pw,并将 pw 与用户 U 自己的身份标识 ID 连
接起来的值进行单向哈希变换得到 h(ID||pw),把 ID 和 h(ID||pw)用服务器公钥加密后交给认95
证服务器。远程认证服务器 S 收到注册请求后,先用服务器私钥解密密文得到注册信息。然
后根据请求 ID 先查询服务器的数据库,如果 ID 已经存在,则提示用户重新选择,以保证
ID 在数据库中是唯一的。否则,添加此用户到数据库中,写入格式:ID,h(ID||pw)。整个
注册过程结束。用户注册阶段的流程图如图 1 所示。
开始
用户提交个人信息,
ID,pw
用服务器公钥加密,并
发送给服务器
注册结束
否
服务器用私钥解密,检查ID是否存在 提示用户重新选择ID
服务器保存ID,h(pw),
在数据库中
是
100
- 4 -
中国科技论文在线
图 1 注册流程图
Fig. 1 Flow diagram of Registration
登录认证阶段
登录认证阶段总共需要进行三次信息交换。客户端和认证服务器端相互认证如图 2 所
示。 105
(1)C→S:{ID,C1,C2,T1},其中,C1=h(h(ID||pw)⊕T1)⊕Rc,C2=h(h(ID||pw)⊕Rc),T1
是当前客户端 C 的时间戳。
用户 U 想要登录系统时,首先输入身份标识 ID 和密码 pw,客户端 C 执行以下步骤:
步骤 1:提取当前客户端时间戳 T1,对用户身份标识 ID 口令 pw 计算连接后的散列值
h(ID||pw),并产生随机挑战数 Rc,计算 C1=h(h(ID||pw)⊕T1)⊕Rc,C2=h(h(ID||pw)⊕Rc)。C1110
的结构是利用服务器端与客户端共有的参数 h(ID||pw),它并不作为通信的动态口令中的不
变量,而是作为一种干扰因子,来隐藏随机数 Rc。为了使服务器能够识别攻击者在截获的
合法信息中加入的干扰信息和冒充信息,还需要在登录信息中添加一个完整性的验证信息,
这就是 C2 的作用。
步骤 2:将登录请求消息{ID,C1,C2,T1}通过网络发送给服务器端 S。 115
(2)S→C:{C3,C4,T2},其中 C3=h(Rc)⊕Rc,C4=h(Rc⊕Rs⊕T2),T2 是当前服务器端 S
的时间戳。
当服务器 S 在 T1
*时刻收到用户 U 的登录请求{ID,C1,C2,T1}时,将按照以下步骤进行验
证:
步骤 1:检查时间间隔的有效性。如果 T1
*
-T1≤△T,那么 S 就接受 U 的登录请求。否120
则就拒绝本次登录请求。
步骤 2:认证服务器搜索数据库,查询认证数据库的用户列表中是否存在 ID。如果不存
在,则拒绝用户登录请求,并返回用户一个提示。若错误出现 3 次以上,则锁定该用户。否
则,继续步骤 3。
步骤 3:如果 ID 存在,则取出 ID 对应的认证因子 h(ID||pw),然后进行如下运算: 125
先利用异或运算的性质得到 Rc’=C1⊕h(h(ID||pw)⊕T1)= h(h(ID||pw)⊕T1)⊕Rc⊕
h(h(ID||pw)⊕T1),C2’= h(h(ID||pw)⊕Rc’),然后比较 C2’与 C2,如果不相等则说明用户 U 是
假冒的,如果相等则说明随机数在发送过程中并未被篡改,Rc’= Rc,继续步骤 4.
步骤 4:提取当前服务器端时间戳T2,并产生随机挑战数Rs,计算C3=h(Rc)⊕Rc,C4=h(Rc
⊕Rs⊕T2),然后将回复消息{C3,C4,T2}发送给客户端 C。 130
(3)C→S:Result
当客户端 C 在 T2
*时刻收到服务器 S 的回复消息{C3,C4,T2},时,将按照以下步骤进行
验证:
步骤 1:检查时间间隔的有效性。如果 T2
*
-T2≤△T,那么 C 就接受 S 的回复消息。否
则就拒绝该回复消息。 135
步骤 2:客户端用过程 1 中产生的随机数 Rc 进行如下计算:Rs’= h(Rc)⊕C3’,
C4’=h(Rc⊕Rs’⊕T2),然后比较 C4’与 C4,如果不相等,则说明服务器 S 是假冒的,否
则就通过对服务器的验证。
步骤 3:回复认证结果。并把 h(Rc||Rs)作为双方临时会话密钥。
用户登录、认证阶段流程图如图 2 所示。整个方案的通信过程如图 3 所示 140
- 5 -
中国科技论文在线
开始
用户输入身份标识ID和密码PW
客户端发送登录请求
{ID,K1(ID||Rc||T1),T1}
服务器检查T1*-T1≤△T
接受请求,查询数据库
ID是否存在
提取当前客户端时间戳T1,并
产生随机挑战数Rc,计算K1
查询密钥,用密钥解密登
录请求得到ID’,Rc’和T1’
比较ID’与ID 是否相等
提取时间戳T2,并产生随机挑战
数Rs,计算K2
客户端检查T2*-T2≤△T
服务器接收数据,提取时间戳T1*
客户端接收数据,提取时间戳T2*
服务器发送认证请求
{K2(Rc’||Rs||T2),T2}
客户端计算K2,用K2解密消息,得到
Rc’’、Rs’和T2’
T2与T2’、Rc’’与Rc是否相等
提取当前客户端时间戳T3,,计算K3
客户端得到认证结果,生成临
时会话密钥K4
结束
放弃登录
拒绝登录请求
返回失败信息
是
否
是
是
否
是
否
是
否
比较T1’与T1是否相等
是
否
否
客户端发送返回消息{K3(Rs’||T3),T3}
服务器接收数据,提取时间戳T3*
服务器检查T3*-T3≤△T
服务器计算K3,用K3解密消息,得
到Rs’’、T3’
T3与T3’、Rs’’与Rs是否相等
计算K4,返回认证结果{K4(Rc||Rs||result)}
返回失败信息
是
是
否
否
客户端
服务器端
图 2 登录认证流程图
Fig. 2 Flow diagram of Login and Authentication
图 3 方案的通信过程 145
Fig. 3 Communication phase of scheme
密码修改阶段
对于密码修改阶段,在本方案中只需将 Rc 替换为新密码与 ID 的安全哈希散列值即可。
其他步骤不变。
3 安全性分析 150
本文在双方认证的第一步,将用户 ID 和对服务器的认证同时进行,这样不但缩减了双
方通信的次数,而且使攻击者进行在线攻击时难以判断到底是 ID 还是密码的错误,这样就
扰乱了攻击者的攻击目标。另外在认证过程中加入了时间戳方案,虽然增加了双方时间同步
的代价,但由于通信次数较少,因此可以通过反复同步解决此问题。而时间戳的引入,使整
个方案又增加了一个动态参数,增加了一次身份验证,而且防止了信息的恶意修改。具体的155
安全性分析如下:
(1)抵御重放攻击。本方案中,黑客如果想要重放每一次的认证消息,那么他可能会
- 6 -
中国科技论文在线
在局域网使用 ARP Spoof 工具,并且要同时运行 Ethereal 和 WireShark 来获得并分析数据。
之后,还要花费一段时间来提取数据,停止检测,寻找口令。这个过程将花费相当长的一段
时间来完成。经过测试,一般情况下,将花费大概 1-5 分钟(60-300 秒)。这个过程如果用手160
动的话10秒内一定不会完成,此时,上一条认证消息早已经过期了。
(2)抵御口令离线攻击。在整个身份认证的过程中,客户端和服务器端传递的都是经
过随机数和时间戳通过复杂的数学和加密运算,并且加密信息消息间不存在任何的运算关
系。且加密消息所应用的散列函数是安全的单向散列函数。以 SHA-1 算法为例,其输出的
消息摘要是 160 位的数据,攻击者只知道结果,想得到输入 M,或者另一输入 N,使得散165
列函数值 H(M)=H(N)。如果使用穷举法,则需要尝试 2160/2 次,这种得不偿失的做法,也会
让攻击者们望而却步。
(3)抵御口令在线攻击。为了抵御口令在线攻击,本方案规定当用户身份标识 ID 错误
3 次及以上,就强制退出登录,并标记该用户。若非法用户侥幸通过了 ID 检测,但在接下
来的认证中出错 3 次及以上,服务器就强制退出登录,并记录该用户的异常行为,以便管理170
员采取相应的措施。
(4)抵御恶意修改。本方案中加入了时间戳机制,恶意修改会马上被服务器或者客户
端发现,因此恶意修改无效。测试中采用 Sniffer 在局域网信道捕获了通信的数据包后,进
行了恶意修改,然后又发送到服务器后,服务器很快就识别并拒绝认证请求。
(5)抵御小数攻击。本方案中前后口令并不存在相关性,攻击者无法通过计算获得任175
何有价值的信息,因此可以抵御小数攻击。
(6)抵御网络窃听。本方案中传输的登录口令均为一次性口令,窃听攻击无效。本方
案中测试采用 Sniffer 对客户端与服务器端的网络通信进行侦听,在没有使用本方案的通信
中,轻而易举的就捕获到了用户身份和密码。而使用本方案后,所有的数据包都是乱码,彼
此没有任何运算关系,使攻击者束手无策。 180
(7)抵御对服务器的攻击。本方案中用户口令在服务器端不是用明文存储,而是口令
和 ID 的散列值。因此,攻击者即使入侵服务器,由于哈希函数的单向性,他也很难获得用
户的口令和 ID。
4 性能的分析与比较
性能的分析 185
在客户端,整个模型的主要花费就是获取客户端时间和客户端的哈希与异或运算的过
程。得到客户端的时间是一个简单的任务,这不是主要的难题。而异或运算也仅仅是简单的
位运算,其时间基本可以忽略。对于哈希过程,如果和有着繁琐计算过程的 RSA 公钥加密
算法相比,这也不是影响系统性能的主要问题。
在服务器端,时间的比较是一个易于实现的功能,而在数据库中检索密码也是一个常规190
任务。因此整个模型的难点可能就是哈希函数运算的认证。假设我们将△T 设置为5秒钟,
即如果客户端时间与服务器端的时间相差超过 5 秒,就可以认为传送的消息已经被攻击者捕
获到了并且可能被用来进行重放攻击。这种情况下,服务器将会拒绝请求,命令浏览器重新
定位到登陆界面。如果时间差在 5 秒以内,服务器将会通过 SQL 命令在数据库中核实用户
的动态口令。从表面上看,当大量用户存在时,在 5 秒内将会有大量的临时哈希运算值。举195
例来说,如果服务器中有 1000000 个用户账户,就会至少有 1000000 个哈希值,甚至更多。
- 7 -
中国科技论文在线
事实上,这只是粗略估计,每个用户可能每天至少要登录两次。如果用户键入正确的密码,
用户使用过的哈希值将在数据库保留 5 秒,所以 1 天中需要 10 秒。因此,一天中用户使用
过的哈希值仍旧在数据库中的概率是 10/(60*60*24)=。这意味着如果有 1000000
个用户在一天中的不同时间点随机登陆我们的系统,数据库中哈希值的平均记录数目大概是200
个左右。因此,在 12 个左右的记录中用 SQl 语句来查询就是一个很简单的任务了。
性能的比较
本方案通过与传统的 CHAP 协议与其他几种改进协议相比,优势如表 2 所示。
表 2 五种方案的性能比较
Performance comparison 205
名称 随机数保护 口令存储方式 认证算法 硬件支持 通信次数
CHAP 协议 否 明文 散列 否 3
ICHAP 协议 否 用户私钥加密 RSA,散列 是 4
CHAP 改进协议 否 服务器公钥加密 RSA,散列 否 4
NEWCHAP 协议 否 口令散列值 异或,散列 否 4
本方案 是 口令与 ID 的散列值 异或,散列 否 3
5 方案测试
本方案适用于各种网站或者移动设备与网络设备等在不安全信道上的身份认证。但是由
于环境与条件有限,本方案的测试是在实验室局域网的两台计算机上进行点对点的通信来模
拟远程通信。采用常见的 C#语言提供的 Socket 类来实现客户端与服务器端的通信过程。
安全性测试 210
本方案在进行点对点通信时,采用常用的网络嗅探器 Sniffer 来监视网络的通信状态、
数据流动情况以及网络上传输的信息。并且模拟了一系列的网络攻击。经过测试,本方案的
确可以抵御重放攻击、恶意修改、网络侦听等常用的攻击。
性能测试
本方案分别在没有应用本方案的用户信息系统和应用本方案的用户信息系统系统上对215
CPU 的负载和系统的响应时间进行了测试。客户端和服务器端的时间同步可以应用 NTP(网
络时间协议),虽然 NTP 也可能会有一个相应的延迟(根据我们的实验可能会是 100-300ms),
但不可能超过 1 秒钟。因此,为了补偿这部分的时间,应该使等待验证的动态口令在数据库
中多停留 1 秒钟。经过测试,在同样的请求数目时,采用本改进方案后的系统并没有出现大
的响应延迟和 CPU 负载率大幅升高的情况,整个系统运行趋于稳定。 220
6 结论
本文给出了一种基于 CHAP 协议的改进协议。并且在局域网上进行了简单的测试,发
现本方案基本满足了我们的要求,且运行稳定。本方案也为动态口令的软件实现提供了新的
思路,而且完全可以在现有的基础上进行开发,无需任何额外的硬件成本。其实身份认证并
不一定需要硬件设施,对于对安全性不是特别严格的场合来说,有时只需一次编程就可以解225
决所有问题。
网络是一把双刃剑,给人们生活带来极大便利的同时,也为人们带来了不可忽视的破坏
- 8 -
中国科技论文在线
性和威胁性,尤其是在双方身份认证的可信度方面。而动态口令技术的研究与发展,很好的
解决了这个网络安全方面的重要难题。因此,动态口令的认证系统具有广泛的应用前景,值
得我们继续去更深入的研究和细致的探索。 230
致谢
感谢我的导师赵铭伟高级工程师在整个论文创作阶段对我的悉心指导,同时也感谢江荣
安副教授在实验过程中不断提出的宝贵意见以及不厌其烦的帮我解决遇到的困难。
[参考文献] (References)235
[1] 戴宗坤. VPN 与网络安全[M]. 北京:电子工业出版社,2002.
[2] Preecha Noiumkar and Thawatchai Chomsiri,Improving Web Security Using Dynamic Session IDs[J].
Convergence Information Technology,2012,2(2):83-91.
[3] 刘家芬,周明天. 对安全协议重放攻击的分类研究[J]. 计算机应用研究,2007,24(3):135-138.
[4] 任传伦,李远征,杨义先. CHAP 协议的分析与改进[J]. 计算机应用, 2003,(6):36-37. 240
[5] 刘阳,朱方金,史清华. 一个 CHAP 认证协议的改进方案[J]. 计算机工程,2005,(6):168-169.
[6] 魏宗秀. 基于一次性口令的身份认证协议及其应用[D]. 安徽:合肥工业大学,2008.
[7] 陈铁明,陈会兵,潘小明. Web 动态口令登录新方法设计与实现[J]. 计算机应用与软件,2011,(7):31-34.
[8] 柳景超.一次性口令认证方案的研究与改进[A].刘欣然.2010 年全国通信安全学术会议论文集[C].北京:国
防工业出版社,2010. 58-60. 245
[9] 邓珂,张玉微. 一种引入干扰因子概念的动态身份认证协议[J]. 福建电脑.2012,(1):14-16.