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

基于Linux系统的安全启动方法、装置、电子设备及存储介质与流程

2022-06-01 18:08:40 来源:中国专利 TAG:

基于linux系统的安全启动方法、装置、电子设备及存储介质
技术领域
1.本发明涉及计算机数据安全技术领域,具体涉及一种基于linux系统的安全启动方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.随着信息技术的高速发展,电子产品越来越普及,这些产品发展得益于嵌入式系统技术的快速发展,例如手机等日常用品就是嵌入式系统技术的应用。但嵌入式系统技术的应用远不止于此,在工业控制、交通管理、信息家电、家庭智能管理、网络及电子商务、航空航天、军事设备、船舶等领域都有重要的应用。嵌入式系统技术正悄然地影响着我们的生活,给我们带来了巨大的便利,有着良好的发展前景。
3.目前在嵌入式开发中,经常要实现将对应的固件,烧写到开发板中,然后开发板才能运行我们的程序。嵌入式开发,很多用的是linux系统,也有用wince和其他系统,linux系统中,多数为bootloader kernel rootfs的模式。其中,所用的bootloader,多为uboot。负责初始化硬件和设置好软件环境,然后加载kernel,运行kernel,kernel运行后,再去加载rootfs,之后运行linux。
4.为了防止这些分区数据被非法篡改和替换,达到防止黑客通过专业工具或其它手段刷机的目的。基于安全芯片提供的硬件保护机制,以及对各分区镜像进行rsa签名校验,在不影响其必要的调试手段的情况下,对flash中的重要数据如:uboot、kernel、rootfs、system等分区提供更高级别的保护,形成一个链式校验的机制。现有技术有类似的实例,启动也是从uboot开始,至核心业务结束,采取的方式是对各个分区镜像都进行加密处理,这种方式就是所有分区镜像都是密文存储在flash中,每次上电启动,都必须进行逐级解密,解密之后进行校验,虽然这样安全性更高,不过这也会影响系统启动整体性能,特别消耗存储资源。
5.针对现有技术中linux系统启动校验需要对各个分区镜像进行加密处理,逐级解密、校验,对存储资源造成较多消耗的问题,还未提出有效的解决方案。


技术实现要素:

