一种认证授权方法与流程

文档序号:13763153阅读:405来源:国知局
本发明涉及网络安全领域,尤其涉及一种认证授权方法。
背景技术
:随着互联网的迅猛发展,入侵与反入侵、网络攻击与防御措施愈演愈烈,网络安全问题越来越严重。因此,如何保证通信双方的信息在互联网上安全、可靠进行传输是人们一直关注的问题。针对于此,各种认证协议和权限描述方法应运而生。综合分析前人已有的研究成果,对于认证协议和权限描述方法存在诸多问题。具体包括:(1)目前的认证协议和权限描述方法都对应于大型系统、复杂权限描述、用户繁多、网络状况复杂、安全条件恶劣的情况,然而将其应用到小型系统、用户较少、服务和业务不复杂、安全条件不复杂的情况并不适用;(2)轻量级的认证协议对于有一定计算能力的智能终端或者其他需要轻量化、减轻消耗、简化客户端的情况研究不多,而且现有的技术一般都是功能全面但是复杂或者简单但是功能少。对于如何在功能和轻量化之间寻求平衡,还需更多的研究。因此,目前亟待提出一种认证授权方法,以将认证授权系统轻量化的同时还具有足够的安全性。技术实现要素:本发明要实现的目的在于,针对小型系统、智能终端和用户较少的情况设计轻量化认证协议和权限描述方法,从客户端和服务器两方面简化逻辑、降低能量与功率消耗、减少通信次数,从而将整个认证授权系统轻量化,同时在轻量化的基础上力求具有足够的安全性。为实现上述目的,本发明提出了一种认证授权方法,以实现轻量化的基础上还能保证足够的安全性。本发明的技术方案为:一种认证授权方法,包括:第一数据准备步骤,客户端将用户身份标识的散列值发送给认证服务器;第一查询步骤,所述认证服务器根据所述用户身份标识的散列值查询用户数据库,得到第一查询结果,所述第一查询结果包括与所述用户相对应的用户信息及用户权限;认证步骤,所述认证服务器根据所述第一查询结果判断用户是否通过认证,并在所述用户通过认证时,将与所述用户相对应的认证票据发送给所述客户端,所述认证票据包括所述用户权限;第二数据准备步骤,所述客户端将客户端票据以及与所述用户相对应的客户端用户申请服务标识发送给授权服务器;第二查询步骤,所述授权服务器根据授权用户申请服务标识查询服务数据库,得到第二查询结果,所述第二查询结果包括与所述授权用户申请服务标识相对应的服务权限;所述授权服务器分别对所述用户权限和所述服务权限进行二进制展开,得到对应所述用户权限的用户权限描述以及对应所述服务权限的服务权限描述;授权步骤,所述授权服务器根据所述用户权限描述和所述服务权限描述,确定所述用户是否有权申请与所述授权用户申请服务标识相关联的服务。优选的是,所述用户权限为十进制数或十六进制数,所述服务权限为十进制数或十六进制数。优选的是,所述授权步骤包括:判断构成所述服务权限描述的二进制展开项与构成所述用户权限描述的二进制展开项是否有交集;在判断出构成所述服务权限描述的二进制展开项与构成所述用户权限描述的二进制展开项有交集时,确定所述用户有权申请与所述授权用户申请服务标识相关联的服务。优选的是,在所述第一数据准备步骤中,所述客户端将第一消息发送给认证服务器,其中,所述第一消息包括第一数据串和所述用户身份标识的散列值,所述客户端利用用户密钥对由客户端用户身份标识、第一客户端随机值和第一消息时间戳构成的数据串进行加密,以得到所述第一数据串;在所述第一查询步骤中,所述认证服务器接收所述第一消息,并利用所述第一消息中的用户身份标识的散列值查询用户数据库,得到所述第一查询结果,所述第一查询结果包括具有认证用户身份标识和用户密码的用户信息、所述用户权限、用户权限剩余时间、用户权限剩余次数和会话密钥;在所述认证步骤中,所述认证服务器根据所述第一消息和所述第一查询结果,判断用户是否通过认证,并在判断出所述用户通过认证时,将第二消息和第三消息分别发送给所述客户端和授权服务器;其中,所述第二消息包括所述认证票据、由所述用户密钥加密的会话密钥以及第二数据串,所述认证服务器利用所述会话密钥对由第一认证随机值、第二消息时间戳和第二认证随机值构成的数据串进行加密,以得到所述第二数据串;所述认证服务器利用服务器共享密钥对由所述第二认证随机值、所述认证票据、所述会话密钥和所述用户身份标识的散列值构成的数据串进行加密,以得到所述第三消息;所述方法还包括申请步骤,所述客户端接收所述第二消息,并根据所述第一消息和所述第二消息,判断所述认证服务器是否合法,在判断出所述认证服务器合法时,接受所述第二消息,,并执行所述第二数据准备步骤;在判断出所述认证服务器不合法时,拒绝所述第二消息,并终止流程;在所述第二数据准备步骤中,所述客户端将第四消息发送给授权服务器,所述第四消息包括所述客户端票据、第三数据串、用户身份标识的散列值,所述客户端利用所述会话密钥对由第二客户端随机值、第四消息时间戳、客户端用户申请服务标识和第三客户端随机值构成的数据串进行加密,以得到所述第三数据串;在所述第二查询步骤中,所述授权服务器接收所述第四消息,并根据所述客户端票据的过期状态、所述第三消息和所述第四消息,判断所述用户是否有权查询服务数据库;并在判断出所述用户有权查询服务数据库时,利用授权用户申请服务标识查询所述服务数据库,得到所述第二查询结果,所述第二查询结果包括与所述授权用户申请服务标识相对应的服务权限;所述授权服务器分别对所述用户权限和所述服务权限进行二进制展开,得到对应所述用户权限的用户权限描述以及对应所述服务权限的服务权限描述;在所述授权步骤中,所述授权服务器根据所述用户权限描述和所述服务权限描述,确定所述用户是否有权申请与所述授权用户申请服务标识相关联的服务,并在所述用户有权申请所述服务时,所述授权服务器将第五消息发送给所述客户端,所述授权服务器利用所述会话密钥对由所述授权用户申请服务标识、第五消息时间戳和第三授权随机值构成的数据串进行加密,以得到所述第五消息;所述方法还包括服务接受步骤,所述客户端接收所述第五消息,并利用所述第四消息和所述第五消息,判断所述授权服务器是否合法,在判断出所述授权服务器合法时,接受所述第五消息,并接受服务;在判断出所述授权服务器不合法时,拒绝所述第五消息,并终止流程。优选的是,在所述认证步骤中,所述认证服务器根据所述第一消息和所述第一查询结果,判断用户是否通过认证,具体包括:判断所述用户权限剩余时间、用户权限剩余次数、客户端用户身份标识和第一消息时间戳是否满足第一预设条件,并在判断出满足所述第一预设条件时,确定用户通过认证;其中,所述第一预设条件包括:所述用户权限剩余时间非零,所述用户权限剩余次数非零,所述客户端用户身份标识和所述认证用户身份标识一致,以及所述第一消息时间戳与所述认证服务器当前的时间戳的间隔小于预设的时间间隔阈值;或者判断所述用户权限剩余时间、客户端用户身份标识和第一消息时间戳是否满足第二预设条件,并在判断出满足所述第二预设条件时,确定用户通过认证;其中,所述第二预设条件包括:所述用户权限剩余时间非零,所述客户端用户身份标识和所述认证用户身份标识一致,以及所述第一消息时间戳与所述认证服务器当前的时间戳的间隔小于预设的时间间隔阈值。优选的是,在所述申请步骤中,所述客户端根据所述第一消息和所述第二消息,判断所述认证服务器是否合法,具体包括:判断所述第一认证随机值和第二消息时间戳是否满足第三预设条件,并在判断出满足所述第三预设条件时,确定所述认证服务器合法;其中,所述第三预设条件包括:所述第一认证随机值与所述第一客户端随机值一致,并且所述第二消息时间戳与所述客户端当前的时间戳的间隔小于预设的时间间隔阈值。优选的是,在所述第二查询步骤中,所述授权服务器根据所述客户端票据的过期状态、所述第三消息和所述第四消息,判断所述用户是否有权查询服务数据库,具体包括:判断所述客户端票据的过期状态、所述客户端票据、第二客户端随机值和第四消息时间戳是否满足第四预设条件,并在判断出满足所述第四预设条件时,确定用户有权查询服务数据库;其中,所述第四预设条件包括:所述客户端票据未过期,所述客户端票据与所述认证票据一致,所述第二客户端随机值与所述第二认证随机值一致,并且所述第四消息时间戳与所述授权服务器当前的时间戳的间隔小于预设的时间间隔阈值。优选的是,在所述服务接受步骤中,所述客户端利用所述第四消息和所述第五消息,判断所述授权服务器是否合法,具体包括:判断所述授权用户申请服务标识、所述第三授权随机值和第五消息时间戳是否满足第五预设条件,并在判断出满足所述第五预设条件时,确定所述授权服务器合法;其中,所述第五预设条件包括:所述授权用户申请服务标识与所述客户端用户申请服务标识一致,所述第三授权随机值与第三客户端随机值一致,并且所述第五消息时间戳与所述客户端当前的时间戳的间隔小于预设的时间间隔阈值。优选的是,所述的方法还包括:当所述客户端票据的过期状态表征所述客户端票据过期时,重新发起认证授权;所述重新发起认证授权包括:在所述第一数据准备步骤中,所述客户端利用所述会话密钥对由客户端用户身份标识、第一客户端随机值和第一消息时间戳构成的数据串进行加密,以得到所述第一数据串;在所述第一查询步骤中,所述第一查询结果包括具有认证用户身份标识和用户密码的用户信息、所述用户权限、用户权限剩余时间、用户权限剩余次数和新会话密钥;在所述认证步骤中,所述第二消息包括所述认证票据、由所述会话密钥加密的新会话密钥以及第二数据串,所述认证服务器利用所述新会话密钥对由所述第一认证随机值、第二消息时间戳和第二认证随机值构成的数据串进行加密,以得到所述第二数据串;所述认证服务器利用服务器共享密钥对由所述第二认证随机值、所述认证票据、所述新会话密钥和所述用户身份标识的散列值构成的数据串进行加密,以得到所述第三消息;在所述第二数据准备步骤中,所述客户端利用所述新会话密钥对由所述第二客户端随机值、第四消息时间戳、客户端用户申请服务标识和第三客户端随机值构成的数据串进行加密,以得到所述第三数据串;在所述授权步骤中,所述授权服务器利用所述新会话密钥对由所述授权用户申请服务标识、第五消息时间戳和第三授权随机值构成的数据串进行加密,以得到所述第五消息。优选的是,当所述客户端票据的过期状态表征所述客户端票据未过期时,利用所述客户端票据申请多次服务。与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:1)应用本发明实施例提供的认证授权方法,实现了认证授权系统的轻量化,同时还保证了足够的安全性。2)本发明支持按时间和次数两种计费方式,足以满足一定程度服务的需求。3)本发明中的票据仅包含用户身份和用户权限,使得在票据的有效期之内能申请多次服务。4)本发明对于有一定计算和功率性能的智能终端和用户不多的小型系统非常适用。本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:图1示出了本发明实施例认证授权方法的一种流程示意图;图2示出了本发明实施例认证授权方法的另一种流程示意图。具体实施方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。在现有技术中,为了保证通信双方的信息在互联网上安全性和可靠性,已提出多种认证协议和权限描述方法。具体地,关于认证,已提出IPsec认证协议、SSL认证协议、Kerberos认证协议和Radius认证协议。其中,IPsec认证协议是一种使用RSA、Diffie-Hellman、md5、SHA-1等算法的网络安全方案,能够认证用户身份和进行安全通信,但它是一种重量级的方案。SSL认证协议是一种建立在TCP/IP基础上使用CA证书来认证的安全协议,实现SSL需要额外的CA基础设施。IPsec和SSL都是商用级的安全方案,是针对pc/web环境设计的,有其适用范围,缺乏扩展性。Kerberos认证协议能够实现客户端和服务器的双向认证,变化的会话密钥和加密的票据增强了协议的安全性,应用广泛。然而其认证和授权过程过于繁琐,平均申请一次服务要6条消息,而且只能继续申请同一服务器提供的服务,如果更换其他服务器提供的服务,就要从头开始认证。现有的研究对于Kerberos协议的改进较多,一般使用椭圆曲线体系或者其他非对称加密体制对其进行安全性和有限的轻量化改进,安全性虽然得到了提升,但是没有从根本上解决Kerberos的轻量化问题。轻量化要从全方位着手,仅仅一个方面、一种算法是不够的。Radius认证协议是一种轻量级的认证协议,但是其不包含双向认证,仅能实现服务器到客户端的认证,而不能应对伪装服务器攻击。对于轻量级认证协议,现有的研究多数用于RFID或者其他需要严格控制功耗的设备,它们的优点是轻量化、功耗很低、对设备计算能力要求不高。关于权限描述,目前的权限描述模型大多着眼于完整的系统以及复杂的权限描述,一般包含主体、客体、权限、约束和需求。主体授权客体在约束范围内使用权限,并对客体提出需求才能使用授权。这样的模型虽然能够适应复杂的环境、满足各种需求,但是复杂而且不容易实现。基于上述分析,现有的技术一般都是功能全面但是复杂或者简单但是功能少。对于如何在功能和轻量化之间寻求平衡,还需更多的研究。本发明实施例的目的在于:针对小型系统、智能终端和用户较少的情况设计轻量化认证协议和权限描述方法,从客户端和服务器两方面简化逻辑、降低能量与功率消耗、减少通信次数,同时力求具有足够的安全性。为实现上述目的,本发明实施例提供了一种通过轻量化认证协议和二进制权限描述相结合而成的认证授权方法,以实现整个认证授权系统的轻量化、减少各个环节的消耗、减轻服务器和客户端的负担、对用户提供更便捷更灵活的服务、并且具有足够的安全性。实施例一图1示出了本发明实施例认证授权方法的一种流程示意图。参照图1,本发明实施例认证授权方法主要包括步骤101至步骤106。在步骤101中,即第一数据准备步骤,客户端将用户身份标识的散列值发送给认证服务器。在步骤102中,即第一查询步骤,认证服务器根据用户身份标识的散列值查询用户数据库,得到第一查询结果。这里,所述第一查询结果包括与所述用户相对应的用户信息及用户权限。在步骤103中,即认证步骤,所述认证服务器根据所述第一查询结果判断用户是否通过认证,并在所述用户通过认证时,将与所述用户相对应的认证票据发送给所述客户端。其中,所述认证票据包括所述用户权限。在步骤104中,即第二数据准备步骤,所述客户端将客户端票据以及与所述用户相对应的客户端用户申请服务标识发送给授权服务器。在步骤105中,即第二查询步骤,所述授权服务器根据授权用户申请服务标识查询服务数据库,得到第二查询结果。所述第二查询结果包括与所述授权用户申请服务标识相对应的服务权限。所述授权服务器分别对所述用户权限和所述服务权限进行二进制展开,得到对应所述用户权限的用户权限描述以及对应所述服务权限的服务权限描述。在步骤106中,授权步骤,所述授权服务器根据所述用户权限描述和所述服务权限描述,确定所述用户是否有权申请与所述授权用户申请服务标识相关联的服务。应用本实施例所述的认证授权方法体现了轻量级的认证授权流程。具体地,本实施例从客户端和服务器两方面简化了逻辑、降低了能量和功率消耗、减少了通信次数,从而将整个认证授权系统轻量化。本实施例实现简单,从而能够为用户提供更便捷、更灵活的服务。实施例二本实施例对实施例一中的用户权限和服务权限进行了进一步优化。在本实施例中,用户权限为十进制数或十六进制数。所述服务权限为十进制数或十六进制数。在判断所述用户是否有权申请与授权用户申请服务标识相关联的服务时,首先需要分别将用户权限和服务权限进行二进制展开,然后判断构成所述服务权限描述的二进制展开项与构成所述用户权限描述的二进制展开项是否有交集。在判断出构成所述服务权限描述的二进制展开项与构成所述用户权限描述的二进制展开项有交集时,确定所述用户有权申请与所述授权用户申请服务标识相关联的服务。将二进制数据表示为加权系数的形式(以整数为例),即(an-1an-2an-3…a0)2=an-1×2n-1+an-2×2n-2+an-3×2n-3+…+a0×20。其中,an-1、an-2、an-3…a0的取值分别为0或1。将上述算式(an-1an-2an-3…a0)2=an-1×2n-1+an-2×2n-2+an-3×2n-3+…+a0×20的左侧转换为十进制或十六进制,就得到202122…2n(n→∞)对于每个十进制数字或十六进制数字的一种线性表示。由于数字的唯一性,每个十进制数字或十六进制数字的线性表示不同,并且系数都为0或1。本实施例中优选地将二进制展开项202122…2n(n→∞)作为用户权限的权限描述或服务权限的权限描述。针对每个用户,存在与该用户相对应的由十进制数或十六进制数表示的用户权限或服务权限。在实际的应用中,也就是把用户分为n组,其中n为非零的整数,并用二进制展开项202122…2n作为分组的标识,也就是第一分组、第二分组、第四分组、第八分组、第十六分组等。如果某个用户只属于第四分组,那么他的权限就是4。如果某个用户同时属于第四分组和第十六分组,那么该用户的权限就是4+16=20。通俗地说,这样的分组对应了打包的服务,或者称其为业务,而用户可能订阅一个或者多个业务。服务的唯一标识是用户申请服务标识。每个用户申请服务标识允许由二进制展开项202122…2n(n→∞)描述的用户申请服务。也就是说每个用户申请服务标识允许一个或多个用户组中的用户申请服务。例如,某个用户申请服务标识允许第一分组、第二分组和第十六分组的申请,那么该用户的服务权限就是1+2+16=19。如果某个用户申请服务标识允许第四分组、第八分组和第三十二分组的申请,那么该用户的权服务权限就是4+8+32=44。因此,只要用户申请服务标识允许申请的用户组不同(或者说用户申请服务标识属于的业务分组不同),那么它们的服务权限也不同。基于用户权限和服务权限的设计,认证授权数据库需要建立至少两张表:一张用户信息及用户权限表(该表存储在用户数据库中),一张服务权限表(该表存储在服务数据库中),并且二者都是一一对应的表。具体来说,服务器(认证服务器或者授权服务器)收到用户申请服务的请求时,能够获得用户身份标识与用户申请服务标识。服务器利用用户身份标识查询用户数据库,以得到用户权限。服务器利用用户申请服务标识查询服务数据库,以得到服务权限。将用户权限和服务权限分别进行二进制展开,如果用户权限对应的二进制展开项和服务权限对应的二进制展开项具有相同的一项或多项,那么就给予用户服务,否则不给予用户服务。例如,服务权限为45,用户权限描述为4,那么将服务权限45分解为32+8+4+1。可以看出,二进制展开项32+8+4+1包括二进制展开项4,因此给予用户服务。又例如,服务权限为45,用户权限为20,那么将服务权限45分解为32+8+4+1,将用户权限20分解为16+4。可以看出,二进制展开项32+8+4+1与二进制展开项16+4拥有共同的权限描述4(这说明这个用户订阅了业务4,而这个服务正好包含在业务4内),因此给予用户服务。如果服务权限描述与用户权限描述之间无交集(两者不包括相同的一项或多项),那么就拒绝用户的请求。应用本实施例所述的二进制权限描述方法,通过分别对用户权限和服务权限进行二进制展开并判断展开项是否有交集,来确定用户是否有权申请与用户申请服务标识相关联的服务。此外,数据库仅需一张用户信息及用户权限表和一张服务权限表,权限描述字段简单、易于处理和判断。可见,通过本实施例所述的二进制权限描述方法进一步提高了认证授权轻量化。实施例三为了清楚地展示本发明实施例的方案和有益效果,在具体展开说明本发明的第三个具体实施例之前,首先进行一些定义:C→S:表示这条消息是从客户端发给认证服务器的S→C:表示这条消息是从认证服务器发给客户端的C→S':表示这条消息是从客户端发给授权服务器的S'→C:表示这条消息是从授权服务器发给客户端的S→S':表示这条消息是从认证服务器发给授权服务器的S'→S:表示这条消息是从授权服务器发给认证服务器的E(text1,text2,…;K):表示将text1与text2等串接起来用密钥K加密ID:用户身份标识R1,R2,R3:随机数或者随机值Timestamp:时间戳Kc:用户密钥,客户端与服务端共享Kcss:会话密钥Kcss':旧的会话密钥SID:用户申请服务标识Ks:服务器共享密钥E(text1,K1),E(text2,K2):表示这一条消息由被K1加密的text1与被K2加密的text2串接组成第一消息:C→S:E(客户端ID,客户端R1,第一消息Timestamp;Kc),Hash(ID)第二消息:S→C:E(认证ID,Timestamp,Character;Ks),E(Kcss,Kc),E(认证R1,第二消息Timestamp,认证R2;Kcss)其中,第一部分E(认证ID,Timestamp,Character;Ks)也称为认证ServerTicket(认证票据),简称认证ST。虽然这里以不包含Number的认证ST举例,但认证ST实际上可能会包含Number。因此,Number的位置必须留出来,如果不包含Number,则必须在Number的预留位置放置特殊的不会混淆的标记。但是在表述上,如果认证ST中没有Number则表述为E(认证ID,Timestamp,Character;Ks),如果包含Number,则认证ST表述为E(认证ID,Timestamp,Character,Number;Ks)。在客户端ST的表示方法中,除了用客户端ID来代替认证ID之外,其余参量全部与认证ST一致,并且也有包含Number和不包含Number两种情况。第三消息:S→S':E(认证R2,认证ST,Kcss,Hash(ID);Ks)第四消息:C→S':客户端ST,E(客户端R2,第四消息Timestamp,客户端SID,客户端R3;Kcss),Hash(ID)第五消息:S'→C:E(授权SID,第五消息Timestamp,授权R3;Kcss)第六消息:C→S:E(客户端ID,客户端R1,第六消息Timestamp;Kcss'),Hash(ID)第七消息:S→C:E(认证ID,Timestamp,Character,Ks),E(Kcss,Kcss'),E(认证R1,第七消息Timestamp,认证R2;Kcss)第八消息:S'→S:E(Number,Hash(ID);Ks)针对上述消息定义,需要说明的是:客户端ST是指客户端从认证服务器接收到的ST,认证ST是指认证服务器发给客户端或授权服务器的ST。客户端R1(第一客户端随机值)是指客户端生成的R1,认证R1(第一认证随机值)是指认证服务器从客户端接收到的R1。客户端R2(第二客户端随机值)是指客户端从认证服务器接收的R2,认证R2(第二认证随机值)是指认证服务器生成的R2以及授权服务器从认证服务器接收的R2。客户端R3(第三客户端随机值)是指客户端生成的R3,授权R3(第三授权随机值)是指授权服务器从客户端接收的R3。客户端ID是客户端获取的ID,认证ID是从用户数据库中查询到的ID。客户端SID是指客户端获取的SID,授权SID是指授权服务器接收客户端的SID。第一消息Timestamp、第四消息Timestamp和第六消息Timestamp分别指的是客户端发送第一消息、第四消息和第六消息时的Timestamp,第二消息Timestamp和第七消息Timestamp分别指的是认证服务器发送第二消息和第七消息时的Timestamp,第五消息Timestamp是指授权服务器发送第五消息时的Timestamp。客户端ST中的Timestamp是指客户端ST的过期Timestamp,即客户端ST过期时刻的Timestamp,认证ST中的Timestamp是指认证ST的过期Timestamp,即认证ST过期时刻的Timestamp。用户数据库字段:服务数据库字段:认证SID服务权限认证用户申请服务标识服务权限图2示出了本发明实施例认证授权方法的另一种流程示意图。如图2所示,根据本实施例认证授权方法,具体的协议工作流程包括步骤201至步骤208。在步骤201中,即第一数据准备步骤,客户端获取ID及Password,生成客户端R1、第一消息Timestamp、Kc,将客户端ID、客户端R1、第一时间Timestamp使用Kc加密,并在其后附加Hash(ID)组成第一消息发送给认证服务器。在具体实施过程中,当客户端ST过期时重新发起认证。客户端获取ID、Kcss',生成客户端R1,第六消息Timestamp,将客户端ID、客户端R1、第六消息Timestamp使用Kcss'加密,并在其后附加Hash(ID)组成第六消息发送给认证服务器。在步骤202中,即第一查询步骤,认证服务器在收到第一消息或第六消息的请求之后使用Hash(ID)查询用户数据库,查到第一查询结果:认证ID、Password、Character、Timeleft、Number、Kcss,并且用户数据库将第一查询结果返回给认证服务器。在步骤203中,即认证步骤,认证服务器接收到用户数据库的第一查询结果后,首先检查服务是按次收费的还是按时间订阅的。如果服务是按次收费的,需要进一步判断客户端ST的过期状态以及Number的状态(Number为零时返回错误)。如果服务是按时间订阅的,需要进一步判断客户端ST的过期状态以及Timeleft的状态(Timeleft为零时返回错误)。具体分为以下四种情况。第一种情况,在服务按次收费的情况下,当客户端ST未过期且Number不为零时:首先使用认证ID、Password生成Kc,解密收到的第一消息,取出客户端ID,与用户数据库中返回的认证ID比较,不同则返回错误,同时检查收到的第一消息Timestamp与当前认证服务器Timestamp,差别过大返回错误。否则执行以下步骤:使用认证ID、认证ST的过期Timestamp、Character、Number生成认证ST,将生成的Kcss用Kc加密,将认证R1、第二消息Timestamp、生成的认证R2用Kcss加密,三部分组合成第二消息发送给客户端。第二种情况,在服务按次收费的情况下,当客户端ST过期且Number不为零时:首先用Kcss'解密收到的第六消息,取出客户端ID,与用户数据库中返回的认证ID比较,不同则返回错误,同时检查收到的第六消息Timestamp与当前认证服务器Timestamp,差别过大返回错误。否则执行以下步骤:使用认证ID,认证ST的过期Timestamp,Character,Number生成认证ST,生成的Kcss用Kcss'加密,将认证R1,第七消息Timestamp,生成的认证R2用Kcss加密,三部分组合成第七消息发送给客户端。第三种情况,在服务按时间订阅的情况下,当客户端ST未过期且Timeleft不为零时:首先使用认证ID、Password生成Kc,解密收到的第一消息,取出客户端ID,与数据库中返回的认证ID比较,不同则返回错误,同时检查收到的第一消息Timestamp与当前认证服务器Timestamp,差别过大返回错误。否则执行以下步骤:首先判断Timeleft值是否小于认证ST的有效期,如果小于,那么认证ST的过期Timestamp等于当前认证服务器Timestamp与Timeleft之和,否则为认证ST的有效期。然后,使用认证ID、认证ST的过期Timestamp、Character生成认证ST,将生成的Kcss用Kc加密,将认证R1,第二消息Timestamp,生成的认证R2用Kcss加密,三部分组合成第二消息发送给客户端。第四种情况,在服务按时间订阅的情况下,当客户端ST过期且Timeleft不为零时:首先用Kcss'解密收到的第六消息,取出客户端ID,与用户数据库中返回的认证ID比较,不同则返回错误,同时检查收到的第六消息Timestamp与当前认证服务器Timestamp,差别过大返回错误。否则执行以下步骤:首先判断Timeleft值是否小于认证ST的有效期,如果小于,那么认证ST的过期Timestamp等于当前认证服务器Timestamp与Timeleft之和,否则为认证ST的有效期。然后,使用认证ID,认证ST的过期Timestamp,Character生成认证ST,生成的Kcss用Kcss'加密,将认证R1,第七消息Timestamp,生成的认证R2用Kcss加密,三部分组合成第七消息发送给客户端。在步骤204中,即申请步骤,客户端收到第二消息或第七消息代表客户端通过了认证并且接收到了代表身份的认证ST,之后就是判断认证服务器是否合法的流程:若客户端收到第二消息,首先使用Kc解密出来Kcss,并使用Kcss解密出认证R1、第二消息Timestamp、认证R2,并检查认证R1与第二消息Timestamp的值,如果认证R1与客户端R1不同或第二消息Timestamp与当前客户端Timestamp差别过大,就返回错误。如果没有错误,确定认证服务器合法,用户申请服务。并且在客户端ST有效期之内,可以使用ST申请多次服务。若客户端收到第七消息,首先使用Kcss'解密出来Kcss,并使用Kcss解密出认证R1、第七消息Timestamp、认证R2,并检查认证R1与第七消息Timestamp的值,如果认证R1与客户端R1不同或第七消息Timestamp与当前客户端Timestamp差别过大,就返回错误。如果没有错误,确定认证服务器合法,用户申请服务。并且在客户端ST有效期之内,可以使用ST申请多次服务。在步骤205中,即第二数据准备步骤,客户端获取SID,并正确生成客户端R3、第四消息Timestamp,将客户端R2、第四消息Timestamp、客户端SID、客户端R3以Kcss加密,与客户端ST一起,并在最后附加Hash(ID),以第四消息的格式发送给授权服务器,以申请服务。在步骤206中,即第二查询步骤,授权服务器收到第四消息的请求之后,首先判断授权服务器与认证服务器是否相同,并且检查服务是按次收费的还是按时间订阅的。具体分为以下四种情况。第一种情况,如果授权服务器与认证服务器不同且服务是按时间订阅的,那么授权服务器会收到第三消息,使用Ks解密出认证R2、认证ST、Kcss、Hash(ID)。使用Hash(ID)鉴别客户端发来的消息,首先把第三消息解密出来的认证ST与收到的第四消息中的客户端ST进行比较,如果不同则返回错误;如果相同,使用Ks解密认证ST,并且查看认证ST中的Timestamp,如果认证ST过期则返回错误;如果未过期,那么从认证ST中取得Character存放备用。使用正确的Kcss解密收到的第四消息,得到客户端R2、第四消息Timestamp、客户端SID、客户端R3,逐项检查:首先检查客户端R2与第三消息得到的认证R2是否相同,不同则返回错误;相同则进一步检查第四消息Timestamp与当前授权服务器Timestamp,差别过大则返回错误。如果没有错误,那么使用授权SID查询服务数据库,得到第二查询结果,所述第二查询结果包括与所述授权SID相对应的服务权限。所述授权服务器分别对所述用户权限和所述服务权限进行二进制展开,得到对应所述用户权限的用户权限描述以及对应所述服务权限的服务权限描述。第二种情况,如果授权服务器与认证服务器相同且服务是按时间订阅的,那么授权服务器会通过进程间通信的方式或者其他渠道收到认证R2、认证ST、Kcss、Hash(ID)。使用Hash(ID)鉴别客户端发来的消息,首先把从认证服务器接收到的认证ST解密出来并与收到的第四消息中的客户端ST进行比较,如果不同则返回错误;如果相同,使用Ks解密认证ST,并且查看认证ST中的Timestamp,如果认证ST过期则返回错误;如果未过期,那么从认证ST中取得Character存放备用。使用正确的Kcss解密收到的的第四消息,得到客户端R2、第四消息Timestamp、客户端SID、客户端R3,逐项检查:首先检查客户端R2与得到的认证R2是否相同,不同则返回错误;相同则进一步检查第四消息Timestamp与当前授权服务器Timestamp,差别过大则返回错误。如果没有错误,那么使用授权SID查询服务数据库,得到所述第二查询结果,所述第二查询结果包括与所述授权SID相对应的服务权限。所述授权服务器分别对所述用户权限和所述服务权限进行二进制展开,得到对应所述用户权限的用户权限描述以及对应所述服务权限的服务权限描述。第三种情况,如果授权服务器与认证服务器不同且服务是按次数订阅的,那么授权服务器会收到第三消息,使用Ks解密出认证R2、认证ST、Kcss、Hash(ID)。使用Hash(ID)鉴别客户端发来的消息,首先把第三消息解密出来的认证ST与收到的第四消息中的客户端ST比较,如果不同则返回错误;如果相同,使用Ks解密认证ST,查看Timestamp与Number,如果认证ST过期或者Number为0,返回错误;否则,从认证ST中取得Character、Number存放备用。使用正确的Kcss解密收到的第四消息,得到客户端R2、第四消息Timestamp、客户端SID、客户端R3,逐项检查:首先检查客户端R2与第三消息得到的认证R2是否相同,不同则返回错误;相同则进一步检查第四消息Timestamp与当前授权服务器Timestamp,差别过大则返回错误。如果没有错误,那么使用授权SID查询服务数据库,得到所述第二查询结果,所述第二查询结果包括与所述授权SID相对应的服务权限。所述授权服务器分别对所述用户权限和所述服务权限进行二进制展开,得到对应所述用户权限的用户权限描述及对应服务权限的服务权限描述。第四种情况,如果授权服务器与认证服务器相同且服务是按次数订阅的,那么授权服务器会通过进程间通信的方式或者其他渠道收到认证R2、认证ST、Kcss、Hash(ID)。使用Hash(ID)鉴别客户端发来的消息,首先把从认证服务器接收到的认证ST解密出来并与收到的第四消息中的客户端ST进行比较,如果不同则返回错误;如果相同,使用Ks解密认证ST,查看Timestamp与Number,如果认证ST过期或者Number为0,返回错误;否则,从认证ST中取得Character、Number存放备用。使用正确的Kcss解密收到的第四消息,得到客户端R2、第四消息Timestamp、客户端SID、客户端R3,逐项检查:首先检查客户端R2与得到的认证R2是否相同,不同则返回错误;相同则进一步检查第四消息Timestamp与当前授权服务器Timestamp,差别过大则返回错误。如果没有错误,那么使用授权SID查询服务数据库,得到所述第二查询结果,所述第二查询结果包括与所述授权SID相对应的服务权限。所述授权服务器分别对所述用户权限和所述服务权限进行二进制展开,得到对应所述用户权限的用户权限描述以及对应所述服务权限的服务权限描述。在步骤207中,即授权步骤,所述授权服务器根据所述用户权限描述和所述服务权限描述,利用实施例二中的方法确定所述用户是否有权申请与所述授权SID相关联的服务。如果认证ST包含Number,也就是按次收费型的服务,那么若用户有权限则Number=Number-1,用Ks加密Number及Hash(ID),以第八消息格式发送给认证服务器,并且将收到的授权SID、第五消息Timestamp、授权R3用Kcss加密,以第五消息格式发送给客户端。如果用户没有权限,则返回错误。如果认证ST不包含Number,也就是按时间订阅的服务,那么若用户有权限则将收到的授权SID、第五消息Timestamp、授权R3用Kcss加密,以第五消息格式发送给客户端。如果没有权限,则返回错误。在步骤208中,即服务接受步骤,客户端接收到第五消息,使用Kcss解密,得到授权SID、第五消息Timestamp、授权R3,将授权SID与第四消息中的客户端SID作比较,如果不同则返回错误;相同则将第五消息Timestamp与当前客户端Timestamp比较,如果差别过大则返回错误;如果未出现错误则将授权R3与第四消息中的客户端R3做比较,如果不同则返回错误;如果没有错误,确定授权服务器合法,用户接受服务。至此认证授权流程已经全部完成。需要说明的是,本实施例中涉及的差别过大指的是,需要进行比较的两个时间戳之间的间隔小于预设的时间间隔阈值。在具体实施过程中,本领域技术人员可根据实际需要设定该时间间隔阈值。综上所述,应用本发明实施例提供的认证授权方法,从客户端和服务器两方面简化了逻辑、降低了能量和功率消耗、减少了通信次数,从而实现了整个认证授权系统的轻量化,同时还保证了足够的安全性。此外,本实施例支持按时间和次数两种计费方式,足以满足一定程度服务的需求。本实施例中的票据仅包含用户身份和用户权限,使得在票据的有效期之内能申请多次服务。本实施例对于有一定计算和功率性能的智能终端和用户不多的小型系统非常适用。虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属
技术领域
内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1