技术讲座:双因素认证技术剖析
双因素认证的工作原理
双因素身份验证系统主要由三个部分组成:产生动态口令、认证代理和身份管理服务器。
1.产生动态口令
由物理介质--令牌将动态口令提供给用户。那么很多人都对动态口令是如何产生的非常感兴趣。它产生实现原理一般是采用特定的运算函式或流程,即基本函数,加上具有变动性的一些参数,即基本元素。利用基本元素经过基本函数的运算流程得到结果,产生的内容再转换为使用的密码,由于基本元素具有每次变化的特性,因此每次产生的密码都会不相同,所以称为动态口令。产生动态口令模块可以按照目前的产品分类来,大致上可分为三种产生方法:一是口令序列,二是挑战/回答式,三是以时间同步方式作为口令产生的变化因素,其方式如下:
* 口令序列
口令为一个单向的前后相关的序列,系统只用记录第N个口令。用户用第N-1个口令登录时,系统用单向算法算出第N个口令与自己保存的第N个口令匹配,以判断用户的合法性。由于N是有限的,用户登录N次后必须重新初始化口令序列。
* 挑战/回答
这种方式要求用户登录时,系统产生一个随机数发送给用户。用某种单向算法将自己的秘密口令和随机数混合起来发送给系统,系统用同样的方法做验算即可验证用户身份。
* 时间同步
以依时间因素产生动态口令的令牌为例。令牌内置芯片和精确时钟,同时输入了口令生成算法。令牌使用唯一的用户种子进行初始化,随后利用内置算法,结合当前时间和初始种子产生一串随机字符串作为用户的登录口令。动态口令的产生主要依赖于两个因素:时间值和初始种子。这两个值输入到产生动态口令算法中,产生输出。
时间同步是以用户登录时间作为随机因素的关键是同步的技术。在系统中,用户令牌和管理服务器共享相同的动态口令生成算法,不同的令牌拥有唯一的初始密钥,动态口令生成算法根据初始密钥和当前时间产生动态口令。由于在同一时刻管理服务器和令牌需要计算出相同的动态口令。而动态口令的产生依赖于时间值和初始密钥,所以时钟的同步很重要。对于可能分布在不同地区的管理服务器和令牌,采用全球同步时间(UTC)保证两者之间的时钟始终一致。
2.认证代理
认证代理是实现认证功能的中间组件,它部署在应用服务器上,用来实施动态口令的安全策略。常用的应用服务包括活动目录服务器、Web Services、远程访问服务器、VPN集中器等。主要功能是将具体应用的身份认证请求通过安全的通道传输给身份管理服务器,并通知用户验证结果。
当企业中的这些服务器安装了认证代理客户端软件后,就成为被保护的服务器。访问的用户无论是通过本地还是远程访问该服务器时,在得到访问授权之前,都将被截取。通过安全的通道向身份管理服务器证明身份之后,用户才会得到访问资源的权限,而这些服务的访问权限也是分别保护的,所以即使用户得到了一台服务器的访问权限也不会出现权限滥用的情况。