首页 / 专利库 / 集成电路 / 集成电路卡 / 微控制器 / 存储器 / 用于可信I/O的安全硬件和软件证明的技术

用于可信I/O的安全硬件软件证明的技术

阅读:1045发布:2020-06-11

专利汇可以提供用于可信I/O的安全硬件软件证明的技术专利检索,专利查询,专利分析的服务。并且公开了用于可信I/O的安全 硬件 和 软件 证明的技术。一种装置,包括:应用处理器; 存储器 ;输入/输出I/O子系统,可通信地耦合至处理器和存储器;安全融合存储器,用于持续地存储与装置相关联的第一平台设备标识符;以及安全子系统,该安全子系统包括安全处理元件,该安全处理元件用于:收集装置的一个或多个硬件组件或 软件组件 的证明信息;以及将证明信息发送到远程验证服务。,下面是用于可信I/O的安全硬件软件证明的技术专利的具体信息内容。

1.一种装置,包括:
应用处理器;
存储器
输入/输出I/O子系统,可通信地耦合至所述处理器和所述存储器;
安全融合存储器,用于持续地存储与所述装置相关联的第一平台设备标识符;以及安全子系统,所述安全子系统包括安全处理元件,所述安全处理元件用于:
收集所述装置的一个或多个硬件组件或软件组件的证明信息;以及
将所述证明信息发送到远程验证服务。
2.如权利要求1所述的装置,所述安全处理元件用于:
发现一个或多个静态附接的硬件I/O组件。
3.如权利要求2所述的装置,所述安全处理元件用于:
生成一个或多个安全飞地报告,其中,每个安全飞地报告指示可信软件组件的加密测量结果。
4.如权利要求1所述的装置,所述安全处理元件用于:
确定所述I/O子系统的一个或多个硬件I/O设备;
基于所述证明信息来确定所需的一个或多个硬件I/O设备是从与所述I/O子系统相关联的可信应用经由安全I/O路径能够到达的;以及
验证与每个安全I/O路径相关联的可信软件组件的标识。
5.如权利要求1所述的装置,所述安全处理元件用于:
由在所述装置上执行的可信应用验证所述证明信息的至少部分。
6.如权利要求5所述的装置,进一步包括固件证明模,所述固件证明模块由所述安全处理元件执行,以:(i)收集与计算设备的一个或多个I/O控制器相关联的固件证明信息;以及(ii)验证所述固件证明信息。
7.如权利要求1所述的装置,进一步包括应用证明模块,所述应用证明模块由所述安全处理元件执行,以:(i)收集与计算设备的可信应用相关联的应用证明信息,其中,所述可信应用使用可信I/O用途;以及(ii)验证所述应用证明信息。

说明书全文

用于可信I/O的安全硬件软件证明的技术

[0001] 本申请是PCT国际申请号为PCT/US2016/038395、国际申请日为2016年6月20日、进入中国国家阶段的申请号为201680042368.1,题为“用于可信I/O的安全硬件和软件证明的技术”的发明专利申请的分案申请。
[0002] 相关申请的交叉引用
[0003] 本申请要求于2015年12月18日提交的题为“TECHNOLOGEIS FOR SECURE HARDWARE AND SOFTWARE ATTESTATION FOR TRUSTED I O(用于可信I/O的安全硬件和软件证明的技术)”的美国发明专利申请序列号14/974,960的优先权,所述美国发明专利申请根据35U.S.C.§119(e)要求以下各项的优先权:于2015年7月20日提交的题为“CRYPTOGRAPHIC PROTECTION OF I/O DATA FOR DMA CAPABLE I O CONTROLLERS(用于有DMA能的I/O控制器的I/O数据加密保护)”的美国临时专利申请序列号62/194,763;于2015年7月21日提交的题为“CRYPTOGRAPHIC PROTECTION OF I/O DATA FOR DMA CAPABLE I/O CONTROLLERS(用于有DMA能力的I/O控制器的I/O数据加密保护)”的美国临时专利申请序列号62/195,148;
以及于2015年7月30日提交的题为“TECHNOLOGIES FOR HARDWARE AND  SOFTWARE ATTESTATION FOR TRUSTED I/O(用于可信I/O的硬件和软件证明的技术)”的美国临时专利申请序列号62/198,779。

背景技术

[0004] 当前的处理器可以提供对可信执行环境如安全飞地(也被称为架构飞地)的支持。安全飞地包括由处理器保护以免受未授权访问(包括未经授权的读和写)的存储器的一部分(包括代码和/或数据)。特别地,某些处理器可能包括 软件防护扩展(SGX),以提供安全飞地支持。
[0005] 特别地,SGX为安全飞地数据提供机密性、完整性以及重放保护,同时所述数据驻留在平台存储器中并且因此提供保护以免遭软件攻击和硬件攻击。片上边界形成了自然的安全边界,数据和代码可以以明文形式存储于此并且被假定是安全的。 SGX不保护横跨片上边界移动的I/O数据。
[0006] 可信I/O(TIO)技术使得应用能够安全地将I/O数据发送到设备和/或从设备接收I/O数据。除了生成或消耗I/O数据的硬件之外,I/O流线中的若干个软件组件固件组件也可能处理所述数据。附图说明
[0007] 在附图中通过示例的方式而不是通过限制的方式来展示了本文中所描述的概念。为了说明的简单和清楚起见,附图中所展示的元件不一定按比例绘制。在认为适当的情况下,在附图当中已经重复了参考标号以表示相应或相似的元件。
[0008] 图1是用于安全硬件和软件证明的计算设备的至少一个实施例的简化框图
[0009] 图2是可由图1的计算设备建立的各环境的至少一个实施例的简化框图;
[0010] 图3是可由图1至图2的计算设备建立的系统架构的至少一个实施例的简化框图;
[0011] 图4是可由图1至图3的计算设备执行的用于安全硬件和软件证明的方法的至少一个实施例的简化流程图
[0012] 图5是可由图1至图3的计算设备建立的软件拓扑的示意图;
[0013] 图6是可由图1至图3的计算设备执行的用于硬件证明信息验证的方法的至少一个实施例的简化流程图;
[0014] 图7是可由图1至图3的计算设备执行的用于平台清单生成的方法的至少一个实施例的简化流程图;并且
[0015] 图8是伪代码图,展示了可由图1至图3的计算设备处理的平台描述表。

具体实施方式

