一种基于车机多操作系统的验证方法及装置转让专利

申请号 : CN202210436796.X

文献号 : CN114547630B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陶陈力

申请人 : 宁波均联智行科技股份有限公司

摘要 :

本申请涉及一种基于车机多操作系统的验证方法及装置。所述多操作系统包括第一操作系统和第二操作系统,所述方法包括:启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块;将所述加密镜像进行解密,得到解密镜像;基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;将镜像块运算信息与所述解密镜像进行对比验证。通过第一操作系统对第二操作系统进行高效验证,防止第二操作系统被篡改,以保证被验证操作系统的安全性,提升系统验证效率、车辆安全与用户体验感。

权利要求 :

1.一种基于车机多操作系统的验证方法,其特征在于,所述多操作系统包括第一操作系统和第二操作系统,所述方法包括:获取所述第二操作系统的原始镜像,将所述原始镜像进行分类,得到分类结果,其中,所述分类结果包括根镜像和/或系统镜像;

将所述分类结果进行散列运算,得到散列结果,其中,所述散列结果包括根哈希和哈希树;

对所述根镜像的所述根哈希和所述系统镜像的所述哈希树使用密钥加密,得到所述第二操作系统的加密镜像;

启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的所述加密镜像和所述原始镜像,所述原始镜像包括一个或多个镜像块;

将所述加密镜像进行解密,得到解密镜像;

基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;

将所述镜像块运算信息与所述解密镜像进行对比验证。

2.根据权利要求1所述的方法,其特征在于,所述将所述加密镜像进行解密,包括:在启动所述第二操作系统过程中,所述第一操作系统对所述加密镜像进行解密验证,若通过解密验证,则访问所述解密镜像和所述原始镜像;

若未通过解密验证,则停止启动所述第二操作系统。

3.根据权利要求1或2所述的方法,其特征在于,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:将所述镜像块运算信息与所述解密镜像进行对比验证,

若对比一致,则继续对比验证所述一个或多个镜像块中的其它镜像块;

若对比不一致,则停止启动所述第二操作系统。

4.根据权利要求1所述的方法,其特征在于,所述将所述原始镜像进行分类,得到分类结果,其中,所述分类结果包括根镜像和/或系统镜像;将所述分类结果进行散列运算,得到散列结果,其中,所述散列结果包括根哈希和哈希树,包括:根据预设的分类阈值对所述原始镜像进行分类,将小于或等于所述分类阈值的所述原始镜像判定为根镜像,将大于所述分类阈值的所述原始镜像判定为系统镜像;

将所述原始镜像按照预设的哈希长度进行散列运算,获取散列结果,所述散列结果包括根哈希和哈希树,其中,所述预设的哈希长度与所述预设的分类阈值相对应。

5.根据权利要求4所述的方法,其特征在于,所述从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息,包括:若所述原始镜像为所述根镜像,则获取由所述根镜像拆分后得到的第一镜像块,以及对所述第一镜像块进行运算后得到与所述第一镜像块对应的根哈希作为对应的镜像块运算信息;

若所述原始镜像为所述系统镜像,则获取由所述系统镜像拆分后得到的第二镜像块,以及对所述第二镜像块进行运算后得到与所述第二镜像块对应的原始哈希树作为对应的镜像块运算信息。

6.根据权利要求5所述的方法,其特征在于,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:若从所述原始镜像中拆分出的镜像块为所述第一镜像块,则将所述第一镜像块的根哈希与所述解密镜像的根哈希进行对比验证;

若从所述原始镜像中拆分出的镜像块为所述第二镜像块,则将所述第二镜像块的哈希树与所述解密镜像的哈希树进行对比验证。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

当对任一所述镜像块进行运算后,根据与所述镜像块对应的所述原始镜像的类别,选择对应的所述散列结果,根据所述散列结果与所述加密镜像进行对比验证,若所述原始镜像为所述根镜像,则将所述根镜像进行所述散列运算,得到所述根镜像的所述根哈希,将所述根镜像的所述根哈希与所述加密镜像进行对比验证;

若所述原始镜像为所述系统镜像,则将所述系统镜像进行所述散列运算,得到所述系统镜像的所述哈希树,将所述系统镜像的所述哈希树与所述加密镜像进行对比验证。

8.根据权利要求1所述的方法,其特征在于,所述方法还包括:

若对所述第二操作系统进行更新,则对应更新所述原始镜像,得到更新原始镜像,将所述更新原始镜像拆分并加密,得到更新加密镜像,其中,所述更新原始镜像包括一个或多个更新镜像块;

启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的更新加密镜像和更新原始镜像;

将所述更新加密镜像进行解密,得到更新解密镜像;

基于所述更新原始镜像进行运算,其中,对于所述一个或多个更新镜像块中任一更新镜像块,从所述更新原始镜像中拆分出该更新镜像块,并对该更新镜像块进行运算后得到对应的更新镜像块运算信息;

