使用口令码验证的前向安全密码技术的方法、系统和装置与流程

文档序号:16363576发布日期:2018-12-22 08:18阅读:206来源:国知局
使用口令码验证的前向安全密码技术的方法、系统和装置与流程

本申请涉及并且要求2015年12月30日提交的标题为“methodandsystemapparatususingforward-securecryptographyforpasscodeverification(使用口令码验证的前向安全密码技术的方法、系统和装置)”的美国临时申请no.62/273,138的优先权,其内容通过引用并入在此。

本发明涉及对于计算机和应用的远程访问和计算机网络上的远程交易进行保护。更具体地,本发明涉及用于使用具有两因素认证令牌的秘密口令码的方法、装置和系统。

背景技术

随着计算机系统和应用的远程访问越来越流行,在诸如互联网的公共网络上远程访问的交易的数量和种类急剧增加。这样的流行凸显出安全的需要;尤其是:如何确保远程访问应用的人是他们所声称的人,如何确保远程执行的交易由合法个人来启动,以及如何确保交易数据在应用服务器处被接收之前未被改变。

确保用户与基于计算机的应用进行的交互的一个解决方案是使用两因素强认证解决方案。

在两因素认证解决方案中,用户可以由向认证验证实体提供两个认证因素的证据的声称是合法用户的人被认证到例如基于计算机的应用。第一个因素(“用户具有的”因素)包括用户拥有或可以访问可能与特定用户相联系或关联的特定对象或令牌的证明。第二个因素可以包括用户知道可以与特定用户相联系或相关联的特定信息(“用户知道的”因素)的证据。该特定的信息可以包括可以假定为除了合法用户以外的没有其他人知道的秘密,例如秘密口令(password)或秘密pin(个人识别码)。该特定信息在本说明书的其余部分可以被称为口令码(passcode)。

为了确保使用口令码的认证解决方案的安全性,必须始终保证和维护口令码的机密性。

所需要的是一种安全的解决方案,其用于保护与两因素强认证解决方案一起使用的口令码的保密性和机密性。



技术实现要素:

本发明基于发明人的如下认识:用于认证目的的客户端和服务器设备可能被黑客入侵,使得存储在这些设备上的信息可能落入欺诈者手中。如果这些被盗信息与用户在向基于计算机的应用进行认证时可能使用的口令码相关,则存在这样的风险:某些欺诈方可能使用这些被盗信息来提取关于这些口令码的信息,例如从而检索口令码本身。由于在某些情况下,用户可能在多个平台和应用中使用相同或相似的口令码,因此恶意方发现这样的口令码可能导致的损害可能远远超出基于单一计算机的应用。例如,实际上可能难以排除网上银行应用的用户将选择用于认证到该网上银行应用的口令码,该口令码与他们的银行卡中的一张卡的pin相同或非常相似。

发明人的见解是,如果客户端设备和服务器设备都不会永久存储可能允许攻击者检索口令码的值或约束口令码可能值的范围的任何信息,则可以提高基于口令码使用的认证解决方案的总体安全性。例如,在本发明的一些实施例中,客户端设备和服务器设备都不会永久存储口令码值或从口令码值以可逆方式计算的数据要素。在本描述中,客户端设备也可以被称为客户端、认证客户端、认证令牌或强认证令牌。

根据本发明的强认证令牌的功能:

在一些实施例中,强认证令牌可以适于通过将口令码验证器数据要素的值与动态变量的值和秘密密码密钥的值进行密码地组合,并且使用利用秘密密码密钥参数化的密码算法来生成动态凭证,诸如一次性口令(otp)或电子签名。

在一些实施例中,强认证令牌可以适于通过提示用户提供口令码并且通过将用户提供的口令码值与口令码隐蔽数据要素的值进行组合来计算口令码验证器数据要素的值。在一些实施例中,口令码隐蔽数据要素可以例如以某种永久形式由认证令牌来存储或由认证令牌可访问的非易失性存储器来存储。在一些实施例中,可以通过使用诸如密码单向函数的函数,其例如可以包括密码散列函数,将由用户提供的口令码值与所存储的口令码隐蔽数据要素的值进行组合。在一些实施例中,口令码隐蔽数据要素可以由强认证令牌生成一次,然后可以由强认证令牌存储以供将来使用。在一些实施例中,强认证令牌可以以不可预测的方式生成口令码隐蔽数据要素。在一些实施例中,强认证令牌可以以与口令码值无关的方式生成口令码隐蔽数据要素。例如,在一些实施例中,强认证令牌可以使用随机数生成器或伪随机数生成器来生成口令码隐蔽数据要素。在一些实施例中,密码隐藏数据要素可以包括由随机数生成器或伪随机数生成器生成的随机数。在一些实施例中,强认证令牌可以适于当强认证令牌已经使用口令码值来计算口令码验证器数据要素的值时,从其存储器中擦除用户提供的口令码值的任何(临时)副本。而且,在一些实施例中,强认证令牌可以适于当强认证令牌已经使用计算出的口令码验证器数据要素来生成动态认证凭证时,从其存储器中擦除计算出的口令码验证器数据要素的任何(临时)副本。

在一些实施例中,动态变量可以是时间值的函数(该时间值可以例如由强认证令牌的时钟来提供,诸如软件令牌可以在其上运行的个人计算设备)。在一些实施例中,动态变量可以是事件相关变量的值的函数。在本说明书中,术语“事件相关变量”可以指的是当发生特定事件时使用更新算法自动更新的变量的值。在一些实施例中,强认证令牌可以在发生特定事件时根据事件相关变量的当前值来计算事件相关变量的新值,并且可以通过计算的新值来替换当前值。在一些实施例中,特定事件例如可以包括强认证令牌使用事件相关的变量来生成otp或电子签名。在一些实施例中,事件相关变量可以包括计时器,并且更新算法可以包括计数器的单调递增(或递减)。在一些实施例中,更新算法可以包括例如单向散列算法,并且可以利用将单向散列算法应用于事件相关变量的旧值所获得的新值来更新事件相关的变量。在一些实施例中,事件相关变量可以包括秘密密码密钥,或者可以从事件相关变量导出在生成动态凭证中所使用的秘密密码密钥。例如,在一些实施例中,每次秘密密码密钥被用于生成otp或电子签名,可以利用作为秘密密码密钥的先前值的函数的新值来更新秘密密码密钥的值。在一些实施例中,事件相关变量可以包括状态变量,并且秘密秘密密钥的值可以作为该状态变量的函数被计算,该状态变量可以在发生特定事件时被更新为该状态变量的当前值的函数。在一些实施例中,动态变量可以基于例如由服务器生成并且例如提供给强认证令牌的质询(例如,由用户使用包括强认证令牌的电子设备的用户输入接口来输入质询)。在一些实施例中,动态变量可以基于交易数据,该交易数据可以被提供给强认证令牌(例如,由用户使用强认证令牌的用户输入接口来输入该交易数据)。在一个实施例中,动态变量可以包括上述类型的动态变量的任何组合。

口令码验证器数据要素的值与动态变量的值和秘密密码密钥的值的密码组合的结果通常可以称为动态凭证或动态认证凭证。在动态变量是基于交易数据的情况下,动态变量的值与口令码验证器数据要素的值和秘密密码密钥的密码组合的结果可以称为电子签名。在动态变量是基于质询的情况下,动态变量的值与口令码验证器数据要素的值和秘密密码密钥的密码组合的结果可以称为响应。在动态变量是基于由强认证令牌内部生成和/或维护的数据的情况下,例如可能是利用时间值或事件相关变量的值的情况,则动态变量的值与口令码验证器数据要素的值和秘密密码密钥的值的密码组合的结果可以被称为一次性口令(otp)。

在一些实施例中,用于密码地组合口令码验证器数据要素与动态变量的值和秘密密码密钥的值的密码算法可以包括通过秘密密码密钥进行参数化的对称密码算法,并且强认证令牌可以与例如认证服务器共享该秘密密码密钥。例如在一些实施例中,对称密码算法可以包括诸如aes(高级加密标准)的对称加密或解密算法,其可以对动态变量的值进行操作,并且可以利用私密密码密钥进行参数化。在一些实施例中,对称密码算法可以包括诸如hmac(基于哈希的消息认证码)的密钥哈希算法,其可以对动态变量的值进行操作并且可以用私密密码密钥进行参数化。

软件和硬件令牌:

在一些实施例中,强认证令牌可以采用在属于用户的个人通用电子计算设备上安装和运行的软件应用的形式,例如个人计算机(pc)、平板计算机或智能电话,由此软件应用可以适于为认证软件应用的合法用户提供认证服务。

在一些实施例中,强认证令牌可以例如包括专用电子硬件设备,其主要或唯一的功能是为设备的合法用户提供认证服务。

这些认证服务可以包括生成用于保护用户与基于计算机的应用之间的交互的动态凭证,诸如将用户认证到基于远程计算机的应用和/或保护用户提交给基于远程计算机的应用的交易,如在本说明中的其他地方更详细所描述。

一些实施例的总体原理:

在一些实施例中,根据本发明的认证协议可以使用从动态状态生成的密码密钥序列,其中该状态被更新使得可以从旧状态找到新状态,但反之不成立。状态的当前值可以由认证客户端(例如强认证令牌)和认证服务器以同步的方式维护。例如,在一些实施例中,可以使用前向安全密钥更新算法来构建密钥和/或状态的序列。在一些实施例中,认证令牌可以密码地组合可以由认证令牌的用户提供给认证令牌的口令码与这样的密码密钥以生成认证凭证。在一些实施例中,用于生成认证凭证的密码密钥可以由强认证令牌从这种状态的当前值导出,这种状态的当前值可以由强认证令牌在例如每次强认证令牌已生成认证凭证之后进行更新。

在一些实施例中,口令码不直接使用,而是仅用于创建“口令码验证器”,其由口令码和口令码隐蔽数据要素形成。口令码隐蔽数据要素可以在初始化阶段期间由认证令牌获得,例如生成,并且可以永久地存储在认证令牌上,并且仅在认证令牌上,以供将来使用,例如用于从口令码值生成口令码验证器值。口令码验证器可以使用单向函数来生成,使得口令码值无法通过将逆函数应用到得到的口令码验证器来计算。口令码隐蔽数据要素可以具有高熵,并且口令码验证器可以被生成为使得其也具有高熵,使得如果不知道口令码隐蔽数据要素而通过强力攻击从口令码验证器来检索实际口令码值是实际上不可行的。例如,认证令牌可以通过将散列函数,优选地诸如sha-256的密码安全散列函数,应用到口令码值和密码隐蔽数据要素的组合,例如级联,来计算口令码验证器。口令码隐蔽数据要素可以已经由真或伪随机数生成器生成。在一些实施例中,密码隐蔽号码可以基于由认证令牌生成的真或伪随机数据来生成。在一些实施例中,密码隐蔽号码可以基于由认证服务器生成的真或伪随机数据来生成。在一些实施例中,密码隐蔽号码可以基于由认证令牌生成的真随机数据或伪随机数据与由认证服务器生成的真随机数据或伪随机数据的组合来生成。实际的口令码可以在每次已经使用并且紧接使用之后从认证令牌中删除。在初始阶段,口令码验证器可能已经以安全的方式被传送到验证或认证服务器,并且可以永久地存储在验证或认证服务器上,并且仅存储在验证或认证令牌上,以供未来使用,例如用于验证由认证令牌生成的动态认证凭证。

