网络通信 频道

身份认证连载:双因素认证技术剖析

  我们今天谈到的身份管理,即数字身份管理,是长期以来为了保证计算机和网络安全而采取的一种关键手段。当网络和计算机系统系统只能识别 "由数字代码合成的人"的时候,身份管理的问题就不会可能停止了。

  网络安全是一个系统,它不是防火墙,不是入侵检测系统,也不是我们虚拟专用网。当然,也不是哪个网管员根据厂商或者网上的一些资料加固系统的范例。我们常说的访问控制列表,它能够基于主机防火墙、文件访问控制为你提供网络层面和文件层面的控制,但它不是一个系统。一旦一个非法的用户侵入你的系统,这些安全的技术和设备只能坐以待毙。

  以补充的方式为信息资产提供安全的联网设备、技术和服务,这就是"安全"在现实中的定义,双(多)因素认证就是一种补充技术。本文将讲解双(多)因素认证的重点技术,同时将介绍这种技术实现的原理。

   为什么选择双因素?

  通常情况下,企业或者网络银行非配给我们的信息只有:用户名称+密码。在密码静态的状况下,将会产生某些问题,这些问题在很多的技术文章和实际使用中我们已经身有体会了。而双因素认证(Two Factors Authentication)可以解决这一问题,那么什么是双因素认证呢?举例来讲,我们已经知道认证用户身份的方法可能有三种,他们分别是:

  (1)用户已经知道的秘密:口令、或密钥;

  (2)用户拥有的物理因素:银行卡、智能卡、令牌;

  (3)用户本身具有的特征:面部、笔迹、指纹、虹膜、声纹、步态等;

  这些能够证明的用户身份的特征可以单独使用或联合使用。如今,在我们已知的技术领域中,这些所有的特征都可以仿制,但利用两种或者两种以上的方法来确认身份,仿制的可能性就会很小,或者是不可能的。在这三种方法中,将第一种方法和生物识别技术配合,是最可靠的身份认证方式,因为它直接使用人的物理特征来表示每一个人的数字身份,但价格昂贵是它用户面临的最直接的问题。

  所以,让用户可以接受的双因素身份认证机制还是第一种与物理因素的结合。现在比较成熟的产品一般是在静态密码的基础上,增加一个物理因素,从而构成一个他人无法复制和识破的安全密码,又称动态口令验证机制。其主要思路是:在登录过程中加入不确定的变化的因素用以生成用户口令,以一次性动态口令登录,使得每次登录的认证信息都不相同。验证系统接收到登录口令后,进行验算即可确认用户的合法性,从而提高登录过程的安全性。

  2.认证代理

  认证代理是实现认证功能的中间组件,它部署在应用服务器上,用来实施动态口令的安全策略。常用的应用服务包括活动目录服务器、Web Services、远程访问服务器、VPN集中器等。主要功能是将具体应用的身份认证请求通过安全的通道传输给身份管理服务器,并通知用户验证结果。

  当企业中的这些服务器安装了认证代理客户端软件后,就成为被保护的服务器。访问的用户无论是通过本地还是远程访问该服务器时,在得到访问授权之前,都将被截取。通过安全的通道向身份管理服务器证明身份之后,用户才会得到访问资源的权限,而这些服务的访问权限也是分别保护的,所以即使用户得到了一台服务器的访问权限也不会出现权限滥用的情况。

  3.身份管理服务器

  管理服务器是双因素认证系统的核心。其主要作用为:验证用户口令的有效性、向用户签发口令令牌、签发可信代理主机证书、实时监控,创建日志信息等。

  管理服务器模块通常是在UNIX或NT机器上运行的监控程序。客户端软件负责把用户信息传递给指定的管理服务器,然后对返回的响应进行操作。管理服务器负责接收用户连接请求。在管理服务器中设立一个中心数据库,这个中心数据库包括用户身份认证信息(比如用户名,口令),根据这个中心数据库来认证用户。通常管理服务模块会采用RADIUS(Remote Authentication Dial In User Service,远程身份验证拨入用户服务)服务器。

  RADIUS是RFC 2865"远程身份验证拨入用户服务 (RADIUS)"和 RFC 2866"RADIUS 记账"中描述的业界标准协议。RADIUS客户端(通常为拨号服务器、VPN 服务器或无线访问点)以RADIUS消息的形式向 RADIUS服务器发送用户凭据和连接参数信息。RADIUS初衷是用来管理使用串口和调制解调器的大量分散用户,但在今天更多的是和AAA配合使用。

  AAA是验证授权和记账Authentication、Authorization、Accounting 的简称。它是运行于NAS上的客户端程序,它提供了一个用来对验证、授权和记账这三种安全功能进行配置的一致的框架。AAA的配置实际上是对网络安全的一种管理,这里的网络安全主要指访问控制,包括哪些用户可以访问网络服务器,具有访问权的用户可以得到哪些服务,如何对正在使用网络资源的用户进行记账。

   验证(Authentication): 验证用户是否可以获得访问权

   授权(Authorization) : 授权用户可以使用哪些服务

   记账(Accounting) : 记录用户使用网络资源的情况

  要真正实现双因素认证,就是让上述3个组件协同工作起来。管理服务器在选定的网络节点之间(通过签发代理主机证书) 建立一个保护的环境。每个受保护的网络节点都是一个客户端,必须运行认证代理软件。用户访问受保护网络节点时,客户端软件代理要求用户输入验证信息(用户名,PIN码和动态密码),并同时将客户端的节点密文传输到管理服务器。管理服务器在接受到验证信息后,首先根据节点密文确定客户端是否为可信节点。

  然后根据用户名在用户信息数据库中取出用户的初始密钥,并在当前时间前后的一定时间段内生成一系列动态口令(注意:这个时间段设置上很有讲究,我在第一次设置的时候选择了30秒,但当时的拨号用户由于速度太慢,根本完成不了输入过程),如果用户提交的动态口令在这组口令中得以匹配,并且PIN码也相符,则可以认定该用户为合法用户,接受用户的验证请求。这就是动态口令和用户PIN码相结合的处理过过程,如下图所示:




0
相关文章