身份合法性验证的方法、装置及服务器的制造方法

文档序号:8002768阅读:205来源:国知局
身份合法性验证的方法、装置及服务器的制造方法
【专利摘要】本发明公开了一种身份合法性验证的方法、装置及服务器,涉及通信【技术领域】,为解决因大量无效Access ID攻击导致的系统负荷过重的问题而发明。本发明的方法包括:服务器接收第三方上报的API调用请求,API调用请求中携带有服务器为第三方预先生成并分配的Access ID;查找Access ID中的版本位字符;根据版本位生成规则验证版本位字符所标识的版本号与服务器使用的校验位生成规则的版本号是否一致;当版本位字符验证成功时,查找Access ID中的至少一位校验位字符;根据校验位生成规则分别对至少一位校验位字符进行验证。本发明主要应用于请求调用API的过程中。
【专利说明】身份合法性验证的方法、装置及服务器

【技术领域】
[0001] 本发明涉及通信【技术领域】,尤其涉及一种身份合法性验证的方法、装置及服务器。

【背景技术】
[0002] 随着互联网技术的飞速发展,网络侧服务器向第三方开发商开放云端平台已成为 一种信息化建设的趋势。网络侧服务器面向第三方开发商开源,提供用于请求资源的应用 程序编程接口(Application Programming Interface,简称API)。第三方在进行资源请求 时向服务器请求调用API,通过服务器的API对相关数据进行处理。
[0003] 为保证API调用的安全,在调用API前网络侧服务器需要对第三方的身份进行合 法性验证,只有在验证成功后服务器才允许第三方对API进行调用。通常,在调用API之前, 服务器会为已授权的第三方分配接入身份标识(Access Identity,简称Access ID)和加 密密钥。在调用API时,第三方会将Access ID以及根据加密密钥生成的数字签名携带在 调用请求中发送给服务器。在身份合法性验证时,服务器对第三方的调用请求进行重放攻 击验证、调用频率验证以及数字签名验证等验证操作,只有这几步均验证成功时,服务器才 向第三方提供API。
[0004] 具体的,在接收到API调用请求后,服务器访问存储系统验证该请求是否为重放 攻击,如果不为重放攻击,则进一步对该请求的调用频率进行验证。在通过调用频率验证 后,服务器将该请求涉及的API数据发送给API审计系统进行审计,并更新频率控制系统中 的请求频率记录。在数字签名验证环节中,服务器访问存储系统调取与Access ID对应的 加密密钥,并根据该加密密钥生成服务器侧的数字签名,然后将API调用请求中携带的数 字签名与生成的服务器侧的数字签名进行比对,如果两者相同,则向第三方提供API。
[0005] 在实现上述身份合法性验证的过程中,发明人发现现有技术中至少存在如下问 题:在进行上述验证操作时,服务器都需要对API审计系统、频率控制系统以及存储系统进 行访问。如果未授权的第三方或黑客恶意生成大量无效的Access ID攻击服务器,则服务 器将会对这三个系统频行繁进的访问,极易使系统产生访问瓶颈,出现拒绝服务或者系统 崩溃的现象。


【发明内容】

[0006] 本发明实施例提供一种身份合法性验证的方法、装置及服务器,能够解决因大量 无效Access ID攻击导致的系统负荷过重的问题。
[0007] -方面,本实施例提供了一种身份合法性验证的方法,包括:
[0008] 服务器接收第三方上报的应用程序编程接口(API)调用请求,所述API调用请求 中携带有所述服务器为所述第三方预先生成并分配的接入身份标识(Access ID);
[0009] 查找所述Access ID中的版本位字符,所述版本位字符用于标识校验位生成规则 的版本号;
[0010] 根据版本位生成规则验证所述版本位字符所标识的版本号与服务器使用的校验 位生成规则的版本号是否一致;
[0011] 当所述版本位字符验证成功时,查找所述AccessID中的至少一位校验位字符;
[0012] 根据所述校验位生成规则分别对所述至少一位校验位字符进行验证。
[0013] 另一方面,本实施例提供了一种身份合法性验证的装置,包括:
[0014] 接收单元,用于接收第三方上报的应用程序编程接口(API)调用请求,所述API调 用请求中携带有所述服务器为所述第三方预先生成并分配的接入身份标识(AccessID);
[0015] 查找单元,用于查找所述接收单元接收的所述AccessID中的版本位字符,所述版 本位字符用于标识校验位生成规则的版本号;
[0016] 第一验证单元,用于根据版本位生成规则验证所述查找单元查找到的所述版本位 字符所标识的版本号与服务器使用的校验位生成规则的版本号是否一致;
[0017] 所述查找单元还用于当所述第一验证单元对所述版本位字符验证成功时,查找所 述接收单元接收的所述AccessID中的至少一位校验位字符;
[0018] 第二验证单元,用于根据所述校验位生成规则分别对所述查找单元查找到的所述 至少一位校验位字符进行验证。
[0019] 再一方面,本实施例提供了一种服务器,包括:输入输出电路、存储器、处理器以及 总线,其中,
[0020] 所述输入输出电路,用于接收第三方上报的应用程序编程接口(API)调用请求, 所述API调用请求中携带有所述服务器为所述第三方预先生成并分配的接入身份标识 (AccessID);
[0021] 所述存储器用于存储版本位生成规则、校验位生成规则以及校验位生成规则的版 本号;
[0022] 所述处理器,用于查找所述输入输出电路接收的所述AccessID中的版本位字符, 所述版本位字符用于标识校验位生成规则的版本号,根据所述存储器存储的版本位生成规 则验证所述版本位字符所标识的版本号与所述存储器存储的校验位生成规则的版本号是 否一致,当所述版本位字符验证成功时,查找所述AccessID中的至少一位校验位字符,根 据所述存储器存储的所述校验位生成规则分别对所述至少一位校验位字符进行验证;
[0023] 所述总线,用于连接所述输入输出电路、所述存储器以及所述处理器。
[0024] 本发明实施例提供的身份合法性验证的方法、装置及服务器,能够在对API调用 请求进行重放攻击验证之前,首先对API调用请求中携带的AccessID进行合法性验证。月艮 务器查找AccessID中用于标识校验位生成规则版本号的版本位字符,然后根据版本位生 成规则验证版本位字符所标识的版本号与服务器使用的校验位生成规则的版本号是否一 致。该验证操作的目的在于对校验位生成规则的版本进行验证,如果版本位字符所标识的 版本号与服务器生成该AccessID时使用的校验位生成规则的版本号不一致,则该Access ID为非法AccessID;如果验证结果为两者相同,则版本位字符验证成功,服务器对Access ID中的至少一位校验位字符进行验证。服务器查找AccessID中的至少一位校验位字符, 根据校验位生成规则分别对至少一位校验位字符进行验证,当至少一位校验位字符验证或 均验证成功时,确定该AccessID为合法AccessID。与现有技术中直接根据API调用请求 进行重放攻击等验证相比,本发明实施例能够在重放攻击验证前增加对AccessID合法性 验证的步骤,对携带非法AccessID的API调用请求进行剔除,仅对携带合法AccessID的 API调用请求进行重放攻击等验证,由此减少服务器对API审计等系统的访问次数,进而消 除因第三方恶意生成大量非法AccessID对系统造成的负荷影响。