将所述更新镜像块运算信息与所述更新解密镜像进行对比验证。

9.一种基于车机多操作系统的验证装置,其特征在于,所述多操作系统包括第一操作系统和第二操作系统,所述装置包括:处理模块,用于获取所述第二操作系统的原始镜像,将所述原始镜像进行分类,得到分类结果,其中,所述分类结果包括根镜像和/或系统镜像;将所述分类结果进行散列运算,得到散列结果,其中,所述散列结果包括根哈希和哈希树;对所述根镜像的所述根哈希和所述系统镜像的所述哈希树使用密钥加密,得到所述第二操作系统的加密镜像;

启动模块,用于启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的所述加密镜像和所述原始镜像,所述原始镜像包括一个或多个镜像块;

所述处理模块,还用于将所述加密镜像进行解密,得到解密镜像;基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;

验证模块,用于将所述镜像块运算信息与所述解密镜像进行对比验证。

说明书 :

一种基于车机多操作系统的验证方法及装置

技术领域

[0001] 本申请涉及车辆安全技术领域,特别是涉及一种基于车机多操作系统的验证方法及装置。

背景技术

[0002] 随着汽车技术领域的快速发展,大量的车载信息娱乐产品被安装在汽车中,以满足用户的多样化需求。车机指的是安装在汽车里面的车载信息娱乐产品的简称,能够实现人与车、车与外界的信息通讯。而车机系统在更新时,可能篡改车辆系统设置,导致车辆安全机制被更改,使车辆受到安全威胁。所以车机系统的安全是车辆行驶安全的基础,需要保证在车辆在启动前,其车机未被篡改。
[0003] 在传统解决方案中,对于车机系统的验证方法,一般是从该系统启动程序开始,逐级验证,直至完成对整个车机系统文件的验证。在这个验证过程中,车机系统所包括的操作系统一般都是独立对自身进行验证,存在被篡改的风险。

发明内容

