一种基于MPSoC芯片的系统安全启动方法与流程

文档序号:18941858发布日期:2019-10-23 01:13阅读:309来源:国知局
一种基于MPSoC芯片的系统安全启动方法与流程

本申请涉及嵌入式系统的技术领域,具体而言,涉及一种基于mpsoc芯片的系统安全启动方法。



背景技术:

现有的嵌入式系统中,系统的引导程序和系统镜像文件多存储在单个flash存储单元中,当对手厂商恶意读取flash中的数据,并实现抄板,就非常容易仿制同样规格和类型的产品。

与此同时,现有的系统启动加载的过程,并没有对存储的引导程序和系统镜像文件,进行正确性校验,系统启动时直接从固定的flash地址加载引导程序和系统镜像文件,并启动运行。系统能否正确启动,完全取决于存储在flash中引导程序和系统镜像文件的完整性和正确性,如果flash中文件内容出错,系统启动过程不可跳转,会直接导致启动失败。

当flash出现误擦除或者存储介质因本身因素(如机械碰撞、引脚松动、供电过高等)故障,将导致存储内容缺失或值改变(flash中的数据以bit方式保存在存储单元,非0即1),造成系统启动过程中加载的引导程序或系统镜像文件不正确,最终造成设备不能正常启动。

在对于系统运行环境稳定性要求较高的工业领域中,商用的嵌入式系统、设备的安全性和稳定性是整个嵌入式系统的关键指标,而现有技术并无法对这些关键指标提供可靠的保证,因此,需要结合备份机制、对系统程序采取防抄袭措施,既可以保证系统启动过程的稳定性和完整性,又可以保证系统的安全性。



技术实现要素:

本申请的目的在于:设计一套完整的基于mpsoc芯片的系统安全启动方法,采用多级引导验证的方法,在保证烧写文件和系统硬件(如cpu、gpu、mcu)绑定的同时,提高系统启动过程中的稳定性和完整性。

本申请第一方面的技术方案是:提供了一种基于mpsoc芯片的系统安全启动方法,该方法适用于嵌入式系统的启动,嵌入式系统包括系统芯片和系统启动存储介质,系统启动存储介质中存储有系统镜像文件和系统镜像备份文件,该方法包括:

步骤1,根据系统芯片的全局唯一标识符,采用加密算法生成两组公钥,将两组公钥烧写入系统芯片,并熔断系统芯片的电可编程熔丝;

步骤2,根据两组公钥,对初级引导程序进行加密和打包,记作一级引导程序,并根据一级引导程序,生成并烧写多级引导程序至系统启动存储介质中,其中,多级引导程序至少包括两级;

步骤3,嵌入式系统上电后,根据全局唯一标识符,采用容错处理方法,对多级引导程序进行解密和逐级校验,并通过多级引导程序启动系统镜像文件和系统镜像备份文件中的一种。

上述任一项技术方案中,进一步地,步骤2具体包括:步骤21,根据初级引导程序和两组公钥,采用安全散列算法,生成并存储第一密钥和第二密钥;步骤22,采用暗文加密算法,根据两组公钥,对初级引导程序进行加密;步骤23,将第一密钥、第二密钥和加密后的初级引导程序进行打包,记作一级引导程序。

上述任一项技术方案中,进一步地,暗文加密算法包括与运算、或运算、加法运算、非运算、与或运算、移位运算中的至少一种。

上述任一项技术方案中,进一步地,多级引导程序包括两级引导程序和对应的引导备份程序,其中,引导程序包括一级引导程序和二级引导程序,引导备份程序包括一级引导备份程序和二级引导备份程序。

上述任一项技术方案中,进一步地,步骤3具体包括:步骤31,嵌入式系统上电后,读取启动信息头文件,根据全局唯一标识符和第一密钥,对一级引导程序进行散列计算;步骤32,根据散列计算的结果,采用容错处理方法,对一级引导程序进行解密和第一校验,当判定第一校验通过时,执行步骤33,当判定第一校验未通过时,重新执行步骤31,对一级引导备份程序进行散列计算;步骤33,根据第二密钥,对一级引导程序进行第二校验,当判定第二校验通过时,执行步骤34,当判定第二校验未通过时,重新执行步骤31,对一级引导备份程序进行散列计算;步骤34,对二级引导程序进行第三校验,当判定二级引导程序通过第三校验时,启动系统镜像文件,当判定二级引导程序未通过第三校验时,获取二级引导备份程序,当未获取到二级引导备份程序时,生成并发送系统启动异常信息,当获取到二级引导备份程序时,对二级引导备份程序进行第三校验,当判定二级引导备份程序通过第三校验时,启动系统镜像备份文件,当判定二级引导备份程序未通过第三校验时,获取下一个二级引导备份程序。

