分享
 
 
 

实例讲解一次性口令鉴别技术分析

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

虽然大部分用户还在使用可重用口令技术来保护他们的系统,但随着网络应用的大规模普及,可重用口令技术的缺陷日渐暴露无遗。换句话说,传统的可重用口令技术业已不能胜任当前的应用环境,而本文的目的便是为读者介绍一种更为安全的口令鉴别技术――一次性口令技术。本文不但讨论了一次性口令技术的机制,同时还详细介绍了OPIE在FreeBSD系统下的应用。

可重用口令技术的缺点

随着社会信息化程度的提高,信息作为一种与人们的切身利益息息相关的资产,其安全性正日益受到人们的关注。因此,在我们能够使用信息系统之前,通常需要经过以下两个步骤:鉴别和授权。鉴别是授权的基础,因为如果不能正确的识别用户的身份,正确的授权就无从谈起。利用口令认证用户是最常用的一种鉴别技术,而口令鉴别技术通常又分为两种:历史悠久的可重用口令鉴别技术和后起之秀一次性口令鉴别技术。

也许是可重用口令鉴别技术的历史太悠久的缘故,人们已经对她太熟悉,所以列举起她的缺点来简直如数家珍。这里是其主要的几种缺陷:

?网络窃听 有时候口令需要通过网络传输,但是很多鉴别系统的口令是未经加密的明文,攻击者只要通过窃听网络数据,就很容易获取鉴别所需的用户名和口令。

?重放攻击 有的系统会将鉴别信息进行简单加密后进行传输,这时攻击者虽然无法窃听密码,但他们却可以首先截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。

?字典攻击 由于多数用户习惯使用有意义的单词或数字作为密码,某些攻击者会使用字典中的单词来尝试用户的密码。所以大多数系统都建议用户在口令中加入特殊字符,以增加口令的安全性。

?强力攻击 这是一种特殊的字典攻击,它使用字符串的全集作为字典,即穷举所有可能的口令空间。这需要很大的耐心和巨大的工作量以及一点运气。然而,若用户的密码较短,那么它很快就会被穷举出来,因而很多系统都建议用户使用长口令。

?窥探 攻击者利用与被攻击系统接近的机会,安装监视器或亲自窥探合法用户输入口令的过程,以得到口令。对于后者,根本不需要特别的技术或设备,只要眼睛不是近视得太夸张,需要的仅是静悄悄的站在您的身后,就可以轻松实施攻击。

?社交工程 攻击者冒充管理人员发送邮件或打电话给合法用户,比如“我是某某单位的系统管理员,现在需要更新所有用户的密码,请将您原来使用的口令告诉我。”这种情况下,许多经验不足的用户会毫不犹豫地将其口令奉上。

?垃圾搜索 攻击者通过搜索被攻击者的废弃物,得到与攻击系统有关的信息,如果用户将口令写在纸上又随便丢弃,则很容易成为垃圾搜索的攻击对象。有文章报道说,当今的商业间谍流行以清洁工人的身份来搜集情报,一方面清洁工人不太引起人们的注意,同时工作起来特顺手。

虽然可以通过强迫用户经常更换密码和增加密码长度来保证安全,但由于人类天性懒惰的缘故,经常更换难以记忆的密码会让他们感觉很不舒服,这时难保他们不会将口令写到小纸条上并置于键盘之下(若系统管理员看到了会气得在地上打滚)。所以说实施某项安全措施时,必须考虑到来自用户的阻力。

一次性口令技术

仅从字面上理解,一次性口令技术好像要求用户每次使用时都要输入一个新的口令,但事实正相反,用户所使用的仍然是同一个重复使用的口令。要想弄清这是怎么回事,让我们先从一次性口令技术的工作原理谈起。

首先,在用户和远程服务器之间建立一个秘密――相当于传统口令技术当中的“口令”,该秘密在此被称为“通行短语”。同时,它们之间还应具备一种相同的“计算器”,该计算器实际上是某种算法的硬件或软件实现,它的作用是生成一次性口令(见下文)。当用户向服务器发出连接请求时,服务器向用户提出挑战(challenge)。挑战通常是由两部分组成的一个字符串。挑战的一部分是种子值(seed),它是分配给用户的在系统内具有唯一性的一个数值,也就是说,一个种子对应于一个用户,同时它是非保密的;而另一部分是迭代值(iteration),它是服务器临时产生的一个数值,与通行短语和种子值不同的是它总是不断变化的。用户收到挑战后,将种子值,迭代值和通行短语输入到“计算器”中进行计算,并把结果作为回答返回服务器。服务器暂存从用户那里收到回答,因为它也知道用户的通行短语,所以它能计算出用户正确的回答,通过比较就可以核实用户的确切身份。以上过程可用下图表示:

