CN107787495B - 安全输入/输出设备管理 - Google Patents

安全输入/输出设备管理 Download PDF

Info

Publication number
CN107787495B
CN107787495B CN201680038970.8A CN201680038970A CN107787495B CN 107787495 B CN107787495 B CN 107787495B CN 201680038970 A CN201680038970 A CN 201680038970A CN 107787495 B CN107787495 B CN 107787495B
Authority
CN
China
Prior art keywords
trusted
response
endpoint
controller
secure enclave
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
CN201680038970.8A
Other languages
English (en)
Other versions
CN107787495A (zh
Inventor
S.B.麦克戈万
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN107787495A publication Critical patent/CN107787495A/zh
Application granted granted Critical
Publication of CN107787495B publication Critical patent/CN107787495B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)

Abstract

公开了用于安全I/O设备管理的装置和方法的实施例。在实施例中,一种装置包括处理器和I/O控制器。处理器具有安全执行环境支持,其中,处理器要使用安全执行环境支持来建立安全执行环境。I/O控制器包括集成的可信I/O设备,其中,可信I/O设备要经由可信I/O设备的默认控制端点来接收要配置可信I/O设备的未加密请求,响应于未加密请求的接收而配置命令端点和响应端点,经由命令端点从安全执行环境接收加密命令,响应于加密命令的接收而执行与I/O控制器相关的设备管理操作,以及响应于设备管理操作的执行而经由响应端点将加密响应发送到安全执行环境。

Description