在一些实施例中,每个生成的动态认证凭证可以是针对每个生成的凭证进行更新的密钥下的hmac。hmac的输入之一可以是口令码验证器。在凭证被验证之后,旧密钥可能被丢弃并且状态可能被更新。通过这种方式,验证服务器不能学习口令码(它只有口令码验证器的副本,而不是口令码数据要素,因此无法从对于保存在服务器上的口令码验证器的副本施加暴力攻击而检索到实际的口令码值)。

认证令牌从不存储口令码,因此从认证令牌提取信息不会允许口令码被发现(尽管口令码隐蔽数据要素存储在认证令牌中,但在不知道口令码验证器的情况下它无法用于通过暴力攻击来检索口令码的值)。

此外,给定旧凭证和认证令牌的当前状态,因为测试候选口令码所需的密钥已被服务器和客户端销毁,所以无法发现口令码。

本发明的协议、系统和方法的其他方面可以涉及如何保持服务器和客户端同步,这可以通过遵循关于何时更新状态的特定规则。

这些方面的更多细节在本说明书的其他地方描述。

在一些实施例中,本说明书中描述的技术还可以应用于任何敏感的用户认证相关数据,这些敏感的用户认证相关数据应该保持秘密并且可能容易受到暴力攻击,例如因为它们可能具有较低的熵。例如,这些技术也可以应用于pin、口令和生物测定模板,这些都可以是口令码的示例。

特定实施例:

在以下段落中,将描述本发明的一组特定实施例。

术语和定义:

-prng(length):来自可以包括真随机数发生器或伪随机数发生器的密码安全随机数发生器的“长度”位的位串。

-iencode(i,length):表示一个位串,它是将数字'i'编码为大端整数并将左端零填充为'长度'位的结果。

-<>:表示长度为零的字节串。

-{a,b,c,...}:表示以给定顺序级联位串'a','b','c',...的结果。

-s:除非另有说明,否则是指认证服务器,还可以指示认证服务器执行的动作或步骤。

-c:除非另外指明,否则指认证客户端,例如认证令牌或认证客户端应用,并且还可以指示由认证客户端执行的动作或步骤。

-表达式“sender->receiver:message”意味着位串“消息”从实体“发送者”发送到实体“接收者”。这可能进一步意味着在将“消息”从“发送者”转移到“接收者”之前,实体“发送者”生成位串“消息”。

密码原语:

加密原语:

