安全启动方法及装置与流程

文档序号:11545475阅读:170来源:国知局
安全启动方法及装置与流程

本发明涉及安全技术领域,尤其涉及一种安全启动方法及装置。



背景技术:

设备从加电到完全运行的过程称为启动,启动一般有两种启动方式,一种为可信启动,另一种为安全启动。可信启动是对当前需要运行的启动项进行度量后,无论其是否安全都继续运行该启动项,然后将对启动项的度量结果通知验证方,由验证方评估所运行设备的安全状态。安全启动指除核度量信任根(corerootoftrustedmeasurement,crtm)之外,每次运行一个启动项之前,就对该启动项的安全性进行评估,只有在该启动项安全的情况下,才继续运行该启动项,否则,则拒绝运行并发出告警。

在2011年7月27日公开的公开号为102136044a的中国专利文献中公开了一种安全启动方法,其方案大致为:具有操作控制权的启动组件调用可信平台模块tpm中的解封装函数,所述解封装函数被调用以用于在所述具有操作控制权的启动组件运行时,获取当前所述具有操作控制权的启动组件所对应的平台配置寄存器pcr中的数值,在当前所述具有操作控制权的启动组件所对应的pcr中的数值与封装包中的pcr值匹配且封装包中具有用于解密下一个即将启动的加密组件的解密密钥时,向所述具有操作控制权的启动组件返回所述解密密钥;利用调用返回的解密密钥解密所述下一个即将启动的加密组件,并度量解密得到的启动组件,得到度量值,控制tpm将所述度量值与所述解密得到的启动组件所对应的pcr中的数值进行哈希运算,将哈希运算结果作为当前所述解密得到的启动组件所对应的pcr中的数值,将操作控制权移交给所述解密得到的启 动组件,返回执行步骤a,直到设备的启动组件全部启动完成。

该方案的基本思想是利用安全芯片以及密封、解密封思想,对启动组件进行解密与镜像度量,并将度量结果扩展到安全芯片的pcr寄存器,这实质上是通过数字签名的方式来保证启动的安全。由于安全芯片的密封和解密封操作使用标准的非对称加密算法,该算法规定解密数据长度不应大于秘钥长度,所以每次能够解密的数据小于150个字节,因此该方法可以保证启动镜像的正确性,但是有严重的效率问题。同时,如果每个启动镜像的度量值扩展到不同索引的pcr寄存器,就限制了系统启动链中的启动镜像数目不能大于平台中pcr寄存器的个数;如果将启动镜像的度量值扩展到平台的同一个pcr寄存器,虽然系统启动链中的启动镜像的数目不受约束,但是,该方案在系统升级时却面临严重的限制:因为启动链中的某一个镜像的升级将影响到启动链后面的所有镜像,必须对此后的每个启动镜像进行重新度量和扩展的操作验证,这种方案会使系统的升级流程异常繁琐。



技术实现要素:

本发明要解决的主要技术问题是,提供一种安全启动方法,用以解决现有技术中采用数字签名方式来启动时导致的启动效率低、系统升级流程复杂的技术问题。

为解决上述技术问题,本发明提供一种安全启动方法,其特征在于,包括:

启动链中上级启动项读取其下级启动项的启动镜像;

计算所述启动镜像的安全效验值;

通过非授权读的方式读取存储在安全芯片中所述启动镜像对应的标准效验值;

比对所述安全效验值和所述标准效验值,若所述安全效验值与所述标准效验值匹配,则启动所述下级启动项;否则,停止启动。

在本发明的一种实施例中,读取所述下级启动项的启动镜像包括:读取所述下级启动项的安装位置及大小。

在本发明的一种实施例中,所述安全芯片包括:可信密码模块或可信平台模块。

在本发明的一种实施例中,当所述安全芯片为可信密码模块时,计算所述启动镜像的安全效验值包括:根据国产密码哈希算法计算所述启动镜像的哈希值。