上述任一项技术方案中,进一步地,一级引导备份程序的备份数量为3,二级引导备份程序的备份数量为2。

本申请第二方面的技术方案是:提供了一种嵌入式系统,嵌入式系统中包含系统芯片和系统启动存储介质,系统启动存储介质上存储有启动程序,启动程序运行时,执行如本申请第一方面技术方案中任一项的基于mpsoc芯片的系统安全启动方法。

上述任一项技术方案中,进一步地,系统芯片上存储有全局唯一标识符,且系统芯片上设置有电可编程熔丝。

本申请的有益效果是:

通过本申请的安全启动方法,利用多级引导验证,并结合芯片的全局唯一标识符,对一级引导程序本身进行加密校验(认证),降低了明文存储的风险,提高了嵌入式系统的安全性,极大降低了系统被抄板仿制的可能性。

结合本申请中的多级引导,增加系统备份启动文件,设定合理的系统启动路径,在提高系统安全性的同时,还提高了嵌入式系统的稳定性,通过百万次的掉电启动测试,本申请中的启动方法均能保证嵌入式系统正常、稳定启动。

附图说明

本申请的上述和/或附加方面的优点在结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本申请的一个实施例的基于mpsoc芯片的系统安全启动方法的示意流程图;

图2是根据本申请的一个实施例的一级引导验证示意流程图;

图3是根据本申请的一个实施例的二级引导验证示意流程图;

图4是根据本申请的一个实施例的嵌入式系统启动路径示意图;

图5是根据本申请的一个实施例的存储内容的示意图。

具体实施方式

为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互结合。

在下面的描述中,阐述了很多具体细节以便于充分理解本申请,但是,本申请还可以采用其他不同于在此描述的其他方式来实施,因此,本申请的保护范围并不受下面公开的具体实施例的限制。

实施例一:

如图1所示,本实施例提供了一种基于mpsoc芯片的系统安全启动方法,该方法适用于嵌入式系统的启动,嵌入式系统包括系统芯片和系统启动存储介质,系统启动存储介质中存储有系统镜像文件和系统镜像备份文件,系统芯片上存储有全局唯一标识符,该方法包括:

步骤1,根据系统芯片的全局唯一标识符,采用加密算法生成两组公钥,将两组公钥烧写入系统芯片,并熔断系统芯片的电可编程熔丝;

具体地,在本实施例中,将mpsoc芯片作为系统芯片,将系统芯片中的全局唯一标识符guid作为预设公钥,该预设公钥为64字节,根据预设公钥(guid)和加密算法,如哈希算法,可以生成两组hash数据,记作两组公钥,作为mpsoc芯片中cpu存储的两组密钥(publickey1和publickey2),这两组公钥受电可编程熔丝的保护,然后熔断mpsoc芯片的电可编程熔丝,使得存入cpu中的publickey1和publickey2不可再修改。

步骤2,根据系统芯片中存储的两组公钥,对初级引导程序进行加密和打包,记作一级引导程序,并根据一级引导程序,生成并烧写多级引导程序至系统启动存储介质中,其中,多级引导程序至少包括两级;

优选地,多级引导程序包括两级引导程序和对应的引导备份程序,其中,引导程序包括一级引导程序(fsbl)和二级引导程序(uboot),引导备份程序包括一级引导备份程序和二级引导备份程序。

进一步地,步骤2具体包括:

步骤21,根据初级引导程序和两组公钥,采用安全散列算法,生成并存储第一密钥和第二密钥,其中,初级引导程序用于引导mpsoc芯片启动;

具体地,采用现有的安全散列(sha3)算法,根据生成的两组公钥和初级引导程序,可以生成spk(secondarypublickey)和ppk(primarypublickey)两种密钥,这两种密钥均为48字节。在本实施例中,将ppk作为第一密钥,将spk作为第二密钥。

步骤22,采用暗文加密算法,根据两组公钥,对初级引导程序进行加密;

优选地,暗文加密算法包括与运算、或运算、加法运算、非运算、与或运算、移位运算中的至少一种。

具体地,为了提高本实施例中程序抄袭的难度,将明文形式的初级引导程序,进行加密,即将明文转换为暗文。因此,采用暗文加密算法,如与运算、或运算、加法运算、非运算、与或运算、移位运算中的一种或多种,利用存储的两组公钥,对初级引导程序进行加密,转换为暗文。

