一种Linux嵌入式系统的启动方法、装置和存储介质与流程

文档序号:26532225发布日期:2021-09-04 12:09阅读:177来源:国知局
一种Linux嵌入式系统的启动方法、装置和存储介质与流程
一种linux嵌入式系统的启动方法、装置和存储介质
技术领域
1.本申请涉及linux嵌入式系统技术领域,特别涉及一种linux嵌入式系统的启动方法、装置、电子设备和计算机可读存储介质。


背景技术:

2.在linux嵌入式系统下,二进制镜像文件可直接用系统工具轻易查看二进制镜像文件的app和配置文件等内容,不法分子利用这些信息恶意攻击嵌入式设备。例如,服务器管理单元bmc系统的二进制镜像文件可从官网等途径下载,然后利用linux os系统下的工具比如binwalk,就可以将二进制镜像文件的文件系统挂载到pc的文件系统中,能够轻易地查看镜像文件系统中的app和配置文件内容,这是一种破解行为,不法分子可寻找可用的接口、端口或者方法,或者利用默认用户名和默认密码对嵌入式设备发起攻击,对嵌入式设备的安全带来挑战。


技术实现要素:

3.本申请的目的是提供一种linux嵌入式系统的启动方法,能够加固嵌入式设备系统的安全特性。其具体方案如下:第一方面,本申请公开了一种linux嵌入式系统的启动方法,包括:对嵌入式设备的flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件,并将加密的秘钥写入所述嵌入式设备内目标部件的可信硬件逻辑区域;当linux嵌入式系统的uboot启动时,利用所述目标部件的可信硬件逻辑区域的秘钥对所述二进制加密镜像文件进行解密,并将解密后的二进制镜像文件存储于所述嵌入式设备的内存中;从所述内存中挂载解密后的二进制镜像文件,启动所述linux嵌入式系统。
4.优选地,所述对嵌入式设备的flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件,包括:利用所述linux嵌入式系统下的加密工具对所述flash分区中的二进制镜像文件进行加密,生成所述二进制加密镜像文件。
5.优选地,在将解密后的二进制镜像文件存储于所述嵌入式设备的内存中之后,还包括:当识别到所述内存中的二进制镜像文件存在数据更新时,利用所述加密工具对更新后的二进制镜像文件进行加密,并回写至所述flash分区。
6.优选地,在将加密的秘钥写入所述嵌入式设备内目标部件的可信硬件逻辑区域之后,还包括:当接收到更新所述秘钥的请求时,利用所述可信硬件逻辑区域的接口更新所述秘钥,并设置秘钥的读取属性为不可读。
7.优选地,所述将解密后的二进制镜像文件存储于所述嵌入式设备的内存中,包括:
将解密后的二进制镜像文件存储于所述内存的内存分区中,并设置二进制镜像文件的名称在所述内存分区与在所述flash分区中不一致。
8.优选地,所述对嵌入式设备的flash分区中的二进制镜像文件进行加密之前,还包括:按照预设加密配置从所述嵌入式设备的flash中选择需要加密的flash分区;所述预设加密配置包括:所述flash包括的各个flash分区是否需要加密的标识信息。
9.优选地,每个需要加密的flash分区对应的秘钥不同。
10.第二方面,本申请公开了一种linux嵌入式系统的启动装置,包括:生成模块,用于对嵌入式设备的flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件,并将加密的秘钥写入所述嵌入式设备内目标部件的可信硬件逻辑区域;解密模块,用于当linux嵌入式系统的uboot启动时,利用所述目标部件的可信硬件逻辑区域的秘钥对所述二进制加密镜像文件进行解密,并将解密后的二进制镜像文件存储于所述嵌入式设备的内存中;启动模块,用于从所述内存中挂载解密后的二进制镜像文件,启动所述linux嵌入式系统。
11.第三方面,本申请公开了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上述linux嵌入式系统的启动方法的步骤。
12.第四方面,本申请公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述linux嵌入式系统的启动方法的步骤。
13.本申请提供一种linux嵌入式系统的启动方法,包括:对嵌入式设备的flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件,并将加密的秘钥写入所述嵌入式设备内目标部件的可信硬件逻辑区域;当linux嵌入式系统的uboot启动时,利用所述目标部件的可信硬件逻辑区域的秘钥对所述二进制加密镜像文件进行解密,并将解密后的二进制镜像文件存储于所述嵌入式设备的内存中;从所述内存中挂载解密后的二进制镜像文件,启动所述linux嵌入式系统。
14.可见,本申请通过对嵌入式设备的flash分区中的二进制镜像文件进行加密,当linux嵌入式系统的uboot启动时,再将加密后的二进制镜像文件解密并存储于内存中,再从内存中挂载解密后的二进制镜像文件,即可启动linux嵌入式系统,即通过对二进制镜像文件加密再解密的方式,这样能够避免linux系统下的工具对二进制镜像文件进行破解,能够加固嵌入式设备系统的安全特性,避免了相关技术中linux系统下的工具比如binwalk就能够破解分析二进制镜像文件系统中的app和配置文件内容,进而通过可用端口或者使用默认用户名和默认密码对嵌入式设备发起攻击的缺陷,本申请通过对二进制镜像文件加密再解密的方式,有效提高了嵌入式设备的安全特性。本申请同时还提供了一种linux嵌入式系统的启动装置、一种电子设备和计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
15.为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
16.图1为本申请实施例所提供的一种linux嵌入式系统的启动方法的流程图;图2为本申请实施例所提供的一种嵌入式linux启动流程的示意图;图3为本申请实施例所提供的一种嵌入式linux镜像文件布局的示意图;图4为本申请实施例提供的一种linux嵌入式系统的启动装置的结构示意图。
具体实施方式
17.为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
18.当前,linux嵌入式系统下的工具可破解linux嵌入式系统的二进制镜像文件,进而寻找可用的接口或端口,对嵌入式设备进行攻击。基于上述技术问题,本实施例提供一种linux嵌入式系统的启动方法,通过对二进制镜像文件加密再解密的方式,能够加固嵌入式设备系统的安全特性,具体请参考图1,图1为本申请实施例所提供的一种linux嵌入式系统的启动方法的流程图,具体包括:s101、对嵌入式设备的flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件,并将加密的秘钥写入嵌入式设备内目标部件的可信硬件逻辑区域。
19.本实施例并不限定嵌入式设备的具体对象,可以是服务器,可以是智能终端设备,可以是交换机,也可以是路由器,只要是linux嵌入式系统下的设备即可。可以理解的是,当嵌入式设备为服务器时,那么linux嵌入式系统对应服务器管理单元bmc系统;当为其他的嵌入式设备时,对应各自的linux嵌入式系统。
20.还可以理解的是,二进制镜像文件是二进制格式的,可以直接执行的文件。flash是一种非易失性(non

volatile)内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘。本实施例将经过加密的二进制镜像文件存储于flash中。
21.其中,二进制镜像文件包括多个目录,不同目录对应存储在flash的不同flash分区中,本实施例可以按照flash分区选择是否加密其中的二进制镜像文件。不同目录如:uboot、kernel、rootfs、www、conf等。据此,flash中存储uboot的区域可以称为uboot

