为了解决固定口令的诸多问题,安全专家提出了一次性口令(OTP:OneTimePassword)的密码体制,以保护关键的计算机资源。
OTP的主要思路是:在登录过程中加入不确定因素,使每次登录过程中传送的信息都不相同,以提高登录过程安全性。例如:登录密码=MD5(用户名+密码+时间),系统接收到登录口令后做一个验算即可验证用户的合法性。
1)不确定因子选择与口令生成
这些不确定因子选择方式大致有以下几种:(1)口令序列(SKEY)。口令为一个单向的前后相关的序列,系统只用记录第N个口令。用户用第N-1个口令登录时,系统用单向算法算出第N个口令与自己保存的第N个口令匹配,以判断用户的合法性。由于N是有限的,用户登录N次后必须重新初始化口令序列。
(2)挑战回答(CRYPTOCard)
用户要求登录时,系统产生一个随机数发送给用户。用户用某种单向算法将自己的秘密口令和随机数混合起来发送给系统,系统用同样的方法做验算即可验证用户身份。
(3)时间同步(SecureID)
以用户登录时间作为随机因素。这种方式对双方的时间准确度要求较高,一般采取以分钟为时间单位的折中办法。在SecureID产品中,对时间误差的容忍可达±1分钟。
(4)事件同步(SafeWord)
这种方法以挑战回答方式为基础,将单向的前后相关序列作为系统的挑战信息,以节省用户每次输入挑战信息的麻烦。但当用户的挑战序列与服务器产生偏差后,需要重新同步。
2)一次性口令的生成方式
(1)TokenCard(硬件卡)
用类似计算器的小卡片计算一次性口令。对于挑战回答方式,该卡片配备有数字按键,便于输入挑战值;对于时间同步方式,该卡片每隔一段时间就会重新计算口令;有时还会将卡片作成钥匙链式的形状,某些卡片还带有PIN保护装置。
(2)SoftToken(软件)
用软件代替硬件,某些软件还能够限定用户登录的地点。
(3)IC卡
在IC卡上存储用户的秘密信息,这样用户在登录时就不用记忆自己的秘密口令了。一次性口令的最有代表性的产品,就是美国的RSA公司的SecureID,每一套SecureID系统都配备有一个液晶显示令牌(Token),令牌每60秒便能产生一组全新的6位数字密码。当用户在登录本公司系统时,除输入其私人代号及密码外,还需输入当时显示在令牌上的六位数字。
SecueID双重认证技术,只容许能提供两种或两种以上×××明的用户存取特定的资源。这一方式与银行ATM自动提款机的运作类似,即要求用户提供双重认证,包括提款卡及个人密码。窃取者如要擅入账户,则必须同时取得该提款卡及个人密码。SecueID特别采用令牌形式的双重认证技术,即一个密码配合一种认证设备,能有效防止未经授权人士登录网站,从而确保系统及网络资源的安全。