本实施例给出一种暗文加密方法:

首先,将两组公钥进行加法运算,将得到的计算结果作为加密码,其中,加密码为64字节;

然后,采用循环计算方法,利用加密码中每一位的数据,逐位对初级引导程序进行按位与操作,将初级引导程序转换为暗文。

步骤23,将第一密钥ppk、第二密钥spk和加密后的初级引导程序进行打包,记作一级引导程序。

具体地,通过上述技术方案,使用guid作为存储到mpsoc芯片两组公钥的一部分,保证每个嵌入式设备的spk值不同,经过加密的fsbl(一级引导程序)文件会不同,校验spk和fsbl(一级引导程序)文件头的ppk密钥也会不同,从而实现复杂的防抄板功能。

通过本实施例中的上述技术方案,两组公钥和程序(初级引导程序)打包成一级引导程序烧写文件,即完成一级引导程序、硬件芯片guid和预设公钥的绑定,三者有任意值不匹配,系统都无法正常启动成功。

步骤3,嵌入式系统上电后,根据全局唯一标识符,采用容错处理方法,对多级引导程序进行解密和逐级校验(认证),并通过多级引导程序启动系统镜像文件和系统镜像备份文件中的一种。

具体地,嵌入式系统对一级引导程序的校验(认证)过程主要包括两步:

1)使用ppk密钥值,对一级引导程序(fsbl)的启动信息头文件(bootheader)和spk密钥本身做校验(认证);

2)使用spk密钥值,对fsbl的文件内容摘要解密(暗文加密的逆过程),还原fsbl文件内容,正确后才能进入一级引导程序的运行。

如图2和图3所示,本实施例示出一种引导程序校验方法,步骤3具体包括:

步骤31,嵌入式系统上电后,读取启动信息头文件,根据全局唯一标识符和第一密钥ppk,对一级引导程序进行散列计算;

步骤32,根据散列计算的结果,采用容错处理方法,对一级引导程序进行解密和第一校验(认证),当判定第一校验(认证)通过时,执行步骤33,当判定第一校验(认证)未通过时,重新执行步骤31,对一级引导备份程序进行散列计算;

步骤33,根据第二密钥spk,对一级引导程序进行第二校验(认证),当判定第二校验(认证)通过时,执行步骤34,当判定第二校验(认证)未通过时,重新执行步骤31,对一级引导备份程序进行散列计算;

具体地,系统上电后,芯片固化的rom程序,先加载guid到内存,同时查询fsbl(一级引导程序)的启动信息头文件(保护头),判断烧写的文件是否需要认证,如果需要,就根据guid,采用加密算法,如哈希算法,生成两组公钥(密钥1和密钥2),再进行ppk的散列计算,进行第一校验(认证),若通过,则表明启动信息头文件和spk正确,再进行第二校验(认证),若通过,则表明一级引导程序本身正确,并解密fsbl(一级引导程序)文件运行,进入二级引导程序,其中,第一校验为ppk校验,第二校验为spk校验。

在一级引导程序校验的过程中,如果ppk校验、spk校验未通过,则查找新的启动文件,即一级引导备份程序,根据新的一级引导备份程序重新进行校验(ppk校验和spk校验),如果未找到新的一级引导备份程序,则证明该嵌入式系统不能正常启动。

本实施例,通过一级引导程序的ppk校验、spk校验时,对系统启动存储介质中存储的二级引导程序的正确性进行校验,通过二级引导程序的md5码校验,对芯片中存储的系统镜像文件和系统镜像备份文件的正确性进行校验。

步骤34,对二级引导程序进行第三校验,当判定二级引导程序通过第三校验时,启动系统镜像文件,当判定二级引导程序未通过第三校验时,获取二级引导备份程序,

当未获取到二级引导备份程序时,生成并发送系统启动异常信息,

当获取到二级引导备份程序时,对二级引导备份程序进行第三校验,当判定二级引导备份程序通过第三校验时,启动系统镜像备份文件,当判定二级引导备份程序未通过第三校验时,获取下一个二级引导备份程序。

具体地,在本实施例中,利用md5码对二级引导程序(uboot)或者二级引导备份程序进行校验,验证系统镜像文件(image.ub)的正确性。因此,通过本实施例中的容错处理方法,利用两级引导程序的验证,实现对系统镜像文件和系统镜像备份文件的调用,以保证嵌入式系统能够稳定启动。