[0004] 基于此,有必要针对上述技术问题,提供一种基于车机多操作系统的验证方法及装置,以期解决现有技术中车机操作系统验证方法中操作系统存在被篡改风险的问题。
[0005] 一方面,提供一种基于车机多操作系统的验证方法,所述多操作系统包括第一操作系统和第二操作系统,所述方法包括:
[0006] 启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块;
[0007] 将所述加密镜像进行解密,得到解密镜像;
[0008] 基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;
[0009] 将所述镜像块运算信息与所述解密镜像进行对比验证。
[0010] 其中,在一个示例中,所述第一操作系统与所述第二操作系统通过虚拟机监视器(Hypervisor)进行通信连接以及运行在同一处理器上。
[0011] 在一个实施例中,所述将所述加密镜像进行解密,包括:
[0012] 在启动所述第二操作系统过程中,所述第一操作系统对所述加密镜像进行解密验证,
[0013] 若通过解密验证,则访问所述解密镜像和所述原始镜像;
[0014] 若未通过解密验证,则停止启动所述第二操作系统。
[0015] 在一个实施例中,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:
[0016] 将所述镜像块运算信息与所述解密镜像进行对比验证,
[0017] 若对比一致,则继续对比验证所述一个或多个镜像块中的其它镜像块;
[0018] 若对比不一致,则停止启动所述第二操作系统。
[0019] 在一个实施例中,所述启动所述第一操作系统之前,还包括:
[0020] 获取所述原始镜像,将所述原始镜像进行分类,得到分类结果,将所述分类结果进行散列运算,得到散列结果,对所述散列结果使用密钥加密,得到所述加密镜像。
[0021] 在一个实施例中,所述将所述原始镜像进行分类,得到分类结果,将所述分类结果进行散列运算,得到散列结果,对所述散列结果使用密钥加密,得到所述加密镜像,包括:
[0022] 根据预设的分类阈值对所述原始镜像进行分类,将小于或等于所述分类阈值的所述原始镜像判定为根镜像,将大于所述分类阈值的所述原始镜像判定为系统镜像;
[0023] 将所述原始镜像按照预设的哈希长度进行散列运算,获取散列结果,所述散列结果包括根哈希和哈希树,其中,所述预设的哈希长度与所述预设的分类阈值相对应;
[0024] 对所述根镜像的所述根哈希和所述系统镜像的所述哈希树使用所述密钥加密,得到所述加密镜像。
[0025] 在一个实施例中,所述从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息,包括:
[0026] 若所述原始镜像为所述根镜像,则获取由所述根镜像拆分后得到的第一镜像块,以及对所述第一镜像块进行运算后得到与所述第一镜像块对应的根哈希作为对应的镜像块运算信息;
[0027] 若所述原始镜像为所述系统镜像,则获取由所述系统镜像拆分后得到的第二镜像块,以及对所述第二镜像块进行运算后得到与所述第二镜像块对应的原始哈希树作为对应的镜像块运算信息。
[0028] 在一个实施例中,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:
[0029] 若从所述原始镜像中拆分出的镜像块为所述第一镜像块,则将所述第一镜像块的根哈希与所述解密镜像的根哈希进行对比验证;
[0030] 若从所述原始镜像中拆分出的镜像块为所述第二镜像块,则将所述第二镜像块的哈希树与所述解密镜像的哈希树进行对比验证。
[0031] 在一个实施例中,所述方法还包括:
[0032] 当对任一所述镜像块进行运算后,根据与所述镜像块对应的所述原始镜像的类别,选择对应的所述散列结果,根据所述散列结果与所述加密镜像进行对比验证,[0033] 若所述原始镜像为所述根镜像,则将所述根镜像进行所述散列运算,得到所述根镜像的所述根哈希,将所述根镜像的所述根哈希与所述加密镜像进行对比验证;
[0034] 若所述原始镜像为所述系统镜像,则将所述系统镜像进行所述散列运算,得到所述系统镜像的所述哈希树,将所述系统镜像的所述哈希树与所述加密镜像进行对比验证。
[0035] 在一个实施例中,所述方法还包括:
[0036] 若对所述第二操作系统进行更新,则对应更新所述原始镜像,得到更新原始镜像,将所述更新原始镜像拆分并加密,得到更新加密镜像,其中,所述更新原始镜像包括一个或多个更新镜像块;
[0037] 启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的更新加密镜像和更新原始镜像;
[0038] 将所述更新加密镜像进行解密,得到更新解密镜像;
[0039] 基于所述更新原始镜像进行运算,其中,对于所述一个或多个更新镜像块中任一更新镜像块,从所述更新原始镜像中拆分出该更新镜像块,并对该更新镜像块进行运算后得到对应的更新镜像块运算信息;
[0040] 将所述更新镜像块运算信息与所述更新解密镜像进行对比验证。
[0041] 另一方面,提供了一种基于车机多操作系统的验证装置,所述装置包括:
[0042] 启动模块,用于启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块;
[0043] 处理模块,用于将所述加密镜像进行解密,得到解密镜像;基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;
[0044] 验证模块,用于将所述镜像块运算信息与所述解密镜像进行对比验证。
[0045] 上述基于车机多操作系统的验证方法及装置,通过启动所述第一操作系统,再通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块,实现由第一操作系统挂载第二操作系统并对第二操作系统进行验证,提高了系统验证过程的安全可靠性;通过将所述加密镜像进行解密,得到解密镜像,确保了加密镜像与解密镜像的安全可靠,以使解密镜像能够作为可靠的对比验证参照物;基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息,实现了当所述一个或多个镜像块中任一镜像块需要被执行时,将该镜像块拆分出来并进行运算,再验证这一镜像块的信息,而无需等待整个第二操作系统验证完毕,进而提高了车机操作系统的验证效率;通过将所述镜像块运算信息与所述解密镜像进行对比验证,保证了所要执行的镜像块的安全性,实现了对车机操作系统的高效验证。通过本验证方法,基于车机多操作系统,可以实现通过车机第一操作系统对第二操作系统进行高效验证,防止第二操作系统被篡改,以保证被验证操作系统的安全性,提升系统验证效率、车辆安全与用户体验感。

附图说明

[0046] 图1为一个实施例中基于车机多操作系统的验证方法的应用环境图;
[0047] 图2为一个实施例中基于车机多操作系统的验证方法的流程示意图;
[0048] 图3为一个实施例中将所述加密镜像进行解密的流程示意图;
[0049] 图4为一个实施例中基于根镜像的部分运算过程示意图;
[0050] 图5为一个实施例中基于车机多操作系统的验证装置的结构框图;
[0051] 图6为一个实施例中计算机设备的内部结构图。

具体实施方式

