
BSD# opieinfo
498 gr9306
opieinfo命令显示下次登录时使用的资料。请注意,下次通过一次性口令登录时的预期应答与“ 498 ”有关,而非关上面more /etc/opiekeys命令中见到的“ 499 ”对应的应答,即4f0d07ed32197333。为得到所预期的应答, 我们需要用到一个OTP计算器,实际上就是opiekey命令。
登录
现在,用下面的命令退出本次会话准备重新登录:
BSD#logout
FreeBSD/i386 (grid.grid.grid) (ttyv0)
login: |
此时我们实际上有两种选择:(1)每次登录时使用某终端上的计算器产生一个应答,或者(2)一次产生一列应答,并以此建立一个应答表,直到将表上的应答用完为止。让我们先从第一方案开始∶
login: root
otp-md5 498 gr9306 ext
Password: |
登录时,您会收到了一个OTP挑战,其中包含您的种子值和当前的计数器。如今,opie正在等待我们的应答(或一次性口令),很明显该应答与当前计数器498有关。需要说明的是,在默认的情况下,登录时用户能够决定是否使用OTP,也就是说如果您在Password:提示符下输入您的可重用口令,您将象往常一样登录。
如果您决定使用OTP登录,眼下要做的事便是计算正确的应答。俗话说得好,不管白猫黑猫,只要能逮住老鼠就是好猫;与此相仿,您在哪儿计算应答无关紧要,只要不通过一个非加密网络连接使用计算器就行。因此,您可以使用另一个虚拟终端来产生应答,例如,您能够按Alt - F3,在本地登录然后运行计算器;另外,如果您能访问室内另一台计算机,甚至一个运行计算器软件的Palm,在那里计算应答也未尝不可。
利用计算器产生正确的应答时,有三样东西必不可少∶(1)当前计数器,(2)您的种子值和(3)您的秘密通行短语。当前计数器和种子在挑战中出现,实际上他们是公开的,但重要的是您的秘密通行短语只有您本人知道;换句话说,一旦某人得到了您的通行短语,他就能够以您的身份计算应答并且登录——很不幸,您的“嘴脸”并没有深深地烙在计算机的脑海里,除非您使用的是更高级的生物鉴别系统。
现在让我们利用种子值和计数器计算所需要的应答,如下∶
BSD# opiekey 498 gr9306
Using 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: root
otp-md5 498 gr9306 ext
Password: /*注意,这里输入回车键而不是可重用口令*/
otp-md5 498 gr9306 ext
Password [echo on]: beam gwyn wart molt wad rudy |
这里需要说明的是,不要在Password:提示符后键入您的可重用口令,而是按回车键开启echo,这样就允许您看到所键入的应答。但对可重用口令系统来说,Echo可绝不是个“好玩意”,所以使用可重用口令时它总是被关闭。然而,对一次性口令技术来说,每次登录时的应答都不相同,所以即使有人看着您输入也不要紧,因为下次它就不可用了。另外,与可重用口令不同的是,该应答不区分大小写,所以无论是大写或小写字母的应答,它都会来者不拒。
现在如果您运行opieinfo命令的话,您将看到下一个预期应答与计数器497相关。也就是说,每次使用一次性口令登录后,该计数器将自动减1。现在您可以放心地使用了,但一定注意绝不要让您的计数器减少为0,至于为什么,我想不用我说您也一定猜得到。
建立密钥表
就像有人吃苹果时喜欢现吃现洗,而有人则一次把苹果都洗干净,嘴馋时拿过来就往嘴里送一样,并不是所有人都喜欢上面介绍的方法。现在让我们展示第二方法——一次产生多个应答。为此,在使用计算器时,除了需要参数n外,还需要一个数字作为参数,以便指出想一次计算多少个应答。在这里,假设我们想产生10个应答,当前计数器为497,见下面的命令:
BSD# opiekey -n 10 497 gr9306
Using 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 FULL
489: SOD STUN SINK DRAW LAWN TILT
490: MALT STAY MASH CAR DEBT WAST
491: HOWE DRY WALL TOO BUDD SWIM
492: ROOT SPY BOND JEST HAIL SCAR
493: MEAN ADD NEON CAIN LION LAUD
494: LYLE HOLD HIGH HOME ITEM MEL
495: WICK BALI MAY EGO INK TOOK
496: RENT ARM WARN ARC LICE DOME
497: 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 mssp298
Updating root:
You need the response from an OTP generator。
Old secret pass phrase:
otp-md5 7 gr9306 ext
Response: lopt omut sffe erdc jout dxrk
New 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的使用方法,希望本文对读者的实际工作有所帮助。