基于双系统的客户端程序升级方法及计算机可读存储介质与流程

文档序号:17757684发布日期:2019-05-24 21:25阅读:166来源:国知局
基于双系统的客户端程序升级方法及计算机可读存储介质与流程

本发明涉及程序升级技术领域,尤其涉及一种基于双系统的客户端程序升级方法及计算机可读存储介质。



背景技术:

armtrustzone技术可以把arm处理器划分成两个区域:安全区域和非安全区域,这个区域包括了处理器核和所有的内外部资源。处理器核被分成了安全核和非安全核,资源被分成了安全资源和非安全资源,比如可以设置一个外部设备是安全的,当一个设备被设置成安全状态时,这个设备只能被安全处理器及运行在安全处理器上的软件所访问,而那些非安全的处理器核及运行在非安全处理器核上的软件无法访问到这个设备。运用这个特性,可以把trustzone技术应用于需要安全隔离的场景,把处理器和处理上的资源隔离成两个世界,一个安全世界,一个非安全世界,在安全世界上运行一个安全操作系统,非安全世界上运行一个非安全操作系统。

车载中控屏上使用trustzone技术进行资源隔离,非安全区域运行android操作系统,安全区域运行一个安全操作系统。android可以保证中控屏提供丰富的多媒体应用,在android上可以运行来自多方的应用程序。由于中控屏上还需要运行一些和车辆信息安全相关的应用,比如获取车辆速度,开启车辆窗户、大灯和转向灯等,这些应用程序关乎车辆的安全,为了防止非法的应用程序控制车辆,通常把涉及到车辆控制的应用分成两个部分来进行实现,一部分称为客户端程序,一部分称为服务端程序,客户端程序运行在android系统,服务端程序运行在安全操作系统,同时把和车辆连接的设备,比如can总线设备,设置成安全状态,这样可以保证在android上的应用是无法直接访问到这些安全设备。当android上的客户端程序需要控制车辆时,需要首先连接上服务端程序,并经过服务端程序的身份认证,通过身份认证后,客户端程序才能发送请求,并通过服务端程序去控制车辆。

通常软件都是需要进行升降级,目前普遍的软件升级方式是通过有线或者无线网络把需要更新的软件从远端应用商城下载到本地,这种方式往往是对所下载的软件没有进行身份验证,任何软件都可能被下载到本地设备上,造成软件已经更新完成的假象,可能直到这个软件启动运行时才发现所下载的软件是错误的。

客户端程序和服务端程序由车厂或者授权第三方厂商进行开发,这样可以确保其合法性和安全性,客户端程序和服务端程序关乎车辆的安全,必须保证所运行的客户端软件是合法的,所以必须从客户端软件下载或者更新过程中保证这个客户端软件的合法性。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于双系统的客户端程序升级方法及计算机可读存储介质,可保证本地设备接收到的客户端程序的合法性。

为了解决上述技术问题,本发明采用的技术方案为:一种基于双系统的客户端程序升级方法,包括:

生成公私钥对,将私钥保存至远端服务器,将公钥保存至本地设备的安全操作系统;

使用所述私钥对客户端程序进行加密和签名,得到客户端密文和客户端签名;

远端服务器发送升级请求至所述本地设备的安全操作系统;

安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器;

若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统;

安全操作系统对所述客户端密文和客户端签名进行合法性验证,若验证通过,则将普通操作系统中原来的所述客户端程序的数据替换为所述客户端密文和客户端签名。

本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:

生成公私钥对,将私钥保存至远端服务器,将公钥保存至本地设备的安全操作系统;

使用所述私钥对客户端程序进行加密和签名,得到客户端密文和客户端签名;

远端服务器发送升级请求至所述本地设备的安全操作系统;

安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器;

若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统;

安全操作系统对所述客户端密文和客户端签名进行合法性验证,若验证通过,则将普通操作系统中原来的所述客户端程序的数据替换为所述客户端密文和客户端签名。

