1.本说明书一个或多个实施例涉及通信技术,尤其涉及第三方应用的校验方法和装置。
背景技术:2.软件开发工具包(sdk,software development toolkit)是由供应商提供给第三方应用开发者使用的软件工具,以帮助开发者轻松快速地在第三方应用中使用供应商的服务。比如,供应商平台开放了收银、核身等多种功能的sdk,一个第三方应用开发者需要开发一个第三方应用比如无人售卖机系统,通过该无人售卖机系统来实现无人售卖。在该第三方应用即无人售卖机系统中,需要包括对用户核身(校验身份)的程序代码,以便使得该无人售卖机系统具有对用户核身的功能。第三方应用开发者无需自己开发,只需要从供应商平台下载对应核身功能的sdk,将下载的sdk集成到开发的无人售卖机系统中直接使用即可。
3.在实际的业务实现中,需要对集成有sdk的第三方应用进行校验,校验结果为合法时,供应商才会向该第三方应用提供特定的服务。然而,目前对集成有sdk的第三方应用进行校验的方法的安全性较差。
技术实现要素:4.本说明书一个或多个实施例描述了第三方应用的校验方法和装置,在对集成有sdk的第三方应用进行校验时能够提高安全性。
5.根据第一方面,提供了一种第三方应用的校验方法,该方法应用于第三方应用的客户端,该第三方应用中集成有供应商服务端提供的sdk,其中,包括:
6.所述客户端中的sdk向供应商服务端发送初始化请求;
7.所述客户端中的sdk接收供应商服务端发来的身份采集模块包;该身份采集模块包是由供应商服务端针对该初始化请求实时编码生成的,且供应商服务针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;
8.所述客户端中的sdk执行接收到的身份采集模块包,以获得所述第三方应用的身份信息;
9.所述客户端中的sdk将获得的第三方应用的身份信息发送给供应商服务端。
10.其中,进一步包括:所述客户端中的sdk获取与接收到的身份采集模块包绑定的随机密钥;该随机密钥是所述供应商服务端对应于实时生成的身份采集模块包而生成的,且不同身份采集模块包绑定不同的随机密钥;
11.相应地,所述将获得的第三方应用的身份信息发送给供应商服务端,包括:
12.所述客户端中的sdk利用与接收到的身份采集模块包绑定的随机密钥,对第三方应用的身份信息进行加密,将加密后的身份信息发送给供应商服务端。
13.其中,与身份采集模块包绑定的随机密钥被注入在该身份采集模块包中;
14.相应地,所述客户端中的sdk利用与接收到的身份采集模块包绑定的随机密钥对第三方应用的身份信息进行加密,包括:在所述客户端中的sdk执行接收到的身份采集模块包时,由该身份采集模块包利用注入的随机密钥对第三方应用的身份信息进行加密。
15.根据第二方面,提供了一种第三方应用的校验方法,该方法应用于供应商服务端,其中,包括:
16.供应商服务端接收客户端中的sdk发来的初始化请求;该客户端的第三方应用中集成有sdk;
17.针对所述初始化请求实时编码生成身份采集模块包;其中,供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;
18.将实时生成的身份采集模块包发送给所述客户端中的sdk;
19.接收所述客户端中的sdk发来的第三方应用的身份信息,根据该身份信息对第三方应用进行校验。
20.其中,所述针对所述初始化请求实时编码生成身份采集模块包,包括如下中的至少一项:
21.在所述身份采集模块包的程序代码中加入花指令;其中,供应商服务端针对不同初始化请求,在各身份采集模块包中加入的花指令不同;
22.调整所述身份采集模块包的至少一行程序代码的顺序,顺序的调整不改变所述身份采集模块包的功能;其中,供应商服务端针对不同初始化请求,对各身份采集模块包的程序代码的调整方式不同。
23.其中,在所述供应商服务端接收到客户端发来的初始化请求之后,并在所述将实时生成的身份采集模块包发送给客户端之前,进一步包括:
24.对应于当前生成的身份采集模块包,生成随机密钥;
25.使所述客户端得到当前生成的随机密钥;
26.在所述接收客户端发来的第三方应用的身份信息之后,并在所述根据该身份信息对第三方应用进行校验之前,进一步包括:
27.利用生成的所述随机密钥对接收到的第三方应用的身份信息进行解密,根据解密后的身份信息对第三方应用进行校验。
28.其中,所述使客户端得到当前生成的随机密钥,包括:
29.在实时编码生成身份采集模块包时,在身份采集模块包中注入当前生成的随机密钥;
30.通过执行所述将实时生成的身份采集模块包发送给客户端中的sdk,使客户端中的sdk得到当前生成的随机密钥。
31.其中,所述在身份采集模块包中注入当前生成的随机密钥,包括:
32.在身份采集模块包的源码中注入当前生成的随机密钥;之后,将身份采集模块包编译为可执行文件;
33.或者,
34.将身份采集模块包编译为可执行文件;之后,在该可执行文件中加入当前生成的随机密钥。
35.其中,在该身份采集模块包的源码中注入当前生成的随机密钥的注入位置与在其
他身份采集模块包的源码中注入随机密钥的注入位置不同。
36.根据第三方面,提供了第三方应用的校验装置,应用于第三方应用的客户端中,该第三方应用中集成有sdk,该装置包括:
37.初始化请求发送模块,配置为通过sdk向供应商服务端发送初始化请求;
38.身份采集逻辑获取模块,配置为由sdk接收供应商服务端发来的身份采集模块包;该身份采集模块包是由供应商服务端针对该初始化请求实时编码生成的,且供应商服务针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;
39.身份采集执行模块,配置为由sdk执行接收到的身份采集模块包,以获得所述第三方应用的身份信息;
40.身份信息发送模块,配置为由sdk将获得的第三方应用的身份信息发送给供应商服务端。
41.根据第四方面,提供了第三方应用的校验装置,应用于供应商服务端中,该装置包括:
42.初始化请求接收模块,配置为接收客户端中的sdk发来的初始化请求;该客户端的第三方应用中集成有sdk;
43.身份采集逻辑生成模块,配置为针对所述初始化请求实时编码生成身份采集模块包;其中,供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;
44.下发模块,配置为将实时生成的身份采集模块包发送给所述客户端中的sdk;
45.校验执行模块,配置为接收所述客户端中的sdk发来的第三方应用的身份信息,根据该身份信息对第三方应用进行校验。
46.根据第五方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本说明书任一实施例所述的方法。
47.在本说明书的实施例中,一方面,不是由第三方应用来执行身份采集功能,而是由第三方应用集成的sdk执行身份采集功能,也就是说,不再信任第三方应用传递的身份信息,这样,攻击者就无法通过对第三方应用的反编译手段来得到第三方应用的身份信息,无法盗用身份信息来通过校验,因此,提高了校验的安全性,保证了业务的正常运行。另一方面,sdk使用的身份采集逻辑即身份采集模块包是由供应商服务端实时生成后下发的,这样攻击者无法提前得到身份采集模块包,增加了盗用的难度,提高了校验的安全性。再一方面,供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同,这样,即使攻击者盗取了某一次下发的身份采集模块包,也无法得到下一次使用的身份采集模块包,从而无法实现大规模盗用,增加了盗用的难度,提高了校验的安全性。
附图说明
48.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1是本说明书一个实施例所应用的系统架构的示意图。
50.图2是本说明书一个实施例中在第三方应用的客户端中执行第三方应用的校验方法的流程图。
51.图3是本说明书一个实施例中在供应商服务端中执行第三方应用的校验方法的流程图。
52.图4是本说明书一个实施例中第三方应用的校验方法及发送业务请求的交互流程图。
53.图5是本说明书一个实施例中应用于第三方应用的客户端中的第三方应用校验装置的结构示意图。
54.图6是本说明书一个实施例中应用于供应商服务端中的第三方应用校验装置的结构示意图。
具体实施方式
55.如前所述,在实际的业务实现中,需要对集成有sdk的第三方应用进行校验,校验结果为合法时,供应商才会向该第三方应用提供特定的服务。比如,供应商服务端对集成sdk的第三方应用做校验,识别集成sdk的第三方应用是否为预先注册的、能够享受优惠计费标准的应用a,如果校验结果是应用a,那么就按照应用a对应的优惠计费标准进行计费,否则按照非优惠计费标准进行计费。因此,对集成有sdk的第三方应用进行校验是一个非常重要的手段。
56.目前对集成有sdk的第三方应用进行校验的方法包括:集成有sdk的第三方应用的客户端保存供应商服务端分配的身份信息(比如应用标识app id),在需要进行校验时,该客户端中的第三方应用执行身份采集功能,读取保存的身份信息,通过sdk发送给供应商服务端进行验证。可见,在现有技术中,采集身份信息的功能由第三方应用执行,攻击者很容易通过对第三方应用进行反编译等处理来得到应用的身份信息,攻击者使用盗用的应用身份信息通过sdk进行校验也能成功通过校验,从而降低了校验的安全性,无法保证业务的正常进行。
57.下面结合附图,对本说明书提供的方案进行描述。
58.为了方便对本说明书提供的方法进行理解,首先对本说明书所涉及和适用的系统架构进行描述。如图1中所示,该系统架构中主要包括两个网络节点:第三方应用的客户端、供应商服务端。
59.其中,第三方应用的客户端安装并运行于终端设备中,终端设备可以包括但不限于诸如:智能移动终端、智能家居设备、网络设备、可穿戴式设备、智能医疗设备、pc(个人计算机)等。
60.其中,智能移动设备可以包括诸如手机、平板电脑、笔记本电脑、pda(个人数字助理)、互联网汽车等。智能家居设备可以包括智能家电设备,诸如智能电视、智能空调、智能热水器、智能冰箱、智能空气净化器等等,智能家居设备还可以包括智能门锁、智能插座、智能电灯、智能摄像头等。网络设备可以包括诸如交换机、无线ap、服务器等。可穿戴式设备可以包括诸如智能手表、智能眼镜、智能手环、虚拟现实设备、增强现实设备、混合现实设备(即可以支持虚拟现实和增强现实的设备)等等。智能医疗设备可以包括诸如智能体温计、智能血压仪、智能血糖仪等等。
61.第三方应用中集成有sdk,该第三方应用可以是各种类型的应用,包括但不限于诸如支付类应用、多媒体播放类应用、地图类应用、文本编辑类应用、金融类应用、浏览器类应用、即时通信类应用等等。
62.其中,供应商服务端指的是向第三方应用的客户端提供sdk的供应商的服务端设备,可以是单一服务器,也可以是多个服务器构成的服务器群组。
63.在本说明书实施例中,第三方应用的校验方法包括:在第三方应用的客户端中执行的处理,以及在供应商服务端中执行的处理。下面分别进行说明。
64.首先,说明在第三方应用的客户端中的处理。
65.图2是本说明书一个实施例中在第三方应用的客户端中执行的第三方应用的校验方法的流程图。如前所述,该第三方应用中集成有sdk。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。参见图2,该方法包括:
66.步骤201:客户端中的sdk向供应商服务端发送初始化请求。
67.步骤203:客户端中的sdk接收供应商服务端发来的身份采集模块包;该身份采集模块包是由供应商服务端针对该初始化请求实时编码生成的,且供应商服务端针对不同初始化请求实时编码生成的身份采集模块包的执行逻辑不同。
68.步骤205:客户端中的sdk执行接收到的身份采集模块包,在第三方应用中获取第三方应用的身份信息。
69.步骤207:客户端中的sdk将获得的第三方应用的身份信息发送给供应商服务端。
70.下面,说明在供应商服务端中的处理。
71.图3是本说明书一个实施例中在供应商服务端中执行的第三方应用的校验方法的流程图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。参见图3,该方法包括:
72.步骤301:接收客户端中的sdk发来的初始化请求;该客户端的第三方应用中集成有sdk。
73.步骤303:针对该初始化请求实时编码生成身份采集模块包;供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同。
74.步骤305:将实时生成的身份采集模块包发送给客户端中的sdk。
75.步骤307:接收客户端中的sdk发来的第三方应用的身份信息,根据该身份信息对第三方应用进行校验。
76.根据上述图2、图3所示的流程可以看出,在本说明书的实施例中,一方面,不是由第三方应用来执行身份采集功能,而是由第三方应用集成的sdk执行身份采集功能,也就是说,不再信任第三方应用传递的身份信息,这样,攻击者就无法通过对第三方应用的反编译手段来得到第三方应用的身份信息,无法盗用身份信息来通过校验,因此,提高了校验的安全性,保证了业务的正常运行。另一方面,sdk使用的身份采集逻辑即身份采集模块包是由供应商服务端实时生成后下发的,这样攻击者无法提前得到身份采集模块包,增加了盗用的难度,提高了校验的安全性。再一方面,供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同,这样,即使攻击者盗取了某一次下发的身份采集模块包,也无法得到下一次使用的身份采集模块包,从而无法实现大规模盗用,增加了盗用的难度,提高了校验的安全性。
77.下面结合具体的例子,对图2、图3所示过程中的每一个步骤分别进行说明。
78.首先对于步骤201:客户端中的sdk向供应商服务端发送初始化请求。
79.当第三方应用需要使用sdk时,比如无人售卖机系统需要使用对应用户核身功能的sdk时,会调用该sdk初始化模块。本步骤201可以是在第三方应用调用sdk初始化模块,并传入了身份信息比如app id之后,由sdk执行的。
80.接下来,对于步骤301:供应商服务端接收客户端中的sdk发来的初始化请求。
81.这里,虽然第三方应用向sdk传入了身份信息,sdk在发送的初始化请求中会携带该传入的身份信息,但是sdk及供应商服务端不再信任该传入的身份信息,不会使用该身份信息进行第三方应用的校验,而是执行如下步骤中由sdk主动采集身份信息的处理。
82.接下来,对于步骤303:供应商服务端针对初始化请求实时编码生成身份采集模块包;供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同。
83.在一个极端的情况下,如果在所有第三方应用的校验中都使用相同的身份采集模块包,即相同的身份采集逻辑,那么,攻击者可能会通过重打包sdk,修改采集方法返回值为合法应用的包名和签名,从而将重打包的sdk集成到恶意应用里使用,就可能会绕开校验,即成功通过校验。为了避免此种情况的发生,本步骤303中,为了使得对第三方应用的校验的逻辑具备随机性,而不是采用固定不变的程序代码进行身份采集,不会预先在sdk中设置一个固定不变的身份采集模块包(即身份采集程序代码),而是由供应商服务端每当接收到一个初始化请求时,都实时编码生成一个不同的身份采集模块包,由于针对不同初始化请求所生成的身份采集模块包的执行逻辑不同,因此,攻击者无法预测每一次身份采集时使用的身份采集逻辑,从而无法盗用。
84.可以采用多种方式来使得针对不同初始化请求所生成的身份采集模块包的执行逻辑不同,但是又均能完成对第三方应用的身份信息的采集功能。
85.在本说明书的一个实施例中,本步骤303的实现方式包括:
86.方式一:
87.步骤303a:在身份采集模块包的程序代码中加入花指令;其中,供应商服务端针对不同初始化请求,在各身份采集模块包中加入的花指令不同。
88.其中,花指令是指:使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。比如,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种指令:jmp,call,ret的一些堆栈技巧,位置运算,等等。
89.在该方式一中,加入花指令,不会影响原身份采集模块包的程序代码的执行。
90.方式二、
91.步骤303b:调整身份采集模块包的至少一行程序代码的顺序,顺序的调整不改变身份采集模块包完成的功能;其中,供应商服务端针对不同初始化请求,对各身份采集模块包的程序代码的调整方式不同。
92.在身份采集模块包的程序代码中,某一段的程序代码与另一段的程序代码谁先执行谁后执行,都不会影响身份采集模块包的功能实现,因此,可以针对此种程序代码的顺序进行调整。
93.在本说明书另一个实施例中,为了进一步增加对第三方应用的校验的安全性,可以在每次生成一个身份采集模块包时,都对应该身份采集模块包生成一个随机密钥,也就
是说,每一个下发的身份采集模块包与一个随机密钥绑定,这样,后续,攻击者因为无法获取与该身份采集模块绑定的随机密钥,也无法通过校验,进一步提高了对第三方应用进行校验的安全性。因此,在本步骤303中,供应商服务端还会进一步生成对应于当前生成的身份采集模块包的随机密钥,即两者存在绑定关系。后续,使客户端中的sdk得到当前生成的随机密钥。
94.使客户端中的sdk得到当前生成的随机密钥的方式有多种。比如,供应商服务端单独将该随机密钥下发给客户端中的sdk,即不会将随机密钥与身份采集模块包在一个消息中下发。再如,供应商服务端将该随机密钥注入当前生成的身份采集模块包中,一起下发给客户端中的sdk。
95.在本说明书一个实施例中,供应商服务端将该随机密钥注入当前生成的身份采集模块包中的方式可以包括:
96.方式a、在身份采集模块包的源码中注入当前生成的随机密钥;之后,将身份采集模块包编译为可执行文件。
97.该方式a中,因为是在身份采集模块包的源码中注入,因此,被注入的随机密钥的位置可以灵活多变,即可以位于源码中的多种位置上,比如位于身份采集模块包的源码的开始部分,或者,位于身份采集模块包的源码的中间部分,或者位于身份采集模块包的源码的结尾部分。
98.比如,对于该方式a的源码级别的注入,下面给出一个身份采集模块包的源码示例:
99.public string getappinfo(){
100.string secert="";//每次初始化时服务端随机生成的随机密钥,随机密钥放置位置非固定,可以每次变动
101.string app_name=system.getcurrentapplicationpackagename();//调用系统方法获取当前应用的包名
102.string app_sign=system.getcurrentapplicationsign();//调用系统方法获取当前应用的签名
103.string appinfo_enc=system.aes(app_name+app_sign,secert)//加密应用信息
104.return appinfo_enc;//返回加密后的应用信息
105.}
106.当采用该方式a时,还能够进一步使得针对不同初始化请求所生成的身份采集模块包的执行逻辑不同,具体体现为:在该身份采集模块包的源码中注入当前生成的随机密钥的注入位置与在其他身份采集模块包的源码中注入随机密钥的注入位置不同。比如,可以在针对一个初始化请求1生成身份采集模块包1时,将与该身份采集模块包1绑定的随机密钥1注入身份采集模块包1的源码的第一种位置比如开始部分,而针对初始化请求2生成身份采集模块包2时,将与该身份采集模块包2绑定的随机密钥2注入身份采集模块包2的源码的第二种位置比如中间部分,从而进一步提高了身份采集模块包的随机化程度,即进一步提高了对第三方应用的校验的随机化程度,进一步提高了校验的安全性。
107.方式b、将身份采集模块包编译为可执行文件;之后,在该可执行文件中加入当前
生成的随机密钥。
108.在该方式b中,通常在可执行文件的尾部注入随机密钥。
109.接下来,对于步骤305:供应商服务端将实时生成的身份采集模块包发送给客户端中的sdk。
110.如前所述,在本说明书的一个实施例中,与当前生成的身份采集模块包绑定的随机密钥可以被注入该身份采集模块包中,一起被发送给客户端中的sdk。
111.接下来对于步骤203:客户端中的sdk接收供应商服务端发来的身份采集模块包。
112.如果在步骤303中,供应商服务端单独将随机密钥下发给客户端中的sdk,那么客户端中的sdk将单独获得该随机密钥。
113.如果在步骤303中,供应商服务端将随机密钥注入当前生成的身份采集模块包中一起下发给客户端中的sdk,那么本步骤203中,客户端中的sdk将从接收到的身份采集模块包中获取随机密钥。
114.接下来对于步骤205:客户端中的sdk执行接收到的身份采集模块包,在第三方应用中获取第三方应用的身份信息。
115.在本步骤205中,客户端中的sdk通过执行当前接收到的身份采集模块包,就能获取第三方应用的身份信息,并用于后续校验,而不是直接使用步骤201中第三方应用以传参方式主动传入的身份信息来进行后续校验,因为第三方应用传入的身份信息容易被伪造。
116.在本说明书实施例中,在本步骤205中,sdk读取第三方应用文件哈希(hash)、应用签名等。例如,android平台可以通过系统api读取应用包名和签名。身份采集模块包是可执行文件,sdk可以通过各类动态加载函数加载执行,例如android平台可以使用dexclassloader或system.loadlibrary来加载。
117.在本步骤205中,客户端中的sdk执行接收到的身份采集模块包,通过第三方应用的系统api、读取文件特征等方式来采集第三方应用的身份信息。
118.接下来,对于步骤207:客户端中的sdk将获得的第三方应用的身份信息发送给供应商服务端。
119.如前所述,客户端中的sdk能够获取与接收到的身份采集模块包绑定的随机密钥,那么本步骤207的实现过程可以包括:客户端中的sdk利用与接收到的身份采集模块包绑定的随机密钥,对第三方应用的身份信息进行加密,将加密后的身份信息发送给供应商服务端。
120.如前所述,在本说明书一个实施例中,与身份采集模块包绑定的随机密钥被注入在该身份采集模块包中;那么,在本步骤205中,获得第三方应用的身份信息的具体方式可以是:在客户端中的sdk执行接收到的身份采集模块包时,由该身份采集模块包利用注入的随机密钥对第三方应用的身份信息进行加密。也就是说,只有sdk中的身份采集模块包自己能够使用与其绑定的随机密钥来进行加密,sdk中的其它代码无权获取并使用该随机密钥,从而进一步增加了安全性。相应地,sdk中的其它代码只需要获取加密后的第三方应用的身份信息,并上传给供应商服务端即可。
121.接下来对于步骤307:供应商服务端接收客户端中的sdk发来的第三方应用的身份信息,根据该身份信息对第三方应用进行校验。
122.如果供应商服务端下发了身份采集模块包绑定的随机密钥,那么,本步骤307中,
利用实时生成的随机密钥对接收到的第三方应用的身份信息进行解密,根据解密后的身份信息对第三方应用进行校验,比如供应商服务端将解密出的身份信息与第三方应用开发者在供应商的开放平台上注册的身份信息匹配,如果匹配通过则说明校验通过。
123.在本说明书一个实施例中,为了进一步保护sdk中采集身份信息的身份采集模块包的逻辑不被篡改,也可以基于可信执行环境(tee)技术将身份采集模块包开发为可信应用(ta),预置在tee中,从而进一步保证采集到的第三方应用的身份信息是可信的。
124.本说明书实施例实际上提出了一种挑战应答机制,使sdk校验逻辑具备随机性,从而达到保护sdk采集应用身份信息逻辑不被篡改的目的,提高了对第三方应用进行校验的安全性。
125.可见,本说明书实施例的方案,至少具有如下优点:
126.1、采集身份的逻辑不依赖第三方应用传入。因为sdk是集成到第三方应用内使用的,通过系统方法获取当前第三方应用的身份信息,避免了身份信息来源不可信的问题。
127.2.采集身份的逻辑即身份采集模块包是动态下发的并且和一个随机密钥绑定,通过挑战应答的方式,保证攻击者即使可以对sdk重打包,因为无法预测后续每次下发的“挑战”字符串即随机密钥,并且挑战字符串(即随机密钥)和身份采集逻辑(即身份采集模块包)在一个函数中为原子逻辑,使得攻击者无法使用sdk的正常功能,无法盗用合法的身份信息。
128.下面通过一个信息交互图来进一步说明本说明书实施例中第三方应用的校验及业务请求的方法的流程。参见图4,该方法包括:
129.步骤401:在第三方应用的客户端中,第三方应用调用sdk中的初始化模块,传入app id。
130.步骤402:在客户端中,sdk向供应商服务端发送初始化请求。
131.本步骤402中,发送的初始化请求中可以携带有第三方应用传入的app id。
132.步骤403:供应商服务端针对当前接收到的初始化请求,实时编码生成身份采集模块包,及生成与该身份采集模块包绑定的随机密钥。
133.步骤404:供应商服务端将随机密钥注入身份采集模块包中下发给客户端中的sdk。
134.本步骤404为一个挑战过程。
135.步骤405:客户端中的sdk加载接收到的身份采集模块包,身份采集模块包在第三方应用中获取第三方应用的身份信息。
136.步骤406:被加载的身份采集模块包利用注入的随机密钥对步骤405中获取的第三方应用的身份信息进行加密,由sdk向供应商服务端发送认证请求,该认证请求中携带加密后的身份信息。
137.这里,可以由身份采集模块包自己使用随机密钥进行加密,sdk中的其他静态代码无权使用该随机密钥,sdk中的其他静态代码得到身份采集模块输出的加密后的第三方应用的身份信息,将该加密后的身份信息携带在认证请求中进行发送。
138.本步骤406为对步骤404的挑战所作出的应答。、
139.本步骤406中,认证请求中可以携带有步骤401中第三方应用传入的app id。
140.步骤407:供应商服务端利用步骤403中生成的随机密钥对认证请求中的加密后的
身份信息进行解密,利用解密出的身份信息与第三方应用注册时的身份信息进行匹配,如果匹配,执行步骤408,否则校验失败,结束当前流程。
141.步骤408:校验通过,供应商服务端向客户端中的sdk下发身份凭证token。
142.步骤409:客户端中的sdk缓存接收到的身份凭证token。
143.步骤410:第三方应用调用sdk中的业务逻辑模块。
144.步骤411:客户端中的sdk向供应商服务端发送业务请求,该业务请求中携带缓存的token。
145.此后,供应商服务端可以提供对应的服务,比如核身功能及对应的计费。
146.本说明书一个实施例中,提出了一种第三方应用的校验装置,应用于集成有sdk的第三方应用的客户端中,参见图5,该装置包括:
147.初始化请求发送模块501,配置为通过sdk向供应商服务端发送初始化请求;
148.身份采集逻辑获取模块502,配置为由sdk接收供应商服务端发来的身份采集模块包;该身份采集模块包是由供应商服务端针对该初始化请求实时编码生成的,且供应商服务针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;
149.身份采集执行模块503,配置为由sdk执行接收到的身份采集模块包,以获得所述第三方应用的身份信息;
150.身份信息发送模块504,配置为由sdk将获得的第三方应用的身份信息发送给供应商服务端。
151.在图5所示的本说明书装置的一个实施例中,身份采集逻辑获取模块502进一步被配置为执行:由sdk获取与接收到的身份采集模块包绑定的随机密钥;该随机密钥是所述供应商服务端对应于实时生成的身份采集模块包而生成的,且不同身份采集模块包绑定不同的随机密钥;
152.身份信息发送模块504,所述客户端中的sdk利用与接收到的身份采集模块包绑定的随机密钥,对第三方应用的身份信息进行加密,将加密后的身份信息发送给供应商服务端。
153.本说明书一个实施例中,提出了一种第三方应用的校验装置,应用于供应商服务端中,参见图6,该装置包括:
154.初始化请求接收模块601,配置为接收客户端中的sdk发来的初始化请求;该客户端的第三方应用中集成有sdk;
155.身份采集逻辑生成模块602,配置为针对所述初始化请求实时编码生成身份采集模块包;其中,供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;
156.下发模块603,配置为将实时生成的身份采集模块包发送给所述客户端中的sdk;
157.校验执行模块604,配置为接收所述客户端中的sdk发来的第三方应用的身份信息,根据该身份信息对第三方应用进行校验。
158.在图6所示的本说明书装置的一个实施例中,身份采集逻辑生成模块602被配置为执行如下中的至少一项:
159.在所述身份采集模块包的程序代码中加入花指令;其中,供应商服务端针对不同初始化请求,在各身份采集模块包中加入的花指令不同;
160.调整所述身份采集模块包的至少一行程序代码的顺序,顺序的调整不改变所述身份采集模块包的功能;其中,供应商服务端针对不同初始化请求,对各身份采集模块包的程序代码的调整方式不同。
161.在图6所示的本说明书装置的一个实施例中,进一步包括:随机密钥生成模块;
162.随机密钥生成模块,配置为对应于当前生成的身份采集模块包,生成随机密钥;
163.下发模块603,进一步配置为使所述客户端得到当前生成的随机密钥;
164.校验执行模块604,进一步配置为利用生成的所述随机密钥对接收到的第三方应用的身份信息进行解密,根据解密后的身份信息对第三方应用进行校验。
165.在图6所示的本说明书装置的一个实施例中,身份采集逻辑生成模块602被配置为执行:在实时编码生成身份采集模块包时,在身份采集模块包中注入随机密钥生成模块当前生成的随机密钥;
166.下发模块603通过执行所述将实时生成的身份采集模块包发送给客户端中的sdk,使客户端中的sdk得到当前生成的随机密钥。
167.在图6所示的本说明书装置的一个实施例中,身份采集逻辑生成模块602被配置为执行:
168.在身份采集模块包的源码中注入当前生成的随机密钥;之后,将身份采集模块包编译为可执行文件;
169.或者,
170.将身份采集模块包编译为可执行文件;之后,在该可执行文件中加入当前生成的随机密钥。
171.在图6所示的本说明书装置的一个实施例中,身份采集逻辑生成模块602在该身份采集模块包的源码中注入当前生成的随机密钥的注入位置与在其他身份采集模块包的源码中注入随机密钥的注入位置不同。
172.本说明书一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行说明书中任一个实施例中的方法。
173.本说明书一个实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现执行说明书中任一个实施例中的方法。
174.可以理解的是,本说明书实施例示意的结构并不构成对本说明书实施例的装置的具体限定。在说明书的另一些实施例中,上述装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
175.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
176.本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
177.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
技术特征:1.第三方应用的校验方法,该方法应用于第三方应用的客户端,该第三方应用中集成有供应商服务端提供的sdk,其中,包括:所述客户端中的sdk向供应商服务端发送初始化请求;所述客户端中的sdk接收供应商服务端发来的身份采集模块包;该身份采集模块包是由供应商服务端针对该初始化请求实时编码生成的,且供应商服务针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;所述客户端中的sdk执行接收到的身份采集模块包,以获得所述第三方应用的身份信息;所述客户端中的sdk将获得的第三方应用的身份信息发送给供应商服务端。2.根据权利要求1所述的方法,其中,进一步包括:所述客户端中的sdk获取与接收到的身份采集模块包绑定的随机密钥;该随机密钥是所述供应商服务端对应于实时生成的身份采集模块包而生成的,且不同身份采集模块包绑定不同的随机密钥;相应地,所述将获得的第三方应用的身份信息发送给供应商服务端,包括:所述客户端中的sdk利用与接收到的身份采集模块包绑定的随机密钥,对第三方应用的身份信息进行加密,将加密后的身份信息发送给供应商服务端。3.根据权利要求2所述的方法,其中,与身份采集模块包绑定的随机密钥被注入在该身份采集模块包中;相应地,所述客户端中的sdk利用与接收到的身份采集模块包绑定的随机密钥对第三方应用的身份信息进行加密,包括:在所述客户端中的sdk执行接收到的身份采集模块包时,由该身份采集模块包利用注入的随机密钥对第三方应用的身份信息进行加密。4.第三方应用的校验方法,该方法应用于供应商服务端,其中,包括:供应商服务端接收客户端中的sdk发来的初始化请求;该客户端的第三方应用中集成有sdk;针对所述初始化请求实时编码生成身份采集模块包;其中,供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;将实时生成的身份采集模块包发送给所述客户端中的sdk;接收所述客户端中的sdk发来的第三方应用的身份信息,根据该身份信息对第三方应用进行校验。5.根据权利要求4所述的方法,其中,所述针对所述初始化请求实时编码生成身份采集模块包,包括如下中的至少一项:在所述身份采集模块包的程序代码中加入花指令;其中,供应商服务端针对不同初始化请求,在各身份采集模块包中加入的花指令不同;调整所述身份采集模块包的至少一行程序代码的顺序,顺序的调整不改变所述身份采集模块包的功能;其中,供应商服务端针对不同初始化请求,对各身份采集模块包的程序代码的调整方式不同。6.根据权利要求4所述的方法,其中,在所述供应商服务端接收到客户端发来的初始化请求之后,并在所述将实时生成的身份采集模块包发送给客户端之前,进一步包括:对应于当前生成的身份采集模块包,生成随机密钥;使所述客户端得到当前生成的随机密钥;
在所述接收客户端发来的第三方应用的身份信息之后,并在所述根据该身份信息对第三方应用进行校验之前,进一步包括:利用生成的所述随机密钥对接收到的第三方应用的身份信息进行解密,根据解密后的身份信息对第三方应用进行校验。7.根据权利要求6所述的方法,其中,所述使客户端得到当前生成的随机密钥,包括:在实时编码生成身份采集模块包时,在身份采集模块包中注入当前生成的随机密钥;通过执行所述将实时生成的身份采集模块包发送给客户端中的sdk,使得客户端中的sdk得到当前生成的随机密钥。8.根据权利要求7所述的方法,其中,所述在身份采集模块包中注入当前生成的随机密钥,包括:在身份采集模块包的源码中注入当前生成的随机密钥;之后,将身份采集模块包编译为可执行文件;或者,将身份采集模块包编译为可执行文件;之后,在该可执行文件中加入当前生成的随机密钥。9.根据权利要求8所述的方法,其中,在该身份采集模块包的源码中注入当前生成的随机密钥的注入位置与在其他身份采集模块包的源码中注入随机密钥的注入位置不同。10.第三方应用的校验装置,应用于第三方应用的客户端中,该第三方应用中集成有sdk,该装置包括:初始化请求发送模块,配置为通过sdk向供应商服务端发送初始化请求;身份采集逻辑获取模块,配置为由sdk接收供应商服务端发来的身份采集模块包;该身份采集模块包是由供应商服务端针对该初始化请求实时编码生成的,且供应商服务针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;身份采集执行模块,配置为由sdk执行接收到的身份采集模块包,以获得所述第三方应用的身份信息;身份信息发送模块,配置为由sdk将获得的第三方应用的身份信息发送给供应商服务端。11.第三方应用的校验装置,应用于供应商服务端中,该装置包括:初始化请求接收模块,配置为接收客户端中的sdk发来的初始化请求;该客户端的第三方应用中集成有sdk;身份采集逻辑生成模块,配置为针对所述初始化请求实时编码生成身份采集模块包;其中,供应商服务端针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;下发模块,配置为将实时生成的身份采集模块包发送给所述客户端中的sdk;校验执行模块,配置为接收所述客户端中的sdk发来的第三方应用的身份信息,根据该身份信息对第三方应用进行校验。12.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。
技术总结本说明书实施例提供了第三方应用的校验方法和装置。所述客户端中的SDK向供应商服务端发送初始化请求;所述客户端中的SDK接收供应商服务端发来的身份采集模块包;该身份采集模块包是由供应商服务端针对该初始化请求实时编码生成的,且供应商服务针对不同初始化请求实时编码生成的身份采集模块的执行逻辑不同;所述客户端中的SDK执行接收到的身份采集模块包,以获得所述第三方应用的身份信息;所述客户端中的SDK将获得的第三方应用的身份信息发送给供应商服务端。本说明书实施例能够提高对第三方应用校验的安全性。高对第三方应用校验的安全性。高对第三方应用校验的安全性。
技术研发人员:姚尧
受保护的技术使用者:支付宝(杭州)信息技术有限公司
技术研发日:2022.06.23
技术公布日:2022/11/1