在本发明的一种实施例中,在所述上级启动项读取其下级启动项的启动镜像之前还包括:将所述下级启动项安装到磁盘的连续扇区。

在本发明的一种实施例中,还包括:在所述下级启动项初次部署或更新时,所述启动镜像的标准效验值被通过以授权写的方式存储在所述安全芯片中。

本发明还提供一种安全启动装置,包括安全芯片、启动链中的上级启动项和其下级启动项;

所述上级启动项包括:

镜像读取模块,用于读取所述下级启动项的启动镜像;

计算模块,用于计算所述启动镜像的安全效验值;

标准值读取模块,用于通过非授权读的方式读取存储在安全芯片中所述启动镜像对应的标准效验值;

控制模块,用于比对所述安全效验值和所述标准效验值,若所述安全效验值与所述标准效验值匹配,则启动所述下级启动项;否则,停止启动。

在本发明的一种实施例中,所述镜像读取模块读取的下级启动项的启动镜 像包括:读取所述下级启动项的安装位置及大小。

在本发明的一种实施例中,所述安全芯片包括:可信密码模块或可信平台模块。

在本发明的一种实施例中,当所述安全芯片为可信密码模块时,计算模块用于根据国产密码哈希算法计算所述启动镜像的哈希值。

在本发明的一种实施例中,还包括安装单元,用于在所述上级启动项读取其下级启动项的启动镜像之前,将所述下级启动项安装到磁盘的连续扇区。

在本发明的一种实施例中,还包括标准值存储单元,用于在所述下级启动项初次部署或更新时,将所述启动镜像的标准效验值以授权写的方式存储在所述安全芯片中。

本发明的有益效果是:

本发明提供的安全启动方法,建立让启动链中的上级启动项效验其下级启动项的安全的机制,将下级启动项的启动镜像的标准效验值存储在安全芯片中,当上级启动项效验下级启动项时,通过非授权读的方式从安全芯片中获取下级启动项对应的标准效验值,并将标准效验值与计算得到的下级启动项的启动镜像的安全效验值进行比对,通过安全效验值与标准效验值是否匹配来确定下级启动项的安全性。这种启动方式避免了现有技术中因使用解密封机制受到解密数据长度的限制而导致的启动效率低的技术问题。同时,本申请提出的安全启动方法中,在系统更新时只需将需要更新的启动项的标准效验值更新到安全芯片即可,并不会影响到其他不需要更新的启动项,简化了系统升级流程。

附图说明

图1为本发明实施例一提供的一种安全启动方法的流程图;

图2为本发明实施例一提供的grub更新流程图;

图3为本发明实施例一提供的内核更新流程图;

图4为本发明实施例一提供的根文件系统更新流程图;

图5为本发明实施例二提供的一种安全启动装置的装置示意图;

图6为本发明实施例二提供的另一种安全启动装置的装置示意图;

图7为本发明实施例二提供的另一种安全启动装置的装置示意图;

图8为图7中标准值存储单元示意图。

具体实施方式

为了是本发明的优点和细节更加清楚,下面通过具体实施方式结合附图对本发明作进一步详细说明。

实施例一:

本实施例重点阐述本发明提供的安全启动方法,请参考图1:

s101、启动链中上级启动项读取其下级启动项的启动镜像。

这里的启动链是虚拟的,它用来表征一种信任关系,启动链中的上级启动项可以信任其下级启动项,下级启动项也只有在上级启动项对其的效验通过后才能启动并获得操作权,例如在计算机系统中,bios(basicinputoutputsystem,基本输入输出系统)与grub(grandunifiedbootloader,系统引导程序)就属于上下级关系,grub的启动需要经过bios的效验,当bios对grub的效验通过后,grub获得操作权,继续对它的下级启动项进行效验工作,如此上级启动下级直至启动链中的所有启动项启动完成。

