嵌入式设备安全启动的方法和装置的制造方法

文档序号:10725524阅读:393来源:国知局
嵌入式设备安全启动的方法和装置的制造方法
【专利摘要】本发明公开一种嵌入式设备安全启动的方法:S1、电启动存储了引导启动模块和应用模块的嵌入式设备;S2、运行所述引导启动模块并且对所述应用模块的数字签名进行验证;验证通过,执行S3,否则,执行S4;S3、加载并且运行所述应用模块,对所述引导启动模块的数字签名进行验证;验证通过,继续运行所述应用模块以驱使所述嵌入式设备正常运行,否则,执行S4;S4、驱使所述嵌入式设备停止运行。进一步地,还涉及一种嵌入式设备安全启动的装置,其包括:电开关单元,用于电启动所述嵌入式设备以及根据验证结果是否停止运行所述嵌入式设备;存储单元,用于存储引导启动模块和应用模块;第一验证单元,用于执行上述S2;第二验证单元,用于执行上述S3。
【专利说明】
嵌入式设备安全启动的方法和装置
技术领域
[0001]本发明涉及计算机领域,尤其涉及一种嵌入式设备安全启动的方法,以及应用该方法的嵌入式设备安全启动的装置。
【背景技术】
[0002]随着电子技术的飞速发展,以应用为中心的嵌入式系统在各行各业有了广泛的应用,如消费类电子、电信、医疗保健、测量与仪表等。
[0003]伴随着嵌入设备的广泛应用,嵌入式设备也面临更多的安全威胁。软件非法篡改与软件被运行在非授权嵌入式设备上已经逐渐成为威胁嵌入式设备安全的两种常见方式。
[0004]现有技术中,一种方式是基于硬件芯片支持,以全球唯一的芯片密钥作为校验条件,但是这个技术依赖于芯片,应用范围受限制,并且成本较高;另一种方式是将嵌入式系统分为BOOT启动代码和APP应用代码,利用BOOT启动代码对APP应用代码的合法性进行验证,但是若存在BOOT启动代码被非授权用户篡改的情况,该验证方法则无法识别,形成安全漏洞。

【发明内容】