我们可以看出,用户通过网络传给服务器的口令是种子值,迭代值和通行短语在计算器作用下的计算结果,用户本身的通行短语并没有在网上传播。只要计算器足够复杂,就很难从中提取出原始的通行短语,从而有效地抵御了网络窃听攻击。又因为迭代值总是不断变化的,比如每当身份认证成功时,将用户的迭代值自动减1,这使得下一次用户登录时使用鉴别信息于上次不同(一次性口令技术由此得名),从而有效地阻止了重放攻击。总之,与可重用口令技术的单因子(口令)鉴别不同,一次性口令技术是一种多因子(种子值,迭代值和通行短语)鉴别技术,其中引入的不确定因子使得它更为安全。下面介绍FreeBSD操作系统下一次性口令系统的实例――OPIE。

FreeBSD下的OPIE

OPIE的前身是由Bellcore研制的基于一次性口令思想的免费身份认证系统S/KEY。后来,Bellcore在S/KEY的基础上开发了一套商业版本,并将S/KEY注册为商标。此后,来自其他地方的开发者继续在OPIE (One-time Passwords In Everything)的名义下对原来的免费系统进行维护开发。

FreeBSD系统管理员是幸运的,因为该系统自身带有OTP软件,同时配置起来也比较容易FreeBSD4。x以及更低版本下,s/key(注:自此及以下出现的s/key都是指免费版的)和opie都随系统同时安装。S/KEY最初使用DES技术作为散列算法,后因安全问题改用MD4作为其加密算法。OPIE与之不同,它使用比s/key的MD4更为强壮的MD5算法,因此一般认为OPIE更为安全。FreeBSD系统从5。0版开始,将逐步停用s/key而仅支持OPIE。下面开始介绍OPIE的配置。

OTP起步

开始使用opie之前,你必须自己在/etc/opiekeys目录中添加opie数据库。默认时,此数据库为空,这意味着如果运行more命令你只能得到下面的提示符:

BSD#more /etc/opiekeys

/etc/opiekeys: No such file or directory

为添加自己的数据库,可以使用带参数的opiepasswd命令∶

BSD# opiepasswd - c

Adding root:

Only use this method from the console; NEVER from remote。 If you are using

telnet, xterm, or a dial-in, type ^C now or exit with no password。

Then run opiepasswd without the -c parameter。

Using MD5 to compute responses。

Enter new secret pass phrase: /*在此输入通行短语*/

注意开始部分的警告,当运行opiepasswd - c命令时,你或者坐在你要登录到其上的机器旁边(控制台),要么经由ssh连接到该机器。否则,你的秘密通行短语和一次性口令将以明文文本的形式通过网络发送――很明显,这是一个严重的的安全隐患。接下来在提示符下故意输入一个字符数较短的通行短语如“ace6nm/”,看一下它有何反应:

Secret pass phrases must be between 10 and 127 characters long。

Enter new secret pass phrase: /*在此输入符合要求的通行短语*/

Again new secret pass phrase: /*再次输入以上通行短语*/

这里我们收到一个警告,因为刚才输入的通行短语太短,按要求通行短语的长度应在10到127个字符之间。此通行短语在概念上于SSH系统中的产生公/私密钥对的通行短语相仿。此通行短语本身并不充当一个口令,而是用来证明我是将root帐户添加到数据库以及有权建立“应答”(或一次性口令)的那个人。从下文可以看到,应答包含六个单词,每个单词由毫无意义的大写字母组成。按照提示输入正确的通行短语之后,屏幕输出如下:

ID root OTP key is 499 gr9306

AUNT CLUE WHOM CASK HERO HOLT

BSD#

此时回到命令提示符,我可以再次使用more命令验证opie数据库∶

BSD# more /etc/opiekeys

root 0499 gr9306

4f0d07ed32197333

Apr 28,2003 18:22:10

注意,在数据库中,存在包含我的用户名root的一个登记项,后面跟着计数器( 499),然后是一个种子值( dh0391),再后面是一个一次性口令(4f0d07ed32197333),最后面是登记项增到数据库的日期与时间。对我们来说重要的是计数器和种子值,因为每次通过一次性口令等录时都要用到它们。

如果需要验证我们的计数器和种子值,可用此命令进行∶

BSD# opieinfo

498 gr9306

opieinfo命令显示下次登录时使用的资料。请注意,下次通过一次性口令登录时的预期应答与“ 498 ”有关,而非关上面more /etc/opiekeys命令中见到的“ 499 ”对应的应答,即4f0d07ed32197333。为得到所预期的应答, 我们需要用到一个OTP计算器,实际上就是opiekey命令。

登录

现在,用下面的命令退出本次会话准备重新登录:

BSD#logout

FreeBSD/i386 (grid.grid.grid) (ttyv0)

login:

此时我们实际上有两种选择:(1)每次登录时使用某终端上的计算器产生一个应答,或者(2)一次产生一列应答,并以此建立一个应答表,直到将表上的应答

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有