安全输入/输出设备管理
技术领域
本发明涉及安全输入/输出设备管理。
背景技术
当前的处理器可以提供对诸如安全飞地(enclave)(也称为架构飞地)之类的安全和/或可信执行环境的支持。安全飞地包括由处理器保护免于未授权的访问(包括未授权的读取和写入)的存储器区段(包括代码和/或数据)。具体地,某些处理器可包括英特尔®软件防护扩展(SGX)以提供安全飞地支持。
具体地,SGX向安全飞地数据提供机密性、完整性和重放保护,同时数据驻留在平台存储器中,并且从而提供针对软件和硬件攻击二者的保护。片上边界形成自然的安全边界,其中数据和代码可以用明文来存储,并被假定是安全的。英特尔® SGX不保护跨越片上边界移动的输入/输出(I/O)数据。
当前的计算设备“以明码”执行通用串行总线(USB)设备枚举和拓扑管理,也就是说,操作未被加密。因而,对于当前的计算设备,恶意系统软件可容易地识别命令、修改命令、修改结果以向安全飞地提供假信息或者阻止命令或结果以便完全地拒绝服务。
发明内容
根据本发明的一个方面,公开了一种用于安全I/O设备管理的装置,包括:具有安全飞地支持的处理器,其中,所述处理器要使用所述安全飞地支持来建立安全飞地;以及包括集成的可信I/O设备的I/O控制器,其中,所述可信I/O设备要经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求,响应于所述未加密请求的接收而配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到所述安全飞地,经由所述命令端点从所述安全飞地接收加密命令,响应于所述加密命令的接收而执行与所述I/O控制器相关的设备管理操作;以及响应于所述设备管理操作的执行而经由所述响应端点向所述安全飞地发送加密响应。
根据本发明的另一个方面,公开了一种用于安全I/O设备管理的方法,包括:由集成在计算设备的I/O控制器中的可信I/O设备经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求;响应于接收到要配置所述可信I/O设备的所述未加密请求,由所述可信I/O设备配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到所述安全飞地;由所述可信I/O设备经由所述命令端点从所述计算设备的安全飞地接收加密命令,其中,所述安全飞地是使用所述计算设备的处理器的安全飞地支持来建立的;响应于接收到所述加密命令,由所述可信I/O设备执行与所述I/O控制器相关的设备管理操作;以及响应于执行所述设备管理操作,由所述可信I/O设备经由所述响应端点向所述安全飞地发送加密响应。
根据本发明的又一个方面,公开了一种用于安全I/O设备管理的系统,包括:存储器;具有安全飞地支持的处理器,其中,所述处理器要使用所述安全飞地支持来建立安全飞地;包括集成的可信I/O设备的第一I/O控制器,其中,所述可信I/O设备要经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求,响应于所述未加密请求的接收而配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到所述安全飞地,经由所述命令端点从所述安全飞地接收加密命令,响应于所述加密命令的接收而执行与所述I/O控制器相关的设备管理操作;以及响应于所述设备管理操作的执行而经由所述响应端点向所述安全飞地发送加密响应;以及第二I/O控制器,所述第二I/O控制器要与第一不可信I/O设备通信。
根据本发明的再一个方面,公开了一种用于安全I/O设备管理的装置,包括:用于由集成在计算设备的I/O控制器中的可信I/O设备经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求的部件;用于响应于接收到要配置所述可信I/O设备的所述未加密请求而由所述可信I/O设备配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到所述安全飞地的部件;用于由所述可信I/O设备经由所述命令端点从所述计算设备的安全飞地接收加密命令的部件,其中,所述安全飞地是使用所述计算设备的处理器的安全飞地支持来建立的;用于响应于接收到所述加密命令而由所述可信I/O设备执行与所述I/O控制器相关的设备管理操作的部件;以及用于响应于执行所述设备管理操作而由所述可信I/O设备经由所述响应端点向所述安全飞地发送加密响应的部件。
附图说明
本文描述的概念在附图中通过示例而非限制的方式进行例示。为了例示的简单和清楚,图中所示的元件不一定按比例绘制。在认为适当的情况下,在附图当中重复了参考标记以指示对应或类似的元件。
图1是用于I/O设备的安全枚举和拓扑管理的计算设备的至少一个实施例的简化框图;
图2是图1的计算设备的示例配置的简化框图;
图3是图1和图2的计算设备的USB主机控制器的简化框图;
图4是图3的USB主机控制器的数据流的示意图;以及
图5是用于安全I/O设备管理的方法的实施例。
具体实施方式
虽然本公开的概念易于进行各种修改和替代形式,但是其具体实施例已经通过示例的方式在附图中示出并且将在本文中进行详细描述。然而,应当理解的是,没有意图将本公开的概念限制到所公开的特定形式,而是相反,意图是覆盖与本公开和所附权利要求一致的所有修改、等同和替代。
说明书中对“一个实施例”、“实施例”、“例示性实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以或可以不必须包括所述特定特征、结构或特性。另外,这样的短语不一定指代相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,不论是否明确描述,都主张结合其它实施例实现这样的特征、结构或特性在本领域技术人员的知识范围内。此外,应当认识到,以“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)。
在一些情况下,可以以硬件、固件、软件或其任何组合来实现所公开的实施例。所公开的实施例也可以被实现为存储或承载在一个或多个暂态或非暂态机器可读(例如,计算机可读)存储介质上的指令,所述指令可由一个或多个处理器读取和执行。机器可读存储介质可体现为用于存储或发送机器可读形式的信息的任何存储设备、机构或其它物理结构(例如,易失性或非易失性存储器、介质盘或其它介质设备)。
在附图中,可以以具体布置和/或排序示出一些结构特征或方法特征。然而,应当认识到,可能不需要这样的具体布置和/或排序。相反,在一些实施例中,这样的特征可以以与例示性的图中所示的方式和/或顺序不同的方式和/或顺序来进行布置。此外,在特定图中包括结构特征或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中可以不包括这样的特征或可以将这样的特征与其它特征组合。
现在参考图1,在例示性实施例中,用于I/O设备的安全枚举和拓扑管理的计算设备100除其它组件之外还包括处理器120、融合硬件密码学(密码)引擎140以及与一个或多个I/O设备146通信的一个或多个I/O控制器144。在使用中,如下面进一步描述的那样,密码引擎140提供对经由直接存储器访问(DMA)操作从平台I/O控制器144传送至存储器132或从存储器132传送至平台I/O控制器144的数据的运行中(on-the-fly)加密和解密。每个DMA事务加有表示与特定I/O设备146或I/O设备146的集合相关联的数据流的通道ID(CID)的标签。密码引擎140使用CID来可靠地标识必须被保护的事务,检索对应的加密密钥,并对DMA数据执行适当的密码操作。密码引擎140由可信软件使用处理器120的一个或多个专门指令被编程有例如通道信息和相关联的加密密钥。
为了支持USB设备的安全枚举和拓扑管理,本公开描述了集成到USB主机控制器(例如,xHCI)中的USB可信I/O(TIO)设备。所公开的USB TIO设备可以支持向安全的和/或可信的执行环境(例如,使用英特尔® SGX建立的安全飞地)安全地发送I/O或者从安全的和/或可信的执行环境(例如,使用英特尔® SGX建立的安全飞地)安全地接收I/O。如下面进一步描述的那样,USB TIO设备提供了使安全飞地安全地枚举连接到USB主机控制器的设备的能力以及使安全飞地在发生安全I/O的同时管理设备改变(例如,连接/断开连接)的能力。因而,所公开的技术使用支持I/O设备的热插和热拔的I/O技术来支持安全飞地的安全I/O数据完整性(即,I/O数据的源的验证)。尽管本公开描述了涉及USB的例示性实施例,但是应当理解的是,潜在的公开内容可以适用于支持热插设备的任何I/O总线技术(例如,蓝牙,PCIe等)。
计算设备100可以体现为能够执行本文描述的功能的任何类型的计算设备或计算机设备,包括但不限于:计算机、台式计算机、工作站、服务器、膝上型计算机、笔记本计算机、平板计算机、移动计算设备、可穿戴计算设备、网络器具、web器具、分布式计算系统、基于处理器的系统和/或消费电子设备。如图1所示,计算设备100例示性地包括处理器120、输入/输出子系统128、存储器132、数据存储设备134和通信电路136。当然,在其它实施例中计算设备100可以包括其它组件或附加组件,诸如通常在台式计算机中找到的那些组件(例如,各种输入/输出设备)。另外,在一些实施例中,例示性组件中的一个或多个可以并入另一组件,或以其它方式形成另一组件的一部分。例如,在一些实施例中,存储器132或其部分可以被并入处理器120中。
处理器120可以体现为能够执行本文描述的功能的任何类型的处理器。处理器120可以体现为(一个或多个)单核处理器或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。如图所示,处理器120可以包括硬件虚拟化支持122、安全飞地支持124和密码引擎编程支持126。
硬件虚拟化支持122支持计算设备100对操作系统、应用和其它软件的虚拟化执行。硬件虚拟化支持122可以通过提供两种执行模式(VMX根模式和VMX非根模式)来包括虚拟机扩展(VMX)支持。VMX根模式允许执行软件对计算设备100及其硬件资源具有广泛的控制。相反地,管理程序(hypervisor)、虚拟机监视器(VMM)或主机操作系统(OS)可以在VMX根模式中执行。VMX非根模式约束对某些硬件指令的访问,同时仍然实现处理器120的普通环/特权系统。一个或多个访客OS可以在VMX非根模式中执行。这些访客操作系统可以在环零(ring zero)中执行,类似于在没有虚拟化的情况下进行执行。硬件虚拟化支持122也可支持扩展页表(EPT),其可以体现为硬件辅助的第二级页面地址转译。硬件虚拟化支持122可以体现为例如英特尔® VT-x技术。
安全飞地支持124允许处理器120建立被称为安全飞地的安全和/或可信执行环境,其中执行代码可以被测量、验证和/或以其它方式被确定为真实的。另外,包括在安全飞地中的代码和数据可以被加密或以其它方式被保护以免被在安全飞地外部执行的代码访问。例如,包括在安全飞地中的代码和数据可以在被执行的同时或者在被存储在处理器120的某一受保护的缓存存储器中的同时由处理器120的硬件保护机制来保护。包括在安全飞地中的代码和数据可以当被存储在共享缓存或主存储器132中时被加密。安全飞地支持124可以体现为允许处理器120在存储器132中建立一个或多个安全飞地的处理器指令扩展的集合。例如,安全飞地支持124可体现为英特尔®软件防护扩展(SGX)技术。
密码引擎编程支持126允许处理器120对密码引擎140进行编程以提供I/O数据的密码保护。密码引擎编程支持126可以体现为处理器120的一个或多个专门的处理器指令(例如,指令EBIND和/或UNWRAP)和相关联的硬件、微代码、固件或其它组件。
存储器132可以体现为能够执行本文描述的功能的任何类型的易失性或非易失性存储器或数据存储。在操作中,存储器132可以存储在计算设备100的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动器。存储器132经由I/O子系统128通信地耦合到处理器120,I/O子系统128可以体现为辅助与处理器120、存储器132和计算设备的其它组件的输入/输出操作的电路和/或组件。例如,I/O子系统128可以体现为或者以其它方式包括存储器控制器集线器、输入/输出控制集线器、平台控制器集线器、集成控制电路、固件设备、通信链路(即,点到点链路、总线链路、电线、线缆、光导、印刷电路板迹线等)和/或用以辅助输入/输出操作的其它组件和子系统。I/O子系统128还可以包括安全路由支持130。安全路由支持130可以与密码引擎140一起使用,以提供I/O数据的密码保护。在一些实施例中,I/O子系统128可以形成片上系统(SoC)的一部分并且与处理器120、存储器132以及计算设备100的其它组件一起并入到单个集成电路芯片上。
数据存储设备134可以体现为被配置用于数据的短期或长期存储的任何类型的一个或多个设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动、固态驱动或其它数据存储设备。在一些实施例中,数据存储设备134可以用于存储一个或多个安全飞地的内容。当由数据存储设备134存储时,安全飞地的内容可以被加密以防止未授权的访问。
计算设备100的通信电路136可以体现为能够实现计算设备100和其它远程设备之间通过网络的通信的任何通信电路、设备或其集合。通信电路136可以被配置为使用任何一个或多个通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、蓝牙®、Wi-Fi®、WiMAX等)来实现这样的通信。
在一些实施例中,计算设备100可以包括安全引擎138,安全引擎138可以体现为能够向计算设备100提供安全相关服务的(一个或多个)任何硬件组件或电路。具体地,安全引擎138可以包括能够独立于处理器120且从处理器120安全地执行固件和/或其它代码的微处理器、微控制器或其它嵌入式控制器。因而,安全引擎138可用于建立与由处理器120执行的代码分离的可信代理或其它可信执行环境。安全引擎138可以通过诸如主机嵌入式控制器接口(HECI)之类的专用总线与处理器120和/或计算设备100的其它组件进行通信。安全引擎138也可以提供对计算设备100的远程配置、控制或管理。在例示性实施例中,安全引擎138体现为并入在计算设备100的片上系统(SoC)中的融合安全引擎(CSE)。在一些实施例中,安全引擎138可以体现为可管理性引擎、融合安全和可管理性引擎(CSME)、带外处理器、可信平台模块(TPM)或其它安全引擎设备或设备的集合。此外,在一些实施例中,安全引擎138还能够独立于计算设备100的状态(例如,独立于主处理器120的状态)使用通信电路136或专用通信电路进行通信,也称作“带外”通信。
密码引擎140可以体现为能够执行本文描述的功能的任何微控制器、微处理器、功能块、逻辑或其它电路或电路的集合。密码引擎140可以对由I/O控制器144在对存储器132的一个或多个直接存储器访问(DMA)操作中读取或写入的I/O数据进行加密和/或解密。密码引擎140包括内部通道标识符(CID)表142,密码引擎140使用该CID表来动态地标识要被保护的(一个或多个)DMA通道。CID表142可以体现为或者以其它方式包括内容可寻址存储器(CAM)。如下面进一步描述的,可以由可信软件例如使用处理器120的密码引擎编程支持126来控制和/或编程CID表142或者由安全引擎138来控制和/或编程CID表142。CID表142的加密密钥和/或其它秘密信息对于不可信软件是不可用的。在一些实施例中,密码引擎140可以与I/O子系统128和/或处理器120一起并入到计算设备100的片上系统(SoC)中。
类似地,I/O控制器144可以体现为能够执行本文描述的功能的任何嵌入式控制器、微控制器、微处理器、功能块、逻辑或其它电路或电路的集合。在一些实施例中,I/O控制器144中的一个或多个可以被嵌入到计算设备100的另一组件(诸如I/O子系统128和/或处理器120)中。附加地或替代地,I/O控制器144中的一个或多个可以经由诸如快速PCI(PCIe)之类的扩充总线或其它I/O连接而连接到I/O子系统128和/或处理器120。如下面进一步描述的,I/O控制器144例如通过外围通信总线(例如,USB、蓝牙等)与一个或多个I/O设备146通信。I/O设备146可以体现为任何I/O设备,诸如人机接口设备、键盘、鼠标、触摸屏、麦克风和其它输入设备,以及显示器和其它输出设备。如上所述,使用称为通道标识符(CID)的标识符来独有地标识集成控制器144和相关联的DMA通道。
现在参考图2,框图200例示了包括分别具有控制器ID 1至4的四个I/O控制器144的计算设备100的示例配置。如图所示,控制器IO1具有一个DMA通道,其具有通道ID“10”。I/O控制器IO3具有三个DMA通道,它们具有通道ID“30”、“31”和“32”等。可信软件利用可信软件使用的DMA通道的CID与对应的秘密密钥一起对密码引擎(CE)140(其在实施例中可以被称为中央密码引擎)进行编程。CE 140截取具有相关CID的DMA事务,并且在DMA数据被传送到存储器132或从存储器132传送时对DMA数据进行密码处理。CE 140将加密数据写入存储器132中或从存储器132读取加密数据。数据在结构中(例如,在I/O子系统128中)以明码发送。然而,I/O子系统128(或处理器控制集线器(PCH)或结构控制器)可提供硬件安全130,其防止重新配置PCI配置空间的流氓软件将数据路由到另一设备。
现在参考图3,框图300示出了计算设备100的USB主机控制器(xHC)302的至少一个实施例。xHC 302建立可例如使用如上文进一步描述的密码引擎140与存储器132安全地传送I/O数据的若干DMA通道304。xHC 302包括连接到PCIe总线和根集线器308的总线接口306。根集线器308建立n个端口310。端口n附接到可信I/O(TIO)设备312,其在下面进一步描述。其余的端口310(端口1到端口n-1)可经由USB连接附接到USB设备314。在一些实施例中,xHC 302可体现为如上所述的I/O控制器144,并且TIO设备312和USB设备314可体现为如上所述的I/O设备146。因而,TIO设备312和/或USB设备314可能够经由DMA通道304使用密码引擎140来保护到存储器132的DMA传送的安全。
如图所示,框图300例示硬接线到USB主机控制器302根集线器308端口(n)的TIO设备312。TIO设备312表现为永久附接的USB设备。TIO设备312可以与任何USB设备同样地进行枚举。
当TIO设备312被配置时,通过其已配置端点的数据传送被加密,使得它们是安全的。USB TIO设备312的加密端点提供了安全飞地与主机控制器302或附接到主机控制器302的USB设备314之间的安全路径。
通过此安全路径,飞地可向主机控制器302发布命令以安全地确定当前附接的USB设备314的集合、它们的特性以及它们的配置。注意,主机控制器302是“可信”的,即,在给定从USB设备314检索信息的命令的情况下,主机控制器302将永不返回错误信息。然而,应当理解的是,USB设备314不是“可信的”,也就是说,附接到控制器302的USB设备314可被损害。
另外,本公开允许通过对数据进行加密来保护通过USB设备314的端点(不同于TIO设备312)发送或接收的数据的安全。虽然USB设备314(不同于TIO设备312)的端点是受安全保护的,但是TIO设备312可以使xHC 302阻止到系统软件的(例如,USB设备连接或断开连接的)拓扑改变通知,并且替代地将改变通知指引到安全飞地。然后,安全飞地可以确定拓扑改变是否将影响安全操作。如果改变不影响安全操作,则飞地可向TIO设备312发信号以允许所述通知被转发到系统软件。如果所述改变确实影响安全操作,则安全飞地可以使得TIO设备312阻止所述通知或将其拖延直到安全操作完成之后。
另外,TIO设备312可以支持设备类特定特征以在安全操作正在发生的同时阻止对所选设备314或设备特征的访问。
在架构上,USB设备支持多达31个端点。始终启用端点0(默认控制端点)。当“配置”设备时,可启用其余端点中的一个或多个。USB设备的默认控制端点用于USB核心规范中定义的各种“标准”USB操作,例如枚举设备并加载其驱动器、检索设备的配置信息以及选择目标配置。根据设备类,默认控制端点也可用于设备类特定操作。
TIO设备312不通过默认控制端点定义任何TIO设备类特定操作。所有安全操作都是通过一对Bulk In(块入)和Bulk Out(块出)端点来执行的,这对端点的数据在其被配置时被加密。
现在参考图4,框图400例示了TIO设备312端点与不可信系统软件402和飞地404之间的通信。如本公开中所描述的以及如图4所示,控制端点操作(通常)是以明码的并且可以由不可信系统软件402访问,并且仅已配置端点用于提供TIO设备312与飞地404(例如,利用英特尔® SGX建立的安全飞地)之间的安全(加密)通信。
如上所述,TIO设备312被集成到主机控制器302中。TIO设备312提供到内部主机控制器302寄存器和数据结构的访问,例如以确定控制器302所支持的设备314的最大数量。
TIO设备312提供了使飞地404确定当前附接到主机控制器302的设备314的能力。
TIO设备312提供了使飞地404向任何附接的设备314的默认控制端点发布请求的能力。此特征允许飞地404安全地确定设备314的设备类、供应商、当前配置以及其它属性。
TIO设备312提供了“锁定”拓扑的能力,所以改变通知被阻止去往OS所使用的标准接口,但是通过TIO设备312的安全接口被转发到其管理飞地404。
TIO设备312提供了使飞地404“解锁”特定拓扑改变的能力,使得拓扑改变可以传播到OS(例如,到系统软件402)。
TIO设备312提供阻止到设备314的特定控制端点请求以防止恶意操作被执行的能力。例如,一些USB设备类允许使用控制端点来访问应当保持安全的数据。
注意,可以针对其它总线架构(例如,蓝牙、Wi-Fi、WiGig、PCIe等)实现本公开中描述的用以实现所附接的USB设备314的安全枚举和管理的TIO设备312特征,以提供对它们的设备的安全枚举和管理。
现在参考图5,方法500例示了用于安全I/O设备管理的方法的实施例。在方法500中,块510包括由集成在计算设备的I/O控制器中的可信I/O设备来初始化可信I/O设备的默认控制端点。
块520包括由可信I/O设备经由默认控制端点接收要配置可信I/O设备的未加密请求。块530包括响应于接收到要配置可信I/O设备的未加密的请求,由可信I/O设备初始化命令输出端点和响应输入端点。块540包括由可信I/O设备经由命令端点从计算设备的安全飞地接收加密命令,其中所述安全飞地是使用计算设备的处理器的安全飞地支持来建立的。
块550包括响应于接收到加密命令,由可信I/O设备执行与I/O控制器相关的设备管理操作。在实施例中,块550也可以包括从I/O控制器检索状态信息以生成加密响应。在实施例中,块550也可以包括向耦合到I/O控制器的I/O设备的默认控制端点发布请求。在实施例中,块550也可以包括阻止到系统软件的拓扑改变通知,该拓扑改变通知指示I/O设备连接或I/O设备断开连接,并且响应于阻止拓扑改变通知而将拓扑改变通知转发至安全飞地。
块560包括响应于执行设备管理操作,由可信I/O设备经由响应端点向安全飞地发送加密响应。
下面提供了本文公开的技术的例示性示例。所述技术的实施例可以包括下面描述的示例中的任何一个或多个以及它们的任何组合。
示例1包括一种用于安全I/O设备管理的计算设备,该计算设备包括具有安全飞地支持的处理器,其中所述处理器要使用安全飞地支持来建立安全飞地;以及包括集成的可信I/O设备的I/O控制器,其中所述可信I/O设备要:(i)初始化可信I/O设备的默认控制端点,(ii)经由默认控制端点来接收要配置可信I/O设备的未加密请求,(iii)响应于所述未加密请求的接收而初始化命令端点和响应端点,(iv)经由命令端点从安全飞地接收加密命令,(v)响应于所述加密命令的接收而执行与所述I/O控制器相关的设备管理操作,以及(vi)响应于设备管理操作的执行,经由响应端点将加密响应发送到安全飞地。
示例2包括示例1的主题,并且其中要执行所述设备管理操作包括要从所述I/O控制器检索状态信息以生成所述加密响应。
示例3包括示例1和2中的任何的主题,并且其中要执行所述设备管理操作包括要向与所述I/O控制器耦合的I/O设备的默认控制端点发布请求。
示例4包括示例1-3中的任何的主题,并且其中要执行所述设备管理操作包括要阻止指示I/O设备连接或I/O设备断开连接的拓扑改变通知,以及响应于所述拓扑改变通知的阻止,将所述拓扑改变通知转发到所述安全飞地。
示例5包括示例1-4中的任何的主题,并且其中所述I/O控制器包括包含根集线器的USB主机控制器,并且所述可信I/O设备包括与所述USB主机控制器的所述根集线器的端口永久耦合的USB设备。
示例6包括一种用于安全I/O设备管理的方法,该方法包括由集成在计算设备的I/O控制器中的可信I/O设备初始化可信I/O设备的默认控制端点;由可信I/O设备经由默认控制端点来接收要配置可信I/O设备的未加密请求;响应于接收到要配置可信I/O设备的未加密请求,由可信I/O设备初始化命令端点和响应端点;由可信I/O设备经由命令端点从计算设备的安全飞地接收加密命令,其中安全飞地是使用计算设备的处理器的安全飞地支持建立的;响应于接收到加密命令,由可信I/O设备执行与I/O控制器相关的设备管理操作;以及响应于执行设备管理操作,由可信I/O设备经由响应端点向安全飞地发送加密响应。
示例7包括示例6的主题,并且其中执行所述设备管理操作包括从所述I/O控制器检索状态信息以生成所述加密响应。
示例8包括示例6和7中的任何的主题,并且其中执行所述设备管理操作包括向与所述I/O控制器耦合的I/O设备的默认控制端点发布请求。
示例9包括示例6-8中的任何的主题,并且其中执行所述设备管理操作包括阻止指示I/O设备连接或I/O设备断开连接的拓扑改变通知,以及响应于所述拓扑改变通知的阻止,将所述拓扑改变通知转发到所述安全飞地。
示例10包括示例6-9中的任何的主题,并且其中所述I/O控制器包括包含根集线器的USB主机控制器,并且所述可信I/O设备包括与所述USB主机控制器的根集线器的端口永久耦合的USB设备。
示例11包括一种计算设备,该计算设备包括处理器和其中存储有多个指令的存储器,所述指令在由处理器执行时使计算设备实行示例6-10中的任何所述的方法。
示例12包括一个或多个机器可读存储介质,该机器可读存储介质包括其上存储的多个指令,所述多个指令响应于被执行而致使计算设备实行示例6-10中的任何所述的方法。
示例13包括一种计算设备,其包括用于执行示例6-10中的任何所述的方法的部件。