本发明的有益效果在于:远端服务器通过对响应数据包进行验证,保证响应数据包来自于合法的本地设备;本地设备根据接收到客户端密文和客户端签名对客户端程序进行签名验证,保证接收到的客户端程序的合法性;同时,升级请求的接收和客户端程序的验证都在安全操作系统中完成,可以减少来自非安全方面的干扰。本发明可保证本地设备接收到的客户端程序的合法性,克服了在升级过程中可能接收到非法的软件而不能觉察的问题,做到及时发现及时防范。

附图说明

图1为本发明一种基于双系统的客户端程序升级方法的流程图;

图2为本发明实施例一的方法流程图;

图3为本发明实施例二的双系统客户端程序的升级示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明最关键的构思在于:在安全操作系统中对接收到的升级数据进行签名验证。

名词解释:

can模块:是一款对整车各电子控制装置之间实现通讯数据转发的智能电控设备,从而使整车实现车载电控装置区域性网络控制系统。本发明中,can模块可以动态地设置成普通的can模块,也可以设置成安全的can模块,当设置成普通can模块时,两个操作系统都可以访问这个can模块,当设置成安全can模块时,只有安全操作系统可以访问这个can模块。

trust-server:安全应用服务,为安全操作系统提供服务,安全操作系统通过trust-server应用程序,可以操作普通操作系统下的资源,比如读写android的文件系统。

trust-driver:安全操作系统的通信驱动模块,用于和普通操作系统的通信驱动模块normal-driver进行通信,完成安全操作系统和普通操作系统的数据通信功能。

normal-driver:和trust-driver模块对应,是普通操作系统下的通信驱动模块,用于和安全操作系统进行数据通信。

请参阅图1,一种基于双系统的客户端程序升级方法,包括:

生成公私钥对,将私钥保存至远端服务器,将公钥保存至本地设备的安全操作系统;

使用所述私钥对客户端程序进行加密和签名,得到客户端密文和客户端签名;

远端服务器发送升级请求至所述本地设备的安全操作系统;

安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器;

若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统;

安全操作系统对所述客户端密文和客户端签名进行合法性验证,若验证通过,则将普通操作系统中原来的所述客户端程序的数据替换为所述客户端密文和客户端签名。

从上述描述可知,本发明的有益效果在于:可保证本地设备接收到的客户端程序的合法性,克服了在升级过程中可能接收到非法的软件而不能觉察的问题,做到及时发现及时防范。

进一步地,所述“远端服务器发送升级请求至所述本地设备的安全操作系统”具体为:

远端服务器发送升级请求至所述本地设备的can模块;

若当前can模块处于安全状态,则将所述升级请求转发至安全操作系统;

若当前can模块处于非安全状态,则将所述升级请求转发至普通操作系统;

普通操作系统将所述升级请求转发至安全操作系统;

安全操作系统将can模块设置为安全状态。

由上述描述可知,当can模块处于非安全状态时则通知安全操作系统,使安全操作系统将can模块设置为安全状态,保证后续的响应数据包的传输和升级数据的传输的安全性。

进一步地,所述“安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器”具体为:

安全操作系统根据所述升级请求,生成响应数据包;

使用公钥对所述响应数据包进行加密,并将加密后的响应数据包发送至远端服务器。

进一步地,所述“若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统”具体为:

远端服务器使用私钥对所述加密后的响应数据包进行解密;

若解密成功,则将所述客户端密文和客户端签名发送至安全操作系统。

由上述描述可知,通过对响应数据包进行加密传输,保证传输安全性;通过对响应数据包进行解密验证,保证本地设备的合法性。

进一步地,所述“安全操作系统对所述客户端密文和客户端签名进行合法性验证”具体为:

安全操作系统接收所述客户端密文和客户端签名;

使用公钥对所述客户端密文进行解密,得到客户端明文;

