找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 安全攻防 查看内容

实例讲解一次性口令鉴别技术(2)

2009-12-14 02:37| 发布者: admin| 查看: 20| 评论: 0|原作者: 小可爱

OTP起步

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





BSD#more /etc/opiekeys/etc/opiekeys: No such file or directory



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





BSD# opiepasswd - cAdding root:Only use this method from the console; NEVER from remote。 If you are usingtelnet, 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 gr9306AUNT CLUE WHOM CASK HERO HOLTBSD#



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





BSD# more /etc/opiekeysroot 0499 gr9306 4f0d07ed32197333 Apr 28,2003 18:22:10



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

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





BSD# opieinfo498 gr9306



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

登录

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





BSD#logoutFreeBSD/i386 (grid.grid.grid) (ttyv0)login:



此时我们实际上有两种选择:(1)每次登录时使用某终端上的计算器产生一个应答,或者(2)一次产生一列应答,并以此建立一个应答表,直到将表上的应答用完为止。让我们先从第一方案开始∶





login: roototp-md5 498 gr9306 extPassword:



登录时,您会收到了一个OTP挑战,其中包含您的种子值和当前的计数器。如今,opie正在等待我们的应答(或一次性口令),很明显该应答与当前计数器498有关。需要说明的是,在默认的情况下,登录时用户能够决定是否使用OTP,也就是说如果您在Password:提示符下输入您的可重用口令,您将象往常一样登录。

如果您决定使用OTP登录,眼下要做的事便是计算正确的应答。俗话说得好,不管白猫黑猫,只要能逮住老鼠就是好猫;与此相仿,您在哪儿计算应答无关紧要,只要不通过一个非加密网络连接使用计算器就行。因此,您可以使用另一个虚拟终端来产生应答,例如,您能够按Alt - F3,在本地登录然后运行计算器;另外,如果您能访问室内另一台计算机,甚至一个运行计算器软件的Palm,在那里计算应答也未尝不可。

利用计算器产生正确的应答时,有三样东西必不可少∶(1)当前计数器,(2)您的种子值和(3)您的秘密通行短语。当前计数器和种子在挑战中出现,实际上他们是公开的,但重要的是您的秘密通行短语只有您本人知道;换句话说,一旦某人得到了您的通行短语,他就能够以您的身份计算应答并且登录——很不幸,您的“嘴脸”并没有深深地烙在计算机的脑海里,除非您使用的是更高级的生物鉴别系统。

现在让我们利用种子值和计数器计算所需要的应答,如下∶





BSD# opiekey 498 gr9306Using the MD5 algorithm to compute response。Reminder: Don't use opiekey from telnet or dial-in sessions。Enter secret pass phrase: /*在此输入秘密通行短语*/BEAM GWYN WART MOLT WAD RUDY



请注意,在按照提示输入秘密通行短语后,我们得到了与计数器498对应的应答∶BEAM GWYN WART MOLT WAD RUDY。现在,让我们继续进行先前未完成的OPIE登录∶





login: roototp-md5 498 gr9306 extPassword: /*注意,这里输入回车键而不是可重用口令*/otp-md5 498 gr9306 extPassword [echo on]: beam gwyn wart molt wad rudy



这里需要说明的是,不要在Password:提示符后键入您的可重用口令,而是按回车键开启echo,这样就允许您看到所键入的应答。但对可重用口令系统来说,Echo可绝不是个“好玩意”,所以使用可重用口令时它总是被关闭。然而,对一次性口令技术来说,每次登录时的应答都不相同,所以即使有人看着您输入也不要紧,因为下次它就不可用了。另外,与可重用口令不同的是,该应答不区分大小写,所以无论是大写或小写字母的应答,它都会来者不拒。

现在如果您运行opieinfo命令的话,您将看到下一个预期应答与计数器497相关。也就是说,每次使用一次性口令登录后,该计数器将自动减1。现在您可以放心地使用了,但一定注意绝不要让您的计数器减少为0,至于为什么,我想不用我说您也一定猜得到。

建立密钥表

