一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

快速外设组件互联设备启动方法、装置以及存储介质与流程

2022-02-24 16:46:53 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种快速外设组件互联设备启动方法、装置以及存储介质。


背景技术:

2.随着网络技术的发展,计算机设备对网络安全的要求越来越严格,为了保证计算机设备的网络安全,一般在系统初始化的过程中,计算机设备中的可信平台模块(trusted platform module,tpm)芯片对计算机设备内的部分部件进行验证,计算机设备启动通过验证的部件。
3.以计算机设备启动基本输入输出系统(base input output system,bios)为例,目前,计算机设备启动bios的过程为:在系统初始化过程中,tpm芯片读取bios的固件(firmware),对读取到的固件进行完整性验证,若读取到的固件通过验证,则固件没有被篡改,计算机设备启动bios,若读取到的固件未通过验证,则固件可能被篡改,计算机设备不启动bios,从而避免启动被篡改的bios。
4.但是tpm芯片仅对计算机设备中的bios、基板管理控制器(baseboard management controller,bmc)等部分部件进行完整性验证,而未对计算机设备上挂载的快速外设组件互联(peripheral component interconnect express,pcie)设备进行完整性验证,那么计算机设备启动的pcie设备不一定安全,例如pcie设备可能已经被植入恶意代码,后续计算机设备内的操作系统与被植入恶意代码的pcie设备进行通信时,可能导致操作系统被恶意代码攻击,进而威胁计算机设备的安全,因此为了避免pcie设备威胁计算机设备的安全,亟需一种能够安全启动pcie设备的方法。


技术实现要素:

5.本技术实施例提供了一种快速外设组件互联设备启动方法、装置以及存储介质,能够降低pcie设备对计算机设备造成的安全风险。该技术方案如下:
6.第一方面,提供了一种快速外设组件互联pcie设备启动方法,该方法包括:
7.所述处理芯片获取所述pcie设备的固件;所述处理芯片对所述固件进行验证;若所述固件通过验证,所述处理芯片利用基本输入输出系统bios启动所述pcie设备。
8.该方法通过处理芯片对pcie设备的固件进行验证,以确定pcie设备的固件是否被篡改,且bios仅能启动通过验证的固件所在的pcie设备,从而避免计算机设备启动固件被篡改的pcie设备,以降低pcie设备对计算机设备造成的安全风险。
9.在一种可能实现方式中,所述方法还包括:
10.若所述固件未通过验证,所述处理芯片利用所述bios不启动所述pcie设备。
11.基于上述可能的实现方式,通过不启动固件未通过验证的pcie设备,避免计算机设备启动固件被篡改的pcie设备,以降低pcie设备对计算机设备造成的安全风险。
12.在一种可能实现方式中,所述处理芯片利用所述bios不启动所述pcie设备包括:
13.所述bios控制所述pcie设备处于复位状态或者下电状态;
14.或,所述处理芯片利用所述bios将所述pcie设备标记为禁止启动状态,所述禁止启动状态用于指示不启动所述pcie设备。
15.基于上述可能的实现方式,通过bios控制固件未通过验证的pcie设备处于复位状态或者下电状态,或将所述pcie设备标记为禁止启动状态,从而彻底屏蔽固件未通过验证的pcie设备。
16.在一种可能实现方式中,所述处理芯片获取所述pcie设备的固件包括:
17.所述处理芯片从所述pcie设备读取所述固件。
18.在一种可能实现方式中,所述处理芯片从所述pcie设备读取所述固件包括:
19.所述处理芯片向所述pcie设备发送固件读取消息;所述处理芯片接收所述pcie设备基于所述固件读取消息所返回的所述固件;其中,所述固件读取消息用于指示读取所述固件。
20.在一种可能实现方式中,所述处理芯片向所述pcie设备发送固件读取消息之后,所述方法还包括:
21.所述处理芯片接收读取消息应答响应;其中,所述读取消息应答响应用于指示所述pcie设备已经接收到所述固件读取消息。
22.基于上述可能的实现方式,处理芯片通过接收pcie设备发送的读取消息应答响应,可以获知pcie设备已经接收到固件读取消息,避免处理芯片误认为固件读取消息丢包,而重发固件读取消息。
23.在一种可能实现方式中,所述处理芯片接收所述pcie设备基于所述固件读取消息所返回的所述固件之后,所述方法还包括:
24.所述处理芯片接收第一传输完成消息;所述处理芯片基于所述第一传输完成消息以及接收到的所述固件,向所述pcie设备发送接收完成响应,其中,所述第一传输完成消息用于指示所述pcie设备已经发送完所述固件,所述接收完成响应用于指示所述处理芯片已经接收完所述固件。
25.基于上述可能的实现方式,处理芯片通过接收pcie设备发送的第一传输完成消息,获知已经接收完pcie设备发送的固件,从而可以对该固件进行验证,以避免处理芯片在还未接收完pcie设备发送的固件的情况下,对接收到数据进行验证,而造成的验证结果出现误差。
26.在一种可能实现方式中,所述处理芯片包含安全芯片、处理器或桥片。
27.在一种可能实现方式中,所述处理芯片获取所述pcie设备的固件包括:
28.对于所述计算机设备的处理器和桥片中的任一设备,所述处理芯片从所述任一设备接收所述固件。
29.在一种可能实现方式中,所述任一设备向所述处理芯片发送获取到的所述固件之前,所述方法还包括:
30.所述处理芯片接收固件接收消息;所述处理芯片基于所述固件接收消息,向所述任一设备发送接收消息应答响应,其中,所述固件接收消息用于指示所述处理芯片准备接收所述固件,所述接收消息应答响应用于指示所述处理芯片已经准备接收所述固件。
31.在一种可能实现方式中,所述处理芯片从所述任一设备接收所述固件之后,所述
方法还包括:
32.所述处理芯片接收第二传输完成消息;所述处理芯片基于所述第二传输完成消息以及接收到的所述固件,向所述任一设备发送接收完成响应;其中,所述第二传输完成消息用于指示所述任一设备已经发送完所述固件,所述接收完成响应用于指示所述处理芯片已经接收完所述固件。
33.在一种可能实现方式中,所述处理芯片对所述固件进行验证之后,所述方法还包括:
34.所述处理芯片向所述bios发送对所述固件进行验证的验证结果,所述验证结果用于指示所述固件是否通过验证。
35.在一种可能实现方式中,所述处理芯片存储有所述pcie设备的公钥,所述公钥用于对所述固件进行验证。
36.在一种可能实现方式中,所述方法还包括:
37.所述处理芯片基于公钥修改指令,对存储的所述pcie设备的公钥进行修改。
38.基于上述可能的实现方式,能够修改处理芯片存储的pcie设备的公钥。
39.在一种可能实现方式中,所述固件包括签名数据。
40.在一种可能的实现方式中,所述固件为所述pcie设备的扩展只读存储器rom中的镜像。
41.第二方面,提供了一种快速外设组件互联pcie设备装置,所述装置包括处理芯片以及pcie设备,其中,所述处理芯片用于执行上述快速外设组件互联pcie设备方法。具体地,该快速外设组件互联pcie设备装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的快速外设组件互联pcie设备方法的功能模块。
42.第三方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该程序代码由处理器加载并执行以实现如上述快速外设组件互联pcie设备方法所执行的操作。
43.第四方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可选实现方式中提供的方法。
44.第五方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条程序代码,该程序代码由该处理器加载,以使得所述计算机设备实现上述第一方面或上述第一方面的任一种可选方式中提供的方法。
附图说明
45.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要启动的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
46.图1是本技术实施例提供的一种计算机设备的结构的示意图;
47.图2是本技术实施例提供的另一种计算机设备的结构示意图;
48.图3是本技术实施例提供的一种pcie设备启动方法的流程图;
49.图4是本技术实施例提供的一种pcie设备启动的示意图;
50.图5是本技术实施例提供的一种pcie设备启动方法的流程图;
51.图6是本技术实施例提供的另一种pcie设备启动的示意图;
52.图7是本技术实施例提供的一种pcie设备启动方法的流程图;
53.图8是本技术实施例提供的一种另一种pcie设备启动方法的流程图;
54.图9是本技术实施例提供的一种pcie设备启动的示意图;
55.图10是本技术实施例提供的一种pcie设备启动方法的流程图;
56.图11是本技术实施例提供的另一种pcie设备启动方法的流程图;
57.图12是本技术实施例提供的一种pcie设备启动装置的结构示意图。
具体实施方式
58.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
59.图1是本技术实施例提供的一种计算机设备的结构的示意图,参见图1,该计算机设备100包括多个快速外设组件互联(peripheral component interconnect express,pcie)设备101以及处理芯片102。该计算机设备100还包括控制器系统,该控制器系统用于保证计算机设备100能够正常运行,该控制器系统包括处理器103和/或桥片104,该处理器103上运行有bios,bios用于启动或加载该计算机设备100中安装的硬件(例如pcie设备101)或软件。可选地,该处理器系统还包括内存(memory)以及闪存(flash),例如,随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)。
60.其中,每个pcie设备101包括固件(firmware)1011,固件1011用于实现pcie设备101的功能,其中,固件1011包括签名数据。pcie设备101包括网卡、磁盘阵列(redundant arrays of independent disks,raid)卡、显卡、外设组件互联(peripheral component interconnect,pci)固态驱动(solid state drive,ssd)卡以及加速卡等,本技术实施例对pcie设备101不做具体限定。
61.处理芯片102,用于获取pcie设备101的固件1011,并对获取到的固件1011进行验证,若固件1011通过验证,则由bios启动该固件1011所在的pcie设备101,否则不启动该固件1011所在的pcie设备101。
62.可选地,该处理芯片102存储有多个pcie设备101的公钥,每个公钥分别对应一个pcie设备的目标标识,一个公钥用于对对应的目标标识所指示的pcie设备的固件进行验证。其中,一个目标标识用于指示一个pcie设备,该目标标识为该pcie设备的设备标识,或者该pcie设备所在槽位的槽位标识。可选地,当该处理芯片102接收到公钥修改指令时,处理芯片102基于该公钥修改指令,对存储的所述pcie设备的公钥进行修改。其中,该公钥修改指令包括至少一个目标公钥以及每个目标公钥对应的目标标识,对于该至少一个目标公钥中任一目标公钥所对应的任一目标标识,处理芯片102将存储的该任一目标标识所对应的公钥修改为该任一目标公钥。
63.可选地,该处理芯片102包括可信根(root of trust,rot)1021,其中,rot 1021为该计算机设备100内的可信计算系统中的可信任的模块,是基于密码学和硬件保护的可信
任源头,以它作为起点建立系统的信任链。该rot 1021用于对固件1011进行验证。rot 1021内存储多个pcie设备101的公钥,以便rot 1021基于每个pcie设备101的公钥,对每个pcie设备101的固件1011进行验证。
64.可选地,处理芯片102为安全芯片、处理器103或者桥片104。当该处理芯片102为安全芯片时,该处理芯片102不属于处理器系统内,此时,处理芯片102为处理器系统以外的一个独立芯片,该安全芯片能够通过第一通信接口与处理器103连接。可选地,安全芯片通过第一通信接口,向处理器103发送对固件1011的验证结果,由处理器103上运行的biso基于该验证结果,判断是否启动该固件1011所在的pcie设备101。可选地,当处理器103与pcie设备101连接时,处理器103还能够通过该第一通信接口向安全芯片提供pcie设备101的固件1011;当桥片104与pcie设备101连接时,安全芯片还能通过第二通信接口与桥片连接,以便桥片104向安全芯片提供pcie设备101的固件1011。其中,第一通信接口或第二通信接口包括低管脚数(low pin count,lpc)接口、串行外设接口(serial peripheral interface,spi)或通用串行总线(universal serial bus,usb)接口。在一种可能的实现方式中,该处理器103或桥片通过pcie接口与该pcie设备连接。
65.当处理芯片102为处理器103或者桥片104时,处理芯片102属于该处理器系统,此时,处理器系统中的处理器103或桥片104除了能够实现本身的功能以外还能实现上述安全芯片的功能,例如图2所示的本技术实施例提供的另一种计算机设备的结构示意图,计算机设备200可因配置或性能不同而产生比较大的差异,包括一个或一个以上的处理器201和一个或一个以上的存储器202,该计算机设备200还包括一个或一个以上的pcie设备203,其中,所述存储器202中存储有至少一条程序代码,所述至少一条程序代码由所述处理器201加载并执行以实现下述各个方法实施例提供的pcie设备启动方法。例如,处理器201获取pcie设备203的固件,并对获取的固件进行验证,若固件通过验证,则由bios启动该pcie设备203,否则不启动该pcie设备203。当然,该计算机设备200还可以具有有线或无线网络接口以及输入输出接口等部件,以便进行输入输出,该计算机设备200还可以包括其他用于实现设备功能的部件,在此不做赘述。
66.需要说明的是,上述提及的处理器(例如处理器103或处理器201)包括中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)以及人工智能(artificial intelligence,ai)处理器等,本技术实施例对该处理器的不做具体限定。
67.在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由计算机设备中的处理器执行以完成下述实施例中的pcie设备启动方法。例如,该计算机可读存储介质可以是rom、随机存取存储器(random access memory,ram)、只读光盘(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
68.在一种可能的实现方式中,当处理芯片为安全芯片时,该处理芯片从pcie设备获取pcie设备的固件,并对获取到的固件进行验证,再由bios基于处理芯片的验证结果判断是否启动该pcie设备。为了进一步说明这个过程,参见图3所示的本技术实施例提供的一种pcie设备启动方法的流程图,应用于包括处理芯片以及pcie设备的计算机设备。
69.301、pcie设备存储固件。
70.其中,该pcie设备为该计算机设备内的任一pcie设备。该固件包括签名数据,该固件还包括固件代码,其中,该签名数据为固件代码的数字签名,用于确定固件代码是否被篡改,也即是签名数据用于保证固件代码的完整性。该固件代码为用于实现该pcie设备的功能的代码。
71.在一种可能的实现中,该pcie设备基于目标摘要计算算法,对该固件代码进行计算,得到该固件代码的摘要数据,并基于该pcie设备的私钥以及目标加密算法,对该摘要数据进行加密,得到该签名数据;该pcie设备将该固件代码和该签名数据组合成固件。可选地,该目标摘要计算算法包括哈希算法、消息摘要(message digest,md)算法、安全散列算法(secure hash algorithm,sha)、消息认证码(message authentication code,mac)算法以及其他摘要计算算法。本技术实施例对该目标摘要计算算法不做具体限定。该目标加密算法为pcie设备与处理芯片协商好的加密算法,该目标加密算法包括数字签名算法(digital signature algorithm,dsa),椭圆曲线数字签名算法(elliptic curve digital signature algorithm,ecdsa)或由罗纳德
·
李维斯特(ron rivest)、阿迪
·
萨莫尔(adi shamir)和伦纳德
·
阿德曼(leonard adleman)三人提出的rsa加密算法,本技术实施例对该目标加密算法不做具体限定。
72.在一种可能的实现方式中,该pcie设备将该固件代码和该签名数据组合成固件的过程为:该pcie设备将该签名数据存储在该固件代码的目标位置,得到固件,其中,该目标位置为该固件代码的任一位置,例如固件代码的头部、中间的某一位置或尾部,该目标位置为该pcie设备与处理芯片协商好的用于存储签名数据的位置,本技术实施例对该目标位置不做具体限定。
73.当该固件组合完成后,该pcie设备将该固件存储在该pcie设备的存储器中,可选地,该pcied设备的存储器为flash。
74.302、该处理芯片向该pcie设备发送固件读取消息,该固件读取消息用于指示读取该pcie设备的固件。
75.该固件读取消息包括读标识,其中,该读标识用于指示读取该pcie设备的固件。可选地,该固件读取消息还包括固件标识,用于指示待验证的固件。可选地,该固件读取消息还包括该pcie设备的目标标识和该处理芯片的芯片标识,该芯片标识用于指示该处理芯片。可选地,该固件读取消息还包括数据传输时的传输单元参数值,该传输单元参数值用于指示pcie设备每发送一次数据的数据量,例如,一次发送一个字节的数据或者1m字节(byte)的数据等。
76.该处理芯片与pcie设备通过第三通信接口连接,该处理芯片通过该第三通信接口向该pcie设备发送该固件读取消息。其中,第三通信接口包括lpc接口、spi或usb接口。例如,图4所示的本技术实施例提供的一种pcie设备启动的示意图中的处理芯片通过spi与pcie设备连接,处理芯片通过spi向pcie设备发送固件读取消息。
77.该第三通信接口上还运行有第一命令接口,以便该处理芯片能够从该pcie设备上读取到该固件,也即是该第一命令接口支持该处理芯片从pcie设备读取固件过程中,处理芯片与pcie设备之间的交互信令。
78.若该处理芯片内存储多个待验证的pcie设备的目标标识,当该计算机设备上电或者复位后,则对于每个待验证的pcie设备,该处理芯片通过步骤302-316来获取每个待验证
的pcie设备固件,以便对获取到的固件进行验证。
79.303、该pcie设备接收该固件读取消息。
80.该pcie设备通过该第三通信接口接收该处理芯片发送的固件读取消息。
81.304、该pcie设备基于该固件读取消息,向该处理芯片发送读取消息应答响应,该读取消息应答响应用于指示该pcie设备已经接收到该固件读取消息。
82.该读取消息应答响应包括第一应答标识,该第一应答标识用于指示该pcie设备已经接收到该固件读取消息。可选地,该读取消息应答响应还包括该pcie设备的目标标识以及该处理芯片的芯片标识。
83.当该pcie设备接收到该固件读取消息后,该pcie设备通过该第三通信接口,向该处理芯片返回该读取消息应答响应,以告知该处理芯片该pcie设备已经接收到固件读取消息,pcie设备后续会向该处理芯片返回该处理芯片所请求的固件。
84.305、该处理芯片接收该读取消息应答响应。
85.该处理芯片通过第三通信接口,接收该pcie设备发送的该读取消息应答响应。当该处理芯片接收到该读取消息应答响应时,说明此时pcie设备已经接收到该处理芯片发送的固件读取消息,该pcie设备可能已经开始向该处理芯片发送固件,则该处理芯片开始准备接收固件。
86.当该处理芯片在第一时长内未接收到该读取消息应答响应,则说明该处理芯片之前发送的固件读取消息可能未达到pcie设备,则该处理芯片执行上述步骤302,继续向该pcie设备发送固件读取消息。其中,该第一时长为任一时长,本技术实施例对该任一时长不做具体限定。
87.306、该pcie设备基于该固件读取消息,向该处理芯片发送该固件。
88.当该pcie设备接收到该固件读取消息后,该pcie设备基于该固件读取消息中的读标识或固件标识,从该pcie设备的存储器中获取该固件,并向该处理芯片发送获取到的该固件。
89.可选地,该pcie设备基于该固件读取消息中的处理芯片的芯片标识,向该处理芯片发送获取到固件。可选地,该pcie设备基于该固件读取消息包括的传输单元参数值以及该固件的大小,向该处理芯片发送获取到的固件。
90.307、该处理芯片接收该固件。
91.该处理芯片通过第三通信接口,接收该pcie设备发送的该固件。本步骤307所示的过程也即是该处理芯片接收该pcie设备基于该固件读取消息所返回的固件的过程。
92.需要说明的是,上述步骤302-307所示的过程为该处理芯片从该pcie设备读取该固件的过程,也即是该处理芯片获取该pcie设备的固件的一种可能的实现过程。
93.308、该pcie设备向该处理芯片发送第一传输完成消息,该第一传输完成消息用于指示该pcie设备已经发送完该固件。
94.该第一传输完成消息包括第一传输完成标识,该第一传输完成标识用于指示该pcie设备已经发送完该固件。可选地,该第一传输完成消息还包括该固件的大小。
95.当该pcie设备将该固件全部输出后,该pcie设备执行本步骤308,以告知该处理芯片该固件已经发送完成。可选地,该pcie设备通过该第三通信接口向该处理芯片发送该第一传输完成消息。
96.309、该处理芯片接收该第一传输完成消息。
97.该处理芯片通过第三通信接口,接收该pcie设备发送的该第一传输完成消息。
98.310、该处理芯片基于该第一传输完成消息以及接收到的该固件,向该pcie设备发送接收完成响应,该接收完成响应用于指示该处理芯片已经接收完该固件。
99.该接收完成响应包括接收完成标识,该接收完成标识用于指示该处理芯片已经接收完该固件。
100.当该第一传输完成消息仅包括第一传输完成标识时,若该处理芯片接收到该固件中包括结束标识,和/或接收到该第一传输完成消息,则表明该处理芯片已经接收完该固件,则该处理芯片通过第三通信接口,向该pcie设备发送该接收完成响应。其中该结束标识为固件中的最后一个数据。
101.当该第一传输完成消息包括第一传输完成标识以及固件的大小时,若该处理芯片接收到固件的大小和第一传输完成消息中的大小相同,则表明该处理芯片已经接收完该固件,则该处理芯片通过第三通信接口,向该pcie设备发送该接收完成响应。
102.311、该处理芯片对该固件进行验证,得到验证结果,该验证结果用于指示该固件是否通过验证。
103.该验证结果包括该pcie设备的目标标识、第一结果标识/第二结果标识,其中,第一结果标识用于指示pcie设备的固件通过验证,该第二结果标识用于指示该pcie设备的固件未通过验证。
104.该处理芯片基于存储的该pcie设备的公钥,对该固件进行验证。在一种可能的实现方式中,该处理芯片从该固件的固件代码的目标位置获取签名数据,并基于该pcie设备的公钥以及该目标解密算法,对该签名数据进行解密,得到解密数据;该处理芯片基于目标摘要计算算法,对固件代码进行计算,得到固件代码的摘要数据;若得到的摘要数据和该解密数据相同,则说明该固件中的固件代码未被篡改,固件代码是完整的,则该固件通过验证;若得到的摘要数据和该解密数据不同,则该说明固件代码已经被篡改,固件代码不完整,则该固件未通过验证。其中,该目标解密算法为目标加密算法的逆算法,用于对固件的签名数据进行解密。
105.该处理芯片每获取到一个固件的验证结果后,对该固件的验证结果进行存储,以便后续查找。
106.312、bios向该处理芯片发送验证结果查询消息,该验证结果查询消息用于向处理芯片查询该pcie设备的固件的验证结果。
107.该验证结果查询消息包括该pcie设备的目标标识以及查询标识,该查询标识用于指示向处理芯片查询该pcie设备的固件的验证结果。
108.在一种可能的实现方式中,当该计算机设备上电或者复位后,该计算机设备的处理器运行bios,当bios开始运行后,bios枚举该计算机设备上的各个pcie设备,当该bios枚举到该pcie设备后,执行本步骤312。或者,当该bios枚举完该计算机设备内的各个pcie设备后,对于枚举到任一pcie设备,执行本步骤312。可选地,该bios通过该计算机设备的处理器与该处理芯片之间的第一通信接口,向该处理芯片发送该验证结果查询消息。可选地,该bios可以向该处理芯片的处理器发送该验证结果查询消息。例如图4所示的本申中的第一通信接口为lpc接口,bios通过lpc接口向处理芯片发送该验证结果查询消息。
109.需要说明的是,bios枚举pcie设备的过程与处理芯片获取固件并对获取到的固件进行验证的过程能够同时执行。或者是,当bios枚举完该计算机设备内的pcie设备后,该处理芯片再获取各个pcie设备的固件并对获取到的固件进行验证。本技术实施例对bios枚举pcie设备以及处理芯片验证固件的执行顺序不做具体限定。
110.需要说明的是,本步骤312为可选步骤,在另一种可能的实现方式中,bios无需向处理芯片发送验证结果查询消息,也即是无需执行本步骤312,bios等待处理芯片主动上传验证结果即可。
111.313、该处理芯片基于该验证结果查询消息,向该bios发送对该固件进行验证的验证结果。
112.当该处理芯片接收到该验证结果查询消息后,该处理芯片根据该验证结果查询消息中的pcie设备的目标标识,从存储的多个验证结果中查询包括该目标标识的验证结果,并通过第一通信接口向处理器中运行的bios发送查询到的验证结果。例如图4中的处理芯片与处理器连接的第一通信接口为lpc接口,则该处理芯片通过lpc接口向处理器中运行的bios发送该验证结果。
113.对于bios不执行上述步骤312的情况,处理芯片每获取到一个固件的验证结果后,通过第一通信接口向bios发送该验证结果。
114.需要说明的是,本步骤313所示的过程也即是处理芯片向该bios发送对该固件进行验证的验证结果的过程。步骤313还可以由该处理芯片的处理器来执行。
115.314、该bios接收该验证结果。
116.该bios通过第一通信接口接收该处理芯片发送的该验证结果。
117.315、当该验证结果指示该固件通过验证时,bios启动该pcie设备。
118.若该验证结果包括第一结果标识,则表明固件通过验证,则该bios基于该验证结果中的目标标识启动该pcie设备。
119.在一种可能的实现方式中,bios启动该pcie设备的过程为:该bios对该pcie设备进行配置,例如为该pcie设备分配pci资源,以便该pcie设备对该计算机设备内的操作系统(operating system,os)可见。其中,该pci资源包括总线设备功能(bus device function,bdf)和内存空间。
120.需要说明的是,本步骤315所示的过程也即是若该固件通过验证,该计算机设备的bios启动该pcie设备的过程。另外,在biso启动该pcie设备之前该pcie设备已经上电,因此,pcie设备能够与处理芯片进行交互,所以,本技术实施例中的启动pcie设备不是指为pcie设备上电和/或pcie设备与处理芯片进行交互,而是指正常配置pcie设备,以便正常配置后的pcie设备能够完全正常工作。
121.需要说明的是,上述步骤312-315所示的过程也即是该处理芯片利用基本输入输出系统bios启动该pcie设备的过程。
122.316、当该验证结果指示该固件未通过验证时,该bios不启动该pcie设备。
123.若该验证结果包括第二结果标识,则表明固件未通过验证,则该bios基于该验证结果中的目标标识,不启动该pcie设备。
124.该bios可以通过屏蔽该pcie设备,来实现不启动该pcie设备,从而使得该计算机设备内的操作系统对未启动的pcie设备不可见。在一种可能的实现方式中,该bios屏蔽该
pcie设备的过程为:该bios控制该pcie设备处于复位状态或者下电状态,或,该bios将该pcie设备标记为禁止启动状态,该禁止启动状态用于指示不启动所述pcie设备,从而彻底屏蔽有安全隐患的pcie设备。可选地,该bios控制该计算机设备中的处理器系统的硬件电路输出pcie复位(reset)信号,以使该pcie设备处于复位状态。可选地,当该计算机设备支持pcie设备热拔插时,该pcie设备的供电电路由目标控制器控制,则该bios向目标控制器发送对该pcie设备下电的下电指令,当该目标控制器接收到该下电指令后,则该目标控制器对该pcie设备的供电电路进行控制,以给pcie设备下电。可选地,该bios可以将该pcie设备的目标标识与该禁止启动状态的状态标识进行关联存储,以实现将该pcie设备标记为禁止启动状态。
125.需要说明的是,上述步骤312-314以及316所示的过程也即是若该固件未通过验证,该处理芯片利用该bios不启动该pcie设备的过程。
126.为了进一步表明上述步骤302-316所示的过程,例如图5所示的本技术实施例提供的一种pcie设备启动方法的流程图。在图5中,计算机设备上电或者复位后,一方面处理器运行bios,由bios枚举计算机设备内的pcie设备;另一方面,对于计算机设备内的任一pcie设备,该处理芯片从该pcie设备读取固件,并对读取到的固件进行验证,并将验证结果发送给bios,若验证结果指示固件通过验证,则bios正常配置该pcie设备(也即是启动该pcie设备),以便该pcie设备对计算机设备的os可见;若验证结果指示固件未通过验证,则该bios屏蔽该pcie设备(也即是不启动该pcie设备),以便该pcie设备对该os不可见;当bios配置完所有通过验证的固件所在的pcie设备后,bios加载该os。
127.在另一种可能的实现方式中,该处理芯片等待bios发送查询指令,当该处理芯片接收到该查询指令后,对于该查询指令所指示的pcie设备,该计算机设备执行步骤302-307以及310-316所示的过程。
128.本技术实施例提供的方法,通过处理芯片对pcie设备的固件进行验证,以确定pcie设备的固件是否被篡改,且bios仅能启动通过验证的固件所在的pcie设备,从而避免计算机设备启动固件被篡改的pcie设备,以降低pcie设备对计算机设备造成的安全风险。并且,处理芯片通过接收pcie设备发送的读取消息应答响应,可以获知pcie设备已经接收到固件读取消息,避免处理芯片误认为固件读取消息丢包,而重发固件读取消息。处理芯片通过接收pcie设备发送的第一传输完成消息,获知已经接收完pcie设备发送的固件,从而可以对该固件进行验证,以避免处理芯片在还未接收完pcie设备发送的固件的情况下,对接收到数据进行验证,而造成的验证结果出现误差。
129.在一种可能的实现方式中,当处理芯片为安全芯片时,计算机设备的处理器系统获取pcie设备的固件,并将获取到的固件提供给处理芯片,由处理芯片对处理器系统提供的固件进行验证,再由bios基于处理芯片的验证结果判断是否启动该固件所在的pcie设备,例如,图6所示的本技术实施例提供的另一种pcie设备启动的示意图。为了进一步说明这个过程,参见图7所示的本技术实施例提供的一种pcie设备启动方法的流程图,应用于包括处理芯片以及pcie设备的计算机设备。
130.701、pcie设备存储固件。
131.该pcie设备在存储该固件之前,可以先获取该固件。其中,pcie设备获取该固件的过程在步骤301中有相关介绍,在此,本技术实施例对pcie设备获取该固件的过程不做赘
述。
132.在一种可能的实现方式中,该pcie设备存储该固件的过程为:该pcie设备将该固件作为一个rom镜像(image)存储在该pcie设备的扩展(expansion)rom中,并将该扩展rom的起始地址存储在pcie设备的基址寄存器(base address registers,bar)空间内的扩展rom基址字段中。此时,该固件为该pcie设备的扩展rom中的镜像,可选地,该固件可以是该pcie设备的扩展rom所存储的最后一个镜像。
133.702、对于计算机设备的处理器和桥片中的任一设备,该任一设备获取pcie设备的固件。
134.该任一设备与该pcie设备通过第四通信接口与该pcie设备连接,该第四通信接口为pcie接口。该pcie设备为bios枚举出的任一pcie设备,或者该任一设备存储的多个目标标识中任一目标标识所指示的pcie设备,其中,该多个目标标识所指示的pcie设备为待验证的pcie设备。
135.当该任一设备为处理器时,处理器上运行的bios从该pcie设备的bar空间内的扩展rom基址字段中,读取该pcie设备的扩展rom的起始地址,并基于该rom的起始地址访问该扩展rom,bios从该扩展rom中读取pcie设备的固件。当该扩展rom中存储的最后一个镜像为pcie设备的固件时,该bios读取该扩展rom中存储的最后一个镜像,得到该pcie设备的固件。
136.当该任一设备为桥片时,桥片获取该固件过程与该处理器获取该固件过程同理,在此,本技术实施例对桥片获取该固件的过程不做赘述。
137.703、该任一设备向该处理芯片发送固件接收消息,该固件接收消息用于指示该处理芯片准备接收该固件。
138.该固件接收消息包括准备接收标识,该准备接收标识用于指示该处理芯片准备接收该固件。可选地,该固件接收消息还包括该pcie设备的目标标识和该任一设备的设备标识,其中,该任一设备的设备标识用于指示该任一设备。
139.该任一设备通过该任一设备与该处理芯片之间的通信接口,向该处理芯片发送该固件接收消息,其中,当任一设备为处理器时,该处理器与该处理芯片之间的通信接口为第一通信接口,以第一通信接口为spi为例,图6中的处理器通过spi向处理芯片发送固件接收消息。当任一设备为桥片时,该桥片与该处理芯片之间的通信接口为第二通信接口。
140.704、该处理芯片基于该固件接收消息,向该任一设备发送接收消息应答响应,该接收消息应答响应用于指示该处理芯片已经准备接收该固件。
141.该接收消息应答响应包括接收应答标识,该接收应答标识用于指示该处理芯片已经准备接收该固件。当该处理芯片接收到该固件接收消息后,处理芯片根据该固件消息所包括的准备接收标识,准备接收固件,并通过该处理芯片与该任一设备之间的通信接口,向该任一设备发送接收消息应答响应。
142.需要说明的是,在执行本步骤704之前,该处理芯片可以先接收该固件接收消息,当接收到该固件接收消息后再执行本步骤704。
143.705、该任一设备向该处理芯片发送获取到的该固件。
144.该任一设备通过该任一设备与该处理芯片之间的通信接口,向该处理芯片发送该固件。
145.706、该处理芯片接收该固件。
146.该处理芯片通过该任一设备与该处理芯片之间的通信接口,接收该任一设备发送的该固件。
147.需要说明的是,本步骤706所示的过程也即是该处理芯片从该任一设备接收该固件的过程。上述步骤701-706所示的过程,也即是该处理芯片获取该pcie设备的固件的一种可能的实现过程。
148.707、该任一设备向该处理芯片发送第二传输完成消息,该第二传输完成消息用于指示该任一设备已经发送完该固件。
149.该第二传输完成消息包括第二传输完成标识,该第二传输完成标识用于指示该任一设备已经发送完该固件。可选地,该第二传输完成消息还包括该固件的大小以及该固件所在的pcie设备的目标标识。
150.当该任一设备将该固件全部输出后,该任一设备执行本步骤707,以告知该处理芯片该固件已经发送完成。可选地,该任一设备通过该任一设备与该处理芯片之间的通信接口,向该处理芯片发送该第二传输完成消息。
151.708、该处理芯片接收该第二传输完成消息。
152.该处理芯片通过该任一设备与该处理芯片之间的通信接口,接收该任一设备发送的该第二传输完成消息。
153.709、该处理芯片基于该第二传输完成消息以及接收到的该固件,向该任一设备发送接收完成响应,该接收完成响应用于指示该处理芯片已经接收完该固件。
154.当该第二传输完成消息仅包括第二传输完成标识时,若该处理芯片接收到该固件中包括结束标识,和/或接收到该第二传输完成消息,则表明该处理芯片已经接收完该固件,则该处理芯片通过该任一设备与该处理芯片之间的通信接口,向该任一设备发送该接收完成响应。
155.当该第二传输完成消息包括第二传输完成标识以及固件的大小时,若该处理芯片接收到固件的大小和第二传输完成消息包括的大小相同,则表明该处理芯片已经接收完该固件,则该处理芯片通过该任一设备与该处理芯片之间的通信接口,向该任一设备发送该接收完成响应。
156.710、该处理芯片对该固件进行验证,得到验证结果,该验证结果用于指示该固件是否通过验证。
157.本步骤710与上述步骤311所示的过程同理,在此,本技术实施例对本步骤710不做赘述。
158.711、bios向该处理芯片发送验证结果查询消息,该验证结果查询消息用于向处理芯片查询该pcie设备的固件的验证结果。
159.本步骤711与上述步骤312所示的过程同理,在此,本技术实施例对本步骤711不做赘述。
160.712、该处理芯片基于该验证结果查询消息,向该bios发送对该固件进行验证的验证结果。
161.本步骤712与上述步骤313所示的过程同理,在此,本技术实施例对本步骤712不做赘述。
162.713、该bios接收该验证结果。
163.本步骤713与上述步骤314所示的过程同理,在此,本技术实施例对本步骤713不做赘述。
164.714、当该验证结果指示该固件通过验证时,bios启动该pcie设备。
165.本步骤714与上述步骤315所示的过程同理,本技术实施例对本步骤714不做赘述。
166.715、当该验证结果指示该固件未通过验证时,该bios不启动该pcie设备。
167.本步骤715与上述步骤316所示的过程同理,本技术实施例对本步骤715不做赘述。
168.为了进一步说明步骤702-715所示的过程,参见图8所示的本技术实施例提供的另一种pcie设备启动方法的流程图。在图8中,计算机设备上电或者复位后,处理器运行bios,由bios枚举计算机设备内的pcie设备;任一设备获取pcie设备的固件;任一设备向该处理芯片发送pcie设备的固件;处理芯片对任一设备发送的固件进行验证,并将验证结果发送给bios,若验证结果指示固件通过验证,则bios正常配置该pcie设备,以便该pcie设备对计算机设备的os可见;若验证结果指示固件未通过验证,则该pcie设备屏蔽该pcie设备,以便该pcie设备对该os不可见;当bios配置完所有通过验证的固件所在的pcie设备后,bios加载该os。
169.本技术实施例提供的方法,通过处理芯片对pcie设备的固件进行验证,以确定pcie设备的固件是否被篡改,且bios仅能启动通过验证的固件所在的pcie设备,从而避免计算机设备启动固件被篡改的pcie设备,以降低pcie设备对计算机设备造成的安全风险。并且,处理芯片通过接收任一设备发送的第二传输完成消息,获知已经接收完任一设备发送的固件,从而可以对该固件进行验证,以避免处理芯片在还未接收完任一设备发送的固件的情况下,对接收到数据进行验证,而造成的验证结果出现误差。
170.在一种可能的实现方式中,当该处理芯片为处理器系统中的处理器或桥片时,该处理芯片从pcie设备获取pcie设备的固件,并对获取到的固件进行验证,再由bios基于处理芯片的验证结果判断是否启动该pcie设备,例如图9所示的本技术实施例提供的一种pcie设备启动的示意图。为了进一步说明这个过程,参见图10所示的本技术实施例提供的一种pcie设备启动方法的流程图,应用于包括处理芯片以及pcie设备的计算机设备。
171.1001、处理芯片获取pcie设备的固件。
172.该pcie设备为bios枚举出的任一pcie设备,或者该处理芯片存储的多个目标标识中任一目标标识所指示的pcie设备,其中,该多个目标标识所指示的pcie设备为待验证的pcie设备。
173.当该处理芯片为处理器时,处理器获取pcie设备的固件的过程在步骤702有相关描述,当该处理芯片为桥片时,桥片获取pcie设备的固件的过程在步骤702也有相关描述,在此本技术实施例对本步骤1001所示的过程不做赘述。
174.1002、该处理芯片对该固件进行验证,得到验证结果,该验证结果用于指示该固件是否通过验证。
175.本步骤1002与上述步骤311所示的过程同理,在此,本技术实施例对本步骤1002不做赘述。
176.1003、bios向该处理芯片发送验证结果查询消息,该验证结果查询消息用于向处理芯片查询该pcie设备的固件的验证结果。
177.本步骤1003与上述步骤312所示的过程同理,在此,本技术实施例对本步骤1003不做赘述。
178.1004、该处理芯片基于该验证结果查询消息,向该bios发送对该固件进行验证的验证结果。
179.本步骤1004与上述步骤313所示的过程同理,在此,本技术实施例对本步骤1004不做赘述。
180.1005、该bios接收该验证结果。
181.本步骤1005与上述步骤314所示的过程同理,在此,本技术实施例对本步骤1005不做赘述。
182.1006、当该验证结果指示该固件通过验证时,bios启动该pcie设备。
183.本步骤1006与上述步骤315所示的过程同理,本技术实施例对本步骤1006不做赘述。
184.1007、当该验证结果指示该固件未通过验证时,该bios不启动该pcie设备。
185.本步骤1007与上述步骤316所示的过程同理,本技术实施例对本步骤1007不做赘述。
186.为了进一步说明步骤1001-1007所示的过程,参见图11所示的本技术实施例提供的另一种pcie设备启动方法的流程图。在图11中,计算机设备上电或者复位后,处理器运行bios,由bios枚举计算机设备内的pcie设备;处理器系统中的处理芯片获取pcie设备的固件;处理芯片对获取的固件进行验证,并将验证结果发送给bios,若验证结果指示固件通过验证,则bios正常配置该pcie设备,以便该pcie设备对计算机设备的os可见;若验证结果指示固件未通过验证,则该pcie设备屏蔽该pcie设备,以便该pcie设备对该os不可见;当bios配置完所有通过验证的固件所在的pcie设备后,bios加载该os。
187.本技术实施例提供的方法,通过处理芯片对pcie设备的固件进行验证,以确定pcie设备的固件是否被篡改,且bios仅能启动通过验证的固件所在的pcie设备,从而避免计算机设备启动固件被篡改的pcie设备,以降低pcie设备对计算机设备造成的安全风险。
188.需要说明的是,本技术中提及的“篡改”包括恶意篡改、无意修改、固件不完整、固件损坏、固件代码的代码量增加/减少、或者固件代码的内容的修改等多种情况。当该处理芯片根据获取到的固件代码所计算出的摘要数据,与该处理芯片根据获取到的签名数据所计算出的解密数据不同时,说明处理芯片获取到的固件已经被篡改。
189.图12是本技术实施例提供的一种pcie设备启动装置的结构示意图,所述装置1200包括处理芯片1201以及pcie设备1202,所述处理芯片1201包括;
190.获取模块,用于获取所述pcie设备1202的固件;
191.验证模块,用于对所述固件进行验证;
192.控制模块,用于若所述固件通过验证,利用基本输入输出系统bios启动所述pcie设备1202。
193.可选地,所述控制模块还用于:
194.若所述固件未通过验证,利用所述bios不启动所述pcie设备1202。
195.可选地,所述控制模块还用于:
196.利用所述bios控制所述pcie设备1202处于复位状态或者下电状态;
197.或,
198.利用所述bios将所述pcie设备标记为禁止启动状态,所述禁止启动状态用于指示不启动所述pcie设备。
199.可选地,所述获取模块包括:
200.读取单元,用于从所述pcie设备读取所述固件。
201.可选地,所述读取单元包括:
202.发送子单元,用于向所述pcie设备1202发送固件读取消息,所述固件读取消息用于指示读取所述固件;
203.接收子单元,用于接收所述pcie设备1202基于所述固件读取消息所返回的所述固件。
204.可选地,所述接收子单元还用于:
205.接收所述读取消息应答响应,所述读取消息应答响应用于指示所述pcie设备1202已经接收到所述固件读取消息。
206.可选地,所述接收子单元,还用于接收第一传输完成消息,所述第一传输完成消息用于指示所述pcie设备1202已经发送完所述固件;
207.所述发送子单元,还用于基于所述第一传输完成消息以及接收到的所述固件,向所述pcie设备1202发送接收完成响应,所述接收完成响应用于指示所述处理芯片1201已经接收完所述固件。
208.可选地,所述处理芯片1201包含安全芯片、处理器或桥片。
209.可选地,所述获取模块包括:
210.接收单元,用于对于所述装置1200的处理器或桥片中的任一设备,从所述任一设备接收所述固件。
211.可选地,所述获取模块还包括第一发送单元:
212.所述接收单元,还用于接收固件接收消息,所述固件接收消息用于指示所述处理芯片1201准备接收所述固件;
213.所述第一发送单元,还用于基于所述固件接收消息,向所述任一设备发送接收消息应答响应,所述接收消息应答响应用于指示所述处理芯片1201已经准备接收所述固件。
214.可选地,所述获取模块还包括第二发送单元:
215.所述接收单元,还用于接收第二传输完成消息,所述第二传输完成消息用于指示所述任一设备已经发送完所述固件;
216.所述第二发送单元,用于基于所述第二传输完成消息以及接收到的所述固件,向所述任一设备发送接收完成响应,所述接收完成响应用于指示所述处理芯片1201已经接收完所述固件。
217.可选地,所述处理芯片1201还包括:
218.发送模块,用于向所述bios发送对所述固件进行验证的验证结果,所述验证结果用于指示所述固件是否通过验证。
219.可选地,所述处理芯片1201存储有所述pcie设备1202的公钥,所述公钥用于对所述固件进行验证。
220.可选地,所述处理芯片1201还用于:
221.基于公钥修改指令,对存储的所述pcie设备1202的公钥进行修改。
222.可选地,所述固件包括签名数据。
223.可选地,所述固件为所述pcie设备的扩展只读存储器rom中的镜像。
224.上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
225.需要说明的是:上述实施例提供的pcie设备启动装置在启动pcie设备时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的pcie设备启动方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
226.本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述pcie设备启动方法。
227.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
228.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献