对所述客户端明文进行摘要运算,得到的第一摘要值;

使用公钥对所述客户端签名进行解密,得到第二摘要值;

若所述第一摘要值与所述第二摘要值一致,则判定验证通过。

由上述描述可知,根据接收到客户端密文和客户端签名对客户端程序进行签名验证,保证接收到的客户端程序的合法性。

本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:

生成公私钥对,将私钥保存至远端服务器,将公钥保存至本地设备的安全操作系统;

使用所述私钥对客户端程序进行加密和签名,得到客户端密文和客户端签名;

远端服务器发送升级请求至所述本地设备的安全操作系统;

安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器;

若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统;

安全操作系统对所述客户端密文和客户端签名进行合法性验证,若验证通过,则将普通操作系统中原来的所述客户端程序的数据替换为所述客户端密文和客户端签名。

进一步地,所述“远端服务器发送升级请求至所述本地设备的安全操作系统”具体为:

远端服务器发送升级请求至所述本地设备的can模块;

若当前can模块处于安全状态,则将所述升级请求转发至安全操作系统;

若当前can模块处于非安全状态,则将所述升级请求转发至普通操作系统;

普通操作系统将所述升级请求转发至安全操作系统;

安全操作系统将can模块设置为安全状态。

进一步地,所述“安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器”具体为:

安全操作系统根据所述升级请求,生成响应数据包;

使用公钥对所述响应数据包进行加密,并将加密后的响应数据包发送至远端服务器。

进一步地,所述“若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统”具体为:

远端服务器使用私钥对所述加密后的响应数据包进行解密;

若解密成功,则将所述客户端密文和客户端签名发送至安全操作系统。

进一步地,所述“安全操作系统对所述客户端密文和客户端签名进行合法性验证”具体为:

安全操作系统接收所述客户端密文和客户端签名;

使用公钥对所述客户端密文进行解密,得到客户端明文;

对所述客户端明文进行摘要运算,得到的第一摘要值;

使用公钥对所述客户端签名进行解密,得到第二摘要值;

若所述第一摘要值与所述第二摘要值一致,则判定验证通过。

实施例一

请参照图2,本发明的实施例一为:一种基于双系统的客户端程序升级方法,本方法基于trustzone技术,可应用于对车载终端中的程序升级,包括如下步骤:

s1:生成公私钥对,将私钥保存至远端服务器,将公钥保存至本地设备的安全操作系统;

s2:使用所述私钥对客户端程序进行加密和签名,得到客户端密文和客户端签名;具体地,所述私钥对客户端程序进行加密即得到客户端密文;用哈希算法对客户端程序进行哈希运算,会生成一个固定长度的数字串,称为摘要值,然后用私钥对这个摘要值进行加密,即得到客户端签名。

s3:远端服务器发送升级请求至所述本地设备的安全操作系统。

具体地,远端服务器发送升级请求至所述本地设备的can模块;若当前can模块处于安全状态,则将所述升级请求转发至安全操作系统。若当前can模块处于非安全状态,则将所述升级请求转发至普通操作系统;普通操作系统将所述升级请求转发至安全操作系统;安全操作系统将can模块设置为安全状态。

s4:安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器;进一步地,安全操作系统使用公钥对所述响应数据包进行加密,并将加密后的响应数据包发送至远端服务器。进一步地,将加密后的响应数据包通过安全状态下的can模块发送至远端服务器。

s5:判断远端服务器对所述响应数据包的验证是否通过,若是,则执行步骤s6。进一步地,远端服务器使用私钥对所述加密后的响应数据包进行解密,若解密成功,则判定验证通过。

s6:将所述客户端密文和客户端签名发送至安全操作系统;

s7:安全操作系统对所述客户端密文和客户端签名进行合法性验证,判断是否验证通过,若是,则执行步骤s8,若否,则判定升级失败。