但是,值得注意的是,在本实施例提出的安全启动方法中,上级启动项与下级启动项并不一定是启动链中相邻的两个启动项,例如,本实施给出的一条 启动链为“bios-grub-内核-根文件系统”,从理论上来说,应当是由grub效验内核,再由内核效验根文件系统,当然,这种方式也是可行的,但在实际应用中,优选的做法却是由grub先效验内核,再效验根文件系统。

下级启动项的启动镜像包含一些关于下级启动项的信息,例如下级启动项的安装时间或是最新更新时间等,但较为优选的是下级启动项的安装位置和大小,这些信息是上级启动项计算下级启动项的安全效验值时必不可少的依据,同时当系统初次部署或是启动项更新时,存储到安全芯片中的标准效验值也必须根据启动镜像计算获得。

s102、计算所述启动镜像的安全效验值。

下级启动项的启动镜像的安全效验值是将读取到的启动镜像作为输入,根据某种算法得到的。常用的算法可以是对称加密算法、非对称加密算法、哈希算法,在本实施例中,优选采用哈希算法来计算安全效验值。

s103、通过非授权读的方式读取存储在安全芯片中所述启动镜像对应的标准效验值。

毫无疑义的是,获取标准效验值与读取镜像信息并计算安全效验值这两个过程之间并不存在时序关系,可以先读取镜像信息并计算安全效验值再获取标准效验值,也可以反过来,或者这两个过程同时进行也是可以的。

在本实施例中,安全芯片是包括可信密码模块(tcm:trustedcryptographymodule)和可信平台模块(tpm:trustedplatformmodule),可以理解的是,选用tcm作为安全芯片时,对应的存储在其上的启动镜像的标准效验值应当是依据国家密码局认定的国产密码算法,即商用密码中的哈希算法来计算哈希值,同样地,此时下级启动项的启动镜像的安全效验值也应当依据国产密码算法中的哈希算法计算。

存储在安全芯片中的标准效验值是在系统初次部署或是启动项更新之后,通过授权写的方式写入安全芯片中的,安全芯片中用来存储标准效验值的区域属于非变区域,其属性被定义为“读非授权,写授权”,即读取时不需要授权,但写入的时候需要得到授权。由于启动项的初次部署与更新类似,下面以启动项的更新流程对安装和更新的过程进行解释,请进一步结合图2-图4:

若待更新的启动项为grub,请参考图2:

s201、将grub烧写到磁盘特定连续扇区。

现有技术中是将mbr和grub的其余镜像分开安装到不同位置的方法,但在本实施例中,选择将grub的mbr和其余镜像烧写在连续扇区,同时去除grbu的stage1.5,由于stage1.5是用于识别、读取文件系统的,为了但是在某些时候,并不需要在启动时耗费另外的流程去读取文件系统,故在本示例中,更新grub启动项的时候并不安装stage1.5。

s202、从磁盘读取安装后的grub镜像。

应当理解的是,获取用于计算标准效验值的grub镜像时,应当读取安装后的grub镜像,不宜直接用编译得到的gurb镜像,而应该在安装后使用裸读磁盘的方式得到镜像作为计算标准效验值的输入。

s203、计算grub的标准效验值。

更新过程中计算标准效验值的方式与上述启动过程中的计算方式一致,这里就不再赘述。

s204、申请安全芯片的写权限,并将grub镜像的标准效验值更新到安全芯片中。

计算得到标准效验值后,向管理员发出申请,请求获取安全芯片的写权限,这里一般指的是获取安全芯片nv存储区的写权限,nv存储区是指非变存储区; 若管理员同意,将会在响应的时候会给出响应的授权数据,获得授权数据后将计算得到的标准效验值写入该存储区域,以供系统启动grub时以非授权读的方式使用。

若待更新的启动项为内核,请参考图3:

s301、安装内核;

s302、读取内核镜像;

s303、计算内核的标准效验值;

s304、申请安全芯片的写权限,并将内核镜像的标准效验值更新到安全芯片中。

若待更新的启动项为根文件系统,请参考图4:

s401、安装根文件系统;

