一种运行引导程序的方法及装置与流程

文档序号:15624605发布日期:2018-10-09 22:40阅读:207来源:国知局
本发明涉及计算机控制
技术领域
,尤其涉及一种运行引导程序的方法及装置。
背景技术
:目前,嵌入式系统中,设备一般从外部存储设备中读取引导程序boot程序,启动引导程序。直接焊接在设备中的外部存储设备,若外部存储设备中的程序不加任何防护,黑客可以利用系统的漏洞,获取到boot程序,亦可焊下存储设备flash,通过其他设备暴力读取flash中的boot程序,反汇编分析boot程序并修改boot程序,再次写入flash。为保护boot程序不被损坏,现有技术往往对boot程序进行加密处理,处理器启动时,需先对boot程序进行解密,再运行boot程序。对boot程序进行加密处理,需要额外的存储设备用来存储解密的密钥,势必需要额外增加设备成本。技术实现要素:本发明要解决的技术问题是提供一种运行引导程序的方法,利用此方法实现boot程序加密密钥在不需要额外存储器的情况下的加密存储,进一步降低设备成本、提高设备性能。本发明提供的技术方案如下:一种运行引导程序的方法,所述方法包括:从外部存储器中第一存储区域读取加密过的第一密钥;利用与所述第一密钥对应的第二密钥对所述加密过的第一密钥进行解密,得到所述第一密钥;从所述外部存储器中第二存储区域读取加密过的引导程序的版本头;利用所述第一密钥对所述加密过的引导程序的版本头进行解密,得到所述引导程序的版本头;从所述外部存储器中第三存储区域存储的引导程序中读取部分数据,并计算所述部分数据的第一校验值;如果所述部分数据的第一校验值与所述版本头中第一预定位置的第二校验值相同,则根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密;运行所述引导程序的部分数据。进一步地,所述运行引导程序的方法中,所述从所述外部存储器中第三存储区域存储的引导程序中读取部分数据,并计算所述部分数据的第一校验值的步骤之前,所述方法还包括:根据所述版本头的第三预定位置的第三校验值,和/或所述版本头的第四预定位置的第四校验值,判断所述版本头是否有效;如果所述第三校验值与第一预定值相同,和/或所述第四校验值与第二预定值相同,则判断结果为所述版本头有效。进一步地,所述运行引导程序的方法中,所述根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密包括:根据所述版本头的第五预定位置的第五校验值,判断所述外部存储器中第三存储区域存储的引导程序是否加密;如果所述外部存储器中第三存储区域存储的引导程序加密,根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密。进一步地,所述运行引导程序的方法中,所述方法还包括:从所述外部存储器中第三存储区域存储的引导程序中读取引导程序数据,并计算所述引导程序数据的第六校验值;如果所述引导程序数据的第六校验值与所述版本头中第六预定位置的第七校验值相同,进一步判断所述外部存储器中第三存储区域存储的所述引导程序是否加密;如果所述外部存储器中第三存储区域存储的引导程序未加密,运行所述引导程序;如果所述外部存储器中第三存储区域存储的引导程序加密,根据所述版本头中第二预定位置的第三密钥对所述引导程序进行解密后,运行所述引导程序。进一步地,所述运行引导程序的方法中,所述加密过的引导程序的版本头包括:存放于第一预定位置的第二校验值;存放于第二预定位置的第三密钥;存放于第三预定位置的第三校验值;存放于第四预定位置的第四校验值;存放于第五预定位置的第五校验值;以及,存放于第六预定位置的第七校验值。此外,本发明还涉及一种运行引导程序的装置,所述装置包括:第一读取模块,用于从外部存储器中第一存储区域读取加密过的第一密钥;第一解密模块,用于利用与所述第一密钥对应的第二密钥对所述加密过的第一密钥进行解密,得到所述第一密钥;第二读取模块,用于从所述外部存储器中第二存储区域读取加密过的引导程序的版本头;第二解密模块,用于利用所述第一密钥对所述加密过的引导程序的版本头进行解密,得到所述引导程序的版本头;第一处理模块,用于从所述外部存储器中第三存储区域存储的引导程序中读取部分数据,并计算所述部分数据的第一校验值;第三解密模块,用于当所述第一处理模块计算所述部分数据的第一校验值与所述版本头中第一预定位置的第二校验值相同时,所述第三解密模块根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密;程序运行模块,用于运行所述引导程序的部分数据。进一步地,所述运行引导程序的装置中,所述装置还包括:第一校验模块,所述第一校验模块用于根据所述版本头的第三预定位置的第三校验值,和/或所述版本头的第四预定位置的第四校验值,判断所述版本头是否有效;如果所述第三校验值与第一预定值相同,和/或所述第四校验值与第二预定值相同,则判断结果为所述版本头有效。进一步地,所述运行引导程序的装置中,所述装置还包括:第二校验模块,所述第二校验模块用于根据所述版本头的第五预定位置的第五校验值,判断所述外部存储器中第三存储区域存储的引导程序是否加密;如果所述外部存储器中第三存储区域存储的引导程序加密,所述第三解密模块根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密。进一步地,所述运行引导程序的装置中,所述装置还包括:第三读取模块,用于从所述外部存储器中第三存储区域存储的引导程序中读取引导程序数据,并计算所述引导程序数据的第六校验值;第三校验模块,所述第三校验模块用于当所述引导程序数据的第六校验值与所述版本头中第六预定位置的第七校验值相同时,进一步判断所述外部存储器中第三存储区域存储的所述引导程序是否加密;如果所述第三校验模块判断所述外部存储器中第三存储区域存储的引导程序未加密,所述程序运行模块运行所述引导程序;第四解密模块,用于当所述第三校验模块判断所述外部存储器中第三存储区域存储的引导程序加密时,根据所述版本头中第二预定位置的第三密钥对所述引导程序进行解密,所述引导程序进行解密后,所述程序运行模块运行所述引导程序。进一步地,所述运行引导程序的装置中,所述第二存储区域包括:第一预定位置,用于存放第二校验值;第二预定位置,用于存放第三密钥;第三预定位置,用于存放第三校验值;第四预定位置,用于存放第四校验值;第五预定位置,用于存放第五校验值;以及,第六预定位置,用于存放第七校验值。本发明所带来的有益效果如下:本发明实施例所提供的一种运行引导程序的方法及装置,通过设备中央处理器cpu与外部存储器的数据相互配合,实现boot程序加密密钥的加密存储。利用此方法本发明实施例技术方案,可以实现boot程序加密密钥在不需要额外存储器的情况下的加密存储,从而进一步降低设备成本、进一步提高设备性能。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1表示本发明实施例提供的一种运行引导程序的方法的流程图;图2表示本发明实施例提供的外部存储器结构示意图;图3表示本发明实施例提供的另一种运行引导程序的方法的流程图;图4表示本发明实施例涉及的引导程序的版本头的结构示意图;图5表示本发明实施例提供的运行引导程序的装置的结构示意图。具体实施方式下面将结合具体的实施例和附图,对本发明作进一步的详细说明。所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图1,图1是本发明实施例提供的一种运行引导程序的方法的流程图,如图1所示,所述方法包括:s101、从外部存储器中第一存储区域读取加密过的第一密钥。本发明实施例中,加密过的第一密钥存储于外部存储器中的第一存储区域,而不需要额外存储器,有利于降低设备成本、进一步提高设备性能。参见图2,图2是本发明实施例提供的外部存储器结构示意图,如图2所示,所述外部存储器包括:第一存储区域110、第二存储区域120、第三存储区域130。其中,第一存储区域110用于存储加密过的密钥信息,如rsa公钥;第二存储区域120用于存储加密过的版本头;第三存储区域用于存储加密过的boot程序版本。s102、利用与所述第一密钥对应的第二密钥对所述加密过的第一密钥进行解密,得到所述第一密钥。本发明实施例中,通过对所述加密过的密钥进行解密得到所述第一密钥。其中,所述第一密钥可以为rsa-2048公钥,其数据格式如表1所示。表1第一密钥数据格式偏移,单位:字节含义0~3密钥类型,0-rsa20484~7crc328~511存放原始密钥s103、从所述外部存储器中第二存储区域读取加密过的引导程序的版本头。s104、利用所述第一密钥对所述加密过的引导程序的版本头进行解密,得到所述引导程序的版本头。本发明实施例中,通过利用所述第一密钥对加密过的引导程序的版本头进行解密,得到所述引导程序的版本头,如表2所示。其中,所述引导程序的版本头主要包括用于对所述引导程序解密的密钥,以及用于判断所述引导程序相关状态的系列校验值。表2版本头格式s105、从所述外部存储器中第三存储区域存储的引导程序中读取部分数据,并计算所述部分数据的第一校验值。s106、判断部分数据的第一校验值与所述版本头中第一预定位置的第二校验值相同,如果是,则进入s107;否则,进入s109;s107、根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密,然后进入s108。s108、运行所述引导程序的部分数据。s109、启动失败,输出出错信息。本发明实施例中,所述部分数据可以为所述引导程序的头8k数据,所述部分数据第一校验值可以为用于判断所述部分数据状态是否完整的所述部分数据哈希hash值。应当理解的是,所述部分数据可以为所述引导程序的头8k数据,但并不局限于所述引导程序的头8k数据,可以根据需要在所述引导程序的数据中进行选取。当所述部分数据的第一校验值与所述版本头中第一预定位置的第二校验值相同时,判定所述部分数据状态完整,根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密,运行所述引导程序的部分数据。当所述部分数据的第一校验值与所述版本头中第一预定位置的第二校验值不同时,判定所述部分数据状态完整、所述部分数据被破坏,不运行所述引导程序,启动失败。进一步地,所述运行引导程序的方法中,所述利用所述第一密钥对所述加密过的引导程序的版本头进行解密,得到所述引导程序的版本头的步骤之前,所述方法还包括:根据所述版本头的第三预定位置的第三校验值,和/或所述版本头的第四预定位置的第四校验值,判断所述版本头是否有效;如果所述第三校验值与第一预定值相同,和/或所述第四校验值与第二预定值相同,则判断结果为所述版本头有效。本发明实施例中,如表2所示,所述版本头的第三预定位置的第三校验值和所述第四预定位置的第四校验值为magic值和循环冗余校验值crc32值。所述magic值为0x626f6f74,且所述第8~255字节数据的循环冗余校验值crc32值等于第4~7字节crc32值时,判断所述版本头有效。当判断所述版本头有效时,进一步执行s104;当判断所述版本头无效时,不运行所述引导程序,启动失败。进一步地,所述运行引导程序的方法中,所述根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密的步骤之前,所述方法还包括:根据所述版本头的第五预定位置的第五校验值,判断所述外部存储器中第三存储区域存储的引导程序是否加密;如果所述外部存储器中第三存储区域存储的引导程序加密,根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密。本发明实施例中,如表2所示,所述版本头的第五预定位置的第五校验值为标志flag,采用所述判断flag的值判断所述引导程序是否加密。若所述引导程序未加密,直接运行所述引导程序的部分数据;若所述引导程序加密,则据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密,然后运行所述引导程序的部分数据。其中,flag的加密方式如表3所示。表3flag的加密方式00不加密01aes-12810reserved11reserved进一步地,如图3所示,图3是本发明实施例提供的另一种运行引导程序的方法的流程图,其中s101至s109同前所述,所述方法还包括:s201、从所述外部存储器中第三存储区域存储的引导程序中读取引导程序数据,并计算所述引导程序数据的第六校验值;s202、如果所述引导程序数据的第六校验值与所述版本头中第六预定位置的第七校验值相同,进一步判断所述外部存储器中第三存储区域存储的所述引导程序是否加密;s203、如果所述外部存储器中第三存储区域存储的引导程序加密,进行s204;否则,进行s205。s204、根据所述版本头中第二预定位置的第三密钥对所述引导程序进行解密。s205、运行所述引导程序。进一步地,图4是本发明实施例涉及的引导程序的版本头结构组成示意图,如图4所示,所述运行引导程序的方法中,所述加密过的引导程序的版本头包括:存放于第一预定位置的第二校验值301;存放于第二预定位置的第三密钥302;存放于第三预定位置的第三校验值303;存放于第四预定位置的第四校验值304;存放于第五预定位置的第五校验值305;以及,存放于第六预定位置的第七校验值306。此外,本发明实施例还包括一种运行引导程序的装置,图5是本发明实施例所提供的运行引导程序的装置的结构示意图,如图5所示,所述装置包括:第一读取模块501,用于从外部存储器中第一存储区域读取加密过的第一密钥;第一解密模块502,用于利用与所述第一密钥对应的第二密钥对所述加密过的第一密钥进行解密,得到所述第一密钥;第二读取模块503,用于从所述外部存储器中第二存储区域读取加密过的引导程序的版本头;第二解密模块504,用于利用所述第一密钥对所述加密过的引导程序的版本头进行解密,得到所述引导程序的版本头;第一处理模块505,用于从所述外部存储器中第三存储区域存储的引导程序中读取部分数据,并计算所述部分数据的第一校验值;第三解密模块506,用于当所述第一处理模块计算所述部分数据的第一校验值与所述版本头中第一预定位置的第二校验值相同时,所述第三解密模块根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密;程序运行模块507,用于运行所述引导程序的部分数据。进一步地,如图5所示,所述运行引导程序的装置中,所述装置还包括:第一校验模块601,所述第一校验模块601用于根据所述版本头的第三预定位置的第三校验值,和/或所述版本头的第四预定位置的第四校验值,判断所述版本头是否有效;如果所述第三校验值与第一预定值相同,和/或所述第四校验值与第二预定值相同,则判断结果为所述版本头有效。进一步地,如图5所示,所述运行引导程序的装置中,所述装置还包括:第二校验模块602,所述第二校验模块602用于根据所述版本头的第五预定位置的第五校验值,判断所述外部存储器中第三存储区域存储的引导程序是否加密;如果所述外部存储器中第三存储区域存储的引导程序加密,所述第三解密模块506根据所述版本头中第二预定位置的第三密钥对所述引导程序的部分数据进行解密。进一步地,如图5所示,所述运行引导程序的装置中,所述装置还包括:第三读取模块603,用于从所述外部存储器中第三存储区域存储的引导程序中读取引导程序数据,并计算所述引导程序数据的第六校验值;第三校验模块604,所述第三校验模块604用于当所述引导程序数据的第六校验值与所述版本头中第六预定位置的第七校验值相同时,进一步判断所述外部存储器中第三存储区域存储的所述引导程序是否加密;如果所述第三校验模块判断所述外部存储器中第三存储区域存储的引导程序未加密,所述程序运行模块507运行所述引导程序;第四解密模块605,用于当所述第三校验模块604判断所述外部存储器中第三存储区域存储的引导程序加密时,根据所述版本头中第二预定位置的第三密钥对所述引导程序进行解密,所述引导程序进行解密后,所述程序运行模块507运行所述引导程序。进一步地,所述运行引导程序的装置中,所述第二存储区域包括:第一预定位置,用于存放第二校验值;第二预定位置,用于存放第三密钥;第三预定位置,用于存放第三校验值;第四预定位置,用于存放第四校验值;第五预定位置,用于存放第五校验值;以及,第六预定位置,用于存放第七校验值。应理解的是在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。在本申请所提供的几个实施例中,应该理解到,所揭露方法和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。以上所述仅为解释本发明的较优实施例,并非对本发明做任何形式上的限制。凡在相同的发明精神下所作出的有关本发明的任何修饰或变更,都应仍然包括在本发明意图保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1