【专利附图】

【附图说明】
[0025] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0026] 图1为现有技术中对API调用请求验证的流程图;
[0027] 图2为本发明实施例中身份合法性验证的方法的流程图;
[0028] 图3为本发明实施例中另一个身份合法性验证的方法的流程图;
[0029] 图4为本发明实施例中32位AccessID的示意图;
[0030] 图5为本发明实施例中确定版本位和校验位位置后的AccessID的示意图;
[0031] 图6为本发明实施例中初始化字符数组的示意图;
[0032] 图7为本发明实施例中确定次级字符后的AccessID的示意图;
[0033] 图8为本发明实施例中一种生成字符组划分方式的示意图;
[0034] 图9为本发明实施例中另一种生成字符组划分方式的示意图;
[0035] 图10为本发明实施例中确定版本位字符后的AccessID的示意图;
[0036] 图11为本发明实施例中确定版本位字符和校验位字符后的AccessID的示意图;
[0037] 图12为本发明实施例中第三方随机生成的AccessID的示意图;
[0038] 图13为本发明实施例中第一个身份合法性验证的装置的结构示意图;
[0039] 图14为本发明实施例中第二个身份合法性验证的装置的结构示意图;
[0040] 图15为本发明实施例中第三个身份合法性验证的装置的结构示意图;
[0041] 图16为本发明实施例中第四个身份合法性验证的装置的结构示意图;
[0042] 图17为本发明实施例中第五个身份合法性验证的装置的结构示意图;
[0043] 图18为本发明实施例中第六个身份合法性验证的装置的结构示意图;
[0044] 图19为本发明实施例中第七个身份合法性验证的装置的结构示意图;
[0045] 图20为本发明实施例中服务器的结构示意图。

