一种基于时间和事件的一次性口令生成和验证方法

文档序号:7767522阅读:717来源:国知局
专利名称:一种基于时间和事件的一次性口令生成和验证方法
一种基于时间和事件的一次性口令生成和验证方法(-)技术领域
本发明属于身份认证领域,特别涉及基于时间和事件的一次性口令生成和验证方法。背景技术
在传统的口令认证机制中,用户的口令多数以明文形式在网上传输并且固定不 变。这使得攻击者可以通过窃听得到这些可重用的口令达到入侵系统的目的。一次性口令 系统允许用户每次登录时使用不同的口令,很好地防止了口令重用攻击,增强了系统的安 全性。
一次性口令认证(OTP)系统是为了防止黑客通过一次成功的口令窃取而永久地 获得系统访问权而设计的一种认证技术.它规定用户每次登录时使不同的口令,限制了同 一口令的生存周期。
OTP的主要思路是在登录过程中加入不确定因素,使每次登录过程中传送的信 息都不相同,以提高登录过程安全性。不确定因子选择与口令生成这些不确定因子选择方 式大致有以下几种
基于时间的方法以用户登录时间作为随机因素。这种方式对双方的时间准确度要 求较高,一般采取以分钟为时间单位的折中办法。一般产品对时间误差的容忍可达士1分 钟。这种方法的主要缺陷是在窗口期内,一个OTP可反复使用。如果系统容忍士 1分钟,则 在三分钟内,非法用户可通过截获的OTP登录。
基于事件的方法以计数器值为随机因素,生成单向的前后相关序列作为系统的挑 战信息,以节省用户每次输入挑战信息的麻烦。但当用户的挑战序列与服务器产生偏差后, 需要重新同步。这种方法的主要缺陷是无法防止非法用户记录令牌生成的一组OTP后,在 任意时间都可以登录系统。
本发明涉及SHA-I摘要算法,Radius协议。
摘要算法是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变 换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空 间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯 一的确定输入值。摘要算法主要用于信息安全领域中加密算法,它把一些不同长度的信息 转化成杂乱的固定长度的编码,这些编码值叫做摘要值.也可以说,摘要算法就是找到一 种数据内容和数据存放地址之间的映射关系。SHA-I就是一种将任意长度的消息压缩到 ieobit的消息摘要的函数。
RADIUS Remote Authentication Dial In User Service,远程用户拨号认证系 统由RFC2865,RFC2866定义,是目前应用最广泛的AAA协议。RADIUS是一种C/S结构的协 议,它的客户端最初就是NAS (Net Access Server)服务器,现在任何运行RADIUS客户端软 件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、CHAP 或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于4Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩充厂家专有属性。
发明内容
(1)发明目的
本发明涉及一种生成和验证一次性口令的新方法。一次性口令主要用于安全登 录,本发明涉及的生成方法可在一个口令中加入时间和事件两个随机因素,提高一次性口 令的安全性,并降低服务器验证一次性口令时的运算开销。
(2)技术方案
为了达到上述目的,本发明的技术方案如下
用户通过令牌生成一次性口令,将生成的口令输入认证客户端,客户端将一次性 口令发送至认证服务器,服务器验证收到的口令,回传验证结果至认证客户端。用户、令 牌、认证客户端、认证服务器各部分之间的相互关系如附图1所示。本发明所述的一种基于 时间和事件的一次性口令生成和验证方法,依次按下述三个阶段进行,其详细步骤详述如 下
1.初始化阶段
系统管理员为用户生成共享密钥Key。管理员先将用户ID、共享密钥(key)、计数 器(Counter)初始值写入认证服务器的数据库中,然后将共享密钥和计数器初始值写入令 牌中并将令牌分发给对应的用户。为了提高系统的可用性,服务器将计数器的窗口设为为 n,即服务器认为从数据库记录的Counter到Counter+(n-1)都是合法的计数器值。对时间 的窗口设为m,即服务器认为在服务器本地时间time前后m分钟内的时间值都是合法的。
2. —次性口令生成阶段
步骤1 令牌根据共享密钥Key和当前计数器值Counter,并计算出Digest1 = h(Key Counter), h()为一摘要函数,| |为串接运算,即将Key和Counter的二进制值收尾 相接,Digest1为步骤1计算出的摘要值。计算器Counter值加1。
步骤2 将Digest1截短,作为OTP的后两位,记为0TP[4_5]。
步骤3 令牌从板载的时间芯片中获得当前时间,以分钟为单位取整,记为Time, 让后计算 Digest2 = h (Digest11 | Time)。
步骤4 将Digest2截短,作为OTP的前四位,记为OTP
0
步骤5 令牌将步骤4生成的OTP
和步骤2生成的0TP[4_5]拼接,构成完整 的六位OTP。认证客户端用户输入的将用户名和OTP安全的发送至服务器接受验证,并等待 认证结果。
3. —次性口令验证阶段
步骤6 服务器收到客户端传来的用户名和OTP后,根据用户名检索认证数据库得 到此用户计数器的值Counter。。
步骤7 服务器认根据计数器窗口值计算C0Imterci到Coimtei^ = Counter。+(n-1),分别计算对应的摘要值η个摘要值=Digestli = h (Key | Counteri),其中 i e
,Counteri = CounterQ+i,摘要算法与步骤1中的摘要算法相同。
步骤8 服务器将η个Digestli逐个截短,截短算法与步骤2的截短算法相同,得 到 OTP[4-5] i,其中 j e
O5
步骤9 服务器将η个OTP [4-5] i与收到的OTP的后两位比较,如果存在I e
,使0TPW-5L与收到OTP的后两位相等,则将Coimtei^+l写入数据库后进入步骤10, 否则向客户端返回认证失败。若有多个I满足上述条件,则请求用户再次输入OTP值。从 步骤1重新开始。
步骤10 设服务器时间为Times,服务器逐个计算Digest11与时间窗口 Tin^-m, Times-m+l, ...,Times, Times+1, . . . Times+m,共计 2m+l 个时间值的摘要值 Digest^ = h (Digest11 I Timej),其中 j e [_m, m], Timej = Times+k0
步骤11 服务器将2m+l个Digest2j逐个截短,截短算法与步骤4的截短算法相同, 得到 OTP
i,其中 j e [-m, m]。
步骤12 服务器将2m+1个0TPW-3]」与收到的OTP的前四位比较,如果存在」 e [-m, m],使0TP
」与收到OTP的前四位相等,则像客户端返回认证成功,否则向客户 端返回认证失败。客户端根据返回的结果提示用户。
(3)优点及功效
本发明涉及一种生成和验证一次性口令的新方法。
本发明涉及的生成方法可在一个口令中整合时间和事件因素,既能防止非法用户 抄录下一组一次性口令在任意时间使用,又能防止在时间窗口期内非法用户使用同一口令 登录,克服了单纯基于时间或事件的方法的缺点,提高一次性口令的安全性。
服务器为了提高系统的可用性,会对计数器和时间设置窗口,位于窗口内的值均 是合法值,设计数器和时间的窗口长度分别为M和N,总共有M*N个可能的OTP值,对应 2*M*N次摘要计算,计算2*M*N次摘要会给服务器带来巨大的运算开销。
本发明涉及的验证方法只需M+N次摘要运算,便可完成认证,将运算复杂度从 0(n2)降低到0(n),明显降低了服务器运算开销,降低了认证延迟,调高了服务器的吞吐量。
本发明申请书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