具体地,安全操作系统接收所述客户端密文和客户端签名后,先使用公钥对所述客户端密文进行解密,得到客户端明,然后对所述客户端明文进行摘要运算,得到的第一摘要值,此时计算摘要值所采用的摘要运算与步骤s2中的哈希算法一致。接着使用公钥对所述客户端签名进行解密,得到第二摘要值。如果第一摘要值与第二摘要值一致,则表示接收到的客户端程序是合法的,判定验证通过。

s8:将普通操作系统中原来的所述客户端程序的数据替换为所述客户端密文和客户端签名。具体地,通知普通操作系统的trust-server服务程序把接收到的客户端密文和客户端签名加载到普通操作系统的文件目录/data/ca下,替换原先的客户端密文和客户端签名。

本实施例中,远端服务器通过对响应数据包进行验证,保证响应数据包来自于合法的本地设备;本地设备根据接收到客户端密文和客户端签名对客户端程序进行签名验证,保证接收到的客户端程序的合法性;同时,远端服务器和本地设备之间的响应数据和升级数据的发送接收都通过安全状态下的can模块完成,升级请求的接收和客户端程序的验证都在安全操作系统中完成,可以减少来自非安全方面的干扰。本发明可保证本地设备接收到的客户端程序的合法性,克服了在升级过程中可能接收到非法的软件而不能觉察的问题,做到及时发现及时防范。

实施例二

本实施例是实施例一的一具体应用场景。

图3为本实施例的双系统客户端程序的升级示意图,包括本地设备和远端服务器,本地设备采用trustzone技术,具有安全操作系统和普通操作系统。

其中,本地设备指需要更新的客户端所在的设备;远端服务器指存放客户端软件升级包的服务器,在这个服务器上存放着经过加密后的客户端程序和这个客户端的签名,更新时远端服务器会把加密后的客户端程序和签名发送给本地设备。

本地设备中设有一个can模块,can模块可以动态地设置成普通的can模块,也可以设置成安全的can模块,当设置成普通can模块时,两个操作系统都可以访问这个can模块,当设置成安全can模块时,只有安全操作系统可以访问这个can模块。

普通操作系统和安全操作系统中各有一个can数据处理模块。普通操作系统中can数据处理模块1用于接收处理来自普通can模块的can数据包,并把数据包发送给普通操作系统对应的模块,当can模块处于非安全状态时,由can数据处理模块1处理can数据。安全操作系统中can数据处理模块2用于接收来自安全can模块的can数据包,并把数据包分发给安全操作系统对应的模块,当can模块处于安全状态时,由can数据处理模块2处理can数据。

安全操作系统中的升级模块用于接收来自can数据处理模块的升级数据包,并使用保存在安全操作系统上的公钥验证客户端软件,验证通过后再把客户端软件发送到普通操作系统。

普通操作系统中的文件系统/data/ca用于存放客户端软件。

进一步地,远端服务器通过中间网络与本地设备通信连接。中间网络可以是车载网关tbox,介于远端服务器和can网络之间,可以把远端服务器的数据通过can网络下发到本地设备。

具体步骤如下:

1、设备出厂前,先生成一个公私钥对,私钥由远端服务器保存,公钥由本地设备保存;

2、把需要更新的客户端程序ca存放到远端服务器上,并用私钥加密成客户端密文ca*,并生成签名;

3、远端服务器通过can网络发送请求升级ca的can数据包;

4、如果当前can模块处于非安全状态,这个can数据包会被can数据处理模块1接收,然后can数据处理模块1把数据转发给trust-server,进入步骤5;如果当前can设备处于安全状态,则直接转入步骤7。

5、trust-server接收到can数据处理模块1转发而来的can数据包,就通知安全操作系统有客户端升级请求,进入步骤6。

6、安全操作系统通知升级模块,升级模块把can模块设置成安全状态。

7、升级模块生成一个响应数据包,这个数据包用于通知远端服务器,表示当前设备已经准备好可以接收升级数据,发送这个响应数据包前需要使用设备上的公钥对这个数据包进行加密,然后在把这个加密后的响应数据包通过安全can模块发送出去。

