FreeBSD handbook中文版 10 安全(9) FreeBSD 的基本系统,同时也广泛应用于其他操作系统。S/key 是Bell Communications Research, Inc 的注册商标。 下面将讨论三种不同的密码形式。第一种是你通常使用的Unix 风格或Kerberos 密码; 我们把它叫做Unix passWord。第二种是由S/key 程序产生,然后被keyinit 程序和登陆命 令接受的一次性密码;我们把它叫做one-time password。最后一种密码是由专门的密码生 成程序生成的秘密密码;我们把它叫做secret password 或绝对password。 秘密密码与unix password 毫无关系;他们也可能是一样的,但并不推荐使用。S/key 秘密密码不象unix 密码需要限制在8 位以内,它们可能会更长。一般都使用6 到7 位的长 度。另外,S/key 系统操作完全独立于unix password 系统。 除了密码,对于S/key 有两个数据很重要。一个是以seed 或key 出名,包含两个字母 和五个数字。其他的被叫做iteration count,在1 到100 之间。S/key 通过连接“种子” (seed)和秘密密码来生成一次性密码,然后通过反复计算多次应用MD4 hash,再把结果 变成六个英文字。这六个英文字就是你的一次性密码。如果用户提供的密码的hash 值与先 前的密码相一致,那用户就通过了认证;每个成功的登陆确保用户和登陆程序保持同步之 后,计算的次数就不断减少。当反复计算的降到1 时,S/key 必须被重新初始化。 有四个程序被包含在S/key 系统中,我们下面会谈到。密码程序接受一个反复计算数, 一个种子,和一个秘密密码,然后产生一个一次性密码。Keyinit 程序被用来初始化S/key, 第12 页FreeBSD 使用手册 然后改变密码,反复计算数或种子;它不是接受一个秘密密码,就是一个反复计算数,种 子和一次性密码。Keyinfo 程序会检查文件,然后打印出被调用的当前反复计算数和种子。 最后,login 和su 程序包含了用于认证S/key 一次性密码的必需的逻辑性。login 程序也 可以不使用unix 密码。 我们将讲述四种不同的操作。第一种是首先通过一个安全连接设置S/key 使用keyinit 程序,或改变你的密码或种子。第二种操作是通过一个不安全的连接使用keyinit 程序, 通过一个安全的连接与密码程序相关联,同样能达到目的。第三种是使用密码程序产生许 多key,它可以被记录或打印出来。 10.5.1 安全连接的初始化 首先是当通过一个安全连接登陆时,初始化S/key,改变你的密码,或改变你的种子, 当你自己登陆时,使用不带任何参数的keyinit 程序: % keyinit Adding unfurl: Reminder - Only use this method if you are directly connected. If you are using telnet or rlogin exit with no password and use keyinit -s.