flash。
22.在一种具体实施方式中,对嵌入式设备的flash分区中的二进制镜像文件进行加密之前,还包括:按照预设加密配置从嵌入式设备的flash中选择需要加密的flash分区;预设加密配置包括:flash包括的各个flash分区是否需要加密的标识信息。结合图3可看出,某一flash分区是否需要加密,取决于该flash分区中存储的是哪部分镜像文件。一般地,kernel、rootfs、www这些目录中的内容需要进行安全保护,因此对这些目录所在的flash分区进行加密。其中,对flash分区加密即:对其中所存储的内容加密。
23.在一种具体实施方式中,每个需要加密的flash分区对应的秘钥不同,以提高数据安全性。预设加密配置中也可以记录:哪个flash分区用哪个秘钥进行加密,从而明确秘钥与flash分区的对应关系。
24.本实施例并不限定对二进制镜像文件加密的具体工具,只要能够对二进制镜像文件加密即可,例如bmc系统中可以是linux下的app加密工具。本实施例也不限定加密的具体算法,可以是对称加密算法,也可以是非对称加密算法。
25.本实施例中对二进制镜像文件进行加密后,将加密所用的秘钥存储于嵌入式设备的目标部件的可信硬件逻辑区域,本实施例并不限定目标部件的具体对象,例如,在服务器管理单元bmc系统中,可以将对二进制镜像文件加密的秘钥存储于arm处理器或主板的可信硬件逻辑区域。本实施例并不限定将加密的秘钥写入可信硬件逻辑区域的具体工具,可以是uboot下的工具,也可以是其他工具。其中,加密所用的秘钥预先由用户指定,或基于随机算法生成。
26.本实施例并不限定对二进制镜像文件加密的具体工具,可以是从外部安装加载加密工具进行加密,也可以是利用系统内部的加密工具进行加密。进一步的,为了提高二进制镜像文件的加密效率,本实施例对嵌入式设备的flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件,可以包括:利用linux嵌入式系统下的加密工具对flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件。
27.可以理解的是,本实施例中利用的是linux下的加密工具对flash中的二进制镜像文件进行加密的,生成二进制加密镜像文件,与从外部加载安装加密工具对二进制镜像文件进行加密相比较,由于外部安装加密工具会出现安装效率低且易出错,因此,利用linux嵌入式系统下的加密工具的方式进行加密,能够有效提高二进制镜像文件的加密效率。
28.需要说明的是,二进制镜像文件属于bmc等嵌入式设备的linux嵌入式系统,但可以利用编译服务器对该二进制镜像文件进行加密。也即:本实施例的执行主体可以是编译服务器,利用该编译服务器对嵌入式设备进行安全保护。若该编译服务器为linux操作系统,那么可以认为:二进制镜像文件的加密动作执行在linux操作系统下。
29.本实施例并不限定将加密的秘钥写入嵌入式设备内目标部件的可信硬件逻辑区域后的具体操作。在一种具体的实施例中,为了提高linux嵌入式系统的安全特性,在将加密的秘钥写入嵌入式设备内目标部件的可信硬件逻辑区域之后,还可以包括:当接收到更新秘钥的请求时,利用可信硬件逻辑区域的接口更新秘钥,并设置秘钥的读取属性为不可读。
30.本实施例中当接收到更新秘钥的请求时,可利用可信硬件逻辑区域的接口来更新秘钥,并设置秘钥不可读。可以理解的是,若初始的秘钥被泄露,为了保证系统的安全特性,可利用可信硬件逻辑区域的接口来更改原始的秘钥,能够有效提高linux嵌入式系统的安全特性。
31.s102、当linux嵌入式系统的uboot启动时,利用目标部件的可信硬件逻辑区域的秘钥对二进制加密镜像文件进行解密,并将解密后的二进制镜像文件存储于嵌入式设备的内存中。
32.可以理解的是,uboot(universal boot loader)存在于linux嵌入式系统,遵循
gpl条款的开放源码项目,作用是系统引导。本实施例中当linux嵌入式系统的uboot启动时,利用目标部件的可信硬件逻辑区域的秘钥对二进制加密镜像文件进行解密。可以理解的是,本实施例中进行解密的工具与上述加密工具相对应。需要注意的是,解密后的二进制镜像文件存储于内存中,不再存放于flash。
33.本实施例并不限定将解密后的二进制镜像文件存储于嵌入式设备的内存后的具体操作。在一种具体的实施例中,在将解密后的二进制镜像文件存储于嵌入式设备的内存中之后,还可以包括:当识别到所述内存中的二进制镜像文件存在数据更新时,利用所述加密工具对更新后的二进制镜像文件进行加密,并回写至所述flash分区。
34.即:当内存中的二进制镜像文件明文存在数据更新,可利用加密工具对更新后的二进制镜像文件明文进行加密,并将加密所得的密文回写到存放该二进制镜像文件密文的相应flash分区。本实施例并不限定内存中的二进制镜像文件的具体文件内容,例如,在服务器管理单元bmc系统下,可对二进制镜像文件包括的conf进行数据更新;同理,可对其他嵌入式设备如交换机、路由器的相应二进制镜像文件进行数据更新。
35.进一步的,为了便于后期维护人员进行维护,在将解密后的二进制镜像文件存储于嵌入式设备的内存中,可以包括:将解密后的二进制镜像文件存储于所述内存的内存分区中,并设置二进制镜像文件的名称在所述内存分区与在所述flash分区不一致,但名称中存在部分相同字符,以指示此二者是相同内容的数据,后续维护人员可以直观清晰的确定二进制镜像文件所在位置及当前的加解密状态,便于后期维护人员。
36.例如,在服务器管理单元bmc系统下,二进制镜像文件包括:rootfs、conf和www,对应的,rootfs存储在flash中时名称为rootfs