Claims (26)

1.一种用于安全I/O设备管理的装置,包括:
具有安全飞地支持的处理器,其中,所述处理器要使用安全飞地支持来建立安全飞地;以及
包括集成的可信I/O设备的I/O控制器,其中,所述可信I/O设备要经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求,响应于所述未加密请求的接收而配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到所述安全飞地,经由所述命令端点从所述安全飞地接收加密命令,响应于所述加密命令的接收而执行与所述I/O控制器相关的设备管理操作;以及响应于所述设备管理操作的执行而经由所述响应端点向所述安全飞地发送加密响应。
2.根据权利要求1所述的装置,其中,执行所述设备管理操作包括从所述I/O控制器检索状态信息以生成所述加密响应。
3.根据权利要求1所述的装置,其中,执行所述设备管理操作包括向与所述I/O控制器耦合的I/O设备的默认控制端点发布请求。
4.根据权利要求1所述的装置,其中,执行所述设备管理操作包括:
阻止指示I/O设备连接或I/O设备断开连接的拓扑改变通知,以及
响应于所述拓扑改变通知的阻止,将所述拓扑改变通知转发到所述安全飞地。
5.根据权利要求1所述的装置,其中:
所述I/O控制器包括包含根集线器的USB主机控制器,并且
所述可信I/O设备包括与所述USB主机控制器的所述根集线器的端口永久耦合的USB设备。
6.根据权利要求1所述的装置,其中,所述I/O控制器包括寄存器,所述可信I/O设备提供对所述寄存器的访问。
7.根据权利要求1所述的装置,其中,所述可信I/O设备要将所述I/O控制器的内部状态提供给所述安全飞地。
8.根据权利要求1所述的装置,其中,所述可信I/O设备提供使拓扑改变通知阻止去往到操作系统的接口。
9.根据权利要求8所述的装置,其中,所述可信I/O设备提供使拓扑改变通知转发到所述安全飞地。
10.根据权利要求9所述的装置,其中,所述可信I/O设备提供使拓扑改变通知从所述安全飞地传播到所述操作系统。
11.根据权利要求1所述的装置,其中,所述可信I/O设备提供阻止到不可信I/O设备的控制端点请求。
12.一种用于安全I/O设备管理的方法,包括:
由集成在计算设备的I/O控制器中的可信I/O设备经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求;
响应于接收到要配置所述可信I/O设备的所述未加密请求,由所述可信I/O设备配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到安全飞地;
由所述可信I/O设备经由所述命令端点从所述计算设备的安全飞地接收加密命令,其中,所述安全飞地是使用所述计算设备的处理器的安全飞地支持来建立的;
响应于接收到所述加密命令,由所述可信I/O设备执行与所述I/O控制器相关的设备管理操作;以及
响应于执行所述设备管理操作,由所述可信I/O设备经由所述响应端点向所述安全飞地发送加密响应。
13.根据权利要求12所述的方法,其中,执行所述设备管理操作包括从所述I/O控制器检索状态信息以生成所述加密响应。
14.根据权利要求12所述的方法,其中,执行所述设备管理操作包括向与所述I/O控制器耦合的I/O设备的默认控制端点发布请求。
15.根据权利要求12所述的方法,其中,执行所述设备管理操作包括:
阻止指示I/O设备连接或I/O设备断开连接的拓扑改变通知,以及
响应于所述拓扑改变通知的阻止,将所述拓扑改变通知转发到所述安全飞地。
16.根据权利要求12所述的方法,其中:
所述I/O控制器包括包含根集线器的USB主机控制器,并且
所述可信I/O设备包括与所述USB主机控制器的根集线器的端口永久耦合的USB设备。
17.一种用于安全I/O设备管理的系统,包括:
存储器;
具有安全飞地支持的处理器,其中,所述处理器要使用安全飞地支持来建立安全飞地;
包括集成的可信I/O设备的第一I/O控制器,其中,所述可信I/O设备要经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求,响应于所述未加密请求的接收而配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到所述安全飞地,经由所述命令端点从所述安全飞地接收加密命令,响应于所述加密命令的接收而执行与所述I/O控制器相关的设备管理操作;以及响应于所述设备管理操作的执行而经由所述响应端点向所述安全飞地发送加密响应;以及
第二I/O控制器,所述第二I/O控制器要与第一不可信I/O设备通信。
18.根据权利要求17所述的系统,还包括密码引擎,所述密码引擎要提供对经由直接存储器访问DMA操作从所述第一不可信I/O设备和向所述第一不可信I/O设备传送的数据的运行中加密和解密。
19.根据权利要求18所述的系统,其中,所述密码引擎包括用于动态地标识与所述第一不可信I/O设备相关联的DMA通道的内部通道标识符CID表。
20.根据权利要求19所述的系统,还包括安全硬件,所述安全硬件要防止所述数据被路由到第二不可信I/O设备。
21.一种有指令存储于其上的机器可读介质,所述指令在被执行时引起计算设备实行根据权利要求12-16中的任一项所述的方法。
22.一种用于安全I/O设备管理的装置,包括:
用于由集成在计算设备的I/O控制器中的可信I/O设备经由所述可信I/O设备的默认控制端点来接收要配置所述可信I/O设备的未加密请求的部件;
用于响应于接收到要配置所述可信I/O设备的所述未加密请求而由所述可信I/O设备配置命令端点和响应端点以阻止到系统软件的拓扑改变通知,并且替代地将所述拓扑改变通知指引到安全飞地的部件;
用于由所述可信I/O设备经由所述命令端点从所述计算设备的安全飞地接收加密命令的部件,其中,所述安全飞地是使用所述计算设备的处理器的安全飞地支持来建立的;
用于响应于接收到所述加密命令而由所述可信I/O设备执行与所述I/O控制器相关的设备管理操作的部件;以及
用于响应于执行所述设备管理操作而由所述可信I/O设备经由所述响应端点向所述安全飞地发送加密响应的部件。
23.根据权利要求22所述的装置,其中,用于执行所述设备管理操作的部件包括用于从所述I/O控制器检索状态信息以生成所述加密响应的部件。
24.根据权利要求22所述的装置,其中,用于执行所述设备管理操作的部件包括用于向与所述I/O控制器耦合的I/O设备的默认控制端点发布请求的部件。
25.根据权利要求22所述的装置,其中,用于执行所述设备管理操作的部件包括:
用于阻止指示I/O设备连接或I/O设备断开连接的拓扑改变通知的部件,以及
用于响应于所述拓扑改变通知的阻止而将所述拓扑改变通知转发到所述安全飞地的部件。
26.根据权利要求22所述的装置,其中:
所述I/O控制器包括包含根集线器的USB主机控制器,并且
所述可信I/O设备包括与所述USB主机控制器的根集线器的端口永久耦合的USB设备。
CN201680038970.8A 2015-07-31 2016-06-20 安全输入/输出设备管理 Active CN107787495B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562199687P 2015-07-31 2015-07-31
US62/199,687 2015-07-31
US15/010,785 US10140457B2 (en) 2015-07-31 2016-01-29 Secure input/output device management
US15/010,785 2016-01-29
PCT/US2016/038378 WO2017023434A1 (en) 2015-07-31 2016-06-20 Secure input/output device management