[0052] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0053] 本申请提供的基于车机多操作系统的验证方法,可以应用于如图1所示的应用环境中。其中,第一操作系统101和第二操作系统102在同一终端103上进行交互。示例性地,所述第一操作系统与所述第二操作系统通过虚拟机监视器(Hypervisor)进行通信连接以及运行在同一处理器上。例如,本申请提供的验证方法可以由第一操作系统101访问第二操作系统102的原始镜像和加密镜像,并验证第二操作系统102是否被篡改。其中,终端103可以但不限于是各种车机、个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,终端103所包括的系统也不限于第一操作系统和第二操作系统。
[0054] 在传统的车机系统验证的解决方案中,一般是从该系统启动程序开始,逐级验证,直至完成对整个车机系统文件的验证。在这个验证过程中,车机系统所包括的操作系统一般都是独立对自身进行验证,存在被篡改的风险。因此,本方案提出一种基于车机多操作系统的验证方法,通过第一操作系统验证第二操作系统是否被篡改,以及解决车机系统验证方法效率低下的问题。
[0055] 在一个实施例中,如图2所示,提供了一种基于车机多操作系统的验证方法,所述多操作系统包括第一操作系统和第二操作系统,以该方法应用于图1中的终端103为例进行说明,包括以下步骤:
[0056] S1、启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块。
[0057] 其中,镜像是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。
[0058] 可以理解的是,为了验证第二操作系统是否被篡改,可以将第二操作系统中的数据以镜像形式进行压缩存储,以便于操作系统数据的传输与处理,所以可以获取第二操作系统的原始镜像,对原始镜像进行验证,以实现对第二操作系统进行验证,其中第二操作系统的原始镜像可以是一个或多个镜像,这些镜像也包括一个或多个镜像块。
[0059] 需要说明的是,为了保证系统验证过程中的安全性,除了需要获取原始镜像外,还需获取与原始镜像对应的加密镜像,加密镜像是将原始镜像经过一定运算方式以及加密方式处理的镜像,需要通过一定的解密方式将加密镜像解密之后,才能对原始镜像进行安全可靠的验证。
[0060] S2、将所述加密镜像进行解密,得到解密镜像。
[0061] 需要说明的是,加密镜像是经过一定加密方式处理后的镜像,所以将加密镜像解密则需要与加密方式对应的解密方式,才能得到解密后的解密镜像。
[0062] 示例性地,可以使用对称加密算法或非对称加密算法将镜像进行加密,为保证车机多操作系统验证过程中更高的安全性,且基于多个操作系统而言,可选择非对称加密算法进行加密。
[0063] S3、基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息。
[0064] 其中,为便于理解,可以将原始镜像中的一个或多个镜像块看作系统中的一个或多个功能,当系统中某个功能需要被调用时,其对应的一个或多个镜像块则需要被执行。
[0065] 需要说明的是,对原始镜像进行运算是为了获取原始镜像中所存储的数据的相关信息,其中,对于原始镜像中包括的一个或多个镜像块中任一镜像块,当该镜像块被执行时,从原始镜像中拆分出该镜像块,并对该镜像块优先进行运算,即可获得该镜像块的运算信息,以实现当某一镜像块被执行时运算及验证该镜像块,而无需将整个操作系统进行完整的验证后,再来判断操作系统是否被篡改,提高了验证操作系统的效率。
[0066] S4、将所述镜像块运算信息与所述解密镜像进行对比验证。
[0067] 需要说明的是,解密镜像包括在加密前的原始镜像经过一定运算方式处理后,而得到的运算信息,将这些运算信息与原始镜像中一个或多个镜像块中任一镜像块的运算信息进行对比,则可完成对该镜像块的验证。
[0068] 上述一种基于车机多操作系统的验证方法中,通过启动所述第一操作系统,再通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块,实现由第一操作系统挂载第二操作系统并对第二操作系统进行验证,提高了系统验证过程的安全可靠性;通过将所述加密镜像进行解密,得到解密镜像,确保了加密镜像与解密镜像的安全可靠,以使解密镜像能够作为可靠的对比验证参照物;基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息,实现了当所述一个或多个镜像块中任一镜像块需要被执行时,将该镜像块拆分出来并进行运算,再验证这一镜像块的信息,而无需等待整个第二操作系统验证完毕,进而提高了车机操作系统的验证效率;通过将所述镜像块运算信息与所述解密镜像进行对比验证,保证了所要执行的镜像块的安全性,实现了对车机操作系统的高效验证。通过本验证方法,基于车机多操作系统,可以实现通过车机第一操作系统对第二操作系统进行高效验证,防止第二操作系统被篡改,以保证被验证操作系统的安全性,提升系统验证效率、车辆安全与用户体验感,解决了车机系统验证方法效率低下的问题。
[0069] 其中,在一个示例中,所述第一操作系统与所述第二操作系统通过虚拟机监视器(Hypervisor)进行通信连接以及运行在同一处理器上。
[0070] 在一个实施例中,所述将所述加密镜像进行解密,包括:
[0071] 在启动所述第二操作系统过程中,所述第一操作系统对所述加密镜像进行解密验证,
[0072] 若通过解密验证,则访问所述解密镜像和所述原始镜像;
[0073] 若未通过解密验证,则停止启动所述第二操作系统。
[0074] 需要说明的是,为保证操作系统验证过程中的安全可靠,将加密镜像进行解密的过程中,也存在对加密镜像进行判断的过程,以鉴别加密镜像是否在第一操作系统挂载第二操作系统,来获取第二操作系统的原始镜像与加密镜像前,就已经被更改,防止出现原始镜像与加密镜像一同被修改的情况。
[0075] 其中,挂载是指由操作系统使一个存储设备上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。可以在第一操作系统启动时,将第二操作系统的原始镜像和加密镜像挂载到第一操作系统中,即可实现通过第一操作系统访问第二操作系统的原始镜像和加密镜像。应该理解的是,对于所述第一操作系统和第二操作系统里“第一”和“第二”的限定,仅为标记名称,用于区分两个操作系统,不应当理解为对操作系统的执行时序、系统类型和主次关系做限定。
[0076] 具体地,根据对应的解密方式对加密镜像进行解密验证,判断加密镜像能否正常解密,若加密镜像通过解密验证,则表示加密镜像未被篡改,可以访问所述解密镜像和所述原始镜像;若加密镜像未通过解密验证,则表示加密镜像已被篡改,停止启动所述第二操作系统。通过将加密镜像进行解密验证,进一步提升了本验证方法的安全可靠程度。
[0077] 示例性地,可参考图3,图3为另一实施例中,将所述加密镜像进行解密的流程示意图,为便于理解,将第一操作系统已保存的加密镜像的密钥称为第一公钥和第一私钥,将后续要验证和/或解密的加密镜像的密钥称为第二公钥和第二私钥,如果加密镜像未被更改,则第一公钥等于第二公钥,第一私钥等于第二私钥;若加密镜像被更改,则第一公钥不等于第二公钥,第一私钥不等于第二私钥,其解密步骤包括S310至S340:
[0078] S310、通过第一操作系统访问第二操作系统的加密镜像;
[0079] S320、进行密钥验证,其中,第一操作系统使用第一公钥来验证是否与当前访问的加密镜像的第二私钥匹配,若是,则通过验证,执行步骤S330;若否,则未通过验证,执行步骤S340。
[0080] S330、使用第一私钥,解密并访问第二操作系统的加密镜像和原始镜像。
[0081] S340、停止启动第二操作系统。
[0082] 其中,还包括通过第二公钥验证加密镜像的地址来源,以及在解密时,还包括对比第一私钥和第二私钥是否匹配,以判断能否用第一私钥解密该加密镜像,根据上述方法,通过第一操作系统和第二操作系统的公私钥进行互验,提高了系统验证过程中的安全性。
[0083] 在一个实施例中,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:
[0084] 将所述镜像块运算信息与所述解密镜像进行对比验证,
[0085] 若对比一致,则继续对比验证所述一个或多个镜像块中的其它镜像块;
[0086] 若对比不一致,则停止启动所述第二操作系统。
[0087] 其中,加密镜像是最初的原始镜像已经过运算,并对其运算信息加密后的镜像,所以将加密镜像解密后,即可获得这些未被篡改的最初的运算信息,即将镜像块运算信息与解密镜像进行对比验证,可知该镜像块运算信息是否被篡改,完成对该镜像块的对比验证,若对比一致则说明该镜像块未被篡改,可继续对比验证所述一个或多个镜像块中的其它待执行的镜像块;若对比不一致,则说明该镜像块已被篡改,停止启动所述第二操作系统。通过上述对比验证镜像块运算信息和解密镜像的方法从而实现验证操作系统是否被篡改。
[0088] 在一个实施例中,所述启动所述第一操作系统之前,还包括:
[0089] 获取所述原始镜像,将所述原始镜像进行分类,得到分类结果,将所述分类结果进行散列运算,得到散列结果,对所述散列结果使用密钥加密,得到所述加密镜像。
[0090] 其中,散列运算指的是Hash(哈希)函数运算,Hash函数是一种压缩映射,把任意长度的输入通过Hash函数变换成固定长度的输出。
[0091] 可以理解的是,将散列结果进行加密相当于将运算信息进行加密,为了提供充足的安全性,在加密过程中可以使用更适合本验证方法应用环境的非对称加密算法,给各个镜像设置对应的公钥和私钥,以符合在车机多操作系统中通过一个操作系统验证另一操作系统是否被篡改。
[0092] 在一个实施例中,所述将所述原始镜像进行分类,得到分类结果,将所述分类结果进行散列运算,得到散列结果,对所述散列结果使用密钥加密,得到所述加密镜像,包括:
[0093] 根据预设的分类阈值对所述原始镜像进行分类,将小于或等于所述分类阈值的所述原始镜像判定为根镜像,将大于所述分类阈值的所述原始镜像判定为系统镜像;
[0094] 将所述原始镜像按照预设的哈希长度进行散列运算,获取散列结果,所述散列结果包括根哈希和哈希树,其中,所述预设的哈希长度与所述预设的分类阈值相对应;
[0095] 对所述根镜像的所述根哈希和所述系统镜像的所述哈希树使用所述密钥加密,得到所述加密镜像。
[0096] 其中,通过散列运算可以得到根哈希和哈希树,根哈希代表的是经过散列运算后得到的散列值,而哈希树代表的是散列运算实现的过程。
[0097] 需要说明的是,各个镜像的数据量大小不同,对于内存空间占据小的小镜像,其通过散列运算的速度快,获取其根哈希的效率高;对于内存空间占据大的大镜像,其通过散列运算的速度较慢,获取其根哈希的效率较低,但是在对其进行散列运算时,其哈希树是根据运算过程的进行而相应生成的,相对于使用其根哈希,使用其哈希树则更为便捷。
[0098] 因此,为了便于对各个镜像进行运算,提高验证效率,可以根据分类阈值将原始镜像分类,将小于或等于所述分类阈值的所述原始镜像判定为根镜像,将大于所述分类阈值的所述原始镜像判定为系统镜像,再对各个类别的镜像进行运算,就仅需保留根镜像的根哈希和系统镜像的哈希树,并对根镜像的根哈希和系统镜像的哈希树使用密钥加密并保存,得到加密镜像,不仅有利于提升运算效率,还节省了一定的存储空间。
[0099] 在一个实施例中,所述从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息,包括:
[0100] 若所述原始镜像为所述根镜像,则获取由所述根镜像拆分后得到的第一镜像块,以及对所述第一镜像块进行运算后得到与所述第一镜像块对应的根哈希作为对应的镜像块运算信息;
[0101] 若所述原始镜像为所述系统镜像,则获取由所述系统镜像拆分后得到的第二镜像块,以及对所述第二镜像块进行运算后得到与所述第二镜像块对应的原始哈希树作为对应的镜像块运算信息。
[0102] 其中,在验证过程中,若某个原始镜像中的某个镜像块需要先被执行,则先对该镜像块进行验证。
[0103] 示例性地说明,若该原始镜像为根镜像,则将被执行的镜像块拆分出来,得到第一镜像块,将第一镜像块进行散列运算,得到第一镜像块的根哈希,并将其根哈希作为第一镜像块的镜像块运算信息;若该原始镜像为系统镜像,则将被执行的镜像块拆分出来,得到第二镜像块,将第二镜像块进行散列运算,得到第二镜像块的哈希树,并将其哈希树作为第二镜像块的镜像块运算信息;本实施例中的“第一”和“第二”仅用作对于镜像块类别的区分,不对镜像块的数量、执行顺序以及其它属性或信息做出限定,通过本实施例可以和加密镜像中保存的运算信息对应,便于通过加密镜像中的运算信息验证原始镜像,提升验证效率。
[0104] 进一步说明,为便于理解,以根镜像为例说明散列运算的过程,可参考图4,为基于根镜像的部分运算过程示意图,根据预设的4KB哈希长度对根镜像410进行拆分,得到大小为4KB的多个第一镜像块411,再对第一镜像块411进行散列运算,将其逐步压缩映射,直至得到最后的根哈希412,而得到根哈希412的计算过程为哈希树413。
[0105] 在一个实施例中,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:
[0106] 若从所述原始镜像中拆分出的镜像块为所述第一镜像块,则将所述第一镜像块的根哈希与所述解密镜像的根哈希进行对比验证;
[0107] 若从所述原始镜像中拆分出的镜像块为所述第二镜像块,则将所述第二镜像块的哈希树与所述解密镜像的哈希树进行对比验证。
[0108] 需要说明的是,在本实施例中,根据拆分出的镜像块的类别,从而选择对应的对比验证方式,实现运算过程与对比过程的合理简化,也是提升验证效率的重要步骤。
[0109] 具体地,若从原始镜像中拆分出的镜像块为第一镜像块,则将第一镜像块的根哈希与解密镜像中对应的根哈希进行对比验证;
[0110] 若从原始镜像中拆分出的镜像块为第二镜像块,则将第二镜像块的哈希树与解密镜像中对应的哈希树进行对比验证。
[0111] 在一个实施例中,所述方法还包括:
[0112] 当对任一所述镜像块进行运算后,根据与所述镜像块对应的所述原始镜像的类别,选择对应的所述散列结果,根据所述散列结果与所述加密镜像进行对比验证,[0113] 若所述原始镜像为所述根镜像,则将所述根镜像进行所述散列运算,得到所述根镜像的所述根哈希,将所述根镜像的所述根哈希与所述加密镜像进行对比验证;
[0114] 若所述原始镜像为所述系统镜像,则将所述系统镜像进行所述散列运算,得到所述系统镜像的所述哈希树,将所述系统镜像的所述哈希树与所述加密镜像进行对比验证。
[0115] 其中,散列结果包括根哈希和哈希树,若与所述镜像块对应的原始镜像为所述根镜像,则选择该镜像块的根哈希与加密镜像进行对比验证;若与所述镜像块对应的原始镜像为所述系统镜像,则选择该镜像块的哈希树与加密镜像进行对比验证,以提升验证过程中对比验证的效率。
[0116] 在一个实施例中,所述方法还包括:
[0117] 若对所述第二操作系统进行更新,则对应更新所述原始镜像,得到更新原始镜像,将所述更新原始镜像拆分并加密,得到更新加密镜像,其中,所述更新原始镜像包括一个或多个更新镜像块;
[0118] 启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的更新加密镜像和更新原始镜像;
[0119] 将所述更新加密镜像进行解密,得到更新解密镜像;
[0120] 基于所述更新原始镜像进行运算,其中,对于所述一个或多个更新镜像块中任一更新镜像块,从所述更新原始镜像中拆分出该更新镜像块,并对该更新镜像块进行运算后得到对应的更新镜像块运算信息;
[0121] 将所述更新镜像块运算信息与所述更新解密镜像进行对比验证。
[0122] 需要说明的是,当对第二操作系统进行正常更新时,则需要获取更新权限,对应地更新所述原始镜像,得到更新原始镜像,将更新原始镜像进行加密,得到更新加密镜像,即完成了对原始镜像和加密镜像的对应更新,当第一操作系统启动后,通过上述验证方法同样能够实现对更新后的第二操作系统进行验证,通过本实施例实现了在正常改写第二操作系统的情况下,依然能够对第二操作系统进行验证。
[0123] 在一个实施例中,还包括对第一操作系统进行验证的方法,其步骤包括:
[0124] 将处理器上电后,进入PBL(Primary BootLoader,初始化装载)阶段,对安全运行环境进行初始化,以确保后续过程中的程序能正常运行;
[0125] 根据GPIO(General‑purpose input/output,通用输入输出接口)选择启动设备,当GPIO成功接入启动设备后,获取用于启动第一操作系统的相关数据,其中包括第一操作系统的一个或多个镜像;
[0126] 获取XBL(Extensible Bootloader,可扩展程序),所述XBL包括与初始化相关的硬件环境及代码环境,将XBL从启动设备加载到OCIMEN(On‑Chip Memory,片上存储器)和/或IMEM(Internal Memory,内存储器)进行鉴权,以验证是否拥有访问系统的权利,并根据所述XBL初始化硬件环境及代码环境,及配置系统时钟频率;
[0127] 进入加载阶段,将用于启动第一操作系统的相关数据加载到RAM(Random Access Memory,随机存取存储器)中,并进行鉴权;
[0128] 当鉴权完成后,装载HLOS(High‑Level Operating System,高级操作系统),通过HLOS加载并访问第一操作系统的镜像,启动第一操作系统。
[0129] 其中,鉴权是指验证用户是否拥有访问系统的权利,可以通过密码进行验证或利用认证授权来验证数字签名是否正确以实现鉴权的目的,鉴权方式还包括:AKA(Authentication and Key Agreement,鉴权和密钥协商)鉴权,HTTP(Hyper Text Transfer Protocol,超文本传输协议)摘要鉴权等,在此不对鉴权方式作出限定;HLOS包括Android系统和Linux系统等,在此不对HLOS作出限定,但需要说明的是,由于Linux系统具备高安全性、高可用性且易维护等多种优势,在本方法中可优先选择使用Linux作为系统环境。
[0130] 在一个实施例中,如图5所示,提供了一种基于车机多操作系统的验证装置500,包括:启动模块510、处理模块520、验证模块530,其中:
[0131] 启动模块,用于启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块;
[0132] 处理模块,用于将所述加密镜像进行解密,得到解密镜像;基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;
[0133] 验证模块,用于将所述镜像块运算信息与所述解密镜像进行对比验证。
[0134] 该验证装置500可作为上述基于车机多操作系统的验证方法的执行载体,通过启动模块510启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块;通过处理模块520将所述加密镜像进行解密,得到解密镜像;基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;通过验证模块530将所述镜像块运算信息与所述解密镜像进行对比验证。从而通过本验证装置500,实现基于车机多操作系统环境下,控制其中第一操作系统对第二操作系统进行高效验证,防止第二操作系统被篡改,以保证被验证操作系统的安全性,防止第二操作系统被篡改,提升系统验证效率、车辆安全与用户体验感。
[0135] 在一个实施例中,所述将所述加密镜像进行解密,包括:
[0136] 在启动所述第二操作系统过程中,所述第一操作系统对所述加密镜像进行解密验证,
[0137] 若通过解密验证,则访问所述解密镜像和所述原始镜像;
[0138] 若未通过解密验证,则停止启动所述第二操作系统。
[0139] 在一个实施例中,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:
[0140] 将所述镜像块运算信息与所述解密镜像进行对比验证,
[0141] 若对比一致,则继续对比验证所述一个或多个镜像块中的其它镜像块;
[0142] 若对比不一致,则停止启动所述第二操作系统。
[0143] 在一个实施例中,所述启动所述第一操作系统之前,还包括:
[0144] 获取所述原始镜像,将所述原始镜像进行分类,得到分类结果,将所述分类结果进行散列运算,得到散列结果,对所述散列结果使用密钥加密,得到所述加密镜像。
[0145] 在一个实施例中,所述将所述原始镜像进行分类,得到分类结果,将所述分类结果进行散列运算,得到散列结果,对所述散列结果使用密钥加密,得到所述加密镜像,包括:
[0146] 根据预设的分类阈值对所述原始镜像进行分类,将小于或等于所述分类阈值的所述原始镜像判定为根镜像,将大于所述分类阈值的所述原始镜像判定为系统镜像;
[0147] 将所述原始镜像按照预设的哈希长度进行散列运算,获取散列结果,所述散列结果包括根哈希和哈希树,其中,所述预设的哈希长度与所述预设的分类阈值相对应;
[0148] 对所述根镜像的所述根哈希和所述系统镜像的所述哈希树使用所述密钥加密,得到所述加密镜像。
[0149] 在一个实施例中,所述从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息,包括:
[0150] 若所述原始镜像为所述根镜像,则获取由所述根镜像拆分后得到的第一镜像块,以及对所述第一镜像块进行运算后得到与所述第一镜像块对应的根哈希作为对应的镜像块运算信息;
[0151] 若所述原始镜像为所述系统镜像,则获取由所述系统镜像拆分后得到的第二镜像块,以及对所述第二镜像块进行运算后得到与所述第二镜像块对应的原始哈希树作为对应的镜像块运算信息。
[0152] 在一个实施例中,所述将所述镜像块运算信息与所述解密镜像进行对比验证,包括:
[0153] 若从所述原始镜像中拆分出的镜像块为所述第一镜像块,则将所述第一镜像块的根哈希与所述解密镜像的根哈希进行对比验证;
[0154] 若从所述原始镜像中拆分出的镜像块为所述第二镜像块,则将所述第二镜像块的哈希树与所述解密镜像的哈希树进行对比验证。
[0155] 在一个实施例中,所述方法还包括:
[0156] 当对任一所述镜像块进行运算后,根据与所述镜像块对应的所述原始镜像的类别,选择对应的所述散列结果,根据所述散列结果与所述加密镜像进行对比验证,[0157] 若所述原始镜像为所述根镜像,则将所述根镜像进行所述散列运算,得到所述根镜像的所述根哈希,将所述根镜像的所述根哈希与所述加密镜像进行对比验证;
[0158] 若所述原始镜像为所述系统镜像,则将所述系统镜像进行所述散列运算,得到所述系统镜像的所述哈希树,将所述系统镜像的所述哈希树与所述加密镜像进行对比验证。
[0159] 在一个实施例中,所述方法还包括:
[0160] 若对所述第二操作系统进行更新,则对应更新所述原始镜像,得到更新原始镜像,将所述更新原始镜像拆分并加密,得到更新加密镜像,其中,所述更新原始镜像包括一个或多个更新镜像块;
[0161] 启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的更新加密镜像和更新原始镜像;
[0162] 将所述更新加密镜像进行解密,得到更新解密镜像;
[0163] 基于所述更新原始镜像进行运算,其中,对于所述一个或多个更新镜像块中任一更新镜像块,从所述更新原始镜像中拆分出该更新镜像块,并对该更新镜像块进行运算后得到对应的更新镜像块运算信息;
[0164] 将所述更新镜像块运算信息与所述更新解密镜像进行对比验证。
[0165] 应该理解的是,虽然图2‑3流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2‑3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0166] 关于车机系统验证装置的具体限定可以参见上文中对于车机系统验证方法的限定,在此不再赘述。上述车机系统验证装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0167] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储车机系统验证的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于车机多操作系统的验证方法。
[0168] 本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0169] 在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
[0170] 启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块;
[0171] 将所述加密镜像进行解密,得到解密镜像;
[0172] 基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;
[0173] 将所述镜像块运算信息与所述解密镜像进行对比验证。
[0174] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0175] 启动所述第一操作系统,通过所述第一操作系统获取所述第二操作系统的加密镜像和原始镜像,所述原始镜像包括一个或多个镜像块;
[0176] 将所述加密镜像进行解密,得到解密镜像;
[0177] 基于所述原始镜像进行运算,其中,对于所述一个或多个镜像块中任一镜像块,从所述原始镜像中拆分出该镜像块,并对该镜像块进行运算后得到对应的镜像块运算信息;
[0178] 将所述镜像块运算信息与所述解密镜像进行对比验证。
[0179] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0180] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0181] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。