CN108345805A - 验证固件的方法及装置 - Google Patents
验证固件的方法及装置 Download PDFInfo
- Publication number
- CN108345805A CN108345805A CN201710311881.2A CN201710311881A CN108345805A CN 108345805 A CN108345805 A CN 108345805A CN 201710311881 A CN201710311881 A CN 201710311881A CN 108345805 A CN108345805 A CN 108345805A
- Authority
- CN
- China
- Prior art keywords
- party
- public key
- firmware
- region
- certificate
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例公开了验证固件的方法及装置,该方法包括:确定由可信第三方生成的第三方公钥;基于所述第三方公钥来验证数据结构文件的签名,以验证所述数据结构文件的可信性,其中,所述数据结构文件用于表示由所述可信第三方测试通过的安全固件的不可变区域,所述签名是由所述可信第三方利用与所述第三方公钥对应的第三方私钥而得到的;在确定所述数据结构文件可信之后,利用所述数据结构文件来验证待测固件的至少一个区域的完整性。通过采用本发明实施例,能够对固件进行更为完善的验证,从而能够提高固件的安全性。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及验证固件的方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
固件介于软件和硬件之间,其可以嵌入在芯片上。芯片的安全性通常由芯片制造商来把控。为了确保芯片能够安全启动,芯片制造商通常会提供相关安全策略来验证固件的启动部分。然而,这种安全策略对于固件验证而言不仅存在局限性,而且对于安全性的验证也不足。
发明内容
为了更为完善地验证固件,提高固件的安全性,本发明实施例提供如下解决方案:
在本发明的实施例中,提供了一种验证固件的方法,包括:
确定由可信第三方生成的第三方公钥;
基于所述第三方公钥来验证数据结构文件的签名,以验证所述数据结构文件的可信性,其中,所述数据结构文件用于表示由所述可信第三方测试通过的安全固件的不可变区域,所述签名是由所述可信第三方利用与所述第三方公钥对应的第三方私钥而得到的;
在确定所述数据结构文件可信之后,利用所述数据结构文件来验证待测固件的至少一个区域的完整性。
在本发明的实施例中,还提供了一种验证固件的装置,包括:
确定模块,用于确定由可信第三方生成的第三方公钥;
签名验证模块,用于基于所述第三方公钥来验证数据结构文件的签名,以验证所述数据结构文件的可信性,其中,所述数据结构文件用于表示由所述可信第三方测试通过的安全固件的不可变区域,所述签名是由所述可信第三方利用与所述第三方公钥对应的第三方私钥而得到的;
完整性验证模块,用于在确定所述数据结构文件可信之后,利用所述数据结构文件来验证待测固件的至少一个区域的完整性。
在本发明的实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有可执行上述验证固件的方法的指令。
在本发明实施例中,通过可信的数据结构文件来表示由可信第三方测试通过的安全固件的不可变区域,利用该数据结构文件来验证待测固件的至少一个区域的完整性,能够对固件进行更为完善的验证,从而能够提高固件的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中验证固件的方法的示意图;
图2为本发明实施例中基板管理控制器的连接结构示例图;
图3为本发明实施例中处理器的示意图;
图4为本发明实施例中验证固件的装置的示意图;
图5为本发明实施例中验证固件的装置的具体实例图;
图6为本发明实施例中验证固件的方法的应用场景图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
目前对固件的验证依赖于芯片制造商提供的安全策略。芯片制造商通常关注的是固件是否能够安全启动,因此安全策略可能也仅仅与固件的启动部分有关。这样,对于固件的验证是非常局限的,并且也难以保证固件的安全性。例如,英特尔(Intel)通常提供启动保护(Boot Guard)规范来确保其处理器上的基本输入输出***(Base Input-OutputSystem,BIOS)的安全启动,但是这样的规范仅仅涵盖了BIOS的初始化启动模块(InitialBoot Block,IBB),可见,这对于BIOS的验证是不足的,仍然难以保证其安全性。
针对这样的问题,本发明实施例提供了用于验证固件的改进方案。下面将结合具体的实施例来进行描述。
图1为本发明实施例中验证固件的方法的示意图,如图1所示,该方法可以包括:
步骤101、确定由可信第三方生成的第三方公钥;
步骤102、基于第三方公钥来验证数据结构文件的签名,以验证数据结构文件的可信性,其中,数据结构文件用于表示由可信第三方测试通过的安全固件的不可变区域,签名是由可信第三方利用与第三方公钥对应的第三方私钥而得到的;
步骤103、在确定数据结构文件可信之后,利用数据结构文件来验证待测固件的至少一个区域的完整性。
由图1所示流程可以得知,在本发明的实施例中,通过可信的数据结构文件来表示由可信第三方测试通过的安全固件的不可变区域,利用该数据结构文件来验证待测固件的至少一个区域的完整性,这相对于现有技术中仅对固件的启动部分进行验证的方案而言,能够对固件进行更为完善的验证,从而能够提高固件的安全性。
数据结构文件是针对安全固件生成的,用于表示由可信第三方测试通过的安全固件的不可变区域。可信第三方可以是用户信任的第三方机构。在具体的实施例中,可信第三方可以是指定的证书机构(Certificate Authority,CA)。
在本发明实施例中,不可变区域可以是指在固件启动前后固件中不会被改变的区域。例如,对于英特尔的志强(Xeon)处理器的固件而言,不可变区域可以包括FlashDescriptor,BIOS,Management Engine(ME),GbE,Innovation Engine(IE),Endpoint LinkEqualization Option ROM,Platform Trusted Technology(PTT)等。应当理解的是,对于不同的固件而言,可能包括其它不可变区域。本发明实施例对此并不限定。
此外,数据结构文件可以用于表示安全固件的一个或多个不可变区域。例如,数据结构文件所表示的不可变区域可以包括安全固件的所有不可变区域,这样在对固件进行验证时能够验证固件的所有不可变区域的完整性,从而能够极大地提高固件的安全性。或者,数据结构文件所表示的不可变区域可以包括用户根据实际需求而选择的一个或者多个不可变区域。这样,可以根据实际需求来确定要验证的不可变区域,从而能够提高固件验证的灵活性。
为了得到能够用于验证固件的可信数据结构文件,可信第三方可以对固件供应商提供的固件和该固件对应的数据结构文件进行测试(例如,分析源码)。此外,可信第三方还可以生成第三方公私钥对。在对固件和数据结构文件测试通过之后,可信第三方可以利用第三方私钥对数据结构文件进行签名。在具体的实施例中,签名的方法可以包括:先利用哈希算法对数据结构文件进行处理,然后使用第三方私钥对哈希值进行加密。当然,在其它实施例中,还可以采用其它的具体签名方法,本发明实施例对此不作限定,相关的变化例均应落入本发明的保护范围。
第三方公钥可以被保存在可信存储区域中作为白名单。在其它的实施例中,也可以将第三方公钥的哈希值保存在可信存储区域中,以减小占用空间。可信存储区域例如可以是一次性可编程区域(One Time Programmable,OTP)。可以理解的是,除一次性可编程区域以外,可信存储区域还可以是本领域中已知的其它类型的一个或多个可信的存储区域,本发明对此不作限定,相关的变化例均应落入本发明的保护范围。
此外,在具体的实施例中,数据结构文件可以对应于一证书。具体地,可信第三方在对固件和数据结构文件测试通过后,可以生成对应于数据结构文件的证书。该证书可以被存储在某一存储区域中,例如,可以将证书存储在用于验证固件的装置的存储器中,例如,该装置的闪存中。
上述证书还可以包括第三方公钥。在具体的实施例中,证书还可以包括有效期域,该有效期域可以表示证书的有效期限,由此可以检查证书是否过期或者是否被撤销,从而能够在时间上确保证书的有效性,由此也能够确保证书中的第三方公钥的时效性。
可以理解的是,还可以对证书以及第三方公钥进行更新。在这种情况下,可以在OTP中烧入更新后的第三方公钥的哈希值。这样,可以获取更新后的第三方公钥,并且根据更新后的第三方公钥来进行本发明实施例中相应的操作。
在本发明实施例中,安全固件可以指由可信第三方测试通过的固件,待测固件可以指要被验证的固件。应当理解的是,安全固件和待测固件是同一种固件。例如,英特尔可以将Xeon处理器的固件和该固件对应的数据结构文件提供给可信第三方,由可信第三方进行测试,在测试通过之后,可信第三方可以利用对数据结构文件进行签名。可选地,签名后的数据结构文件可以嵌入在Xeon处理器的固件中。这样,在用户启动Xeon处理器时,可以基于本发明实施例的验证方案,利用该签名后的数据结构文件对Xeon处理器上的固件进行验证。
具体而言,在验证固件的过程中,可以先确定由可信第三方生成的第三方公钥。然后利用第三方公钥对数据结构文件的签名进行验证。如果验证成功,则表明数据结构文件来源可信,即数据结构文件是可信的。在具体的实施例中,确定由可信第三方生成的第三方公钥可以包括:获取与数据结构文件对应的证书,获取证书中的公钥作为第三方公钥。在其它的实施例中,在获取到证书后,可以先确定证书的有效性,在确定证书有效之后,获取证书中的公钥作为第三方公钥。例如,可以通过证书的有效期域检查证书的有效期限。此外,还可以检查证书是否被撤销,例如,可以查看实时更新的撤销列表中是否有该证书,如果没有的话,则确定该证书是有效的。这样,通过确定证书的有效性,能够从时间上把控证书的安全性,从而能够确保证书中的第三方公钥的时效性。
在其它实施例中,当可信存储区域(如一次性可编程区域)存储第三方公钥时,可以从可信存储区域读取第三方公钥。然后可以利用该第三方公钥对数据结构文件的签名进行验证。在这种情况下,可以不需要上述证书。
在其它的实施例中,当可信存储区域存储第三方公钥的哈希值时,可以从可信存储区域中读取第三方公钥的哈希值,并计算证书中的公钥的哈希值;在读取的第三方公钥的哈希值与证书中的公钥的哈希值一致时,将证书中的公钥用作第三方公钥。这样,能够保证所确定的第三方公钥的正确性。
可以理解的是,可以将上述多个实施例的方案进行组合。例如,可以在确定证书中的公钥的哈希值与可信存储区域中的第三方公钥的哈希值一致、并且确定证书有效的情况下,使用证书中的公钥作为第三方公钥。这样,能够确保所获取的第三方公钥的正确性以及时效性,从而能够进一步确保固件的安全性。
在验证处理器固件的过程中,在确定由可信第三方生成的第三方公钥之后,基于第三方公钥来验证数据结构文件的签名,以验证数据结构文件的可信性;在确定数据结构文件可信之后,利用数据结构文件来验证待测固件的至少一个区域的完整性,这样可以提高固件验证过程的安全性。在具体的实施例中,当数据结构文件包括由可信第三方测试通过的安全固件的不可变区域的哈希值时,利用数据结构文件来验证待测固件的至少一个区域的完整性可以包括:计算待测固件的至少一个区域中的每个区域的哈希值;将至少一个区域中的每个区域的哈希值与数据结构文件所表示的不可变区域中的对应不可变区域的哈希值进行比较,以验证待测固件的至少一个区域的完整性。当某一区域的哈希值与数据结构文件中的对应不可变区域的哈希值一致时,表明该区域是完整的,当某一区域的哈希值与数据结构文件中的对应不可变区域的哈希值不一致时,则表明该区域的完整性被破坏。
在具体的实施例中,上述验证固件的方法可以由一处理器实施,该处理器可以称之为第一处理器,而第一处理器要验证的固件可以属于另一处理器,可称之为第二处理器。第一处理器与第二处理器在物理上可以是相互独立的处理器,或者也可以集成在一起。在第一处理器对用户而言是可信的处理器时,可以进一步提高第二处理器固件验证过程的安全性。本领域技术人员知晓,在现有技术中对固件进行验证的安全代码由芯片制造厂商来提供,原始设备制造商(Original Equipment Manufacture,OEM)或原始设计制造商(Original Design Manufacture,ODM)并不能做相关的安全把控,而在本发明的实施例中,验证第二处理器固件的过程可以由独立于第二处理器的第一处理器来完成,相对于现有技术中完全由芯片制造商保证固件安全性的方案而言,OEM或ODM可以应用该第一处理器来对第二处理器的固件进行安全把控,从而能够提供固件验证的灵活性并且提高固件的安全性。
举一例,第一处理器可以采用可重构处理器,例如,第一处理器可以使用现场可编程门阵列(Field Programmable Gate Array,FPGA)来实现;第二处理器可以是志强(Xeon)处理器。在本例中,可以在志强处理器启动之前,由第一处理器优先检测硬件环境并对志强处理器的固件进行验证,来保证志强处理器安全启动。可见,利用本发明实施例,能够独立于芯片供应商来验证志强处理器固件的身份来源以及固件完整性,从而确保固件的安全性。可以理解的是,第一处理器和第二处理器也可以采用其它类型的处理器,本发明对此不作限定,相关的变化例均应落入本发明的保护范围。
在其它实施例中,上述图1的方法可以由基板管理控制器(Baseboard ManagementController,BMC)执行。由于基板管理控制器能够读写固件的镜像(image),故可以用基板管理控制器来验证固件。
图2为本发明实施例中基板管理控制器的连接结构示例图。如图2所示,基板管理控制器可以通过控制信号线(Control)来控制选择开关(Switch,该开关可以是单选的),使连接存储器的串行外设接口(Serial Peripheral Interface,SPI)同平台控制器中心(Platform Controller Hub,PCH)或基板管理控制器断开或连通。例如,此处的存储器可以是SPI只读存储器(Read Only Memory,ROM)。
当上述验证固件的方法由基板管理控制器执行时,在利用数据结构文件来验证待测固件的至少一个区域的完整性之前,上述验证固件的方法还可以包括:控制存储器与平台控制器中心断开;通过串行外设接口从存储器中读取待测固件。在对至少一个区域的完整性验证通过之后,还可以控制存储器与平台控制器中心连通。
例如,利用基板管理控制器实现的固件验证流程可以包括:上电后基板管理控制器首先运行;基板管理控制器控制存储器与平台控制器中心断开,通过串行外设接口从SPIROM中读取处理器的待测固件;基板管理控制器可以确定由可信第三方生成的第三方公钥,并且基于第三方公钥来验证数据结构文件的签名,以验证数据结构文件的可信性;在确定数据结构文件可信之后,利用数据结构文件来验证待测固件的至少一个区域的完整性。
如果对待测固件的至少一个区域的完整性验证失败,则基板管理控制器仍然控制存储器与平台控制器中心断开,从而控制处理器无法启动。在这种情况下,基板管理控制器还可以将验证失败的情况报告给***管理员或者直接控制电源关闭。如果验证成功,基板管理控制器可以控制串行外设接口切换到平台控制器中心(即将管理权交给平台控制器中心),从而使得存储器与平台控制器中心连通,由此使得处理器正常启动。
在本例中,由于一上电基板管理控制器就开始运行,此时开始检查固件的完整性,能够在正常开机流程之前完成检查,从而能够提升开机速度。此外,基板管理控制器可以通过SPI从存储器中读取待测固件,与现有流程从内存映射(memory map)读取待测固件相比,效率更高,从而能够节约时间。
基于同一发明构思,本发明实施例中还提供了一种处理器,如下面的实施例所述。由于该处理器解决问题的原理与前述验证固件的方法相似,因此该处理器的实施可以参见前述验证固件的方法的实施,重复之处不再赘述。
图3为本发明实施例中处理器的示意图。例如,该处理器的一个例子可以是上述第一处理器。如图3所示,该处理器可以包括:
微控制单元301,用于确定由可信第三方生成的第三方公钥;基于第三方公钥来验证数据结构文件的签名,以验证数据结构文件的可信性,其中,数据结构文件用于表示由可信第三方测试通过的安全固件的不可变区域,签名是由可信第三方利用与第三方公钥对应的第三方私钥而得到的;在确定数据结构文件可信之后,利用数据结构文件来验证待测固件的至少一个区域的完整性。
在一个实施例中,微控制单元301可以进一步用于:读取与数据结构文件对应的证书;获取证书中的公钥作为第三方公钥。
在一个实施例中,微控制单元301可以进一步用于:
确定证书的有效性;
在确定证书有效之后,获取证书中的公钥作为第三方公钥。
在一个实施例中,如图3所示,该处理器还可以包括:
可信存储区域302,用于存储第三方公钥的哈希值;
微控制单元301可以进一步用于:从可信存储区域读取第三方公钥的哈希值;计算证书中的公钥的哈希值;在第三方公钥的哈希值与证书中的公钥的哈希值一致时,将证书中的公钥用作第三方公钥。
可以理解的是,在其它实施例中,可信存储区域可以位于处理器的外部,但是可以由处理器访问。
在一个实施例中,数据结构文件包括由可信第三方测试通过的安全固件的不可变区域的哈希值;
微控制单元301可以进一步用于:计算待测固件的至少一个区域中的每个区域的哈希值;将至少一个区域中的每个区域的哈希值与数据结构文件所表示的不可变区域中的对应不可变区域的哈希值进行比较,以验证至少一个区域的完整性。
如前所述,图3所示处理器可称为第一处理器,例如可以是可重构处理器,第一处理器所验证的固件所属的处理器可称为第二处理器,例如可以是志强处理器。
基于同一发明构思,本发明实施例中还提供了一种验证固件的装置,如下面的实施例所述。由于验证固件的装置解决问题的原理与前述验证固件的方法相似,因此验证固件的装置的实施可以参见前述验证固件的方法的实施,重复之处不再赘述。
图4为本发明实施例中验证固件的装置的示意图,如图4所示,该装置可以包括:
确定模块401,用于确定由可信第三方生成的第三方公钥;
签名验证模块402,用于基于第三方公钥来验证数据结构文件的签名,以验证数据结构文件的可信性,其中,数据结构文件用于表示由可信第三方测试通过的安全固件的不可变区域,签名是由可信第三方利用与第三方公钥对应的第三方私钥而得到的;
完整性验证模块403,用于在确定数据结构文件可信之后,利用数据结构文件来验证待测固件的至少一个区域的完整性。
在一个实施例中,确定模块401可以进一步用于:获取与数据结构文件对应的证书;获取证书中的公钥作为第三方公钥。
在一个实施例中,确定模块401可以进一步用于:确定证书的有效性;在确定证书有效之后,获取证书中的公钥作为第三方公钥。
在一个实施例中,确定模块401可以进一步用于:从可信存储区域中读取第三方公钥的哈希值;计算证书中的公钥的哈希值;在第三方公钥的哈希值与证书中的公钥的哈希值一致时,将证书中的公钥用作第三方公钥。
在一个实施例中,数据结构文件包括由可信第三方测试通过的安全固件的不可变区域的哈希值;完整性验证模块403可以进一步用于计算待测固件的至少一个区域中的每个区域的哈希值;将至少一个区域中的每个区域的哈希值与数据结构文件所表示的不可变区域中的对应不可变区域的哈希值进行比较,以验证至少一个区域的完整性。
在一个实施例中,上述验证固件的装置可以是基板管理控制器;
如图5所示,上述装置还包括:
控制模块501,用于在利用数据结构文件来验证待测固件的至少一个区域的完整性之前,控制存储器与平台控制器中心断开;
读取模块502,用于通过串行外设接口从存储器中读取待测固件;
其中,控制模块501还用于在对至少一个区域的完整性验证通过之后,控制存储器与平台控制器中心连通。
在本发明的实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质存储有可执行上述验证处理器固件的方法的操作指令。
下面给出本发明实施例中验证处理器固件的方法的一个具体实例。应当理解的是,该例子仅是为了便于本领域技术人员理解本发明实施例,而并不限制本发明实施例的范围。
图6为本例中验证固件的方法的应用场景图。如图6所示,在本例中,可重构处理器可以包括微控制单元和OTP,其中,微控制单元可以与OTP相耦合,由此可以访问OTP中存储的信息。例如,OTP可以存储本发明实施例中描述的第三方公钥的哈希值。可重构处理器还可以包括闪存。微控制单元也可以与闪存相耦合,从而可以访问闪存中存储的信息。例如,闪存可以存储本发明实施例中描述的证书。
可重构处理器可以与志强处理器相耦合。可重构处理器可以通过前述各个实施例中所描述的方法,来验证志强处理器的固件。具体的过程可以参照前述各个图所描述的过程,此处不再赘述。
综上所述,在本发明实施例中,通过可信的数据结构文件来表示由可信第三方测试通过的安全固件的不可变区域,并且利用数据结构文件来验证待测固件的至少一个区域的完整性,相对于现有技术中仅验证固件的启动部分的安全性的方案而言,能够对固件进行更为完善的验证,从而能够提高固件的安全性。此外,由于数据结构文件用于表示由可信第三方测试通过的安全固件的不可变区域,并且数据结构文件是由可信第三方生成的第三方公钥来验证签名,以确保数据结构文件的可信性,这样可以提高固件验证过程的安全性。
本发明的实施例除了可以应用于处理器安全启动的场景外,还可应用于处理器身份确认,防止黑客篡改处理器固件的(网络)服务器等场景。应当理解的是,本发明实施例可以应用于本领域已知的任何类型的处理器和/或服务器,本发明实施例对此不作限定。
应当理解的是,在任何公开的过程中的步骤的任何特定次序或层次是示例性方法的一个例子。在不脱离本发明实施例公开的保护范围的情况下,根据设计的偏好,可以重新排列这些过程中的步骤的特定次序或层次。虽然所附的方法权利要求以示例性次序呈现了多个步骤的要素,但是这并不意味着受限于所呈现的特定次序或层次。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种验证固件的方法,其特征在于,包括:
确定由可信第三方生成的第三方公钥;
基于所述第三方公钥来验证数据结构文件的签名,以验证所述数据结构文件的可信性,其中,所述数据结构文件用于表示由所述可信第三方测试通过的安全固件的不可变区域,所述签名是由所述可信第三方利用与所述第三方公钥对应的第三方私钥而得到的;
在确定所述数据结构文件可信之后,利用所述数据结构文件来验证待测固件的至少一个区域的完整性。
2.如权利要求1所述的方法,其特征在于,所述确定由可信第三方生成的第三方公钥包括:
获取与所述数据结构文件对应的证书;
获取所述证书中的公钥作为所述第三方公钥。
3.如权利要求2所述的方法,其特征在于,所述获取所述证书中的公钥作为所述第三方公钥包括:
确定所述证书的有效性;
在确定所述证书有效之后,获取所述证书中的公钥作为所述第三方公钥。
4.如权利要求2或3所述的方法,其特征在于,所述获取所述证书中的公钥作为所述第三方公钥包括:
从可信存储区域中读取所述第三方公钥的哈希值;
计算所述证书中的公钥的哈希值;
在所述第三方公钥的哈希值与所述证书中的公钥的哈希值一致时,将所述证书中的公钥用作所述第三方公钥。
5.如权利要求1至4中任一项所述的方法,其特征在于,所述数据结构文件包括所述不可变区域的哈希值;
所述利用所述数据结构文件来验证待测固件的至少一个区域的完整性包括:
计算所述待测固件的至少一个区域中的每个区域的哈希值;
将所述至少一个区域中的每个区域的哈希值与所述不可变区域中的对应不可变区域的哈希值进行比较,以验证所述至少一个区域的完整性。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述方法由基板管理控制器来执行;
在利用所述数据结构文件来验证待测固件的至少一个区域的完整性之前,所述方法还包括:
控制存储器与平台控制器中心断开;
通过串行外设接口从所述存储器中读取所述待测固件;
所述方法还包括:
在对所述至少一个区域的完整性验证通过之后,控制所述存储器与所述平台控制器中心连通。
7.一种验证固件的装置,其特征在于,包括:
确定模块,用于确定由可信第三方生成的第三方公钥;
签名验证模块,用于基于所述第三方公钥来验证数据结构文件的签名,以验证所述数据结构文件的可信性,其中,所述数据结构文件用于表示由所述可信第三方测试通过的安全固件的不可变区域,所述签名是由所述可信第三方利用与所述第三方公钥对应的第三方私钥而得到的;
完整性验证模块,用于在确定所述数据结构文件可信之后,利用所述数据结构文件来验证待测固件的至少一个区域的完整性。
8.如权利要求7所述的装置,其特征在于,所述确定模块进一步用于:
读取与所述数据结构文件对应的证书;
获取所述证书中的公钥作为所述第三方公钥。
9.如权利要求8所述的装置,其特征在于,所述确定模块进一步用于:
确定所述证书的有效性;
在确定所述证书有效之后,获取所述证书中的公钥作为所述第三方公钥。
10.如权利要求8或9所述的装置,其特征在于,所述确定模块进一步用于:
从可信存储区域读取第三方公钥的哈希值;
计算所述证书中的公钥的哈希值;
在所述第三方公钥的哈希值与所述证书中的公钥的哈希值一致时,将所述证书中的公钥用作所述第三方公钥。
11.如权利要求7至10中任一项所述的装置,其特征在于,所述数据结构文件包括所述不可变区域的哈希值;
所述完整性验证模块进一步用于:计算所述待测固件的至少一个区域中的每个区域的哈希值;将所述至少一个区域中的每个区域的哈希值与所述不可变区域中的对应不可变区域的哈希值进行比较,以验证所述至少一个区域的完整性。
12.如权利要求7至11中任一项所述的装置,其特征在于,所述装置是基板管理控制器;
所述装置还包括:
控制模块,用于在利用所述数据结构文件来验证待测固件的至少一个区域的完整性之前,控制存储器与平台控制器中心断开;
读取模块,用于通过串行外设接口从所述存储器中读取所述待测固件;
其中,所述控制模块还用于在对所述至少一个区域的完整性验证通过之后,控制所述存储器与所述平台控制器中心连通。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可执行权利要求1至6中任一项所述方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710311881.2A CN108345805B (zh) | 2017-05-05 | 2017-05-05 | 验证固件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710311881.2A CN108345805B (zh) | 2017-05-05 | 2017-05-05 | 验证固件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108345805A true CN108345805A (zh) | 2018-07-31 |
CN108345805B CN108345805B (zh) | 2022-09-02 |
Family
ID=62963210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710311881.2A Active CN108345805B (zh) | 2017-05-05 | 2017-05-05 | 验证固件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345805B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784063A (zh) * | 2018-12-30 | 2019-05-21 | 联想(北京)有限公司 | 信息处理方法、装置及电子设备 |
CN110362427A (zh) * | 2019-06-26 | 2019-10-22 | 苏州浪潮智能科技有限公司 | 一种镜像文件的处理方法、***、bmc及可读存储介质 |
CN111046440A (zh) * | 2019-12-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种安全区域内容的篡改验证方法及*** |
CN112699345A (zh) * | 2020-12-30 | 2021-04-23 | 合肥市芯海电子科技有限公司 | 固件安全运行的方法及***、设备及存储介质 |
CN112955888A (zh) * | 2019-01-08 | 2021-06-11 | 慧与发展有限责任合伙企业 | 保护节点组 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102742290A (zh) * | 2009-12-04 | 2012-10-17 | Lg电子株式会社 | 数字广播接收器和数字广播接收器的启动方法 |
CN103038745A (zh) * | 2010-05-21 | 2013-04-10 | 惠普发展公司,有限责任合伙企业 | 扩展完整性测量 |
CN104156659A (zh) * | 2014-08-14 | 2014-11-19 | 电子科技大学 | 一种嵌入式***的安全启动方法 |
CN106161024A (zh) * | 2015-04-03 | 2016-11-23 | 同方股份有限公司 | 一种usb控制芯片级的usb设备可信认证方法及其*** |
-
2017
- 2017-05-05 CN CN201710311881.2A patent/CN108345805B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102742290A (zh) * | 2009-12-04 | 2012-10-17 | Lg电子株式会社 | 数字广播接收器和数字广播接收器的启动方法 |
CN103038745A (zh) * | 2010-05-21 | 2013-04-10 | 惠普发展公司,有限责任合伙企业 | 扩展完整性测量 |
CN104156659A (zh) * | 2014-08-14 | 2014-11-19 | 电子科技大学 | 一种嵌入式***的安全启动方法 |
CN106161024A (zh) * | 2015-04-03 | 2016-11-23 | 同方股份有限公司 | 一种usb控制芯片级的usb设备可信认证方法及其*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784063A (zh) * | 2018-12-30 | 2019-05-21 | 联想(北京)有限公司 | 信息处理方法、装置及电子设备 |
CN112955888A (zh) * | 2019-01-08 | 2021-06-11 | 慧与发展有限责任合伙企业 | 保护节点组 |
CN110362427A (zh) * | 2019-06-26 | 2019-10-22 | 苏州浪潮智能科技有限公司 | 一种镜像文件的处理方法、***、bmc及可读存储介质 |
CN111046440A (zh) * | 2019-12-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 一种安全区域内容的篡改验证方法及*** |
CN112699345A (zh) * | 2020-12-30 | 2021-04-23 | 合肥市芯海电子科技有限公司 | 固件安全运行的方法及***、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108345805B (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108345805A (zh) | 验证固件的方法及装置 | |
RU2728524C1 (ru) | Способ и устройство консенсусной верификации | |
EP3637297A1 (en) | Securing firmware | |
US10372914B2 (en) | Validating firmware on a computing device | |
CN111542820B (zh) | 用于可信计算的方法和装置 | |
CN101960464B (zh) | 信息处理装置 | |
CN107077574B (zh) | 用于客户端设备的信任服务 | |
JP6641241B2 (ja) | 情報共有システム、計算機、及び、情報共有方法 | |
US20210167960A1 (en) | Certifying Authenticity of Stored Code and Code Updates | |
CN108696349A (zh) | 将可信执行环境用作为证明提供隐私的可信第三方 | |
CN109710315A (zh) | Bios刷写方法及bios镜像文件的处理方法 | |
EP3458999A1 (en) | Self-contained cryptographic boot policy validation | |
CN108287999A (zh) | 一种基于TrustZone的***可信启动方法 | |
CN111079168A (zh) | 用于可信i/o的安全硬件和软件证明的技术 | |
CN110647740B (zh) | 一种基于tpm的容器可信启动方法及装置 | |
US11868474B2 (en) | Securing node groups | |
CN109714303A (zh) | Bios启动方法及数据处理方法 | |
WO2013101236A1 (en) | Securing device environment for trust provisioning | |
CN114065176A (zh) | 安全运算装置、安全运算方法、验证器及装置验证方法 | |
CN106156618A (zh) | 一种安全芯片、移动终端和实现移动终端***安全的方法 | |
CN102063593A (zh) | 主动控制功能的可信设备及其认证方法 | |
EP3317875A1 (en) | Virtual machine integrity | |
CN111125725A (zh) | 一种镜像校验的加解密方法、设备及介质 | |
US20200117439A1 (en) | Systems and Methods for Reinforced Update Package Authenticity | |
CN113190880B (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 |