flash;conf存储在flash中时名称为conf

flash。当解密后存放于内存时,rootfs、conf和www所对应的名称可以为rootfs

ram、www

ram和conf

ram。
37.相应的,存储rootfs

flash的flash区域即一个flash分区,而存储rootfs

ram的内存区域即一个内存分区。
38.s103、从内存中挂载解密后的二进制镜像文件,启动linux嵌入式系统。
39.本实施例中从内存中挂载解密后的二进制镜像文件,即可启动linux嵌入式系统。
40.基于上述技术方案,本实施例通过对二进制镜像文件加密再解密的方式,能够加固嵌入式设备系统的安全特性,避免了相关技术中linux系统下的工具比如binwalk就能够破解分析二进制镜像文件系统中的app和配置文件内容,进而通过可用端口或者利用端口使用默认用户名和默认密码对嵌入式设备发起攻击的缺陷。
41.下面以一种服务器管理单元bmc系统启动方法为例,提供一种具体的实施例。图2为本实施例提供的一种嵌入式linux启动流程的示意图。首先,arm处理器rom运行,加载flash的某地址空间(一般为零地址空间)引导uboot;其次,uboot引导flash的某地址空间的kernel运行,引导同时需要传递uboot的环境变量给kernel,用于定义kernel的运行特性;再次,kernel加载flash的某地址空间的根文件系统rootfs,挂载conf和www浏览器网页文件系统,根文件系统类似于os的c盘等文件系统;最后,从根文件系统中加载app运行。
42.可以理解的是,在服务器管理单元bmc系统开发中,通常是将一段运行在arm处理
器上的软件代码生成二进制镜像文件,烧录在嵌入式系统的flash等存储介质中,系统启动时,arm处理器会加载flash中的二进制镜像文件,启动bmc系统,实现bmc系统的监控等逻辑功能。通常bmc系统的二进制镜像文件包含以下内容,uboot、kernel、rootfs、www、conf等,www用于记录web server的浏览器网页,conf用于记录可读写的linux os或者app应用程序的配置文件等。如图3所示,图3为本实施例提供的一种嵌入式linux镜像文件布局的示意图。
43.具体过程如下:1、服务器管理单元bmc镜像编译时,使用加密模块进行秘钥管理,使用加密工具对bmc系统内二进制镜像的根文件系统rootfs、www和conf进行加密处理后生成bmc系统的二进制加密镜像文件。
44.2、将加密模块的秘钥(一般是公钥)通过uboot下的工具(也可以是其他工具)写入到arm处理器或主板的可信硬件逻辑区域中,并提供秘钥更新接口更新秘钥,秘钥不允许读取。
45.3、uboot代码中集成解密的代码逻辑,使用可信硬件逻辑区域的秘钥对文件系统对flash中的rootfs,www和conf进行解密,并存放在bmc系统的内存中。
46.4、kernel启动后挂载rootfs