Publications (2)

Publication Number Publication Date
CN107787495A CN107787495A (zh) 2018-03-09
CN107787495B true CN107787495B (zh) 2022-05-17

Family

ID=57882950

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680038970.8A Active CN107787495B (zh) 2015-07-31 2016-06-20 安全输入/输出设备管理

Country Status (5)

Country Link
US (1) US10140457B2 (zh)
EP (1) EP3329416B1 (zh)
CN (1) CN107787495B (zh)
TW (1) TWI703469B (zh)
WO (1) WO2017023434A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10140457B2 (en) * 2015-07-31 2018-11-27 Intel Corporation Secure input/output device management
US10740494B2 (en) * 2017-09-06 2020-08-11 Google Llc Central and delegate security processors for a computing device
US10664416B2 (en) * 2017-12-29 2020-05-26 Intel Corporation Technologies for trusted I/O support for I/O devices using external peripheral device link controller
US10635605B2 (en) 2018-03-13 2020-04-28 International Business Machines Corporation Shared memory inter-enclave communication
CN112005230B (zh) 2018-04-30 2024-05-03 谷歌有限责任公司 通过统一的安全区接口管理安全区创建
US11509643B2 (en) 2018-04-30 2022-11-22 Google Llc Enclave interactions
CN112005237B (zh) * 2018-04-30 2024-04-30 谷歌有限责任公司 安全区中的处理器与处理加速器之间的安全协作
US20220004635A1 (en) * 2021-09-21 2022-01-06 Intel Corporation Computing peripheral interface management mechanism

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101006433A (zh) * 2004-08-25 2007-07-25 日本电气株式会社 信息通信装置和程序执行环境控制方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938164B1 (en) 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
EP1495394B1 (en) 2002-04-18 2008-07-23 Advanced Micro Devices, Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US6945454B2 (en) * 2003-04-22 2005-09-20 Stmicroelectronics, Inc. Smart card device used as mass storage device
US7469343B2 (en) * 2003-05-02 2008-12-23 Microsoft Corporation Dynamic substitution of USB data for on-the-fly encryption/decryption
US20050015611A1 (en) * 2003-06-30 2005-01-20 Poisner David I. Trusted peripheral mechanism
US7886353B2 (en) * 2005-03-25 2011-02-08 Microsoft Corporation Accessing a USB host controller security extension using a HCD proxy
US7761618B2 (en) * 2005-03-25 2010-07-20 Microsoft Corporation Using a USB host controller security extension for controlling changes in and auditing USB topology
US9904809B2 (en) 2006-02-27 2018-02-27 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for multi-level security initialization and configuration
US7716389B1 (en) * 2006-03-17 2010-05-11 Bitmicro Networks, Inc. Direct memory access controller with encryption and decryption for non-blocking high bandwidth I/O transactions
US8165301B1 (en) 2006-04-04 2012-04-24 Bitmicro Networks, Inc. Input-output device and storage controller handshake protocol using key exchange for data security
US8725123B2 (en) * 2008-06-05 2014-05-13 Headwater Partners I Llc Communications device with secure data path processing agents
US8332557B2 (en) * 2008-12-12 2012-12-11 Qualcomm, Incorporated System, apparatus, and method for broadcasting USB data streams
US8181176B2 (en) * 2010-06-21 2012-05-15 Intel Corporation Uniform storage device access using partial virtual machine executing within a secure enclave session
WO2013040241A1 (en) * 2011-09-13 2013-03-21 Privatecore, Inc. Software cryptoprocessor
US9152825B2 (en) * 2012-02-29 2015-10-06 Apple Inc. Using storage controller bus interfaces to secure data transfer between storage devices and hosts
WO2013147872A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Two dimensional direct memory access scheme for enhanced network protocol processing performance
US9026712B2 (en) * 2012-06-25 2015-05-05 Intel Corporation USB device control using endpoint type detection during enumeration
GB2503436A (en) * 2012-06-26 2014-01-01 Ibm A client server system for processing one or more events
US10887296B2 (en) * 2012-12-31 2021-01-05 Ncr Corporation Secure provisioning manifest for controlling peripherals attached to a computer
US9076003B2 (en) * 2013-08-20 2015-07-07 Janus Technologies, Inc. Method and apparatus for transparently encrypting and decrypting computer interface data
US9448950B2 (en) * 2013-12-24 2016-09-20 Intel Corporation Using authenticated manifests to enable external certification of multi-processor platforms
US9734092B2 (en) * 2014-03-19 2017-08-15 Facebook, Inc. Secure support for I/O in software cryptoprocessor
US9811654B2 (en) * 2014-06-11 2017-11-07 Dell Products L.P. Systems and methods for providing authentication using a managed input/output port
US10248791B2 (en) * 2015-07-20 2019-04-02 Intel Corporation Technologies for secure hardware and software attestation for trusted I/O
US10140457B2 (en) * 2015-07-31 2018-11-27 Intel Corporation Secure input/output device management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101006433A (zh) * 2004-08-25 2007-07-25 日本电气株式会社 信息通信装置和程序执行环境控制方法

