一次性口令技术简介
作者:JunTuan
常规口令
在现实生活中,我们个人的身份主要是通过各种证件来确认的,比如:身份证、户口本等。计算机世界与现实世界非常相似,各种计算资源(如:文件、数据库、应用系统)也需要认证机制的保护,确保这些资源被应该使用的人使用。在大多数情况下,认证机制与授权和记账也紧密结合在一起。
目前各类计算资源主要靠固定口令的方式来保护。比如你需要访问一个NT系统,首先必须在这个NT上设置一个账户,并设定密码。当通过网络访问NT资源时,系统会要求输入你的账户名和密码。在账户和密码被确认了以后,你就可以访问NT上的资源了。
这种以固定口令为基础的认证方式存在很多问题,最明显的是以下几种:
网络数据流窃听(Sniffer) 由于认证信息要通过网络传递,并且很多认证系统的口令是未经加密的明文,攻击者通过窃听网络数据,就很容易分辨出某种特定系统的认证数据,并提取出用户名和口令。
认证信息截取/重放(Record/Replay) 有的系统会将认证信息进行简单加密后进行传输,如果攻击者无法用第一种方式推算出密码,可以使用截取/重放方式。
字典攻击 由于多数用户习惯使用有意义的单词或数字作为密码,某些攻击者会使用字典中的单词来尝试用户的密码。所以大多数系统都建议用户在口令中加入特殊字符,以增加口令的安全性。
穷举尝试(Brute Force) 这是一种特殊的字典攻击,它使用字符串的全集作为字典。如果用户的密码较短,很容易被穷举出来,因而很多系统都建议用户使用长口令。
窥探 攻击者利用与被攻击系统接近的机会,安装监视器或亲自窥探合法用户输入口令的过程,以得到口令。
社交工程 攻击者冒充合法用户发送邮件或打电话给管理人员,以骗取用户口令。
垃圾搜索 攻击者通过搜索被攻击者的废弃物,得到与攻击系统有关的信息,如果用户将口令写在纸上又随便丢弃,则很容易成为垃圾搜索的攻击对象。
虽然用户可以通过经常更换密码和增加密码长度来保证安全,但这同时也用户带来了很大麻烦。
一次性口令
为了解决固定口令的诸多问题,安全专家提出了一次性口令(OTP:One Time PassWord)的密码体制,以保护关键的计算资源。
OTP的主要思路是:在登录过程中加入不确定因素,使每次登录过程中传送的信息都不相同,以提高登录过程安全性。例如:登录密码=MD5(用户名+密码 +时间),系统接收到登录口令后做一个验算即可验证用户的合法性。
不确定因子选择与口令生成
这些不确定因子选择方式大致有以下几种:
口令序列(S/KEY) 口令为一个单向的前后相关的序列,系统只用记录第 N个口令。用户用第N-1个口令登录时,系统用单向算法算出第N个口令与自己保存的第N个口令匹配,以判断用户的合法性。由于N是有限的,用户登录N次后必须重新初始化口令序列。
挑战/回答(CRYPTOCard) 用户要求登录时,系统产生一个随机数发送给用户。用户用某种单向算法将自己的秘密口令和随机数混合起来发送给系统,系统用同样的方法做验算即可验证用户身份。
时间同步(SecureID) 以用户登录时间作为随机因素。这种方式对双方的时间准确度要求较高,一般采取以分钟为时间单位的折中办法。在SecureID 产品中,对时间误差的容忍可达±1分钟。
事件同步(Safe Word) 这种方法以挑战/回答方式为基础,将单向的前后相关序列作为系统的挑战信息,以节省用户每次输入挑战信息的麻烦。但当用户的挑战序列与服务器产生偏差后,需要重新同步。
一次性口令的生成方式有以下几种:
Token Card(硬件卡) 用类似计算器的小卡片计算一次性口令。对于挑战/回答方式,该卡片配备有数字按键,便于输入挑战值;对于时间同步方式,该卡片每隔一段时间就会重新计算口令;有时还会将卡片作成钥匙链式的形状,某些卡片还带有PIN保护装置。
Soft Token(软件) 用软件代替硬件,某些软件还能够限定用户登录的地点。
IC卡 在IC卡上存储用户的秘密信息,这样用户在登录时就不用记忆自己的秘密口令了。
(出处:http://www.sheup.com)