就像有人吃苹果时喜欢现吃现洗,而有人则一次把苹果都洗干净,嘴馋时拿过来就往嘴里送一样,并不是所有人都喜欢上面介绍的方法。现在让我们展示第二方法——一次产生多个应答。为此,在使用计算器时,除了需要参数n外,还需要一个数字作为参数,以便指出想一次计算多少个应答。在这里,假设我们想产生10个应答,当前计数器为497,见下面的命令:





BSD# opiekey -n 10 497 gr9306Using the MD5 algorithm to compute response。Reminder: Don't use opiekey from telnet or dial-in sessions。Enter secret pass phrase: 488: COIN LO DOG GOLF ACTA FULL489: SOD STUN SINK DRAW LAWN TILT490: MALT STAY MASH CAR DEBT WAST491: HOWE DRY WALL TOO BUDD SWIM492: ROOT SPY BOND JEST HAIL SCAR493: MEAN ADD NEON CAIN LION LAUD494: LYLE HOLD HIGH HOME ITEM MEL495: WICK BALI MAY EGO INK TOOK496: RENT ARM WARN ARC LICE DOME497: LEAD JAG MUCH MADE NONE WRIT



以上便是备您今后十次登录所需的口令列表。您当然可以为它做一份硬拷贝,比如把它打印到一张纸上,然后将其保存到一个安全的地方。在此强烈建议男士们将其放到您的钱包中,因为携伴外出时,可爱的女士们常常为其男伴的钱包而“揪心”:一则怕其随小偷而去,更重要的是“不知这次他有没有把钱带够呀?”。现在让我们把口令表输出到名为secretlist的文件中∶





BSD# opiekey -n 10 497 gr9306 > secretlist



接下来您可以打印了,不过请注意,一旦打印完毕,请立刻将该文件从硬盘上抹去,除非您疯狂到要留十个口令副本在硬盘上的地步。

如果您的计数器小得到了危险的地步,比方说10左右,建议您使用opiepasswd命令重置它。在您连到口令数据库后,可以用带n(数字开关)以及s(种子值开关)而非c开关的opiepasswd命令完成这项工作。比如,您打算将计数器重置为366,同时将您的种子值改为mssp298,假设当前的种子值为7,执行命令时的情形如下∶





BSD# opiepasswd -n 366 -s mssp298Updating root:You need the response from an OTP generator。Old secret pass phrase: otp-md5 7 gr9306 ext Response: lopt omut sffe erdc jout dxrkNew secret pass phrase: otp-md5 366 mssp298 Response: hdwn as dom mel mcli maln



此时,有一点您可能感到疑惑:既然在login提示符下既可以用可重用口令登录也可以用一次性口令登录,那么在哪些情况下更应当使用后者呢?如果您正在一个安静的地方使用SSH来登录到远程系统的话,您大可不必使用OTP,因为SSH将您的全部信息都加密处理,其中包括您的登录口令。可是,如果您需要在某些“热闹”的场所登录并使用系统的话,比如在嘈杂的候车厅里使用您的笔记本电脑的情形,很可能有一双眼睛正在您的背后密切地注视着您的键盘,这时一次性口令便有了用武之地。也就是说,是否选择使用OTP取决于当您登录时口令是否受到外部的威胁。当然,如果您愿意也可以修改默认配置,让FreeBSD系统强迫用户总是使用OTP登录,方法是建立一个称作/etc/opieaccess的文件,但是,通常认为此方法有安全漏洞并且系统也在man opieaccess中给出了警告。

结束语

对于计算机系统,只有经过授权的合法用户才能访问,而问题的关键在于如何正确的鉴别用户的真实身份。用户鉴别,或称用户认证,就是用户向计算机系统以一种安全的方式提交自己的身份证明,然后由系统确认用户的身份是否属实。本文在说明可重用口令技术的缺陷的基础上,介绍了一种更为安全的口令鉴别技术——一次性口令技术及其机制,最后详细介绍了FreeBSD系统下的OPIE的使用方法,希望本文对读者的实际工作有所帮助。

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 01:30 , Processed in 0.175618 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部