CN113609529B - 一种计算机固件安全供应的方法、系统 - Google Patents

一种计算机固件安全供应的方法、系统 Download PDF

Info

Publication number
CN113609529B
CN113609529B CN202110808790.6A CN202110808790A CN113609529B CN 113609529 B CN113609529 B CN 113609529B CN 202110808790 A CN202110808790 A CN 202110808790A CN 113609529 B CN113609529 B CN 113609529B
Authority
CN
China
Prior art keywords
firmware
certificate
integrity information
information
integrity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110808790.6A
Other languages
English (en)
Other versions
CN113609529A (zh
Inventor
许鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202110808790.6A priority Critical patent/CN113609529B/zh
Publication of CN113609529A publication Critical patent/CN113609529A/zh
Application granted granted Critical
Publication of CN113609529B publication Critical patent/CN113609529B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates

Abstract

本发明提供一种计算机固件安全供应的方法、系统,所述方法包括如下步骤:生成固件的同时生成固件各部分的完整性信息;导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根;使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限;固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。计算机用户可使用该信息作为完整性验证的基准值。同时,证书验证机制、固件完整性验证机制确保了该完整性信息的可靠。

Description

一种计算机固件安全供应的方法、系统
技术领域
本发明涉及计算机安全技术领域,具体涉及一种计算机固件安全供应的方法、系统。
背景技术
固件是计算机最底层的程序,负责计算机各种设备(比如网卡、显卡等)的初始化工作,同时设备的各种特性(比如处理器的虚拟化、超频等功能)的关闭/使能也多由固件负责。计算机启动后,固件程序常驻内存,可为操作系统提供设备管理的接口。
目前,检测固件完整性常常使用可信计算中的度量链技术,即在计算机启动过程中计算各个组件(如固件、BootLoader、OS内核)等的完整性信息,建立度量链,在操作系统启动前将本次启动的度量链与基准值对比,判断各个组件是否遭到篡改。
可信计算中度量链技术解决了完整性验证的问题,但没有解决完整性基准值可信赖性的问题,固件发布时,会提供固件安装包的签名值,刷写固件时会使用数字签名验签的方式验证固件文件的完整性。固件完整性验证技术是为了确保固件文件的本身的有效性及合法性,该完整性信息只在固件刷写阶段有效,且只有固件刷写程序可以使用该完整性信息,刷写完毕后不再保存,因此无法向计算机用户提供基准值。
发明内容
针对完整性信息只在固件刷写阶段有效,且只有固件刷写程序可以使用该完整性信息,刷写完毕后不再保存,无法向计算机用户提供基准值以及解决验证基准值的可信赖性的问题,本发明提供一种计算机固件安全供应的方法、系统。
一方面,本发明技术方案提供一种计算机固件安全供应的方法,包括如下步骤:
生成固件的同时生成固件各部分的完整性信息;
导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根;
使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限;
固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。
固件各部分包括各固件卷及平台组件;
计算机厂商生成固件时,除了对固件签名外,还要同步生成固件卷及平台组件的完整性信息,为确保该完整性信息的可信赖性,由计算机厂商使用自身的私钥对其签名。完整性信息和固件文件同步发布,刷写固件时同时刷入固件的完整性信息。为保证固件完整性信息的安全性,将完整性信息存放到可信根中并限制读写权限,确保所有用户可以方便读取其中的内容作为验证基准值,但只有指定对象具备写入内容的权限。
为了确保该固件完整性信息与当前固件匹配,同时确保固件未被篡改,每次固件运行时基于该完整性信息验证当前固件是否被恶意篡改。
进一步的,所述的生成固件的同时生成固件各部分的完整性信息的步骤包括:
读取固件文件并获取固件信息;
获取固件卷以及平台组件的偏移信息;
根据获取的偏移信息将固件文件进行分割;
计算分割出的平台组件以及每个固件卷的摘要值,生成摘要值列表;
读取厂商的私钥及对应的数字证书并计算证书摘要值;
使用私钥对固件信息、证书摘要值、摘要值列表进行签名生成签名值;
使用数字证书对签名值进行验证;本步骤中,为了确保签名使用的私钥和数字证书匹配,防止因误操作导致的私钥与数字证书不一致,导致后续设备出厂后需要重新刷写完整性信息;
签名值验证通过后,将固件信息、证书摘要值、摘要值列表以及签名值组成完整性信息。
进一步的,所述的获取固件卷以及平台组件的偏移信息的步骤中,获取固件卷的偏移信息的步骤包括:
获取固件的编译信息;
通过固件的编译信息获取各个固件卷在固件文件中的偏移地址。
固件完整性信息是由计算机厂商发布固件时同步生成的各个固件卷及平台组件的完整性值列表,同时,为标识该完整性信息对应的固件版本及签名密钥,完整性信息文件中还包含了固件厂商、固件版本、验签证书摘要值等信息。
进一步的,所述的根据获取的偏移信息将固件文件进行分割的步骤包括:
基于获取的偏移地址将固件文件分割成独立的固件卷文件;
基于获取的平台组件的偏移信息将固件文件中平台组件的文件分割出来。
进一步的,所述的导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根的步骤包括:
导入厂商证书;
验证导入的证书的格式;
导入的证书格式正确时,检测可信根中是否存在证书;
若是,验证导入的证书的合法性;
导入的证书合法时,清除可信根中的证书,写入导入的证书;
若否,将导入的证书写入可信根中。
进一步的,所述的将导入的证书写入可信根中的步骤具体包括:
在可信根创建存储空间;
将导入的证书写入创建的存储空间,并设置存储空间的读写权限。
证书用于验证完整性信息文件的有效性及合法性,证书由计算机厂商刷写到每一台设备的可信根中,而不是集成到刷写工具,这样就能保证该证书不会被随意替换。同时,对于证书的更新操作,限制只有厂商发布的证书才能替换原有的证书,确保验签证书不会被恶意替换。
进一步的,所述的使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限的步骤包括:
获取可信根中的证书;
验证完整性信息与获取的证书是否匹配;
当完整性信息与证书匹配时,使用匹配的证书验证完整性信息的合法性;
当验证完整性信息合法时,判断可信根中是否存在完整性信息存储空间;
若是,将完整性信息写入完整性信息存储空间,否则,在可信根中创建完整性信息存储空间,设置开放完整性信息存储空间的读权限,限制写权限,将完整性信息写入完整性信息存储空间。
进一步的,所述的验证完整性信息与获取的证书是否匹配的步骤包括:
判断证书是否存在;
若证书存在,计算证书的摘要值;
验证计算出的证书的摘要值与完整性信息中证书摘要值是否匹配。
完整性信息中包含了签名信息,因此,在刷写前,要确保证书已经写入可信根中。由于只有厂商签发的完整性信息才能写入可信根中,意味着计算机厂商已经为该完整性信息做背书,用户使用该信息作为后续固件完整性验证的基准值。
进一步的,所述的固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性的步骤包括:
固件运行时,读取存放在可信根中的完整性信息作为验证的基准值;
获取本次启动中各个固件卷及平台组件的度量值;
对比基准值及度量值,判断固件与完整性信息是否一致。
为了确保当前运行的固件与存放到可信根中的完整性信息一致本申请在固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。为保障与传统固件刷新流程不冲突,刷写固件与刷写固件完整性信息的过程相互独立,为防止只刷写固件或只刷写完整性信息等误操作,在固件中引入完整性验证机制。验证基准值为写入可信根中的固件完整性信息,而度量值的获取方式本申请并不约束,可参考度量链技术。
另一方面,本发明技术方案还提供一种计算机固件安全供应的系统,包括完整性信息生成子系统、证书验证子系统、合法性验证子系统、固件完整性验证子系统;
完整性信息生成子系统,用于生成固件的同时生成固件各部分的完整性信息;
证书验证子系统,用于导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根;
合法性验证子系统,用于使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限;
固件完整性验证子系统,用于固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。
进一步的,完整性信息生成子系统包括固件信息获取模块、偏移信息获取模块、分割模块、计算处理模块、厂商信息处理模块、签名模块、签名值验证模块、完整性信息生成模块;
固件信息获取模块,用于读取固件文件并获取固件信息;偏移信息获取模块,用于获取固件卷以及平台组件的偏移信息;分割模块,用于根据获取的偏移信息将固件文件进行分割;计算处理模块,用于计算分割出的平台组件以及每个固件卷的摘要值,生成摘要值列表;厂商信息处理模块,用于读取厂商的私钥及对应的数字证书并计算证书摘要值;签名模块,用于使用私钥对固件信息、证书摘要值、摘要值列表进行签名生成签名值;签名值验证模块,用于使用数字证书对签名值进行验证;完整性信息生成模块,用于签名值验证通过后,将固件信息、证书摘要值、摘要值列表以及签名值组成完整性信息。
进一步的,证书验证子系统包括证书导入模块、格式验证模块、检测模块、证书合法性验证模块、证书写入模块、创建模块;
证书导入模块,用于导入厂商证书;格式验证模块,用于验证导入的证书的格式;检测模块,用于导入的证书格式正确时,检测可信根中是否存在证书;证书合法性验证模块,用于若证书存在时,验证导入的证书的合法性;证书写入模块,用于导入的证书合法时,清除可信根中的证书,写入导入的证书,还用于若证书不存在时,将导入的证书写入可信根的存储空间中;创建模块,用于若证书不存在时,在可信根创建存储空间,并设置存储空间的读写权限。
进一步的,合法性验证子系统包括:证书获取模块、匹配模块、验证模块、存储判断模块、存储处理模块;
证书获取模块,用于获取可信根中的证书; 匹配模块,用于验证完整性信息与获取的证书是否匹配;验证模块,用于当完整性信息与证书匹配时,使用匹配的证书验证完整性信息的合法性;存储判断模块,用于当验证完整性信息合法时,判断可信根中是否存在完整性信息存储空间;存储处理模块,用于当可信根中存在完整性信息存储空间,将完整性信息写入完整性信息存储空间,当可信根中不存在完整性信息存储空间时,在可信根中创建完整性信息存储空间,将完整性信息写入完整性信息存储空间,设置开放完整性信息存储空间的读权限,限制写权限。
进一步的,匹配模块包括判断单元 、计算单元和匹配单元;
判断单元,用于判断证书是否存在;计算单元,用于若判断单元判断证书存在时,计算证书的摘要值;匹配单元,用于验证计算单元计算出的证书的摘要值与完整性信息中证书摘要值是否匹配。
进一步的,固件完整性验证子系统包括完整性信息读取模块、度量值获取模块、对比判断模块、返回模块;
完整性信息读取模块,用于固件运行时,读取存放在可信根中的完整性信息作为验证的基准值;度量值获取模块,用于获取本次启动中各个固件卷及平台组件的度量值;对比判断模块,用于对比基准值及度量值,判断固件与完整性信息是否一致;返回模块,用于返回判断结果,当一致时,返回可信验证成功,当不一致时,返回不可信项。
从以上技术方案可以看出,本发明具有以下优点:本发明使得计算机出厂时就带有固件完整性信息,计算机用户可使用该信息作为完整性验证的基准值。同时,证书验证机制、固件完整性验证机制确保了该完整性信息的可靠。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的固件完整性信息生成流程示意图。
图3是本发明一个实施例的证书刷写流程示意图。
图4是本发明一个实施例的完整性信息刷写流程示意图。
图5是本发明一个实施例的固件验证流程示意图。
图6为本发明一个实施例提供的系统的示意框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面对本发明中出现的关键术语进行解释。
固件:Firmware,固化在存储芯片中的程序,计算机上电后最先执行的代码,一般用于完成计算机硬件初始化、为操作系统提供硬件管理接口等功能;
Firmware Volume:固件卷,固件由多个固件卷组成,每个固件卷负责不同的功能,下文简称FV;
Microcode:固件卷的一种,处理器上电后最先执行的一段代码,常驻于处理器缓存中,一般用于将机器指令翻译成电路操作序列,下文简称FV_Microcode;本发明实施例中定义为:译电固件卷;
Boot Block:固件卷的一种,用于引导Main Block,下文简称FV_BB; 本发明实施例中定义为:引导固件卷;
Main Block:固件卷的一种,固件中的主体代码,硬件初始化、内存映射、中断映射等操作都由该部分完成,下文简称FV_Main;本发明实施例中定义为:主体固件卷;
SecureBoot PK:安全启动中的平台密钥,Secure Boot是一套操作系统验证框架,只有被签名的操作系统才能正常启动,平台密钥(PK)是主板厂商发布的密钥,操作系统及软件验签的密钥只有经过PK的验证才能导入到主板中;本发明实施例中定义为:平台组件。
如图1所示,本发明实施例提供一种计算机固件安全供应的方法,包括如下步骤:
步骤1:生成固件的同时生成固件各部分的完整性信息;
步骤2:导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根;
步骤3:使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限;
步骤4:固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。
需要说明的是,固件各部分包括各固件卷及平台组件;
计算机厂商生成固件时,除了对固件签名外,还要同步生成固件卷及平台组件的完整性信息,为确保该完整性信息的可信赖性,由计算机厂商使用自身的私钥对其签名。完整性信息和固件文件同步发布,刷写固件时同时刷入固件的完整性信息。为保证固件完整性信息的安全性,将完整性信息存放到可信根中并限制读写权限,确保所有用户可以方便读取其中的内容作为验证基准值,但只有指定对象具备写入内容的权限。
为了确保该固件完整性信息与当前固件匹配,同时确保固件未被篡改,每次固件运行时基于该完整性信息验证当前固件是否被恶意篡改。
在有些实施例中,步骤1中,所述的生成固件的同时生成固件各部分的完整性信息的步骤包括:
步骤11:读取固件文件并获取固件信息;
步骤12:获取固件卷以及平台组件的偏移信息;
步骤13:根据获取的偏移信息将固件文件进行分割;
步骤14:计算分割出的平台组件以及每个固件卷的摘要值,生成摘要值列表;
步骤15:读取厂商的私钥及对应的数字证书并计算证书摘要值;
步骤16:使用私钥对固件信息、证书摘要值、摘要值列表进行签名生成签名值;
步骤17:使用数字证书对签名值进行验证;验证通过,执行步骤19,验证不通过,执行步骤18;
本步骤中,为了确保签名使用的私钥和数字证书匹配,防止因误操作导致的私钥与数字证书不一致,导致后续设备出厂后需要重新刷写完整性信息;
步骤18:私钥与证书不匹配,完整性信息生成失败;
步骤19:将固件信息、证书摘要值、摘要值列表以及签名值组成完整性信息。
需要说明的是,步骤12中,获取固件卷的偏移信息的步骤包括:获取固件的编译信息;通过固件的编译信息获取各个固件卷在固件文件中的偏移地址。
固件完整性信息是由计算机厂商发布固件时同步生成的各个固件卷及平台组件的完整性值列表,同时,为标识该完整性信息对应的固件版本及签名密钥,完整性信息文件中还包含了固件厂商、固件版本、验签证书摘要值等信息。
步骤13中,所述的根据获取的偏移信息将固件文件进行分割的步骤包括:
步骤131:基于获取的偏移地址将固件文件分割成独立的固件卷文件;
步骤132:基于获取的平台组件的偏移信息将固件文件中平台组件的文件分割出来。
在有些实施例中,步骤2中,所述的导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根的步骤包括:
步骤21:导入厂商证书;
步骤22:验证导入的证书的格式是否正确,若是,执行步骤23,否则执行步骤29;
步骤23:检测可信根中是否存在证书;若是,执行步骤24,否则执行步骤27;
步骤24:验证导入的证书的是否合法;若是,执行步骤25,否则,执行步骤29;
步骤25:清除可信根中的证书;
步骤26:写入导入的证书;执行步骤29;
步骤27:在可信根创建存储空间;
步骤28:将导入的证书写入创建的存储空间,并设置存储空间的读写权限;
步骤29:结束。
证书用于验证完整性信息文件的有效性及合法性,证书由计算机厂商刷写到每一台设备的可信根中,而不是集成到刷写工具,这样就能保证该证书不会被随意替换。同时,对于证书的更新操作,限制只有厂商发布的证书才能替换原有的证书,确保验签证书不会被恶意替换。
步骤3中,所述的使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限的步骤包括:
步骤31:获取可信根中的证书;
步骤32:判断证书是否存在;若是,执行步骤33,否则执行步骤39;
步骤33:计算证书的摘要值;
步骤34:验证计算出的证书的摘要值与完整性信息中证书摘要值是否匹配,若是,执行步骤35,否则,执行步骤39;
步骤35:使用匹配的证书验证完整性信息是否合法,若是,执行步骤36,否则执行步骤39;
步骤36:判断可信根中是否存在完整性信息存储空间;若是,执行步骤38,否则,执行步骤37;
步骤37:在可信根中创建完整性信息存储空间,设置开放完整性信息存储空间的读权限,限制写权限;执行步骤38;
步骤38:将完整性信息写入完整性信息存储空间;
步骤39:结束。
完整性信息中包含了签名信息,因此,在刷写前,要确保证书已经写入可信根中。由于只有厂商签发的完整性信息才能写入可信根中,意味着计算机厂商已经为该完整性信息做背书,用户使用该信息作为后续固件完整性验证的基准值。
在有些实施例中,步骤4中,所述的固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性的步骤包括:
步骤41:固件运行时,读取存放在可信根中的完整性信息作为验证的基准值;
步骤42:判断基准值是否存在,若是,执行步骤43,否则,执行步骤48;
步骤43:读取基准值;
步骤44:获取本次启动中各个固件卷及平台组件的度量值;
步骤45:对比基准值与度量值,验证固件与完整性信息是否一致;若是,执行步骤46,否则执行步骤47;
步骤46:返回可信验证成功,执行步骤48;
步骤47:返回不可信项,执行步骤48;
步骤48:结束。
为了确保当前运行的固件与存放到可信根中的完整性信息一致本申请在固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。为保障与传统固件刷新流程不冲突,刷写固件与刷写固件完整性信息的过程相互独立,为防止只刷写固件或只刷写完整性信息等误操作,在固件中引入完整性验证机制。验证基准值为写入可信根中的固件完整性信息,而度量值的获取方式本案并不约束,可参考度量链技术。
为了使本发明更加清楚,本发明将详述固件完整性信息发布、固件完整性信息刷写及证书管理等机制。为方便表述,本实施例中,计算机厂商私钥及对应数字证书为Key和Cert,备份私钥及对应数字证书为Keybak和Certbak。同时,完整性信息包括FV_Microcode、FV_BB、FV_Main及SecureBoot PK等内容。
1、固件完整性信息生成过程
固件完整性信息是由计算机厂商发布固件时同步生成的各个FV及平台组件的完整性值列表,同时,为标识该完整性信息对应的固件版本及签名密钥,完整性信息文件中还包含了固件厂商、固件版本、验签证书摘要值等信息。具体过程如图2所示:
(1)读取固件文件,获取固件版本号、厂商等标识信息ManufactureInfo:固件中厂商信息及版本号信息在编译时固化在固件文件中的,获取该信息可以标识完整性信息对应的固件文件;
(2)读取固件编译信息,获取FV及PK的偏移信息:在固件编译阶段,各个FV及其他模块单独生成,在编译阶段最后会由编译工具统一组合成一个完整的固件文件,因此,可以通过固件的编译信息获取各个FV在固件文件中的偏移地址;
(3)根据偏移信息分割固件文件:基于步骤(2)中的偏移地址,就可将固件文件分割成独立的FV文件,分割出FV_Microcode、FV_BB、FV_Main及SecureBoot PK;
(4)计算每一个FV及PK的摘要值,生成摘要值列表List;
(5)读取厂商Key及Cert,计算证书摘要值CertHash;
(6)使用Key对(ManufactureInfo||CertHash||List)签名,生成签名值Signature;厂商使用私钥对固件信息、验证证书摘要值及完整性信息列表签名,固件信息、验证证书摘要值、完整性信息列表及签名值共同构成完整性信息文件;
(7)使用Cert验证签名值;
验证不通过,私钥与证书不匹配,完整性信息生成失败,验证通过,将(ManufactureInfo||CertHash||List||Signature)组成完整性信息。
验证完整性信息有效性:该步骤是为了确保签名使用的私钥和验证的证书匹配,防止因误操作导致的私钥与验签证书不一致,导致后续设备出厂后需要重新刷写完整性信息。
需要说明的是,该过程使用的验证证书与证书刷写流程中导入计算机可信根中的证书为同一证书。
2、证书刷写过程
数字证书用于验证完整性信息的有效性及合法性,该证书的用途与现有技术中验证固件完整性的证书类似,不同的是,本申请中数字证书由计算机厂商刷写到每一台设备的可信根中,而不是集成到刷写工具,这样就能保证该证书不会被随意替换。同时,对于证书的更新操作,限制只有厂商发布的证书才能替换原有的证书,确保验签证书不会被恶意替换。如图3所示,具体过程如下:
(1)检测输入证书Cert格式:数字证书都是遵循X509格式的文件,根据X509的编码要求可以初步判断待刷写证书的有效性;格式正确的前提下进行下一步;(2)检测可信根中的证书:该步骤是为了区分执行证书初始化操作还是证书更新操作,当可信根中不存在证书时,说明是厂商第一次刷写证书,执行步骤3)中的初始化流程。当可信根中存在数字证书,说明厂商已经刷写证书,需要执行步骤4)中更新证书的流程;(3)初始化过程:在可信根创建存储空间,由于该证书只在完整性信息导入时使用,并不向计算机用户提供,因此只需限制计算机厂商具备读写权限即可。存储空间开辟后,将证书写入存储空间中;(4)更新证书过程:当可信根中已经存在证书时,则先读取可信根中的证书,然后使用可信根中的证书验证输入证书的合法性,只有验证通过后,清除可信根中的证书,写入新的证书,也就是,使用新证书替换旧证书,确保可信根中存放的都是由厂商颁发的数字证书。
需要说明的是,本方案中有两套私钥/证书,一套用于签发/验签完整性信息文件,一套作为备份。备份私钥/证书存在的意义在于,当原私钥/证书丢失后,厂商可以基于备份私钥/证书为已出场的设备签发新的固件完整性信息,在此之前只需将设备中的证书更换备份证书即可。备份私钥/证书并不是原私钥/证书的复制,而是使用原私钥签发的一套新的私钥/证书。假设没有备份密钥,由于已出场的计算机已写入了证书,当原私钥/证书丢失后,厂商无法生成可被验证通过的证书,则出场计算机无法更新固件完整性信息。
3、完整性信息刷写过程
完整性信息中包含了签名信息,因此,在刷写前,要确保证书已经写入可信根中。由于只有厂商签发的完整性信息才能写入可信根中,意味着计算机厂商已经为该完整性信息做背书,用户使用该信息作为后续固件完整性验证的基准值。如图4所示,具体过程如下:
(1)读取可信根中的证书:如果可信根中不存在证书,则意味着计算机并未完成证书初始化操作,不允许导入完整性信息;(2)验证完整性信息与证书是否匹配:计算证书的摘要值Hash,在生成完整性信息文件时,会将对应验签证书的摘要值Hash写入完整性信息文件中,作为完整性信息文件的一部分,因此,待写入的完整性信息中证书的摘要值数据与可信根中验签证书的摘要值进行匹配,如果完整性信息文件中证书的摘要值数据与可信根中验签证书的摘要值不一致,则意味完整性信息文件与当前计算机不匹配,因此,不允许写入完整性信息;(3)验证完整性信息文件的合法性:使用可信根中的证书验证完整性信息签名合法性,确保该文件由计算机厂商发布;(4)写入完整性信息:验签通过后,由于完整性信息文件包含标识信息,这些信息只在导入时有效,因此,只需将FV及SecureBoot PK完整性信息列表写入可信根中即可。
4、固件完整性验证过程
完整性验证过程是为了确保当前运行的固件与存放到可信根中的完整性信息一致。为保障与传统固件刷新流程不冲突,刷写固件与刷写固件完整性信息的过程相互独立,为防止只刷写固件或只刷写完整性信息等误操作,在固件中引入完整性验证机制。本流程中,验证基准值为写入可信根中的固件完整性信息,而度量值的获取方式本案并不约束,可参考度量链技术。如图5所示,具体过程如下:
(1)读取完整性信息:获取存放在可信根中的完整性信息作为验证的基准值;(2)读取度量值:获取本次启动中各个FV及SecureBoot PK的度量值,作为验证对象;(3)可信验证:对比基准值及度量值,判断固件与固件完整性信息是否一致,若一致,返回可信验证成功,否则,返回不可信项。
需要说明的是,有两种场景会导致该验证失败,一是刷写固件及完整性信息时误操作,只刷写了其中一个,二是计算机被恶意攻击,固件遭到篡改。无论发生哪一个,都需要再次刷写固件及固件完整性信息才能恢复固件的可信。
如图6所示,本发明实施例还提供一种计算机固件安全供应的系统,包括完整性信息生成子系统10、证书验证子系统20、合法性验证子系统30、固件完整性验证子系统40;
完整性信息生成子系统10,用于生成固件的同时生成固件各部分的完整性信息;
证书验证子系统20,用于导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根;
合法性验证子系统30,用于使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限;
固件完整性验证子系统40,用于固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。
在有些实施例中,完整性信息生成子系统10包括固件信息获取模块101、偏移信息获取模块102、分割模块103、计算处理模块104、厂商信息处理模块105、签名模块106、签名值验证模块107、完整性信息生成模块108;
固件信息获取模块101,用于读取固件文件并获取固件信息;偏移信息获取模块102,用于获取固件卷以及平台组件的偏移信息;分割模块103,用于根据获取的偏移信息将固件文件进行分割;计算处理模块104,用于计算分割出的平台组件以及每个固件卷的摘要值,生成摘要值列表;厂商信息处理模块105,用于读取厂商的私钥及对应的数字证书并计算证书摘要值;签名模块106,用于使用私钥对固件信息、证书摘要值、摘要值列表进行签名生成签名值;签名值验证模块107,用于使用数字证书对签名值进行验证;完整性信息生成模块108,用于签名值验证通过后,将固件信息、证书摘要值、摘要值列表以及签名值组成完整性信息。
在有些实施例中,证书验证子系统20包括证书导入模块201、格式验证模块202、检测模块203、证书合法性验证模块204、证书写入模块205、创建模块206;
证书导入模块201,用于导入厂商证书;格式验证模块202,用于验证导入的证书的格式;检测模块203,用于导入的证书格式正确时,检测可信根中是否存在证书;证书合法性验证模块204,用于若证书存在时,验证导入的证书的合法性;证书写入模块205,用于导入的证书合法时,清除可信根中的证书,写入导入的证书,还用于若证书不存在时,将导入的证书写入可信根的存储空间中;创建模块206,用于若证书不存在时,在可信根创建存储空间,并设置存储空间的读写权限。
在有些实施例中,合法性验证子系统30包括:证书获取模块301、匹配模块302、验证模块303、存储判断模块304、存储处理模块305;
证书获取模块301,用于获取可信根中的证书;
匹配模块302,用于验证完整性信息与获取的证书是否匹配;
验证模块303,用于当完整性信息与证书匹配时,使用匹配的证书验证完整性信息的合法性;
存储判断模块304,用于当验证完整性信息合法时,判断可信根中是否存在完整性信息存储空间;
存储处理模块305,用于当可信根中存在完整性信息存储空间,将完整性信息写入完整性信息存储空间,当可信根中不存在完整性信息存储空间时,在可信根中创建完整性信息存储空间,将完整性信息写入完整性信息存储空间,设置开放完整性信息存储空间的读权限,限制写权限。
其中,匹配模块302包括判断单元 、计算单元和匹配单元;
判断单元,用于判断证书是否存在;计算单元,用于若判断单元判断证书存在时,计算证书的摘要值;匹配单元,用于验证计算单元计算出的证书的摘要值与完整性信息中证书摘要值是否匹配。
在有些实施例中,固件完整性验证子系统40包括完整性信息读取模块401、度量值获取模块402、对比判断模块403、返回模块404;
完整性信息读取模块401,用于固件运行时,读取存放在可信根中的完整性信息作为验证的基准值;度量值获取模块402,用于获取本次启动中各个固件卷及平台组件的度量值;对比判断模块403,用于对比基准值及度量值,判断固件与完整性信息是否一致;返回模块404,用于返回判断结果,当一致时,返回可信验证成功,当不一致时,返回不可信项。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种计算机固件安全供应的方法,其特征在于,包括如下步骤:
生成固件的同时生成固件各部分的完整性信息;
导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根;
使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限;
固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性;
所述的生成固件的同时生成固件各部分的完整性信息的步骤包括:
读取固件文件并获取固件信息;
获取固件卷以及平台组件的偏移信息;
根据获取的偏移信息将固件文件进行分割;
计算分割出的平台组件以及每个固件卷的摘要值,生成摘要值列表;
读取厂商的私钥及对应的数字证书并计算证书摘要值;
使用私钥对固件信息、证书摘要值、摘要值列表进行签名生成签名值;
使用数字证书对签名值进行验证;
签名值验证通过后,将固件信息、证书摘要值、摘要值列表以及签名值组成完整性信息。
2.根据权利要求1所述的计算机固件安全供应的方法,其特征在于,所述的获取固件卷以及平台组件的偏移信息的步骤中,获取固件卷的偏移信息的步骤包括:
获取固件的编译信息;
通过固件的编译信息获取各个固件卷在固件文件中的偏移地址。
3.根据权利要求2所述的计算机固件安全供应的方法,其特征在于,所述的根据获取的偏移信息将固件文件进行分割的步骤包括:
基于获取的偏移地址将固件文件分割成独立的固件卷文件;
基于获取的平台组件的偏移信息将固件文件中平台组件的文件分割出来。
4.根据权利要求1所述的计算机固件安全供应的方法,其特征在于,所述的导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根的步骤包括:
导入厂商证书;
验证导入的证书的格式;
导入的证书格式正确时,检测可信根中是否存在证书;
若是,验证导入的证书的合法性;
导入的证书合法时,清除可信根中的证书,写入导入的证书;
若否,将导入的证书写入可信根中。
5.根据权利要求4所述的计算机固件安全供应的方法,其特征在于,所述的将导入的证书写入可信根中的步骤具体包括:
在可信根创建存储空间;
将导入的证书写入创建的存储空间,并设置存储空间的读写权限。
6.根据权利要求5所述的计算机固件安全供应的方法,其特征在于,所述的使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限的步骤包括:
获取可信根中的证书;
验证完整性信息与获取的证书是否匹配;
当完整性信息与证书匹配时,使用匹配的证书验证完整性信息的合法性;
当验证完整性信息合法时,判断可信根中是否存在完整性信息存储空间;
若是,将完整性信息写入完整性信息存储空间,否则,在可信根中创建完整性信息存储空间,设置开放完整性信息存储空间的读权限,限制写权限,将完整性信息写入完整性信息存储空间。
7.根据权利要求6所述的计算机固件安全供应的方法,其特征在于,所述的验证完整性信息与获取的证书是否匹配的步骤包括:
判断证书是否存在;
若证书存在,计算证书的摘要值;
验证计算出的证书的摘要值与完整性信息中证书摘要值是否匹配。
8.根据权利要求6所述的计算机固件安全供应的方法,其特征在于,所述的固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性的步骤包括:
固件运行时,读取存放在可信根中的完整性信息作为验证的基准值;
获取本次启动中各个固件卷及平台组件的度量值;
对比基准值及度量值,判断固件与完整性信息是否一致。
9.一种计算机固件安全供应的系统,其特征在于,包括完整性信息生成子系统、证书验证子系统、合法性验证子系统、固件完整性验证子系统;
完整性信息生成子系统,用于生成固件的同时生成固件各部分的完整性信息;具体用于读取固件文件并获取固件信息;获取固件卷以及平台组件的偏移信息;根据获取的偏移信息将固件文件进行分割;计算分割出的平台组件以及每个固件卷的摘要值,生成摘要值列表;读取厂商的私钥及对应的数字证书并计算证书摘要值;使用私钥对固件信息、证书摘要值、摘要值列表进行签名生成签名值;使用数字证书对签名值进行验证;签名值验证通过后,将固件信息、证书摘要值、摘要值列表以及签名值组成完整性信息;
证书验证子系统,用于导入厂商证书,同时验证导入证书的合法性,并将验证合法的证书写入可信根;
合法性验证子系统,用于使用写入可信根中的证书验证完整性信息的合法性,将验证合法的完整性信息写入可信根的完整性信息存储空间,并限制完整性信息存储空间的写权限;
固件完整性验证子系统,用于固件运行时,将可信根中的完整性信息作为基准值验证固件的可信性。
CN202110808790.6A 2021-07-16 2021-07-16 一种计算机固件安全供应的方法、系统 Active CN113609529B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110808790.6A CN113609529B (zh) 2021-07-16 2021-07-16 一种计算机固件安全供应的方法、系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110808790.6A CN113609529B (zh) 2021-07-16 2021-07-16 一种计算机固件安全供应的方法、系统