表达式“ciphertext=enc(k,iv,data)”表示利用(如果适用于所选择的加密算法)初始化向量“iv”,使用利用密码加密密钥“k”参数化的密码加密算法,对于位串“data”进行加密以获得结果“ciphertext”。在一些实施例中,加密算法可以包括对称加密算法。在一些实施例中,对称加密算法可以包括处于某种加密模式的诸如aes(高级加密标准)或3des(三重数据加密标准)的块密文。例如,在一些实施例中,aes算法可以使用在ctr模式(计数器模式,另参阅:位于网址en.wikipedia.org/wiki/block_cipher_mode_of_operation#ctr的网站,其通过引用并入本文),并且密钥k可以具有128位的大小,并且可以从初始化向量来计算ctr模式的计数器的起始值。在一些实施例中,ctr模式的计数器的起始值可以被计算为在多个位置上左移的初始化矢量,例如iv<<64。在一些实施例中,可以从计数器“ctr”和随机数来计算初始化向量。例如,初始化向量可以如下被计算为计数器“ctr”的函数:iv(ctr)={iencode(ctr,6×8),prng(2×8)}。

凭证生成原语:

在一些实施例中,可以使用密钥“k”和输入位串“data”,利用使用该密钥“k”和位串“data”作为输入的密码函数来计算凭证。例如,在一些实施例中,可以使用密钥“k”和位串“data”作为输入,将凭证计算为消息认证码(mac)。在一些实施例中,用于计算凭证的密码函数可以包括在密钥“k”下的位串“data”的加密(或解密)。在一些实施例中,用于计算凭证的密码函数可以包括单向函数。在一些实施例中,单向函数可以包括密码散列函数。在一些实施例中,单向函数可以包括带密钥散列函数。例如,在一些实施例中,凭证可以被计算为mac=hmac(k,data),由此hmac表示数据在密钥k下的基于散列的消息认证码,例如由rfc2104指定的hmac,或由rfc4231指定的sha-256hmac。在一些实施例中,密钥k可以具有128位的大小。在一些实施例中,产生的密文、散列或mac可被截断。在一些实施例中,如果data不是8位的倍数,则可以将其向左零填充到下一个字节边界。

密钥更新原语:

表达式“statei+1,keyi+1=update(statei)”表示通过以下方式来更新密钥和状态的值:使用一些密码密钥和状态更新算法来从状态的旧状态“statei”开始计算密钥的新值“keyi+1”和状态的新值“statei+1”,并将键和状态的旧值替换为新计算的值(如果适用)。在一些实施例中,状态的新值可以使用以状态的当前值作为输入的第一不可逆函数从状态的当前值来计算。在一些实施例中,密码密钥的新值可以使用以状态的当前值作为输入的第二不可逆函数从状态的当前值来计算。在一些实施例中,用于从状态的当前值计算状态和密码密钥的新值的不可逆函数可以包括例如安全密码散列函数。在一些实施例中,密码密钥和状态更新算法可以包括密钥更新算法,例如mihirbellare和bennetyee在springerlncs2612的“forward-securityinprivate-keycryptography(私钥密码技术中的前向安全性)”中公开的密钥更新算法。在一些实施例中,密码密钥和状态更新算法可被定义为:

-keyi+1=enc(statei,iv_1,data_1),其中在具体实施例中,data_1可以由16字节0x00...0x00组成并且iv_1可以具有值0

-statei+1=enc(statei,iv_2,data_2),其中在具体实施例中,data_2可以由16字节0x00...0x00组成并且iv_2可以具有值263。

常量:

在一些实施例中,可以用于多个常量。例如,在一些实施例中,可以使用以下常量:version,msg_challenge、msg_response、msg_activation_challenge、msg_activation_response、其中后四个常数可以具有相互不同的值。在特定实施例中,这些常量可具有以下值:

version:=iencode(0,8)

msg_challenge:=iencode(1,4)

msg_response:=iencode(2,4)

msg_activation_challenge:=iencode(3,4)

msg_activation_response:=iencode(4,4)

参数和初始配置:

所有参数都用于特定的认证令牌-服务器组合。由服务器针对特定认证令牌检索的数据可以对应于正在或已经登录到的特定用户账户。由服务器检索的数据可以对应于特定的认证令牌或启动的认证应用的特定实例。

假设和说明:

在一些实施例中,可以假设攻击者可以控制用于在认证令牌与服务器之间传递消息的网络,并且可以能够安装完整的mitm(中间人)攻击。在一些实施例中,还可以假定认证令牌或应用是安全的。在一些实施例中,还可以假设服务器是安全的。

在一些实施例中,认证令牌可以使用安全硬件来实现,并且认证令牌可以能够mac和/或解密任意消息但是可以不释放密钥。在这样的实施例中,如果随机数包括在消息中可能是有利的。只有临时访问认证令牌的攻击者无法预测任何未来交易的随机数。

客户端的预激活:

在一些实施例中,以下数据要素可以如上所述由服务器生成,并且在客户端的预激活期间可以从服务器传送到客户端:质询mac密钥,kcmac:=ksmac,加密密钥kcenc:=ksenc,响应状态,scres:=ssres,激活mac密钥,kcact:=ksact。

激活子协议:

概要:

在一些实施例中,认证令牌或应用的初始状态可以如上所示。在执行交易签名或动态凭证生成之前,可能需要激活认证令牌或应用。在一些实施例中,激活可以只执行一次,但它可能与口令码更改密切相关。激活的最终结果可以是一方面服务器可以具有口令码验证器(pv)的副本,另一方面客户端可以已经存储口令码隐蔽数据要素(pr)的相应值。可以执行此步骤,以便服务器不知道用户的口令码,但可以验证它是否被正确输入以生成可能已由服务器接收的凭证。可以包括口令码验证器的值的来自客户端的响应消息可以在前向安全密钥下被加密,使得如果某人窃取了认证令牌,其可以例如包括智能手机,并且已经观察到由该认证令牌生成的凭证认证令牌,他们无法猜测用户的口令码。

细节:

在一些实施例中,用户可以联系服务器,并且可以发起激活过程。激活过程或激活协议可以包括以下步骤:

步骤:在一些实施例中,激活消息可以由服务器生成并且从服务器传送到客户端如下:

s->c:{version,serviceid,userid,iv,

enc(ksenc,iv,{transaction,type,nonce,activation_mac})}

其中:

version=version

serviceid=idss

userid=idsu

iv=iv(cs)

transaction=iencode(0,212)

type=msg_activation_challenge

nonce=prng(128)

activation_mac=hmac(ksmac,{version,type,transaction,nonce,iv});在一些实施例中,activation_mac可以截断到64位。

步骤2:可以在服务器上更新密钥ktact和状态ssres

s:ssres,ktact:=update(ssres)

步骤3:客户端可以接收并解码该激活消息。

步骤4:客户端可以验证idcu是否等于idsu。如果idcu!=idsu,则客户端可以显示错误消息并退出。

步骤5:客户端可以解密激活消息的加密部分并且可以验证activation_mac;如果失败,客户端可以退出。

步骤6:客户端可以从初始向量iv提取计数器,并且如果(从iv中提取的)该计数器<=计数器的最后已知值或>计数器的最后已知值+100,则客户端可以中止。

步骤7:客户端可以获得口令码隐蔽数据要素。例如,如果客户端尚未具有口令码隐蔽数据要素的值,则它可以将口令码隐蔽数据要素生成为随机数。例如,在特定实施例中:c:ifpr==<>thenpr:=prng(128)

步骤8:客户端可以提示用户提供口令码的值并且可以捕获用户提供的口令码。在一些实施例中,可以提示用户提供口令码两次用于确认,并且客户端可以适于验证由用户提供的口令码的两个值是一致的。

步骤9:状态和密钥可以在客户端更新(这可以取决于从iv提取的计数器的值与计数器的最后已知值之间的差值来重复):

c:scres,k:=update(scres)

步骤10:响应生成:

c->s:enc(k,0,{v,hmac(kcact,{version,type,transaction,v})

其中:

version=version

type=msg_activation_response

transaction=iencode(0,212)

v=hmac(pr,passcode)(截断到30位)

hmac(kcact,msg)被截断到15位

步骤11:s:服务器可以利用ktact解密响应,并且可以利用kcact验证它,并且可以设置pv:=v

认证子协议:

概要:

可以执行该认证子协议来允许用户认证他们自己或授权特定交易。该结果例如可以是,服务器在成功验证由用户提供的认证凭证后得出结论:用户已经看到正确的交易细节并已输入正确的口令码。服务器不应该知道口令码本身。即使在窃取电话之后(由于mac密钥在使用后被丢弃),记录所有通信的窃听者也不应该能够获得口令码。

细节:

步骤1:在一些实施例中,用户可以联系服务器并且可以发起认证或交易。

步骤2:客户端可以获取动态变量的值。在一些实施例中,动态变量的值可以是基于客户端维护的计数器的。在一些实施例中,客户端可以将其计数器值与由服务器维护的对应计数器值进行同步。在一些实施例中,动态变量的值可以基于客户端可以例如在来自服务器的消息中接收的外部数据要素。外部数据要素例如可以包括质询和/或随机数,该质询和/或随机数可以由服务器生成。外部数据要素例如可以还包括表示要由用户授权的交易的交易数据。在一些实施例中,服务器可以例如通过添加消息认证码(mac)来认证消息。在一些实施例中,服务器还可以加密服务器消息。例如,在特定实施例中,服务器可以生成并向客户端发送质询消息如下:

s->c:{version,serviceid,userid,iv,

enc(ksenc,iv,{transaction,type,nonce,challenge_mac})}

其中:

version=version

serviceid=idss

userid=idsu

iv=iv(cs)

transaction=可以包括待授权的交易的编码细节;在一些情况下,“transaction”可以利用可能对用户没有意义的(随机)质询进行编码,或者它可以利用预定值进行编码,例如如果认证子协议是用于认证用户而不是而不是授权特定的交易。

type=msg_challenge

nonce=prng(128)

challenge_mac=hmac(ksmac,{version,type,transaction,nonce,iv}),被截断至64位

步骤3:可以在服务器上更新密钥k和状态ssres:

s:ssres,k:=update(ssres)

步骤4:服务器可以生成预期响应(在一些实施例中可以截断为30位),其可以用作要与服务器随后可以从客户端接收的认证凭证进行比较的凭证参考值:

s:e=hmac(k,{version,type,transaction,nonce,iv,pv})

其中:

version=version

type=msg_response

transaction、nonce、iv取自质询消息

步骤5:客户端可以解码接收到的质询消息

步骤6:c:如果idcu!=idsu则显示错误消息并退出

步骤7:客户端可以解密所接收的质询消息并验证challenge_mac来认证消息的来源。如果验证失败,则客户端可以中止。

步骤8:如果计数器(从iv提取)<=最后计数器,或>最后计数器+100,则客户端可以中止。

步骤9a:客户可以向用户呈现在transaction中编码的交易数据并且提示用户授权所呈现的交易数据。如果transaction不包含有意义的数据(例如硬编码值或散列值),则可以跳过此步骤。如果用户未授权所呈现的交易数据,则客户端可以中止。

步骤9b:客户端可以提示用户提供口令码。如果用户未提供口令码,则客户端可能会中止。在一些实施例中,用户可以通过提供口令码隐含地指示授权(例如所呈现的交易数据的授权)。

步骤10:可以在客户端上更新密钥k和状态scres(为了使客户端的状态与服务器的状态同步,这可以基于计数器重复多次):

c:scres,k:=update(scres);

步骤11:客户端可以响应于从服务器接收到质询消息而生成认证凭证,并且客户端可以将所生成的认证凭证返回给服务器如下:

c->s:hmac(k,{version,type,transaction,nonce,iv,v})

其中:

version=version(可以向左零填充至8位)

type=msg_response

transaction、nonce、iv取自质询消息

v=hmac(pr,passcode)

在一些实施例中,所生成的凭证可被截断为30位。

步骤12:服务器可以验证认证凭证是否与预期响应e相匹配。在一些实施例中,服务器可以生成指示验证凭证的验证是否成功的信号。

可能的变型:

在一些实施例中,为了完整性,用户id和/或服务id可以包括在mac中。

在一些实施例中,消息类型可以被移动到消息的开始,以便它可以用来决定应该如何解码消息的剩余部分。

在本发明的一些实施例中,口令码可以包括由用户提供的秘密信息,诸如例如pin或口令。在其他实施例中,口令码可以包括可以与用户相关或者可以是用户特定的并且可以具有敏感性的其他信息并且应该保持机密,诸如,例如一些种类的生物测定信息。

附图说明

从下面尤其是如附图中所示的本发明的实施例的描述,本发明的以上以及其他特定和优点将是清楚的。

图1示意性示出根据本发明的一方面的示例装置。

图2示意性示出根据本发明的一方面的示例系统。

图3示意性示出根据本发明的一方面的示例方法。

图4示意性示出根据本发明的一方面的用于验证动态认证凭证的示例方法。

具体实施方式

下面讨论本发明的一些实施方式。虽然讨论具体的实施方式,应当理解的是这只是出于说明的目的。本领域技术人员将认识到在不背离本领域的精神和范围的情况下可以使用的其他组件和配置。

图1示意性示出根据本发明的一方面的发明的示例装置或令牌(100)。

在一些实施例中,装置或令牌(100)可以包括强认证令牌。在一些实施例中,装置或令牌可以例如包括专用电子硬件设备,其主要或唯一的功能是为设备的合法用户提供认证服务。在一些实施例中,设备或令牌(100)可以包括个人通用计算设备,诸如pc(个人计算机)、平板电脑、智能手机或智能手表。在一些实施例中,装置或令牌(100)可以包括本说明书中其它地方更详细描述的任何强认证令牌或认证客户端。在一些实施例中,装置或令牌(100)可以适于执行本说明书中其他地方更详细描述的任何强认证令牌或认证客户端执行的任何方法步骤或动作。

装置或令牌(100)可以包括人类用户输入接口(120)、人类用户输出接口(130)、数据输入接口(140)、数据处理器(150)、存储组件(160)以及用于提供动态变量的值的组件(170)。

处理器(150)和存储器(160):

该令牌可以包括数字数据处理组件(150),该数字数据处理组件可以适于执行一组数据处理指令,例如以实现属于更详细描述的任何强认证令牌或认证客户端的一个或多个功能本说明中的其他地方。在一些实施例中,数据处理组件(150)可以包括例如一个或多个微处理器、微控制器、数字信号处理器(dsp)芯片、现场可编程门阵列(fpga)、专用集成电路(asic)等。

令牌可以包括存储组件(160)。存储组件(160)可以连接到数字数据处理组件(150)。在一些实施例中,存储组件可以包括程序存储组件,该程序存储组件适于存储将由数据处理组件执行的软件或者固件。在一些实施例中,令牌支持的功能可以由存储在其存储器中的软件或固件来定义。

在一些实施例中,存储组件(160)可以包括适于永久或暂时存储数据的数据存储组件。在一些实施例中,数据存储组件可以适于安全地存储秘密数据,例如密码密钥或密码隐蔽(passcode-blinding)数据要素。在一些实施例中,数据存储组件可以适于存储多个令牌实例的数据。

存储组件例如可以包括ram(随机存取存储器)、rom(只读存储器)、eprom(可擦除可编程只读存储器)存储器、一次性可编程存储器、闪速存储器、固态存储器、硬盘等。

令牌还可以包括随机或伪随机数字生成器,令牌可以使用该随机或伪随机数字生成器来例如生成口令码隐蔽数据要素。

用户界面(120、130):

在一些实施例中,强认证令牌可以包括与用户进行交互从而例如与用户交换数据、信息和/或命令的用户界面(120、130)。用户界面(120,130)可以连接到数字数据处理组件(150)。

在一些实施例中,强认证令牌的用户界面可以包括输出用户界面(130),用于呈现信息和/或数据(诸如用户的指令或消息,要由用户批准的交易数据,强认证令牌)给强认证令牌的用户。在一些实施例中,输出用户界面可以包括例如显示器(130)或音频输出接口。在一些实施例中,强认证令牌的用户界面可以包括用于接收来自用户的输入的输入用户界面(120),诸如输入数据(如质询或交易数据)或指令(如确认、授权或取消)或口令码。在一些实施例中,输入用户界面可以包括例如键盘(120)。在一些实施例中,强认证令牌的用户界面可以包括触摸屏幕,该触摸屏幕可以适于提供用户输出接口和用户输入接口两者的功能。

数据输入接口(140):

在一些实施例中,强认证令牌可以包括数字数据输入接口。数据输入接口(140)可以连接到数字数据处理组件(150)。在一些实施例中,强认证令牌的数字数据输入接口可以适于接收数字数据消息。在一些实施例中,数字数据输入接口可以例如包括网络连接。在一些实施例中,数字数据输入接口可以例如包括本地有线数据连接,诸如通用串行总线(usb)连接。在一些实施例中,数字数据输入接口可以包括本地无线数据接口,诸如例如蓝牙或wi-fi接口。在一些实施例中,数字数据输入接口可以包括移动数据通信接口。在一些实施例中,强认证令牌可以例如包括智能手机。在一些实施例中,数据输入接口可以包括光学图像获取组件(140)。在一些实施例中,光学图像获取组件可以包括相机。在一些实施例中,强认证令牌可以适于利用光学图像获取组件来获取可以利用数字数据消息进行编码的图像。在一些实施例中,图像可以包括二维条形码。在一些实施例中,图像的格式可以在标准中进行定义。例如,在一些实施例中,光学图像可以是qr码(快速反应码)。

在其他实施例中,数字数据输入接口可以包括适于捕获声学信号的声学接口,其中的声学信号可以利用消息或命令进行编码用于令牌。在一些实施例中,声学接口可以包括话筒。在一些实施例中,声学接口可以包括将模拟电子信号转换为数字信号的模数转换器,其中数字信号可以进一步由例如上述数字数据处理组件进行处理。

在一些实施例中,装置或令牌(100)可以适于使用数据输入接口(140)来接收在本说明书其他地方更详细地描述的认证消息中的任何认证消息,该认证消息可以已经由认证服务器生成并被发送到装置或令牌,例如以二维条形码的形式,例如,该二维条形码可以由本说明书其他地方更详细解释的访问设备来显示。

凭证生成:

令牌可以适于生成如本说明书中其他地方更详细解释的动态凭证。在一些实施例中,数据处理组件(150)可以适于执行密码计算从而生成动态凭证。在一些实施例中,令牌可以适于使用密码密钥来生成动态凭证,其中密码密钥可以是永久和/或暂时存储在存储组件(160)中或者是令牌可以从永久和/或暂时存储在存储组件(160)中的数据进行获取的。在一些实施例中,令牌可以适于使用作为存储组件(160)中存储的令牌实例的一部分的数据来生成动态凭证。在一些实施例中,令牌可以适于使用对称密码算法来生成动态凭证。在一些实施例中,用于生成动态凭证的该密码算法可以利用一个或多个对称秘密密码凭证生成密钥来参数化。在一些实施例中,凭证生成密钥可以与例如凭证验证服务器或认证服务器的服务器共享。

在一些实施例中,令牌可以适于使用动态变量来生成动态凭证,该动态变量可以包括由令牌提供的内部值。例如,在一些实施例中,令牌可以包括时钟(170),并且令牌可以使用由该时钟提供的时间值作为内部值。在一些实施例中,令牌可以维护计数器,并且令牌可以适于如在内部值中一样使用该计数器的值来生成该实例的动态凭证,并且每次令牌使用该计数器的值来生成动态凭证时更新该计数器的值(例如,通过递增或递减)。

在一些实施例中,令牌可以适于使用动态变量来生成动态凭证,其中动态变量可以包括提供给令牌的外部值。在一些实施例中,这样的外部值可以包括由服务器生成的质询或随机数(nonce)或者待签名的交易数据。在一些实施例中,外部值可以由用户通过使用令牌的用户输入接口手动地提供给令牌。例如,令牌可以捕获用户可以在令牌中包括的键盘上作为字符串输入的交易数据或质询。在一些实施例中,外部值被包括在由令牌利用其数据输入接口接收到的消息或命令中来提供。

在一些实施例中,令牌可以适于向用户呈现所生成的动态凭证。例如,在一些实施例中,令牌可以将所生成的动态凭证作为可读字符串显示在它的显示器上。在一些实施例中,字符可以只包括十进制字符。在其他实施例中,字符可以包括数字字母字符。

安全专用硬件令牌:

在一些实施例中,令牌(100)可以是专用硬件设备。在一些实施例中,令牌可以专门使用在保护用户访问应用(其可以是基于计算机的应用或记自动应用)或者保护用户与这样的应用进行交互的方法中。在一些实施例中,认证设备的主要目的是使用在保护用户访问应用或者保护用户与这样的应用进行交互的方法中。在一些实施例中,为了确保认证设备作为安全设备来使用的专用性,该认证设备可以适于无法改变其固件。在一些实施例中,为了确保认证设备作为安全设备来使用的专用性,只有通过被设计为保证只有经授权控制的可信方能够更新或改变认证设备的固件的安全固件更新协议,才可能进行其固件的任何改变或者更新。这使得控制的可信方能够确保没有发生如下的固件更新的发生,该固件更新将会取消或妥协认证设备在保护用户访问应用或者保护用户与这样的应用进行交互的方法中使用的专用性。用户能够安装未经控制可信方授权的额外软件的设备不能被视为专用设备。主要目的在于提供远程通信设施的设备不能被认为是专用于使用在保护用户访问应用并与其交互的方法中的设备。通用的pc、膝上型计算机、平板计算机和智能手机不能视为专用设备。

在一些实施例中,令牌(100)可以是安全硬件设备。在一些实施例中,安全硬件设备适于确保检测和/或抵制对篡改安全硬件设备的企图。在一些实施例中,安全硬件设备的外壳适于抵抗打开外壳和/或增加用户将注意到通过外壳变形来打开外壳的可能性(篡改证据)。在一些实施例中,一起构成壳体的部件可以被焊接或胶合在一起,以便尝试拆卸这些组件通常会导致壳体的明显变形。在一些实施例中,安全硬件设备包括检测外壳打开的开关。在一些实施例中,安全硬件设备适于在检测到篡改尝试时采取适当的动作。在一些实施例中,安全硬件设备可以擦除特定的敏感数据,例如密码密钥、口令码隐蔽数据要素,或者安全硬件设备可以(可能不可逆地)进入故障模式或在检测到篡改安全硬件设备的假定尝试时停止工作。

安全硬件设备可以具有安全用户输出接口(例如安全显示器)和安全用户输入接口(例如安全键盘)。在一些实施例中,安全硬件设备具有输出接口,该输出接口的安全之处在于它完全由安全硬件设备控制,并且其不能用于通过安全硬件设备外部的进程向用户呈现数据或信息,它只能用于在安全硬件设备外部的进程是由安全硬件设备授权并且控制的情况下通过该进程向用户呈现数据或信息。在一些实施例中,安全硬件设备具有用户输入接口,该用户输入接口的安全之处在于它完全由安全硬件设备控制,并且其不能用于通过安全硬件设备外部的进程从用户获得数据或信息,它只能用于在安全硬件设备外部的进程是由安全硬件设备授权并且控制的情况下通过该进程从用户获得数据或信息。在一些实施例中,安全用户输入和输出接口的安全性由安全硬件设备维持,不允许对其固件进行任何改变或提供安全固件更新机制,该安全固件更新机制仅允许通过确保安全硬件设备只接受来自可信来源的授权固件更新的安全协议改变其固件。

在一些实施例中,令牌不是专用硬件设备。在一些实施例中,令牌可以包括电子消费者设备,其主要目的可以不是提供认证功能,而是可以包括用于提供本说明书中描述的强认证令牌功能的软件。例如,在一些实施例中,令牌可以包括平板电脑或智能电话,其包括提供本说明书中描述的强认证令牌功能的认证应用。

构成因素:

在一些实施例中,令牌可以包括塑料电路板(pcb),在该塑料电路板上可以布置令牌中包括的至少一些电子组件。其他电子组件可以电流连接到布置在电路板上的组件(例如通过电线)。在一些实施例中,令牌的所有电子组件包含在单个外壳内。在一些实施例中,壳体可以由塑料或金属或材料组合制成。在一些实施例中,认证令牌可以是单片设备。在本说明书的上下文中,这意味着用于生成动态凭证的数字数据处理组件、用于存储实例数据的存储组件、输入用户界面、输出用户界面和包含在认证令牌中的数据输入接口全都包括整合到一个物理设备中。在一些实施例中,这些组件不能被用户作为认证令牌的普通操作的一部分来移除。在一些实施例中,这些组件不能被移除而不会对认证令牌造成不可逆的改变。在一些实施例中,这些组件不能被移除而没有永久损坏认证令牌。

在一些实施例中,令牌可以包括多于一个的电子设备,由此令牌的各种功能可以由不同的设备负责。例如,在一些实施例中,令牌可以包括诸如智能卡和读取器设备的安全元件,由此安全元件可以负责存储安全敏感数据要素,例如密钥相关数据和/或口令码隐蔽数据要素。安全元件可以进一步适于负责用于生成动态认证凭证的一些或全部密码计算。读取器可以例如包括用户输入接口和用户输出接口以及数据输入接口。安全元件可以包括用于与读取器通信的数据通信接口,并且读取器可以包括与安全元件通信的补充数据通信接口。安全元件和读取器可以适于协作并一起提供本说明书中其他地方描述的令牌的所有功能。

尺寸和重量:

在一些实施例中,令牌具有种类和空间度量使得令牌可被认为是便携式袖珍手持装置。在一些实施例中,读取器具有重量和空间度量,使得可以以适中的成本通过邮件将令牌发送给用户。例如,在一些实施例中,认证设备可以具有小于2cm的厚度,小于10cm的宽度,小于15cm的长度以及小于200g的重量。例如,在一些实施例中,认证设备可以具有小于1.5cm的厚度,小于7cm的宽度,小于13cm的长度以及小于110g的重量。在一些实施例中,认证设备的长度和宽度可以分别超过标准全尺寸信用卡的宽度的不超过10%。在一些实施例中,认证设备可以具有标准全尺寸信用卡的长度和宽度。在一些实施例中,认证设备可以具有在适于标准全尺寸信用卡的裕量内的标准全尺寸信用卡的长度、宽度和厚度(例如,具有iso/iec7810指定的id-1大小的智能卡的尺寸)。

电源:

在一些实施例中,认证设备包括自主电源。在一些实施例中,电源可以包括电池。在一些实施例中,电池可以是可更换的。

图2示意性示出根据本发明的一方面的发明的示例系统(200)。

在一些实施例中,该系统可以包括强认证令牌(220)和认证服务器(230)。在一些实施例中,该系统可以进一步包括应用服务器(250)。在一些实施例中,该系统可以进一步包括访问设备(260)。在一些实施例中,该系统可以进一步包括计算机网络(270)。

在一些实施例中,强认证令牌(220)可以包括强认证令牌或本说明书中其它地方更详细描述的认证客户端中的任何一个。特别地,强认证令牌(220)可以包括结合图1描述的设备(100)。

在一些实施例中,认证服务器(230)可以包括认证服务器或凭证验证服务器或本说明书其他地方更详细描述的实体中的任何一个。在一些实施例中,认证服务器(230)可以适于执行本说明书其他地方更详细描述的认证服务器或凭证验证服务器或实体中的任何一个执行的方法步骤或动作中的任何一个。认证服务器(230)可以包括一个或多个计算设备,例如服务器计算机。在一些实施例中,认证服务器可以适于执行密码计算。在一些实施例中,认证服务器可以适于验证由客户端或令牌生成的动态认证凭证的有效性。在一些实施例中,认证服务器可以访问用户和/或令牌特定信息。这样的用户和/或令牌特定信息可以包括例如用户标识数据要素(用户id)、诸如口令码验证器的秘密数据、密钥相关的数据从而生成或获得令牌(推测地)用于生成动态认证凭证的密码密钥的值。例如,在一些实施例中,令牌可以将密码密钥生成为由令牌维护的状态变量值的函数,并且认证服务器可以访问表示令牌的状态变量的值的状态变量。在一些实施例中,认证服务器可以将这些数据要素存储在可以包括在认证服务器中或连接到认证服务器的数据库中。

应用服务器(250)可以适于托管基于远程可访问的基于计算机的应用的服务器部分。用户和远程可访问的基于计算机的应用之间的交互可以使用认证令牌(220)和认证服务器(230)以本说明书中其他地方更详细描述的任何认证方法来保护。应用服务器(250)可以包括网络服务器,并且远程可访问的基于计算机的应用可以是基于网络的应用,例如网上银行或互联网银行应用。

访问设备(260)可以适于允许用户(290)访问由应用服务器(250)托管的远程可访问的基于计算机的应用并与其交互。在一些实施例中,访问设备(260)可以例如包括网页浏览器从而与由应用服务器(250)托管的远程可访问的基于计算机的应用进行交互。在一些实施例中,访问设备(260)可以例如包括pc或平板电脑或智能电话。

在一些实施例中,计算机网络(270)可以包括lan(局域网)和/或wan(广域网)和/或互联网,和/或无线数据远程通信网络,例如移动电话网络。计算机网络(270)可以链接诸如强认证令牌(220)、认证服务器(230)、应用服务器(250)和接入设备(260)的两个或更多个计算设备,并且其可以适于使这些计算设备能够相互通信并交换数据和消息,例如由本说明书其他地方更详细描述的任何认证客户端或认证令牌和任何认证服务器所交换的各种消息中的任何消息。

图3示意性地示出用于生成动态凭证的示例性方法(300)。

在一些实施例中,用于生成动态凭证的方法包括以下步骤:从用户获得(310)口令码值,检索(320)口令码隐蔽数据要素的存储值,通过以密码方式将所获得的口令码值与检索到的口令码隐蔽数据要素的值进行组合来计算(330)口令码验证器,通过以密码方式将计算的口令码验证器与存储的秘密密钥和动态变量进行组合来计算(340)动态凭证。

在一些实施例中,秘密密钥可以包括动态变量。在一些实施例中,该方法可以进一步包括利用新的值来更新秘密密钥的值。在一些实施例中,该方法可以包括:通过基于状态变量的旧值来计算状态变量的新值来更新状态变量,擦除状态变量的旧值,擦除密钥的旧变量,基于状态变量的新值来计算秘密密钥的新变量。

在本发明的一个方面中,提供了一种用于生成动态认证凭证的方法。在一些实施例中,该方法的一些或所有步骤可以由本说明书中其他地方描述的认证客户端或认证令牌中的任何一个来执行。在一些实施例中,该方法可以包括用于生成在本说明书的其他地方描述的动态认证凭证的任何方法中的一些或全部方法。具体地,在一些实施例中,该方法可以包括结合图3描述的方法的一些或全部步骤。

在一些实施例中,方法(300)可以包括以下步骤:获得(310)口令码的值,获得(320)口令码隐蔽数据要素的值,获得动态变量的值,获得密码凭证生成密钥,从获得的口令码值和所获得的口令码隐蔽数据要素的值计算(330)口令码验证器数据要素的值,从计算的口令码验证器数据要素值、获得的动态变量值和获得的密码凭证生成密钥值计算(340)动态认证凭证。

在一些实施例中,获取口令码的值可以包括接收来自用户的口令码的值,例如,作为由用户通过认证令牌或认证客户端设备的用户输入接口提供的输入。在一些实施例中,口令码值可以包括pin(个人识别码)值或口令值。

在一些实施例中,获取口令码隐蔽数据要素的值可以包括从例如执行该方法的认证令牌或认证客户端的存储器读取口令码隐蔽数据要素值。在一些实施例中,在生成动态认证凭证之前,口令码隐蔽数据要素可能已经被生成并被存储在例如执行该方法的认证令牌或认证客户端的存储器中,例如作为这种认证令牌或认证客户端的初始化阶段的一部分。在一些实施例中,口令码隐蔽数据要素值可以被生成为高熵数据要素。例如,在一些实施例中,口令码隐蔽数据要素的熵可以是至少64位;在其他实施例中,熵可以是至少128位;在另外其他实施例中,熵可以是至少256位。在一些实施例中,可以使用随机或伪随机数来生成口令码隐蔽数据要素值,其中的随机后伪随机数可以由随机或伪随机数生成器生成。

在一些实施例中,获得动态变量值可以包括从诸如认证服务器的服务器接收消息,并且将动态变量值确定为诸如包括在收到的消息中的询问或随机数或交易数据的数据要素的函数。在一些实施例中,获得动态变量值可以包括将动态变量确定为交易数据的函数,并将交易数据呈现给用户以供批准,并获得用户的批准。

在一些实施例中,计算口令码验证器数据要素值可以包括将口令码验证器数据要素值计算为所获取的口令码值和所获得的口令码隐蔽数据要素值的密码函数。在一些实施例中,计算口令码验证器数据要素值可以包括作为将不可逆(密码)函数应用于获得的口令码值和获得的口令码隐蔽数据要素值的结果,来计算口令码验证器数据要素值。在一些实施例中,应用不可逆函数可以包括将(安全)密码散列函数应用到获得的口令码值和获得的口令码隐蔽数据要素值的组合。例如,在一些实施例中,(安全)密码散列函数可以包括sha-2或sha-3(安全散列算法)函数族中的一个函数。在一些实施例中,应用不可逆函数可以包括使用所获得的口令码隐蔽数据要素值作为带密钥散列函数的密钥,将安全密码密钥的散列函数应用于所获得的口令码值。例如,在一些实施例中,带密钥散列函数可以包括hmac(基于散列的消息认证码或带密钥散列消息认证码)函数。在一些实施例中,应用不可逆函数可以包括使用所获得的口令码隐蔽数据要素值作为加密(或解密)密钥来将安全密码加密(或解密)函数应用于所获得的口令码值。例如,在一些实施例中,加密功能可以包括aes(高级加密标准)加密算法。

在一些实施例中,根据计算出的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值来计算动态认证凭证,可以包括将动态认证凭证计算为所计算的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值的密码函数。在一些实施例中,从计算出的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值来计算动态认证凭证,可以包括将动态认证凭证计算为将不可逆(密码)函数应用到所计算的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值的结果。在一些实施例中,应用不可逆函数可以包括将(安全)密码散列函数应用于计算出的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值的组合。例如,在一些实施例中,(安全)密码散列函数可以包括sha-2或sha-3(安全散列算法)函数族中的一个函数。在一些实施例中,应用不可逆函数可以包括使用所获得的密码凭证生成密钥值作为带密钥的散列函数的密钥,将安全密码带密钥的散列函数应用于计算出的口令码验证器数据要素值和所获得的动态变量值的组合。例如,在一些实施例中,带密钥散列函数可以包括hmac(基于散列的消息认证码或带密钥的散列消息认证码)函数。在一些实施例中,应用不可逆函数可以包括使用所获得的密码凭证生成密钥值作为加密(或解密)密钥,将(安全)密码加密(或解密)函数应用于计算出的口令码验证器数据要素值和所获得的动态变量值的组合。例如,在一些实施例中,加密功能可以包括aes(高级加密标准)加密算法。

在一些实施例中,该方法可以进一步包括在计算口令码验证器数据要素值的步骤之后丢弃所获得的口令码值的步骤。在一些实施例中,丢弃所获得的口令码值可以包括从例如执行该方法的认证令牌或认证客户端的存储器中擦除所获得的口令码值的所有副本。

在一些实施例中,该方法可以进一步包括在计算动态认证凭证的步骤之后丢弃计算出的口令码验证器数据要素值的步骤。在一些实施例中,丢弃计算出的口令码验证器数据要素值可以包括从例如执行该方法的认证令牌或认证客户端的存储器擦除计算出的口令码验证器数据要素值的所有副本。

在一些实施例中,获得密码凭证生成密钥值可以包括将密码凭证生成密钥值确定为状态变量的值。在一些实施例中,该方法可以进一步包括维持状态变量的值并将其存储在存储器中。在一些实施例中,将密码凭证生成密钥值确定为状态变量值的函数可以包括从例如执行该方法的认证令牌或认证客户端的存储器中读取状态变量值。在一些实施例中,将密码凭证生成密钥值确定为状态变量值的函数可以包括将密码凭证生成密钥值设置为状态变量的值。在其他实施例中,将密码凭证生成密钥值确定为状态变量值的函数可以包括将密码凭证生成密钥值计算为将不可逆函数应用到状态变量值的结果。例如,在一些实施例中,不可逆函数可以包括(安全)密码散列函数,其可以包括sha-2或sha-3(安全散列算法)系列函数之一。在一些实施例中,应用不可逆函数可以包括使用状态变量值作为加密(或解密)密钥将(安全)密码加密(或解密)函数应用于固定值。例如,在一些实施例中,加密功能可以包括aes(高级加密标准)加密算法。

在一些实施例中,该方法可以进一步包括利用作为状态变量的当前值的函数被计算出的新值来更新状态变量的值(其中当前值在更新之后已经变为先前值)。在一些实施例中,将状态变量的新值计算为状态变量的当前(先前)值的函数可以包括将状态变量的新值计算为将不可逆函数应用到状态变量的当前(先前)值的结果。例如,在一些实施例中,不可逆函数可以包括(安全)密码散列函数,其可以包括sha-2或sha-3(安全散列算法)系列函数之一。在一些实施例中,应用不可逆函数可以包括使用状态变量的当前(先前)值作为加密(或解密)密钥,将(安全)密码加密(或解密)函数应用于固定值。例如,在一些实施例中,加密功能可以包括aes(高级加密标准)加密算法。

在一些实施例中,该方法可以进一步包括在根据将状态变量的新值计算为状态变量的当前值的函数之后丢弃状态变量的当前(先前)值。在一些实施例中,丢弃状态变量的当前(先前)值的步骤可以在已经执行了计算状态变量的新值和将密码凭证生成密钥值确定为状态变量的当前(先前)值两者之后执行。在一些实施例中,丢弃状态变量的当前(先前)值可以包括从例如执行该方法的认证令牌或认证客户端的存储器中擦除状态变量的当前(先前)值的所有副本。

在一些实施例中,该方法可以进一步包括在所述计算动态认证凭证之后丢弃密码凭证生成密钥值。在一些实施例中,丢弃密码凭证生成密钥值可以包括从例如执行该方法的认证令牌或认证客户端的存储器擦除密码凭证生成密钥值的所有副本。在一些实施例中,该方法可以进一步包括在所述计算动态认证凭证之后丢弃已经从其导出密码凭证生成密钥值的状态变量的值。在一些实施例中,丢弃状态变量的值可以包括从例如执行该方法的认证令牌或认证客户端的存储器中擦除状态变量的值的所有副本。

在本发明的一个方面中,提供了一种用于验证动态认证凭证的值的方法。在一些实施例中,该方法的一些或所有步骤可以由本说明书中其他地方描述的认证服务器中的任何认证服务器来执行。在一些实施例中,该方法可以包括用于验证本说明书中其他地方描述的动态认证凭证的值的任何方法的一些或全部步骤。

在一些实施例中,动态认证凭证的值可以已经由本说明书中描述的用于生成动态认证凭证的任何方法生成。

该方法的示例性实施例在图4中示出。

在一些实施例中,方法(400)可以包括以下步骤:接收(410)动态认证凭证值;获得(420)动态变量的值;获得(430)口令码验证器数据要素和密码凭证生成密钥的值;从所获得的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值来计算(440)凭证参考值;以及验证(450)接收到的动态认证凭证值是否匹配计算出的凭证参考值。在一些实施例中,该方法可以进一步包括产生指示接收到的动态认证凭证值是否与计算出的凭证参考值匹配的信号的步骤。在一些实施例中,动态变量可以包括或者可以从交易数据导出,其中交易数据表示将要由动态认证凭证进行授权的交易。

在一些实施例中,从所获得的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值来计算(440)凭证参考值,可以包括将凭证参考值计算为所获得的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值的密码函数。在一些实施例中,从所获得的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值来计算凭证参考值,可以包括将凭证参考值计算为将不可逆(密码)函数应用到所获得的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值的结果。在一些实施例中,应用不可逆函数可以包括将(安全)密码散列函数应用于所获得的口令码验证器数据要素值、所获得的动态变量值和所获得的密码凭证生成密钥值的组合。例如,在一些实施例中,(安全)密码散列函数可以包括sha-2或sha-3(安全散列算法)函数族中的一个函数。在一些实施例中,应用不可逆函数可以包括使用所获得的密码凭证生成密钥值作为带密钥的散列函数的密钥,将安全密码带密钥的散列函数应用于所获得的口令码验证器数据要素值和所获得的动态变量值的组合。例如,在一些实施例中,带密钥散列函数可以包括hmac(基于散列的消息认证码或带密钥的散列消息认证码)函数。在一些实施例中,应用不可逆函数可以包括使用所获得的密码凭证生成密钥值作为加密(或解密)密钥,将(安全)密码加密(或解密)函数应用于所获得的口令码验证器数据要素值和所获得的动态变量值的组合。例如,在一些实施例中,加密功能可以包括aes(高级加密标准)加密算法。

在一些实施例中,验证第一值是否与第二值匹配可以包括验证第一值是否等于第二值或者可以由验证第一值是否等于第二值组成。在一些实施例中,验证第一值是否与第二值匹配可以包括验证第一值的第一函数是否等于第二值的第二函数或者可以由验证第一值的第一函数是否等于第二值的第二函数组成。在一些实施例中,验证第一值是否与第二值匹配可以包括验证第一值的第一比特串表示是否等于第二值的第二比特串表示的冗余版本或者可以由验证第一值的第一比特串表示是否等于第二值的第二比特串表示的冗余版本组成。在一些实施例中,验证第一值是否与第二值匹配可以包括验证第一值与第二值之间的数学关系是否为真或可以由验证第一值与第二值之间的数学关系是否为真组成。

在一些实施例中,获得口令码验证器数据要素和密码凭证生成密钥的值可以包括获得与认证客户端的特定用户相关联的用户或认证客户端特定数据的集合,并且从该用户或认证客户端特定数据的集合中检索或导出口令码验证器数据要素和密码凭证生成密钥。在一些实施例中,用户或认证客户端特定数据的集合与认证客户端的用户相关联,假定已经从该认证客户端接收到所接收的动态认证凭证值。在一些实施例中,该方法可以进一步包括在存储器或数据库中存储和维护用户或认证客户端特定数据集,该存储器或数据库可以包括在或连接到例如执行该方法的步骤的认证服务器,并且获得用户或认证客户端特定数据集可以包括从该存储器或数据库读取用户或认证客户端特定数据集。

在一些实施例中,用户或认证客户端特定数据集可以包括状态变量的值,并且获得密码凭证生成密钥值可以包括将密码凭证生成密钥值确定为包括在用户或认证客户端特定数据集中的状态变量值的函数。在一些实施例中,将密码凭证生成密钥值确定为状态变量值的函数可以包括将密码凭证生成密钥值设置为状态变量的值。在其他实施例中,将密码凭证生成密钥值确定为状态变量值的函数可以包括将密码凭证生成密钥值计算为将不可逆函数应用到状态变量值的结果。例如,在一些实施例中,不可逆函数可以包括(安全)密码散列函数,其可以包括sha-2或sha-3(安全散列算法)系列函数之一。在一些实施例中,应用不可逆函数可以包括使用状态变量值作为加密(或解密)密钥将(安全)密码加密(或解密)函数应用于固定值。例如,在一些实施例中,加密功能可以包括aes(高级加密标准)加密算法。

在一些实施例中,该方法可以进一步包括利用新值来更新状态变量值的步骤,该新值被计算为包括在用户或认证客户端特定数据集中的状态变量值的函数,并且将包括在用户或认证客户端特定数据集中的状态变量的值与该计算出的新值进行比较。在一些实施例中,该方法可以进一步包括以下步骤:将包括状态变量的更新值的用户或认证客户端特定数据集存储在存储器或数据库中,该存储器或数据库可以包括在或连接到例如执行步骤的方法的认证服务器。在一些实施例中,将状态变量的新值计算为包括在用户或认证客户端特定数据集中的状态变量值的函数可以包括将状态变量的新值计算为将不可逆函数应用到包括在用户或认证客户端特定数据集中的状态变量值的结果。例如,在一些实施例中,不可逆函数可以包括(安全)密码散列函数,其可以包括sha-2或sha-3(安全散列算法)系列函数之一。在一些实施例中,应用不可逆函数可以包括使用包括在用户或认证客户端特定数据集中的状态变量值作为加密(或解密)密钥将(安全)密码加密(或解密)函数应用于固定值。例如,在一些实施例中,加密功能可以包括aes(高级加密标准)加密算法。

在一些实施例中,该方法可以进一步包括,在将状态变量的新值计算为包括在用户或认证客户端特定数据集中的状态变量值的函数之后,丢弃包括在用户或认证客户端特定数据集中的状态变量值。在一些实施例中,丢弃包括在用户或认证客户端特定数据集中的状态变量值可以包括,从存储器或数据库中擦除包括在用户或认证客户端特定数据集中的状态变量值的所有副本,该存储器或数据库可以包括在或连接到例如执行该方法的步骤的认证服务器。

在一些实施例中,该方法还可以包括在计算凭证参考值的步骤之后丢弃密码凭证生成密钥值的步骤。在一些实施例中,丢弃密码凭证生成密钥值可以包括从存储器或数据库中擦除密码凭证生成密钥值的所有副本,该存储器或数据库可以包括在或连接到例如执行该方法的步骤的认证服务器。在一些实施例中,该方法可以进一步包括在计算凭证参考值的步骤之后,丢弃已经从其导出密码凭证生成密钥值的状态变量值的步骤。在一些实施例中,丢弃已经从其导出密码凭证生成密钥值的状态变量值可以包括,从存储器或数据库中擦除状态变量值的所有副本,该存储器或数据库可以包括在或连接到例如执行该方法的步骤的认证服务器。

在本发明的另一方面中,提供了一种保护用户与基于计算机的应用进行交互的方法。在一些实施例中,该方法可以包括通过认证令牌或认证客户端执行本说明书中其他地方描述的用于生成动态认证凭证的任何方法中的一些或所有步骤,并且由认证服务器执行本说明书中其他地方描述的用于验证动态认证凭证的方法中的任何方法的一些或所有步骤。

认证阶段

在一些实施例中,该方法包括在认证阶段期间执行以下步骤:通过认证客户端获得动态变量客户端值;通过认证客户端获得密码凭证生成密钥客户端值;通过验证客户端从存储器中检索口令码隐蔽数据要素值;通过认证客户端接收来自用户的口令码值;通过认证客户端将口令码验证器数据要素客户端值计算为检索到的口令码隐蔽数据要素值和接收到的口令码值的第一不可逆客户端函数;通过认证客户端将动态认证凭证计算为所获得的动态变量客户端值、所获得的密码凭证生成密钥客户端值和计算出的口令码验证器数据要素客户端值的第二不可逆客户端函数;以及通过认证服务器接收动态认证凭证;通过认证服务器获得动态变量服务器值;通过认证服务器获得密码凭证生成密钥服务器值;通过认证服务器获得口令码验证器数据要素服务器值;通过认证服务器将凭证参考值计算为所获得的动态变量服务器值、所获得的密码凭证生成密钥服务器值和所获得的口令码验证器数据要素服务器值的不可逆服务器函数;通过认证服务器将接收到的动态认证凭证与计算出的凭证参考值进行比较以验证接收到的动态认证凭证是否匹配计算出的凭证参考值。在一些实施例中,该方法可以进一步包括通过认证服务器来生成指示接收到的动态认证凭证是否与计算出的凭证参考值匹配的信号的步骤。在一些实施例中,该方法可以进一步包括如下步骤:如果接收到的动态认证凭证与计算出的凭证参考值匹配,则基于计算机的应用执行第一动作,如果接收到的动态认证凭证与计算出的凭证参考值不匹配,则基于计算机的应用执行第二动作。

在一些实施例中,动态变量客户端值可以与动态变量服务器值相同,密码凭证生成密钥客户端值可以与密码凭证生成密钥服务器值相同,口令码验证器数据要素客户端值可以与口令码验证器数据要素服务器值相同,并且用于计算动态认证凭证的第二不可逆客户端函数可以与用于计算凭证参考值的不可逆服务器函数基本相同。在这种背景下,与不可逆服务器函数基本相同的用于计算动态认证凭证的第二不可逆客户端函数可以被理解为表示,如果将第二不可逆客户端函数和不可逆服务器函数应用于同一组输入数据,则应用第二个不可逆客户端函数的结果将与应用不可逆服务器函数的结果匹配。

在一些实施例中,动态变量客户端值可以基于表示将要由用户授权的交易的交易数据,并且该方法可以进一步包括通过认证客户端将交易数据呈现给用户并且通过认证客户端从用户接收对于所呈现的交易数据的批准。在一些实施例中,计算动态认证凭证的步骤可以以用户批准所呈现的交易数据为条件。在一些实施例中,该方法可以进一步包括如下步骤:如果接收到的动态认证凭证与计算出的凭证参考值匹配,则基于计算机的应用执行第一动作,如果接收到的动态认证凭证与计算出的凭证参考值不匹配,则基于计算机的应用拒绝交易。

在一些实施例中,该方法还可以包括在认证阶段期间执行以下步骤:通过认证客户端存储当前状态变量客户端值,由此通过认证客户端获得密码凭证生成密钥客户端值可以包括通过认证客户端从所存储的当前状态变量客户端值中导出密码凭证生成密钥客户端值;通过认证客户端将新的状态变量客户端值计算为当前状态变量客户端值的第三不可逆客户端函数;通过认证客户端在计算动态认证凭证之后丢弃密码凭证生成密钥客户端值;在计算新的状态变量客户端值和导出密码凭证生成密钥客户端值之后,通过认证客户端丢弃当前状态变量客户端值;通过认证客户端存储新的状态变量客户端值来代替被丢弃的当前状态变量客户端值;以及通过认证服务器存储当前状态变量服务器值,由此通过认证服务器获得密码凭证生成密钥服务器值可以包括通过认证服务器从所存储的当前变量服务器变量值导出密码凭证生成密钥服务器值;通过认证服务器将新的状态变量服务器值计算为当前状态变量服务器值的第二不可逆服务器函数;在计算凭证参考值之后,通过认证服务器丢弃密码凭证生成密钥服务器值;在计算新的状态变量服务器值和导出密码凭证生成密钥服务器值之后,通过认证服务器丢弃当前状态变量服务器值;通过认证服务器存储新的状态变量服务器值来代替被丢弃的当前状态变量服务器值。在一些实施例中,当前状态变量服务器值可以与当前状态变量客户端值相同,新的状态变量服务器值可以与新的状态变量客户端值相同,并且第二不可逆服务器函数可以与第三个不可逆客户端函数相同。

初始化阶段

在一些实施例中,该方法可以进一步包括在认证阶段之前的初始化阶段执行以下步骤:通过认证客户端以不可预知的方式生成口令码隐蔽数据要素值;通过认证客户端存储所生成的口令码隐蔽数据要素值以供在认证阶段期间随后使用;通过认证客户端接收来自用户的初始口令码值;通过认证客户端将(初始)口令码验证器数据要素客户端值计算为口令码隐蔽数据要素值和接收到的初始口令码值的第一不可逆客户端函数;以及通过认证服务器接收计算出的(初始)口令码验证器数据要素客户端值,并且在认证阶段期间通过认证服务器将接收到的(初始)口令码验证器数据要素客户端值存储为口令码验证器数据要素服务器值,以供随后使用。

在一些实施例中,该方法可以进一步包括在初始化阶段期间执行以下步骤:在认证客户端处获得从初始状态种子导出的状态变量客户端值的初始客户端值,并且在认证客户端,存储所获得的状态变量客户端值的初始值作为当前状态变量客户端值;以及在认证服务器处获得同样从初始状态种子导出的状态变量服务器值的初始服务器值,并且在认证服务器处,存储所获得的状态变量服务器值的初始值作为当前状态变量服务器值。

在一些实施例中,该方法还进一步包括在初始化阶段期间执行以下步骤:生成或以其他方式获得初始状态种子;其中在认证客户端处获得状态变量客户端值的初始客户端值可以包括:在认证客户端处获得初始状态种子,并且在认证客户端从初始状态种子导出状态变量客户端值的初始客户端值;并且其中在认证服务器处获得同样从初始状态种子导出的状态变量服务器值的初始服务器值可以包括:在认证服务器处获得初始状态种子,并且在认证服务器处从初始状态种子获得状态变量服务器值的初始服务器值。

在一些实施例中,生成初始状态种子可以包括将初始状态种子生成为高熵值。在一些实施例中,生成初始状态种子可以包括使用由随机或伪随机数生成器生成的随机或伪随机数。在一些实施例中,生成初始状态种子可以由服务器来执行,诸如认证服务器的服务器或与认证服务器相关联的服务器。

在一些实施例中,该方法还可以包括在认证阶段期间执行将状态变量客户端值与状态变量服务器值进行同步的步骤。在一些实施例中,将状态变量客户端值与状态变量服务器值进行同步的步骤可以包括通过认证客户端接收指示状态变量服务器值的同步数据要素,并且通过认证客户端基于接收到的同步数据要素的值来更新状态变量客户端值从而将状态变量客户端值与状态变量服务器值进行同步。在一些实施例中,同步数据要素可以包括计数器值,其可以例如指示状态变量服务器值已经被更新多少次。在一些实施例中,将状态变量客户端值与状态变量服务器值进行同步的步骤可以包括通过认证服务器接收指示状态变量客户端值的同步数据要素,并且通过认证服务器基于接收到的同步数据要素的值来更新状态变量服务器值从而将状态变量服务器值与状态变量客户端值进行同步。在一些实施例中,同步数据要素可以包括计数器值,其可以例如指示状态变量客户端值已经被更新多少次。

在本发明的另一方面中,提供了一种用于生成动态认证凭证的装置。在一些实施例中,该装置可以包括本说明书中其他位置描述的认证令牌或认证客户端中的任何一个。具体地,在一些实施例中,该装置可以包括结合图1描述的装置(100)的任何装置。在一些实施例中,该装置可以适于执行在本说明书的其他地方描述的用于生成动态认证凭证的方法中的任何方法。

在一些实施例中,装置(100)可以包括:用户输入接口(120),其适于从装置的用户接收密码;数据处理器(150),其适于执行密码计算;以及存储器(160),其用于存储口令码隐蔽数据要素值和状态变量值;由此该装置可以适于在初始化阶段:获得口令码隐蔽数据要素值并将其存储在存储器中,并获得状态变量值的初始值,并将该初始值作为当前状态变量值存储在存储器中;并且由此该装置可以进一步适于在认证阶段:获得动态变量值;通过用户输入接口接收用户的口令码;从存储器读取口令码隐蔽数据要素值;将口令码验证器数据要素值计算为接收到的口令码和口令码隐蔽数据要素值的第一不可逆函数;从存储器读取当前状态变量值并从读取自存储器的当前状态变量值导出密码凭证生成密钥;将动态认证凭证计算为所获得的动态变量值、计算出的口令码验证器数据要素值和导出的密码凭证生成密钥的第二不可逆函数;在计算动态认证凭证后,丢弃导出的密码凭证生成密钥;将状态变量值的新值生成为当前状态变量值的第三个不可逆函数;并且在从当前状态变量值导出密码凭证生成密钥并生成状态变量值的新值之后,丢弃当前状态变量值并存储所生成的状态变量值的新值来代替当前状态变量值。

在一些实施例中,该装置可以进一步包括用于向用户呈现数据的用户输出接口(130)。

在一些实施例中,该装置可以进一步适于:接收表示将要由用户批准的交易的交易数据;通过用户输出接口将接收到的交易数据呈现给用户;通过用户输入接口从用户接收针对所呈现的交易数据的批准。在一些实施例中,计算动态认证凭证可以以装置接收用户对于所呈现的交易数据的批准为条件。

在一些实施例中,该装置可以进一步适于使所生成的动态认证凭证可用于由认证服务器进行的验证。在一些实施例中,该装置可以适于通过用户输出接口向用户呈现所生成的动态认证凭证以供用户转发给认证服务器。在一些实施例中,该装置可以适于将所生成的动态认证凭证直接或间接地发送到认证服务器。

在一些实施例中,该装置可以进一步包括随机或伪随机数发生器,并且该装置还可以适于在初始化阶段获得由随机或伪随机数发生器生成的随机或伪随机数,并且获得作为随机或伪随机数的函数的口令码隐蔽数据要素值。

在本发明的另一方面中,提供了一种用于验证动态认证凭证的装置。在一些实施例中,该装置可以包括本说明书中其他地方描述的任何认证服务器。在一些实施例中,该方法可以适于执行本说明书中其他地方描述的用于验证动态认证凭证的方法中的任何方法。

在一些实施例中,该装置可以包括:适于存储与特定用户或特定认证客户端相关联的至少一个数据集的存储器,以及适于执行密码操作的数据处理组件;并且该装置可以适于在认证阶段:接收动态认证凭证;获取动态变量服务器值;从存储器读取与特定用户或特定认证客户端相关联的数据集;从所读取的数据集合获得密码凭证生成密钥服务器值;从所读取的数据集中获得口令码验证器数据要素服务器值;将凭证参考值计算为所获得的动态变量服务器值、所获取的口令码验证器数据要素服务器值和所获得的密码凭证生成密钥服务器值的不可逆服务器函数;将接收到的动态认证凭证与计算出的凭证参考值进行比较以验证接收到的动态认证凭证是否匹配计算出的凭证参考值。

在一些实施例中,装置可以包括认证服务器,并且存储器可以包括数据库,该数据库包括在认证服务器中或可由认证服务器访问。

在一些实施例中,装置可以进一步适于在认证阶段:生成指示接收到的动态认证凭证是否匹配计算出的凭证参考值的信号。

在一些实施例中,该装置可以进一步适于在存储器中存储口令码验证器数据要素服务器值,作为与特定用户或特定验证客户端相关联的数据集的一部分。

在一些实施例中,该装置可以进一步适于在存储器中存储和维护当前状态变量服务器值,作为与特定用户或特定认证客户端相关联的数据集的一部分,并且在认证阶段:从读取的数据集获得当前状态变量服务器值;将密码凭证生成密钥服务器值确定为所获得的当前状态变量服务器值的函数;在计算凭证参考值之后丢弃密码凭证生成密钥服务器值;将新的状态变量服务器值计算为所获得的当前状态变量服务器值的第二不可逆服务器函数;在确定密码凭证生成密钥服务器值和计算新的状态变量服务器值之后,丢弃当前状态变量服务器值;以及将新的状态变量服务器值写入在存储器中来代替当前状态变量服务器值作为与特定用户或特定认证客户端相关联的数据集的一部分。

在一些实施例中,该装置可以进一步适于在初始化阶段:接收口令码验证器数据要素值并且将所接收的口令码验证器数据要素值写入存储器中作为口令码验证器数据要素服务器值,作为与特定用户或特定认证客户端相关联的数据集合的一部分。

在一些实施例中,该装置可以进一步适于在初始化阶段:获得初始状态变量服务器值并且将初始状态变量服务器值写入存储器中作为当前状态变量服务器值,作为与特定用户或特定认证客户端相关联的数据集合的一部分。

在本发明的另一方面中,提供了一种保护用户与基于计算机的应用进行交互的系统。在一些实施例中,该系统可以包括本说明书中其他位置描述的系统中的任何系统。具体地,在一些实施例中,该方法可以包括结合图2描述的系统的中的任何系统。在一些实施例中,该系统可以包括本说明书中其他地方描述的认证令牌或认证客户端中的任何认证令牌或认证客户端中的多个,以及本说明书中其他地方描述的认证服务器中的任何认证服务器。在一些实施例中,该系统可以包括本说明书中其他地方描述的用于生成动态认证凭证的装置中的任何装置,以及本说明书中其他地方描述的用于验证动态认证凭证的装置中的任何装置。在一些实施例中,该系统可以适于执行与本申请中其它地方描述的用于保护用户与基于计算机的应用之间的交互的方法中的任何方法的一个或多个步骤。

在一些实施例中,系统(200)可以包括认证客户端(220)和认证服务器(230),由此认证客户端可以包括:用户输入接口(120),其适于接收来自认证客户端的用户的密码;客户数据处理器(150),其适于执行密码计算;以及客户端存储器(160),其用于存储口令码隐蔽数据要素值和状态变量客户端值;由此认证客户端可以适于在初始化阶段:获得口令码隐蔽数据要素值并将其存储在存储器中,并获得状态变量客户端值的初始客户端值,并将初始客户端值存储在存储器中作为当前状态变量客户端值;并且由此认证客户端可以进一步适于在认证阶段:获得动态变量客户端值;通过用户输入接口接收用户的密码;从客户端存储器读取口令码隐蔽数据要素值;将口令码验证器数据要素客户端值计算为接收到的密码和口令码隐蔽数据要素值的第一不可逆客户端函数;从客户端存储器读取当前状态变量客户端值,并且从读取自客户端存储器的当前状态变量客户端值导出密码凭证生成密钥客户端值;将动态认证凭证计算为所获得的动态变量客户端值、计算出的口令码验证器数据要素客户端值和导出的密码凭证生成密钥客户端值的第二不可逆客户端函数;在计算动态认证凭证后,丢弃导出的密码凭证生成密钥客户端值;将状态变量客户端值的新值生成为当前状态变量客户端值的第三不可逆客户端函数;并且在从当前状态变量客户端值导出密码凭证生成密钥客户端值并生成状态变量客户端值的新值之后,丢弃当前状态变量客户端值并存储所生成的状态变量客户端值的新值来代替当前状态变量客户端值;并且由此认证服务器可以包括:服务器存储器,其适于存储与用户或认证客户端相关联的至少一个数据集,以及适于执行密码操作的服务器数据处理组件;并且由此认证服务器可以适于在初始化阶段:接收口令码验证器数据要素初始值,并将接收到的口令码验证器数据要素初始值写入存储器中作为口令码验证器数据要素服务器值,作为与用户或认证客户端相关联的数据集的一部分;并获得初始状态变量服务器值,并将该初始状态变量服务器值写入存储器中作为当前状态变量服务器值,作为与所述用户或所述认证客户端关联的数据集的一部分;并且由此认证服务器可以进一步适于在认证阶段:接收所生成的动态认证凭证;获取动态变量服务器值;从服务器存储器读取与用户或认证客户端相关联的数据集;从读取的数据集中获取当前状态变量服务器值;将密码凭证生成密钥服务器值生成为所获得的当前状态变量服务器值的函数;从读取的数据集中获得口令码验证器数据要素服务器值;将凭证参考值计算为所获得的动态变量服务器值、所获得的口令码验证器数据要素服务器值和所导出密码凭证产生密钥服务器值的第一不可逆服务器函数;将接收到的动态认证凭证与计算出的凭证参考值进行比较以验证接收到的动态认证凭证是否匹配计算出的凭证参考值;在计算凭证参考值之后丢弃密码凭证生成密钥服务器值;将新的状态变量服务器值计算为所获得的当前状态变量服务器值的第二不可逆服务器函数;在导出密码凭证生成密钥服务器值和计算新的状态变量服务器值之后,丢弃当前状态变量服务器值;以及在服务器存储器中写入新的状态变量服务器值来代替当前状态变量服务器值,作为与用户或认证客户端相关联的数据集的一部分。

在一些实施例中,动态变量可以是基于时间值的,并且认证客户端可以适于根据认证客户端中包括的客户端时钟的时间值来获得动态变量客户端值,并且认证服务器可以适于根据包括在认证服务器中的服务器时钟的时间值来获得动态变量服务器值,由此客户端时钟和服务器时钟可以被同步。在一些实施例中,动态变量可以是基于计数器的,并且认证客户端可以适于根据由认证客户端维护的客户端计数器值来获得动态变量客户端值,并且认证服务器可以适于根据认证服务器维护的服务器计数器值来获得动态变量服务器值,由此认证客户端和认证服务器可以适于将客户端计数器值与服务器计数器值进行同步。在一些实施例中,动态变量可以是基于诸如质询的值的,并且认证服务器可以适于生成该值并且根据该值获得动态变量服务器值并将该值发送给认证客户端,并且认证客户端可以适于接收该值(例如,作为由用户提供的输入或包括在从认证服务器接收的消息中的输入),并且根据该值获得动态变量客户端值。在一些实施例中,动态变量可以是基于交易数据的,并且认证服务器可以适于例如从处理交易的基于计算机的应用来接收交易数据,并且根据该交易数据来获得动态变量服务器值,并且认证客户端可以适于接收交易数据(例如,作为由用户提供的输入或包括在从认证服务器或基于计算机的应用接收的消息中的输入),并且根据该交易数据来获得动态变量客户端值。

在一些实施例中,该系统可以进一步包括适于托管基于计算机的应用的应用服务器,并且认证服务器可以进一步适于在验证阶段:向基于计算机的应用发送接收到的动态认证凭证是否匹配凭证参考值;并且基于计算机的应用可以适于,如果接收到的动态认证凭证与计算出的凭证参考值相匹配,则执行一个动作,并且如果接收到的动态认证凭证与计算出的凭证参考值不匹配,则执行另一个动作。例如,在一些实施例中,如果接收到的动态认证凭证与计算的凭证参考值相匹配,则基于计算机的应用可以允许登录请求或者可以允许用户访问特定数据,或者可以批准用户执行特定动作或者可以执行可能已经由用户提交的特定交易,并且如果接收到的动态认证凭证与计算的凭证参考值不匹配,则基于计算机的应用可以拒绝执行这些动作。

在一些实施例中,不可逆函数可以包括单向函数,即数学函数,对于该数学函数,在给定输入日期的情况下,在计算上容易计算结果,但是在给定函数结果的特定值的情况下,在计算上难以获得匹配的输入日期。在一些实施例中,在计算上容易可以意味着在想要做计算的电子设备上花费少于5秒的时间来函数的结果。在一些实施例中,计算困难可以意味着在给定函数结果的特定值的情况下,获得匹配输入日期比在给定输入日期的情况下计算结果花费至少多一百万倍的计算工作量。在一些实施例中,计算困难可以意味着在给定函数的结果的特定值的情况下,获得匹配输入日期的唯一已知方式是通过穷举搜索。为了该描述的目的,通过秘密密钥参数化的密码加密或解密操作也可以被认为是不可逆的函数,因为如果参数化秘密密钥是未知,则在计算上难以对于输入数据要素进行加密或解密操作。

本发明的实施例的优点

如果口令码值存储在认证系统的某个组件上,则可能会被例如能够访问此组件的存储器的攻击者破坏。由于口令码通常可能具有相对较低的熵,如果攻击者获得作为该口令码的函数的数据要素的值,则其可能也容易受到暴力穷举搜索攻击。

本发明改进基于动态凭证并使用口令码的用于保护用户与基于计算机的应用之间进行交互的其他方法和系统,因为其保护口令码值的机密性免受各种攻击。

由于动态认证凭证是根据口令码值生成,因此动态认证凭证的值可以用作穷尽搜索攻击的起点以检索口令码的值。然而,由于动态认证凭证不仅被计算为口令码值的不可逆函数,而且还被计算为高熵的口令码隐蔽数据要素值和高熵的密码凭证密钥值的不可逆函数,所以这种穷举搜索攻击在计算上是不可行的。

由于口令码隐蔽数据要素值和密码凭证生成密钥值与密码无关,所以知道口令码隐蔽数据要素值和/或密码凭证生成密钥值本身不允许获得口令码值,即使通过穷尽搜索也不能获得该值。因此,由于根据本发明的认证令牌或认证客户端在已经用于生成动态凭证之后丢弃由用户提供的口令码,并且丢弃计算出的口令码验证器数据要素,所以掌握认证令牌或认证客户端的存储器内容的攻击者(并且因此可能已经获得所存储的口令码隐蔽数据要素值)仍然不能获得用户的口令码。

由于口令码验证器数据要素是根据口令码值生成,所以口令码验证器数据要素的值可以用作穷举搜索攻击的起点以检索口令码的值。然而,由于口令码验证器数据要素被计算为不仅口令码值而且高熵的口令码隐蔽数据要素值的不可逆函数,所以这种穷举搜索攻击在计算上是不可行的。因此,知道口令码验证器数据要素本身不允许获得口令码的值。由于一方面的密码凭证生成密钥值和另一方面的密码和口令码验证器数据要素的值彼此独立,因此组合得知口令码验证器数据要素值和对应密码凭证生成密钥两者本身不允许获得口令码值。因此,掌握存储在认证服务器中的口令码验证器数据要素值和/或相应的密码凭证生成密钥值的攻击者仍然不能获得用户的口令码。由于动态认证凭证的值完全由口令码验证器数据要素值和相应的密码凭证生成密钥值的组合来确定(并且因此不添加任何信息),所以即使已经截获动态认证凭证的值并且已经掌握存储在认证服务器上的对应口令码验证器数据要素值和/或相应的密码凭证生成密钥值的攻击者仍然不能获得用户的口令码。

由于动态认证凭证值是口令码值、动态变量值、口令码隐蔽数据要素值和密码凭证密钥值的函数,并且由于动态变量值可能易于获取或猜测或在实践中可能具有低熵,一方面可能掌握动态认证凭证值并且另一方面可能掌握在生成动态凭证值中所使用的口令码隐蔽数据要素值和密码凭证生成密钥值的攻击者,可能使用该动态凭证值来安装潜在可行的穷举搜索攻击。

然而,因为根据本发明的各方面的认证令牌或认证客户端,在已经使用密码凭证生成密钥值来生成动态认证凭证之后,丢弃任何密码凭证生成密钥值和可以从其导出该特定密码凭证生成密钥值的状态变量的值,甚至一方面掌握存储在特定认证令牌或认证客户端中的口令码隐蔽数据要素、密码凭证生成密钥和状态变量的值,并且另一方面掌握已经由该特定认证令牌或认证客户端生成的任何或所有动态认证凭证的值的攻击者,仍然不具有一方面是动态认证凭证值并且另一方面是在生成动态认证凭证值中所使用的口令码隐蔽数据要素值和特定密码凭证生成密钥值两者的这两方面的组合,因此仍然不能安装可行的穷尽搜索攻击来检索该特定认证令牌或认证客户端的用户的口令码。

已经描述了许多实施方式。然而,应当理解的是可以做出各种修改。例如,一个或多个实施方式的要素可以进行组合、删除、修改或补充从而形成另外的实施方式。因此,其他的实施方式在所附权利要求的范围中。另外,虽然特定的特征只针对几个实施方式中的一个实施方式进行公开,但是当对于任何给定或特定应用有益并且期望时,这样的特征可以与其他实施方式的一个或多个其他特征进行组合。虽然上面描述了各种实施例,应当理解的是它们仅作为示例来呈现而并非限制。特定地,当然无法为了描述所要求的主体而描述组件或方法的每个可想到的组合,但是本领域的普通技术人员之一可以认识到的是其他组合和置换是可能的。因此,在此教导的宽度和范围不应该受到任何上述示例性实施例的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1