本实施例,采用安全的签名密钥校验方法,以及多个flash存储器(系统启动存储介质)中烧写多份引导程序(一级引导程序、二级引导程序及对应的备份)、系统镜像文件,其中,一个flash中存储的为系统默认启动文件,另一个flash存储器中存储为备份系统;本实施例通过mpsoc芯片的rom程序加载一级引导程序,然后通过一级引导程序加载校验二级引导程序,二级引导程序启动后,加载校验默认系统镜像文件,并在内存中启动运行;加载过程中添加了异常容错处理:如果一级引导程序校验异常,则从下一个一级引导程序启动;如果二级引导程序校验失败,则加载校验下一个二级引导程序;如果默认系统镜像文件校验错误,则加载校验第一个备份镜像文件,失败再加载校验第二个备份镜像文件。

优选地,一级引导备份程序的备份数量为3,二级引导备份程序的备份数量为2。

实施例二:

如图4所示,本实施例提供了一种嵌入式系统启动路径的实现方式,在该嵌入式系统默认的系统启动存储介质中,存放一份一级引导程序和对应的3份一级引导备份程序、一份二级引导程序和对应的2份二级引导备份程序,同时保存有四份系统镜像文件(包括3份系统镜像备份文件)。

与此同时,一级引导程序和二级引导程序中均添加了加载文件的正确性校验功能,确保每一级加载程序文件的正确性,从而提高嵌入式系统启动的稳定性。

正常情况下,系统镜像文件的启动流程为:

mpsoc芯片上电后rom程序查找默认启动介质的bootheader(启动信息头文件),并启动fsbl(一级引导程序),由fsbl加载校验uboot(二级引导程序)文件,uboot(二级引导程序)启动加载、校验默认镜像文件(系统镜像文件)。即图4中的路径①→②→③;

在异常情况下,系统镜像备份文件的一种启动流程为:

在上述路径中,当某个文件出现异常(如md5校验失败,不正确或不完整),均可触发系统镜像备份文件的启动路径。如系统默认镜像文件损坏,则对应的启动路径为:①→②→④;如第一个一级引导程序出错,则对应的启动路径为:①→⑥→⑦→⑧。

实施例三:

如图5所示,本实施例提供一种嵌入式系统,嵌入式系统中包含系统芯片(mpsoc芯片)和系统启动存储介质(flash),系统启动存储介质上存储有启动程序,启动程序运行时,执行如上述实施例一或实施例二中披露的基于mpsoc芯片的系统安全启动方法。

进一步地,系统芯片上存储有全局唯一标识符,且系统芯片上设置有电可编程熔丝。

系统上电后,mpsoc芯片的rom程序搜寻引导介质的一级引导程序,并签名密钥校验cpu存储的公钥(哈希生成的两组公钥)和引导程序计算密钥(ppk、spk),校验通过后,才加载运行,然后通过一级引导程序加载校验二级引导程序,二级引导程序再加载校验flash中的默认系统镜像文件,校验正确后才允许运行启动。

此方法实现系统安全启动,以及默认系统文件正常启动和异常时候的备份系统文件启动,减少非正版烧写、部分flash文件损坏或修改,导致系统无法正常启动的风险,提高了商用嵌入式系统的稳定性和安全性。

即使读取flash中的数据和cpu的公钥值,烧写进仿制板内,系统也是无法正常启动,对于商用的嵌入式系统的安全性起到了很好的保护作用,能有效的防止恶意抄板的行为。

以上结合附图详细说明了本申请的技术方案,本申请提出了一种基于mpsoc芯片的系统安全启动方法,包括:步骤1,根据系统芯片的全局唯一标识符,采用加密算法生成两组公钥,将两组公钥烧写入系统芯片,并熔断系统芯片的电可编程熔丝;步骤2,根据两组公钥,对初级引导程序进行加密和打包,记作一级引导程序,并根据一级引导程序,生成并烧写多级引导程序至系统启动存储介质中,其中,多级引导程序至少包括两级;步骤3,嵌入式系统上电后,根据全局唯一标识符,采用容错处理方法,对多级引导程序进行解密和逐级校验,并通过多级引导程序启动系统镜像文件和系统镜像备份文件中的一种。通过本申请中的技术方案,提高了嵌入式系统的安全性,极大降低了系统被抄板仿制的可能性。

本申请中的步骤可根据实际需求进行顺序调整、合并和删减。

本申请装置中的单元可根据实际需求进行合并、划分和删减。

尽管参考附图详地公开了本申请,但应理解的是,这些描述仅仅是示例性的,并非用来限制本申请的应用。本申请的保护范围由附加权利要求限定,并可包括在不脱离本申请保护范围和精神的情况下针对发明所作的各种变型、改型及等效方案。

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