6.有鉴于此,本发明实施例提供了一种基于linux系统的安全启动方法、装置、电子设备及计算机可读存储介质,以解决现有技术中linux系统启动校验需要对各个分区镜像进行加密处理,逐级解密、校验,对存储资源造成较多消耗的问题。
7.为此,本发明实施例提供了如下技术方案:
8.本发明第一方面,提供了一种基于linux系统的安全启动方法,包括:
9.读取otp中rsa公钥的哈希值;
10.使用所述otp中rsa公钥的哈希值对uboot的签名进行校验,得到第一校验结果;
11.在所述第一校验结果指示校验通过时,对kernel的头签名进行校验,得到第二校验结果;
12.在所述第二校验结果指示校验通过时,对rootfs中指定文件进行校验,得到第三校验结果;
13.在所述第三校验结果指示校验通过时,对system中的文件进行校验。
14.可选地,读取otp中rsa公钥的哈希值之后,使用所述otp中rsa公钥的哈希值对uboot的签名进行校验之前,所述方法还包括:
15.获取uboot镜像包中的公钥;
16.使用ras签名算法对uboot镜像包中的公钥进行哈希值计算,得到uboot镜像包中的公钥哈希值;
17.判断uboot镜像包中的公钥哈希值与otp中rsa公钥哈希值是否一致,得到第一判断结果;
18.在所述第一判断结果指示为是时,提取uboot镜像包中的key;
19.使用ras签名算法对uboot镜像包中的key进行哈希值计算,得到uboot镜像包中的key哈希值;
20.判断uboot镜像包中的key哈希值与otp中key哈希值是否一致,得到第二判断结果;所述第二判断结果指示为是。
21.可选地,对kernel的头签名进行校验包括:
22.uboot读取flash中的kernel镜像签名头,使用uboot镜像包中的ras公钥对kernel签名头进行校验。
23.可选地,对rootfs中指定文件进行校验包括:
24.获取指定文件;其中,所述指定文件包括以下至少之一配置文件、库文件;
25.对所述指定文件进行签名;
26.使用uboot镜像包中的ras公钥对所述指定文件的签名进行校验。
27.可选地,对system中的文件进行校验包括:
28.获取实际文件数目和system_list中的文件数目;
29.判断所述实际文件数目与system_list中的文件数目否一致,得到第三判断结果;
30.在所述第三判断结果指示为是时,计算system中每个文件的哈希值;
31.将每个文件的哈希值与system_list中存储的对应哈希值进行比较,得到比较结果;
32.在所述比较结果指示为是时,启动system分区。
33.可选地,获取实际文件数目包括:
34.使用linux系统中busyboxwc工具对指定目录下所有文件进行罗列,得到所述实际文件数目。
35.可选地,获取system_list中的文件数目包括:
36.在打包system分区的镜像包之前,使用find的命令配合sha256sum算法,得到所有文件罗列以及所有文件的哈希值。
37.本发明第二方面,提供了一种基于linux系统的安全启动装置,包括:
38.读取模块,用于读取otp中rsa公钥的哈希值;
39.第一校验模块,用于使用所述otp中rsa公钥的哈希值对uboot的签名进行校验,得到第一校验结果;
40.第二校验模块,用于在所述第一校验结果指示校验通过时,对kernel的头签名进行校验,得到第二校验结果;
41.第三校验模块,用于在所述第二校验结果指示校验通过时,对rootfs中指定文件进行校验,得到第三校验结果;
42.第四校验模块,用于在所述第三校验结果指示校验通过时,对system中的文件进行校验。
43.本发明第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述第一方面中任一所述的基于linux系统的安全启动方法。
44.本发明第四方面,提供了一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现上述第一方面中任一所述的基于linux系统的安全启动方法。
45.本发明实施例技术方案,具有如下优点:
46.本发明实施例提供了一种基于linux系统的安全启动方法、装置、电子设备及计算机可读存储介质,其中,该方法包括:读取otp中rsa公钥的哈希值;使用otp中rsa公钥的哈希值对uboot的签名进行校验,得到第一校验结果;在第一校验结果指示校验通过时,对kernel的头签名进行校验,得到第二校验结果;在第二校验结果指示校验通过时,对rootfs中指定文件进行校验,得到第三校验结果;在第三校验结果指示校验通过时,对system中的文件进行校验。解决了现有技术中linux系统启动校验需要对各个分区镜像进行加密处理,逐级解密、校验,对存储资源造成较多消耗的问题,节省了存储资源。
附图说明
47.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1是根据本发明实施例的基于linux系统的安全启动方法的流程图;
49.图2是根据本发明实施例的kernel结构框图;
50.图3是根据本发明实施例的基于linux系统的安全启动方法的另一流程图;
51.图4是根据本发明实施例的uboot安全启动示意图;
52.图5是根据本发明实施例的系统启动uboot流程图;
53.图6是根据本发明实施例的kernel安全启动示意图;
54.图7是根据本发明实施例的kernel安全启动另一示意图;
55.图8是根据本发明实施例的基于linux系统的安全启动装置的结构框图;
56.图9是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
57.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
58.在本技术的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
59.在本技术中,“示例性”一词用来表示“用作例子、例证或说明”。本技术中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本技术,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本技术。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本技术的描述变得晦涩。因此,本技术并非旨在限于所示的实施例,而是与符合本技术所公开的原理和特征的最广范围相一致。
60.现有技术中很多只是保证了对外界通信传输进行了加密处理,往往忽略掉了系统中安全启动的隐患,缺乏了对安全启动信息保护与校验的机制,启动时没有对flash中的镜像进行解密或者完整性校验,很容易给外界破坏分区信息,盗用设备中信息或者进行非法刷机。
61.为了实现linux系统的安全启动,根据本发明实施例,提供了一种基于linux系统的安全启动方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
62.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
63.在本实施例中提供了一种基于linux系统的安全启动方法,可用于具备计算能力的电子设备,图1是根据本发明实施例的基于linux系统的安全启动方法的流程图,如图1所示,该流程包括如下步骤:
64.步骤s101,读取otp中rsa公钥的哈希值。
65.步骤s102,使用该otp中rsa公钥的哈希值对uboot的签名进行校验,得到第一校验结果。
66.步骤s103,在第一校验结果指示校验通过时,对kernel的头签名进行校验,得到第二校验结果。例如kernel的头签名如图2所示。
67.步骤s104,在第二校验结果指示校验通过时,对rootfs中指定文件进行校验,得到第三校验结果。
68.步骤s105,在第三校验结果指示校验通过时,对system中的文件进行校验。
69.参照图3,芯片上电之后启动的时候,加载自己内部rom的bootloader,程序会读取otp中的寄存器等标志位,是否进行安全启动,如确认安全启动后,就会校验公钥的hash与uboot的签名,校验通过之后,uboot就会校验kernel的头签名,kernel校验通过之后,kernel就会启动线程去校验rootfs和system分区里面的文件hash值;只要有一处校验失败之后,系统就会触发重启异常处理,这样就形成了一条安全的校验链。由于本发明实施例在基于linux系统的安全启动过程中,无需对各个分区镜像都进行加密处理,每次上电启动时无需都进行逐级解密,本发明实施例不太影响系统性能,不太消耗系统内存资源情况下,更快速地进行安全启动。
70.在一个可选实施例中,读取otp中rsa公钥的哈希值之后,使用该otp中rsa公钥的哈希值对uboot的签名进行校验之前,获取uboot镜像包中的公钥,使用ras签名算法对uboot镜像包中的公钥进行哈希值计算,得到uboot镜像包中的公钥哈希值,判断uboot镜像包中的公钥哈希值与otp中rsa公钥哈希值是否一致,得到第一判断结果,在第一判断结果指示为是时,提取uboot镜像包中的key,使用ras签名算法对uboot镜像包中的key进行哈希值计算,得到uboot镜像包中的key哈希值,判断uboot镜像包中的key哈希值与otp中key哈希值是否一致,得到第二判断结果,第二判断结果指示为是。具体地,参见图4,制作uboot加密安全镜像,要用到otp,需要烧写rsa公钥哈希值以及key的哈希值,把rsa公钥的n,e值导入镜像包中,这部分在进行rsa签名校验的时候,首先对公钥进行校验,是否与芯片otp中存的是同一个公钥,另外因为uboot镜像和它的签名是进行aes加密过的,需要用到aes、iv,同理,解密时,需要对otp中存的口令是否与uboot镜像中的key是否一致;一致才能进行解密,解密之后,就需要对uboot镜像以及它的签名进行签名验证。
71.参见图5,系统启动uboot包括如下步骤:
72.步骤s501,芯片上电;
73.步骤s502,读取otp中rsa公钥的hash值;
74.步骤s503,对公钥进行验证,如果验证失败执行步骤s504,如果验证成功执行步骤s505;
75.步骤s504,系统重启,复位;
76.步骤s505,对key进行验签,,如果验签成功执行步骤s506,如果验签失败执行步骤s504;
77.步骤s506,用key对uboot.bin进行解密;key、iv值配合aes的cbc模式算法,对密文uboot.bin进行解密,解密出来的uboot是机器可读数据,机器正常启动uboot,即可进行kernel安全启动;
78.步骤s507,用rsa公钥对uboot_signature.bin签名进行校验,如果校验成功执行步骤s508,如果校验失败执行步骤s504;
79.步骤s508,系统启动uboot,进行kernel安全启动。
80.上述步骤s103涉及到对kernel的头签名进行校验,在一个可选实施例中,uboot读取flash中的kernel镜像签名头,使用uboot镜像包中的ras公钥对kernel签名头进行校验。具体地,参见图6、7,kernel镜像制作用rsa私钥对kernel进行签名,导入kernel原镜像的头。在uboot中使用安全加密解密接口组件,uboot读取flash中的kernel镜像签名头以及kernel镜像,使用rsa公钥对kernel签名头进行完整性校验,校验成功之后,就会去修改启
动kernel的头地址,因为默认uboot环境变量中保存的是kernel分区的头地址,需要跳过kernel的头签名,才能启动kernel,kernel启动完毕,即可进行rootfs/system的安全启动。
81.上述步骤s104涉及对rootfs中指定文件进行校验,在一个可选实施例中,获取指定文件;其中,该指定文件包括以下至少之一配置文件、库文件;对指定文件进行签名,使用uboot镜像包中的ras公钥对该指定文件的签名进行校验。具体地,与system安全启动有点类似,由于rootfs是可读写的,所以只对内部分区的配置文件、重要的命令、库文件进行了签名保存到文件(verify_list),启动时会用rsa公钥对签名进行校验,校验成功之后,继续校验system分区。
82.上述步骤s105涉及到对system中的文件进行校验,在一个可选实施例中,获取实际文件数目和system_list中的文件数目,判断该实际文件数目与system_list中的文件数目否一致,得到第三判断结果,在第三判断结果指示为是时,计算system中每个文件的哈希值,将每个文件的哈希值与system_list中存储的对应哈希值进行比较,得到比较结果,在该比较结果指示为是时,启动system分区。具体地,参见图7,kernel启动之后,会启动线程,首先system校验文件数量,通过比较文件(system_list)中的文件数目和实际上的文件(system_num),比较一致之后,继续对system中的所有文件,一一计算出每个文件的哈希值,与文件(system_list)里面对应存储的哈希值比对,校验成功才能启动system分区,不然重启。
83.在一个可选实施例中,计算实际文件(system_num)的方法以及步骤:是使用linux系统中busyboxwc工具,这个工具是可以对一个目录下的所有文件进行罗列,写入脚本中并可以保存一个变量,输出到system_num文件当中。
84.在一个可选实施例中,获取文件(system_list)的方法以及步骤:是在打包system分区的镜像包之前,使用find的命令配合sha256sum算法,得到所有文件罗列以及所以的hash值。
85.在本实施例中还提供了一种基于linux系统的安全启动装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
86.本实施例提供了一种基于linux系统的安全启动装置,如图8所示,包括:
87.读取模块81,用于读取otp中rsa公钥的哈希值;
88.第一校验模块82,用于使用所述otp中rsa公钥的哈希值对uboot的签名进行校验,得到第一校验结果;
89.第二校验模块83,用于在所述第一校验结果指示校验通过时,对kernel的头签名进行校验,得到第二校验结果;
90.第三校验模块84,用于在所述第二校验结果指示校验通过时,对rootfs中指定文件进行校验,得到第三校验结果;
91.第四校验模块85,用于在所述第三校验结果指示校验通过时,对system中的文件进行校验。
92.本实施例中的基于linux系统的安全启动装置是以功能单元的形式来呈现,这里的单元是指asic电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以
提供上述功能的器件。
93.上述各个模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
94.本发明实施例还提供一种移动终端,具有上述图9所示的基于linux系统的安全启动装置。
95.请参阅图9,图9是本发明可选实施例提供的一种电子设备的结构示意图,如图9所示,该终端可以包括:至少一个处理器901,例如cpu(central processing unit,中央处理器),至少一个通信接口903,存储器904,至少一个通信总线902。其中,通信总线902用于实现这些组件之间的连接通信。其中,通信接口903可以包括显示屏(display)、键盘(keyboard),可选通信接口903还可以包括标准的有线接口、无线接口。存储器904可以是高速ram存储器(random access memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器904可选的还可以是至少一个位于远离前述处理器901的存储装置。其中处理器901可以结合图8所描述的装置,存储器904中存储应用程序,且处理器901调用存储器904中存储的程序代码,以用于执行上述任一基于linux系统的安全启动方法的步骤。
96.其中,通信总线902可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。通信总线902可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
97.其中,存储器904可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:ram);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:hdd)或固态硬盘(英文:solid-state drive,缩写:ssd);存储器904还可以包括上述种类的存储器的组合。
98.其中,处理器901可以是中央处理器(英文:central processing unit,缩写:cpu),网络处理器(英文:network processor,缩写:np)或者cpu和np的组合。
99.其中,处理器901还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:asic),可编程逻辑器件(英文:programmable logic device,缩写:pld)或其组合。上述pld可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:cpld),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:fpga),通用阵列逻辑(英文:generic array logic,缩写:gal)或其任意组合。
100.可选地,存储器904还用于存储程序指令。处理器901可以调用程序指令,实现如本技术图1和6实施例中所示的基于linux系统的安全启动方法。
101.本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于linux系统的安全启动方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
102.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献