图1本发明所述整体结构图
图2本发明所述初始化流程流程框图
图3本发明所述生成一次性口令的流程框图
图4本发明所述验证一次性口令的流程框图
图5本发明一次性口令生成和验证的流程框图
图中符号说明如下
I I 串接运算,即将I I运算符的左右项首尾相接
Digestn 第η个摘要值
Countern 窗口期内的第η个计数器值
Timen:窗口期内的第η个时间值
OTP [n-m]_k 第k个一次性口令的第η到第m位
h ()杂凑运算符,如h (a)指求a的摘要值。
具体实施方式
由于本发明主要是阐述方法实现的思想,具体实现可根据具体的实施环境(网络 环境,硬件类型等),采用最合适的实现方法,下面在介绍本发明的技术方案的具体实施方 式时会采用一些具体的方法(如具体的杂凑函数,传送协议等),但实际的实现并不限于所 述的方法。
本发明所述的一种一次性口令的生成、验证方法,如图1所示包括五个部分用 户,令牌,认证客户端,认证服务器,认证数据库。在向用户分发令牌前先进入初始化阶段, 将初始信息写入令牌和认证数据库。之后用户通过令牌按照本发明所述的生成方法计算一 次性口令,并将用户名和一次性口令输入认证客户端,客户端通过Radius协议将用户名和 一次性口令打包发送至认证服务器,服务器根据用户名查询数据库,读取用户ID对应的计 数器值,按照本发明所述的验证方法验证收到的口令,将验证结果按照radius协议打包验 证结果,回传至认证客户端。下面将结合附图直观的说明基于时间和事件的一次性口令的 生成和验证过程。
下面将结合附图直观的说明如何生成并验证本发明所述的一次性口令,附图2为初 始化流程;附图3为令牌生成一次性口令的流程;附图4为服务器验证一次性口令的流程。
本发明一种基于时间和事件的一次性口令生成和验证方法,流程框图见图5所 示,它依次按下述三个阶段进行,其具体实施过程如下。
1.初始化阶段
系统管理员使用随机数发生器生成共享密钥Key。管理员先将用户ID、共享密钥 (key)、计数器(Counter)初始值写入认证数据库中,然后将共享密钥和计数器初始值写入 令牌中并将令牌分发给对应的用户。为了提高系统的可用性,服务器将计数器的窗口设为 为5,即服务器认为从数据库记录的Counter到Coimter+4,共5各值都是合法的计数器值。 对时间的窗口设为1,即服务器认为在服务器本地时间time前后1分钟内的时间值都是合 法的。
2. —次性口令生成阶段
步骤1 令牌根据共享密钥Key和当前计数器值Counter,并计算出Digest1 = h(Key Counter), h()选为SHA-1摘要函数,| |为串接运算,即将Key和Counter的二进制 值收尾相接,Digest1为步骤1计算出的摘要值。计算器Counter值加1。
步骤2 将Digest1截短,作为OTP的后两位。因步骤1的摘要算法为SHA-l,则 Digest1 为 160bit,取出第 0、20、40、60、80、100、120、140、160bit 供 8 个二进制数拼接成一 个Sbit的二进制数,转化为十六进制后,正好为两位,记为0TP[4-5]。
步骤3 令牌从板载的时间芯片中获得当前时间,以分钟为单位取整,记为Time, 让后计算Digest2 = h (Digest11 | Time)。同样选择SHA-I作为摘要算法。
步骤4 将Digest2截短,作为OTP的前四位。因步骤3的摘要算法为SHA-l,则 Digest2 为 160bit,取出第 0、10、20、30、· · ·、140、150、160bit 供 16 个二进制数拼接成一个 16bit的二进制数,转化为十六进制后,正好为四位,记为0TP