s402、读取根文件系统镜像;

s403、计算根文件系统的标准效验值;

s404、申请安全芯片的写权限,并将根文件系统的标准效验值更新到安全芯片中。

上述s301、s401中计算标准效验值的过程同s203中一致,依据使用安全芯片类型而定,当使用tcm作为安全芯片存储标准效验值时,根据国产密码哈希算法计算所述启动镜像的哈希值。

s104、比对所述安全效验值和所述标准效验值,若所述安全效验值与所述标准效验值匹配,则启动所述下级启动项;否则,停止启动。

在启动过程中,当上级启动项获取到启动镜像的标准效验值与安全效验值之后,将两个值进行比对,若两个值匹配,就启动该下级启动项。优选地,这里所指的匹配就是安全效验值与标准效验值相同,二者相同说明启动项的安装 位置与大小与更新/初次部署之后没有差别,也就说明该启动项并未被篡改过,是值得信任的,也是可以启动的;若安全效验值与标准效验值不匹配,则发出告警,并停止启动。

可以理解的是,下级启动项在启动并获取到操作权之后,要对其下级启动项进行效验,这时候,上一个启动效验流程中的下级启动项在这一个启动效验流程中就是上级启动项了,也就是说,本实施例中所示的上级启动项和下级启动项只是相对的概念,并不是绝对的。

实施例二:

本实施例提供一种安全启动装置,如图5所示:

安全启动装置50包括安全芯片501、上级启动项502和下级启动项503,下级启动项503在启动链中位于上级启动项502之后,需要通过上级启动项502的效验才能启动。

上级启动项502包括镜像读取模块5021、计算模块5022、标准值读取模块5023以及控制模块5024。镜像读取模块5021用于读取下级启动项的启动镜像,计算模块5022用于计算启动镜像的安全效验值,标准值读取模块5023用于通过非授权读的方式读取存储在安全芯片中启动镜像对应的标准效验值,控制模块5024用于比对安全效验值和标准效验值,若安全效验值与标准效验值匹配,则启动下级启动项;否则,停止启动。

这里的启动链是虚拟的,它用来表征一种信任关系,启动链中的上级启动项可以信任其下级启动项,下级启动项也只有在上级启动项对其的效验通过后才能启动并获得操作权,例如在计算机系统中,bios(basicinputoutputsystem,基本输入输出系统)与grub(grandunifiedbootloader,系统引导程序)就属于上下级关系,grub的启动需要经过bios的效验,当bios对grub 的效验通过后,grub获得操作权,继续对它的下级启动项进行效验工作,如此上级启动下级直至启动链中的所有启动项启动完成。

但是,值得注意的是,上级启动项与下级启动项并不一定是启动链中相邻的两个启动项,例如,本实施给出的一条启动链为“bios-grub-内核-根文件系统”,从理论上来说,应当是由grub效验内核,再由内核效验根文件系统,当然,这种方式也是可行的,但在实际应用中,优选的做法却是由grub先效验内核,再效验根文件系统。

镜像读取模块5021读取的下级启动项的启动镜像包含关于下级启动项的信息,例如下级启动项的安装时间或是最新更新时间等,但较为优选的是下级启动项的安装位置和大小,这些信息是计算模块5022计算启动镜像的安全效验值时必不可少的依据,同时当系统初次部署或是启动项更新时,存储到安全芯片中的标准效验值也必须根据启动镜像计算获得。

计算模块5022在计算启动镜像的安全效验值时,是将该下级启动项的启动镜像作为输入,根据某种算法得到的。常用的算法可以是对称加密算法、非对称加密算法、哈希算法,在本实施例中,优选采用哈希算法来计算安全效验值。

毫无疑义的是,标准值读取模块5023获取标准效验值,与镜像读取模块5021读取镜像信息,并由计算模块5022计算安全效验值这两个过程之间并不存在时序关系,可以先分别由镜像读取模块5021和计算模块5022读取镜像信息并计算安全效验值再由标准值读取模块5023获取标准效验值,也可以反过来,或者这两个过程同时进行也是可以的。