[0005]本发明的目的是为克服现有技术的不足,提供一种成本低、安全性能高,可对BOOT启动代码和APP应用代码相互认证的方法,以及采用该方法的装置。
[0006]为达到以上技术目的,本发明采用的技术方案如下:
[0007]—种嵌入式设备安全启动的方法:
[0008]S1:电启动存储了引导启动模块和应用模块的嵌入式设备;
[0009]S2:运行所述引导启动模块并且对所述应用模块的数字签名进行验证;验证通过,执行S3,否则,执行S4;
[0010]S3:加载并且运行所述应用模块,对所述引导启动模块的数字签名进行验证;验证通过,继续运行所述应用模块以驱使所述嵌入式设备正常运行,否则,执行S4;
[0011 ] S4:驱使所述嵌入式设备停止运行。
[0012]具体地,所述引导启动模块的数字签名来源于对合法的引导启动模块的代码段和公钥进行运算并且通过私钥加密后得到。所述应用模块的数字签名来源于对合法的应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算并且通过私钥加密后得到。
[0013]优选地,所述引导启动模块的数字签名或所述应用模块的数字签名利用HASH函数运算后加密得到。
[0014]进一步地,S2中,所述引导启动模块对应用模块的数字签名的验证过程具体为:
[0015]S21:对当前应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算得到第一运算值;
[0016]S22:对所述应用模块的数字签名进行解密得到第一解密值;
[0017]S23:将所述第一运算值和第一解密值进行比对,比对成功,执行所述S3,否则,执行所述S4。
[0018]更进一步地,S3中,所述应用模块对引导启动模块的数字签名的验证过程具体为:
[0019]S31:对当前引导启动模块的代码段、公钥和所述引导启动模块的数字签名进行运算得到第二运算值;
[0020]S32:对所述引导启动模块的数字签名进行解密得到第二解密值;
[0021]S33:将所述第二运算值和第二解密值进行比对,对比成功,所述当前应用模块继续运行以驱使所述嵌入式设备正常运行,否则,执行所述S4。
[0022]优选地,所述第一运算值或第二运算值利用HASH函数运算得到。
[0023]—种嵌入式设备安全启动的装置,其包括:
[0024]电开关单元,用于电启动所述嵌入式设备以及根据验证结果控制所述嵌入式设备继续运行或停止运行;
[0025]存储单元,用于存储引导启动模块和应用模块;
[0026]第一验证单元,用于在电启动后运行所述引导启动模块并且对所述应用模块的数字签名进行验证;验证通过,运行下述第二验证单元,否则,驱使所述电开关单元停止运行所述嵌入式设备;
[0027]第二验证单元,用于加载并且运行所述应用模块,对所述引导启动模块的数字签名进行验证;验证通过,继续运行所述应用模块以驱使所述嵌入式设备正常运行,否则,驱使所述电开关单元停止运行所述嵌入式设备。
[0028]具体地,还包括数字签名生成模块,用于通过对合法的引导启动模块的代码段和公钥进行运算并且通过私钥加密后生成所述引导启动模块的数字签名,和/或通过对合法的应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算并且通过私钥加密后生成所述应用模块的数字签名。
[0029]优选地,所述数字签名生成模块利用HASH函数运算后加密得到所述引导启动模块的数字签名和/或所述应用模块的数字签名。
[0030]进一步地,所述第一验证单元包括:
[0031]第一运算模块,用于对当前应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算得到第一运算值;
[0032]第一解密模块,用于对所述应用模块的数字签名进行解密得到第一解密值;
[0033]第一比对模块,用于将所述第一运算值和第一解密值进行比对,比对成功,运行所述第二验证单元,否则,驱使所述电开关单元停止运行所述嵌入式设备。
[0034]更进一步地,所述第二验证单元包括:
[0035]第二运算模块,用于对当前引导启动模块的代码段、公钥和所述引导启动模块的数字签名进行运算得到第二运算值;
[0036]第二解密模块,用于对所述引导启动模块的数字签名进行解密得到第二解密值;
[0037]第二比对模块,用于将所述第二运算值和第二解密值进行比对,对比成功,所述当前应用模块继续运行以驱使所述嵌入式设备正常运行,否则,驱使所述电开关单元停止运行所述嵌入式设备。
[0038]优选地,所述第一运算模块利用HASH函数运算得到第一运算值,或所述第二运算模块利用HASH函数运算得到第二运算值。
[0039]与现有技术相比较,本发明具有如下优势:
[0040](I)本发明的嵌入式设备安全启动的方法和装置,采用数字签名认证体系,具有较高安全性,难于被没有获得私钥的非授权用户破解;
[0041](2)本发明的嵌入式设备安全启动的方法和装置,采用引导启动模块和应用模块双向认证方式,具有更高的安全启动性。
[0042](3)本发明的嵌入式设备安全启动的方法和装置,其基于软件运算,不需要对应的硬件支持,在应用上更灵活,使用成本更低。
【附图说明】
[0043]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为本发明嵌入式设备安全启动的方法的流程示意图。
[0045]图2为本发明嵌入式设备安全启动的方法和装置中引导启动模块和应用模块的组织结构示意图。
[0046]图3为本发明嵌入式设备安全启动的方法中引导启动模块对应用模块的数字签名的验证流程示意图。
[0047]图4为本发明嵌入式设备安全启动的方法中应用模块对引导启动模块的数字签名的验证流程示意图。
[0048]图5为本发明嵌入式设备安全启动的装置组织结构示意图。
【具体实施方式】
[0049]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0050]以下结合附图和【具体实施方式】对本发明作进一步详细描述。
[0051]参考图1,本发明的嵌入式设备安全启动的方法包括以下步骤:
[0052]S1、电启动嵌入式设备;
[0053]嵌入式设备主要由嵌入式处理器、相关支撑硬件和嵌入式软件组成,其集软硬件于一体,并且可独立工作。嵌入式设备具有便利灵活、性能价格比高、嵌入性强等特点,可以嵌入到现有任何信息家电和工业控制系统中;其中的嵌入式软件具有不可修改性、系统所需配置要求较低、系统专业性和实时性较强等特点。
[0054]所述嵌入式软件通常包括与硬件配置相关的模块和与具体实现该嵌入式设备功能相关的模块,所述与功能相关的模块通常为应用模块(或称为应用软件、应用代码、APP)。现有技术中,所述嵌入式设备在启动以正常运行之前会首先运行一个引导启动模块,用于初始化一些硬件或软件的设置,以便后续加载并运行所述应用模块。
[0055]为保证所述嵌入式设备启动的安全性,本发明将所述相互关联的引导启动模块和应用模块在该嵌入式设备在电启动之后、正常运行之前进行安全性验证。所述电启动是指该嵌入式设备的硬件在与外部电源连通的情况下进行启动。
[0056]参考图2,所述引导启动模块A由BOOT代码段A1、BOOT数据段A2、B00TBSS段A3、公钥(public key)A4和BOOT数字签名(boot-sign)A5组成。其中所述BOOT数字签名A5来源于对合法的引导启动模块的代码段和公钥进行HASH运算并且通过私钥加密后得到。
[0057]所述应用模块B由APP代码段B1、APP数据段B2、APP BSS段B3和APP数字签名(app-sign)B4组成。其中所述APP数字签名B4来源于对合法的应用模块的代码段、数据段和所述BOOT数字签名A5进行HASH运算并且通过私钥加密后得到。
[0058]S2、运行所述引导启动模块A并且对当前应用模块B的数字签名进行验证;
[0059]数字签名技术是将指定的摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的私钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
[0060]参考图2和图3,具体地,所述引导启动模块A对当前的应用模块B的数字签名的验证过程具体为:
[0061 ] S21:对当前应用模块B的APP代码段B1、APP数据段B2和BOOT数字签名A5进行HASH运算得到第一运算值01;
[0062]S22:对所述APP数字签名B4通过所述私钥进行解密得到第一解密值Dl;
[0063 ] S23:将所述第一运算值OI和第一解密值DI进行比对;
[0064]这里所述的对比,简单理解为比对所述第一运算值01和第一解密值Dl是否一致,也可以理解为所述第一运算值01和第一解密值Dl之间的比值是否为预设的值。
[0065]若所述第一运算值01和第一解密值Dl比对成功,说明当前的应用模块B是合法的,该应用模块B的内容没有被非法篡改,或者该应用模块B是被该嵌入式设备的授权运行的,因此继续执行下述S3;否则,执行下述S4。
[0066]S3、加载并且运行所述应用模块B,对当前的引导启动模块A的数字签名进行验证;
[0067]当所述应用模块B通过上述步骤的验证后,所述引导启动模块A便对该所述应用模块B进行加载,使得该应用模块B能够在该嵌入式设备中运行。
[0068]参考图2和图4,进一步地,所述引导启动模块A还需要对当前的应用模块B的数字签名的进行验证,具体过程为:
[0069]S31:对当前引导启动模块A的BOOT代码段Al、公钥A4和BOOT数字签名A5进行HASH运算得到第二运算值02;
[0070]S32:对所述BOOT数字签名A5通过所述私钥进行解密得到第二解密值D2;
[0071 ] S33:将所述第二运算值02和第二解密值D2进行比对;
[0072]这里所述的比对跟上文的含义相同。若所述第二运算值02和第二解密值D2比对成功,说明当前的引导启动模块A是合法的,该引导启动模块A的内容没有被非法篡改,或者该引导启动模块A是被该嵌入式设备授权运行的,因此所述当前应用模块B将继续运行以驱使所述嵌入式设备正常运行;否则,执行下述S4。
[0073]S4:驱使所述嵌入式设备停止运行。
[0074]如上所述,无论在所述引导启动模块A对所述应用模块B的数字签名进行验证的过程中,或者所述引导启动模块A对所述应用模块B的数字签名进行验证的过程中,只要其中一次验证过程的比对不成功,该嵌入式设备都将停止运行,以保证该嵌入式设备的安全。
[0075]可选择地,该嵌入式设备在当前一轮安全验证失败之后进一步设定在预设的条件下重新运行所述引导启动模块A,再进行新一轮的安全验证过程,用以排除上一轮安全验证中可能发生的错误。所述预设的条件可以是重新通电进行电启动之后,可以是在通电状态下停止运行预定的时间之后,或者是本领域技术人员常用的其他技术手段。
[0076]进一步地,上述嵌入式设备安全启动的方法所对应的步骤可由相应的功能单元逐一实现,并且多个所述功能单元组成嵌入式设备安全启动的装置,所述功能单元可以集成在一个处理模块中,也可以是各个单独的物理存在,也可以是两个或两个以上的功能单元集成在一个或多个处理模块中。所述嵌入式设备安全启动的装置优选采用软件形式实现,但当其采用硬件形式实现时也不背离本发明的设计原理。当所述嵌入式设备安全启动的装置以软件形式实现并且作为独立的产品进行销售或使用时,也可以存储在一个计算机可读取的存储介质中。
[0077]参考图1和图5,以所述软件形式的嵌入式设备安全启动的装置为例,该嵌入式设备安全启动的装置包括:
[0078]电开关单元I,用于电启动所述嵌入式设备以及根据验证结果控制所述嵌入式设备继续运行或停止运行。
[0079]存储单元4,用于存储所述引导启动模块A和应用模块B;根据嵌入式设备及其软件的特点,所述存储单元4通常以闪存作为其硬件支持,以持久存储所述嵌入式软件以及其他信息,当该嵌入式设备在重新引导启动时不会擦除其中的内容。
[0080]第一验证单元2,用于在电启动后运行所述引导启动模块A并且对所述应用模块B的数字签名进行验证;验证通过,运行下述第二验证单元3,否则,驱使所述电开关单元I停止运行所述嵌入式设备。
[0081 ]具体地,所述第一验证单元2包括:第一运算模块21,用于从所述存储单元4中读取所述引导启动模块A和应用模块B的信息,并且对当前应用模块B的APP代码段B1、APP数据段B2和所述BOOT数字签名A5进行HASH运算得到所述第一运算值01;第一解密模块22,用于从所述存储单元4中读取所述APP数字签名B4,并且对该APP数字签名B4通过所述私钥进行解密得到所述第一解密值Dl;第一比对模块23,用于将所述第一运算值01和第一解密值Dl进行比对,比对成功,运行所述第二验证单元3,否则,驱使所述电开关单元I停止运行所述嵌入式设备。
[0082]第二验证单元3,用于加载并且运行所述应用模块B,对所述引导启动模块A的数字签名进行验证;验证通过,继续运行所述应用模块B以驱使所述嵌入式设备正常运行,否则,驱使所述电开关单元I停止运行所述嵌入式设备。
[0083]具体地,所述第二验证单元3包括:第二运算模块31,用于从所述存储单元4中读取所述引导启动模块A和应用模块B的信息,并且对当前引导启动模块A的BOOT代码段Al、公钥和所述BOOT数字签名A5进行HASH运算得到所述第二运算值02;第二解密模块32,用于从所述存储单元4中读取所述BOOT数字签名A5,并且对该BOOT数字签名A5通过私钥进行解密得到第二解密值D2;第二比对模块33,用于将所述第二运算值D2和第二解密值02进行比对,对比成功,所述当前应用模块B继续运行以驱使所述嵌入式设备正常运行,否则,驱使所述电开关单元I停止运行所述嵌入式设备。
[0084]优选地,该嵌入式设备安全启动的装置还可以包括数字签名生成模块,用于生成所述引导启动模块的数字签名,和/或生成所述应用模块的数字签名。本领域技术人员通过常规技术手段所获得的所述引导启动模块的数字签名和所述应用模块的数字签名通过公知方式导入到该嵌入式设备安全启动装置中使用也不背离本发明的实质。
[0085]综上所述,本发明嵌入式设备安全启动的方法和装置安装及使用成本低,安全性能高,更适于广泛应用。
[0086]上述实施例为本发明较佳的实施方式,但并不仅仅受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,均包含在本发明的保护范围之内。
[0087]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0088]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0089]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0090]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0091]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种嵌入式设备安全启动的方法,其特征在于: S1:电启动存储了引导启动模块和应用模块的嵌入式设备; S2:运行所述引导启动模块并且对所述应用模块的数字签名进行验证;验证通过,执行S3,否则,执行S4; S3:加载并且运行所述应用模块,对所述引导启动模块的数字签名进行验证;验证通过,继续运行所述应用模块以驱使所述嵌入式设备正常运行,否则,执行S4; S4:驱使所述嵌入式设备停止运行。2.如权利要求1所述的嵌入式设备安全启动的方法,其特征在于:所述引导启动模块的数字签名来源于对合法的引导启动模块的代码段和公钥进行运算并且通过私钥加密后得到。3.如权利要求2所述的嵌入式设备安全启动的方法,其特征在于:所述应用模块的数字签名来源于对合法的应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算并且通过私钥加密后得到。4.如权利要求2或3所述的嵌入式设备安全启动的方法,其特征在于:所述引导启动模块的数字签名或所述应用模块的数字签名利用HASH函数运算后加密得到。5.如权利要求3所述的嵌入式设备安全启动的方法,其特征在于,S2中,所述引导启动模块对应用模块的数字签名的验证过程具体为: S21:对当前应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算得到第一运算值; S22:对所述应用模块的数字签名进行解密得到第一解密值; S23:将所述第一运算值和第一解密值进行比对,比对成功,执行所述S3,否则,执行所述S4。6.如权利要求5所述的嵌入式设备安全启动的方法,其特征在于,S3中,所述应用模块对引导启动模块的数字签名的验证过程具体为: S31:对当前引导启动模块的代码段、公钥和所述引导启动模块的数字签名进行运算得到第二运算值; S32:对所述引导启动模块的数字签名进行解密得到第二解密值; S33:将所述第二运算值和第二解密值进行比对,对比成功,所述当前应用模块继续运行以驱使所述嵌入式设备正常运行,否则,执行所述S4。7.如权利要求5或6所述的嵌入式设备安全启动的方法,其特征在于:所述第一运算值或第二运算值利用HASH函数运算得到。8.一种嵌入式设备安全启动的装置,其特征在于,其包括: 电开关单元,用于电启动所述嵌入式设备以及根据验证结果控制所述嵌入式设备继续运行或停止运行; 存储单元,用于存储引导启动模块和应用模块; 第一验证单元,用于在电启动后运行所述引导启动模块并且对所述应用模块的数字签名进行验证;验证通过,运行下述第二验证单元,否则,驱使所述电开关单元停止运行所述嵌入式设备; 第二验证单元,用于加载并且运行所述应用模块,对所述引导启动模块的数字签名进行验证;验证通过,继续运行所述应用模块以驱使所述嵌入式设备正常运行,否则,驱使所述电开关单元停止运行所述嵌入式设备。9.如权利要求8所述的嵌入式设备安全启动的装置,其特征在于:还包括数字签名生成模块,用于通过对合法的引导启动模块的代码段和公钥进行运算并且通过私钥加密后生成所述引导启动模块的数字签名,和/或通过对合法的应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算并且通过私钥加密后生成所述应用模块的数字签名。10.如权利要求9所述的嵌入式设备安全启动的装置,其特征在于:所述数字签名生成模块利用HASH函数运算后加密得到所述引导启动模块的数字签名和/或所述应用模块的数字签名。11.如权利要求9所述的嵌入式设备安全启动的装置,其特征在于,所述第一验证单元包括: 第一运算模块,用于对当前应用模块的代码段、数据段和所述引导启动模块的数字签名进行运算得到第一运算值; 第一解密模块,用于对所述应用模块的数字签名进行解密得到第一解密值; 第一比对模块,用于将所述第一运算值和第一解密值进行比对,比对成功,运行所述第二验证单元,否则,驱使所述电开关单元停止运行所述嵌入式设备。12.如权利要求11所述的嵌入式设备安全启动的装置,其特征在于,所述第二验证单元包括: 第二运算模块,用于对当前引导启动模块的代码段、公钥和所述引导启动模块的数字签名进行运算得到第二运算值; 第二解密模块,用于对所述引导启动模块的数字签名进行解密得到第二解密值; 第二比对模块,用于将所述第二运算值和第二解密值进行比对,对比成功,所述当前应用模块继续运行以驱使所述嵌入式设备正常运行,否则,驱使所述电开关单元停止运行所述嵌入式设备。13.如权利要求11或12所述的嵌入式设备安全启动的装置,其特征在于:所述第一运算模块利用HASH函数运算得到第一运算值,或所述第二运算模块利用HASH函数运算得到第二运算值。
【文档编号】G06F21/57GK106096420SQ201610423928
【公开日】2016年11月9日
【申请日】2016年6月15日 公开号201610423928.X, CN 106096420 A, CN 106096420A, CN 201610423928, CN-A-106096420, CN106096420 A, CN106096420A, CN201610423928, CN201610423928.X
【发明人】游侃民
【申请人】京信通信技术(广州)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1