Also Published As

Publication number Publication date
WO2017023434A1 (en) 2017-02-09
EP3329416A4 (en) 2019-03-27
CN107787495A (zh) 2018-03-09
US20170032132A1 (en) 2017-02-02
EP3329416A1 (en) 2018-06-06
TWI703469B (zh) 2020-09-01
TW201712589A (zh) 2017-04-01
US10140457B2 (en) 2018-11-27
EP3329416B1 (en) 2021-02-24

Similar Documents

Publication Publication Date Title
CN107787495B (zh) 安全输入/输出设备管理
US20230110230A1 (en) Technologies for secure i/o with memory encryption engines
EP3582129B1 (en) Technologies for secure hardware and software attestation for trusted i/o
US9563457B2 (en) Enabling a secure environment through operating system switching
US9575790B2 (en) Secure communication using a trusted virtual machine
CN107851151B (zh) 保护虚拟机的状态信息
EP3326104B1 (en) Technologies for secure trusted i/o access control
CN107851162B (zh) 用于对安全i/o的密码引擎进行安全编程的技术
EP3326103B1 (en) Technologies for trusted i/o for multiple co-existing trusted execution environments under isa control
US20220092223A1 (en) Technologies for filtering memory access transactions received from one or more i/o devices
US20190228159A1 (en) Technologies for filtering memory access transactions received from one or more accelerators via coherent accelerator link
US10339082B2 (en) Technologies for stable secure channel identifier mapping for static and dynamic devices
US10592663B2 (en) Technologies for USB controller state integrity protection
US10824766B2 (en) Technologies for authenticated USB device policy enforcement
CN112181860B (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