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

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

2022-02-24 16:46:35 来源:中国专利 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.所述计算机设备的输入输出系统bios获取所述pcie设备的固件;所述bios对所述固件进行验证;若所述固件通过验证,所述bios启动所述pcie设备。
8.该方法通过bios对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.在一种可能实现方式中,所述计算机设备的输入输出系统bios获取所述pcie设备的固件包括:
17.所述bios从所述pcie设备的扩展只读存储器rom中读取所述固件的镜像。
18.在一种可能实现方式中,所述固件包括签名数据,所述bios从所述pcie设备的扩展只读存储器rom中的读取所述固件的镜像之前,所述方法还包括:
19.所述bios从所述只读rom中读取所述镜像的镜像类型以及所述签名数据的证书类型,所述镜像类型用于指示所述镜像的代码类型,所述证书类型用于指示计算所述签名数据时所使用的加密算法。
20.在一种可能实现方式中,所述固件包括固件代码以及所述固件代码的签名数据;
21.所述计算机设备的输入输出系统bios获取所述pcie设备的固件包括:
22.所述bios从所述pcie设备的驱动中,获取所述固件代码的签名数据;所述bios从所述pcie设备读取所述固件代码。
23.在一种可能实现方式中,所述bios从所述pcie设备读取所述固件代码包括:
24.所述bios从所述pcie设备的扩展rom中读取所述固件代码的镜像。
25.在一种可能实现方式中,所述bios从所述pcie设备的扩展rom中的读取所述固件代码的镜像之前,所述方法还包括:
26.所述bios从所述扩展rom中读取所述镜像的镜像类型以及所述签名数据的证书类型,所述镜像类型用于指示所述镜像的代码类型,所述证书类型用于指示计算所述签名数据时所使用的加密算法。
27.在一种可能实现方式中,所述bios从所述pcie设备的驱动中,获取所述固件代码的签名数据包括:
28.所述bios从所述pcie设备的扩展rom中读取所述驱动的镜像;
29.所所述bios从所述驱动的镜像中,获取所述固件代码的签名数据。
30.在一种可能实现方式中,所述bios对所述固件进行验证之前,所述方法还包括:
31.所述bios对所述驱动进行验证;若所述驱动通过验证,所述bios执行从所述pcie设备读取所述固件代码的步骤。
32.在一种可能实现方式中,所述bios存储有所述pcie设备的公钥,所述公钥用于对所述固件进行验证。
33.在一种可能实现方式中,所述方法还包括:
34.所述bios基于公钥修改指令,对存储的所述pcie设备的公钥进行修改。
35.第二方面,提供了一种pcie设备启动装置,用于执行上述pcie设备启动方法。具体地,该pcie设备启动装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的pcie设备启动方法的功能模块。
36.第三方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该程序代码由处理器加载并执行以实现如上述pcie设备启动方法所执行的操作。
37.第四方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面或者第一方面的各种可选实现方式中提供的方法。
38.第五方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条程序代码,该程序代码由该处理器加载,以使得所述计算机设备实现上述第一方面或上述第一方面的任一种可选方式中提供的方法。
附图说明
39.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要启用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1是本技术实施例提供的一种计算机设备的结构的示意图;
41.图2是本技术实施例提供的一种计算机设备的结构的示意图;
42.图3是本技术实施例提供的一种pcie设备启动方法流程图;
43.图4是本技术实施例提供的一种扩展rom的空间示意图;
44.图5是本技术实施例提供的一种pcie设备启动的示意图;
45.图6是本技术实施例提供的另一种pcie设备启动方法流程图;
46.图7是本技术实施例提供的另一种pcie设备启动的示意图;
47.图8是本技术实施例提供的一种pcie设备启动方法的流程图;
48.图9是本技术实施例提供的一种pcie设备启动装置的结构示意图。
具体实施方式
49.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
50.图1是本技术实施例提供的一种计算机设备的结构的示意图,参见图1,该计算机设备100包括多个快速外设组件互联(peripheral component interconnect express,pcie)设备101,pcie设备101包括网卡、磁盘阵列(redundant arrays of independent disks,raid)卡、显卡、外设组件互联(peripheral component interconnect,pci)固态驱动器(solid state drive,ssd)卡以及加速卡等,本技术实施例对pcie设备101不做具体限定。
51.每个pcie设备101包括驱动(driver)1011以及固件(firmware)1012,其中,驱动1011为pcie设备的驱动程序,能够被计算机设备100内运行的bios调用,以实现bios与pcie设备之间的数据交互。在初始化阶段,驱动1011还用于配置pcie设备的参数。可选地,该驱动1011为统一扩展固件接口(unified extensible firmware interface,uefi)驱动。固件1012用于实现pcie设备101的功能,例如,网卡的目标固件用于实现网卡的网络连接、报文
转发以及协议卸载等功能。可选地,固件1012包括固件代码和该固件代码的签名数据,其中,固件代码也即是用于实现pcie设备101的功能的代码,该签名数据为固件代码的数字签名,用于确定固件代码是否被篡改,也即是签名数据用于保证固件代码的完整性。在另一种可能的实现方式中,固件1012不包括该固件代码的签名数据,该固件代码的签名数据存储在驱动1011中,此时,固件代码可以视为固件1012。
52.该计算机设备100内运行有bios,该bios用于获取pcie设备101的固件1012,并对获取到的固件1012进行验证,若固件1012通过验证,则由该bios启动该固件1012所在的pcie设备101,否则不启动该固件1012所在的pcie设备101。其中,该bios获取pcie设备101的固件1012的方式包括方式1和方式2,其中,方式1为:该bios从pcie设备101读取包括签名数据和固件代码的固件1012。方式2为:该bios从pcie设备101读取驱动1011,从读取到的驱动1011中获取固件代码的签名数据,并从pcie设备读取固件代码。
53.可选地,该bios存储有多个pcie设备101的公钥,每个公钥分别对应一个pcie设备的目标标识,一个公钥用于对对应的目标标识所指示的pcie设备的固件进行验证。其中,一个目标标识用于指示一个pcie设备,该目标标识为该pcie设备的设备标识,或者该pcie设备所在槽位的槽位标识。可选地,当该bios接收到公钥修改指令时,该bios基于该公钥修改指令,对存储的pcie设备的公钥进行修改。其中,该公钥修改指令包括至少一个目标公钥以及每个目标公钥对应的目标标识,对于该至少一个目标公钥中任一目标公钥所对应的任一目标标识,该bios将存储的该任一目标标识所对应的公钥修改为该任一目标公钥。可选地,该bios还存储有bios固件,bios固件为用于实现bios功能的代码。可选地,该bios为uefi bios。
54.该计算机设备100还包括处理器102,该bios能够运行在处理器102的随机存取存储器(random access memory,ram)或只读存储器(read-only memory,rom)上。该处理器102通过目标通信接口与pcie设备101连接,以便bios能够通过该目标通信接口与pcie设备进行信令交互。其中该目标通信接口为pcie接口。该处理器102包括中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)以及人工智能(artificial intelligence,ai)处理器等,本技术实施例对该处理器102的不做具体限定。
55.需要说明的是,在一些实施例中,pcie设备中的驱动和固件是分开的,也即是pcie设备的驱动和固件是两个单独的部分,例如图1所示的pcie设备101。而在另外一些实施例中,pcie设备的驱动位于固件中,也即是固件包括驱动、固件代码以及该固件代码的签名数据。
56.图2是本技术实施例提供的一种计算机设备的结构的示意图,该计算机设备200可因配置或性能不同而产生比较大的差异,包括一个或一个以上处理器201和一个或一个以上的存储器202,该计算机设备200还包括一个或一个以上的pcie设备203,其中,所述存储器202中存储有至少一条程序代码,所述至少一条程序代码由所述处理器201加载并执行以实现下述各个方法实施例提供的pcie设备启动方法。当然,该计算机设备200还可以具有有线或无线网络接口以及输入输出接口等部件,以便进行输入输出,该计算机设备200还可以包括其他用于实现设备功能的部件,在此不做赘述。
57.在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由计算机设备中的处理器执行以完成下述实施例中的pcie设备启动
方法。例如,该计算机可读存储介质可以是rom、ram、只读光盘(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
58.为了进一步说明bios通过方式1获取pcie设备的固件,对获取到固件进行验证,并根据验证结果确定是否启动pcie设备的过程,参见如图3所示的本技术实施例提供的一种pcie设备启动方法流程图。应用于包括pcie设备的计算机设备。
59.301、pcie设备存储pcie设备的固件和驱动。
60.该pcie设备为任一pcie设备,该固件包括固件代码和签名数据。该驱动包括目标驱动代码以及目标签名数据,其中,该驱动代码为实现驱动功能的代码,该目标签名数据为该驱动代码的数字签名,用于保证驱动代码的完整性。
61.在一种可能的实现方式中,该pcie设备获取pcie设备的固件以及驱动,并将获取到的固件和驱动分别作为一个rom镜像(image)存储在该pcie设备的扩展(expansion)rom。其中,该扩展rom包含不同系统和处理器架构所需的任意多的代码镜像(也即是rom镜像),例如图4所示的本技术实施例提供的一种扩展rom的空间示意图,该扩展rom中存储有n 1个rom镜像,分别为镜像0至镜像n,每个rom镜像对应一个扩展rom头(header)以及一个外设组件互联(peripheral component interconnect,pci)数据结构,其中,n为大于0的整数,扩展rom头和pci数据结构用于存储对应的rom镜像所需的信息。扩展rom头用于存储rom签名以及指向pci数据结构的指针。pci数据结构包括指针(pointer)字段、长度字段、镜像类型字段、证书类型(certificate type)字段以及其他字段,其中,指针字段,用于存储设备列表指针(device list pointer),以指示该扩展rom支持的设备;长度字段用于存储该pci数据结构的长度以及该pci数据结构对应的rom镜像的长度;镜像类型字段用于指示镜像的代码类型,例如驱动的类型、固件的类型;证书类型字段用于存储计算签名数据时所使用的加密算法的类型。
62.可选地,pcie设备获取该固件的过程为:该pcie设备基于第一摘要计算算法,对该固件代码进行计算,得到该固件代码的第一摘要数据,并基于该pcie设备的私钥以及第一加密算法,对该第一摘要数据进行加密,得到该固件代码的签名数据;该pcie设备将该固件代码和该签名数据组合成固件。可选地,pcie设备获取该驱动的过程为:该pcie设备基于第二摘要计算算法,对该驱动代码进行计算,得到该驱动代码的第二摘要数据,并基于该pcie设备的私钥以及第二加密算法,对该第二摘要数据进行加密,得到该目标签名数据;该pcie设备将该驱动代码和该目标签名数据组合成该驱动。
63.其中,第一摘要计算算法为pcie设备与bios协商的用于计算第一摘要数据的算法,第二摘要计算算法为pcie设备与bios协商的用于计算第二摘要数据的算法,第一/第二摘要计算算法包括哈希算法、消息摘要(message digest,md)算法、安全散列算法(secure hash algorithm,sha)、消息认证码(message authentication code,mac)算法以及其他摘要计算算法。本技术实施例对该第一/第二摘要计算算法不做具体限定。该第一加密算法为pcie设备与bios协商的用于对该第一摘要数据加密的加密算法,该第二加密算法为pcie设备与bios协商的用于对该第二摘要数据加密的加密算法,该第一/第二加密算法包括数字签名算法(digital signature algorithm,dsa),椭圆曲线数字签名算法(elliptic curve digital signature algorithm,ecdsa)或由罗纳德
·
李维斯特(ron rivest)、阿迪
·
萨莫尔(adi shamir)和伦纳德
·
阿德曼(leonard adleman)三人提出的rsa加密算法,本技术实
施例对该第一/第二加密算法不做具体限定。该第一加密算法的逆算法为第一解密算法,第一解密算法用于对该固件代码的签名数据进行解密,得到解密数据可记为第一解密数据;该第二加密算法的逆算法为第二解密算法,用于对驱动代码的目标签名数据进行解密,得到解密数据记为第二解密数据。
64.可选地,该pcie设备将该固件代码和该签名数据组合成固件的过程为:该pcie设备将该签名数据存储在该固件代码的第一目标位置,得到该固件。可选地,该pcie设备将该驱动代码和该目标签名数据组合成驱动的过程为:该pcie设备将该目标签名数据存储在该驱动代码的第二目标位置,得到该驱动。其中,该第一目标位置为该pcie设备与bios协商的固件代码中用于存储该签名数据的位置,可选地,该第一目标位置为该固件代码的任一位置,例如该固件代码的头部、中间的某一位置或尾部。该第二目标位置为该pcie设备与bios协商的驱动代码中用于存储该目标签名数据的位置,可选地,该第二目标位置为该驱动代码的任一位置,例如该驱动代码的头部、中间的某一位置或尾部。本技术实施例对该第一/第二目标位置不做具体限定。
65.当获取到该固件后,该pcie设备将该固件作为一个rom镜像存储在扩展rom中,并配置该固件的镜像对应的扩展rom头以及pci数据结构,该扩展rom头用于存储该pci数据结构的指针,该pci数据结构包括指针字段、长度字段、镜像类型字段以及证书类型字段等,其中,该指针字段用于指示该扩展rom所支持设备;该长度字段用于存储该pci数据结构的长度以及该镜像的长度;镜像类型字段用于存储该镜像的镜像类型,该镜像类型用于指示镜像的代码类型;证书类型字段用于存储镜像的数据签名的证书类型,证书类型用于指示计算签名数据时所使用的加密算法。例如图4中的镜像n为该固件的镜像,该pcie设备在镜像n对应的扩展rom头中配置镜像n所对应的pci数据结构的指针;对于镜像n所对应的pci数据结构,该pcie设备在长度字段存储该pci数据结构的长度以及该固件的长度,在镜像类型字段存储该固件代码的代码类型,并在证书类型字段存储第一加密算法的类型。
66.当获取到该驱动后,该pcie设备将该驱动作为另一个rom镜像存储在扩展rom中,并配置该驱动的镜像对应的扩展rom头以及pci数据结构。例如图4中的镜像0为该驱动的镜像,该pcie设备在镜像0对应的扩展rom头中配置该镜像0对应的pci数据结构的指针;对于该镜像0对应的pci数据结构的指针,该pcie设备长度字段存储该pci数据结构的长度以及该驱动的长度,在镜像类型字段存储该驱动代码的代码类型,并在证书类型字段存储第二加密算法的类型。
67.需要说明的是,扩展rom中存储的固件的镜像可以位于驱动的镜像之后,例如固件的镜像为该驱动的镜像的后一个镜像,或者固件的镜像为扩展rom中存储的最后一个镜像。当该pcie设备在该扩展rom中存储完各个镜像后,该pcie设备将该扩展rom的起始地址存储在pcie设备的基址寄存器(base address registers,bar)空间内的扩展rom基址字段中,以便后续计算机设备的bios能够在该扩展rom基址字段中读取到该扩展rom的起始地址。
68.302、该bios从该pcie设备读取该pcie设备的驱动。
69.当该计算机设备上电或复位后,该bios开始运行,该bios枚举该计算机设备上安装的各个pcie设备,当bios枚举到该pcie设备后,该bios从该pcie设备读取该pcie设备的驱动。
70.该bios可以在该pcie设备的扩展只读存储器rom中读取该驱动的镜像,从而实现
从该pcie设备读取该pcie设备的驱动。在一种可能的实现方式中,该bios通过目标通信接口,访问该pcie设备的bar空间内的扩展rom基址字段,该bios从该扩展rom基址字段中读取该pcie设备的扩展rom的起始地址,并基于该扩展rom的起始地址访问该扩展rom;对于该扩展rom中存储的任一镜像,该bios可以从该任一镜像对应的pci数据结构的镜像类型字段中读取该任一镜像的镜像类型,若读取到的镜像类型为驱动代码的代码类型,则该任一镜像为驱动的镜像;当该任一镜像为该驱动的镜像时,该bios还可以从该任一镜像对应的pci数据结构的证书类型字段中读取该目标签名数据的证书类型,从而根据该证书类型所指示的第二加密算法,确定该第二加密算法的逆算法为第二解密算法,且该bios还可以从该扩展rom中读取该pcie设备的驱动的镜像。若读取到的镜像类型不是驱动代码的代码类型,则该bios读取该任一镜像的下一个镜像的镜像类型,直至获取到驱动的镜像。仍以图4为基础,该bios从该扩展rom中读取镜像0(也即是驱动)。
71.303、该bios对读取到的驱动进行验证。
72.该bios基于存储的该pcie设备的公钥,对该驱动进行验证。
73.在一种可能的实现方式中,该bios从该驱动的驱动代码的第二目标位置,获取该驱动代码的目标签名数据,并基于该pcie设备的公钥以及该第二解密算法,对该目标签名数据进行解密,得到第二解密数据;该bios基于第二摘要计算算法,对驱动代码进行计算,得到驱动代码的第二摘要数据;若得到的第二摘要数据和该第二解密数据相同,则说明该驱动中的驱动代码未被篡改,驱动代码是完整的,则该驱动通过验证;若得到的第二摘要数据和该第一解密数据不同,则该说明驱动代码已经被篡改,驱动代码不完整,则该驱动未通过验证。
74.304、若该驱动通过验证,bios从该pcie设备读取该pcie设备的固件。
75.该bios可以从该pcie设备的扩展只读存储器rom中读取该固件的镜像,从而实现从该pcie设备读取该固件。在一种可能的实现方式中,该bios通过目标通信接口,基于该扩展rom的起始地址访问该扩展rom;对于该扩展rom中存储的任一镜像,该bios可以从该任一镜像对应的pci数据结构的镜像类型字段中读取该任一镜像的镜像类型,若读取到的镜像类型为固件代码的代码类型,则该任一镜像为固件的镜像;当该任一镜像为该固件的镜像时,该bios还可以从该任一镜像对应的pci数据结构的证书类型字段中读取该固件代码的签名数据的证书类型(也即是该bios从该扩展rom中读取固件的镜像的镜像类型以及该签名数据的证书类型的过程),从而该bios还可以根据该证书类型所指示的第一加密算法,确定该第一加密算法的逆算法为第一解密算法,且该bios从该扩展rom中读取该固件的镜像。若读取到的镜像类型不是固件代码的代码类型,则该bios读取该任一镜像的下一个镜像的镜像类型,直至获取到固件的镜像。此时bios读取到的固件的镜像中包括固件代码和固件代码的签名数据。仍以图4为基础,该bios从该扩展rom中读取镜像n(也即是固件)。
76.在一种可能的实现方式中,若驱动未通过验证,则驱动可能为计算机设备带来安全风险,则该bios跳转执行步骤307,也即是该bios不启动该pcie设备。
77.305、该bios对读取到的固件进行验证。
78.该bios基于存储的该pcie设备的公钥,对该固件进行验证。
79.在一种可能的实现方式中,该bios从该固件内的固件代码的第一目标位置,获取该固件代码的签名数据,并基于该pcie设备的公钥以及该第一解密算法,对该签名数据进
行解密,得到第一解密数据;该bios基于第一摘要计算算法,对固件代码进行计算,得到固件代码的第一摘要数据;若得到的第一摘要数据和该第一解密数据相同,则说明该固件代码未被篡改,固件代码是完整的,则该固件通过验证;若得到的第一摘要数据和该第一解密数据不同,则该说明固件代码已经被篡改,固件代码不完整,则该固件未通过验证。
80.306、若该固件通过验证,该bios启动该pcie设备。
81.若该固件通过验证,则该固件不会为该计算机设备带来安全风险,则该bios启动该pcie设备。
82.在一种可能的实现方式中,该bios启动该pcie设备的过程为:该bios对该pcie设备进行配置,例如该bios为该pcie设备分配pci资源,以便该pcie设备对该计算机设备内的操作系统(operating system,os)可见。其中,该pci资源包括总线设备功能(bus device function,bdf)和内存空间。
83.需要说明的是,在biso启动该pcie设备之前该pcie设备已经上电,因此,pcie设备能够与bios进行交互,所以,本技术实施例中的启动pcie设备不是指为pcie设备上电和/或pcie设备与处理芯片进行交互,而是指正常配置pcie设备,以便正常配置后的pcie设备能够完全正常工作。
84.307、若该固件未通过验证,该bios不启动该pcie设备。
85.若该固件未通过验证,则该pcie设备被启动后,该固件可能为该计算机设备带来安全风险,则该bios不启动该pcie设备。
86.该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设备标记为禁止启动状态。
87.为了进一步说明步骤302-307所示的过程,参见图5所示的本技术实施例提供的一种pcie设备启动的示意图。在图5中,固件代码的签名数据为签名数据1,驱动代码的目标签名数据为签名数据2,bios从pcie设备中读取到包括驱动代码和签名数据2的驱动;bios基于存储的该pcie设备的公钥以及驱动中的签名数据2,验证驱动代码是否完整;若驱动代码完整,则bios继续从pcie设备中读取到包括固件代码和签名数据1的固件;bios基于存储的该pcie设备的公钥以及固件中的签名数据1,验证固件代码是否完整,若固件代码完整则启动该pcie设备,否则不启动该pcie设备。
88.本技术实施例提供的方法,通过bios对pcie设备的固件进行验证,以确定pcie设备的固件是否被篡改,且bios仅能启动通过验证的固件所在的pcie设备,从而避免计算机设备启动固件被篡改的pcie设备,以降低pcie设备对计算机设备造成的安全风险。并且,bios除了对pcie设备进行验证以外,还对pcie设备的驱动进行验证,只要固件和驱动中的
任一个未通过验证,则bios不启动该pcie设备,从而避免计算机设备启动固件或驱动被篡改的pcie设备,以进一步降低pcie设备对计算机设备造成的安全风险。并且,通过bios控制未通过验证的固件所在的pcie设备处于复位状态或者下电状态,或将未通过验证的固件所在的pcie设备标记为禁止启动状态,从而彻底屏蔽有安全隐患的pcie设备。
89.为了进一步说明bios通过方式2获取pcie设备的固件,对获取到固件进行验证,并根据验证结果确定是否启动pcie设备的过程,参见如图6示的本技术实施例提供的另一种pcie设备启动方法流程图。应用于包括pcie设备的计算机设备。
90.601、pcie设备存储pcie设备的固件和驱动。
91.在图6所示的实施例中,该固件实际为固件代码,该驱动包括驱动代码、驱动代码的目标签名数据以及该固件代码的签名数据。例如,图7所示的本技术实施例提供的另一种pcie设备启动的示意图中的固件为固件代码,驱动包括的目标签名数据为签名数据2,固件代码的签名数据为签名数据1。
92.在一种可能的实现方式中,该pcie设备获取pcie设备的固件以及驱动,并将获取到的固件和驱动分别作为一个rom镜像存储在该pcie设备的扩展rom中。
93.可选地,该pcie设备获取pcie设备的固件以及驱动的过程为:该pcie设备获取该固件代码以及驱动代码,获取该固件代码的签名数据以及该驱动代码的目标签名数据,该pcie设备将该固件代码的签名数据存储该驱动代码的第三目标位置,将该目标签名数据存储在该驱动代码的第二目标位置,得到该驱动;其中,该第三目标位置为该pcie设备与bios协商的驱动代码中用于存储固件代码的签名数据的位置,可选地,该第三目标位置为该驱动代码中除第二目标位置以外的任一位置,本技术实施例对该第三目标位置不做具体限定。
94.需要说明的是,pcie设备获取该固件代码的签名数据以及该驱动代码的目标签名数据的过程在步骤301中有相关描述,在此,本技术实施例对pcie设备获取该固件代码的签名数据以及该驱动代码的目标签名数据的过程不做赘述。pcie设备将获取到的固件和驱动分别作为一个rom镜像存储在该pcie设备的扩展rom的过程,在步骤301中也有相关描述,在此,本技术实施例对pcie设备将获取到的固件和驱动分别作为一个rom镜像存储在该pcie设备的扩展rom的过程不做赘述。
95.需要说明的是,由于此时该固件仅包括固件代码,而固件代码的签名数据存储在驱动中,则此时该固件代码的签名数据的证书类型可以存储在该固件的镜像所对应的pci数据结构中的证书类型字段或该驱动的镜像所对应的pci数据结构中的证书类型字段。
96.602、该bios从该pcie设备读取pcie设备的驱动,该驱动包括该签名数据。
97.本步骤602与步骤302所示的过程同理,在此,本技术实施例对本步骤602所示的过程不做赘述。
98.603、该bios对读取到的驱动进行验证。
99.本步骤603与步骤303所示的过程同理,在此,本技术实施例对本步骤603所示的过程不做赘述。
100.仍以图7为基础,bios基于该pcie设备的公钥以及该第二解密算法,对该签名数据2进行解密,得到第二解密数据;该bios基于第二摘要计算算法,对驱动代码进行计算,得到驱动代码的第二摘要数据;若得到的第二摘要数据和该第二解密数据相同,则该驱动通过
验证,否则,该驱动未通过验证。
101.604、若该驱动通过验证,该bios从读取到的该驱动中获取该签名数据。
102.该bios可以从驱动的镜像中,获取该固件代码的签名数据。在一种可能的实现方式中,该bios从该驱动的镜像中驱动代码的第三目标位置,获取该签名数据。
103.需要说明的是,步骤602和604所示的过程也即是bios从该pcie设备的驱动中,获取该固件代码的签名数据的过程。
104.605、该bios从该pcie设备读取该固件代码。
105.该bios可以从该pcie设备的扩展rom中读取该固件代码的镜像,以实现从该pcie设备读取该固件代码。其中,bios从该pcie设备的扩展rom中读取该固件代码的镜像的过程与步骤304中bios读取该pcie设备的固件的镜像的过程同理,在此,本技术实施例对bios从该pcie设备的扩展rom中读取该固件代码的镜像的过程不做赘述。
106.当该bios读取到该固件代码后,bios将该签名数据以及该固件代码确定为该固件。需要说明是,上述步骤602、604以及605所示的过程,也即是该计算机设备的输入输出系统bios获取所述pcie设备的固件的过程。
107.606、该bios基于该签名数据,对固件代码进行验证。
108.该bios基于该pcie设备的公钥以及该第一解密算法,对该签名数据进行解密,得到第一解密数据;该bios基于第一摘要计算算法,对固件代码进行计算,得到固件代码的第一摘要数据;若得到的第一摘要数据和该第一解密数据相同,则说明该固件代码未被篡改,固件代码是完整的,则该固件通过验证;若得到的第一摘要数据和该第一解密数据不同,则该说明固件代码已经被篡改,固件代码不完整,则该固件未通过验证。
109.仍以图7为基础,bios基于该pcie设备的公钥以及该第一解密算法,对该签名数据1进行解密,得到第一解密数据;该bios基于第一摘要计算算法,对固件代码进行计算,得到固件代码的第一摘要数据;若得到的第一摘要数据和该第一解密数据相同,则该固件代码通过验证,否则,该固件代码未通过验证。
110.607、若该固件代码通过验证,该bios启动该pcie设备。
111.本步骤607与步骤306所示的过程同理,在此,本技术实施例对本步骤607所示的过程不做赘述。
112.608、若该固件代码未通过验证,该bios不启动该pcie设备。
113.本步骤608与步骤307所示的过程同理,在此,本技术实施例对本步骤608所示的过程不做赘述。
114.本技术实施例提供的方法,通过bios对pcie设备的固件进行验证,以确定pcie设备的固件是否被篡改,且bios仅能启动通过验证的固件所在的pcie设备,从而避免计算机设备启动固件被篡改的pcie设备,以降低pcie设备对计算机设备造成的安全风险。并且,bios除了对pcie设备进行验证以外,还对pcie设备的驱动进行验证,只要固件和驱动中的任一个未通过验证,则bios不启动该pcie设备,从而避免计算机设备启动固件或驱动被篡改的pcie设备,以进一步降低pcie设备对计算机设备造成的安全风险。并且,通过bios控制未通过验证的固件所在的pcie设备处于复位状态或者下电状态,或将未通过验证的固件所在的pcie设备标记为禁止启动状态,从而彻底屏蔽有安全隐患的pcie设备。
115.为了进一步综合说明图3以及图6所示的过程,参见图8所示的本技术实施例提供
的一种pcie设备启动方法的流程图。计算机设备上电或复位,计算机设备的bios的固件运行,bios枚举该计算机设备中的各个pcie设备,每枚举到任一pcie设备,bios对该pcie设备的驱动进行验证,并运行通过验证的驱动;bios加载pcie设备的固件;bios对加载的固件进行验证,若验证通过则bios正常配置该pcie设备,以便该pcie设备对计算机设备的os可见,否则bios屏蔽该pcie设备;当该bios加载完该计算机设备内的通过验证的所有pcie设备,则该bios加载该os。
116.需要说明的是,本技术中提及的“篡改”包括恶意篡改、无意修改、固件不完整、固件损坏、固件代码的代码量增加/减少、或者固件代码的内容的修改等多种情况。当biso根据获取到的固件代码所计算出的第一摘要数据,与bios根据获取到的签名数据所计算出的第一解密数据不同时,说明bios获取到的固件已经被篡改。
117.图9是本技术实施例提供的一种pcie设备启动装置的结构示意图,所述装置900包括pcie设备901,所述装置900包括:
118.获取模块902,用于输入输出系统bios获取所述pcie设备的固件;
119.验证模块903,用于所述bios对所述固件进行验证;
120.控制模块904,用于若所述固件通过验证,所述bios启动所述pcie设备。
121.可选地,所述控制模块904还用于:
122.若所述固件未通过验证,所述bios不启动所述pcie设备。
123.可选地,所述控制模块904还用于:
124.所述bios控制所述pcie设备处于复位状态或者下电状态;
125.或,所述bios将所述pcie设备标记为禁止启动状态,所述禁止启动状态用于指示不启动所述pcie设备。
126.可选地,所述获取模块902用于:
127.所述bios从所述pcie设备的扩展只读存储器rom中读取所述固件的镜像。
128.可选地,所述固件包括签名数据,所述获取模块还用于:
129.所述bios从所述只读rom中读取所述镜像的镜像类型以及所述签名数据的证书类型,所述镜像类型用于指示所述镜像的代码类型,所述证书类型用于指示计算所述签名数据时所使用的加密算法。
130.可选地,所述固件包括固件代码以及所述固件代码的签名数据;所述获取模块包括:
131.获取单元,用于所述bios从所述pcie设备的驱动中,获取所述固件代码的签名数据;
132.读取单元,用于所述bios从所述pcie设备读取所述固件代码。
133.可选地,所述读取单元用于:
134.所述bios从所述pcie设备的扩展rom中读取所述固件代码的镜像。
135.可选地,所述读取单元还用于:
136.所述bios从所述扩展rom中读取所述镜像的镜像类型以及所述签名数据的证书类型,所述镜像类型用于指示所述镜像的代码类型,所述证书类型用于指示计算所述签名数据时所使用的加密算法。
137.可选地,所述获取单元用于:
138.所述bios从所述pcie设备的扩展rom中读取所述驱动的镜像;
139.所述bios从所述驱动的镜像中,获取所述固件代码的签名数据。
140.可选地,所述验证模块903还用于:
141.所述bios对所述驱动进行验证;
142.若所述驱动通过验证,所述bios执行从所述pcie设备读取所述固件代码的步骤。
143.可选地,所述bios存储有所述pcie设备的公钥,所述公钥用于对所述固件进行验证。
144.可选地,所述装置900还包括:
145.修改模块,用于所述bios基于公钥修改指令,对存储的所述pcie设备的公钥进行修改。
146.上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
147.需要说明的是:上述实施例提供的pcie设备启动装置在启动pcie设备时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的pcie设备启动方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
148.本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述pcie设备启动方法。
149.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
150.以上所述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

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

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

相关文献