Publications (2)

Publication Number Publication Date
CN113609529A CN113609529A (zh) 2021-11-05
CN113609529B true CN113609529B (zh) 2023-07-18

Family

ID=78304775

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110808790.6A Active CN113609529B (zh) 2021-07-16 2021-07-16 一种计算机固件安全供应的方法、系统

Country Status (1)

Country Link
CN (1) CN113609529B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017166561A1 (zh) * 2016-03-28 2017-10-05 福建联迪商用设备有限公司 一种基于安卓系统apk下载方法及其系统
CN110543768A (zh) * 2019-08-23 2019-12-06 苏州浪潮智能科技有限公司 一种在bios中控制可信根的方法和系统
CN112784278A (zh) * 2020-12-31 2021-05-11 科东(广州)软件科技有限公司 一种计算机系统的可信启动方法、装置及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017166561A1 (zh) * 2016-03-28 2017-10-05 福建联迪商用设备有限公司 一种基于安卓系统apk下载方法及其系统
CN110543768A (zh) * 2019-08-23 2019-12-06 苏州浪潮智能科技有限公司 一种在bios中控制可信根的方法和系统
CN112784278A (zh) * 2020-12-31 2021-05-11 科东(广州)软件科技有限公司 一种计算机系统的可信启动方法、装置及设备