[0016] 虽然本公开的概念易于经历各种修改和替代形式,但是在附图中已经通过示例的方式示出了其特定实施例并且将在本文中对其进行详细描述。然而,应当理解的是,不意在将本公开的概念限制于所公开的特定形式,而相反,意图是覆盖与本公开和所附权利要求书一致的所有修改形式、等效形式和替代形式。
[0017] 在说明书中提到的“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可以包括具体特征、结构或特性,但每一个实施例可能或者可能不一定包括所述具体特征、结构或特性。此外,此些短语不一定指相同的实施例。进一步地,当关于实施例而描述了特定特征、结构或特性时,应当认为的是,无论是否进行了明确描述,结合其他实施例来实现这种特征、结构或特性都在本领域的技术人员的知识内。另外,应当认识到,包括在采用“A、B和C中至少一个”形式的列表中的项可意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,采用“A、B或C中的至少一者”的形式列出的项可以意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
[0018] 在一些情况下,可以在硬件、固件、软件或其任何组合中实施所公开的实施例。所公开的实施例还可以被实施为由一个或多个暂态或非暂态机器可读(例如,计算机可读)存储介质所承载的或存储于其上的指令,所述指令可以由一个或多个处理器读取和执行。机器可读存储介质可以被实施为任何存储设备、机制、或用于存储或传输采用机器可读形式的信息的其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
[0019] 在附图中,可以采用特定安排和/或排序来示出一些结构特征或方法特征。然而,应当理解的是,可能不需要这种特定的安排和/或排序。相反,在一些实施例中,可以采用与在说明性附图中所示出的方式和/或顺序不同的方式和/或顺序来安排这种特征。另外,在特定的图中包括结构性特征或方法特征并不意味着暗示在所有实施例中都需要这种特征,并且在某些实施例中,可以不包括这种特征或者这种特征可以与其他特征组合。
[0020] 现在参考图1,在说明性实施例中,用于安全硬件和软件证明的计算设备100包括处理器120、主存储器132、硬件加密引擎140、以及与一个或多个I/O设备146通信的一个或多个I/O控制器144等其他组件。在使用中,加密引擎140在平台I/O控制器144与存储器132之间提供经由直接存储器存取(DMA)事务传送的数据的即时加密和解密。每个DMA事务用表示与特定I/O设备146或I/O设备组146相关联的数据流的通道ID(CID)来标记。加密引擎140使用CID来可靠地标识必须被保护的事务、检索相应的加密密钥、并且对DMA数据执行适当的加密操作。
[0021] 由计算设备100执行的可信应用可以使用加密引擎140,以利用一个或多个I/O设备146来执行硬件加密可信I/O(TIO)。如下面进一步描述的那样,计算设备100的硬件、固件和软件实体以安全且可验证的方式证明它们的标识,以便使可信应用保证它接收或发送的数据仅由所述可信应用信任的软件和硬件实体进行处理。TIO证明是报告关于计算设备100的硬件、固件和软件组件的信息的机制,所述组件被可信应用用于特定的可信I/O用途。TIO证明信息可以由可信应用、由本地验证器或由远程验证器进行验证。由计算设备100执行的TIO证明和验证技术提供了对真实性(证明信息来源于计算设备100上的可信源)、局部性(证明信息准确地描述了本地计算设备上的硬件和软件组件100)、以及配置(证明信息描述了计算设备100上用于特定用途的可信软件组件之间的配置和连接)的保证。此外,计算设备100提供允许对计算设备100上的证明信息进行更新的机制。因此,由计算设备100执行的证明和验证可以保护可信应用免受各种威胁,例如防止发现平台组件、修改TIO软件组件、加载错误版本的软件组件、以及防止软件组件与硬件组件之间的安全连接。
[0022] 计算设备100可以被实施为能够执行在此所描述的功能的任何类型的计算设备或计算机设备,包括但不限于计算机、台式计算机、工作站、服务器、膝上型计算机、笔记本计算机、平板计算机、移动计算设备、可穿戴计算设备、网络电器、web电器、分布式计算系统、基于处理器的系统和/或消费电子设备。如图1中所示,计算设备100示意性地包括处理器120、输入/输出子系统128、存储器132、数据存储设备134以及通信电路系统136。当然,在其他实施例中,计算设备100可以包括其他或附加组件,如台式计算机中常见的那些组件(例如,各种输入/输出设备)。另外,在一些实施例中,说明性组件中的一个或多个说明性组件可以结合在另一组件中,或以其他方式形成其一部分。例如,在一些实施例中,存储器132或其一部分可以结合到处理器120中。
[0023] 处理器120可以被实施为能够执行在本文中所描述的功能的任何类型的处理器。处理器120可以被实施为(多个)单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。如所示,处理器120可以包括硬件虚拟化支持122、安全飞地支持124、以及密码引擎编程支持126。
[0024] 硬件虚拟化支持122支持计算设备100对操作系统、应用、以及其他软件的虚拟化执行。硬件虚拟化支持122可以通过提供两种执行模式来包括虚拟机扩展(VMX)支持:VMX根模式和VMX非根模式。VMX根模式允许执行软件具有对计算设备100及其硬件资源的广泛控制。相反地,管理程序、虚拟机监视程序(VMM)或主机操作系统(OS)可以在VMX根模式下执行。VMX非根模式限制访问某些硬件指令,同时仍实施处理器120的普通环/权限系统。一个或多个客户OS可以在VMX非根模式下执行。类似于在没有虚拟化的情况下的执行,那些客户OS可以在环零中执行。硬件虚拟化支持122还可以支持扩展页表(EPT),所述EPT可以被实施为硬件辅助的第二级页地址转换。硬件虚拟化支持122可以被实施为例如 VT-x技术。
[0025] 安全飞地支持124允许处理器120建立被称为安全飞地的可信执行环境(TEE),在所述可信执行环境中可以测量、验证和/或以其他方式确定执行代码是真实的。此外,安全飞地中所包括的代码和数据可以被加密或以其他方式被保护不被在安全飞地以外执行的代码访问。例如,安全飞地中包含的代码和数据可以在被执行或者被存储在处理器120的某个受保护的高速缓冲存储器中的同时由处理器120的硬件保护机制来保护。安全飞地中包含的代码和数据可以在被存储在共享高速缓存或主存储器132中时被加密。安全飞地支持124可以被实施为一组处理器指令扩展,其允许处理器120在存储器132中建立一个或多个安全飞地。例如,安全飞地支持124可以被实施为为 软件防护扩展(SGX)技术。
[0026] 密码引擎编程支持126允许处理器120对加密引擎140进行编程以提供对I/O数据的加密保护。特别地,处理器120可以启用或禁用对某些I/O通道的加密,并且可以向加密引擎140安全地提供加密密钥。密码引擎编程支持126可以被实施为一个或多个专用处理器指令(例如,指令EBINDTIO、UNWRAP、或其他指令)以及处理器120的相关联的硬件、微码、固件或其他组件。
[0027] 存储器132可以被实施为能够执行此处所描述的功能的任何类型的易失性或非易失性存储器或数据存储设备。在运算中,存储器132可存储在计算设备100运算期间使用的各种数据和软件,如运算系统、应用、程序、函数库和驱动程序。存储器132以通信方式经由I/O子系统128耦合到处理器120,所述I/O子系统128可被实施为电路系统和/或组件以促进与计算设备100的处理器120、存储器132和/或其它组件的输入/输出操作。例如,I/O子系统128可以被实施为或以其他方式包括用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、平台控制器中枢、集成控制电路系统、固件设备、通信链路(即,点到点的链路、总线链路、导线、线缆、光导、印刷电路板迹线等)和/或其他组件及子系统。另外或可替代地,在某一实施例中,存储器132可以经由处理器120的集成存储器控制器通信地耦合到处理器120。I/O子系统128可以进一步包括安全路由支持130。安全路由支持130包括用于确保在流氓软件的影响下I/O数据无法在结构128中误传的硬件支持。安全路由支持130可以与加密引擎140一起使用以提供I/O数据的加密保护。在一些实施例中,I/O子系统128可以形成片上系统(SoC)的一部分并且可以与计算设备100的处理器120、存储器132以及其他组件一起结合在单个集成电路芯片上。
[0028] 数据存储设备134可以被实施为被配置用于对数据进行短期或长期存储的任何类型的一个或多个设备(如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备)。在一些实施例中,数据存储设备134可用于存储一个或多个安全飞地的内容。安全飞地的内容当由数据存储设备134存储时可被加密以防止未授权的访问。
[0029] 计算设备100的通信电路系统136可以被实施为能够通过网络实现计算设备100与其他远程设备之间的通信的任何通信电路、设备或其集合。通信电路系统136可以被配置用于使用任何一种或多种通信技术(例如,有线或无线通信)以及相关联的协议(例如,以太网、 WiMAX等)来实现这种通信。
[0030] 在一些实施例中,计算设备100可以包括安全引擎138,所述安全引擎可以被实施为能够对计算设备100提供安全相关的服务的任何(多个)硬件组件或电路系统。特别地,安全引擎138可以包括能够独立地且安全地执行来自处理器120的固件和/或其他代码的微处理器、微控制器、或其他嵌入式控制器。因此,安全引擎138可以被用来建立与由处理器120执行的代码分开的可信执行环境。安全引擎138可以通过诸如主机嵌入式控制器接口(HECI)等专用总线与计算设备100的处理器120和/或其他组件进行通信。安全引擎138还可以提供对计算设备100的远程配置、控制或管理。在所示实施例中,安全引擎138被实施为并入计算设备100的片上系统(SoC)中的会聚式安全引擎(CSE)。在一些实施例中,安全引擎138可以被实施为可管理性引擎、带外处理器、可信平台模(TPM)、或其他安全引擎设备或设备集合。此外,在一些实施例中,安全引擎138还能够使用通信电路系统136或独立于计算设备100的状态(例如,独立于主处理器120的状态)的专用通信电路进行通信,也被称为“带外”通信。
[0031] 加密引擎140可以被实施为能够执行本文所描述的功能的任何微控制器、微处理器、功能块、逻辑或其他电路或电路集合。如下面进一步描述的那样,在对存储器132的一个或多个直接存储器存取(DMA)操作中,加密引擎140可以对由I/O控制器144读取或写入的I/O数据进行加密和/或解密。加密引擎140包括内部通道标识符(CID)表142,加密引擎140使用所述表来动态地标识待保护的(多个)DMA通道。可以由可信软件例如使用处理器120的密码引擎编程支持126来控制和/或编程所述CID表142。CID表142的加密密钥和/或其他秘密信息对于不可信软件是不可用的。在一些实施例中,加密引擎140可以与I/O子系统128和/或处理器120一起并入计算设备100的片上系统(SoC)中。
[0032] 类似地,I/O控制器144可以被实施为能够执行本文所描述的功能的任何嵌入式控制器、微控制器、微处理器、功能块、逻辑或其他电路或电路集合。在一些实施例中,I/O控制器144中的一个或多个可以被嵌入到计算设备100的另一组件中,如I/O子系统128和/或处理器120。另外或可替代地,I/O控制器144中的一个或多个可以经由诸如PCI Express(PCIe)或其他I/O连接等扩展总线连接到I/O子系统128和/或处理器120。如下面进一步描述的,I/O控制器144例如通过外围通信总线(例如,USB、蓝牙等)与一个或多个I/O设备146通信。I/O设备146可以被实施为任何I/O设备,如人机界面设备、键盘鼠标触摸屏、麦克、相机和其他输入设备、以及显示器和其他输出设备。如上所述,使用被称为通道标识符(CID)的标识符来唯一地标识I/O控制器144和相关联的DMA通道。每个I/O控制器144可以用每个DMA事务(例如作为事务层分组(TLP)前缀的一部分)来断言合适的CID,以便唯一地标识DMA事务的来源并提供活跃度保护。CID还使得I/O能够与不同设备146隔离开。
[0033] 在使用中,加密引擎140监听由I/O控制器144生成到存储器132的所有DMA事务。在去往或来自能够参与可信I/O的设备146的每个事务中,加密引擎140引用CID表142以在CID表142中找到对应于DMA通道的CID。匹配表示通道当前受保护,并且加密引擎140应使用与通道相关联的通道密钥来保护被写入到存储器132和/或从存储器132中读取的数据(取决于通道的方向)。
[0034] 现在参照图2,在说明性实施例中,计算设备100在操作期间建立环境200。说明性环境200包括硬件证明模块202、安全枚举模块204、软件证明模块206、固件证明模块212、以及应用证明模块214。在一些实施例中,环境200还可以包括平台描述模块216和绑定模块218。环境200的各种模块可以被实施为硬件、固件、软件或其组合。这样,在一些实施例中,环境200的模块中的一个或多个模块可以被实施为电子设备的电路系统或集合(例如,硬件证明电路系统202、安全枚举电路系统204、软件证明电路系统206、固件证明电路系统212、应用证明电路系统214、平台描述电路系统216和/或绑定电路系统218)。应当理解,在这样的实施例中,硬件证明电路系统202、安全枚举电路系统204、软件证明电路系统206、固件证明电路系统212、应用证明电路系统214、平台描述电路系统216和/或绑定电路系统218中的一者或多者可以形成计算设备100的处理器120、I/O子系统128和/或其他组件中的一者或多者的一部分。另外,在一些实施例中,说明性模块中的一个或多个可以形成另一个模块的一部分和/或说明性模块中的一个或多个可以彼此独立。
[0035] 硬件证明模块202被配置用于收集与计算设备100的一个或多个静态附接的硬件I/O组件相关联的硬件证明信息。所述硬件I/O组件与用加密引擎140保护的可信I/O用途相关联,并且可以包括诸如一个或多个静态连接的I/O控制器144和/或I/O设备146等组件。硬件证明模块202被进一步配置用于验证所述硬件证明信息。
[0036] 安全枚举模块204被配置用于响应于对所述硬件证明信息的验证而安全地枚举所述计算设备的一个或多个动态附接的硬件I/O组件,并且响应于对所述硬件I/O组件的安全枚举而加载一个或多个可信软件组件。例如,如下面进一步描述的,安全枚举模块204可以被配置用于枚举I/O控制器144和/或I/O设备146,并且响应于枚举所述硬件组件而加载用处理器120的安全飞地支持124保护的一个或多个安全飞地。安全枚举模块204可以被进一步配置用于将与可信I/O用途相关联的受加密引擎140保护的一个或多个受保护的DMA通道初始化。
[0037] 软件证明模块206被配置用于收集与由安全枚举模块204加载的可信软件组件相关联的软件证明信息。所述软件证明信息指示所述可信软件组件的标识和拓扑。例如,软件证明信息可以包括一个或多个安全飞地报告,每个安全飞地报告指示可信软件组件的加密测量结果。软件证明模块206被进一步配置用于验证所述软件证明信息。软件证明模块206可以被配置用于在本地验证所述软件证明信息,或者将软件证明信息提交给远程验证服务。在一些实施例中,那些功能可以由一个或多个子模块执行,如本地验证器208和/或远程验证器210。
[0038] 固件证明模块212被配置用于收集与计算设备100的I/O控制器144中的一者或多者相关联的固件证明信息。固件证明模块212被进一步配置用于验证所述固件证明信息。固件证明信息可以由计算设备100的可信系统代理(如安全引擎138)来收集和验证。
[0039] 应用证明模块214被配置用于收集与计算设备100的可信应用相关联的应用证明信息。可信应用使用可信I/O用途,例如通过消耗可信键盘输入。应用证明模块214被进一步配置用于验证所述应用证明信息。应用证明信息可以包括可信应用的安全飞地引用,所述安全飞地引用可以被实施为已签名安全飞地报告。
[0040] 平台描述模块216被配置用于读取指示目标计算设备的硬件组件的平台描述并基于所述平台描述生成平台清单。平台清单指示所述目标计算设备的能够进行可信I/O的一个或多个硬件组件,如一个或多个I/O控制器144和/或I/O设备146。绑定模块218被配置用于将平台清单绑定到目标计算设备。在一些实施例中,计算设备100可以是目标计算设备。
[0041] 现在参考图3,图示300展示了可由计算设备100建立的系统架构。系统架构300包括若干个可信I/O(TIO)软件组件,包括可信应用飞地302、密码引擎飞地(CEE)304、一个或多个设备驱动器飞地(DDE)306、一个或多个中间件飞地308、一个或多个安全总线枚举器(SBE)310、以及平台枚举器飞地(PEE)312。系统架构300还包括不可信软件组件,所述不可信软件组件包括密码引擎驱动器314和不可信I/O驱动器栈316。TIO软件组件被说明性地实施为由处理器120的安全飞地支持124保护的安全飞地。应当理解,在其他实施例中,TIO软件组件可以由任何其他适当的可信执行环境托管。例如,在一些实施例中,TIO软件组件可以被实施为可信虚拟机内的组件。
[0042] 应用飞地302可以被实施为可安全地使用I/O设备146中的一个或多个的可信软件。例如,在说明性实施例中,应用飞地302消耗来自经由I/O控制器144a、144b连接的两个I/O设备146a、146b的输入数据。应用飞地302可以由未受保护的应用进程托管。从设备146输入或输出到所述设备的受保护的I/O数据穿过未受保护的I/O驱动器栈316,所述I/O驱动器栈可以包括一个或多个未受保护的I/O驱动器,例如总线驱动器、设备驱动器和/或过滤驱动器。不可信I/O驱动器栈316可以经由一个或多个适当的DDE306和/或中间件飞地308将受保护的数据传递到应用飞地302。
[0043] CEE 304可以被实施为与密码引擎驱动器314进行通信的安全飞地,以将加密密钥和DMA通道信息编程到代表应用飞地302和/或DDE 306的加密引擎140中(例如,使用密码引擎编程支持126的EBINDTIO处理器指令)。密码引擎驱动器314可以被实施为对加密引擎140进行编程(例如,使用密码引擎编程支持126的UNWRAP处理器指令)的未受保护的内核模式驱动器。每个SBE 310可以被实施为总线特定的飞地,其枚举了用于特定总线(如USB总线)的可热插拔设备146。PEE 312可以被实施为“枚举”了附接到计算设备100的静态设备的专用SBE 310。每个DDE 306可以被实施为管理特定(或特定类别的)I/O设备146的安全飞地。例如,HID DDE 306可以管理人机接口设备(HID)设备146。每个DDE 306可以在通过安全通道将受保护的输入发送到应用飞地302之前接收所述输入并进行处理。如所示,系统架构
300还可以包括一个或多个中间件飞地308,所述中间件飞地可以在将安全I/O数据提供到应用飞地302之前对其执行附加处理。
[0044] 现在参考图4,在使用中,计算设备100可以执行用于安全硬件和软件证明的方法400。方法400开始于框402,在所述框中,计算设备100从能够进行可信I/O的静态连接的硬件组件中收集证明信息。例如,计算设备100可以收集针对静态连接的I/O控制器144(例如,USB控制器和其他扩展总线控制器)以及静态连接的I/O设备146(例如,集成键盘、触摸屏、或其他集成I/O设备)的证明信息。在一些实施例中,在框404中,计算设备100可以读取平台清单以收集所述证明信息。所述平台清单可以被实施为指示计算设备100的有TIO能力的硬件组件的任何数据文件、数据表、固件数据或其他数据。例如,平台清单可以包括描述I/O控制器144的信息,诸如总线描述符(例如,USB、蓝牙等)、控制器ID、所支持的DMA通道的数量、和/或I/O控制器144是否是可热插拔的。作为另一示例,平台清单可以包括描述I/O设备146的信息,如类别描述符(例如,指纹读取器、触摸屏等)和通道ID。平台清单可以在制造期间被创建、安装或以其他方式供应到计算设备100。以下结合图7描述了用于创建平台清单的方法的一个可能实施例。
[0045] 在一些实施例中,在框406中,计算设备100可以使用可信系统代理(如安全引擎138)来发现静态连接的I/O控制器144和/或设备146。所述系统代理可以通过主机软件无法访问的边带接口连接到有TIO能力的硬件(例如,I/O控制器144和/或设备146)。在一些实施例中,系统代理可以查询I/O控制器144并且构造如上所述的包括设备信息的平台清单。另外地或可替代地,所述系统代理可以使用分层枚举方法来构造所述平台清单,例如通过递归地发现所有PCIe控制器144并然后发现附接到每个控制器144的设备146。此信息可以被安全地提供到可信软件实体(如平台枚举飞地(PEE)312),所述可信软件实体然后可以使用所述信息来启动安全枚举,如下所述。另外,证明信息可以包括在系统代理上运行的固件(例如,安全引擎138的固件)的标识,使得验证器可以判定验证器是否信任由所述系统代理作出的关于计算设备100的硬件配置的报告。尽管示出为使用安全引擎138,但是应当理解的是,所述系统代理可以被实施为计算设备100的能够以安全的方式向可信任的TIO软件实体传达关于硬件组件的信息的任何可信代理。
[0046] 在框408中,计算设备100验证与静态连接的硬件组件相关联的证明信息。验证所述证明信息确保了所述硬件证明信息是可靠的并且描述了本地计算设备100。所述验证可以由可信系统代理(例如,安全引擎138)和/或一个或多个可信软件实体来执行。在一些实施例中,在框410中,计算设备100可以验证所述平台清单。以下结合图6描述了用于验证平台清单的方法的一个可能实施例。
[0047] 在框412中,计算设备100收集针对I/O控制器144中加载的固件的证明信息。计算设备100可以收集诸如I/O控制器144的标识、固件代码的标识(例如,固件代码的加密散列)、固件代码的签名者、和/或固件代码的安全版本号等证明信息。可以由可信系统代理(如,安全引擎138)收集所述证明信息,所述可信系统代理将固件代码加载到I/O控制器144(例如,在 平台上的安全引擎138BUP和RBE固件)中。在框414中,计算设备100验证针对所述固件的证明信息。计算设备100可以例如验证固件代码的加密散列并确保所述代码被可信实体(例如,诸如 的处理器制造商或计算设备100的制造商)签名、验证安全版本号或者验证与固件代码相关的其他信息。
[0048] 在框416中,在验证所述硬件证明信息之后,计算设备100安全地枚举可热插拔的I/O控制器144和/或I/O设备146。计算设备100发现被动态地附接到计算设备100的I/O控制器144或I/O设备146,例如外部USB键盘、无线键盘、或其他外围设备。在一些实施例中,计算设备100可以枚举所请求的TIO用途(例如,文本输入用途)所使用的I/O控制器144和/或I/O设备146。
[0049] 在框418中,计算设备100针对所枚举的I/O控制器144和I/O设备146加载可信TIO软件组件。由于I/O控制器144和I/O设备146被安全地枚举,所以计算设备100可以加载相关联的TIO软件组件。例如,计算设备100可以为被确定为静态连接到计算设备100的每个可热插拔的I/O控制器144加载安全总线枚举器(SBE)310并且为被附接到I/O控制器144的每个I/O设备146(包括热插拔设备)加载设备驱动器飞地(DDE)306。当然,计算设备100还可以为静态附接的硬件组件加载TIO软件组件,例如CEE 304和/或PEE 312。
[0050] 在框420中,计算设备100在可信软件组件被加载时从所述可信软件组件收集证明信息。可以由来自诸如PEE 312、SBE 310、DDE 306、中间件飞地308、以及CEE 304本身等所加载的其他TIO飞地的可信软件组件(如密码引擎飞地(CEE)304)来收集所述证明信息。这些TIO软件组件证明其标识并将其标识报告给CEE 304。在说明性实施例中,TIO组件使用安全飞地报告和/或引用机制报告其标识,例如通过生成针对CEE 304的安全飞地报告。软件证明信息可以包括诸如软件组件类型(例如,CEE 304、DDE 306、SBE 310、PEE 312等)的信息;软件组件标识,如安全飞地的测量结果(MR_ENCLAVE);安全飞地的签名者的标识(MR_SIGNER);安全版本号;和/或相关联的设备(例如,用于SBE 310的相关联I/O控制器144或用于DDE 306的I/O设备146的类别)。尽管展示为使用由处理器120的安全飞地支持124提供的安全飞地报告机制,但应当理解,用于TIO软件组件的特定证明机制取决于托管所述组件的可信执行环境(TEE)。例如,可信虚拟机内部的组件可以使用在引导时所记录的托管VMM的测量结果。
[0051] 在框422中,计算设备100加载可信应用302。可信应用302消耗或以其他方式使用I/O设备146的可信用途。例如,可信应用302可以使用可信键盘输入,例如用于接收用户密码或其他敏感信息。如图3所示,可信应用302可以被实施为由处理器120的安全飞地支持124保护的应用飞地302。在框424中,可信应用302将与同可信用途相关联的I/O设备146一起使用的受保护的DMA通道初始化。可信应用302可以使用处理器120的密码引擎编程支持
126来对加密引擎140进行编程,以保护与一个或多个I/O设备146相关联的DMA通道。应当理解的是,计算设备100的一个或多个其他可信组件可以对DMA通道安全地进行编程,例如CEE 
304或者一个或多个DDE 306。
[0052] 在框426中,计算设备100记录针对受保护DMA通道的拓扑信息。所述拓扑信息提供关于各种TIO软件组件(例如,可信应用302、DDE 306、中间件飞地308等)与硬件(例如,加密引擎140、I/O控制器144、和/或I/O设备146)之间的连接的信息。如下所述,此信息用于验证已经针对可信I/O正确地设置了安全软件栈。
[0053] 在框428中,计算设备100验证与可信I/O软件组件相关联的证明信息和拓扑信息。CEE 304可以将从TIO软件组件(例如,DDE 306、中间件飞地308、SBE 310、和/或PEE 312)收集的软件证明信息以及它自己的证明信息报告给可信应用302。计算设备100验证特定用途所需的所有I/O设备146经由可信CEE 304、DDE 306、中间件飞地308和/或SBE 310飞地适当地连接到可信应用302。例如,来自操作系统供应商、独立软件供应商、或其他来源的策略可能对于验证实体而言可用,以推导出用于特定TIO用途(例如可信文本输入)的I/O设备列表
146。这样的策略可以指定计算设备100的所有触摸键盘和HID键盘146必须被保护,然后才能消费可信文本输入。使用所连接的飞地的拓扑和此策略,验证器从可信应用302开始搜索所有I/O设备146,并且验证用于TIO用途所需的I/O设备146是能够到达设备146的子集。验证器还通过验证所有节点的证明信息来确保路径上的所有节点(即,TIO软件组件)是可信任的。用于对证明信息进行验证的机制是灵活的,并且根据与特定用途相关的安全性要求允许不同的可信实体进行验证。
[0054] 在一些实施例中,在框430中,可信应用302可以验证所述证明信息和/或拓扑信息。例如,应用飞地302可以基于由独立软件供应商供应的策略来自行执行验证。在一些实施例中,在框432中,计算设备100的本地验证服务可以验证所述证明信息和/或拓扑信息。应用飞地302可以将所述验证委托给可能由平台制造商、OS供应商、或其他第三方拥有的本地平台实体。例如,计算设备100可以附带由制造商安装的服务,所述服务使用在计算设备
100上供应的默认验证策略。当软件组件和固件组件在计算设备100上更新时,本地服务可以从可信在线服务中接收关于所述更新的信息(例如,新的飞地测量结果、版本信息等),并且使用这个信息来验证由已更新的软件组件提供的证明信息。在一些实施例中,在框432中,计算设备100可以将证明信息和拓扑信息提交给远程验证服务以进行验证。应用飞地
302可以将所述验证委托给远程验证服务,并且向所述远程服务提供证明信息以进行验证。
远程验证服务可以由平台制造商、处理器制造商(例如, 公司)、或其他第三方提供。
某些高可信度用途可能需要远程验证。
[0055] 现在参考图5,示意图500展示了可由CEE 304捕获并由可信应用302或其他验证器验证的软件证明和拓扑信息的一个可能实施例。图500展示了用于可信键盘输入用途的各TIO软件组件之间的连接。在说明性示例中,可信应用302被连接到文本输入中间件飞地308,所述文本输入中间件飞地收集来自各种类型的键盘(USB、触摸屏等)的输入。文本输入中间件飞地308进而被连接到触摸键盘DDE 306a和人机接口设备(HID)DDE 306b。DDE 
306a、306b分别经由加密引擎140加密地连接到触摸键盘146a和USB键盘146b。由于存在从应用飞地302开始并到达由策略指定的每种类型的键盘设备146的安全路径(穿过TIO软件组件),因此验证器可以确定执行所请求的TIO用途是安全的。
[0056] 返回参考图4,在框436中,计算设备100从应用飞地302收集证明信息。应用飞地302可以证明包括应用标识的信息,如飞地的测量结果(MR_ENCLAVE);飞地签名者的标识(MR_SIGNER);以及安全版本号。应用飞地302可以生成引用来证明其验证器,所述验证器可以被实施为由引用飞地用计算设备100的EPID键签名的安全飞地报告。在框438中,计算设备100验证来自应用飞地302的证明信息。计算设备100可以通过将应用证明信息提交给远程验证服务来验证应用证明信息,例如独立软件供应商(ISV)提供的验证服务。在验证所述证明信息之后,方法400完成,并且可信应用302可以安全地访问与所请求的安全用途相关联的I/O设备146。方法400可以重复执行,例如在每次平台重置之后或者在其他适当的时间。
[0057] 现在参考图6,在使用中,计算设备100可以执行用于验证硬件证明信息的方法600。方法600开始于框602,在所述框中,计算设备100对与可信系统代理相关联的安全DMA通道进行编程,所述可信系统代理说明性地为安全引擎138。安全引擎138可以静态地指配由可信软件编程到加密引擎140中的通道ID(CID)。如下所述,安全引擎138可以使用安全DMA通道来将信息安全地递送到TIO软件实体。
[0058] 在框604中,可信系统代理从计算设备100的场内可编程(IFP)熔丝中读取平台型号。IFP熔丝可以被实施为在计算设备100的制造期间可设定一次但在制造之后不得篡改或以其他方式改变的任何安全硬件熔丝或其他组件。安全引擎138可以包括“熔丝拉取器”硬件以从IFP熔丝中读取平台型号的值。以下结合图7进一步描述了用于配置IFP熔丝的方法的一个实施例。
[0059] 在框606中,可信系统代理将平台型号安全地传输到TIO软件组件。安全引擎138可以将所述平台型号安全地传输到可信TIO软件组件,如PEE312和/或CEE 304。如上所述,安全引擎138可以通过受保护的DMA通道将数据传输到TIO软件组件,并且加密引擎140将用指配给DMA通道的密钥来对数据进行加密,所述密钥也是TIO软件组件已知的。因此,只有TIO软件组件可以对由安全引擎138返回的IFP熔丝中的值进行解密。
[0060] 在框608中,TIO软件组件验证平台清单的签名。例如,PEE 312可以将平台清单上的签名验证为制造商的签名。在一些实施例中,为了在计算设备100上本地地验证签名,可以将制造商证书和证书链供应给计算设备100,并且验证实体可以遍历所述证书链直到它到达可信根证书机构(CA)以判定制造商证书是否有效。平台清单可能没有被制造商存储在计算设备100上。在一些实施例中,在框610中,计算设备100可以从远程服务器下载所述平台清单。例如,计算设备100可以请求与平台型号相关联的平台清单。另外或可替代地,在一些实施例中,为了远程地验证平台清单,制造商证书可以被包括在硬件证明信息中,所述制造商证书可被所述远程服务验证以确定其是否有效。
[0061] 在框612中,TIO软件组件将包含在平台清单中的平台型号与从IFP熔丝中拉取的平台型号进行比较。如果这两个平台型号匹配,则PEE 312可以确定平台清单是可信的,并且平台清单描述了本地计算设备100。在框614中,TIO软件组件判定所述平台型号是否匹配。若否,则方法600分支到框616,在所述框中TIO软件组件指示验证失败并且方法600完成。返回参考框614,如果所述平台模型号匹配,则方法600分支到框618,在所述框中,TIO软件组件返回成功,指示硬件证明信息成功通过验证。在成功的硬件验证之后,计算设备100可以继续进行上面结合图4所描述的I/O控制器144和I/O设备146的安全枚举。
[0062] 现在参考图7,在使用中,计算设备100可以执行用于生成平台清单的方法700。方法700可以在计算设备100的制造期间执行,例如在制造商的安全设施内执行。尽管被展示为由计算设备100执行,但是应该理解,在一些实施例中,方法700可以由在制造过程期间使用的不同的计算设备来执行。方法700开始于框702,在所述框中,计算设备100读取计算设备100的平台描述。在TIO可信代码基(TCB)内的平台制造商已经具有关于包含在制造商组装的计算设备100中的I/O控制器144和I/O设备146的信息。计算设备100可以使用任何技术来读取或以其他方式确定计算设备100的描述。在一些实施例中,在框704中,计算设备100可以从计算设备100的ACPI表的一个或多个TIO特定条目中读取所述平台描述。对于许多计算设备100,计算设备100的硬件组件的描述以及对于设备配置和电力管理可能有用的若干个属性已经在由平台制造商生成的ACPI固件表中可用。为了便于硬件证明,计算设备100的制造商可以将TIO特定的属性作为对象添加到计算设备100的ACPI表中。
[0063] 现在参考图8,伪代码800展示了ACPI表的一个可能实施例,所述ACPI表可以被包括在具有有TIO能力的USB控制器144的计算设备100中。如图8所示,USB控制器描述中包括两个对象_TCI 802和_TPE 804。说明性地,_TCI 802对象描述USB控制器144的唯一ID和专用于其的TIO通道数量。任选的_TPE 804对象描述连接到控制器144的设备146的特定端点,所述控制器在上电时应当受保护。
[0064] 返回参照图7,在框706中,计算设备100生成描述了计算设备100的静态附接的I/O控制器144和I/O设备146的平台清单。例如,计算设备100可以从描述了计算设备100的有TIO能力的硬件(例如,静态附接的I/O控制器144和I/O设备146、以及能够支持TIO的可热插拔的I/O控制器144)的ACPI表格中生成平台硬件清单。所述平台清单可以由读取ACPI表的工具生成,从ACPI表中解析TIO特定的信息,并且将所述TIO特定的信息包括在平台清单文件中。
[0065] 在框708中,计算设备100将平台清单绑定到计算设备100。所述平台清单被绑定到计算设备100,使得描述了另一平台(例如,不同的计算设备100)的清单不能替代所述平台清单,并且使安全枚举进程不能正确地揭示计算设备100上的所有I/O设备146。在框710中,计算设备100将唯一的平台型号烧录到计算设备100的场内可编程(IFP)熔丝中。计算设备100的每个唯一型号(在计算设备100上有TIO能力的硬件的组合意义上)可以与唯一的平台型号相关联。这个型号可以被编程到IFP熔丝中。如上所述,计算设备100的安全引擎138的熔丝拉取器硬件可以读取可用于验证平台清单的平台型号。在框712中,计算设备100将所述平台型号包括在计算设备100的平台清单中。在框714中,计算设备100用制造商的私人签名密钥来对平台清单进行签名。在框716中,计算设备100将已签名平台清单安装在计算设备100上。在安装所述平台清单之后,方法700完成。
[0066] 应当理解的是,在一些实施例中,方法400、600、700可以被实施为存储在计算机可读介质上的各种指令,所述指令可以由计算设备100的处理器120、加密引擎140和/或其他组件来执行,以使得计算设备100执行相应的方法400、600、700。所述计算机可读介质可以被实施为能够由计算设备100读取的任何类型的介质,包括但不限于存储器132、数据存储设备134、处理器120的微码、加密引擎140的存储器、加密引擎140的固件、和/或其他介质。
[0067] 示例
[0068] 下文提供了本文中所公开的技术的说明性示例。这些技术的实施例可包括下文描述的示例中的任何一者或多者以及其任何组合。
[0069] 示例1包括一种用于可信I/O证明和验证的计算设备,所述计算设备包括:硬件证明模块,用于:(i)收集与所述计算设备的一个或多个静态附接的硬件I/O组件相关联的硬件证明信息,其中,所述硬件I/O组件与用所述计算设备的加密引擎保护的可信I/O用途相关联;以及(ii)验证所述硬件证明信息;安全枚举模块,用于:(i)响应于对所述硬件证明信息的验证而安全地枚举所述计算设备的一个或多个动态附接的硬件I/O组件、以及(ii)响应于对所述一个或多个动态附接的硬件I/O组件的安全枚举而加载一个或多个可信软件组件;以及软件证明模块,用于:(i)响应于所述可信软件组件的加载而收集与所述可信软件组件相关联的软件证明信息,其中,所述软件证明信息指示所述可信软件组件的标识和拓扑;以及(ii)验证所述软件证明信息。
[0070] 示例2包括如示例1所述的主题,并且其中,收集所述硬件证明信息包括读取所述计算设备的平台清单,其中,所述平台清单指示所述静态附接的硬件I/O组件。
[0071] 示例3包括如示例1和2中任一项所述的主题,并且其中,验证所述硬件证明信息包括:由所述计算设备的可信软件组件验证所述平台清单的加密签名。
[0072] 示例4包括如示例1至3中任一项所述的主题,并且其中,验证所述硬件证明信息进一步包括:由所述计算设备的可信系统代理从所述计算设备的场内可编程熔丝中读取平台模型标识符;由所述可信系统代理将所述平台模型标识符安全地传输到所述可信软件组件;以及响应于对所述平台清单的所述加密签名的验证而由所述可信软件组件将所述平台模型标识符与所述平台清单的第二平台模型标识符进行比较。
[0073] 示例5包括如示例1至4中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0074] 示例6包括如示例1至5中任一项所述的主题,并且其中,收集与所述一个或多个静态附接的硬件I/O组件相关联的所述硬件证明信息包括由所述计算设备的可信系统代理发现所述静态附接的硬件I/O组件。
[0075] 示例7包括如示例1至6中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0076] 示例8包括如示例1至7中任一项所述的主题,并且其中,收集所述软件证明信息包括生成一个或多个安全飞地报告,其中,每个安全飞地报告指示可信软件组件的加密测量结果。
[0077] 示例9包括如示例1至8中任一项所述的主题,并且其中,验证所述软件证明信息包括:确定所述可信I/O用途所需的一个或多个硬件I/O设备;基于所述软件证明信息确定所述可信I/O用途所需的所述一个或多个硬件I/O设备中的每一个是从与所述可信I/O用途相关联的可信应用经由安全I/O路径能够到达的;以及验证与每个安全I/O路径相关联的每个可信软件组件的标识。
[0078] 示例10包括如示例1至9中任一项所述的主题,并且其中,验证所述软件证明信息包括:由所述计算设备的可信应用来验证所述软件证明信息。
[0079] 示例11包括如示例1至10中任一项所述的主题,并且其中,验证所述软件证明信息包括:将所述软件证明信息提交给所述计算设备的本地验证服务。
[0080] 示例12包括如示例1至11中任一项所述的主题,并且其中,验证所述软件证明信息包括:将所述软件证明信息提交给远程验证服务。
[0081] 示例13包括如示例1至12中任一项所述的主题,并且进一步包括固件证明模块,所述固件证明模块用于:(i)收集与所述计算设备的一个或多个I/O控制器相关联的固件证明信息;以及(ii)验证所述固件证明信息。
[0082] 示例14包括如示例1至13中任一项所述的主题,并且其中:收集所述固件证明信息包括由所述计算设备的可信系统代理收集所述固件证明信息;并且验证所述固件证明信息包括由所述可信系统代理来验证所述固件证明信息。
[0083] 示例15包括如示例1至14中任一项所述的主题,并且其中,所述固件证明信息包括与所述一个或多个I/O控制器相关联的固件代码的加密散列。
[0084] 示例16包括如示例1至15中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0085] 示例17包括如示例1至16中任一项所述的主题,并且进一步包括:应用证明模块,所述应用证明模块用于:(i)收集与所述计算设备的可信应用相关联的应用证明信息,其中,所述可信应用使用所述可信I/O用途;以及(ii)验证所述应用证明信息。
[0086] 示例18包括如示例1至17中任一项所述的主题,并且其中,验证所述应用证明信息包括:将所述应用证明信息提交给远程验证服务。
[0087] 示例19包括如示例1至18中任一项所述的主题,并且其中,所述应用证明信息包括所述可信应用的安全飞地引用,其中,所述安全飞地引用包括已签名安全飞地报告,并且其中,所述安全飞地报告指示所述可信应用的加密测量结果。
[0088] 示例20包括如示例1至19中任一项所述的主题,并且其中,所述安全枚举模块进一步用于使与所述可信I/O用途相关联的一个或多个受保护DMA通道初始化。
[0089] 示例21包括一种用于生成平台清单的计算设备,所述计算设备包括:平台描述模块,用于:(i)读取指示目标计算设备的硬件组件的平台描述;以及(ii)基于所述平台描述而生成平台清单,其中,所述平台清单指示所述目标计算设备的能够进行可信I/O的一个或多个硬件组件;以及绑定模块,用于将所述平台清单绑定到所述目标计算设备。
[0090] 示例22包括如示例21所述的主题,并且其中,读取所述平台描述包括读取平台固件描述表。
[0091] 示例23包括如示例21和22中任一项所述的主题,并且其中,生成所述平台清单包括生成指示所述目标计算设备的能够进行可信I/O的一个或多个静态附接的I/O控制器的平台清单。
[0092] 示例24包括如示例21至23中任一项所述的主题,并且其中,将所述平台清单绑定到所述目标计算设备包括:将平台模型标识符烧录到所述目标计算设备的场内可编程熔丝中;将所述平台模型标识符包含在所述平台清单中;以及响应于将所述平台模型标识符包含在所述平台清单中而对所述平台清单进行加密签名。
[0093] 示例25包括如示例21至24中任一项所述的主题,并且其中,所述计算设备包括所述目标计算设备。
[0094] 示例26包括一种用于可信I/O证明和验证的方法,所述方法包括:由计算设备收集与所述计算设备的一个或多个静态附接的硬件I/O组件相关联的硬件证明信息,其中,所述硬件I/O组件与使用所述计算设备的加密引擎的可信I/O用途相关联;由所述计算设备验证所述硬件证明信息;响应于验证所述硬件证明信息而由所述计算设备安全地枚举所述计算设备的一个或多个动态附接的硬件I/O组件;响应于安全地枚举所述一个或多个动态附接的硬件I/O组件而由所述计算设备加载一个或多个可信软件组件;响应于加载所述可信软件组件而由所述计算设备收集与所述可信软件组件相关联的软件证明信息,其中,所述软件证明信息指示所述可信软件组件的标识和拓扑;以及由所述计算设备验证所述软件证明信息。
[0095] 示例27包括如示例26所述的主题,并且其中,收集所述硬件证明信息包括读取所述计算设备的平台清单,其中,所述平台清单指示所述静态附接的硬件I/O组件。
[0096] 示例28包括如示例26和27中任一项所述的主题,并且其中,验证所述硬件证明信息包括:由所述计算设备的可信软件组件验证所述平台清单的加密签名。
[0097] 示例29包括如示例26至28中任一项所述的主题,并且其中,验证所述硬件证明信息进一步包括:由所述计算设备的可信系统代理从所述计算设备的场内可编程熔丝中读取平台模型标识符;由所述可信系统代理将所述平台模型标识符安全地传输到所述可信软件组件;以及响应于对所述平台清单的所述加密签名进行验证而由所述可信软件组件将所述平台模型标识符与所述平台清单的第二平台模型标识符进行比较。
[0098] 示例30包括如示例26至29中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0099] 示例31包括如示例26至30中任一项所述的主题,并且其中,收集与所述一个或多个静态附接的硬件I/O组件相关联的所述硬件证明信息包括由所述计算设备的可信系统代理发现所述静态附接的硬件I/O组件。
[0100] 示例32包括如示例26至31中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0101] 示例33包括如示例26至32中任一项所述的主题,并且其中,收集所述软件证明信息包括生成一个或多个安全飞地报告,其中,每个安全飞地报告指示可信软件组件的加密测量结果。
[0102] 示例34包括如示例26至33中任一项所述的主题,并且其中,验证所述软件证明信息包括:确定所述可信I/O用途所需的一个或多个硬件I/O设备;基于所述软件证明信息确定所述可信I/O用途所需的所述一个或多个硬件I/O设备中的每一个是从与所述可信I/O用途相关联的可信应用经由安全I/O路径能够到达的;以及验证与每个安全I/O路径相关联的每个可信软件组件的标识。
[0103] 示例35包括如示例26至34中任一项所述的主题,并且其中,验证所述软件证明信息包括:由所述计算设备的可信应用来验证所述软件证明信息。
[0104] 示例36包括如示例26至35中任一项所述的主题,并且其中,验证所述软件证明信息包括:将所述软件证明信息提交给所述计算设备的本地验证服务。
[0105] 示例37包括如示例26至36中任一项所述的主题,并且其中,验证所述软件证明信息包括:将所述软件证明信息提交给远程验证服务。
[0106] 示例38包括如示例26至37中任一项所述的主题,并且进一步包括:由所述计算设备收集与所述计算设备的一个或多个I/O控制器相关联的固件证明信息;以及由所述计算设备验证所述固件证明信息。
[0107] 示例39包括如示例26至38中任一项所述的主题,并且其中:收集所述固件证明信息包括由所述计算设备的可信系统代理收集所述固件证明信息;并且验证所述固件证明信息包括由所述可信系统代理来验证所述固件证明信息。
[0108] 示例40包括如示例26至39中任一项所述的主题,并且其中,收集所述固件证明信息包括收集与所述一个或多个I/O控制器相关联的固件代码的加密散列。
[0109] 示例41包括如示例26至40中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0110] 示例42包括如示例26至41中任一项所述的主题,并且进一步包括:由所述计算设备收集与所述计算设备的可信应用相关联的应用证明信息,其中,所述可信应用使用所述可信I/O用途;以及由所述计算设备验证所述应用证明信息。
[0111] 示例43包括如示例26至42中任一项所述的主题,并且其中,验证所述应用证明信息包括:将所述应用证明信息提交给远程验证服务。
[0112] 示例44包括如示例26至43中任一项所述的主题,并且其中,收集所述应用证明信息包括收集来自所述可信应用的安全飞地引用,其中,所述安全飞地引用包括已签名安全飞地报告,并且其中,所述安全飞地报告指示所述可信应用的加密测量结果。
[0113] 示例45包括如示例26至44中任一项所述的主题,并且进一步包括使与所述可信I/O用途相关联的一个或多个受保护DMA通道初始化。
[0114] 示例46包括一种用于生成平台清单的方法,所述方法包括:由计算设备读取指示目标计算设备的硬件组件的平台描述;由所述计算设备基于所述平台描述而生成平台清单,其中,所述平台清单指示所述目标计算设备的能够进行可信I/O的一个或多个硬件组件;以及由所述计算设备将所述平台清单绑定到所述目标计算设备。
[0115] 示例47包括如示例46所述的主题,并且其中,读取所述平台描述包括读取平台固件描述表。
[0116] 示例48包括如示例46和47中任一项所述的主题,并且其中,生成所述平台清单包括生成指示所述目标计算设备的能够进行可信I/O的一个或多个静态附接的I/O控制器的平台清单。
[0117] 示例49包括如示例46至48中任一项所述的主题,并且其中,将所述平台清单绑定到所述目标计算设备包括:将平台模型标识符烧录到所述目标计算设备的场内可编程熔丝中;将所述平台模型标识符包含在所述平台清单中;以及响应于将所述平台模型标识符包含在所述平台清单中而对所述平台清单进行加密签名。
[0118] 示例50包括如示例46至49中任一项所述的主题,并且其中,所述计算设备包括所述目标计算设备。
[0119] 示例51包括一种计算设备,所述计算设备包括:处理器;以及存储器,所述存储器具有存储于其中的多条指令,所述多条指令当被所述处理器执行时致使所述计算设备执行如示例26至50中任一项所述的方法。
[0120] 示例52包括一种或多种机器可读存储介质,所述一种或多种机器可读存储介质包括存储于其上的多条指令,所述多条指令响应于被执行而使计算设备执行如示例26至50中任一项所述的方法。
[0121] 示例53包括一种计算设备,所述计算设备包括用于执行如示例26至50中任一项所述的方法的装置。
[0122] 示例54包括一种用于可信I/O证明和验证的计算设备,所述计算设备包括:用于收集与所述计算设备的一个或多个静态附接的硬件I/O组件相关联的硬件证明信息的装置,其中,所述硬件I/O组件与使用所述计算设备的加密引擎的可信I/O用途相关联;用于验证所述硬件证明信息的装置;用于响应于验证所述硬件证明信息而安全地枚举所述计算设备的一个或多个动态附接的硬件I/O组件的装置;用于响应于安全地枚举所述一个或多个动态附接的硬件I/O组件而加载一个或多个可信软件组件的装置;用于响应于加载所述可信软件组件而收集与所述可信软件组件相关联的软件证明信息的装置,其中,所述软件证明信息指示所述可信软件组件的标识和拓扑;以及用于验证所述软件证明信息的装置。
[0123] 示例55包括如示例54所述的主题,并且其中,用于收集所述硬件证明信息的所述装置包括用于读取所述计算设备的平台清单的装置,其中,所述平台清单指示所述静态附接的硬件I/O组件。
[0124] 示例56包括如示例54和55中任一项所述的主题,并且其中,用于验证硬件证明信息的所述装置包括用于由所述计算设备的可信软件组件验证所述平台清单的加密签名的装置。
[0125] 示例57包括如示例54至56中任一项所述的主题,并且其中,用于验证所述硬件证明信息的所述装置进一步包括:用于由所述计算设备的可信系统代理从所述计算设备的场内可编程熔丝中读取平台模型标识符的装置;用于由所述可信系统代理将所述平台模型标识符安全地传输到所述可信软件组件的装置;以及用于响应于对所述平台清单的所述加密签名进行验证而由所述可信软件组件将所述平台模型标识符与所述平台清单的第二平台模型标识符进行比较的装置。
[0126] 示例58包括如示例54至57中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0127] 示例59包括如示例54至58中任一项所述的主题,并且其中,用于收集与所述一个或多个静态附接的硬件I/O组件相关联的所述硬件证明信息的所述装置包括用于由所述计算设备的可信系统代理发现所述静态附接的硬件I/O组件的装置。
[0128] 示例60包括如示例54至59中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0129] 示例61包括如示例54至60中任一项所述的主题,并且其中,用于收集所述软件证明信息的所述装置包括用于生成一个或多个安全飞地报告的装置,其中,每个安全飞地报告指示可信软件组件的加密测量结果。
[0130] 示例62包括如示例54至61中任一项所述的主题,并且其中,用于验证所述软件证明信息的所述装置包括:用于确定所述可信I/O用途所需的一个或多个硬件I/O设备的装置;用于基于所述软件证明信息确定所述可信I/O用途所需的所述一个或多个硬件I/O设备中的每一个从与所述可信I/O用途相关联的可信应用经由安全I/O路径能够到达的装置;以及用于验证与每个安全I/O路径相关联的每个可信软件组件的标识的装置。
[0131] 示例63包括如示例54至62中任一项所述的主题,并且其中,用于验证所述软件证明信息的所述装置包括用于由所述计算设备的可信应用验证所述软件证明信息的装置。
[0132] 示例64包括如示例54至63中任一项所述的主题,并且其中,用于验证所述软件证明信息的所述装置包括:用于将所述软件证明信息提交给所述计算设备的本地验证服务的装置。
[0133] 示例65包括如示例54至64中任一项所述的主题,并且其中,用于验证所述软件证明信息的所述装置包括:用于将所述软件证明信息提交给远程验证服务的装置。
[0134] 示例66包括如示例54至65中任一项所述的主题,并且进一步包括:用于收集与所述计算设备的一个或多个I/O控制器相关联的固件证明信息的装置;以及用于验证所述固件证明信息的装置。
[0135] 示例67包括如示例54至66中任一项所述的主题,并且其中:用于收集所述固件证明信息的所述装置包括用于由所述计算设备的可信系统代理收集所述固件证明信息的装置;并且用于验证所述固件证明信息的所述装置包括用于由所述可信系统代理来验证所述固件证明信息的装置。
[0136] 示例68包括如示例54至67中任一项所述的主题,并且其中,用于收集所述固件证明信息的所述装置包括用于收集与所述一个或多个I/O控制器相关联的固件代码的加密散列的装置。
[0137] 示例69包括如示例54至68中任一项所述的主题,并且其中,所述可信系统代理包括所述计算设备的会聚式安全引擎。
[0138] 示例70包括如示例54至69中任一项所述的主题,并且进一步包括:用于收集与所述计算设备的可信应用相关联的应用证明信息的装置,其中,所述可信应用使用所述可信I/O用途;以及用于验证所述应用证明信息的装置。
[0139] 示例71包括如示例54至70中任一项所述的主题,并且其中,用于验证所述应用证明信息的所述装置包括:用于将所述应用证明信息提交给远程验证服务的装置。
[0140] 示例72包括如示例54至71中任一项所述的主题,并且其中,用于收集所述应用证明信息的所述装置包括用于收集来自所述可信应用的安全飞地引用的装置,其中,所述安全飞地引用包括已签名安全飞地报告,并且其中,所述安全飞地报告指示所述可信应用的加密测量结果。
[0141] 示例73包括如示例54至72中任一项所述的主题,并且进一步包括用于使与所述可信I/O用途相关联的一个或多个受保护DMA通道初始化的装置。
[0142] 示例74包括一种用于生成平台清单的计算设备,所述计算设备包括:用于读取指示目标计算设备的硬件组件的平台描述的装置;用于基于所述平台描述而生成平台清单的装置,其中,所述平台清单指示所述目标计算设备的能够进行可信I/O的一个或多个硬件组件;以及用于将所述平台清单绑定到所述目标计算设备的装置。
[0143] 示例75包括如示例74所述的主题,并且其中,用于读取所述平台描述的所述装置包括用于读取平台固件描述表的装置。
[0144] 示例76包括如示例74和75中任一项所述的主题,并且其中,用于生成所述平台清单的所述装置包括用于生成指示所述目标计算设备的能够进行可信I/O的一个或多个静态附接的I/O控制器的平台清单的装置。
[0145] 示例77包括如示例74至76中任一项所述的主题,并且其中,用于将所述平台清单绑定到所述目标计算设备的所述装置包括:用于将平台模型标识符烧录到所述目标计算设备的场内可编程熔丝中的装置;用于将所述平台模型标识符包含在所述平台清单中的装置;以及用于响应于将所述平台模型标识符包含在所述平台清单中而对所述平台清单进行加密签名的装置。
[0146] 示例78包括如示例74至77中任一项所述的主题,并且其中,所述计算设备包括所述目标计算设备。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