从口令攻击机制谈用户认证程序的
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
在互联网服务日益普及的今天,人们上网会遇到各种各样的用户登录窗口,要求用户
输入用户名和密码。显然,这些用户登录界面是用来对用户身份进行认证的。所谓认证,就
是用来确保对方的身份,防止假冒者的攻击。认证是重要的安全服务,在计算机通信中,认
证的双方,可以是人、计算机、进程或是其他设备。
认证的一般过程是,通信的一方声明他的身份,而另一方对他的声明进行验证。确认
身份后,进行相应的服务。
认证可以是单向的,也可以是双向的。所谓单向,即通信中只有一方向另一方进行认
证。所谓双向,即通信中双方互相进行认证,在电子商务活动中,更多的需要双向认证。
1
基于口令的身份认证机制由于具有易于实现和操作简单的特点,因此是使用最广泛的
身份认证机制,传统的口令机制采用用户名/口令核对法,即系统为每个用户维护一个(用户
ID,口令)的二元组信息,用户登录系统时,输入自己的用户ID和口令,系统通过对用户输入的(用户ID和口令)与系统内维护的(用户ID和口令)二元组信息进行比较,来判断用户
身份的合法性,如图1所示。
被认证方 认证方
ID 密码
ID 密码 比较
基本的口令机制实现和操作都很简单,但其安全性仅依赖于用户口令的保密性,一旦
用户口令泄密,合法用户就会被冒充。用户口令的泄密存在主、客观两方面的原因。主观原
因有外部泄漏和口令被猜测到,客观原因有窃听攻击,危及验证者的攻击,重放攻击,选择
明文攻击等。
2.
避免主观泄漏口令的方法主要是加强对口令的管理,如不要把口令写在纸上,规定口
令的最小长度,限制非法登录次数等。而为了对付客观口令攻击,需要采取一系列的技术手
段来改进用户登录程序,下面分别来讲这些技术手段。
3.1
窃听攻击是指窃听者监视一个合法用户的登录过程,由于目前的网络都是基于
CSMA/CD的广播式网络结构,攻击者可以使用一种抓包软件(如Sniffer Pro),截获网络上传输的数据包,如果用户的口令以明文形式进行传输,攻击者很容易从数据包中分析得出用
户的口令。
因此,为了对付窃听攻击,必须将用户的口令在客户端加密之后再传送到网上给服务
器去认证,这样,即使攻击者截获数据包,也只能找到用户口令的密文,如图2所示。
即假定身份id的口令明文是p,在认证请求发起的客户端,将身份id和口令p输入,计算P’=f (p),并将P’和ID发送给验证者,验证者系统中拥有ID和P’,如果两者一致,则通过验证。其中,f(x) 是单向函数,即计算f(x) 是较为容易的,而计算其反函数是很困难
的。例如,可用计算离散对数的复杂性,进行设计。
上述
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
的主要缺陷是:攻击者可以构造一张p 和q的对照表。表中的p 尽最大可能包含期望的值,然后计算对应的q。攻击者构造一张充分大的对照表后,然后将表中的口
令输入到客户端,再被动的监听认证消息就能以很高的概率获得口令。
只要稍作修改就能克服上述的缺陷,可以将单向函数应用于由口令和身份级联的一个
串,即把P’=f (p)改为P’=f (p , id),如图3所示。
3.2.1
攻击者如果从客户端获取不到口令信息的话,很自然的会想到尝试从服务器端去获取
口令,因此对口令系统的另一个重要威胁是来自对验证者的攻击。因为口令通常是存放在口
令文件或数据库中。如果存放口令的数据库被攻击者盗走(如保存有用户口令的网站数据库
被黑客下载),或是系统管理员有意冒名用户,这些恶劣的攻击者就可以为所欲为了。
前面的方案对此威胁都无能为力。因为验证方保存着用户的密码。所以要设计一种机
制,使得验证方不直接保存用户的密码,又能验证用户的身份。那么最简单的办法就是在服
务器端也对用户的密码加密后再存放,目前很多网站就是采用MD5加密算法对口令进行不可逆加密变换,把加密变换后的密文存放在数据库中。然后再结合防止窃听攻击在客户端加
密,这时的口令认证模型如图4所示。
3.2.2
如果攻击者不光能查看验证者的口令数据库,还能对口令数据库中的口令进行修改的
话,而且他又猜测到了验证者所用的加密算法,如目前一般的网站都是采用MD5加密算法,而MD5加密算法的程序在网上很容易找到,那么攻击者可以自己设定的一个口令,用MD5算法加密,得到自己口令的密文,再把口令数据库中口令的密文修改为自己设定的口令的密
文。这样攻击者就能用自己的口令通过验证者的验证了。
为了对付选择明文攻击,一种简单的方法是验证方用来加密的算法不能采用通常的加
密算法(如在MD5加密算法的基础上再自设一步移位加密过程,并对该加密算法也保密),
由于攻击者不知道验证者所采用的加密算法而无法进行选择明文攻击。 3.3
把口令加密传输可以让攻击者无法知道真实的口令,可是,这对聪明的攻击者并不造
成麻烦。他只需把窃听的消息录制下来,再用其它的软件把含有加密口令的数据包原封不动
的重放出去给认证方认证,这样认证方同样也能收到正确的用户口令的密文,攻击者就可以
冒名顶替受害者,从认证者处获取服务了,我们称这种形式的攻击为重放攻击。
为了对付这样的重放攻击,就要求每次客户端发送到服务器端的数据包都不一样,这
样即使攻击者截获了先前的数据包,但把这个数据包再次发送出去就已经失效了。因此,目
前很多网站的用户认证窗口都要求用户在输入用户名和密码的同时还输入一个系统随机产
生的验证码,然后系统在客户端将此验证码和用户密码连接在一起用单向函数加密后,再把
验证码的明文附加到数据包里,供服务器端进行解密认证。
3.4
虽然这种方法可对付重放攻击,但由于用户每次都要输入验证码,显然给认证的过程增
加了麻烦,目前采用的一次性口令,挑战-应答机制都存在这个问题。有没有一种办法在不
增加用户开销的情况下又能对付重放攻击呢?我们知道,对付重放攻击的本质是要使每次发
送到验证方的数据包都不一样。
如果能让一个确定系统每次产生的密码不一样,那么就能满足这种要求,混沌系统具有
良好的伪随机特性、轨道的不可预测性、对初始状态及控制参数的敏感性等一系列特性,这
些特性与密码学的很多要求是吻合的,因此采用混沌密码机制对付口令的重放攻击是一种可
行的方案,目前一般采用一维Logistic映射作为混沌序列发生器产生混沌序列。
用户认证的过程是:
1) 对混沌序列发生器的初始化指定参数a及初始值X; 02) 用户输入自己的ID和Pwd;
3) 在完成混沌序列发生器的初始化后,生成最初的随机数R,用户输入自己的ID,通过1
+已知的数计算S=H?(ID,PWD+R); 11
4) 用户通过安全信道发送ID和S到服务器; 5) 服务器端把获得的ID和S存储起来,以备以后的认证过程使用。 4
口令攻击是信息系统安全的重要威胁,口令机制面临的最难解决的攻击问题是重放攻
击,目前一般采用一次性口令机制,和双因素法来对抗这种攻击,即用户在保留口令的同时,
还必须保存有一张身份认证卡,同时危及验证者的攻击也是一种不可忽视的安全威胁。口令
机制由于具有使用方便和易于实现的特点,相信在以后相当长的一段时间内还会是身份鉴别
的一种主流方式,因此对口令攻击和防范的研究具有重要意义。
作者简介:唐四薪,男,1980-,在衡阳师范学院网络中心从事网络管理和电子商务教
学方面的工作。