嵌入式linux设备的安全启动方法和装置与流程

文档序号:23729250发布日期:2021-01-26 19:26阅读:78来源:国知局
嵌入式linux设备的安全启动方法和装置与流程

[0001]
本发明涉及嵌入式设备的系统安全技术领域,特别涉及一种嵌入式linux设备的安全启动方法和装置。


背景技术:

[0002]
在嵌入式系统中,soc(system on chip,芯片级系统)厂商为了安全考虑,会在soc中内置一次性可编程存储,用于在系统烧录、升级和启动阶段验证bootloader、操作系统内核、文件系统镜像等固件是否为可信任的来源。
[0003]
由于linux为开放式系统,现有技术虽然能够在系统烧录和启动阶段验证bootloader、内核和文件系统镜像是否为可信任的来源,但此种方式不能防止恶意程序篡改系统中的fscheck等文件。一旦这些文件被篡改,系统安全性就无法得到保障。


技术实现要素:

[0004]
基于此,有必要提供一种嵌入式linux设备的安全启动方法和装置,以确保系统的安全性,使系统能够安全启动。
[0005]
为实现上述发明目的,本发明采用以下技术方案。
[0006]
本发明提供一种嵌入式linux设备的安全启动方法,所述linux设备包括固件系统、引导加载程序、内核程序和文件系统,还包括rsa公钥,所述rsa公钥用于对引导加载程序、内核程序和文件系统进行解密,所述方法包括步骤:
[0007]
固件系统启动完成后,读取所述引导加载程序,并计算引导加载程序的md5值;
[0008]
利用所述rsa公钥验证所述引导加载程序的安全性,若安全,则启动引导加载程序;
[0009]
引导加载程序启动完成后,读取所述内核程序,并计算内核程序的md5值;
[0010]
利用所述rsa公钥验证所述内核程序的安全性,若安全,则启动内核程序;
[0011]
内核程序启动完成后,读取文件系统,并计算所述文件系统的md5值;
[0012]
利用所述rsa公钥验证所述文件系统的安全性,若安全,则启动文件系统。
[0013]
上述方法中,所述利用rsa公钥验证所述引导加载程序的安全性,若安全,则启动引导加载程序的步骤具体包括:
[0014]
读取引导加载程序的签名,利用所述rsa公钥进行解密;
[0015]
判断解密后的值是否与所述引导加载程序的md5值相等;
[0016]
若是,则启动引导加载程序。
[0017]
上述方法中,所述利用rsa公钥验证所述内核程序的安全性,若安全,则启动内核程序的步骤具体包括:
[0018]
读取所述内核程序的签名,利用所述rsa公钥进行解密;
[0019]
判断解密后的值是否与所述内核程序的md5值相等;
[0020]
若是,则启动所述内核程序。
[0021]
上述方法中,所述内核程序启动完成后,读取所述文件系统,并计算所述文件系统的md5值的步骤具体包括:
[0022]
读取所述文件系统中的/etc/fscheck.txt文件,计算其md5值;
[0023]
查找/etc/fscheck.txt文件所记录的所有文件,读取并计算每个文件的md5值。
[0024]
上述方法中,所述利用rsa公钥验证所述文件系统的安全性,若安全,则启动所述文件系统的步骤具体包括:
[0025]
读取所述文件系统中的/etc/fscheck.si文件的签名,利用所述rsa公钥进行解密;
[0026]
判断解密后的值是否与所述/etc/fscheck.txt文件的md5值相等;
[0027]
若是,读取文件系统中的/etc/fscheck.txt文件所记录的所有文件的签名,分别用所述rsa公钥进行解密;
[0028]
判断解密后的值是否与所述/etc/fscheck.txt文件所记录的所有文件的md5值分别对应相等;
[0029]
若是,则启动所述文件系统。
[0030]
本发明还提供一种嵌入式linux设备的安全启动装置,所述linux设备包括固件系统、引导加载程序、内核程序和文件系统,还包括rsa公钥,所述rsa公钥用于对引导加载程序、内核程序和文件系统进行解密,所述装置包括:
[0031]
bootloader读值模块,用于固件系统启动完成后,读取引导加载程序,并计算所述引导加载程序的md5值;
[0032]
bootloader验证模块,用于利用所述rsa公钥验证引导加载程序的安全性,若安全,则启动引导加载程序;
[0033]
kernel读值模块,用于引导加载程序启动完成后,读取内核程序,并计算所述内核程序的md5值;
[0034]
kernel验证模块,利用所述rsa公钥验证内核程序的安全性,若安全,则启动所述内核程序;
[0035]
fs读值模块,用于内核程序启动完成后,读取文件系统,并计算所述文件系统的md5值;
[0036]
fs验证模块,用于利用所述rsa公钥验证文件系统的安全性,若安全,则启动所述文件系统。
[0037]
上述装置中,所述bootloader验证模块具体用于:
[0038]
读取所述引导加载程序的签名,利用所述rsa公钥进行解密;
[0039]
判断解密后的值是否与所述引导加载程序的md5值相等;
[0040]
若是,则启动所述引导加载程序。
[0041]
上述装置中,所述kernel验证模块具体用于:
[0042]
读取所述内核程序的签名,利用所述rsa公钥进行解密;
[0043]
判断解密后的值是否与所述内核程序的md5值相等;
[0044]
若是,则启动所述内核程序。
[0045]
上述装置中,所述fs读值模块具体用于:
[0046]
读取所述文件系统中的/etc/fscheck.txt文件,计算其md5值;
[0047]
查找文件系统中的/etc/fscheck.txt文件所记录的所有文件,读取并计算每个文件的md5值。
[0048]
上述装置中,所述fs验证模块具体用于:
[0049]
读取所述/etc/fscheck.si文件的签名,利用所述rsa公钥进行解密;
[0050]
判断解密后的值是否与所述/etc/fscheck.txt文件的md5值相等;
[0051]
若是,读取所述/etc/fscheck.txt文件所记录的所有文件的签名,分别用所述rsa公钥进行解密;
[0052]
判断解密后的值是否与所述/etc/fscheck.txt文件所记录的所有文件的md5值分别对应相等;
[0053]
若是,则启动所述文件系统。
[0054]
本发明通过在芯片内植入rsa公钥,并利用该公钥对引导加载程序、内核程序和文件系统进行解密,继而将解密后的值与所读取的md5值进行对比,通过分别分析引导加载程序、内核程序和文件系统的对比情况,了解系统中各程序和文件的安全性,并且在确保安全的情况下启动系统,从而保障了整个嵌入式linux设备的安全,避免了恶意程序带来的各种风险。
附图说明
[0055]
图1为本实施例中嵌入式linux设备的安全启动方法的流程示意图;
[0056]
图2为利用所述rsa公钥验证文件系统的安全性的步骤的流程图;
[0057]
图3为本实施例中嵌入式linux设备的安全启动装置的方框结构图。
[0058]
本发明目的的实现及其功能、原理将在具体实施方式中结合附图作进一步阐述。
具体实施方式
[0059]
下面结合附图及具体实施例做进一步说明。
[0060]
如图1所示,本实施例提供一种嵌入式linux设备的安全启动方法,所述linux设备包括固件系统(bootrom)、引导加载程序(bootloader)、内核程序(kernel)和文件系统,还包括rsa公钥,所述rsa公钥用于对引导加载程序、内核程序和文件系统进行解密,所述方法包括步骤:
[0061]
s1:固件系统启动完成后,读取所述引导加载程序,并计算引导加载程序的md5值;
[0062]
s2:利用所述rsa公钥验证所述引导加载程序的安全性,若安全,则启动引导加载程序;
[0063]
s3:引导加载程序启动完成后,读取所述内核程序,并计算内核程序的md5值;
[0064]
s4:利用所述rsa公钥验证所述内核程序的安全性,若安全,则启动内核程序;
[0065]
s5:内核程序启动完成后,读取文件系统,并计算所述文件系统的md5值;
[0066]
s6:利用所述rsa公钥验证所述文件系统的安全性,若安全,则启动文件系统。
[0067]
其中,步骤s2具体包括:
[0068]
s21:读取引导加载程序的签名,利用所述rsa公钥进行解密;
[0069]
s22:判断解密后的值是否与所述引导加载程序的md5值相等;
[0070]
s23:若是,则启动引导加载程序。
[0071]
同样地,步骤s4具体包括:
[0072]
s41:读取所述内核程序的签名,利用所述rsa公钥进行解密;
[0073]
s42:判断解密后的值是否与所述内核程序的md5值相等;
[0074]
s43:若是,则启动内核程序。
[0075]
步骤具体s5包括:
[0076]
s51:读取所述文件系统中的/etc/fscheck.txt文件,计算其md5值;
[0077]
s52:查找/etc/fscheck.txt文件所记录的所有文件,读取并计算每个文件的md5值。
[0078]
步骤s6具体包括:
[0079]
s61:读取所述文件系统中的/etc/fscheck.si文件和/etc/fscheck.txt文件所记录的所有文件的签名,利用所述rsa公钥进行解密;
[0080]
s62:判断解密后的值是否与原文件的md5值相等;
[0081]
s63:若是,则启动文件系统。
[0082]
具体地,参照图2所示,步骤s6进一步包括:
[0083]
s611:读取所述文件系统中的/etc/fscheck.si文件的签名,用所述rsa公钥进行解密;
[0084]
s612:判断解密后的值是否与/etc/fscheck.si文件的md5值相等;
[0085]
s613:若是,则判定所述/etc/fscheck.txt文件是安全的,此时,读取文件系统中的/etc/fscheck.txt文件所记录的所有文件的签名,分别用所述rsa公钥进行解密;
[0086]
s614:判断解密后的值是否与所述/etc/fscheck.txt文件所记录的所有文件的md5值分别对应相等;
[0087]
s615:若是,则判定所述/etc/fscheck.txt文件是安全的,此时,启动所述文件系统。
[0088]
本实施例通过上述方法和步骤,可确保该设备在系统安全时才启动,避免因系统文件被篡改造成的设备运行故障或其它安全风险。
[0089]
参照图3所示,本实施例还提供一种嵌入式linux设备的安全启动装置100,所述linux设备包括固件系统、引导加载程序、内核程序和文件系统,还包括rsa公钥,所述rsa公钥用于对引导加载程序、内核程序和文件系统进行解密,所述装置100包括:
[0090]
bootloader读值模块10,用于固件系统启动完成后,读取引导加载程序,并计算所述引导加载程序的md5值;
[0091]
bootloader验证模块20,用于利用所述rsa公钥验证引导加载程序的安全性,若安全,则启动引导加载程序;
[0092]
kernel读值模块30,用于引导加载程序启动完成后,读取内核程序,并计算所述内核程序的md5值;
[0093]
kernel验证模块40,利用所述rsa公钥验证内核程序的安全性,若安全,则启动所述内核程序;
[0094]
fs读值模块50,用于内核程序启动完成后,读取文件系统,并计算所述文件系统的md5值;
[0095]
fs验证模块60,用于利用所述rsa公钥验证文件系统的安全性,若安全,则启动所
述文件系统。
[0096]
具体地,上述bootloader验证模块20具体用于:
[0097]
读取所述引导加载程序的签名,利用所述rsa公钥进行解密;
[0098]
判断解密后的值是否与所述引导加载程序的md5值相等;
[0099]
若是,则启动所述引导加载程序。
[0100]
本实施例的kernel验证模块40具体用于:
[0101]
读取所述内核程序的签名,利用所述rsa公钥进行解密;
[0102]
判断解密后的值是否与所述内核程序的md5值相等;
[0103]
若是,则启动所述内核程序。
[0104]
本实施例的fs读值模块50具体用于:
[0105]
读取所述文件系统中的/etc/fscheck.txt文件,计算其md5值;
[0106]
查找文件系统中的/etc/fscheck.txt文件所记录的所有文件,读取并计算每个文件的md5值。
[0107]
本实施例的所述fs验证模块60具体用于:
[0108]
读取所述/etc/fscheck.si文件的签名,利用所述rsa公钥进行解密;
[0109]
判断解密后的值是否与所述/etc/fscheck.txt文件的md5值相等;
[0110]
若是,则判定所述/etc/fscheck.txt文件是安全的;读取所述/etc/fscheck.txt文件所记录的所有文件的签名,分别用所述rsa公钥进行解密;
[0111]
判断解密后的值是否与所述/etc/fscheck.txt文件所记录的所有文件的md5值分别对应相等;
[0112]
若是,则判定所述/etc/fscheck.txt文件是安全的,并启动所述文件系统。
[0113]
综上所述,本发明通过在芯片内植入rsa公钥,并利用该公钥对引导加载程序、内核程序和文件系统进行解密,继而将解密后的值与所读取的md5值进行对比,通过分别分析引导加载程序、内核程序和文件系统的对比情况,了解系统中各程序和文件的安全性,并且在确保安全的情况下启动系统,从而保障了整个嵌入式linux设备的安全,避免了恶意程序带来的各种风险。
[0114]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0115]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1