【具体实施方式】
[0046] 下面将结合本实施例中的附图,对本实施例中的技术方案进行清楚、完整地描述, 显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的 实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都 属于本发明保护的范围。
[0047] 在对本实施例进行说明前,首先对API的调用流程进行简要介绍。如图1所示,月艮 务器在接收到第三方发送的API调用请求后,首先验证该调用请求是否为重放攻击。在进 行重放攻击验证时服务器需要访问存储系统,如果该调用请求为重放攻击则报错返回,如 果不为重放攻击则进行下一步调用频率验证。调用频率验证的目的在于限制同一个网间协 议(InternetProtocol,简称IP)号在单位时间内的请求次数,例如当某个IP号在一分钟 之内进行的调用请求超过了 60次时,该IP号的第61次的调用请求将无法通过调用频率验 证,本次调用请求报错返回;如果本次调用请求通过了调用频率验证,则服务器将本次调用 请求的数据上报给API审计系统及频率控制系统,然后进行下一步数字签名验证。在验证 数字签名时,服务器从调用请求中获取第三方提供的数字签名,然后访问存储系统获取与 调用请求中AccessID对应的加密密钥,并根据获取的加密密钥生成的数字签名。最后服 务器对第三方提供的数字签名和生成的数字签名进行比对,如果两者相同则为第三方分配 API,如果两者不同则报错返回。
[0048] 通过上述流程可以看到,在第三方请求调用API时,服务器需要多次访问API审 计系统、频率控制系统以及存储系统。如果第三方通过恶意生成非法AccessID的方式向 服务器发送大量无效的API调用请求,则服务器需要对上述系统进行频繁访问,容易导致 系统产生瓶颈甚至发生崩溃。
[0049] 为消除大量无效API调用请求对系统负荷造成的冲击,本实施例提供了一种身份 合法性验证的方法,该方法主要应用于服务器侧,用以在验证重放攻击前对AccessID的合 法性进行验证。如图2所示,该方法包括:
[0050] 201、服务器接收第三方上报的API调用请求。
[0051] 第三方开发商向网络侧服务器发送API调用请求,请求调用API的相关资源数据, 该API调用请求中携带有服务器为第三方预先生成并分配的AccessID。
[0052] 在第三方请求调用API之前,服务器会为授权的第三方预先生成并分配一个合法 的AccessID。在请求调用API时,第三方将服务器分配的AccessID添加到在API请求中 发送给服务器,由服务器对该AccessID进行合法性验证。
[0053] 本实施例中,只有授权的第三方所发送的AccessID能够通过服务器的合法性验 证,而未授权的第三方所发送的AccessID(例如通过私自编纂或随机生成的AccessID) 由于与服务器生成的AccessID不相同,因此无法通过服务器的合法性验证。服务器后续 不对其对应的API调用请求进行重放攻击等验证,由此节省因对非法API调用请求进行验 证所产生的系统负荷。
[0054] 202、服务器查找AccessID中的版本位字符。
[0055] 服务器在为授权的第三方生成AccessID时,会在AccessID中设置一位版本位 字符和至少一位校验位字符。其中,版本位字符用于标识校验位生成规则的版本号,而校验 位字符则用于对AccessID中的其他字符进行验证(版本位字符除用于标识版本号以外,也 能够对AccessID中的部分字符进行验证)。服务器在生成AccessID时,根据版本位生成 规则生成一位版本位字符,根据校验位生成规则生成至少一位校验位字符,然后将版本位 字符和校验位字符设置到AccessID中预设的字符位上。
[0056] 本实施例中,服务器可以预先存储多种版本位生成规则以及多种校验位生成规 贝U,在生成AccessID时根据网管人员的设置或者自身的脚本程序选择一种版本位生成规 则和一种校验位生成规则使用,本实施例对版本位生成规则和校验位生成规则的种类及数 量不做限制。
[0057] 在第三方请求调用API时,服务器依次对AccessID中的版本位字符和校验位字 符进行验证,即服务器首先根据版本位生成规则验证校验位生成规则的版本号是否与服务 器使用的校验位生成规则的版本号相同,然后根据校验位生成规则依次对至少一位校验位 字符进行验证。本步骤的目的在于在验证前对版本位字符进行查找,以便后续进行验证。
[0058] 203、服务器根据版本位生成规则验证版本位字符所标识的版本号与服务器使用 的校验位生成规则的版本号是否一致。
[0059] 服务器根据生成版本位字符时所使用的版本位生成规则对版本位字符进行解析, 获得校验位生成规则的版本号。如果解析出的版本号与服务器使用的校验位生成规则的版 本号不一致,则API调用请求中携带的AccessID为非法AccessID,服务器报错返回;如 果验证结果为两者一致,则服务器继续执行步骤204。例如,在生成AccessID时服务器根 据校验位生成规则4生成了两位验证位字符,根据版本位生成规则1以及校验位生成规则 的版本号4生成了一位版本位字符。在验证AccessID时,如果服务器根据版本位生成规 则1解析出的版本号为4,则版本位字符验证成功;如果服务器根据版本位生成规则1解析 出的版本号不为4,例如为3,则版本位字符验证失败。
[0060] 在实际应用中,版本位字符验证失败的可能性是存在的。譬如,服务器在生成 AccessID时使用校验位生成规则4生成校验位字符,在将生成的AccessID发送给第三方 后,校验位生成规则4被黑客恶意破解,则服务器根据新的校验位生成规则,例如校验位生 成规则3重新生成新的AccessID并发送给第三方,而此前发送给第三方的AccessID失 效作废。如果第三方使用失效的AccessID调用API,即第三方使用服务器根据校验位生成 规则4生成的AccessID请求API,则在本步骤中版本位字符验证失败。
[0061] 204、当版本位字符验证成功时,服务器查找AccessID中的至少一位校验位字符。
[0062] 在版本位字符验证成功后,即在校验位生成规则校验一致后,服务器根据生成 AccessID时使用的校验位生成规则对至少一位校验位进行验证。本步骤的目的在于对校 验位字符进行查找,以便后续进行验证。
[0063] 205、服务器根据校验位生成规则分别对至少一位校验位字符进行验证。
[0064] 在生成AccessID时服务器使用校验位生成规则2生成校验位字符,本步骤中服 务器根据校验位生成规则2对至少一位校验位字符依次进行验证。如果至少一位校验位字 符验证成功或者均验证成功,则API调用请求中的AccessID为合法AccessID,服务器继 续对API调用请求进行重放攻击等验证;如果有至少一位校验位字符验证失败,则服务器 报错返回。本实施例中,所述至少一位校验位字符验证成功或者均验证成功,是指当有一位 校验位字符时,该校验位字符验证成功,当有两位以上校验位字符时,所有校验位字符均验 证成功。
[0065] 本实施例中,校验位字符是根据AccessID中的其他字符生成得到的,校验位字符 与其他字符之间存在关联关系。如果校验位字符验证成功,则证明第三方上报的AccessID中的字符与服务器为授权第三方生成的AccessID中的字符对应相同,因此得出AccessID 合法的验证结果;如果校验位字符验证失败,则证明第三方上报的AccessID中至少有一 位字符与服务器为授权第三方生成的AccessID中对应的字符不相同,因此得出AccessID 不合法的验证结果。本实施例中所述的其他字符是指AccessID中除版本位字符和校验位 字符以外的字符,在本实施例后续的说明中,统一以次级字符或次级字符位字符替代说明。 [0066] 本发明实施例提供的身份合法性验证的方法,能够在重放攻击验证之前,对API 调用请求中的AccessID进行合法性验证。该AccessID为服务器事先为授权的第三方生 成的AccessID。在合法性验证时,服务器首先对AccessID中的版本位字符进行验证,当 版本位字符验证成功时,服务器进一步对AccessID中的校验位字符进行验证。当所有校 验位字符均验证成功时,确定该AccessID合法。与现有技术中直接对API调用请求进行 重放攻击等验证相比,可以在重放攻击验证之前,先对API调用请求中的AccessID进行合 法性验证,如果AccessID为非法AccessID则停止后续的验证步骤,直接报错返回。由此 节省大量无效API调用请求对系统负荷的冲击,保证系统的正常运行。
[0067] 此外,本发明实施例提供的身份合法性验证的方法,还能够有效防止未授权的第 三方或者黑客暴力破解AccessID。以服务器生成32位AccessID为例,其中除版本位字 符及校验位字符以外,每一位字符均可以从1至9、a至z以及A至Z共62位字符中随机产 生。假设AccessID中包含1位版本位字符和2位校验位字符,那么暴力破解所需的遍历 次数为62的29次方,达到10的51次方的数量级。在如此高的数量级下,黑客还需要获取 版本位生成规则及校验位生成规则,其破解难度进一步加大。再者,即使不考虑生成规则, 按照现有计算机的运行速度,如果进行如此该数量级的运算,其所耗费的时间也已远远超 过AccessID的有效时间,因此黑客几乎无法破解成功。
[0068] 进一步的,作为对图2所示方法的详细说明以及进一步扩展,本实施例还提供了 一种身份合法性验证的方法,该方法同样主要应用于服务器侧,用以在验证重放攻击前对 AccessID的合法性进行验证。如图3所示,该方法包括:
[0069] 301、服务器根据版本位生成规则以及校验位生成规则生成AccessID。
[0070] 服务器首先为授权的第三方生成一个合法的AccessID,以便第三方后续根据该 AccessID向服务器请求API。本实施例中步骤301和步骤302即为在验证AccessID之 前服务器生成及发送AccessID的步骤。
[0071] 具体的,以32位AccessID为例,服务器生成AccessID的过程包括:
[0072] 301a、服务器在AccessID中确定一位版本位以及至少一位校验位。
[0073] 如图4所示,服务器首先生成一个32位的AccessID,其中字符位中暂未设置具体 字符。然后服务器在这32个字符位中确定一位版本位以及至少一位校验位,本实施例以确 定1位版本位以及2位校验位为例进行说明。
[0074] 服务器确定版本位和校验位的依据可以是根据网管人员的设置进行确定,也可以 根据预设的脚本程序自行进行确定。例如,随机选择某3个字符位作为版本位和校验位,或 者从字符位1开始按照"逢十抽一"规则选择3个字符位。事例性的,如图5所示,服务器 将字符位3确定为版本位,将字符位14和字符位28确定为校验位。
[0075] 301b、服务器从初始化字符数组中选择多个字符作为AccessID中次级字符位的 字符。
[0076] 如前所述,所述次级字符位是指AccessID中除版本位和校验位以外的其他字符 位,在图5中,字符位1至字符位2、字符位4至字符位13、字符位15至字符位27以及字符 位29至字符位32为次级字符位。
[0077] 所述初始化字符数组用于为AccessID的生成提供具体字符,由服务器事先建立。 如图6所示,该初始化字符数组由数字0至9、小写字母a至z以及大写字母A至Z共62位 字符组成。图6所示的初始化字符数组仅为事例性说明,实际应用中不对初始化字符数组 中的字符内容及排列顺序进行限定。
[0078] 服务器按照预设规则从初始化字符数组中选择字符作为AccessID中次级字符位 的字符。本实施例中,以随机选择算法作为预设规则,服务器从AccessID的字符位1开始 依次为每一个次级字符位随机选择字符,生成次级字符位字符后的AccessID如图7所示。
[0079] 301c、服务器将多个次级字符位字符划分为至少两组生成字符组。
[0080] 该至少两组生成字符组包括一组版本位生成字符组和至少一组校验位生成字符 组。在本实施例中,服务器将29个次级字符位字符划分为1个版本位生成字符组和2个校 验位生成字符组。
[0081] 具体的,服务器按照次级字符位字符数量a、版本位数量b以及校验位数量c对次 级字符位字符进行划分,得到至少两组生成字符组。在本实施例中,次级字符位字符数量a 为29、版本位数量b为1、校验位数量c为2。事例性的,服务器首先为各个生成字符组分配 字符数量,然后从AccessID的第一位字符开始(不包含版本位字符和校验位字符)顺序为 版本位生成字符组和校验位生成字符组分配字符。服务器划分出的版本位生成字符组和校 验位生成字符组如图8所示。
[0082] 为提高黑客对AccessID的破解难度,在本实施例的一个优选方案中,服务器为3 个生成字符组平均分配字符数量,例如服务器按照图9所示划分版本位生成字符组和校验 位生成字符组。如果服务器按照图8所示方式划分生成字符组,则黑客遍历次级字符位的 次数为,而按照图9所示方式划分生成字符组,则黑客遍历次级字符位的次 数为C69: ,平均分配规则生成的AccessID破解起来(不包含版本位和校验位的 破解)的遍历次数明显多于非平均分配规则生成的AccessID。这一点较为容易理解,打个 比方,1X2X9=18 (相当于非平均分配规则),而4X4X4=64 (相当于平均分配规则),明显 可以看出平均分配规则的排列组合数量多于非平均分配规则的排列组合数量。
[0083] 本实施例后续以图9所示的3个生成字符组为例进行说明。
[0084] 301d、服务器根据版本位生成字符组以及版本位生成规则生成版本位字符。
[0085] 具体的:
[0086] 步骤1、在版本位生成字符组中服务器将每个字符的位数分别与与该字符对应的 美国信息交换标准代石马(AmericanStandardCodeforInformationInterchange,简称 ASCII)相乘,获得多个一级版本位数值。
[0087] 所述字符的位数可以是该字符在AccessID中的字符位位数,也可以是该字符在 初始化字符数组中的字符位位数。例如对于字符"c",其在AccessID中的字符位位数为 1,而在初始化字符数组中的字符位位数则为13,本实施例中以初始化字符数组中的字符位 位数为例进行说明。
[0088] 对于图9所示的版本位生成字符组,服务器计算得到的9个一级版本位数值依次 为:13X99(c)=1287、16X102(f)=1632、3X50(2)=150、20X106(j)=2120、7X54(6)=378、 9父56(8)=504、28\114(1〇=3192、2\49(1)=98、5\52(4)=260,其中乘号左边的数字为字 符在初始化字符数组中的字符位位数,乘号右边的数字为字符对应的ASCII码,括号内为 字符本身。
[0089] 本实施例以十进制ASCII码为例进行说明,实际应用中还可以采用十六进制或八 进制的ASCII码进行计算,本实施例对此不做限制。
[0090] 步骤2、服务器对多个一级版本位数值求和并对62取模,得到一个二级版本位数 值。
[0091] 服务器对9个一级版本位数值求和得到:
[0092] 1278+1632+150+2120+378+504+3192+98+260=9621,然后将9621对62取模,得到 的二级版本位数值为11。
[0093] 步骤3、服务器对二级版本位数值及校验位生成规则的版本号求和并对62取模, 得到一个三级版本位数值。
[0094] 事例性的,服务器生成AccessID时使用校验位生成规则4,即验位生成规则的版 本号为4,服务器按照如下方式计算得到三级版本位数值:(11+4) /62=15,其中运算符"/" 为取模运算。
[0095] 步骤4、服务器在初始化字符数组中查找字符位数与三级版本位数值相同的字符 位,将该字符位上的字符确定为版本位字符。
[0096] 服务器在图6所示的初始化字符数组查找到第15位字符"e"作为AccessID的 版本位字符,确定版本位字符的AccessID如图10所示。
[0097] 301e、服务器根据至少一组校验位生成字符组以及校验位生成规则分别生成至少 一个校验位字符。
[0098] 生成版本位字符后,服务器按照校验位生成规则4依次生成2位校验位字符。具 体的:
[0099] 步骤1、服务器在一个校验位生成字符组中,将每个字符的位数分别与与该字符对 应的ASCII码相乘,获得多个一级校验位数值。
[0100] 以根据图9中第一校验位生成字符组生成第1位校验位字符为例,服务器计算得 到的 10 个一级校验位数值依次为:10X57 (9) =570、21X107 (k) =2247、27X113 (q) =3051、 11X97 (a)=1067、4X51 (3)=204、38X66 (B)=2508、36X122 (z)=4392、62X90(Z)=5580、 8X55 (7) =440、23X109 (m) =2507,其中乘号左边的数字为字符在初始化字符数组中的字符 位位数,乘号右边的数字为字符对应的ASCII码,括号内为字符本身。
[0101] 步骤2、服务器对多个一级校验位数值求和并对62取模,得到一个二级校验位数 值。
[0102] 服务器对10个一级校验位数值求和得到:
[0103] 570+2247+3051+1067+204+2508+4392+5580+440+2507=22566,然后将 22566 对 62 取模,得到的二级校验位数值为60。
[0104] 步骤3、服务器在初始化字符数组中查找字符位数与二级校验位数值相同的字符 位,将该字符位上的字符确定为一个校验位字符。
[0105] 服务器在图6所示的初始化字符数组查找到第60位字符"X"作为AccessID的 第1位校验位字符。
[0106] 接着,服务器根据与步骤1和步骤2相同的实现方式生成第2位校验位字符"D", 确定校验位字符的AccessID如图11所不,该AccessID为一个完成的AccessID。
[0107] 302、服务器将生成的AccessID发送给第三方。
[0108] 服务器将图11所示的AccessID发送给授权的第三方,以便第三方后续请求调用 API使用。
[0109] 303、服务器接收第三方上报的API调用请求。
[0110]当第三方请求调用API时,服务器获取API调用请求中的AccessID,该AccessID 为步骤302中服务器发送给授权第三方的AccessID。
[0111] 304、服务器查找AccessID中的版本位字符。
[0112] 服务器根据步骤301a中确定版本位的规则查找AccessID中的版本位字符,SP月艮 务器将AccessID的第3位字符"e"确定为版本位字符。
[0113] 305、服务器根据版本位生成规则验证版本位字符所标识的版本号与服务器使用 的校验位生成规则的版本号是否一致。
[0114] 具体的:
[0115] 305a、服务器根据版本位生成规则的逆向规则对版本位字符"e"进行解析,获得版 本号。
[0116] 服务器首先在初始化字符数组中查找到字符"e"的字符位数15,然后按照步骤 301d中步骤1和步骤2的实现方式,对图9中所示的版本位生成字符组中的每一位字符进 行ASCII相乘求和,并且对62取模得到二级版本位数值11。接着服务器将字符"e"的字符 位数15减去二级版本位数值11,得到版本号为4。本实施例中,如果字符"e"的字符位数 减去二级版本位数值为负数,则服务器将相减得到的数值与62相加,得到版本号。
[0117] 305b、服务器判断解析出的版本号与服务器使用的校验位生成规则的版本号是否 相同,得出判断结果。
[0118] 本实施例中,由于请求调用API的第三方为已授权的第三方,因此其发送的 AccessID为合法AccessID,因而服务器根据该AccessID解析出的版本号4与服务器在 步骤301e中使用的校验位生成规则4的版本号相同。当未授权的第三方或黑客暴力破解 AccessID时,只要其遍历得到的版本位生成字符组与服务器所使用的版本位生成字符组 相比有一位字符不同,则服务器解析出的版本号就会与服务器使用的版本号不相同。
[0119] 在本实施例中,对版本位字符进行验证除了可以验证其所标识的版本号是否与服 务器使用的版本号相同以外,还可以对版本位生成字符组中的9位字符进行验证。
[0120] 当服务器的判断结果为解析出的版本号与服务器使用的版本号相同时,执行步骤 306,进行校验位字符的验证;当服务器的判断结果为解析出的版本号与服务器使用的版本 号不同时,确定第三方上报的AccessID为非法AccessID,服务器报错返回。
[0121] 306、服务器查找AccessID中的校验位字符。
[0122] 服务器根据步骤301a中确定校验位的规则查找AccessID中的校验位字符,S間艮 务器将AccessID中的第14位字符"X"和第28位字符"D"分别确定为第1位校验位字符 和第2位校验位字符。
[0123] 307、服务器根据校验位生成规则分别对至少一位校验位字符进行验证。
[0124] 对校验位字符进行验证的目的在于对AccessID中次级字符的正确性进行验证。 由于1个校验位字符是由10个次级字符生成的,如果这10个次级字符中有1个次级字符与 服务器生的次级字符不同,则服务器解析出的校验位字符就与其生成的校验位字符不同, 因此可以对AccessID的正确性进行检测。以对第1位校验位字符进行验证为例:
[0125] 步骤1、服务器根据校验位生成规则解析出校验位字符。
[0126] 服务器根据生成校验位字符时使用的校验位生成规则4从AccessID中解析出校 验位字符。具体的,服务器从AccessID中获取第11位字符至第21位字符(不包含第14 位校验位字符),即服务器获取图9中所示的第一校验位生成字符组。然后,服务器按照步 骤301e中步骤1至步骤3的实现方式,根据获取的第一校验位生成字符组解析出第1位校 验位字符"X"。
[0127] 步骤2、服务器将解析出的校验位字符与生成AccessID时生成的校验位字符对 应进行比对。
[0128] 本步骤中,服务器比对的对象分别为步骤1中解析出的校验位字符和服务器生成 的校验位字符,其中服务器生成的校验位字符亦即为AccessID中第14字符位上的字符 "X"。需要说明的是,步骤1中解析校验位字符的目的并非是要获取校验位字符,(如果需要 获取校验位字符,直接读取AccessID中第14字符位上的字符"X"即可),服务器解析校验 位字符的目的在于,根据第三方无法获知的校验位生成规则对AccessID独立进行验证,如 果解析出的校验位字符与服务器此前生成的校验位字符相同,则说明AccessID中的其他 字符位与生成AccessID时的次级字符位字符对应相同。本实施例中是以第三方上报合法 AccessID为例进行的说明,因此服务器从该AccessID中解析出的校验位字符必然与生 的校验位字符相同,亦即服务器解析出的校验位字符即为AccessID中第14字符位上的字 符。但是当第三方上报的AccessID为非法AccessID时,本步骤中解析和比较校验位字 符的意义就能够体现出来了。例如,第三方通过排列组合随机生成了如图12所示的Access ID,由于AccessID中的字符与服务器生的AccessID中的字符不对应相同,因此服务器根 据非法AccessID中第11位字符至第21位字符(不包含第14位校验位字符)以及校验位 生成规则解析出的校验位字符与服务器生成的校验位字符不同,由此可以判断出该Access ID为非法AccessID。
[0129] 在比对完第14位的校验位字符后,服务器按照与步骤1和步骤2相同的实现方式 对第28位的校验位字符进行比对,此处不再赘述。当2位校验位字符中有至少1位校验位 字符比对不同时,服务器确定该AccessID为非法AccessID,报错返回;当2位校验位字 符均比对相同时,服务器确定该AccessID为合法AccessID。
[0130] 进一步的,作为本实施例的另一个优选方案,当服务器使用的校验位生成规则4 被第三方破解时,服务器还可以使用新的校验位生成规则重新生成AccessID,其中在重新 生成的AccessID中,新的版本位字符用于标识新的校验位生成规则的版本号。然后服务 器将重新生成的AccessID发送给授权的第三方。如前所述,服务器内部存储有多种校验 位生成规则,在本优选方案中,如果当前使用的校验位生成规则被第三方破解,则服务器可 以根据新的校验位生成规则例如校验位生成规则2重新生成AccessID。在新的Access ID中,服务器将校验位生成规则2的版本号体现在新的版本位字符中,对于破解了校验位 生成规则4的第三方而言,在其根据校验位生成规则4生成的AccessID中,版本位字符所 标识的版本号为已经失效的版本号4,如果通过该AccessID请求调用API接口,则在版本 位字符验证时服务器就会报错返回,由此达到更新AccessID的作用。
[0131] 再进一步的,在本实施例的一个可选技术方案中,在执行完步骤307后,如果验证 AccessID为合法AccessID,则服务器可以按照图1所示的流程对API调用请求做进一步 的验证操作,包括重放攻击验证、调用频率验证以及数字签名验证等验证。其验证的实现方 式此处不再一一赘述,当后续验证均成功时,服务器为第三方调用API。
[0132] 本实施例提供的身份合法性验证的方法,能够通过版本位字符对AccessID中使 用的校验位生成规则的版本进行验证,当版本验证成功时,进一步对至少一位校验位字符 进行验证。由于校验位是由次级字符生成得到的,因此可以间接对AccessID中每一位次 级字符的正确性进行验证,由此达到验证AccessID合法性的目的。另外,由于版本位字符 也是通过次级字符生成得到的,因此对版本位字符的验证除了可以验证校验位生成规则的 版本是否正确以外,也可以对生成版本位字符的次级字符的正确性进行验证。
[0133] 此外,本实施例提供的身份合法性验证的方法,还可以在当前校验位生成规则被 破解时灵活切换校验位生成规则,并将新规则的版本号体现在新的AccessID中发送给授 权的第三方,使旧AccessID失效,由此进一步增加破解AccessID的难度。
[0134] 下面对本实施例方法的可行性进行分析。要破解AccessID的验证规则需要确定 版本位和校验位的位数和位置,以及版本位生成字符组和校验位生成字符组的位数。以32 位AccessID中包含1位版本位、2位校验位、版本位生成字符组9位字符、校验位生成字符 组10位字符为例,在不考虑版本位、校验位的位置以及生成字符组中字符排列组合的前提 下,黑客成功破解AccessID的概率为:
[0135]

【权利要求】
1. 一种身份合法性验证的方法,其特征在于,包括: 服务器接收第H方上报的应用程序编程接口(API)调用请求,所述API调用请求中携 带有所述服务器为所述第H方预先生成并分配的接入身份标识(Access ID); 查找所述Access ID中的版本位字符,所述版本位字符用于标识校验位生成规则的版 本号; 根据版本位生成规则验证所述版本位字符所标识的版本号与服务器使用的校验位生 成规则的版本号是否一致; 当所述版本位字符验证成功时,查找所述Access ID中的至少一位校验位字符; 根据所述校验位生成规则分别对所述至少一位校验位字符进行验证。
2. 根据权利要求1所述身份合法性验证的方法,其特征在于,在所述接收第H方上报 的API调用请求的步骤之前,所述方法进一步包括: 根据所述版本位生成规则W及所述校验位生成规则生成所述Access ID ; 将所述Access ID发送给所述第H方。
3. 根据权利要求2所述身份合法性验证的方法,其特征在于,所述根据所述版本位生 成规则W及所述校验位生成规则生成所述Access ID的步骤,包括: 在所述Access ID中确定一位版本位W及至少一位校验位; 从初始化字符数组中选择多个字符作为所述Access ID中次级字符位的字符,其中,所 述次级字符位为所述Access ID中除所述版本位W及所述校验位W外的其他字符位; 将所述多个次级字符位字符划分为至少两组生成字符组,所述至少两组生成字符组包 括一组版本位生成字符组和至少一组校验位生成字符组; 根据所述版本位生成字符组W及所述版本位生成规则生成版本位字符; 根据所述至少一组校验位生成字符组W及所述校验位生成规则分别生成至少一个校 验位字符。
4. 根据权利要求3所述身份合法性验证的方法,其特征在于,在所述Access ID中确定 一位版本位W及至少一位校验位的步骤之前,所述方法进一步包括: 建立初始化字符数组,所述初始化字符数组由数字0至9、小写字母a至Z W及大写字 母A至Z共62位字符组成。
5. 根据权利要求4所述身份合法性验证的方法,其特征在于,所述将所述次级字符位 字符划分为至少两组生成字符组的步骤,包括: 按照次级字符位字符数量a、版本位数量b W及校验位数量C对所述次级字符位字符进 行划分,得到所述至少两组生成字符组。
6. 根据权利要求5所述身份合法性验证的方法,其特征在于,所述根据所述版本位生 成字符组W及所述版本位生成规则生成版本位字符的步骤,包括: 在所述版本位生成字符组中,将每个字符的位数分别与与该字符对应的美国信息交换 标准代码(ASCII)相乘,获得多个一级版本位数值; 对所述多个一级版本位数值求和并对62取模,得到一个二级版本位数值; 对所述二级版本位数值及所述校验位生成规则的版本号求和并对62取模,得到一个 H级版本位数值; 在所述初始化字符数组中查找字符位数与所述H级版本位数值相同的字符位,将该字 符位上的字符确定为所述版本位字符。
7. 根据权利要求6所述身份合法性验证的方法,其特征在于,所述根据所述至少一组 校验位生成字符组W及所述校验位生成规则分别生成至少一个校验位字符的步骤,包括: 在一个校验位生成字符组中,将每个字符的位数分别与与该字符对应的Ascn码相 乘,获得多个一级校验位数值; 对所述多个一级校验位数值求和并对62取模,得到一个二级校验位数值; 在所述初始化字符数组中查找字符位数与所述二级校验位数值相同的字符位,将该字 符位上的字符确定为一个校验位字符。
8. 根据权利要求7所述身份合法性验证的方法,其特征在于,所述根据版本位生成规 则验证所述版本位字符所标识的版本号与服务器使用的校验位生成规则的版本号是否一 致的步骤,包括: 根据所述版本位生成规则的逆向规则对所述版本位字符进行解析,获得版本号; 判断解析出的版本号与服务器使用的校验位生成规则的版本号是否相同,得出判断结 果; 若所述判断结果为相同,则进行校验位字符的验证; 若所述判断结果为不同,则确定所述Access ID为非法Access ID。
9. 根据权利要求8所述身份合法性验证的方法,其特征在于,所述根据所述校验位生 成规则分别对所述至少一位校验位字符进行验证的步骤,包括: 根据所述校验位生成规则分别解析出至少一个校验位字符; 将解析出的校验位字符分别与生成所述Access ID时生成的至少一个校验位字符对应 进行比对; 若所有校验位均比对相同,则确定所述Access ID为合法Access ID; 若有至少一位校验位比对不同,则确定所述Access ID为非法Access ID。
10. 根据权利要求9所述身份合法性验证的方法,其特征在于,在所述将所述Access ID发送给所述第H方的步骤之后,所述方法进一步包括: 若所述校验位生成规则被第H方破解,则使用新的校验位生成规则重新生成Access ID,其中在重新生成的Access ID中,新的版本位字符用于标识新的校验位生成规则的版本 号; 将重新生成的Access ID发送给所述第H方。
11. 根据权利要求1至10中任一项所述身份合法性验证的方法,其特征在于,在所述根 据所述校验位生成规则分别对所述至少一位校验位字符进行验证的步骤之后,所述方法进 一步包括: 当所述Access ID为合法Access ID时,对所述API调用请求进行重放攻击验证。
12. -种身份合法性验证的装置,其特征在于,包括: 接收单元,用于接收第H方上报的应用程序编程接口(API)调用请求,所述API调用请 求中携带有所述服务器为所述第H方预先生成并分配的接入身份标识(Access ID); 查找单元,用于查找所述接收单元接收的所述Access ID中的版本位字符,所述版本位 字符用于标识校验位生成规则的版本号; 第一验证单元,用于根据版本位生成规则验证所述查找单元查找到的所述版本位字符 所标识的版本号与服务器使用的校验位生成规则的版本号是否一致; 所述查找单元还用于当所述第一验证单元对所述版本位字符验证成功时,查找所述接 收单元接收的所述Access ID中的至少一位校验位字符; 第二验证单元,用于根据所述校验位生成规则分别对所述查找单元查找到的所述至少 一位校验位字符进行验证。
13. 根据权利要求12所述身份合法性验证的装置,其特征在于,所述装置还包括生成 单元及发送单元; 所述生成单元,用于在所述接收单元接收所述接收第H方上报的API调用请求之前, 根据所述版本位生成规则W及所述校验位生成规则生成所述Access ID ; 所述发送单元,用于将所述生成单元生成的所述Access ID发送给所述第H方。
14. 根据权利要求13所述身份合法性验证的装置,其特征在于,所述生成单元包括确 定子单元、选择子单元、划分子单元、第一生成子单元W及第二生成子单元; 所述确定子单元,用于在所述Access ID中确定一位版本位W及至少一位校验位; 所述选择子单元,用于从初始化字符数组中选择多个字符作为所述Access ID中次级 字符位的字符,其中,所述次级字符位为所述Access ID中除所述确定子单元确定的所述版 本位W及所述校验位W外的其他字符位; 所述划分子单元,用于将所述选择子单元选择的所述多个次级字符位字符划分为至少 两组生成字符组,所述至少两组生成字符组包括一组版本位生成字符组和至少一组校验位 生成字符组; 所述第一生成子单元,用于根据所述划分子单元划分的所述版本位生成字符组W及所 述版本位生成规则生成版本位字符; 所述第二生成子单元,用于根据所述划分子单元划分的所述至少一组校验位生成字符 组W及所述校验位生成规则分别生成至少一个校验位字符。
15. 根据权利要求14所述身份合法性验证的装置,其特征在于,所述生成单元还包括 建立子单元; 所述建立子单元,用于所述确定子单元在所述Access ID中确定一位版本位W及至少 一位校验位之前,建立初始化字符数组,所述初始化字符数组由数字0至9、小写字母a至Z W及大写字母A至Z共62位字符组成。
16. 根据权利要求15所述身份合法性验证的装置,其特征在于,所述划分子单元,用于 按照次级字符位字符数量a、版本位数量b W及校验位数量C对所述次级字符位字符进行划 分,得到所述至少两组生成字符组。
17. 根据权利要求16所述身份合法性验证的装置,其特征在于,所述第一生成子单元, 用于: 在所述版本位生成字符组中,将每个字符的位数分别与与该字符对应的美国信息交换 标准代码(ASCII)相乘,获得多个一级版本位数值; 对所述多个一级版本位数值求和并对62取模,得到一个二级版本位数值; 对所述二级版本位数值及所述校验位生成规则的版本号求和并对62取模,得到一个 H级版本位数值; 在所述初始化字符数组中查找字符位数与所述H级版本位数值相同的字符位,将该字 符位上的字符确定为所述版本位字符。
18. 根据权利要求17所述身份合法性验证的装置,其特征在于,所述第二生成子单元, 用于: 在一个校验位生成字符组中,将每个字符的位数分别与与该字符对应的Ascn码相 乘,获得多个一级校验位数值; 对所述多个一级校验位数值求和并对62取模,得到一个二级校验位数值; 在所述初始化字符数组中查找字符位数与所述二级校验位数值相同的字符位,将该字 符位上的字符确定为一个校验位字符。
19. 根据权利要求18所述身份合法性验证的装置,其特征在于,所述第一验证单元包 括第一解析子单元W及判断子单元; 所述第一解析子单元,用于根据所述版本位生成规则的逆向规则对所述版本位字符进 行解析,获得版本号; 所述判断子单元,用于判断所述第一解析子单元解析出的版本号与服务器使用的校验 位生成规则的版本号是否相同,得出判断结果; 所述第一验证单元还用于当所述判断结果为相同时,指示所述第二验证单元进行校验 位字符的验证; 所述第一验证单元还用于当所述判断结果为不同时,确定所述Access ID为非法 Access ID。
20. 根据权利要求19所述身份合法性验证的装置,其特征在于,所述第二验证单元还 包括: 第二解析子单元,用于根据所述校验位生成规则分别解析出至少一个校验位字符; 比对子单元,用于将所述第二解析子单元解析出的校验位字符分别与生成所述Access ID时生成的至少一个校验位字符对应进行比对; 所述第二验证单元还用于当所有校验位均比对相同时,确定所述Access ID为合法 Access ID ; 所述第二验证单元还用于当有至少一位校验位比对不同时,确定所述Access ID为非 法 Access ID。
21. 根据权利要求20所述身份合法性验证的装置,其特征在于,所述生成单元还用于 在所述发送单元将所述Access ID发送给所述第H方的之后,当所述校验位生成规则被第 H方破解时,使用新的校验位生成规则重新生成Access ID,其中在重新生成的Access ID 中,新的版本位字符用于标识新的校验位生成规则的版本号; 所述发送单元还用于将所述生成单元重新生成的Access ID发送给所述第H方。
22. 根据权利要求12至21中任一项所述身份合法性验证的装置,其特征在于,所述装 置还包括第H验证单元; 所述第H验证单元,用于当所述第二验证单元验证所述Access ID为合法Access ID 时,对所述接收单元接收的所述API调用请求进行重放攻击验证。
23. -种服务器,其特征在于,包括;输入输出电路、存储器、处理器W及总线,其中, 所述输入输出电路,用于接收第H方上报的应用程序编程接口(API)调用请求,所述 API调用请求中携带有所述服务器为所述第H方预先生成并分配的接入身份标识(Access ID); 所述存储器用于存储版本位生成规则、校验位生成规则W及校验位生成规则的版本 号; 所述处理器,用于查找所述输入输出电路接收的所述Access ID中的版本位字符,所述 版本位字符用于标识校验位生成规则的版本号,根据所述存储器存储的版本位生成规则验 证所述版本位字符所标识的版本号与所述存储器存储的校验位生成规则的版本号是否一 致,当所述版本位字符验证成功时,查找所述Access ID中的至少一位校验位字符,根据所 述存储器存储的所述校验位生成规则分别对所述至少一位校验位字符进行验证; 所述总线,用于连接所述输入输出电路、所述存储器W及所述处理器。
【文档编号】H04L29/06GK104348614SQ201310313918
【公开日】2015年2月11日 申请日期:2013年7月24日 优先权日:2013年7月24日
【发明者】徐东山, 黄河涛 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1