【发明内容】
有鉴于此,本发明提供了一种连接建立方法、装置和设备,以便于提高云端与用户端之间交互的安全性。
具体技术方案如下:
本发明提供了一种连接建立方法,该方法包括:
用户设备获取认证码;
将包含认证码的数据发送给管理服务器;
接收所述管理服务器利用所述包含认证码的数据进行认证通过后返回的用于建立通道的参数信息;
利用所述参数信息,建立与连接服务器之间的通道。
根据本发明一优选实施方式,所述用户设备获取认证码包括:所述用户设备从标识服务器获取认证码。
根据本发明一优选实施方式,所述用户设备从标识服务器获取认证码包括:
所述用户设备发送所述用户设备的唯一标识给标识服务器;
接收所述标识服务器针对所述用户设备的唯一标识返回的认证码。
根据本发明一优选实施方式,所述包含认证码的数据还包括:所述用户设备的唯一标识。
根据本发明一优选实施方式,所述将包含认证码的数据发送给管理服务器包括:
对所述用户设备的唯一标识、认证码、应用密钥以及应用秘密进行签名;
将签名值、所述用户设备的唯一标识、认证码以及应用密钥发送给所述管理服务器。
根据本发明一优选实施方式,向所述标识服务器发送用户设备的唯一标识、接收所述认证码以及所述进行签名由所述用户设备中的安全芯片执行。
根据本发明一优选实施方式,所述包含认证码的数据通过HTTP POST的形式发送给所述管理服务器;
所述参数信息通过HTTP响应的形式接收。
根据本发明一优选实施方式,所述参数信息包括:
用于对传输数据进行加/解密的种子密钥seedKey以及连接参数。
根据本发明一优选实施方式,接收所述管理服务器利用所述包含认证码的数据进行认证通过后返回的用于建立通道的参数信息包括:
接收所述管理服务器返回的消息;
利用所述用户设备的唯一标识对接收到的消息的消息头进行解密,得到所述种子密钥;
利用所述种子密钥,对所述消息的消息体进行解密,得到所述连接参数。
根据本发明一优选实施方式,所述连接参数包括:
会话标识、连接服务器的IP地址和端口号。
根据本发明一优选实施方式,利用所述参数信息,建立与连接服务器之间的通道包括:
利用所述连接参数,与所述连接服务器建立TCP长连接;
向所述连接服务器发送通道连接请求,以及接收所述连接服务器返回的通道连接确认,从而建立与所述连接服务器之间的云通道;
利用所述种子密钥对所述云通道上传输的数据进行加/解密。
根据本发明一优选实施方式,该方法还包括:
在所述通道上采用异步方式收发数据。
根据本发明一优选实施方式,在所述通道上采用异步方式接收数据包括:
采用状态机的方式接收和重组通过所述通道发送来的数据包。
根据本发明一优选实施方式,采用状态机的方式接收和重组通过所述通道发送来的数据包包括:
在正常接收状态下,若收到协议头且长度可变长编码未接收完整,则进入收包中且包长未知状态;
在收包中且包长未知状态下,若收到完整长度的可变长编码但数据包未接收完整,则进入收包中且包长已知状态;若收到新的分片且可变长编码和数据包均接收完整,则进入完成收包状态;
在收包中且包长已知状态下,若收到新的分片且数据包接收完整,则进入完成收包状态;
在完成收包状态下,对属于该数据包的各分片进行重组后进入正常接收状态。
根据本发明一优选实施方式,该方法还包括:
对通过所述通道接收到的数据包进行解析;
若解析所述数据包为PUSH消息时,从解密后的数据包中提取应用数据并回调给上层业务模块处理。
根据本发明一优选实施方式,在所述通道上采用异步方式发送数据包括:
利用要发送的数据构造请求消息;
将所述请求消息挂到远程过程调用协议RPC发送链的链尾。
根据本发明一优选实施方式,该方法还包括:
通过所述通道接收到心跳消息后,返回心跳响应;
若超过设定时长未通过所述通道收到心跳消息,则关闭所述通道。
根据本发明一优选实施方式,若在执行所述回调时,出现状态异常,则关闭所述通道。
根据本发明一优选实施方式,该方法还包括:
所述用户设备监听网络事件,若网络出现异常,则关闭所述通道。
根据本发明一优选实施方式,在所述关闭所述通道之后,还包括:
转至执行所述获取认证码的步骤,以重新建立与连接服务器之间的通道。
本发明还提供了一种安全连接建立方法,该方法包括:
管理服务器接收用户设备发送的包含认证码的数据;
利用所述包含认证码的数据进行认证通过后,向所述用户设备返回用于建立通道的参数信息,以便所述用户设备建立与连接服务器之间的通道。
根据本发明一优选实施方式,所述包含认证码的数据还包括所述用户设备的唯一标识信息;
利用所述包含认证码的数据进行认证包括:
所述管理服务器将所述用户设备的唯一标识信息和所述认证码发送给标识服务器;
获取所述标识服务器返回的对所述认证码的认证结果。
根据本发明一优选实施方式,所述包含认证码的数据还包括所述用户设备的唯一标识信息:
利用所述包含认证码的数据进行认证包括:
所述管理服务器将所述用户设备的唯一标识信息发送给标识服务器;
获取所述标识服务器返回的所述唯一标识信息对应的认证码;
利用从所述标识服务器获取的认证码,对所述用户设备发送的认证码进行认证。
根据本发明一优选实施方式,所述包含认证码的数据还包括应用密钥和签名信息;
利用所述包含认证码的数据进行认证还包括:
所述管理服务器确定本地维护的所述应用密钥对应的应用秘密;
利用所述应用秘密、所述用户设备的唯一标识、认证码以及应用密钥对所述用户设备发送的签名信息进行校验;如果校验失败,则认证失败。
根据本发明一优选实施方式,所述包含认证码的数据通过HTTP POST的形式发送给所述管理服务器;
所述参数信息通过HTTP响应的形式返回给所述用户设备。
根据本发明一优选实施方式,所述参数信息包括:
用于对传输数据进行加/解密的种子密钥以及连接参数。
根据本发明一优选实施方式,所述管理服务器向所述用户设备返回的消息的消息头中携带利用所述用户设备的唯一标识加密后的种子密钥,所述消息的消息体携带利用所述种子密钥加密后的连接参数。
根据本发明一优选实施方式,所述连接参数包括:会话标识、连接服务器的IP地址和端口号。
本发明还提供了一种连接建立方法,其特征在于,该方法包括:
连接服务器接收用户设备利用用于建立通道的参数信息发送的连接请求,建立与所述用户设备之间的通道;
其中所述参数信息是管理服务器利用用户设备发送的认证码进行认证通过后返回给所述用户设备的。
根据本发明一优选实施方式,所述参数信息包括:
用于对传输数据进行加/解密的种子密钥以及连接参数。
根据本发明一优选实施方式,所述连接参数包括:
会话标识、连接服务器的IP地址和端口号。
根据本发明一优选实施方式,连接服务器建立与用户设备之间的通道包括:
建立与所述用户设备之间的TCP长连接,该TCP长连接是所述用户设备利用所述连接参数请求建立的;
接收所述用户设备发送的通道连接请求,以及向所述用户设备发送通道连接确认,从而建立与所述用户设备之间的云通道;
利用种子密钥对所述云通道上传输的数据进行加/解密。
根据本发明一优选实施方式,该方法还包括:所述连接服务器从所述管理服务器同步会话标识和种子密钥之间的对应关系;
通过所述通道接收到数据包后,确定在该通道上采用该数据包所携带的会话标识对应的种子密钥。
根据本发明一优选实施方式,该方法还包括:
所述连接服务器周期性地通过所述通道发送心跳消息;
若超过设定时长未通过所述通道接收到心跳响应,则关闭所述通道。
本发明还提供了一种连接建立方法,该方法包括:
标识服务器为用户设备分配并发送认证码;
接收管理服务器发送的用于认证的信息,并配合所述管理服务器对所述用户设备进行认证;
其中所述认证的结果用于所述管理服务器依据认证通过的结果向用户设备返回用于建立通道的参数信息。
根据本发明一优选实施方式,所述标识服务器为用户设备分配并发送认证码包括:
所述标识服务器接收到所述用户设备发送的唯一标识信息后,向所述用户设备分配并返回认证码。
根据本发明一优选实施方式,所述接收管理服务器发送的用于认证的信息,并配合所述管理服务器对所述用户设备进行认证包括:
接收到管理服务器提供的所述用户设备的认证码后,对接收到的认证码进行认证并向管理服务器返回认证结果。
根据本发明一优选实施方式,所述对接收到的认证码进行认证包括:
利用连同所述用户设备的认证码一起接收到的用户设备的唯一标识信息,确定本地维护的与所述用户设备的唯一标识信息对应的认证码;
将确定出的认证码与接收到的认证码进行比对,如果一致,则认证通过;否则认证失败。
根据本发明一优选实施方式,所述接收管理服务器发送的用于认证的信息,并配合所述管理服务器对所述用户设备进行认证包括:
接收到管理服务器提供的所述用户设备的唯一标识信息后,向所述管理服务器返回所述唯一标识信息对应的认证码,以便所述管理服务器利用接收到的认证码进行认证。
根据本发明一优选实施方式,所述标识服务器本地维护的与所述用户设备的唯一标识信息对应的认证码具有老化时间。
本发明提供了一种连接建立装置,设置于用户设备,该装置包括:
认证码获取模块,用于获取认证码;
参数获取模块,用于将包含认证码的数据发送给管理服务器;接收所述管理服务器利用所述包含认证码的数据进行认证通过后返回的用于建立通道的参数信息;
连接处理模块,用于利用所述参数信息,建立与连接服务器之间的通道。
本发明还提供了一种连接建立装置,设置于管理服务器,该装置包括:
认证码接收模块,用于接收用户设备发送的包含认证码的数据;
认证处理模块,用于利用所述包含认证码的数据进行认证;
参数处理模块,用于在所述认证通过后,向所述用户设备返回用于建立通道的参数信息,以便所述用户设备建立与连接服务器之间的通道。
本发明还提供了一种连接建立装置,设置于连接服务器,该装置包括:
连接处理模块,用于接收用户设备利用用于建立通道的参数信息发送的连接请求,建立所述连接服务器与用户设备之间的通道;
其中所述参数信息是管理服务器利用用户设备发送的认证码进行认证通过后返回给所述用户设备的。
本发明还提供了一种连接建立装置,设置于标识服务器,该标识服务器包括:
分配模块,用于为用户设备分配并发送认证码;
认证模块,用于接收管理服务器发送的用于认证的信息,并配合所述管理服务器对所述用户设备进行认证;
其中所述认证的结果用于所述管理服务器依据认证通过的结果向用户设备返回用于建立通道的参数信息。
本发明还提供了一种设备,包括
一个或者多个处理器;
存储器;
一个或者多个程序,所述一个或者多个程序存储在所述存储器中,被所述一个或者多个处理器执行以实现如下操作:
获取认证码;
将包含认证码的数据发送给管理服务器;
接收所述管理服务器利用所述包含认证码的数据进行认证通过后返回的用于建立通道的参数信息;
利用所述参数信息,建立用户设备与连接服务器之间的通道。
由以上技术方案可以看出,本发明中用户设备需在管理服务器处认证通过后,才能够从管理服务器获取用于建立通道的参数信息,进而与连接服务器建立通道,这种通道的建立方式能够提高云端与用户端之间交互的安全性。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
为了方便对本发明的理解,首先对本发明所基于的系统架构进行描述。如图1所示,该系统可以包括用户设备、管理服务器和连接服务器,还可以进一步包括标识服务器。其中用户设备指的是用户端的设备,可以包括但不限于诸如:智能移动终端、智能家电设备、网络设备、可穿戴式设备、智能医疗设备、PC(个人计算机)等。其中智能移动设备可以包括诸如手机、平板电脑、笔记本电脑、PDA(个人数字助理)等。智能家电设备可以包括诸如智能电视、智能空调、智能热水器、智能冰箱、智能空气净化器等等。网络设备可以包括诸如交换机、无线AP、服务器等。可穿戴式设备可以包括诸如智能手表、智能眼镜、智能手环等等。智能医疗设备可以包括诸如智能体温计、智能血压仪、智能血糖仪等等。
管理服务器和连接服务器可以是云端设备,例如,管理服务器可以为一个独立的服务器,连接服务器可以设置多个(如以服务器集群的形式存在);又例如,管理服务器和连接服务器可以设置为同一个服务器,或者,当有多个连接服务器时,管理服务器可以和某一个连接服务器设置为同一服务器,本申请不对管理服务器和连接服务器的存在方式做任何限制。其中管理服务器主要负责与用户设备协商建立通道的参数信息,用户设备在得到通道的参数信息后,与连接服务器之间建立通道,之后用户端与云端之间传输的数据就通过该通道进行传输,从而保证安全。
标识服务器可以是一个独立的服务器,也可以和管理服务器设置在同一个服务器中。在本发明实施例中,标识服务器主要负责为用户设备分配认证码,维护用户设备的唯一标识信息以及认证码之间的对应关系,可以针对管理服务器提供的认证码进行认证并返回认证结果;也可以针对管理服务器提供的用户设备的唯一标识信息向管理服务器返回对应的认证码,具体将在后续实施例中详述。
本申请实施例中,对于各服务器进行了命名,例如,管理服务器、标识服务器、连接服务器,该命名的目的主要是为了描述清晰起见,实际应用中,被命名为其他名称、但能够实现相同或类似功能的服务器,均属于本申请的保护范围。
本申请实施例中,对于各个服务器的划分,例如,管理服务器、标识服务器、连接服务器,是从各服务器主要实现的功能角度进行的逻辑划分,实际应用中,各个服务器可以部署在一台计算机设备中;或者,各个服务器也可以部署在多台计算机设备中;或者,各个服务器的数量,分别可以根据实际的业务需求进行灵活设置,例如,连接服务器可以为多个,每一个连接服务器可以提供不同的服务;又例如,管理服务器可以为多个,包括上级管理服务器和下级管理服务器,每个下级管理服务器可以负责不同用户设备。
图2为本发明实施例提供的主要方法流程图,如图2所示,该方法主要包括以下步骤:
在201中,用户设备获取认证码。
认证码是用于提供给管理服务器进行认证时使用的,在本发明实施例中对认证码的形式并不加以限制,只要其具有一定的随机性和一定时间范围内的唯一性即可。对于认证码,可以由标识服务器向用户设备分配并进行维护。标识服务器为用户设备分配认证码后,可以在本地维护用户设备的唯一标识信息与认证码之间的对应关系。具体将在后续实施例中进行详述。
在202中,用户设备将包含认证码的数据发送给管理服务器。
在本发明实施例中,在发送认证码的同时将用户设备的唯一标识信息发送给管理服务器,以便管理服务器利用该唯一标识信息对认证码进行认证。
在203中,管理服务器利用包含认证码的数据进行认证。
在进行认证时,管理服务器可以将该认证码提供给标识服务器,由标识服务器对该认证码进行认证后,返回认证结果给管理服务器。也可以将用户设备的唯一标识信息提供给标识服务器,并接收标识服务器返回的该唯一标识信息对应的认证码,然后利用该认证码对用户设备发送的认证码进行认证。考虑到更高的安全性,优选前一种实现方式。
更进一步地,用户设备发送的包含认证码的数据还可以包括签名信息,该签名信息用于管理服务器进行校验使用,具体将在后续实施例中详述。
在204中,认证通过后,向用户设备返回用于建立通道的参数信息。
其中用于建立通道的参数信息可以包括:种子密钥(seedKey)和连接参数。其中seedKey是用于对传输数据进行加/解密的密钥;连接参数用于建立用户设备与连接服务器之间的连接,可以包括诸如sid、连接服务器的IP地址和端口号等。
上述包含认证码的数据可以通过HTTP POST的形式发送,参数信息可以通过HTTP响应的形式发送。
在205中,用户设备利用参数信息,建立与连接服务器之间的通道,后续用户端与云端之间要传输的数据通过该通道进行传输。
建立通道主要包括三方面的内容:一方面是利用连接参数建立用户设备与连接服务器之间的长连接的过程,另一方面建立云通道的过程;在一方面是配置该云通道上数据加/解密采用seedKey。这几个方面的内容将在后续实施例中进行详细描述。
下面结合一个具体的实施例,对上述方法进行详细描述。图3为本发明实施例提供的详细方法流程图,其中CCP模块和ID2模块为用户设备中的两个模块,CCP模块为系统级别的执行模块,也可以是应用级别的执行模块,若为应用级别的执行模块,则需要ID2模块向该应用级别的模块开放访问权限。ID2模块可以为用户设备中设置于安全执行环境的模块,例如采用安全芯片的形式,在本实施例中用户设备的唯一标识采用ID2表示。CCP是云通道协议(Cloud Channel Protocol)的简称,对于云端与用户端之间的通道协议也可以采用其他协议类型,在本发明实施例中以CCP协议为例,如图3中所示,该方法可以包括以下步骤:
在301中,CCP模块向ID2模块请求ID2。
在本发明实施例中采用固化于用户设备的芯片中,不可篡改和非法获取的ID2作为用户设备的唯一标识,该ID2固化于安全芯片中,该安全芯片在本发明实施例中作为ID2模块,即只有ID2模块具有对ID2进行处理的权限,其他模块可以向ID2模块请求ID2。
当用户设备需要与云端进行交互时,需要首先建立用户设备与云端的连接服务器之间的CCP通道以进行数据传输,此时可以由CCP模块向ID2模块请求ID2。
在302中,ID2模块向标识服务器请求认证码,该请求中携带该用户设备的ID2。
在本发明实施例中标识服务器维护有所有合法设备的ID2,并且在本发明实施例中由标识服务器为各合法的用户设备分配认证码。标识服务器接收到请求后,可以首先对请求中携带的ID2进行合法性验证,如果该ID2为合法设备的ID2,则为该用户设备分配认证码;否则,拒绝为该用户设备分配认证码。
在303中,ID2模块获取标识服务器返回的认证码。
需要说明的是,ID2模块与标识服务器之间的信息交互通过ID2模块和标识服务器之间的通道发送。在ID2模块中可以预置标识服务器的连接参数,在ID2模块与标识服务器之间建立连接后,可以采用预先约定的密钥(该预先约定的密钥可以预先写入ID2模块)对上述ID2、认证码进行加解密;也可以在连接建立后进行密钥的协商,然后利用协商的密钥对上述ID2、认证码进行加解密。
在304中,ID2模块对ID2、认证码、appkey和appsecret进行签名后,将ID2、认证码、appkey以及签名信息提供给CCP模块。
在此对签名的方式并不加以限制,可以采用诸如RSA算法等。
需要注意的是,在进行签名时是对ID2、认证码、appkey和appsecret这四个参数进行的,但发送的数据中并不包含appsecret。另外,appkey是来源于CCP模块的,也就是说,ID2模块在进行签名之前,首先从CCP模块获取appkey,然后再执行上述签名的处理后,再将ID2、认证码、appkey和签名信息提供给CCP模块,该过程图中未示出。
上述认证码的获取和签名都在ID2模块进行,由于ID2模块是一块安全芯片,属于安全执行环境,因此认证码无法被外界获取和篡改,加强了安全性。
在305中,CCP模块将ID2、认证码、应用密钥(appkey)以及签名信息通过HTTP POST形式发送给管理服务器。
在306中,管理服务器将ID2和认证码发送给标识服务器。
在307中,管理服务器利用该用户设备的ID2、认证码、appkey以及签名信息进行校验,以及获取标识服务器对认证码的认证结果。
对签名进行校验的过程可以包括:首先利用appkey确定对应的应用秘密(appsecret),在此需要说明的是,在管理服务器中预先维护有各appkey对应的appsecret;然后利用确定出的appsecret对签名信息进行验证,即在本地对ID2、认证码、appkey和appsecret进行签名,将得到的签名信息与用户设备发送的签名信息进行比对,如果一致,则校验通过;否则校验失败。
对于标识服务器而言,在接收到管理服务器发送的ID2和认证码后,确定该ID2对应的认证码。由于认证码是标识服务器针对各用户设备分配的,并且在标识服务器本地维护了各ID2对应的认证码,因此可以确定出管理服务器提供的ID2对应的认证码,然后将确定出的认证码与接收到的认证码进行比对,如果一致,则认证通过,否则认证失败。其中,认证码的分配方式可以是随机生成的,也可以从认证码池中随机选择的一个认证码。
需要说明的是,标识服务器维护的认证码是存在老化时间的,当达到老化时间后,该认证码失效。
除了上述认证的实现方式之外,还存在另一种实现方式:管理服务器将ID2提供给标识服务器,标识服务器并不负责进行认证码的认证,而是将该ID2对应的认证码返回给管理服务器,由管理服务器利用标识服务器返回的认证码对用户设备提供的认证码进行认证,如果不一致,则认证失败。但考虑到安全性的因素,前一种实现方式的安全性更高,因此优选前一种实现方式。
需要说明的是,上述校验和对认证码的认证可以采用任意的顺序先后执行,也可以同时执行。只有校验和对认证码的认证均成功时,才算认证通过,有一个不成功,则认为认证失败。
或者,可以先进行校验,如果校验失败,则可以不考虑或者不进行对认证码的认证;如果校验成功,则进一步考虑或者进行对认证码的认证。也可以先进行对认证码的认证,如果认证成功,再进一步进行校验;如果认证失败,则不用进行校验。
在308中,如果认证通过,则将用于建立通道的参数信息通过HTTP响应的形式发送给用户设备,其中用于建立通道的参数信息可以包括seedKey和连接参数,连接参数包括诸如sid、apid、连接服务器的IP地址和Port号。
sid表示会话id,由管理服务器生成,用于标识用户设备与连接服务器之间一次连接的会话,后续用户设备与连接服务器之间的数据包都要携带该sid。
apid表示用户设备的应用标识,其是用于标识应用的,属于同一应用的各通道都采用相同的apid。该apid是可选的内容。
其中发送给用户设备的用于建立通道的参数信息也是经过加密的,具体方式可以为:管理服务器向用户设备返回的HTTP响应消息的消息头中携带利用用户设备的ID2进行加密后的seedKey,消息体中携带利用seedKey加密后的连接参数。
在309中,CCP模块将HTTP响应提供给ID2模块。
在310中,ID2模块解析HTTP响应得到其中的用于建立通道的参数信息并提供给CCP模块。
解析过程可以包括:利用用户设备的ID2对HTTP响应消息的消息头进行解密,得到seedKey;再利用seedKey对消息体进行解密,得到诸如sid、apid、连接服务器的IP地址和Port号等连接参数。
也可以CCP模块将HTTP响应消息的消息头提供给ID2模块,由ID2模块利用ID2对HTTP响应消息的消息头进行解密,得到seedKey;然后将seedKey提供给CCP模块。CCP模块利用seedKey对HTTP响应消息的消息体进行解密,得到诸如sid、apid、连接服务器的IP地址和Port号等连接参数。该种实现方式图中未示出。
在311中,CCP模块利用连接参数与连接服务器建立TCP长连接。
TCP长连接建立过程为已有技术,在此不再详述。
在312中,CCP模块和连接服务器之间进行CCP连接报文的交互,从而建立用户设备与连接服务器之间的CCP通道。即CCP模块向连接服务器发送CCP连接请求,连接服务器向CCP模块发送CCP连接确认。
由于本实施例是以CCP协议为例进行描述,因此本步骤中进行通道建立时,交互的是CCP连接报文,若采用其他通道协议,则进行其他通道协议类型的连接报文。
在313中,用户设备和连接服务器之间通过seedKey对云通道上传输的数据进行加/解密。
管理服务器在分配sid和seedKey给用户设备后,会将其同步给连接服务器,也就是说,连接服务器可以从管理服务器同步sid和seedKey之间的对应关系。后续用户设备在通道上发送来的数据包会携带sid,连接服务器通过该sid就能够获知在该通道上采用什么seedKey,即该sid对应的seedKey。
用户设备对于发送给连接服务器的数据包采用seedKey进行加密,对于来自连接服务器的数据包采用seedKey进行解密。连接服务器对于发送给用户设备的数据包采用seedKey进行加密,对于来自用户设备的数据包采用seedKey进行解密。
在CCP通道上传输数据时,可以采用异步的方式收发数据。下面分别对数据的接收和发送机制进行详述。
通过CCP通道接收数据时,由于服务端返回的TCP数据是零散的、分片的且可能跨越CCP多包的,因此为了能够正确解析CCP的每个数据包,本发明实施例可以采用状态机的方式接收数据包。状态机示意图可以如图4所示,主要包括四个状态:正常接收状态、收包中且包长未知状态、收包中且包长已知状态以及完成收包状态。
在正常接收状态下,若收到数据包的CCP协议头,但可变长编码并未接收完整,则进入收包中且包长未知状态;若收到完整数据包,则进入完成收包状态。
在收包中且包长未知状态下,若收到新的分片,但可变长编码未接收完整,则继续处于收包中且包长未知状态下;若可变长编码接收完整,但整个数据包未接收完,则进入收包中且包长已知状态;若收到新的分片,可变长编码接收完整,则进入完成收包状态。
在收包中且包长已知状态下,若收到新的分片且整个数据包已接收完,则进入完成收包状态;若收到新的分片但整个数据包未接收完,则继续处于收包中且包长已知状态下。
在完成收包状态下,对属于同一数据包的各分片进行重组,并上报给对数据包进行解析的模块后进入正常接收状态。
在对于接收到的数据包进行解析时,可以根据包头判断协议类型,根据可变长编码获取payload(净荷)长度;然后利用seedKey对payload进行解密。完成之后,可以构造PUSHACK消息并异步发送给连接服务器。
若解析该数据包的协议类型为PUSH消息时,可以从解密后的数据包中提取应用数据并回调给上层业务模块处理。其中用户设备在执行该回调时,如果出现异常,可以关闭CCP通道,然后CCP模块可以重新执行图3所示流程,从而重新建立用户设备与连接服务器之间的CCP通道。
在通过CCP通道发送数据时,为了满足跨线程的需求,CCP使用同步async变量的data字段来缓存要发送的报文链。因此,在本发明实施例中,可以利用要发送的数据构造Request消息,然后将Request消息挂到RPC发送链的链尾。其中利用要发送的数据构造Request消息时,使用seedKey对要发送的数据进行加密。
另外,为了保证通道的可靠性,在CCP通道上存在一个心跳检测机制,即连接服务器周期性地发送心跳消息Ping,例如,连接服务器每隔70秒向用户设备发送一个Ping。用户设备接收到Ping后返回心跳响应Pong。若连接服务器超过设定时长未接收到Pong,则关闭该CCP通道。
在用户设备侧周期性地检测是否接收到Ping,例如每10秒检测一次是否接收到Ping。若用户设备超过设定时长未接收到Ping,例如超过120秒未接收到Ping,则也可以关闭该CCP通道。当CCP通道由于上述原因被关闭后,CCP模块可以重新执行图3所示流程,从而重新建立用户设备与连接服务器之间的CCP通道。
另外,用户设备可以对注册的网络事件进行监听,如果网络出现异常,则关闭该CCP通道。当网络恢复后,CCP模块可以重新执行图3所示流程,从而重新建立用户设备与连接服务器之间的CCP通道。
以上是对本发明所提供方法进行的详细描述,下面结合具体实施例对本发明提供的装置进行详细描述。
图5为本发明实施例提供的设置于用户设备的装置结构图,该装置用于完成上述方法实施例中用户设备所执行的操作。如图5所示,该装置可以包括:认证码获取模块01、参数获取模块02和连接处理模块03,还可以进一步包括数据处理模块04、心跳维护模块05和网络监听模块06。各组成模块的主要功能如下:
认证码获取模块01负责获取认证码。具体地,认证码获取模块01可以从标识服务器获取认证码,即发送用户设备的唯一标识给标识服务器;接收标识服务器针对用户设备的唯一标识返回的认证码。
参数获取模块02负责将包含认证码的数据发送给管理服务器;接收管理服务器利用包含认证码的数据进行认证通过后返回的用于建立通道的参数信息。
其中包含认证码的数据还包括:用户设备的唯一标识。另外,认证码获取模块01可以对用户设备的唯一标识、认证码、appkey以及appsecret进行签名。参数获取模块02在将包含认证码的数据发送给管理服务器时,将认证码获取模块01得到的签名值、用户设备的唯一标识、认证码以及appkey发送给管理服务器。
上述的认证码获取模块01实际上相当于上述方法实施例中的ID2模块,其可以设置于用户设备的安全芯片。
参数获取模块02可以将包含认证码的数据通过HTTP POST的形式发送给管理服务器;接收通过HTTP响应的形式发送的用于建立通道的参数信息。
其中,用于建立通道的参数信息可以包括:用于对传输数据进行加/解密的seedKey以及连接参数。连接参数可以包括:sid、连接服务器的IP地址和端口号。
具体地,参数获取模块02在接收管理服务器返回的参数信息时,可以首先接收管理服务器返回的消息;然后利用用户设备的唯一标识对接收到的消息的消息头进行解密,得到seedKey;再利用seedKey,对消息的消息体进行解密,得到连接参数。
连接处理模块03负责利用用于建立通道的参数信息,建立与连接服务器之间的通道。具体地,可以首先利用连接参数,与连接服务器建立TCP长连接;然后向连接服务器发送通道连接请求,以及接收连接服务器返回的通道连接确认,从而建立与连接服务器之间的云通道;后续利用seedKey对云通道上传输的数据进行加/解密。
数据处理模块04负责在通道上采用异步方式收发数据。具体地,可以采用状态机的方式接收和重组通过通道发送来的数据包,如图4中所示,可以包括以下几种状态和迁移方式:
在正常接收状态下,若收到数据包的协议头(若通道采用CCP协议,则为CCP协议头),但长度可变长编码并未接收完整,则进入收包中且包长未知状态;若收到完整数据包,则进入完成收包状态。
在收包中且包长未知状态下,若收到新的分片,但长度可变长编码未接收完整,则继续处于收包中且包长未知状态下;若长度可变长编码接收完整,但整个数据包未接收完,则进入收包中且包长已知状态;若收到新的分片,长度可变长编码接收完整,则进入完成收包状态。
在收包中且包长已知状态下,若收到新的分片且整个数据包已接收完,则进入完成收包状态;若收到新的分片但整个数据包未接收完,则继续处于收包中且包长已知状态下。
在完成收包状态下,对属于同一数据包的各分片进行重组,并上报给对数据包进行解析的模块后进入正常接收状态。
连接处理模块03在对通过通道接收到的数据包进行解析时,若解析数据包为PUSH消息时,从解密后的数据包中提取应用数据并回调给上层业务模块处理。若连接处理模块03在执行回调时,出现状态异常,则关闭该通道。
数据处理模块03在通道上采用异步方式发送数据时,可以利用要发送的数据构造请求消息,将请求消息挂到RPC发送链的链尾。
心跳维护模块05负责通过通道接收到心跳消息后,返回心跳响应;若超过设定时长未通过通道收到心跳消息,则触发连接处理模块03关闭通道。
网络监听模块06负责监听网络事件,若网络出现异常,则触发连接处理模块03关闭通道。
对于上述情况,连接处理模块03在关闭通道后,触发认证码获取模块01重新执行获取认证码的操作,以重新建立与连接服务器之间的通道。
图6为本发明实施例提供的设置于管理服务器的装置结构图,该装置用于完成方法实施例中管理服务器所执行的操作。如图6所示,该装置可以包括:认证码接收模块11、认证处理模块12和参数处理模块13。各组成模块的主要功能如下:
认证码接收模块11负责接收用户设备发送的包含认证码的数据。
认证处理模块12负责利用包含认证码的数据进行认证。
上述包含认证码的数据还包括用户设备的唯一标识信息,认证处理模块12在进行认证时,可以采用以下两种实现方式:
第一种方式:认证处理模块12将用户设备的唯一标识信息和认证码发送给标识服务器;获取标识服务器返回的对所述认证码的认证结果。
这种方式实际上是由标识服务器负责对认证码进行认证,即标识服务器接收到管理服务器发送的唯一标识信息和认证码后,确定本地维护的该唯一标识信息对应的认证码,将确定的认证码与接收到的认证码进行比对,如果一致,则返回认证成功的结果,如果失败,则返回认证失败的结果。
第二种方式:认证处理模块12将用户设备的唯一标识信息发送给标识服务器;获取标识服务器返回的唯一标识信息对应的认证码;利用从标识服务器获取的认证码,对所述用户设备发送的认证码进行认证。
更进一步地,包含认证码的数据还可以包括appkey和签名信息,这种情况下,认证处理模块12在进行认证时,可以进一步执行:确定本地维护的appkey对应的appsecret;利用appsecret、用户设备的唯一标识、认证码以及appkey对用户设备发送的签名信息进行校验;如果校验失败,则认证失败。也就是说,认证处理模块12进行的认证可以包括对签名的校验以及对认证码的认证,两者都通过则认证通过,有其一失败,则认证失败。
参数处理模块13负责在认证通过后,向用户设备返回用于通道的参数信息,以便用户设备建立与连接服务器之间的通道。
上述的认证码接收模块11接收通过HTTP POST形式发送的包含认证码的数据;参数处理模块13将用于建立通道的参数信息通过HTTP响应的形式返回给用户设备。
其中用于建立通道的参数信息可以包括:用于对传输数据进行加/解密的seedKey以及连接参数,连接参数可以包括:sid、连接服务器的IP地址和端口号。参数处理模块13向用户设备返回的消息的消息头中携带利用用户设备的唯一标识加密后的seedKey,消息的消息体携带利用seedKey加密后的连接参数。
图7为本发明实施例提供的设置于连接服务器的装置结构图,如图7所示,该装置可以包括:连接处理模块21,还可以包括数据处理模块22、同步模块23和心跳维护模块24。各组成模块的主要功能如下:
连接处理模块21负责接收用户设备利用用于建立通道的参数信息发送的连接请求,建立连接服务器与用户设备之间的通道,其中参数信息是管理服务器利用用户设备发送的认证码进行认证通过后返回给所述用户设备的。
其中,用于建立通道的参数信息包括:用于对传输数据进行加/解密的seedKey以及连接参数。连接参数可以包括:isd、连接服务器的IP地址和端口号。
在建立通道时,连接处理模块21建立连接服务器与用户设备之间的TCP长连接,该TCP长连接是用户设备利用连接参数请求建立的;接收用户设备发送的通道连接请求,以及向用户设备发送通道连接确认,从而建立与用户设备之间的云通道。后续数据处理模块22利用seedKey对云通道上传输的数据进行加/解密。
同步模块23负责从管理服务器同步sid和seedKey之间的对应关系;数据处理模块22通过通道接收到数据包后,确定在该通道上采用该数据包所携带的sid对应的seedKey,采用该seedKey对传输的数据进行加/解密处理。
另外,为了保证通道的可靠性,心跳维护模块24周期性地通过通道发送心跳消息;若超过设定时长未通过通道接收到心跳响应,则触发连接处理模块关闭通道。
对于标识服务器可以采用如图8中所示的结构。图8为本发明实施例提供的一种设置于标识服务器的装置结构图,如图8所示,该装置可以包括:分配模块31和认证模块32。各组成模块的主要功能如下:
分配模块31负责为用户设备分配并发送认证码。具体地,分配模块31接收到用户设备发送的唯一标识信息后,向用户设备分配并返回认证码。其中,认证码的分配方式可以是随机生成的,也可以从认证码池中随机选择的一个认证码。
另外,在标识服务器本地会维护唯一标识信息与认证码之间的对应关系,且各认证码具有老化时间,到达老化时间后,认证码失效。
认证模块32负责接收管理服务器发送的用于认证的信息,并配合管理服务器对所述用户设备进行认证;其中认证的结果用于所述管理服务器依据认证通过的结果向用户设备返回用于建立通道的参数信息。
认证模块32可以存在两种实现方式:
第一种实现方式:认证模块32接收到管理服务器提供的所述用户设备的认证码后,对接收到的认证码进行认证并向管理服务器返回认证结果。
具体地,认证模块32可以利用连同用户设备的认证码一起接收到的用户设备的唯一标识信息,确定本地维护的与用户设备的唯一标识信息对应的认证码;将确定出的认证码与接收到的认证码进行比对,如果一致,则认证通过;否则认证失败。
第二种实现方式:认证模块32接收到管理服务器提供的用户设备的唯一标识信息后,向管理服务器返回唯一标识信息对应的认证码,以便管理服务器利用接收到的认证码进行认证。
本发明实施例提供的上述方法和装置可以设置并运行于设备中的计算机程序体现。该设备可以包括一个或多个处理器,还包括存储器和一个或多个程序,如图9中所示。其中该一个或多个程序存储于存储器中,被上述一个或多个处理器执行以实现本发明上述实施例中所示的方法流程和/或装置操作。例如,被上述一个或多个处理器执行的方法流程,可以包括:
获取认证码;
将包含认证码的数据发送给管理服务器;
接收管理服务器利用包含认证码的数据进行认证通过后返回的用于建立通道的参数信息;
利用该参数信息,建立用户设备与连接服务器之间的通道。
本发明实施例提供的上述方法和装置可以广泛地应用于各种领域,例如可以应用于物联网中各种智能家电设备、智能汽车等与云端服务器之间的安全通信。其中连接服务器可以是云端为物联设备提供具体服务的应用服务器。
举一个例子,在智能电视中的安全芯片中预先写入为该智能电视分配的ID2,基于该ID2从标识服务器获取认证码,并基于该认证码在管理服务器处通过认证后,从管理服务器获取连接服务器的连接参数。此时的连接服务器可以为视频服务器,连接参数包括seedkey、会话标识、视频服务器的IP地址和端口号。智能电视可以进一步利用获取到的视频服务器的IP地址和端口号,与视频服务器建立CCP通道,在该CCP通道上,智能电视与视频服务器之间进行的数据交互均采用seedkey进行加密,并且采用上述连接参数中的会话标识来标识该通道上的会话。这样就保证了智能电视与视频服务器之间的安全连接。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。