ram,www

ram,conf

ram文件系统启动,conf

ram为可读写内容,所以conf

ram有数据更新时,通过集成在某个linux下的加密工具对conf

ram中的conf进行加密处理并回写至flash中的conf

flash。
47.基于上述技术方案,本实施例通过uboot和app加密集成加解密的代码逻辑,以及arm处理器或主板的可信存储硬件单元存放秘钥的方式,实现加密后镜像的启动引导和数据写入。使用本申请提供的方法和装置加密处理后生成bmc系统的二进制加密镜像文件,通过linux os系统下的工具,比如binwalk,无法再破解分析,加固了嵌入式设备bmc系统的安全特性。
48.下面对本申请实施例提供的一种linux嵌入式系统的启动装置进行介绍,下文描述的linux嵌入式系统的启动装置与上文描述的linux嵌入式系统的启动方法可相互对应参照,相关模块均设置于中,参考图4,图4为本申请实施例所提供的一种linux嵌入式系统的启动装置的结构示意图,包括:在一些具体的实施例中,具体包括:生成模块401,用于对嵌入式设备的flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件,并将加密的秘钥写入嵌入式设备内目标部件的可信硬件逻辑区域;解密模块402,用于当linux嵌入式系统的uboot启动时,利用目标部件的可信硬件逻辑区域的秘钥对二进制加密镜像文件进行解密,并将解密后的二进制镜像文件存储于嵌入式设备的内存中;启动模块403,用于从内存中挂载解密后的二进制镜像文件,启动linux嵌入式系统。
49.在一些具体的实施例中,生成模块401,包括:生成单元,用于利用linux嵌入式系统下的加密工具对flash分区中的二进制镜像文件进行加密,生成二进制加密镜像文件。
50.在一些具体的实施例中,还包括:回写模块,用于当识别到所述内存中的二进制镜像文件存在数据更新时,利用所述加密工具对更新后的二进制镜像文件进行加密,并回写至所述flash分区。
51.在一些具体的实施例中,还包括:第一设置模块,用于当接收到更新秘钥的请求时,利用可信硬件逻辑区域的接口更新秘钥,并设置秘钥的读取属性为不可读。
52.在一些具体的实施例中,还包括:第二设置模块,用于将解密后的二进制镜像文件存储于所述内存的内存分区中,并设置二进制镜像文件的名称在所述内存分区与在所述flash分区不一致。
53.在一些具体的实施例中,还包括:选择模块,用于按照预设加密配置从嵌入式设备的flash中选择需要加密的flash分区;所述预设加密配置包括:flash包括的各个flash分区是否需要加密的标识信息。
54.在一些具体的实施例中,每个需要加密的flash分区对应的秘钥不同。
55.由于linux嵌入式系统的启动装置部分的实施例与linux嵌入式系统的启动方法部分的实施例相互对应,因此linux嵌入式系统的启动装置部分的实施例请参见linux嵌入式系统的启动方法部分的实施例的描述,这里暂不赘述。
56.下面对本申请实施例提供的一种电子设备进行介绍,下文描述的电子设备与上文描述的linux嵌入式系统的启动方法可相互对应参照。
57.本申请还公开一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上述linux嵌入式系统的启动方法的步骤。
58.由于电子设备部分的实施例与linux嵌入式系统的启动方法部分的实施例相互对应,因此电子设备部分的实施例请参见linux嵌入式系统的启动方法部分的实施例的描述,这里暂不赘述。
59.下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的linux嵌入式系统的启动方法可相互对应参照。
60.本申请还公开一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述linux嵌入式系统的启动方法的步骤。
61.由于计算机可读存储介质部分的实施例与linux嵌入式系统的启动方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见linux嵌入式系统的启动方法部分的实施例的描述,这里暂不赘述。
62.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
63.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业
技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
64.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
65.以上对本申请所提供的一种linux嵌入式系统的启动方法、装置、电子设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1