Also Published As

Publication number Publication date
CN113609529A (zh) 2021-11-05

Similar Documents

Publication Publication Date Title
CN107545184B (zh) 云主机的可信度量系统及方法
US8863309B2 (en) Selectively unlocking a core root of trust for measurement (CRTM)
US8281229B2 (en) Firmware verification using system memory error check logic
CN105989306B (zh) 操作系统的文件签名方法、文件校验方法及装置
US8490179B2 (en) Computing platform
US11829479B2 (en) Firmware security verification method and device
US8943491B2 (en) Systems and methods for maintaining CRTM code
CN107479931B (zh) 一种linux系统应用层刷新BIOS的方法
WO2018157570A1 (zh) Pos终端软件升级方法、pos终端和存储介质
CN107045611B (zh) 安全启动方法及装置
US11914682B2 (en) Software verification device
CN104850792A (zh) 一种服务器信任链的构建方法和装置
CN103186434A (zh) 恢复基本输入输出系统的方法及系统
JP2014524088A (ja) セキュアホスト実行アーキテクチャ
JP2021179982A (ja) シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法
CN108345805B (zh) 验证固件的方法及装置
CN112148314A (zh) 一种嵌入式系统的镜像验证方法、装置、设备及存储介质
CN115329321A (zh) 一种固件的启动方法、芯片及计算设备
CN113190880B (zh) 基于对安全协处理器的背书信息的分析确定是否对计算设备执行动作
CN111241548B (zh) 计算机启动方法
CN110730079B (zh) 基于可信计算模块的嵌入式系统安全启动和可信度量的系统
CN113609529B (zh) 一种计算机固件安全供应的方法、系统
CN113448681A (zh) 一种虚拟机监控器公钥的注册方法、设备和存储介质
CN108595981B (zh) 加密安卓系统的方法
CN110740041B (zh) 基于可信计算模块的嵌入式系统安全启动与可信度量的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant