基于时间和事件的一次性密码的制作方法

文档序号:7808817阅读:279来源:国知局
基于时间和事件的一次性密码的制作方法
【专利摘要】一种根据值TEC来产生一次性密码(OTP)的系统和方法,所述值TEC可根据事件的发生以及经过的时间来改变。OTP可以在令牌上被计算并且被发送至证实者。证实者保存了用于从包括TEC的令牌中计算一个或多个预期OTP所需要的准确或估计参数。值TEC可以在令牌与证实者之间进行同步。
【专利说明】基于时间和事件的一次性密码
[0001]本申请是申请日为2007年3月27日、申请号为200780021496.9、发明名称为“基于时间和事件的一次性密码”的发明专利申请的分案申请。
[0002]相关申请
[0003]本申请涉及2004年10月15日提交的美国临时专利申请60/618,600以及2005年10月17日提交的PCT申请PCT/US05/37113。
发明领域
[0004]本发明的领域是认证(authenticat1n),尤其是使用一次性密码的认证。
[0005]发明背景
[0006]用户可以利用保存了只与认证服务共享的秘密的令牌来被认证。该令牌根据共享秘密以及其他值来为每一次认证产生一次性密码(“0ΤΡ”)。当在认证服务上接收到OTP时,该服务计算至少一个预期OTP值,并且将其与接收到的OTP值相比较。如果它们匹配,则用户通过认证。否则用户未通过认证。
[0007]根据共享秘密以及随时间函数改变的值,可以自动并周期性地产生0ΤΡ。例如,在每一分钟都可以根据共享秘密以及与天的日期和时刻相应的值来自动产生新的0ΤΡ。认证服务根据共享秘密以及某个日期/时间值范围来计算一系列预期0TP,其中所述日期/时间值范围意味着包含了令牌上使用的日期/时间值。这会考虑在令牌时钟与服务时钟之间的、导致令牌与服务失去同步的任何漂移。如果服务计算的OTP之一与接收到的OTP匹配,那么用户通过认证。由于用以计算OTP的其中一个参数会随着时间改变,从而导致其很难猜测,因此安全性得到增强。
[0008]OTP可以根据共享秘密以及事件特性来计算。例如,事件特性可以是用户每次按下令牌上的按钮时递增的计数器值。认证服务根据共享秘密以及该计数器值来计算OTP范围,其中该计数器值始于令牌上的最后一个已知计数器值。这考虑了那些导致未被发送至服务的OTP的按钮按压(button-pushes)。如果在服务上计算的OTP之一与接收到的OTP相匹配,则用户通过认证。
[0009]已知了很多种用于产生OTP的算法,包括在RFC4226中规定的HOTP算法。下列符号可以在描述HOTP算法的过程中使用。
[0010] 符号表示
C8字节计数器值,移动因予.这个计数器必须在HOTP
生成器(证明者)与HOTP验证器(证实者)之间被同步^
K证明者与证实者之间的共享秘密;每一个HOTP生成器都具有不同并農唯一的秘密IC Digit 藤TP值中的数字数量;系统参数。
[0011]HOTP算法是以递增的计数器值以及仅仅为令牌和验证服务所知的静态对称密钥为基础的。为了创建HOTP值,我们将会使用如RFC2104中定义的HMAC-SHA-1算法。由于HMAC-SHA-1计算的输出是160比特,因此,我们必须将这个值截断成某个可以易于被用户输入的值。
[0012]HOTP (K, C) = Truncate (HMAC-SHA-1 (K, C))
[0013]其中“Truncate”代表可以将HMAC-SHA-l值转换成HOTP值的函数。密钥(K)、计数器(C)以及数据值首先可以是被散列的高阶字节。由HOTP生成器产生的HOTP值可以被视为大端字节序(bigendian)。
[0014]产生OTP可以分以下四个步骤来进行。
[0015]步骤1:产生 HMAC-SHA-1 值
[0016]假设HS = HMAC-SHA-1 (K, C) //HS 是一个 20 字节字串
[0017]步骤2:产生一个4字节字串(动态截断)
[0018]假设Sbits = DT (HS)//DT,如下定义的DT返回31比特字串
[0019]步骤3:计算HOTP值
[0020]假设Snum = StToNum(Sbits)// 将 S 转换成 O…2~ {32}-1 中的数字
[0021]返回D = SnummodlO'Digit//D 是范围 O…10' {Digit} -1 中的数字
[0022]截断函数可以执行步骤2和步骤3,也就是动态截断,然后,该函数可以执行以模10~Digit为的减法模数计算。这种动态偏移截断技术可以从160比特(20字节)的HMAC-SHA-1结果中提取4字节的动态二进制码。
[0023]DT (String)//String = String[O]...String[19]
[0024]假设OffsetBits 是 String[19]的低阶 4 比特
[0025]Offset = StToNum(OffsetBits) //0< = 0ffSet< = 15
[0026]假设P = String [OffSet]...String [Of f Set+3]
[0027]返回P的最后32个比特。
[0028]屏蔽P的最高有效位,可以避免有符号和无符号的模数计算的冲突。不同的处理器可以采用不同方式来执行这些运算,此外,通过遮住有符号的比特,可以消除不确定性。
[0029]RFC4226需要实施的是,提取至少6个数字码并且可能地提取7和8个数字码。在不同的环境中有可能会违反这个需要,但是结果未必与该RFC相符合。取决于安全需要,为了提取更长的HOTP值结果,应当考虑Digit = 7或是更多。
[0030]在这里给出了一个将这种技术用于Digit = 6的实例,也就是从HMAC值中计算6数字的HOTP值。以下代码实例描述了在hmac—result是具有HMAC-SHA-1结果的字节阵列的情况下动态二进制代码的提取:
[0031]intoffset = hmac—result[19]&0xf ;
[0032]intbin—code = (hmac—result[offset]&0x7f)〈〈24
[0033]j (hmac—result [offset+l]&0xff)〈〈16
[0034]j (hmac—result [offset+2]&0xff)〈〈8
[0035]I (hmac—result [offset+3] &0xff);
[0036]SHA-1HMACBytes (例子)
[0037]
【权利要求】
1.一种用于产生一次性密码的方法,包括: 根据事件的发生以及经过的时间来增加值TEC ;以及 根据TEC来确定所述一次性密码。
2.根据权利要求1所述的方法,其中所述一次性密码进一步根据附加的值来确定。
3.根据权利要求2所述的方法,其中所述附加的值以共享秘密为基础。
4.根据权利要求2所述的方法,其中所述附加的值以共享秘密和公共信息为基础。
5.根据权利要求1所述的方法,其中所述事件是按压按钮。
6.根据权利要求1所述的方法,其中所述事件是选择对话框。
7.根据权利要求1所述的方法,其中所述事件是满足条件。
8.根据权利要求1所述的方法,其中,在T秒之后,使TEC增加。
9.根据权利要求1所述的方法,其中,在T秒之后,使TEC增加TI。
10.根据权利要求1所述的方法,其中,在发生事件E之后,使TEC增加EI。
11.根据权利要求1所述的方法,其中根据RF4226中规定的算法来计算所述一次性密码。
12.一种用于产生一次性密码的设备,包括被构造和设置成根据经过的时间以及事件的发生使TEC增加并且根据TEC来计算一次性密码。
13.根据权利要求12所述的设备,进一步包括与处理器相耦合的存储器和显示器。
14.根据权利要求13所述的设备,其中所述处理器进一步被构造和设置成使显示器显示所述一次性密码。
15.根据权利要求12所述的设备,其中,所述处理器被构造和设置成在所述处理器检测到经过T秒的时候将TEC增加TI。
16.根据权利要求12所述的设备,其中所述处理器被构造和设置成在所述处理器检测到事件E发生的时候将TEC增加EI。
17.根据权利要求12所述的设备,其中所述处理器被构造和设置成根据RFC4226中规定的算法来计算所述一次性密码。
18.一种存储了指令的介质,其中所述介质适于由处理器来执行,以便根据基于事件的出现和经过的时间来增加的值来计算一次性密码。
19.根据权利要求18所述的介质,其中所述一次性密码是根据附加的值来计算的。
【文档编号】H04L9/12GK104135369SQ201410333778
【公开日】2014年11月5日 申请日期:2007年3月27日 优先权日:2006年4月21日
【发明者】D.姆雷希 申请人:弗里塞恩公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1