一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

小程序的数据处理方法、装置、设备以及存储介质与流程

2022-12-20 02:07:29 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及小程序技术领域。


背景技术:

2.智能小程序可以在多个开源联盟的宿主程序(或称为宿主应用)上运行。有些未签约的宿主程序伪造线上已签约的宿主的信息运行智能小程序,可能使得宿主程序上的小程序安全性难以保证。


技术实现要素:

3.本公开提供了一种小程序的数据处理方法、装置、设备以及存储介质。
4.根据本公开的一方面,提供了一种小程序的数据处理方法包括:
5.对小程序客户端的握手数据进行加密,得到第一加密数据,该小程序客户端的握手数据中包括宿主程序的第一信息;
6.向小程序服务器发送包括该第一加密数据的握手请求;
7.接收该小程序服务器对解密该第一加密数据得到的该宿主程序的第一信息验证成功后返回的握手响应,该握手响应中包括该小程序服务器的握手数据;
8.根据该小程序服务器的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
9.根据本公开的另一方面,提供了一种小程序的数据处理方法,包括:
10.接收小程序客户端发送的包括第一加密数据的握手请求,该第一加密数据包括小程序客户端对小程序客户端的握手数据进行加密得到的数据,该小程序客户端的握手数据中包括宿主程序的第一信息;
11.对解密该第一加密数据得到的该宿主程序的第一信息进行验证;
12.在验证成功的情况下,向该小程序客户端返回握手响应,该握手响应中包括该小程序服务器的握手数据;
13.根据该小程序客户端的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
14.根据本公开的另一方面,提供了一种小程序的数据处理装置,包括:
15.第一加密模块,用于对小程序客户端的握手数据进行加密,得到第一加密数据,该小程序客户端的握手数据中包括宿主程序的第一信息;
16.第一发送模块,用于向小程序服务器发送包括该第一加密数据的握手请求;
17.第一接收模块,用于接收该小程序服务器对解密该第一加密数据得到的该宿主程序的第一信息验证成功后返回的握手响应,该握手响应中包括该小程序服务器的握手数据;
18.第一处理模块,用于根据该小程序服务器的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
19.根据本公开的另一方面,提供了一种小程序的数据处理装置,包括:
20.第三接收模块,用于接收小程序客户端发送的包括第一加密数据的握手请求,该第一加密数据包括小程序客户端对小程序客户端的握手数据进行加密得到的数据,该小程序客户端的握手数据中包括宿主程序的第一信息;
21.第一验证模块,用于对解密该第一加密数据得到的该宿主程序的第一信息进行验证;
22.第一返回模块,用于在验证成功的情况下,向该小程序客户端返回握手响应,该握手响应中包括该小程序服务器的握手数据;
23.第二处理模块,用于根据该小程序客户端的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
24.根据本公开的另一方面,提供了一种电子设备,包括:
25.至少一个处理器;以及
26.与该至少一个处理器通信连接的存储器;其中,
27.该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开中任一实施例的方法。
28.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行根据本公开中任一实施例的方法。
29.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开中任一实施例的方法。
30.根据本公开,可以在握手过程中对宿主程序的第一信息进行验证,并在验证成功的情况下,能够通过握手过程得到用于对业务数据进行加解密的共享密钥,从而防止假冒宿主程序的信息,保证小程序的业务数据的安全性。
31.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
32.附图用于更好地理解本方案,不构成对本公开的限定。其中:
33.图1是根据本公开一实施例的小程序的数据处理方法的流程示意图;
34.图2是根据本公开一实施例的小程序的数据处理方法的流程示意图;
35.图3是根据本公开实施例的采用dh算法进行密钥交换的流程图;
36.图4是根据本公开一实施例的小程序的数据处理方法的流程示意图;
37.图5是根据本公开一实施例的小程序的数据处理方法的流程示意图;
38.图6是根据本公开一实施例的小程序的数据处理方法的流程示意图;
39.图7是相关技术中拉取小程序包的流程示意图;
40.图8是根据本公开实施例的拉取小程序包的流程示意图;
41.图9是根据本公开一实施例的小程序的数据处理装置的结构示意图;
42.图10是根据本公开一实施例的小程序的数据处理装置的结构示意图;
43.图11是根据本公开一实施例的小程序的数据处理装置的结构示意图;
44.图12是根据本公开一实施例的小程序的数据处理装置的结构示意图;
45.图13是用来实现本公开实施例的小程序的数据处理方法的电子设备的框图。
具体实施方式
46.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
47.图1是根据本公开一实施例的小程序的数据处理方法的流程示意图。该小程序的数据处理方法可以包括:
48.s101、对小程序客户端的握手数据进行加密,得到第一加密数据,该小程序客户端的握手数据中包括宿主程序的第一信息。
49.s102、向小程序服务器发送包括该第一加密数据的握手请求。
50.s103、接收该小程序服务器对解密该第一加密数据得到的该宿主程序的第一信息验证成功后返回的握手响应,该握手响应中包括该小程序服务器的握手数据。
51.s104、根据该小程序服务器的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
52.在本公开实施例中,小程序可以是一种不需要下载安装即可使用的应用。,宿主程序可以包括小程序提供应用环境的程序。小程序客户端可以称为小程序sdk(software development kit,软件开发工具包)、小程序框架等,可以包括支持各种小程序运行的能力。小程序客户端可以集成在宿主程序中。可以通过宿主平台(或称为宿主服务器)中对宿主程序进行注册,注册成功的宿主程序可以称为合法的宿主程序。在合法的宿主程序中集成的小程序客户端可以支持后续对各种小程序的业务数据的处理。
53.为了防止不合法的宿主程序假冒合法的宿主程序的信息,可以基于宿主程序的第一信息进行验证。宿主程序的第一信息可以包括在宿主程序内置的用于表示宿主唯一身份的信息。小程序sdk获取宿主程序的第一信息后,可以将宿主程序的第一信息作为小程序客户端的握手数据的一部分进行加密。例如,小程序客户端的握手数据可以包括clienthello(客户端你好)协议包。对clienthello协议包进行加密可以得到protocol buffer(协议缓存)扩展包数据(简称数据包)。扩展包中可以包括宿主程序的第一信息等。
54.对小程序客户端的握手数据进行加密的算法可以有多种,例如非对称加密算法和对称加密算法等。例如,采用rsa(rivest,shamir,adleman,李维斯特、萨莫尔、阿德曼)加密算法生成公钥和私钥。在小程序客户端利用公钥对小程序客户端的握手数据进行加密,通过握手请求将加密后的第一加密数据发送至小程序服务器。在小程序服务器利用私钥解密第一加密数据得到小程序客户端的握手数据,并对其中的宿主程序的第一信息进行验证,以确定该宿主程序是否合法。如果验证成功表示该宿主程序合法,如果验证失败表示宿主程序不合法。小程序服务器中可以预先存储用于验证的信息。例如,宿主程序的第一信息包括采用md5(信息摘要)算法对宿主程序的包名进行计算得到md5字符串,可以比较小程序服务器中预先存储的md5字符串中是否存在与宿主程序的第一信息表示的md5字符串匹配的字符串。如果有,表示对宿主程序的第一信息验证成功。验证成功后可以继续握手流程,小程序服务器向小程序客户端返回小程序服务器的握手数据。通过握手过程,小程序客户端
可以根据小程序服务器的握手数据得到用于对后续的业务数据进行加解密的共享密钥。小程序服务器也可以根据小程序客户端的握手数据得到用于对后续的业务数据进行加解密的共享密钥。两端的共享密钥可以相同。
55.在本技术实施例中,可以在握手过程中对宿主程序的第一信息进行验证,并在验证成功的情况下,能够通过握手过程得到用于对业务数据进行加解密的共享密钥,从而防止假冒宿主程序的信息,保证小程序的业务数据的安全性。
56.在一种可能的实施方式中,如图2所示,该方法还包括:s201、从宿主程序获取该宿主程序的第二信息,该宿主程序的第二信息中包括该宿主程序从宿主服务器获取的用于生成公钥的密钥材料。
57.在一种可能的实施方式中,在s101中,对小程序客户端的握手数据进行加密,包括:s202、利用该公钥对该小程序客户端的握手数据进行加密。
58.在本公开实施例中,宿主服务器中可以保存多种宿主程序的信息(可以称为宿主信息、宿主注册信息等),宿主程序和/或小程序服务器可以从宿主服务器获取所需的宿主程序的信息。例如宿主程序a从宿主服务器获取宿主程序a的注册信息,宿主程序b从宿主服务器获取宿主程序b的注册信息。多种宿主程序可以包括不同类型的例如视频、地图、社交等类型的宿主程序,也可以包括同一类型不同版本的宿主程序。宿主程序可以从宿主服务器获取该宿主程序的信息、即宿主程序的第二信息。从宿主服务器获取宿主程序的信息中可以包括用于生成公钥的密钥材料。密钥材料可以包括宿主的标识等信息。可以利用ras算法对密钥材料进行计算得到公钥和私钥。其中,公钥保存在小程序客户端,私钥保存在小程序服务器。利用宿主程序的第二信息生成的公钥对小程序客户端的握手数据进行加密,有利于保证握手过程的安全性。
59.在一种可能的实施方式中,该宿主程序的第一信息中包括根据该宿主程序本地保存的与该宿主程序身份相关的信息得到的第一验证信息;该宿主程序的第二信息中还包括该宿主程序从宿主服务器获取的与该宿主程序身份相关的第二验证信息;该小程序客户端的握手数据包括该第一验证信息和该第二验证信息。
60.在本公开实施例中,宿主程序可以从宿主服务器获取该宿主程序的第二信息可以包括与宿主程序身份相关的第二验证信息例如宿主服务器为宿主程序分配的注册通过的标识信息(identity,id)。该标识信息可以用于验证宿主成熟是否合法。由于该标识信息有可能被未注册的宿主程序截获,为了防止未注册的宿主程序假冒已注册的宿主程序,可以结合第一验证信息和第二验证信息进行多级验证。第一验证信息和第二验证信息的验证顺序可以不做限制。
61.例如,先验证第一验证信息是否合法。如果第一验证信息合法再验证第二验证信息是否合法,如果第二验证信息也合法表示该宿主程序整体验证成功。如果第一验证信息验证不合法,则不进行后续验证。如果第一验证信息合法但是第二验证信息不合法也表示该宿主程序整体验证不成功。
62.再如,先验证第二验证信息是否合法。如果第二验证信息合法再验证第第一验证信息是否合法,如果第一验证信息也合法表示该宿主程序整体验证成功。如果第二验证信息验证不合法,则不进行后续验证。如果第二验证信息合法但是第一验证信息不合法也表示该宿主程序整体验证不成功。
63.由于第一验证信息包括直接从宿主程序获取的与宿主程序身份相关的信息例如宿主app(application,应用)的包名,该包名通常不容易被截获或者篡改,验证结果更加准确。因此,通过对第一验证信息和第二验证信息进行多级验证,有利于提高对宿主程序验证的准确性,提高小程序数据安全性。
64.在一种可能的实施方式中,利用该公钥对该小程序客户端的握手数据进行加密,包括:利用该公钥对该第一验证信息和该第二验证信息进行加密。
65.在本公开实施例中,小程序客户端利用公钥可以对第一验证信息例如宿主app的包名和第二验证信息例如宿主app注册的id进行加密,得到第一加密数据。然后向小程序服务器发送包括该第一加密数据的握手请求。在小程序服务器利用私钥对第一加密数据进行解密得到第一验证信息和第二验证信息,然后参见上述的验证步骤,利用小程序服务器本地存储的合法信息验证第一验证信息和第二验证信息是否合法。如果合法,小程序服务器再进一步向小程序客户端返回握手响应。如果不合法,小程序服务器可以不返回握手响应,或者返回握手失败的响应。
66.在一种可能的实施方式中,接收该小程序服务器对解密该第一加密数据得到的该宿主程序的第一信息验证成功后返回的握手响应,包括:接收该小程序服务器在该第一验证信息和该第二验证信息验证成功的情况下返回的握手响应。
67.在本公开实施例中,小程序客户端收到表示握手成功的握手响应后,可以获取该握手响应中的小程序服务器握手数据例如serverhello(服务器你好)协议包。握手响应中的小程序服务器握手数据可以是加密的例如采用ras算法加密的,也可以是不加密的。如果是加密的,则可以采用ras算法解密。
68.在本公开实施例中,在第一验证信息和第二验证信息验证成功时返回握手响应,有利于提高握手阶段对宿主程序验证的准确性,提高小程序数据安全性。
69.在一种可能的实施方式中,该宿主程序本地保存的与该宿主程序身份相关的信息包括该宿主程序的包名。在本公开实施例中,宿主程序的包名可以与宿主程序需要适用的操作系统关联。宿主程序a在一种操作系统的包名为a1,在另一种操作系统的包名为a2。
70.在一种可能的实施方式中,该方法还包括:采用信息摘要算法对该宿主程序的包名进行加密,得到该第一验证信息。例如,信息摘要算法可以为md5算法,可以采用md5算法对宿主程序的包名进行计算,得到的第一验证信息包括加密后的包名。然后利用公钥对加密后的包名和宿主app注册的id一起进行加密,得到第一加密数据。由于宿主程序的包名通常可以唯一确定宿主程序的身份,并且在宿主程序中内置的包名不易被假冒,小程序客户端对宿主程序的包名进行加密后,可以和其他的身份信息一起再次加密后用于握手,能过更好地提高握手阶段的安全性。
71.在一种可能的实施方式中,该小程序客户端的握手数据中包括需要与该小程序服务器交换的第一公开数;该小程序服务器的握手数据中包括需要与该小程序客户端交换的第二公开数。
72.在本公开实施例中,小程序客户端和小程序服务器在握手阶段可以通过密钥交换算法例如dh(diffie

hellman,迪菲-赫尔曼)算法交换密钥。小程序客户端和小程序服务器中可以分别生成各自的随机数。例如,小程序客户端中包括第一随机数,小程序服务器中包括第二随机数。小程序客户端可以对第一随机数进行取模运算得到第一公开数,小程序服
务器可以对第二进行取模运算得到第二公开数。然后,小程序客户端和小程序服务器可以互相交换第一公开数和第二公开数。例如,在小程序客户端可以将第一公开数作为小程序客户端的握手数据的一部分,利用公钥与其他信息例如第一验证信息和/或第二验证信息一起加密,然后通过握手请求发送至小程序服务器。再如,在小程序服务器可以通过握手响应将第二公开数发送至小程序客户端。
73.在一种可能的实施方式中,在s104中,根据该小程序服务器的握手数据生成共享密钥,包括:根据该第二公开数进行取模运算得到该小程序客户端的该共享密钥。例如,小程序客户端可以根据第二公开数生成共享密钥。小程序服务器也可以根据第一公开数生成共享密钥。小程序客户端生成的共享密钥可以等于小程序服务器生成的共享密钥。这样,在后续具体业务流程中,可以使用共享密钥对小程序客户端和小程序服务器之间交互的业务数据进行加解密,提高业务数据的安全性。
74.如图3所示,为一种示例性的采用dh算法进行密钥交换的流程图。生成共享密钥的流程可以包括以下步骤:
75.小程序客户端生成第一随机数a,小程序服务器生成第二随机数b。利用参数g和p对随机数进行取模运算。例如,小程序客户端利用g
a mod p对a进行取模运算得到第一公开数α。小程序服务器利用g
b mod p对b进行取模运算得到第二公开数β。然后,小程序客户端和小程序服务器通过握手过程互相交换第一公开数和第二公开数。在小程序客户端可以利用ga×
b mod p(β
a mod p)对β进行取模运算得到共享密钥ka。在小程序服务可以利用ga×
b mod p(α
a mod p)对α进行取模运算得到共享密钥kb。其中,ka=kb。
76.在一种可能的实施方式中,如图4所示,该方法还包括:
77.s401、向该小程序服务器发送业务请求,该业务请求中包括利用该共享密钥加密的上行业务数据。
78.s402、接收该小程序服务器返回的业务响应,该业务响应中包括该小程序服务器利用该共享密钥对该加密的上行业务数据进行解密和处理后、利用该共享密钥加密的下行业务数据。
79.在本公开实施例中,小程序客户端和小程序服务器在握手成功后可以获得相同的共享密钥。利用共享密钥能够实现对小程序客户端和小程序服务器进行对称加密。例如可以采用aes(advanced encryption standard,高级加密标准)算法对业务数据进行加解密。利用共享密钥对小程序客户端和小程序服务器之间的业务数据进行加解密可以提高业务数据的安全性,防止业务数据泄露。
80.在一种可能的实施方式中,该业务请求中还包括该宿主程序的第一验证信息和/或第二验证信息。
81.在一种可能的实施方式中,接收该小程序服务器返回的业务响应,包括:接收该小程序服务器在该第一验证信息和/或该第二验证信息验证成功的情况下返回的业务响应。
82.在本公开实施例中,如果业务请求中包括上述宿主程序的第一验证信息例如宿主程序的加密的包名和/或第二验证信息例如宿主程序的注册的id,可以在业务请求阶段再次对宿主程序进行验证,拦截不合法宿主程序的业务请求,对不合法的宿主程序进行小程序包管控,从而限流拉取小程序包入口,限制小程序授权服务。
83.图5是根据本公开一实施例的小程序的数据处理方法的流程示意图。该小程序的
数据处理方法可以包括:
84.s501、接收小程序客户端发送的包括第一加密数据的握手请求,该第一加密数据包括小程序客户端对小程序客户端的握手数据进行加密得到的数据,该小程序客户端的握手数据中包括宿主程序的第一信息;
85.s502、对解密该第一加密数据得到的该宿主程序的第一信息进行验证;
86.s503、在验证成功的情况下,向该小程序客户端返回握手响应,该握手响应中包括该小程序服务器的握手数据。
87.s504、根据该小程序客户端的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
88.在一种可能的实施方式中,对解密该第一加密数据得到的该宿主程序的第一信息进行验证,包括:
89.利用与该小程序客户端的公钥对应的私钥对该第一加密数据进行解密得到该宿主程序的第一信息;
90.对该宿主程序的第一信息进行验证;
91.其中,该小程序客户端的公钥是根据从宿主程序获取的该宿主程序的第二信息生成的;该宿主程序的第二信息中包括该宿主程序从宿主服务器获取的用于生成该公钥的密钥材料。
92.在一种可能的实施方式中,该宿主程序的第一信息中包括对该宿主程序本地保存的与该宿主程序身份相关的信息进行加密得到的第一验证信息;该宿主程序的第二信息中还包括该宿主程序从宿主服务器获取的与该宿主程序身份相关的第二验证信息;该小程序客户端的握手数据包括该第一验证信息和该第二验证信息;
93.对该宿主程序的第一信息进行验证,包括:对该第一验证信息和该第二验证信息进行验证。
94.在一种可能的实施方式中,该宿主程序本地保存的与该宿主程序身份相关的信息包括该宿主程序的包名;
95.对该宿主程序的第一信息进行验证,包括:验证该小程序服务器中是否存在与该该第一验证信息匹配的信息。
96.例如,第一验证信息包括对宿主程序的包名采用md5算法计算后得到的md5字符串。小程序服务器中可以预先获取已经注册的合法的宿主程序的包名,并且采用相同的md5算法计算得到合法的宿主程序的包名对应的md5字符串。小程序服务器收到待验证的第一验证信息后,可以查找本地计算得到md5字符串中是否存在与第一验证信息相同的md5字符串。如果有,表示匹配成功,也即验证成功。
97.在一种可能的实施方式中,该小程序客户端的握手数据中包括需要与该小程序服务器交换的第一公开数;该小程序服务器的握手数据中包括需要与该小程序客户端交换的第二公开数。
98.在一种可能的实施方式中,根据该小程序服务器的握手数据生成共享密钥,包括:根据该第一公开数进行取模运算得到该小程序服务器的该共享密钥。
99.在一种可能的实施方式中,如图6所示,该方法还包括:
100.s601、接收该小程序客户端发送的业务请求,该业务请求中包括利用该共享密钥
加密的上行业务数据;
101.s602、利用该共享密钥对该加密的上行业务数据进行解密和处理后,得到下行业务数据;
102.s603、利用该共享密钥加密该下行业务数据;
103.s604、向该小程序客户端返回业务响应,该业务响应中加密的下行业务数据。
104.在一种可能的实施方式中,该业务请求中还包括该宿主程序的第一验证信息和/或第二验证信息;
105.在一种可能的实施方式中,该方法还包括:对该第一验证信息和/或该第二验证信息进行验证。该步骤可以在s604、s603之前执行,也可以在s602解密上行业务数据得到第一验证信息和第二验证信息后执行。
106.在s601中,向该小程序客户端返回业务响应包括:在验证成功的情况下,向该小程序客户端返回该业务响应。
107.上述图5和图6的方法实施例中的具体示例和解释,可以参见图1至图4的方法实施例的相关描述,在此不再赘述。
108.相关技术中,有些未签约的宿主app(可以称为宿主、宿主应用、宿主程序等)可能伪造线上已签约的宿主app的注册信息(可以简称宿主信息)运行智能小程序。这时,宿主app上的小程序安全性得不到保证。并且,作为智能小程序技术服务的输出方,无法管控未签约的宿主app恶意拉取小程序包,造成线上小程序包被恶意盗取。为此,本公开实施例提供的方法,可以标识合法的宿主;可以限流拉取小程序包入口;还可以限制小程序授权服务。
109.如图7所示,相关技术中,拉取小程序包的流程可以包括:
110.s701、宿主app客户端(可以简称宿主、宿主app、宿主程序等)在小程序sdk初始化配置。
111.s702、小程序sdk通过c/s(client/server,客户端/服务器)协议例如https(hyper text transfer protocol over secure socket layer,安全套接字层上的超文本传输协议)携带宿主的hostname(主机名)参数向智能小程序服务器(server)发起小程序包的请求。
112.s703、服务器校验hostname,通过hostname识别已签约的宿主app客户端后执行s704。
113.s704、允许宿主app客户端进行小程序包的下载。
114.在s701中,如果一个未签约的宿主伪造宿主配置信息(或称为宿主信息),小程序服务器(server)也可能识别到hostname合法,小程序sdk就可以基于假冒的宿主配置信息下载到小程序包。
115.相关技术存在宿主信息被替换的风险,小程序包请求明文数据传递、明文返回,请求中会被抓包,小程序server无法感知合法签约的宿主。本公开实施例可以对宿主信息加入唯一标识身份校验,对包请求进行加密。
116.在本公开实施例中,对宿主信息加入身份标识,并且可以利用宿主信息对应公钥进行加密。在一种示例中,包请求可以包括两个阶段:握手请求阶段获取密钥例如共享密钥;业务请求阶段通过握手阶段获取的密钥加密包请求的参数信息(例如宿主信息、app包
名信息),服务器返回数据也可以是密文,并通过密钥解析出明文。假如宿主伪造了宿主信息,在握手阶段携带加密宿主的身份标识、app包名(从app的获取,无法替换),小程序server解密握手的请求,就能识别不合法的宿主,后续的包请求业务就可以被拦截。进一步地,也可以对违法的宿主进行小程序包管控。
117.本公开实施例以请求下载小程序包的业务为例,在请求小程序包过程中,可以包括两个阶段:握手请求阶段和业务请求阶段。握手请求阶段,小程序sdk通过与小程序服务器(server)约定一套自有网络通信协议例如tls(transport layer security,传输层安全性协议),构造clienthello协议、serverhello协议,保证小程序sdk(native,本地的)与小程序服务器双方授信,得到可信的密钥,握手请求可以是密文请求。业务请求阶段(例如请求小程序包)可以使用握手阶段获取的密钥对业务上行参数加密,得到密文请求、通过密文返回protocol buffer(协议缓存)数据。小程序sdk内部用密钥解密。整个通信链路全程加密,第三方开发者无法抓包,也无法伪造信息。
118.如图8所示,拉取(下载)小程序包的流程包括:
119.s801、宿主app客户端从开源宿主平台(也可以称为宿主服务器)获取宿主信息。该宿主信息可以包括宿主app客户端在宿主平台注册称为合法用户后宿主平台为该宿主app客户端分配的注册信息。该注册信息中可以包括宿主app客户端的id(identity)、密钥材料等。
120.s802、宿主app客户端在小程序sdk初始化宿主信息。
121.s803、小程序sdk从宿主app客户端获取宿主app的包名,并对包名进行md5运算,得到宿主app的包名对应签名信息(md5字符串)。
122.在握手阶段可以包括s804至s810。
123.s804、通过宿主app客户端对应的宿主信息例如其中的标识信息和密钥材料等生成公钥。
124.s805、利用公钥加密客户端你好(clienthello)协议得到协议缓存(protocol buffer)扩展包数据。扩展包数据中可以包括签名信息、用于生成共享密钥的公开数(key-share)等。
125.s806、小程序sdk向小程序服务器发送握手请求。该握手请求的上行参数可以包括上述利用公钥加密的扩展包数据。握手请求中还可以包括宿主信息中的注册的id,该注册的id也可以与签名信息、小程序sdk的公开数等一起加密。
126.s807、小程序服务器收到握手请求后,利用私钥进行解密。利用解密后的数据对宿主app客户端进行验证。验证签名信息是否合法,注册的id是否合法等。如果合法继续执行握手阶段的其他步骤。如果不合法,则可以认为握手失败,不再执行后续的握手步骤和业务请求步骤。如果验证成功,小程序服务器可以生成serverhello协议包(或称为协议数据包)。该serverhello协议包中可以包括小程序服务器的公开数。并且,小程序服务器还可以利用收到的小程序sdk的公开数计算小程序服务器的共享密钥。
127.s808、小程序服务器向小程序sdk返回握手响应,握手响应中可以包括服务器你好(serverhello)协议包。该serverhello协议包可以是加密的。
128.s809、利用公钥解密serverhello协议包。
129.s810、小程序sdk利用serverhello协议包解密得到的小程序服务器的公开数,生
成密钥例如共享密钥。这样,小程序sdk和小程序服务器中可以保存相同的共享密钥。
130.在业务请求阶段可以包括s811至s818。
131.s811、小程序sdk利用握手阶段获取的密钥例如共享密钥加密上行业务数据,生成应用(application)协议包。该步骤可以将上行业务数据和宿主程序的验证信息一起加密。宿主程序的验证信息可以包括握手阶段使用的签名信息、注册的id等。
132.s812、小程序sdk向小程序服务器发送业务请求例如下载小程序包的请求。业务请求的上行参数可以包括上一步加密的应用协议包。
133.s813、小程序服务器利用自身的共享密钥对业务请求进行解密。对解密后的上行业务数据进行处理。例如查找是否存在小程序sdk请求下载的小程序包。
134.s814、利用共享密钥加密小程序服务器的业务响应例如serverhello协议包。该serverhello协议包可以包括业务处理结果,例如是否允许下载小程序包、小程序包下载地址等。
135.s815、小程序服务器向小程序sdk返回业务请求的serverhello协议包。
136.s816、小程序sdk利用共享密钥解密serverhello协议包,获取内容(content)业务数据。
137.本公开实施例能够安全有效地防止宿主开发者,不经过小程序服务器的审核,随意拉取小程序包并运行小程序。
138.图9是根据本公开一实施例的小程序的数据处理装置的结构示意图,该装置包括:
139.第一加密模块901,用于对小程序客户端的握手数据进行加密,得到第一加密数据,该小程序客户端的握手数据中包括宿主程序的第一信息;
140.第一发送模块902,用于向小程序服务器发送包括该第一加密数据的握手请求;
141.第一接收模块903,用于接收该小程序服务器对解密该第一加密数据得到的该宿主程序的第一信息验证成功后返回的握手响应,该握手响应中包括该小程序服务器的握手数据;
142.第一处理模块904,用于根据该小程序服务器的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
143.在一种可能的实施方式中,如图10所示,该装置还包括:获取模块1001,用于从宿主程序获取该宿主程序的第二信息,该宿主程序的第二信息中包括该宿主程序从宿主服务器获取的用于生成公钥的密钥材料;
144.该第一加密模块901,还用于利用该公钥对该小程序客户端的握手数据进行加密。
145.在一种可能的实施方式中,该宿主程序的第一信息中包括根据该宿主程序本地保存的与该宿主程序身份相关的信息得到的第一验证信息;该宿主程序的第二信息中还包括该宿主程序从宿主服务器获取的与该宿主程序身份相关的第二验证信息;该小程序客户端的握手数据包括该第一验证信息和该第二验证信息;
146.该第一加密模块901,还用于利用该公钥对该第一验证信息和该第二验证信息进行加密;
147.该第一接收模块903,还用于接收该小程序服务器在该第一验证信息和该第二验证信息验证成功的情况下返回的握手响应。
148.在一种可能的实施方式中,该宿主程序本地保存的与该宿主程序身份相关的信息
包括该宿主程序的包名,如图10所示,该装置还包括:
149.第二加密模块1002,用于采用信息摘要算法对该宿主程序的包名进行加密,得到该第一验证信息。
150.在一种可能的实施方式中,该小程序客户端的握手数据中包括需要与该小程序服务器交换的第一公开数;该小程序服务器的握手数据中包括需要与该小程序客户端交换的第二公开数;
151.该第一处理模块904,还用于根据该第二公开数进行取模运算得到该小程序客户端的该共享密钥。
152.在一种可能的实施方式中,如图10所示,该装置还包括:
153.第二发送模块1003,用于向该小程序服务器发送业务请求,该业务请求中包括利用该共享密钥加密的上行业务数据;
154.第二接收模块1004,用于接收该小程序服务器返回的业务响应,该业务响应中包括该小程序服务器利用该共享密钥对该加密的上行业务数据进行解密和处理后、利用该共享密钥加密的下行业务数据。
155.在一种可能的实施方式中,该业务请求中还包括该宿主程序的第一验证信息和/或第二验证信息;
156.该第二接收模块1004,还用于接收该小程序服务器在该第一验证信息和/或该第二验证信息验证成功的情况下返回的业务响应。
157.图11是根据本公开一实施例的小程序的数据处理装置的结构示意图,该装置包括:
158.第三接收模块1101,用于接收小程序客户端发送的包括第一加密数据的握手请求,该第一加密数据包括小程序客户端对小程序客户端的握手数据进行加密得到的数据,该小程序客户端的握手数据中包括宿主程序的第一信息;
159.第一验证模块1102,用于对解密该第一加密数据得到的该宿主程序的第一信息进行验证;
160.第一返回模块1103,用于在验证成功的情况下,向该小程序客户端返回握手响应,该握手响应中包括该小程序服务器的握手数据;
161.第二处理模块1104,用于根据该小程序客户端的握手数据生成共享密钥,该共享密钥用于对业务数据进行加解密。
162.在一种可能的实施方式中,该第一验证模块1102,还用于利用与该小程序客户端的公钥对应的私钥对该第一加密数据进行解密得到该宿主程序的第一信息;对该宿主程序的第一信息进行验证;
163.其中,该小程序客户端的公钥是根据从宿主程序获取的该宿主程序的第二信息生成的;该宿主程序的第二信息中包括该宿主程序从宿主服务器获取的用于生成该公钥的密钥材料。
164.在一种可能的实施方式中,该宿主程序的第一信息中包括对该宿主程序本地保存的与该宿主程序身份相关的信息进行加密得到的第一验证信息;该宿主程序的第二信息中还包括该宿主程序从宿主服务器获取的与该宿主程序身份相关的第二验证信息;该小程序客户端的握手数据包括该第一验证信息和该第二验证信息;
165.该第一验证模块1102,还用于对该第一验证信息和该第二验证信息进行验证。
166.在一种可能的实施方式中,该宿主程序本地保存的与该宿主程序身份相关的信息包括该宿主程序的包名;
167.对该宿主程序的第一信息进行验证,包括:验证该小程序服务器中是否存在与该第一验证信息匹配的信息。
168.在一种可能的实施方式中,该小程序客户端的握手数据中包括需要与该小程序服务器交换的第一公开数;该小程序服务器的握手数据中包括需要与该小程序客户端交换的第二公开数;
169.根据该小程序服务器的握手数据生成共享密钥,包括:
170.根据该第一公开数进行取模运算得到该小程序服务器的该共享密钥。
171.在一种可能的实施方式中,如图12所示,该装置还包括:
172.第四接收模块1201,用于接收该小程序客户端发送的业务请求,该业务请求中包括利用该共享密钥加密的上行业务数据;
173.第三处理模块1202,用于利用该共享密钥对该加密的上行业务数据进行解密和处理后,得到下行业务数据;
174.第三加密模块1203,用于利用该共享密钥加密该下行业务数据;
175.第二返回模块1204,用于向该小程序客户端返回业务响应,该业务响应中加密的下行业务数据。
176.在一种可能的实施方式中,该业务请求中还包括该宿主程序的第一验证信息和/或第二验证信息;
177.如图12所示,该装置还包括:第二验证模块1205,用于对该第一验证信息和/或该第二验证信息进行验证;
178.该第二返回模块1204,还用于在验证成功的情况下,向该小程序客户端返回该业务响应。
179.本公开实施例的装置的各模块、子模块的具体功能和示例的描述,可以参见上述方法实施例中对应步骤的相关描述,在此不再赘述。
180.本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
181.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
182.图13示出了可以用来实施本公开的实施例的示例电子设备1300的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
183.如图13所示,设备1300包括计算单元1301,其可以根据存储在只读存储器(rom)1302中的计算机程序或者从存储单元1308加载到随机访问存储器(ram)1303中的计算机程序,来执行各种适当的动作和处理。在ram 1303中,还可存储设备1300操作所需的各种程序
和数据。计算单元1301、rom 1302以及ram 1303通过总线1304彼此相连。输入/输出(i/o)接口1305也连接至总线1304。
184.设备1300中的多个部件连接至i/o接口1305,包括:输入单元1306,例如键盘、鼠标等;输出单元1307,例如各种类型的显示器、扬声器等;存储单元1308,例如磁盘、光盘等;以及通信单元1309,例如网卡、调制解调器、无线通信收发机等。通信单元1309允许设备1300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
185.计算单元1301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1301的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1301执行上文所描述的各个方法和处理,例如小程序的数据处理方法。例如,在一些实施例中,小程序的数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1308。在一些实施例中,计算机程序的部分或者全部可以经由rom 1302和/或通信单元1309而被载入和/或安装到设备1300上。当计算机程序加载到ram 1303并由计算单元1301执行时,可以执行上文描述的小程序的数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元1301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行小程序的数据处理方法。
186.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
187.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
188.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
189.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视
器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
190.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
191.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
192.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
193.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献