步骤5 将步骤4生成的OTP
和步骤2生成的0TP[4_5]拼接,构成完整的六 位OTP。用户将用户名和OTP输入认证客户端,客户端通过radius协议将用户名和OTP打 包发送至认证服务器接受验证,并等待认证结果。
3. —次性口令验证阶段
步骤6 服务器收到客户端传来的用户名和OTP后,根据用户名检索认证数据库得 到此用户计数器的值Counter。。
步骤7 服务器认根据计数器窗口值计算Counter。到Counter4 = Counter0+4,分 别计算窗口内的5个计数器值对应的摘要值5个摘要值=Digestli = h (Key | | Counteri),其 中i E
,Counteri = CounterQ+i,摘要算法与步骤1中的摘要算法相同,均为SHA-1。
步骤8 服务器将5个Digestli逐个截短,截短算法与步骤2的截短算法相同,得 到 OTP[4-5] i,其中 i e
O
步骤9 服务器将5个OTP [4-5] i与收到的OTP的后两位比较,如果存在I e [O, 4],使0TPW-5L与收到OTP的后两位相等,则将Coimteri+l写入数据库后进入步骤10,否 则向客户端返回认证失败。若有多个I满足上述条件,则请求用户再次输入OTP值。从步 骤1重新开始。
步骤10 设服务器时间为Times,服务器逐个计算Digest11与时间窗口 Times-I, Times, Times+1。共计 3 个时间值的摘要值 Diges、」=h(Digest1 !Time」),其中 j e [-1, 1],Timej = Times+k。本步骤同样选择SHA-I为摘要算法。
步骤11 服务器将3个Digest2j逐个截短,截短算法与步骤4的截短算法相同, 得到 OTP
i,其中 j e [-1,1] ο
步骤12 服务器将3个0TP
j与收到的OTP的前四位比较,如果存在」e [-1, 1],使0TP
」与收到OTP的前四位相等,则向客户端返回认证成功,否则向客户端返回认 证失败。客户端根据返回的结果提示用户。
权利要求
1. 一种基于时间和事件的一次性口令生成和验证方法,其特征在于它是依次按下述 三个阶段进行,其步骤如下1.初始化阶段系统管理员为用户生成共享密钥Key,管理员先将用户ID、共享密钥、计数器初始值写 入认证服务器的数据库中,然后将共享密钥和计数器初始值写入令牌中并将令牌分发给对 应的用户;为了提高系统的可用性,服务器将计数器的窗口设为为n,即服务器认为从数据 库记录的Counter到Counter+(n-1)都是合法的计数器值。对时间的窗口设为m,即服务器 认为在服务器本地时间time前后m分钟内的时间值都是合法的;
2.一次性口令生成阶段步骤1 令牌根据共享密钥Key和当前计数器值Counter,并计算出Digest1 = h(Key Counter), h()为一摘要函数,| |为串接运算,即将Key和Counter的二进制值收尾 相接,Digest1为步骤1计算出的摘要值。计算器Counter值加1 ; 步骤2 将Digest1截短,作为OTP的后两位,记为OTP [4-5];步骤3 令牌从板载的时间芯片中获得当前时间,以分钟为单位取整,记为Time,让后 计算 Digest2 = I^Digest11 !Time);步骤4 将Digest2截短,作为OTP的前四位,记为OTP
;步骤5:令牌将步骤4生成的OTP
和步骤2生成的OTP [4-5]拼接,构成完整的六 位OTP ;认证客户端用户输入的将用户名和OTP安全的发送至服务器接受验证,并等待认证结果;
3.一次性口令验证阶段步骤6 服务器收到客户端传来的用户名和OTP后,根据用户名检索认证数据库得到此 用户计数器的值Counter。;步骤7 服务器认根据计数器窗口值计算Counter。到C0Unteivi = Counter0+(n-1), 分别计算对应的摘要值η个摘要值Digestli = h (Key I Onmteri),其中i e [O, n-1], Counteri = CounterQ+i,摘要算法与步骤1中的摘要算法相同;步骤8 服务器将η个Digestli逐个截短,截短算法与步骤2的截短算法相同,得到 OTP[4-5] i,其中 i e [O, n-1]; 其中 i e [O, n-1];步骤9:服务器将η个0^[4-5\与收到的OTP的后两位比较,如果存在I e [O,n-1], 使0TPW-5L与收到OTP的后两位相等,则将Coimteri+l写入数据库后进入步骤10,否则 向客户端返回认证失败;若有多个I满足上述条件,则请求用户再次输入OTP值;从步骤1 重新开始;步骤10 设服务器时间为Times,服务器逐个计算Digest11与时间窗口 Tin^-m, Times-m+l, ...,Times, Times+1, . . . Times+m,共计 2m+l 个时间值的摘要值 Digest^ = h (Digest11 I Timej),其中 j e [_m, m], Timej = Times+k ;步骤11 服务器将2m+l个Digest”逐个截短,截短算法与步骤4的截短算法相同,得 到 OTP
i,其中 j e [-m,m]。步骤12:服务器将2m+l个0^
」与收到的OTP的前四位比较,如果存在」e [-m, m],使OTP
」与收到OTP的前四位相等,则像客户端返回认证成功,否则向客户端返回认证失败。客户端根据返回的结果提示用户。
全文摘要
一种生成和验证一次性口令的方法,该方法可在一个口令中整合时间和事件因素,提高一次性口令的安全性,并降低服务器验证一次性口令时的运算开销。首先,向令牌和认证数据库写入初始信息;其次,令牌生成一次性口令,先计算共享密钥和计数器的摘要值,将摘要值截短后为一次性口令的后两位。将此摘要值和时间再进行一次摘要,将后一次摘要值截短后为一次性口令的前两位;最后,服务器验证一次性口令,先逐个计算共享密钥和窗口内的计数器的摘要值,截短后与收到一次性口令的后两位比较,确定计算器的值,否则返回,认证失败,然后逐个计算计数器对应的摘要值与窗口期内时间的摘要值,截短后与收到一次性口令的前四位比较,向用户返回认证结果。
文档编号H04L9/08GK102045349SQ20101057221
公开日2011年5月4日 申请日期2010年12月3日 优先权日2010年12月3日
发明者修春娣, 刘建伟, 孙钰, 尚涛, 毛剑, 郑志明 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1