1.简介
认证令牌是代替口令的好办法。认证令牌是个小设备,在每次使用时生成一个新的随机数。这个随机数是认证的基础。认证令牌通常具有如下特性:处理器;LCD,显示输出;电池;小键盘,用于输入信息(可选);实时时钟(可选)。每个认证令牌(即每个设备)预编程了一个唯一的数字,称为随机种子或种子。种子是保证认证令牌产生唯一输出的基础。其工作的步骤如下所示:
第一步:生成令牌
生成认证令牌时,认证服务器生成令牌的相应随机种子。这个种子在令牌中储存或预编程,并在用户客户机的用户记录中建立其项目。因此,可以把种子看成用户口令(但技术上与口令完全不同)。另外,用户不知道种子值,这是因为,认证令牌自动使用种子。
第二步:使用令牌
认证令牌自动生成伪随机数,称为一次性口令或一次性密码。一次性口令是认证令牌根据预编程的种子值随机产生的。生成之后,使用一次就放弃,因此是一次性的。用户要认证时,出现一个屏幕,要输入用户名和最新的一次性口令。因此,用户输入用户名和从认证令牌取得的一次性口令。用户名与口令在登录请求中传递到服务器。服务器取得用户数据库中与用户名相应的种子(使用种子检索程序),然后调用口令验证程序,服务器向其提供种子和一次性口令。这个程序使用同步技术像认证令牌一样生成一次性口令,认证服务器可以用这个程序确定特定种子值是否与特定一次性口令相关。如下图所示:
如果用户丢失认证令牌,就会存在一个问题,为了解决这种情况,通常要使用口令或四位PIN保护认证令牌。只有输入这个PIN之后,才能生成一次性口令。这也是多因子认证的基础。口令是单因子认证,因为它只是知道什么的问题。相反,认证令牌是个双因子认证,因为既要知道什么(保护PIN),又要拥有什么(认证令牌),只知道PIN或只拥有令牌是不够的,要使用认证令牌,同时要有这两个因子。
第三步:服务器向用户返回相应消息
根据上述操作成功与否,服务器向用户返回相应消息。
2.认证令牌类型
认证令牌可以可以分为两大类:挑战/响应令牌和基于时间令牌。
2.1 挑战/响应令牌
挑战/响应令牌组合了前面介绍的技术。认证令牌中的预编程种子是秘密,是唯一的。这个事实是挑战/响应令牌的基础。事实上,这个技术把种子当做加密密钥。
第一步:用户发送登录请求
用户发送登录请求,只发送用户名,而不发送一次性口令。。
第二步:服务器生成随机挑战
服务器收到只有用户名的登录请求时,首先检查用户是否有效,只检查用户名。如果无效,则向用户返回相应的错误消息;如果用户名有效,则服务器生成一个随机挑战(随机数,用伪随机数生成方法生成),将其返回用户。随机挑战可以以明文形式传递到用户计算机。如下图所示:
第三步:用户用口令的消息摘要签名随机挑战
用户得到一个屏幕,显示用户名、从服务器收到的随机挑战和一个数据输入字段。在这个阶段,用户读取屏幕上显示的随机挑战,首先用它的PIN打开令牌,然后向令牌中输入从服务器收到的随机挑战。为此,令牌上有个小键盘。令牌接收随机挑战,用种子值加密,结果就是用种子加密的随机挑战。用户阅读这个值并将其输入屏幕的Password字段,然后将这个请求作为登录请求发送给服务器。假设用户发送的随机挑战为1775567,如下图所示:
第四步:服务器验证从用户收到的加密随机挑战
服务器收到的随机挑战是用户认证令牌用种子加密的。要验证随机挑战是用正确种子加密的,服务器加药进行相同的操作。可以使用两种方法:
1.服务器可以用用户的种子值解密从用户那里收到的加密随机挑战。用户的种子可以通过用户数据库取得。如果解密结果与服务器上原先的随机挑战相符,则服务器可以保证随机挑战是由用户认证令牌的正确种子加密的。
2.服务器也可以用用户的种子加密自己的随机挑战(即前面发给用户的随机挑战)。如果加密得到的随机挑战与从用户收到的随机挑战相符,则服务器可以保证随机挑战是由用户认证令牌的正确种子加密的。
第五步:服务器向用户返回相应消息
根据上述操作成功与否,服务器向用户返回相应消息。
2.2 基于时间令牌
挑战/响应机制存在实际问题。注意用户要进行三次输入:首先要输入PIN以访问令牌,其次要从屏幕上阅读随机挑战,并在令牌中输入随机挑战,最后要从令牌LCD上阅读加密的随机挑战,输入到Password字段。用户这个过程很容易出错,从而在用户计算机、服务器与认证令牌之间出现大量浪费的信息流。在基于时间令牌中,可以克服这些缺点。服务器不必向用户发送任何随机挑战,令牌上不需要输入键板,只要用时间作为认证过程的输入变量,代替随机挑战。
第一步:口令生成与登录请求
令牌和平时一样预编了种子,并向认证服务器提供这个种子的副本。在基于时间令牌中,这些令牌不要任何用户输入,而是没60秒自动生成一个口令,在LCD输出上显示最新口令,让用户阅读与使用。
生成口令时,基于时间令牌使用两个参数:种子和当前系统时间。令牌对这两个参数进行某种加密处理,自动产生口令,然后令牌在LCD上显示口令。用户登录时,只要看看LCD显示,阅读其中的口令,然后用其用户名和口令登录。
第二步:服务器方验证
服务器接收口令,并对用户种子值和当前系统独立执行加密功能,生成自己的口令。如果两个口令相符,则认为用户是有效用户,如下图所示:
第三步:服务器返回相应消息
根据上述操作成功与否,服务器向用户返回相应消息。
基于时间令牌具有自动性质,与挑战/响应令牌相比,因此在实际中更实用。但是如果用户登录请求到达服务器和认证完成之间经过60s的时间窗口,会出现问题。为了解决这类问题,可以采用重试方法。时间窗口过期时,用户计算机发一个新的登录请求,将时间提前1分钟。如果还是失败,用户计算机发一个新的登录请求,将时间提前2分钟,等等。