8、远端服务器接收到加密后的响应数据包,就使用私钥进行解密,确认这个响应数据包来自于合法的安全设备,就把升级数据(步骤2生成的客户端密文ca*和签名)通过can网络发送到本地设备的安全操作系统。

9、安全操作系统的can数据处理模块2接收到升级数据后,把数据分发给升级模块。

10、升级模块接收客户端密文ca*和签名,接收到完整客户端密文ca*和签名后,升级模块验证客户端程序ca的合法性。

11、验证客户端程序ca合法后,升级模块通过普通操作系统的trust-server程序把ca*和签名替换data/tee/目录下相应的ca*和签名。

本实施例通过安全操作系统的安全can网络,首先从远端下载客户端更新包到本地的安全操作系统,安全操作系统根据接受到的客户端数据和签名验证客户端程序的合法性,只有客户端通过签名验证,再由安全操作系统把客户端更新程序发送到普通操作系统的客户端目录下。接收数据包和验证数据都在安全操作系统中完成,可以减少来自非安全方面的干扰,这种方式可以保证本地设备接收到的客户端软件是合法的,克服了在升级过程中可能接收到非法的软件而不能觉察,做到及时发现及时防范。

实施例三

本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:

生成公私钥对,将私钥保存至远端服务器,将公钥保存至本地设备的安全操作系统;

使用所述私钥对客户端程序进行加密和签名,得到客户端密文和客户端签名;

远端服务器发送升级请求至所述本地设备的安全操作系统;

安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器;

若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统;

安全操作系统对所述客户端密文和客户端签名进行合法性验证,若验证通过,则将普通操作系统中原来的所述客户端程序的数据替换为所述客户端密文和客户端签名。

进一步地,所述“远端服务器发送升级请求至所述本地设备的安全操作系统”具体为:

远端服务器发送升级请求至所述本地设备的can模块;

若当前can模块处于安全状态,则将所述升级请求转发至安全操作系统;

若当前can模块处于非安全状态,则将所述升级请求转发至普通操作系统;

普通操作系统将所述升级请求转发至安全操作系统;

安全操作系统将can模块设置为安全状态。

进一步地,所述“安全操作系统根据所述升级请求,生成响应数据包,并将所述响应数据包发送至远端服务器”具体为:

安全操作系统根据所述升级请求,生成响应数据包;

使用公钥对所述响应数据包进行加密,并将加密后的响应数据包发送至远端服务器。

进一步地,所述“若远端服务器对所述响应数据包的验证通过,则将所述客户端密文和客户端签名发送至安全操作系统”具体为:

远端服务器使用私钥对所述加密后的响应数据包进行解密;

若解密成功,则将所述客户端密文和客户端签名发送至安全操作系统。

进一步地,所述“安全操作系统对所述客户端密文和客户端签名进行合法性验证”具体为:

安全操作系统接收所述客户端密文和客户端签名;

使用公钥对所述客户端密文进行解密,得到客户端明文;

对所述客户端明文进行摘要运算,得到的第一摘要值;

使用公钥对所述客户端签名进行解密,得到第二摘要值;

若所述第一摘要值与所述第二摘要值一致,则判定验证通过。

综上所述,本发明提供的一种基于双系统的客户端程序升级方法及计算机可读存储介质,远端服务器通过对响应数据包进行验证,保证响应数据包来自于合法的本地设备;本地设备根据接收到客户端密文和客户端签名对客户端程序进行签名验证,保证接收到的客户端程序的合法性;同时,升级请求的接收和客户端程序的验证都在安全操作系统中完成,可以减少来自非安全方面的干扰。本发明可保证本地设备接收到的客户端程序的合法性,克服了在升级过程中可能接收到非法的软件而不能觉察的问题,做到及时发现及时防范。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1