在本实施例中,安全芯片是包括可信密码模块(tcm:trustedcryptographymodule)和可信平台模块(tpm:trustedplatformmodule),可以理解的是,选用tcm作为安全芯片时,对应的存储在其上的启动镜像对应的标准效验值应 当是依据国家密码局认定的国产密码算法,即商用密码中的哈希算法来计算哈希值,同样地,此时启动镜像的安全效验值也应当依据国产密码算法中的哈希算法计算。

存储在安全芯片中的标准效验值是在系统初次部署或是启动项更新之后,通过授权写的方式写入安全芯片中的,安全芯片中用来存储标准效验值的区域属于非变区域,其属性被定义为“读非授权,写授权”,即读取时不需要授权,但写入的时候需要得到授权。

当上级启动项获取到下级启动项的启动镜像的标准效验值与安全效验值之后,由控制模块5024对两个值进行比对,若两个值匹配,控制模块5024就启动该下级启动项。优选地,这里所指的匹配就是安全效验值与标准效验值相同,二者相同说明启动项的安装位置与大小与更新/初次部署之后没有差别,也就说明该启动项并未被篡改过,是值得信任的,也是可以启动的;若安全效验值与标准效验值不匹配,控制模块5024发出告警,并停止启动。

在本实施例提供的另一种安全启动装置中,如图6所示,安全启动装置50除了包括安全芯片501、上级启动项502和下级启动项503以外,还包括安装单元504。安装单元504用于在上级启动项502读取其下级启动项503的启动镜像之前,将下级启动项503安装到磁盘的连续扇区,这里的安装包括初次部署以及后续更新过程。

安装单元504用于将待安装的启动项安装到指定位置,值得注意的是,安装单元504在安装grub时,与现有安装方式存在很大的不同:现有技术中是将mbr和grub的其余镜像分开安装到不同位置的方法,但在本实施例中,选择将grub的mbr和其余镜像烧写在连续扇区,同时去除grbu的stage1.5,由于stage1.5是用于识别、读取文件系统的,但是在某些时候,并不需要在启动时 耗费另外的流程去读取文件系统,故在本示例中,安装单元504更新grub启动项的时候并不安装stage1.5。

本实施例还提供一种优选示例,如图7所示,安全启动装置50包括安全芯片501、上级启动项502、下级启动项503、安装单元504以及标准值存储单元505,标准值存储单元505用于在下级启动项503初次部署或更新时,将下级启动项503的启动镜像的标准效验值以授权写的方式存储在所述安全芯片中。

请参考图8,标准值存储单元505包括读取模块5051、标准值计算模块5052和写值模块5053。

读取模块5051用于读取安装后的启动项的启动镜像,启动镜像包括启动项的安装或最新更新时间、安装位置、大小等信息中的全部或部分,优选地,读取启动项的安装位置与大小信息,用于标准值计算模块5052计算出标准效验值,读取模块5051获取grub镜像时,应当读取安装后的grub镜像,不宜直接用编译得到的gurb镜像,而应该在安装后使用裸读磁盘的方式得到镜像作为计算标准效验值的输入。

标准值计算模块5052在计算出标准效验值之后,写值模块5053向管理员发出申请,请求获取安全芯片的写权限,这里一般指的是获取安全芯片nv存储区的写权限,nv存储区是指非变存储区;若管理员同意,将会在响应的时候会给出响应的授权数据,写值模块5053获得授权数据后将计算得到的标准效验值写入该存储区域,以供系统启动grub时以非授权读的方式使用。

可以理解的是,下级启动项在启动并获取到操作权之后,要对其下级启动项进行效验,这时候,上一个启动效验流程中的下级启动项在这一个启动效验流程中就是上级启动项了,也就是说,本实施例中所示的上级启动项和下级启动项只是相对的概念,并不是绝对的。

以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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