CN112422492A - 通过计算机总线的完整性和数据加密(ide) - Google Patents
通过计算机总线的完整性和数据加密(ide) Download PDFInfo
- Publication number
- CN112422492A CN112422492A CN202010591835.4A CN202010591835A CN112422492A CN 112422492 A CN112422492 A CN 112422492A CN 202010591835 A CN202010591835 A CN 202010591835A CN 112422492 A CN112422492 A CN 112422492A
- Authority
- CN
- China
- Prior art keywords
- tlp
- secure
- flow
- security
- data
- 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.)
- Pending
Links
Images
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/606—Protecting data by securing the transmission between two devices or processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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/602—Providing cryptographic facilities or services
-
- 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
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
一种系统可以包括根端口和端点上游端口。所述根端口可以包括事务层硬件电路,其用于:通过装置的协议栈的事务层处的逻辑电路确定分组将在安全流上横越至链路伙伴;对链路伙伴的接收端口进行认证;将事务层分组(TLP)前缀配置为将该TLP识别为安全TLP;使安全TLP与安全流相关联;对安全TLP应用完整性保护和数据加密;以及将安全TLP跨越安全流发送至链路伙伴。
Description
相关申请的交叉引用
根据35 U.S.C.§119(e),本申请要求2019年8月21日提交的标题为“Integrityand Data Encryption(IDE)Over Computer Buses”(通过计算机总线的完整性和数据加密(IDE))、序列号为62/889,948的美国临时专利申请的权益,通过引用将该每个临时专利申请的全部内容并入本文。
背景技术
计算机系统或平台可以包括很多部件,例如包括中央处理单元(CPU)的主机、存储器、芯片组和/或很多其他通过计算机总线耦合到一起的装置。计算机总线是可以在计算机内部的装置或部件之间或者在计算机之间传输数据的通信系统。计算系统或平台可以广泛地使用各种各样的耦合至计算机总线的装置。计算机总线可以包括相关的硬件部件(导线、光纤等)和软件,包括通信协议。可能存在很多种类的计算机总线,例如串行总线或并行总线。
半导体处理和逻辑单元设计的进步允许提高可以存在于集成电路器件上的逻辑单元的数量。作为推论,计算机系统配置已经从系统中的单个电路或多个集成电路演变到了存在于各个集成电路上的多个核心、多个硬件线程和多个逻辑处理器、以及集成到这样的处理器内的其他接口。处理器或集成电路通常包括单个物理处理器管芯,其中,该处理器管芯可以包括任何数量的核心、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。随着处理能力连同计算系统中的装置的数量的一并增长,插槽和其他装置之间的通信变得更加关键。相应地,互连已经从更加传统的主要操纵电通信的多点分支总线成长为完全成熟的促进快速通信的互连架构。令人遗憾的是,随着对未来的甚至将以更高的速率消耗的处理器的需求的提高,对应的需求被投射到了现有互连架构的能力上。互连架构可以基于各种各样的技术,包括外围部件互连高速(PCIe)、通用串行总线等。
附图说明
通过结合附图考虑下面的具体实施方式能够容易地理解实施例。为了便于说明,采用类似的附图标记表示类似的结构元件。在附图的图示中通过举例方式而非限制方式示出了实施例。
图1示出了包括互连架构的计算系统的实施例。
图2示出了包括分层协议栈的互连架构的实施例。
图3示出了将在互连架构内生成或接收的请求或分组的实施例。
图4示出了用于互连架构的发送器和接收器对的实施例。
图5A和图5B分别是外围部件互连高速(PCIe)系统架构中的逐跳加密和端对端加密的简化块图。
图6A是示出了根据本公开的实施例的说明安全流和安全链路的示例性连接系统的块图。
图6B是示出了根据至少一个实施例的具有用于安全流协议的插槽的系统的块图。
图6C是示出了根据至少一个实施例的实施端对端安全流协议的系统的简化块图。
图7示出了根据各种实施例的安全流状态机。
图8示出了根据各种实施例的安全TLP图解。
图9示出了根据各种实施例的安全TLP前缀。
图10是根据本公开的实施例的用于形成用于跨越安全流传输的安全事务层分组的过程流图解。
图11是示出了根据至少一个实施例的可以用到安全流协议中的示例性计数器和密钥的交互图。
图12示出了根据至少一个实施例的可以由每一事务携带的TLP安全流前缀的可能格式。
图13-图15是示出了根据至少一个实施例的按照使用三个流的限制排序模式操作的安全流协议中的可能事务的交互图。
图16A-16C是示出了根据本公开的实施例的所允许的和所禁止的请求重新排序的示意图。
图17是根据本公开的实施例的用于安全链路的示例性完整性同步消息的示意图。
图18是根据本公开的实施例的用于选择性安全流的完整性同步消息的示意图。
图19是根据本公开的实施例的用于安全链路的完整性检查失败消息的示意图。
图20是根据本公开的实施例的用于选择性安全流的完整性检查失败消息的示意图。
图21是根据本公开的实施例的示例性安全流请求方标识符(RID)关联块的示意图。
图22是根据本公开的实施例的示例性安全流地址关联块的示意图。
图23示出了根据各种实施例的适于用来实践本公开的各个方面的示例性装置。
图24示出了可以适于用来存储指令的示例性计算机可读非暂态存储介质,响应于由设备执行所述指令,所述指令使该设备实践本公开的选定方面。
图25是示出了根据一个或多个实施例的包括处理器的计算系统的另一实施例的块图。
图26是根据一个或多个实施例的根据本公开的至少一个实施例的示例性计算机架构的块图。
具体实施方式
本公开提供了用于实施用于互连安全的完整性和/或数据加密(IDE)(例如,外围部件接口高速(PCIe)加密)的系统、方法、架构和设备的各种可能实施例或示例。为了便于理解,将在用以确保装置或端点与片上系统(SOI)之间的PCIe链路的安全的PCIe协议的扩展的语境下描述本公开。然而,本公开不限于PCIe系统,而是可以借助于其他互连来实践或者可以适用于其他互连。
下文的具体实施方式参考了附图。在不同附图中,可以使用相同附图标记来识别相同或类似的要素。在下文的描述中,出于解释而非限制的目的,阐述了具体的细节,例如特定的结构、架构、接口、技术等,以便提供对各种实施例的各个方面的透彻理解。例如,具体细节可以包括处理器和系统配置的具体类型、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统部件、具体测量结果/高度、具体处理器管线级和操作等。然而,对于从本公开获益的本领域技术人员而言,显然可以在脱离这些具体细节的其他示例中实践各种实施例的各个方面。在某些实例中,省略了对公知装置、电路和方法的描述,从而避免因不必要的细节而使各种实施例的描述难以理解。
将按照对理解例示性实施例最有帮助的方式将各项操作依次描述为多个分立的操作,但是不应将描述的顺序解释为暗示这些操作必然是依赖于顺序的。具体而言,可以不按照介绍的顺序执行这些操作。
短语“A和/或B”是指(A)、(B)或者(A和B)。短语“A/B”和“A或B”是指(A)、(B)或者(A和B),其与短语“A和/或B”类似。出于本公开的目的,短语“A和B的至少其中之一”是指至少一个(A)、至少一个(B)或者(至少一个A和至少一个B)。描述可能使用短语“在实施例中”、“在至少一个实施例中”、“在一个或多个实施例中”、“在一些实施例中”和/或“在各种实施例中”,它们均可以指相同或不同实施例中的一者或多者。此外,相对于本公开的实施例使用的术语“包括”、“包含”、“具有”等是同义的。
示例性实施例可以被描述为过程,该过程被描绘为流程图、流图、数据流图、结构图或块图。尽管流程图可以将各操作描述为顺序过程,但是很多操作可以是并行、一同或者同时执行的。此外,操作的顺序可以被重新排列。过程可以在其操作完成时终止,但是过程还可以具有附图中未包含的额外步骤。过程可以对应于方法、函数、过程、子例程和子程序等。在过程对应于函数时,其终止可以对应于该函数向调用函数和/或主函数返回结果。
实施例可以是在由前述电路中的一者或多者执行的计算机可执行指令(例如程序代码、软件模块和/或功能过程)的一般语境下描述的。程序代码、软件模块和/或功能过程可以包括执行特定任务或者实施特定数据类型的例程、程序、对象、部件、数据结构等。本文讨论的程序代码、软件模块和/或功能过程可以是使用现有通信网络中的现有硬件实施的。例如,本文讨论的程序代码、软件模块和/或功能过程可以是使用现有网络元件或控制节点处的现有硬件实施的。
如本文所用,术语“电路”是指或者包括硬件部件,或者是硬件部件的部分,例如,硬件部件是电子电路、逻辑电路、处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、专用集成电路(ASIC)、现场可编程装置(FPD)(例如,现场可编程门阵列(FPGA)、可编程逻辑装置(PLD)、复杂PLD(CPLD)、大容量PLD(HCPLD)、结构化ASIC或者可编程片上系统(SoC))、数字信号处理器(DSP)等,它们被配置为提供所描述的功能。在一些实施例中,电路可以执行一个或多个软件或固件程序,以提供所描述的功能中的至少一些。
如本文所用,术语“处理器电路”可以指或者包括能够进行以下操作的电路或者可以是该电路的部分:顺次并且自动地实施算术或逻辑操作的序列;记录、存储和/或传输数字数据。术语“处理器电路”可以指一个或多个应用处理器、一个或多个基带处理器、物理中央处理单元(CPU)、单核处理器、双核处理器、三核处理器、四核处理器和/或任何其他能够执行或者以其他方式操作诸如程序代码、软件模块和/或功能过程的计算机可执行指令的装置。如本文所用,术语“接口电路”可以指或包括提供两个或更多个部件或装置之间的信息交换的电路,或者是该电路的部分。术语“接口电路”可以指一个或多个硬件接口(例如,总线、输入/输出(I/O)接口、外围部件接口和/或网络接口卡等)。如本文所用,术语“对……实例化”、“实例化”等可以指实例的创建,并且“实例”可以指对象的具体发生,例如,其可以发生在程序代码的执行期间。
如本文所用,术语“计算机装置”可以描述任何能够顺次并且自动地实施算术或逻辑操作的序列、被配备为将数据记录/存储到机器可读介质上以及与通信网络中的一个或多个其他装置之间进行数据的发送和接收的物理硬件装置。计算机装置可以被视为与计算机、计算平台、计算装置等同义,并且下文中可能偶尔将其称为计算机、计算平台、计算装置等。术语“计算机系统”可以包括任何类型的互连的电子装置、计算机装置或其部件。此外,术语“计算机系统”和/或“系统”可以指相互通信耦合的计算机的各种部件。此外,术语“计算机系统”和/或“系统”可以指相互通信耦合并且被配置为共享计算和/或联网资源的多个计算机装置和/或多个计算系统。如本文所用,术语“用户设备”或“UE”可以指具有无线电通信能力的装置,例如计算机装置,并且可以描述通信网络中的网络资源的远程用户。术语“用户设备”或“UE”可以被视为与下述术语同义并且在下文中偶尔被称为下述术语:客户端、移动设备、移动装置、移动终端、用户终端、移动单元、移动站、移动用户、订户、用户、远程站、接入代理、用户代理、接收器、无线电设备、可配置无线电设备、可配置移动装置等。
“计算机装置”、“计算机系统”、“UE”等的示例可以包括蜂窝电话或智能电话、功能手机、平板个人计算机、可穿戴计算装置、自动传感器、膝上型计算机、台式个人计算机、视频游戏控制台、数字媒体播放器、手提式消息传送装置、个人数字助理、电子书阅读器、增强现实装置、服务器计算机装置(例如,独立、机架安装、刀片等)、云计算服务/系统、网络元件、车载信息娱乐系统(IVI)、车载娱乐(ICE)装置、仪器群集(IC)、平视显示器(HUD)装置、板载诊断(OBD)装置、dashtop移动设备(DME)、移动数据终端(MDT)、电子引擎管理系统(EEMS)、电子/引擎控制单元(ECU)、电子/引擎控制模块、嵌入式系统、微控制器、控制模块、引擎管理系统(EMS)、联网或“智能”电器、机器类型通信(MTC)装置、机器对机器(M2M)、物联网(IoT)装置和/或任何其他类似电子装置。此外,术语“车辆嵌入式计算机装置”可以指任何物理安装在车辆上、构建到车辆内或者以其他方式嵌入到车辆中的计算机装置和/或计算机系统。
计算系统或平台可以广泛地使用各种各样的耦合至计算机总线的装置。计算机总线可以包括相关的硬件部件(例如,导线、光纤等)和软件,包括通信协议。外围部件互连(PCI)总线或PCI高速(PCIe、PCI-E)可以是基于规约的计算机总线,该规约将为系统软件或系统驱动器提供一种机制来执行与耦合至PCI总线或PCIe总线的装置的配置有关的各种操作。耦合至计算机总线的装置或部件又可以被称为功能。PCIe可以在消费者应用、服务器应用和工业应用中操作,以作为母板级互连(从而链接母板安装的外设)、无源背板互连以及作为插入板的扩展卡接口。PCIe装置通过被称为互连或链路的逻辑连接进行通信。链路是两个PCIe端口之间的点对点通信信道,其允许这两个端口都传送和接收普通PCI请求(例如,配置、输入/输出(I/O)或者存储器读取/写入)和中断。在物理级上,链路可以由一条或多条通道构成。低速外围设备(例如802.11Wi-Fi卡)使用单通道(×1)链路,而图形适配器则通常使用宽得多并且快得多的16通道链路。
尽管可能参考诸如计算平台或微处理器的集成电路中的安全流协议来描述下文的实施例,但是其他实施例适用于其他类型的集成电路和逻辑器件。本文描述的类似技术和教导可以适用于其他类型的同样可以得益于安全流协议的电路或半导体器件。例如,所公开的实施例不限于台式计算机系统或UltrabooksTM。而且,还可以应用到其他装置中,例如手提式装置、平板电脑、其他薄笔记本电脑、片上系统(SOC)装置和嵌入式应用。手提式装置的一些示例包括蜂窝电话、互联网协议装置、数字相机、个人数字助理(PDA)和手提式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或者任何其他能够执行下文教导的功能和操作的系统。此外,本文描述的设备、方法和系统不限于物理计算装置,而是可以与用于实现节能和效率的软件优化有关。在下文的描述中将变得显而易见的是,本文描述的方法、设备和系统的实施例(不管是参考硬件、固件、软件还是其组合)对于与性能考虑事项进行权衡的“绿色技术”未来是至关重要的。
随着计算系统的进步,其中的部件将变得更加复杂。因此,用于部件之间的耦合和通信的互连架构的复杂性也不断提高,以确保满足最佳部件操作所需的带宽要求。此外,不同的市场细分对互连架构的不同方面存在要求,以适应市场的需求。例如,服务器需要更高的性能,而移动生态系有时则能够牺牲总体性能来换取功率节约。然而,大部分织构的唯一目的是以最大的功率节约提供最高的可能性能。下文将讨论很多互连,它们将有可能从本文讨论的实施例的各个方面获益。
一种互连织构架构包括外围部件互连(PCIe)高速(PCIe)架构。PCIe的主要目的在于使来自不同销售商的部件和装置能够在跨越多个细分市场的开放架构、客户端(台式和移动)、服务器(标准、机架规模和企业)以及嵌入式通信装置中互操作。PCI高速是为很宽范围的各种各样的未来计算和通信平台定义的高性能通用I/O互连。一些PCI属性(例如其使用模型、负载-存储架构和软件接口)贯穿其各个版本被保持,而先前的并行总线实施方式则已经被高度可缩放的完全串行的接口所替代。PCI高速的更为新近的版本利用了点对点互连、基于交换机的技术和分组协议的优势来提供新的级别的性能和特征。功率管理、服务质量(QoS)、热插拔/热加载支持、数据完整性和错误处理是PCI高速所支持的高级特征中的一些。
参考图1,其示出了互连一组部件的点对点链路所构成的织构的实施例。系统100包括耦合至控制器集线器115的处理器105和系统存储器110。处理器105包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器105通过前端总线(FSB)106耦合至控制器集线器115。在一个实施例中,如下文所述,FSB 106是串行点对点互连。在另一实施例中,链路106包括符合不同互连标准的串行差分互连架构。
系统存储器110包括任何存储装置,例如随机存取存储器(RAM)、非易失性(NV)存储器或者可被系统100中的装置访问的其他存储器。系统存储器110通过存储器接口116耦合至控制器集线器115。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双信道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器115是外围部件互连高速(PCIe或PCIE)互连层次结构中的根集线器、根复合体或者根控制器。控制器集线器115的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根控制器/集线器。术语芯片组往往是指两个物理上分开的控制器集线器,即,耦合至互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意,当前系统往往包括与处理器105集成的MCH,同时控制器集线器115将按照与下文描述的类似的方式与I/O装置通信。在一些实施例中,任选通过根复合体115支持对等路由。
这里,控制器集线器115通过串行链路119耦合至交换机/桥120。输入/输出模块117和121(其又可以被称为接口/端口117和121)包括/实施分层协议栈,以提供控制器集线器115和交换机120之间的通信。在一个实施例中,多个装置能够耦合至交换机120。
交换机/桥120将分组/消息从装置125朝上游(即,朝根复合体向层次结构上端)路由至控制器集线器115,以及从处理器105或系统存储器110朝下游(即,离开根控制器朝层次结构下端)路由至装置125。在一个实施例中,交换机120被称为多个虚拟的PCI对PCI桥装置的逻辑组件。装置125包括将耦合至电子系统的任何内部或外部装置或部件,例如,I/O装置、网络接口控制器(NIC)、插入卡、音频处理器、网络处理器、硬盘驱动器、存储装置、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储装置、Firewire装置、通用串行总线(USB)装置、扫描仪和其他输入/输出装置。在PCIe专业词汇中,装置往往被称为端点。尽管未具体示出,但是装置125可以包括PCIe对PCI/PCI-X桥,以支持旧式或者其他版本的PCI装置。PCIe中的端点装置往往被分类为旧式、PCIe或根复合体集成端点。
图形加速器130也通过串行链路132耦合至控制器集线器115。在一个实施例中,图形加速器130耦合至MCH,MCH耦合至ICH。之后,交换机120耦合至ICH,并且相应地I/O装置125也耦合至ICH。I/O模块131和118也将实施分层协议栈,从而在图形加速器130和控制器集线器115之间通信。与上文的MCH讨论类似,图形控制器或图形加速器130自身可以被集成到处理器105中。
来看图2,其示出了分层协议栈的实施例,其可以被实施到移动计算装置的一个或多个部件中,例如,实施到应用处理器、基带处理器或调制解调器、以及其他示例中。分层协议栈200包括被实施到硬件电路和/或软件中以实施任何形式的分层通信栈的逻辑单元,例如,所述分层通信栈是快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或者其他分层栈。尽管下文马上要参考图2-4所做的讨论涉及PCIe栈,但是类似的原理可以应用于其他互联栈,例如OpenCAPITM、Gen-ZTM、UPI、通用串行总线(USB)、针对加速器的高速缓存一致性互连(CCIXTM)、先进微装置TM(AMDTM)、InfinityTM、通用通信接口(CCI)或者高通TM的CentriqTM互连、以及其他。在一个实施例中,协议栈200是CPIe协议栈,其包括事务层205、链路层210(文中又称为“数据链路层”)和物理层220。图1中的诸如接口117、118、121、122、126和131的接口可以被表示为通信协议栈200。作为通信协议栈的表示又可以被称为实施/包括协议栈的模块或接口。
PCI高速使用分组在部件之间传达信息。分组是在事务层205和数据链路层210中形成的,从而将信息从发送部件运送至接收部件。随着所发送的分组流过其他层,将采用额外的信息对这些分组进行扩展,这些信息是在这些层对分组进行操纵所需的信息。在接收侧发生逆过程,并且分组被从它们的物理层220表示变换成数据链路层210表示,并且最终被变换至能够由接收装置的事务层205处理的形式。
事务层
在一个实施例中,事务层205将提供装置的处理核心与互连架构(例如数据链路层210和物理层220)之间的接口。就此而言,事务层205主要负责分组(即,事务层分组或TLP)的组装和分解。事务层205通常管理针对TLP的基于信用的流动控制。PCIe实施拆分的事务,即,具有按时间分开的请求和响应的事务,从而在目标装置收集用于响应的数据的同时允许链路运送其他流量。
此外,PCIe利用基于信用的流动控制。在这种方案中,装置向事务层205中的接收缓冲器中的每者公告初始信用额。处于链路的相对端的外部装置(例如,图1中的控制器集线器115)对每一TLP消费的信用的数量进行计数。如果事务未超过信用限度,那么可以发送该事务。在接收到响应之时,恢复信用额。信用方案的优点在于,假设未遭遇信用限度,那么信用返还的延迟不影响性能。
在一个实施例中,四个事务地址空间包括存储器地址空间、配置地址空间、消息地址空间和输入/输出地址空间。存储器空间事务包括用以向/从存储器映射位置传输数据的读取请求和写入请求中的一者或多者。在一个实施例中,存储器空间事务能够使用两种不同的地址格式,例如,短地址格式(例如,32位地址)和长地址格式(例如,64位地址)。使用配置空间事务访问PCIe装置的配置空间。针对配置空间的事务包括读取请求和写入请求。消息空间事务(或者简称为消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层205组装分组报头/有效载荷206。可以在PCIe规约网站内的PCIe规约中找到当前分组报头/有效载荷的格式。
快速参考图3,其示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符300是一种用于运送事务信息的机制。就此而言,事务描述符300支持系统内的事务的识别。其他可能的用途包括跟踪对默认事务排序和事务与信道的关联的修改。
事务描述符300包括全局标识符字段302、属性字段304和信道标识符字段306。在所例示的示例中,全局标识符字段302被描绘为包括本地事务标识符字段308和源标识符字段310。在一个实施例中,全局标识符字段302是所有未决请求所特有的。
根据一种实施方式,本地事务标识符字段308是由请求代理生成的字段,并且其为对于该请求代理而言需要完成的所有未决请求所特有的。此外,在这一示例中,源标识符310唯一地识别PCIe层次结构内的请求方代理。相应地,本地事务标识符308与源ID 310一起提供对层次结构域内事务的全局识别。
属性字段304指定事务的特性和关系。就此而言,属性字段304有可能用于提供允许对事务的默认操纵进行修改的额外信息。在一个实施例中,属性字段304包括优先权字段312、保留字段314、排序字段316和无嗅探字段318。这里,可以由发起者对优先权子字段312做出修改,从而向事务分配优先权。保留属性字段314被保留下来以供将来之用或者留给销售商定义的用途。使用优先权或安全属性的可能使用模型可以是使用保留属性字段实施的。
在这一示例中,排序属性字段316用于提供传达可以修改默认排序规则的排序类型的任选的信息。根据一种示例性实施方式,排序属性“0”表示将应用默认排序规则,其中,排序属性“1”表示宽松排序,其中,写入可以沿同一方向传递写入,并且读取完成可以沿同一方向传递写入。嗅探属性字段318用于确定事务是否受到嗅探。如图所示,信道ID字段306识别与事务相关联的信道。
链路层
参考图2,链路层210(又称为数据链路层210)起着事务层205和物理层220之间的中间级的作用。在一个实施例中,数据链路层210负责提供一种可靠的机制,从而在链路的两个部件之间交换事务层分组(TLP)。数据链路层210的一侧接受由事务层205组装的TLP,应用分组序列标识符211(即标识编号或分组编号),计算并且应用错误检测代码(即,CRC212),并且将修改后的TLP提交给物理层220,以供跨越物理层发送至外部装置。
物理层
在一个实施例中,物理层220包括逻辑子块221和电气子块222,从而将分组物理发送至外部装置。这里,逻辑子块221负责物理层220的“数字”功能。就此而言,逻辑子块包括发送部分和接收部分,前者准备用于由电气子块222传输的外传信息,后者识别并且准备所接收的信息,再将其传递给链路层210。
物理层220包括发送器和接收器。逻辑子块221向发送器供应符号,发送器将使所述符号串行化,并将其发送至外部装置。串行化的符号被从外部装置供应给接收器,并且接收器将所接收到的信号变换成位流。位流被去串行化并且被供应至逻辑子块221。在一个实施例中,在发送/接收十位符号时,采用8b/10b传输代码。在其他实施例中,除其他示例之外,使用128b/130b传输编码。这里,使用特殊符号来构造出具有帧223的分组。此外,在一个示例中,接收器还提供从传入串行流恢复的符号时钟。
如上文所阐述的,尽管事务层205、链路层210和物理层220是参考PCIe协议栈的具体实施例讨论的,但是分层协议栈不限于此。实际上,可以包括/实施任何分层协议。作为示例,被表示为分层协议的端口/接口包括:(1)用以组装分组的第一层(即,事务层);用以使分组序列化的第二层(即,链路层);以及用以发送分组的第三层(即,物理层)。作为具体示例,利用通用标准接口(CSI)分层协议。
接下来参考图4,其示出了PCIe串行点对点织构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为其包括任何用于发送串行数据的传输路径。在所示的实施例中,基本PCIe链路包括两个低电压差分驱动信号对:发送对406/411和接收对412/407。相应地,装置405包括用以向装置410发送数据的发送逻辑单元406以及用以从装置410接收数据的接收逻辑单元407。换言之,在PCIe链路中包括两条发送路径(即,路径416和417)以及两条接收路径(即,路径418和419)。
发送路径是指任何用于发送数据的路径,例如传输线路、铜线路、光学线路、无线通信信道、红外通信链路或者其他通信路径。两个装置(例如装置405和装置410)之间的连接被称为链路,例如链路415。一条链路可以支持一条通道——每一通道表示一组差分信号对(一对用于发送,一对用于接收)。为了对带宽进行缩放,链路可以聚集由xN表示的多条通道,其中,N是任何所支持的链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对是指用以发送差分信号的两条发送路径,例如线路416和417。作为示例,在线路416从低电压电平切换至高电压电平(即,上升沿)时,线路417从高逻辑电平驱动至低逻辑电平(即,下降沿)。差分信号有可能表现出更好的电特性,例如,更好的信号完整性(即,交叉耦合)、电压过冲/下冲、振铃等。其将允许更好的定时窗口,从而实现更快的传输频率。
完整性和数据加密(IDE)为TLP提供保密性、完整性和重放保护。IDE在提供宽广的互操作能力的同时灵活地支持各种各样的使用模型。密码机制则与当前行业最佳惯例一致。例如,可以将AES-CTR 256b和GMAC 96b分别用于加密和完整性;但是随着安全需求的演变可以对密码机制的实施方式进行扩展。
安全模型考虑对链路的物理攻击所来带的威胁,物理攻击包括这样的情况:敌对方可能使用实验室设备、特制的插件或者恶意扩展装置查看意在保密的数据,修改TLP内容,对TLP重新排序和/或将其删除。可以在TLP流量渡过交换机时对其加以保护,从而对安全模型进行扩展,以解决由对交换机路由机制进行重新编程或者通过恶意交换机带来的威胁。
IDE可以用于确保由多个部件构成的受信任执行环境内的流量的安全——这样的构成的框架处于IDE的范围之外。
被设计为唯独基于这一规约以可互操作的方式操作的部件将支持使用部件测量的认证和密钥交换以及经由数据对象交换(DOE)的认证(CMA),但是在不需要互操作能力时,IDE明确容许使用部件或平台特定的机制。通过使用经由DOE的CMA,系统固件/软件能够在没有装置特定的知识的情况下建立部件之间的安全连接。
IDE在两个端口之间建立安全流。下文将更详细地描述安全流。当在端口之间没有交换机时,有可能确保链路上的所有(或选定)TLP流量的安全。对于在端口之间有交换机和没有交换机的情况而言,有可能确保选定的TLP流量的安全。
IDE建立对应于三个流动控制类别的三个TLP子流——已发布请求、未发布请求和完成(在每一流量流动方向上)。在这些子流中的每者内,交换机重新排序受到约束,使得TLP在两个端口之间保持有序。
安全流
为了说明根据本文公开的实施例的用于对串行互连使用安全流协议的某些示例性技术,重要的是要理解在系统中可能发生的活动,在这样的系统中,在受信任域环境中使用链路加密。相应地,可以将下文的基本信息视为可以适当地解释本公开的基础。
一些新的CPU能力包括信任域,其在受信任计算基础(TCB)中提供了无需管理程序的虚拟计算环境。对于受信任计算基础所管理的虚拟机而言,将从受信任计算基础去除管理程序(或者虚拟机管理器(VMM))。处于这一受信任域中的虚拟机能够保护其存储器内容和运行时中央处理单元(CPU)状态的保密性免受包括主机VMM在内的其他软件的影响,除非该软件明确地被受信任域虚拟机本身所共享。例如,还可以通过使用加密的存储器控制器保护存储器免受VMM和其他信任域影响。一般而言,信任域不允许经由串行互连接口连接的装置访问信任域保护的存储器。然而,这些连接装置通常需要访问受保护的数据来执行其预期功能。
针对受信任计算基础所管理的虚拟机从受信任计算基础去除了管理程序的虚拟计算环境的示例性用例包括云服务提供方,其托管很多承租方虚拟机(VM)的工作负荷。云服务提供方(CSP)和云承租方可能都希望VM工作负荷具有保密性。承租方VM可能不信任VMM或者云数据中心中的任何软件。因而,运行信任域VM(对其而言已经从信任边界去除了管理程序)确保了该VM不能受到VMM或者恶意用户对数据中心的操作或其他形式的访问的攻击。为了实现这一保密VM运行,必须使存储器和运行时CPU状态保持保密并且受到完整性保护,以防止数据泄漏或篡改攻击。新的CPU安全能力可以通过使用存储器控制器满足这些安全目的,其中,所述存储器控制器利用了存储器加密和完整性保护,例如,多密钥全内存加密(MK-TME)。
信任域(TD)是一种类型的虚拟机客户,其通过在中央处理单元(CPU)模式中运行而防止攻击。在CPU模式中运行将保护其存储器内容和运行时CPU状态的保密性免受包括主机VMM在内的任何其他软件的影响,除非该软件明确地被信任域本身所共享。存储器和运行时CPU状态受到隔离,使得存储器是不透明的并且一般是不可修改的。如果说确实发生了任何修改的话,那么能够检测到这些修改。
然而,连接至云中的服务器平台的装置不受信任,因而不能访问信任域的存储器。对于经由串行互连接口(例如,外围部件接口高速(PCIe))连接至服务器平台的装置而言,使该装置能够被直接分配给TD存储器要求数据通过PCIe链路在TD与该装置之间流动,从而确保安全,以增强数据的保密性、完整性和重放保护。具体而言,为了允许装置直接进行存储器访问,TD需要:1)在该装置中建立信任以使该装置被识别为受信任实体的能力,2)确保服务器与该装置之间的连接的安全以使在链路上流动的数据安全的能力,以及3)增强用于事务的生产者-消费者排序的规则的能力。
如图5A和图5B所示,可以使用逐跳协议(图5A)或者端对端协议(图5B)执行PCIe中的事务的加密。图5A和图5B示出了互连架构中的逐跳加密和端对端加密之间的区分,该互连架构包括经由链路522和524连接至PCIe交换机520的示例性装置530和532以及经由链路512连接至片上系统(SoC)510的PCIe交换机520。在图5A中,逐跳协议包括用于每一链路的不同密钥对,以实现每一个发送端口处的加密和每一个接收端口处的解密。密钥501A和501B被用作链路512的密钥对,密钥503A和503B被用作链路522的密钥对,并且密钥505A和505B被用作链路524的密钥对。因此,流经具有一个或多个中间装置(例如,PCIe交换机520)的逐跳网络的数据在其抵达目的地之前几次受到加密和解密。
在图5B所示的端对端协议中,为每一端对端链路507和509供应不同密钥对。仅在发起装置和目标装置处提供密钥。例如,密钥506A和506B被用作用于端对端链路507的密钥对,并且密钥508A和508B被用作用于端对端链路509的密钥对。发起装置对要发送至目标装置的数据加密,目标装置对接收自发起装置的数据解密,并且中间装置简单地对加密事务进行路由。例如,在SoC 510向装置530传送数据时,SoC 510是发起装置,并且装置530是目标装置。相反,在装置530向SoC 510传送数据时,装置530是发起装置,并且SoC 510是目标装置。
图6A是示出了根据本公开的实施例的说明安全流和安全链路的示例性连接系统的块图。
图6B是示出了根据至少一个实施例的具有用于安全流协议的插槽的系统600b的块图。互连架构包括发起装置640a和目标装置640b。如本文中前面所述,分层协议栈包括被实施到硬件电路和/或软件中以实施任何形式的分层通信栈的逻辑单元,例如,所述分层通信栈是快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或者其他分层栈。为了便于讨论,图6B和本文的后续附图可以主要是联系PCIe栈描述的,尽管类似的原理可以被应用于其他互连栈。在至少一个实施例中,发起装置640a和目标装置640b均包括PCIe栈,例如,参考图2描述的PCIe协议栈200。发起装置640a中的PCIe栈包括事务层660a、链路层670a和物理层680a。目标装置640b中的PCIe栈包括事务层660b、670b和物理层680b。
在至少一个实施例中,发起装置640a和目标装置640b可以根据安全流协议确保事务层分组的安全。事务层分组在本文中又被称为“分组”和“TLP”。如图6C中所示,发生安全流处理的插槽包括处于发起装置640a的事务层660a和链路层670a之间的安全流TLP插入点(STX)以及处于目标装置640b的事务层660b和链路层670b之间的安全流TLP检测点(SRX)。
在各种实施例中,在安全流协议(本文中又称为“SEC-STREAM”)中,每一事务类型(即,已发布、未发布和完成)可以被作为单独的受保护流或者被作为安全子流加以处理。如本文所用,“受保护流”或“安全流”意在表示特定事务类型(或者特定事务类型的组合)的一个或多个事务,它们基于该特定事务类型(或者事务类型的组合)受到保密性、完整性和重放保护。事务的数据有效载荷受到保密性、完整性和重放保护。事务的元数据(例如,TLP安全流前缀、TLP报头)受到完整性和重放保护。在各种实施例中,可以使用具有96位计数器和96位消息认证码(MAC)的高级加密标准-伽罗瓦/计数器模式(AES-GCM)构造来以密码方式确保流量的安全。然而,应当指出这一方案能够很好地与类似类型的安全方案均等地工作,而不限于这些具体细节。例如,作为替代,可以使用其他提供重放保护和完整性保护的密码构造。还可以使用AES-CTR加密以及GMAC(和聚合GMAC)。在其他实施例中,可以使用更大的AES-GCM构造和/或更大的MAC。
就操作而言,在至少一个实施例中,在发起装置640a的事务层660a中形成分组。分组可以包括但未必限于具有路由信息的报头以及将传达给目标装置的有效载荷数据。在IDE TLP 662和加密引擎664处,在将分组传递至链路层670a之前,对分组中的数据加密,可以生成TLP安全流前缀,将前缀插入到分组中,生成关于分组(例如,前缀、报头、数据)的完整性代码值(ICV),例如MAC,并且将ICV添加到分组。在一些实施例中,IDE信息可以被包含到TLP报头中。分组被传递到物理层680a上。跨越链路690发送分组。在目标装置640b中的链路层670b对所接收的事务进行处理之后,在IDE TLP解码器668和解密引擎666处,对分组中的数据解密,验证ICV,并将TLP安全流前缀从分组剥离,而后再由事务层660b做进一步处理。用于在IDE TLP编码器逻辑单元662和IDE TLP解码器逻辑单元668处执行安全流处理的硬件和/或软件可以集成到它们各自的事务层660a和660b中,或者可以被单独实施成事务层640a、640b与链路层670a、670b之间的子层。
本公开定义了针对安全流协议的两种操作模式,以解决与可能发生的宽松排序和读取重放有关的问题。这些模式包括限制排序模式(ROM)和显式计数器模式(ECM)。
图6C是包括经由PCIe交换机612连接至端点622的根复合体602的PCIe互连架构600c的简化块图。根复合体602包括根端口604,在根端口604处对端对端(选择性的)安全流中的TLP分组执行加密或解密606(取决于该根复合体是发送器还是接收器)。端点622包括上游端口624,在上游端口624处对端对端(选择性的)安全流中的TLP分组执行加密或解密626(取决于该端点是发送器还是接收器)。PCIe交换机612包括经由链路603连接至根端口602的上游端口614以及经由链路603连接至端点622的上游端口624的下游端口616。在安全流中,在PCIe交换机612处不对事务进行加密或解密。相反,PCIe交换机612使用TLP分组中的报头数据对事务进行路由。在根端口604是发起装置时,根端口604可以执行对分组的数据有效载荷的加密,并且在根端口604是目标装置时,根端口604可以执行对分组的数据有效载荷的解密。类似地,在端点622是发起装置时,端点622可以执行对分组的数据有效载荷的加密,并且在端点622是目标装置时,端点622可以执行对分组的数据有效载荷的解密。
在实施例中,IDE TLP编码器逻辑单元可以驻留在事务层660a处,从而以用于IDE的TLP前缀对事务层分组编码,并且提供完整性保护。类似的,加密引擎可以驻留在事务层660中,以便对TLP数据加密。加密引擎和IDE TLP编码器逻辑单元可以包括硬件电路,在一些实施例中,可以驻留在同一逻辑单元上。
图7示出了根据各种实施例的安全流状态机。在使用安全流之前,如果将使用非默认值,那么可以配置操作参数,并且密钥交换可以完成,在该点上,端口处于Ready_Insecure状态。这一配置中的一些或全部被容许在部件的内部完成。
在使用新建立的安全流发送或接收安全TLP时,端口可以从Ready_Insecure变换至安全。在处于Ready_Insecure时,如果任何完整性(MAC)检查失败,那么安全或(如果支持的话)Key_Refresh变换至Fail_Insecure。在这一节的稍后部分中将给出针对错误处理的详细要求。
可以对与流相关联的安全流关联寄存器进行编程。在安全流处于使用中时,容许对安全流关联寄存器进行修改。对安全流关联寄存器值的修改可以不影响使用无关流的进程中的TLP发送/接收。如果TLP发送/接收处于使用其中安全流关联寄存器正在被修改的流的进程中,那么硬件行为是未定义的——强烈建议软件确保不作出这样的修改。
设置IDE控制寄存器中的IDE On位,如果尚未设置的话。根据安全流关联寄存器选择的后续TLP流量可以受到安全的处理。密钥刷新(如果需要的话)可以由系统固件/软件管理,并且其具体细节处于本说明书的范围以外。
对于既定TLP而言,如果建立了安全链路(ID为0的安全流),并且还建立了一个或多个选择性安全流,那么TLP与选择性安全流的关联优先,并且可以使不与任何安全流相关联的所有TLP与安全链路相关联。对于所建立的安全流而言,表格1定义了容许哪些TLP类型以及它们如何与安全流相关联。
在实施例中,选择性安全流可以包括容许发送器选择性地将IDE施加到数据块上的安全流。选择性安全流的示例可以包括横越交换机复合体的流。链路流的示例可以包括不需要横越交换机复合体的链路。对TLP是否将横越选择性安全流或链路流的确定可以是基于目的地信息做出的,例如,该信息是用于存储器写入的地址信息或者用于完成的目的地ID。
表格1——安全流的TLP类型
图8示出了根据各种实施例的安全TLP图解800。完整性和数据加密被启用并按每一流配置,并且适用于与该流相关联的TLP。这样的TLP被称为安全TLP。加密在启用时仅适用于数据有效载荷810(如果存在的话)和ECRC(如果存在的话)。TLP完整性在启用时覆盖与流相关联的所有TLP内容,并且消息认证码(又名MAC或完整性检查)818根据所选择的操作模式以每TLP的方式适用于所有TLP,或者使得选定TLP包括累积MAC,其覆盖从在先TLP开始传输的所有TLP内容,以包括MAC。所有安全TLP都必须使用安全TLP前缀816。如图所示,事务层逻辑单元将安全TLP前缀816附加到任何其他前缀814或分组报头812的前面。
本公开为TLP定义了新的TLP安全流,以指示TLP是否是受信任IO会话的部分,并且传达其他安全流信息。图9示出了根据各种实施例的安全TLP前缀900。如果请求是由受信任实体发出的并且将被另一受信任实体消费,那么TLP可以是受信任IO会话的部分。一般地,受信任实体是信任域的部分。发起装置和目标装置均可以设有受信任实体以及不受信任实体。安全流信息的存在(例如,处于TLP的前缀中或者以其他方式存储在TLP中)表明TLP在提供保密性(例如,加密数据)、完整性保护(例如,加密数据的完整性代码值、安全流信息和TLP报头)和重放保护(例如,加密/解密计数器)的安全流中被确保安全。应当指出,TLP安全流前缀的使用是为了便于将这一能力添加到现有实施方式中,并且在其他变型中,可以对TLP报头进行修改或者有可能添加额外的“安全层”,以携带事务中的安全流信息。在一个替代的实施例中,安全流前缀中携带的安全流信息中的一些或全部可以被嵌入到分组的有效载荷中。尽管下文将详细描述前缀方案,但是应当理解,传达所需安全流信息的任何方式都能够提供等效的结果,尽管有可能具有不同的实施方式和/或带宽开销权衡。因而,加密的有效载荷对于中间交换机是透明的。中间交换机可以使用元数据进行缓冲器管理和路由,但是能够检测到任何篡改或重放。表格2提供了安全TLP前缀的示例性实施例。
表格2 TLP前缀
在一些实施例中,上文被描述为添加至安全TLP前缀的内容也可以被添加至分组的TLP报头,在这种情况下可以省略安全TLP前缀。
图10是根据本公开的实施例的用于形成用于跨越安全流传输的安全事务层分组的过程流图解。安全流的发起涉及多个步骤,尽管这些步骤中的一些可以合并或者按照与本文描述的不同的顺序执行。示例性的第一步骤是确立含有两个端口的部件的真实性和身份,所述两个端口将是安全流的终端。第二步骤是“供应”密钥——其可以是作为用于确立部件的真实性和身份的同一交换的部分完成的,或者可以是通过任何其他机制完成的。第三,必须配置安全连接。最后,触发安全连接的建立。
在开端处,发送装置能够确定要使用安全流发送至接收装置的分组(1002)。这一确定可以是由用于在分组传输中支持IDE的两个装置的第一观测能力做出的。用户设置、优先权设置、数据类型、所连接的装置的类型或者其他原因能够使跨越安全流发送数据的确定成形。
对于使用CMA和DOE技术进行基于密钥的认证的实施方式:
精确定义要经由所要建立的安全流连接的端口之间的关联。对于安全链路(与选择性安全流对比),两个端口必须在其间没有交换机,并且对于上游端口而言,功能0必须用于确立关联部件的真实性和身份、密钥交换以及安全链路的配置和管理的目的。
对于选择性安全流而言,这里未定义确立关联部件的真实性和身份、密钥交换以及安全链路的配置和管理的模块。对于CMA/DOE实施方式,按照密码安全的方式,经由所定义的CMA/DOE机制交换密钥。对于其他实施方式,还根据所选择的认证机制以安全方式执行密钥交换。
可以使用有效载荷数据(如果有的话)以及跨越链路发送和路由TLP所需的任何报头来形成TLP(1004)。可以生成TLP前缀并且将其前置到TLP,如本文所述(1006)。
为了形成安全TLP,使TLP与安全流(要么是选择性安全流,要么是安全链路)相关联(1008)。这一关联可以是通过选择请求方ID和/或配置TLP与安全流的地址关联而完成的。下文将更详细地描述其他关联技术。
可以对数据有效载荷加密(1010)。如果将执行数据加密,那么可以使用(例如)AES-CTR加密对所述数据加密。还可以对TLP应用完整性保护(1012)。例如,GMAC可以用于完整性保护。本文将描述更多细节。一旦形成了安全TLP并且建立了安全流,就可以发送安全TLP。
安全TLP由数据链路层机制予以保护,使得物理链路错误被检测到并予以校正,而后再将所接收的TLP呈现给接收器的密码处理机制。在启用完整性时,所有的事务层内容都受到完整性保护,并且在启用加密时,所有的TLP数据有效载荷(和ECRC,如果存在的话)都受到加密。
IDE可以使用在(例如)NIST特殊出版物800-38A中定义的AES-CTR加密,以及在(例如)NIST特殊出版物800-38D中定义的GMAC完整性保护,其具有这些额外规则:
a)密钥尺寸可以是256位。
b)密钥的生成和提供是在IDE外完成的,并且所得到的密钥可以经由实施方式特定的技术提供给IDE硬件。
b.1)在这一过程之后,一个端口被识别为PortX,并且另一端口被识别为PortY——对于非对等流量而言,下游端口必须为PortX,并且上游端口必须为PortY;对于对等流量而言,必须通过这里未定义的途径做出选择。
c)密钥可以与密钥ID相关联。
c.1)每一密钥ID可以设有唯一密钥。
c.2)所支持的密钥ID的数量是实施方式特定的。
c.3)在使用安全流进行通信的两个端口之间,每一端口必须使同一密钥与该安全流相关联,但是不要求在两个端口中将相同密钥ID用于该密钥。
c.4)在密钥交换之后,必须使用实施方式特定的模块以安全方式向数据路径提供密钥。
c.5)用于保持密钥安全性的具体要求是平台和用例特定的,并且这里未给出定义。
d)不同密钥用于AES-CTR加密和GMAC完整性。
d.1)出于这一目的提供了单独的密钥ID关联机制。
e)在使用后加密TLP的情况下,MAC必须独立于AES-CTR操作,并且必须将所有输入都作为额外的已认证数据处理。
下文提供了一组安全流准则,这些准则提供了用于形成安全TLP的额外细节:
a)必须使所有安全TLP与经由安全流编号识别的安全流相关联。
a.1)安全链路必须使用安全流编号零,并且不允许其他安全流使用这一安全流编号。
b)在只启用安全链路时,必须使用安全链路确保与该安全流相关联的所有TLP的安全,而且所有这些TLP必须使用为该安全链路建立的密钥和计数器组。
c)在仅启用选择性安全流时,必须基于RID和地址关联寄存器设置使用安全流来确保所选择的TLP的安全,而且所选的TLP必须使用基于密钥ID的对应密钥和计数器组。
d)在启用安全链路和一个或多个选择性安全流两者时,必须基于RID和地址关联寄存器设置并且使用基于密钥ID的对应密钥和计数器组使所选择的TLP与安全流相关联,并且所有其他TLP都必须使用安全链路,并且必须使用针对该安全链路建立的密钥和计数器组。在一些实施例中,可以将流编号置于前缀中。
e)必须基于TLP报头中包含的信息使不与安全链路相关联的所有安全TLP与安全流相关联。
e.1)对于请求而言,容许使用地址和/或请求方ID进行TLP与具体安全流的关联。
e.2)对于完成而言,容许使用完成方ID和/或请求方ID进行TLP与具体安全流的关联。
e.3)支持安全流的端口必须提供用于区分与安全流相关联的TLP的机制。
f)与具体安全流相关联的每一端口必须具有一种机制,根据该机制,该端口知道与该安全流相关联的另一端口的RID。
g)单独的VC必须使用单独的安全流。
h)每一安全流包括子流:
h.1)0000b—由PortX发送并且(最终)由PortY接收的已发布请求;
h.2)0001b—由PortX发送并且(最终)由PortY接收的未发布请求;
h.3)0010b—由PortX发送并且(最终)由PortY接收的完成;
h.4)0011b—由PortY发送并且(最终)由PortX接收的已发布请求;
h.5)0100b—由PortY发送并且(最终)由PortX接收的未发布请求;
h.6)0101b—由PortY发送并且(最终)由PortX接收的完成;
h.7)保留值0110b-0111b;
h.8)容许将值1000b-11111用于本说明书未定义的其他用途。
i)对于每一子流而言,必须有两个计数器块,一个用于AES-CTR,一个用于GMAC,它们必须均由这些字段构成:
i.1)位127:124含有指示子流(按照上文的定义被编码)的固定值;
i.2)保留位123:96;
I.3)位95:32含有LFSR的值,位置64、63、61和60处的抽头(tap)被设置,并且每当计数器块被消耗时所述抽头前进;
i.4)位31:0必须是0000_0001h。
在一些实施例中,可以使用单个计数器块。对于每一子流,对于每[AES-GCM],必须存在具有确定性构造的96b初始化向量IV,其由下述内容构成:
该IV的位95:64中的固定字段,其中,位95:92含有指示子流(根据上文的定义被编码)的固定值,并且位91:64全部为0;
该IV的位63:0中的调用字段,其含有LFSR的值,其中在位置64、63、61和60处的抽头最初被设置为值0000_0001h并且在每次IV被消耗时,所述抽头前进。
j)安全TLP必须具有安全TLP前缀,该前缀必须被前置到TLP上的所有其他前缀之前。
j.1)在安全链路上,本地TLP前缀必须被包含到TLP的完整性检查中
j.2)对于选择性安全流TLP而言,本地TLP前缀不被容许
k)安全TLP前缀包括:
k.1)L位—在被置位时,其指示这是使用当前密钥组的这一子流中的最后TLP;
k.1.1)在本文中未定义用于建立新密钥组以及管理密钥组转变的机制;
k.1.2)在发送了带有被置位的L位的TLP之后,发送器必须等待至少[500ns?],然后再发送与这一子流相关联的另一TLP;所有后续TLP必须使用新密钥组;
k.1.3)在接收到具有被置位的L位的TLP之后,接收器必须针对与该子流相关联的所有后续TLP变换至新密钥组。
k.2)T位—在被置位时,其指示TLP源自于受信任执行环境内:
k.2.1)容许安全TLP源自于受信任执行环境和不受信任执行环境;针对受信任执行环境的规则[在本文中未定义]
l)M位—在被置位时,其指示TLP包括MAC。
m)PR_Sent_Counter—对于未发布请求和完成而言,必须根据下述规则确定该值。对于已发布请求而言,PR_Sent_Counter被设置为保留。
下文的规则适用于每一安全流:
对于发送器而言,保持两个16位计数器:PR_Sent_Counter-NPR和PR_Sent_Counter-CPL。
对于所发送的与安全流相关联的每一已发布请求安全TLP,使两个计数器递增。
对于所发送的与安全流相关联的每一未发布安全TLP,PR_Sent_Counter-NPR值被包含在安全TLP前缀的PR_Sent_Counter字段中,并且之后必须将PR_Sent_Counter-NPR重置为0。
在PR_Sent_Counter-NPR超过2^15时,可以发送完整性同步消息,并且之后PR_Sent_Counter-NPR和PR_Sent_Counter-CPL两者可以被重置为0。在实施例中,容许在其他时间出于其他原因传送完整性同步消息。
对于所发送的与安全流相关联的每一完成安全TLP,PR_Sent_Counter-CPL值必须被包含在安全TLP前缀的PR_Sent_Counter字段中,并且之后必须将PR_Sent_Counter-CPL重置为0。
在PR_Received_Counter-CPL超过2^15时,可以发送完整性同步消息,并且之后PR_Sent_Counter-NPR和PR_Sent_Counter-CPL两者必须被重置为0。
对于接收器,必须保持两个16位计数器:PR_Received_Counter-NPR和PR_Received_Counter-CPL。
对于所接收的与安全流相关联的每一已发布请求安全TLP,使两个计数器递增。
在接收到未发布请求时,那么可以从PR_Received_Counter-NPR减去安全TLP前缀中携带的PR_Sent_Counter值,并且用该结果更新PR_Received_Counter-NPR。
在接收到完成时,那么可以从PR_Received_Counter-CPL减去安全TLP前缀中携带的PR_Sent_Counter值,并且用该结果更新PR_Received_Counter-CPL。
在接收到完整性同步消息时,那么:
必须从PR_Received_Counter-NPR减去安全流同步消息中携带的PR_Sent_Counter-NPR值,并且用该结果更新PR_Sent_Counter-NPR。
必须从PR_Received_Counter-CPL减去安全流同步消息中携带的PR_Sent_Counter-CPL值,并且用该结果更新PR_Received_Counter-CPL。
在从所接收到的TLP或者从完整性同步消息减去PR_Sent_Counter时,如果PR_Received_Counter-NPR或PR_Received_Counter-CPL中任一者/两者下溢,这指示已经发生了非法的TLP重新排序。这是与接收端口相关联的报告错误。
在启用Per-TLP GMAC时,必须向与安全流相关的每一TLP应用完整性。
必须计算包括在紧随数据加密(如果启用的话)之后的TLP的所有内容的GMAC,其排除MAC值本身。
在启用聚合GMAC时,只要在被针对与安全流相关联的触发完整性检查位的写入触发时,并且只要在被发送器经由实施方式特定的机制选定时,就必须向与安全流相关联的TLP应用完整性。
为了使第一TLP包括MAC,必须计算包括对于自该安全流建立以来所发送的与该安全流相关联的所有TLP在紧随数据加密(如果启用的话)之后的所有TLP内容的GMAC值,其排除MAC值本身。
为了使后续TLP包括MAC,必须计算包括对于自最后一个包括MAC的TLP被发送以来所发送的与该安全流相关联的所有TLP在紧随数据加密(如果启用的话)之后的所有TLP内容的GMAC,其包括当前正在发送的具有MAC的TLP,但是排除MAC值本身。
当完整性模式字段被编程为所支持的值时,必须在接收器处针对所有包括MAC的TLP执行完整性检查。值得注意的是,完整性检查可以发生在对LCRC进行配置和确认之后。
下文是与安全流相关联的所定义错误:
MAC检查失败—接收器对所接收的TLP的MAC的检查失败
PR-Received-Counter-NPR/PR_Received_Counter-CPL下溢—指示已经检测到了不适当的重新排序
PR-Received-Counter-NPR/PR_Received_Counter-CPL溢出—指示接收所需NPR失败
如果检测到这些条件中的一者或两者,那么用于这一安全流的安全流状态机必须进入Fail_Insecure。
接收到具有UR或UC状态的完成并非是安全性错误,并且其本身未必触发向Fail_Insecure的转变。
在Fail_Insecure中,必须将用于相关联的安全流的密钥组标记为无效。
接收器对未通过完整性检查的TLP的操纵是实施方式特定的;强烈建议防止此类TLP引起不可恢复的数据破坏。
为了退出Fail_Insecure,必须使用新的密钥组重新建立相关联的安全流。
在Fail_Insecure状态中,必须按照实施方式特定的方式保护与受影响的安全流相关联的私有数据。
在上游端口处,在进入Fail_Insecure时,必须发送指示相关联的链路/流的密钥ID(其因而识别相关联的安全流)的完整性检查失败消息。
下游端口在接收到完整性检查失败消息时,必须立即针对相关联的安全流进入Fail_Insecure。
在任何链路断开时,所有的安全流都必须转变至Fail_Insecure。
安全链路所特定的额外规则:
在进入Fail_Insecure时,按照IDE控制寄存器中的所配置的遏制行为按每端口确定操纵:
000b—迫使链路断开。
001b—两个方向上的存储器和IO请求作为UR终止;必须抛弃所接收到的针对存储器/IO的完成;Cfg和Msg请求/完成继续在两个方向上操作。
010b—对于上游端口而言,与000b相同;对于下游端口而言,像000b一样,只是此外通过正常路径的Cfg请求作为UR终止,并且抛弃所接收到的完成;但是配置流量继续通过系统固件中介(SFI)机制进行操作,如果该机制可用的话。
011b—两个方向上的所有请求作为UR终止,并且抛弃所有的所接收的完成。
在Fail_Insecure中,对于下游端口而言,在本说明书中定义的端口的配置空间中的配置流量目标结构必须继续被接受并完成,就像在其他情况下应当做的那样;本说明书中未定义的配置流量目标结构(例如,VSEC)被容许作为UR完成。
为了退出Fail_Insecure,要么必须使用基本重置(通过平台特定的模块触发),要么系统固件/软件必须在下游端口处清空安全链路,等待100μs,之后
任选地,访问上游端口配置寄存器,以执行错误日志记录,之后
使用辅助总线重置,以向下游部件发出热重置,之后
重新枚举/配置链路和部件。
必须协调安全性和功率管理,以保持安全环境。参考表格3,端口在处于无下划线的状态时保持安全状态,并且端口在处于(有下划线的)状态时清除安全状态。
表格3与D状态和L状态有关的安全连接状态
下游部件D状态 | 可容许的上游部件D状态 | 可容许的互连状态 |
D0 | D0 | L0、L0s、L1、<u>L2/L3就绪</u> |
D1 | D0-D1 | L1、<u>L2/L3就绪</u> |
D2 | D0-D2 | L1、<u>L2/L3就绪</u> |
D3(热) | D0-D3(热) | L1、<u>L2/L3就绪</u> |
<u>D3(冷)</u> | <u>D0-D3(冷)</u> | <u>L2、L3</u> |
系统固件/软件必须觉察到将丧失安全状态的PM转变,并且根据需要采取适当行动来保持安全操作——如何做到这一点则处于本文的范围以外。
在所有情况下,硬件必须预防私有数据的泄漏和完整性违犯——如何做到这一点是实施方式特定的。
图11是示出了根据至少一个实施例的能够用于按照使用三个安全流的限制排序模式(ROM)操作的安全流协议中的各种可能的计数器和密钥的交互图1100。交互图1100示出了发起装置1110和目标装置1130。在发起装置1110和目标装置1130之间建立两个连接1102和1104。连接1102和1104可以包括一个或多个中间装置(例如,交换机、桥),为了便于例示未示出这些中间装置。发起装置1110能够经由连接1102向目标装置1130传送事务1103(例如,已发布或未发布)。在一些情形下,事务1105可以经由连接1104从目标装置传送至发起装置(例如,完成)。完成请求是响应于需要响应的事务(例如,未发布(NPR)事务)而传送的。例如,NPR事务可以包括需要响应的读取请求或写入请求。
图11中所示的计数器和密钥可以被用到一种安全流协议的实施方式中,其中,每一事务类型被作为具有单独计数器和密钥的单独受保护流处理。三个流分别对应于已发布事务、未发布事务和完成事务。一个或多个实施例可以实施用于加密的基于计数器的方案。在1112处示出了可以由发起装置1110使用的示例性计数器和密钥。在1132处示出了可以由目标装置1130使用的示例性计数器和密钥。对于事务流动的每一方向而言,该方向的发起装置和目标装置保持下述计数器,这些计数器可以是在安全流协议的设置期间初始化的:
用于已发布请求的计数器(pr_enc_counter、pr_dec_counter)—这些计数器可以是具有32位随机前缀的64位计数器。这一计数器对可以用于已发布请求的经认证的加密和解密。
用于未发布请求的计数器(npr_enc_counter、npr_dec_counter)—这些计数器可以是具有32位随机前缀的64位计数器。这一计数器对可以用于未发布请求的经认证的加密和解密。
用于完成请求的计数器(cpl_enc_counter、cpl_dec_counter)—这些计数器可以是具有32位随机前缀的64位计数器。这一计数器对可以用于完成请求的经认证的加密和解密。
用于所传送的已发布请求的计数器(pr_sent_counter)—这一计数器可以是16位计数器。这一计数器可以用于检测所抛弃/延迟的已发布请求。这一计数器含有表示自最后一个未发布请求或完成请求被传送以来所传送的已发布请求的数量的值。这一计数器还起着检查的作用,从而增强生产者-消费者排序,使得未发布请求和完成请求不会被重新排序到已发布请求的前面。
用于所接收的已发布请求的计数器(pr_received_counter)—这一计数器可以是32位计数器。这一计数器可以用于检测所抛弃/延迟的已发布请求。这一计数器含有表示自最后一个未发布请求或完成请求被接收以来所接收的已发布请求的数量的值。这一计数器还起着检查的作用,从而增强生产者-消费者排序,使得未发布请求和完成请求不会被重新排序到已发布请求的前面。
除了加密和解密计数器之外,可以在发起装置和目标装置两者处保持用于安全流协议的加密密钥和解密密钥。可以根据每一会话对加密密钥和解密密钥初始化,并且可以根据每一事务类型对不同的加密密钥对初始化。例如,对于从发起装置1110向目标装置1130传送的已发布事务(例如,1103)而言,发起装置1110可以保持用于对要传送至目标装置1130的PR数据加密的PR加密密钥,该密钥被识别为pr_stream_enc_key,并且目标装置1130可以保持用于对发起装置1110接收的PR数据解密的对应PR解密密钥,其被识别为pr_stream_dec_key。加密和解密可以是分别结合PR加密计数器和PR解密计数器执行的。此外,PR加密密钥和PR加密计数器还可以被发起装置用来生成关于TLP(例如,TLP安全流前缀、TLP报头、经加密的数据)的完整性代码值(ICV)。接收已发布事务的目标装置可以使用对应的PR解密密钥和PR解密计数器验证所接收到的已发布事务的ICV。
对于从发起装置1110向目标装置1130传送的未发布事务(例如,1103)而言,发起装置1110可以保持用于对所要传送的NPR数据加密的NPR加密密钥,其被识别为npr_stream_enc_key,并且目标装置1130可以保持用于对所接收的NPR数据解密的对应NPR解密密钥,其被识别为npr_stream_dec_key。加密和解密可以是分别结合NPR加密计数器和NPR解密计数器执行的。此外,NPR加密密钥和NPR加密计数器还可以被发起装置用来生成关于TLP(例如,TLP安全流前缀、TLP报头、经加密的数据)的完整性代码值(ICV)。接收未发布事务的目标装置可以使用对应的NPR解密密钥和NPR解密计数器验证所接收到的未发布事务的ICV。
对于从目标装置1130向发起装置1110传送的完成事务而言,目标装置1130可以保持用于对所要传送的CPL数据加密的CPL加密密钥,其被识别为cpl_stream_enc_key,并且发起装置1110可以保持用于对所接收的CPL数据进行解密的对应CPL解密密钥,其被识别为cpl_stream_dec_key。加密和解密可以是分别结合CPL加密计数器和CPL解密计数器执行的。此外,CPL加密密钥和CPL加密计数器还可以被目标装置用来生成关于TLP(例如,TLP安全流前缀、TLP报头、经加密的数据)的完整性代码值(ICV)。接收完成事务的发起装置可以使用对应的CPL解密密钥和CPL解密计数器验证所接收到的完成事务的ICV。
在至少一个实施例中,可以使用对称加密。在这一实施例中,对于用于一个事务类型的每一对密钥而言,同一密钥既用于加密,又用于解密。例如,pr_stream_enc_key等同于pr_stream_dec_key,npr_stream_enc_key等同于npr_stream_dec_key,并且cpl_stream_enc_key等同于cpl_stream_dec_key。
在一个示例中,可以使用操作的高级加密标准-伽罗瓦计数器模式(AES-GCM)来提供数据的计数器模式加密和用于数据的消息认证码。计数器模式加密使用对称密钥密码块加密程序。一般而言,块加密程序是一种加密算法,其使用对称密钥按照提供保密性或真实性的方式对数据块加密。操作的计数器模式将块加密程序变成流加密程序。由块加密程序用密钥对作为与计数器值连接起来的初始化向量(IV)的输入块加密。块加密程序的输出用于对明文块加密(例如,通过XOR函数),以生成密文。IV的相继值和计数器值用于对明文的相继块加密,以产生额外的密文块。
除了由输入数据产生密文之外,GCM操作还计算伽罗瓦消息认证码(GMAC)。更一般地被称为“标签”或“认证标签”的GMAC是用于对消息(或事务)进行认证的几个字节的信息。GMAC是关于TLP分组(例如,TLP安全流前缀、TLP报头、加密数据)能够生成的ICV的一个示例。在至少一个实施例中,乘子函数用于基于由明文块的加密产生的密文块来计算GMAC。能够将GMAC附加到密文上。尽管AES-GCM是可以用到一个或多个实施例中的一种可能类型的加密和认证技术,但是对于本领域技术人员而言显然还可以使用任何其他适当类型的加密和认证(例如,SHA-3、散列消息认证码(HMAC)、AES-CTR等)。
一种用于执行加密的示例性算法可以包括依赖于以确定性方式构建的初始化向量(IV)的加密算法。IV可以被视为固定字段和调用字段的连接。固定字段可以包括单个字段或多个字段,并且可以识别用于经认证的加密函数的实例的装置或上下文。调用字段可以识别针对该装置或上下文内的经认证加密函数的输入组。没有任何两个装置将共享相同的固定字段;也没有任何两组输入共享同一调用字段。调用字段可以包括整数计数器或者由确保最大循环长度的多项式驱动的线性反馈移位寄存器。在任一种情况下,调用字段均在每次调用认证加密函数时递增。
IV可以用于认证加密和解密目的。例如,对于加密、给定文本P和额外认证数据A以及IV而言,可以部分地使用以确定性方式构建的IV及其他项对文本P和数据A加密。在这一语境下,文本P可以包括将跨越链路传输的数据,并且额外认证数据A可以包括用于完整性保护的TLP报头和/或前缀。
IV可以用于生成计数器块,其可以递增,以建立用于文本P的伽罗瓦计数器函数,从而得到新的增强的明文C。连同额外认证数据A一起,增强的明文C可以通过伽罗瓦散列函数受到增强,以产生单个输出块。之后,用同样由该IV和计数器块生成的伽罗瓦计数器函数对该输出块加密。
可以在由美国商务部于2007年11月公布的用于计算机安全的NIST特殊出版物800-38D中找到有关AES-GCM的实施方式细节。
尽管上文描述的实施例提供了一种可能的方案,在该方案中使用相同的加密/解密密钥和计数器对TLP中的数据进行加密和解密并且验证TLP的完整性,但是应当指出,可以实施任何其他适当的加密/解密和完整性验证方案,以确保安全流中的事务的安全。例如,在另一实施例中,可以将不同的密钥用于每一分组类型的加密和ICV生成。也就是说,可以用第一已发布密钥完成对已发布请求有效载荷的加密,并且可以使用不同于第一已发布密钥的第二已发布密钥完成关于已发布请求有效载荷、报头和前缀的ICV生成。可以用第一未发布密钥完成对未发布请求有效载荷的加密,并且使用不同于第一未发布密钥的第二未发布密钥完成关于未发布请求有效载荷、报头和前缀的ICV生成。可以用第一完成密钥执行对完成请求有效载荷的加密,并且使用不同于第一完成密钥的第二完成密钥执行关于完成请求有效载荷、报头和前缀的ICV生成。应当指出,ICV可以是关于TLP安全流前缀、(一个或多个(如果使用了不止一个的话))TLP报头和经加密的有效载荷数据生成的。然而,在一些实施例中,也可以将TLP的其他字段包含到ICV中(例如,ECRC)。
图12示出了根据至少一个实施例的可以由实施安全流协议的系统中的每一事务携带的TLP安全流前缀1200的可能格式,所述安全流协议按照使用两个安全流或者三个安全流的限制排序模式操作。所述格式包括安全流前缀指示符1202、安全流前缀报头1204和pr_sent_counter值1206。Pr_sent_counter值1206表示自最后一个未发布或完成事务被从发起装置传送至目标装置以来已经从发起装置向目标装置传送的已发布事务的数量。安全流前缀指示符1202指示TLP安全流前缀1200的类型。例如,前缀指示符1202可以指示TLP安全流前缀1200含有与安全流协议有关的信息。
在至少一个实施例中,在安全流报头1204中定义了三个位。第一位(例如,BIT 0)可以是作为该事务是否是受信任IO会话的部分的指示的受信任位。受信任位用于区分处于安全流的两端的软件实体或功能。安全流可以被受信任和不受信任功能/软件共享。相应地,受信任位指示该事务是否是由处于一端的受信任实体(例如,发起装置)发起并且将由处于另一端的受信任实体(例如,目标装置)消耗的。例如,连接至服务器平台并且需要直接访问服务器平台的信任域中的存储器的装置可以是受信任实体。存储器存储控制器是受信任实体的一个可能示例。
第二位(例如,BIT 1)是pr_sent_counter值1206是否被包含在TLP安全流前缀1200中的指示。在至少一个实施例中,pr_sent_counter值1206被包含在未发布事务和完成事务的TLP安全流前缀中,并且第二位可以被设置为1,以指示在TLP安全流前缀中存在该计数器。
第三位(例如,BIT 2)可以被用作安全流协议处于限制排序模式(ROM)还是处于显式计数器模式(ECM)的指示。在一个示例中,如果第三位被设置为0,那么安全流协议在限制排序模式下操作,并且如果第三位被设置为1,那么安全流协议在显式计数器模式下操作。根据至少一个实施例,在所述模式是ECM时,用于TLP中的数据的加密和TLP的完整性验证的计数器(例如,pr_enc_counter、npr_enc_counter、cpl_enc_counter)可以被作为分组的有效载荷的前N字节携带。
来看图13-15,交互图示出了根据一个或多个实施例可以在实施安全流协议的互连架构中发生的可能事务,该安全流协议按照限制排序模式(ROM)操作。图13-15所示的事务、计数器和密钥以安全的三流协议实施方式为基础。这三个流分别对应于已发布事务、未发布事务和完成事务。
图13是示出了用于从发起装置1110向目标装置1130传送的已发布请求1302的安全三流协议的交互图1300。发起装置1110对其PR加密计数器(例如,pr_enc_counter)抽样,并且使抽样值递增。发起装置1110还使其PR传送计数器(例如,pr_sent_counter)的值递增。对计数器抽样可以包括获得该计数器的值并且有可能将其存储以供快速访问。发起装置1110对用于形成已发布请求1302的事务层分组(TLP)的数据加密。可以使用PR加密计数器的递增值和PR加密密钥(例如,pr_stream_enc_key)执行加密。还计算关于包括加密数据、TLP报头和TLP安全流前缀的TLP的完整性代码值(ICV),例如MAC。发起装置1110将通过加密数据和ICV确保安全的已发布请求传送至目标装置1130。
目标装置1130对其PR解密计数器(例如,pr_dec_counter)的值抽样,并且使抽样值递增。目标装置1130还使其PR接收计数器(例如,pr_received_counter)的值递增。目标装置1130使用PR解密计数器的递增值和PR解密密钥(例如,pr_stream_dec_key)对接收到的已发布请求的TLP中的数据解密。在至少一个实施例中,用于已发布请求的加密密钥和解密密钥是相同的。目标装置1130通过验证所接收到的针对该TLP的ICV而验证该TLP的完整性。在至少一个实施例中,ICV是MAC,例如GMAC,将使用PR解密计数器和PR解密密钥对其进行验证。在另一实施例中,可以使用不同的密钥和计数器(例如,pr_mac_key、pr_mac_counter)生成ICV。如果ICV验证失败,那么提出错误(例如,对错误消息进行日志记录,生成要传送给发起装置的响应,对密钥重新初始化等)。否则,目标装置消耗该分组。
图14是示出了用于从发起装置1110向目标装置1130传送的未发布请求1402(有或没有数据)的安全流协议操作的交互图1400。发起装置1110对其NPR加密计数器(例如,npr_enc_counter)的值抽样,并且使抽样值递增。发起装置1110还对其PR发送计数器(例如,pr_sent_counter)的值抽样,并且使PR传送计数器中的值归零。发起装置1110对用于形成未发布请求1402的TLP的数据加密。可以使用NPR加密计数器的递增值和NPR加密密钥(例如,npr_stream_enc_key)执行加密。还计算关于包括加密数据、TLP报头和TLP安全流前缀的TLP的完整性代码值(ICV),例如MAC。发起装置1110将通过加密数据和ICV确保安全的未发布请求传送至目标装置1130。此外,TLP还携带PR传送计数器的抽样值,以指示自最后一个未发布或完成事务以来已经由发起装置1110传送了多少已发布请求。
目标装置1130对其NPR解密计数器(例如,npr_dec_counter)的值抽样,并且使抽样值递增。目标装置1130使用NPR解密计数器的递增值和NPR解密密钥(例如,npr_stream_dec_key)对接收到的未发布请求的TLP中的数据解密。在至少一个实施例中,用于未发布请求的加密密钥和解密密钥是相同的。目标装置1130通过验证所接收到的针对该TLP的ICV而验证该TLP的完整性。在至少一个实施例中,ICV是MAC,将使用NPR解密计数器的递增值和NPR解密密钥对其进行验证。如果ICV验证失败,那么提出错误(例如,对错误消息进行日志记录,生成要传送给目标装置的响应,对密钥重新初始化等)。否则,将目标装置1130保持的PR接收计数器(例如,pr_received_counter)的值减去从发起装置1110接收的TLP中的PR传送计数器的值。如果所得到的PR接收计数器的值小于零,那么这指示一个或多个已发布请求已经被抛弃和/或延迟。因此,提出错误(例如,对错误消息进行日志记录,生成通知发起装置的响应,终止会话等)。否则,目标装置消耗该分组。在一些实施例中,PR接收计数器评估可以发生在MAC验证之前或者与之并行发生。
图15是示出了用于从目标装置1130传送至发起装置1110的完成请求1502的安全流协议操作的交互图1500。目标装置1130对其CPL加密计数器(例如,cpl_enc_counter)的值抽样,并且使抽样值递增。目标装置1130还对其自己的PR发送计数器(例如,目标装置1130处的pr_sent_counter)的值抽样,并且使该PR传送计数器中的值归零。目标装置1130对用于形成完成请求1502的TLP的数据加密。可以使用CPL加密计数器的递增值和CPL加密密钥(例如,cpl_stream_enc_key)执行加密。还计算关于包括加密数据、TLP报头和TLP安全流前缀的TLP的完整性代码值(ICV),例如MAC。目标装置1130将通过加密数据和ICV确保安全的完成请求传送至目标装置1130。此外,TLP还携带PR传送计数器的抽样值,以指示自最后一个未发布或完成事务被从目标装置1130传送至发起装置1110以来已由目标装置1130传送了多少已发布请求。
发起装置1110对其CPL解密计数器(例如,cpl_dec_counter)的值抽样,并且使抽样值递增。发起装置1110使用CPL解密计数器的递增值和CPL解密密钥(例如,cpl_stream_dec_key)对接收到的完成请求的TLP中的数据解密。在至少一个实施例中,用于完成请求的加密密钥和解密密钥是相同的。发起装置1110通过验证所接收到的针对该TLP的ICV而验证该TLP的完整性。在至少一个实施例中,ICV是MAC,将使用CPL解密计数器的递增值和CPL解密密钥对其进行验证。如果ICV验证失败,那么提出错误(例如,对错误消息进行日志记录,生成要传送给目标装置的响应,对密钥重新初始化等)。否则,将目标装置1110保持的PR接收计数器(例如,pr_received_counter)的值减去从目标装置1130接收的PR传送计数器(例如,pr_sent_counter)的值。如果所得到的PR接收计数器的值小于零,那么这指示一个或多个已发布请求已经被抛弃和/或延迟。因此,提出错误(例如,对错误消息进行日志记录,生成通知发起装置的响应,终止会话等)。否则,发起装置1110消耗该分组。在一些实施例中,PR接收计数器评估可以发生在MAC验证之前。
应当指出,发起装置1110和目标装置1130的操作是参考从发起装置1110传送已发布和未发布请求以及响应于未发布事务从目标装置1130传送完成事务而描述的。然而,显然发起装置1110能够作为目标装置操作,并且目标装置1130能够作为发起装置操作。
可以对安全TLP重新排序,以满足避免死锁的要求,但是在安全TLP通过PCIe在端口之间传递时禁止一些其他形式的重新排序。下文的示例将说明所选的重新排序情况。基于TLP重新排序(或者具有重新排序的作用的延迟)的攻击可以是使用各种各样的机制实施的,它们全都导致相同的被观测行为并且将被使用由IDE定义的机制检测到。
图16A-16C是示出了根据本公开的实施例的针对IDE TLP的示例性重新排序的示意图。图16A示出了通过织构的第一示例性TPL流1600。源端口1602能够按照由请求方确定的既定顺序发送一组TLP。在这一示例中,请求方已经请求了已发布P1请求、未发布NP1请求、已发布P2请求和未发布NP2请求。可容许的重新排序可以包括这样一种情形,其中,P2绕过NP1,并且在NP1之前抵达目的地端口1604。
图16B示出了通过织构的第二示例性TPL流1610。图16B示出了禁止的重新排序。在这一示例中,NP1绕过P1,这是不被允许的。
图16C示出了通过织构的第三示例性TPL流1620。在TPL流1620中,NP1和NP2的重新排序对于非安全TLP是可容许的;但是NP1和NP2的重新排序对于安全TLP是被禁止的。
注意,不要求所接收的TLP前缀中的PR_Sent_Counter值与PR_Received_Counter匹配,因为允许已发布请求越过未发布请求和完成。在这种(合法)绕过发生时,PR_Received_Counter可以具有比TLP前缀中的PR_Sent_Counter大的值。
类似的情形可以适用于已发布请求和完成之间。
注意,重新排序攻击有可能通过重定时器、交换机以及任何其他能够在起始端口和目的地端口之间的任何点上改变TLP的流动的装置或设备而发生。表格4提供了对事务层错误列表的示例性添加项。
表格4针对安全TLP的事务层错误列表
IDE消息
图17-20示出了根据各种实施例的与安全链路或选择性安全流相关联的各种示例性完整性消息。这些消息可以适用于图1所示的计算机总线105。IDE消息与任选的完整性和数据加密(IDE)机制结合使用。下面的规则适用于IDE消息的形成:
·IDE消息不包括数据有效载荷(TLP类型为Msg)。
·保留长度字段。
·必须将请求方ID设置成发送端口的ID。
·与安全链路相关联的完整性同步消息必须使用本地路由(100b);与选择性安全流相关联的完整性同步消息必须使用根据ID的路由(010b),其中,目的地ID必须含有处于相关联的安全流RID关联寄存器组的伙伴RID基础字段中的值。
·与安全链路相关联的完整性失败消息必须使用通往根复合体的路由(000b);与选择性安全流相关联的完整性同步消息必须使用根据ID的路由(010b),其中,目的地ID必须含有处于相关联的安全流RID关联寄存器组的伙伴RID基础字段中的值。
·IDE消息使用默认的流量种类标志符(TC0)。实施IDE支持的接收器被容许对这一规则的违犯进行检查。如果接收器确定TLP违反了这一规则,那么其必须将该TLP处理成不受支持的请求。这是与接收端口相关联的报告错误。表格5提供了用于IDE信息的示例性编码。
表格5 IDE消息
图17是根据本公开的实施例的用于安全链路的示例性完整性同步消息的示意图。图18是根据本公开的实施例的用于选择性安全流的完整性同步消息的示意图。图19是根据本公开的实施例的用于安全链路的完整性检查失败消息的示意图。图20是根据本公开的实施例的用于选择性安全流的完整性检查失败消息的示意图。
如图17所示,与安全链路相关联的完整性同步消息可以使用本地路由(100b)。如图18所示,与选择性安全流相关联的完整性同步消息可以使用根据ID的路由(010b),其中,目的地ID可以包含处于相关联的安全流RID关联寄存器组的伙伴RID基础字段中的值。如图19所示,与安全链路相关联的完整性失败消息可以使用通往根复合体的路由(000b)。如图20所示,与选择性安全流相关联的完整性同步消息可以使用根据ID的路由(010b),其中,目的地ID可以包含处于相关联的安全流RID关联寄存器组的伙伴RID基础字段中的值。
IDE消息可以使用默认的流量种类标志符(TC0)。实施IDE支持的接收器被容许对这一规则的违犯进行检查。如果接收器确定TLP违反了这一规则,那么其可以将该TLP处理成不受支持的请求。这是与接收端口相关联的报告错误。
用于直通安全流的交换机规则
对于交换机端口本身是终端的情况,容许交换机支持直通安全流,而不支持安全流。
支持直通安全流的交换机必须在启用时为通过该交换机传递的具有安全TLP前缀的TLP实施修改的排序规则,如表格6中所定义的。尽管交换机不必基于宽松排序对具有安全TLP前缀的TLP进行重新排序,但是容许使这些TLP具有被置位的RO位。
IDO不受影响,因为安全流总是独立于其他流量在成对的连接中操作。
表格6用于交换机的IDE排序规则——按每一流
交换机必须仅使安全TLP路由通过具有被置位的直通安全流启用位的端口。如果安全TLP被路由至具有清零的直通安全流启用位的端口,那么该安全TLP必须被交换机抛弃,并且这是错误路由的安全TLP错误,其为与出端口相关联的定义的错误。在一些实施例中,出端口在抛弃未发布请求TLP时可以合成并返回完成。
IDE扩展能力
所有的实施IDE的端口都必须实施IDE扩展能力。
扩展能力报头(偏移00h)
下面的表格EC1提供了PCI高速扩展能力报头中的相应位定义。
表格EC1:PCIe扩展能力报头
IDE能力寄存器(偏移04h)
表格EC2:IDE能力寄存器
IDE控制寄存器(偏移08h)
表格EC3:IDE控制寄存器
IDE状态寄存器(偏移0Ch)
表格EC2:IDE状态寄存器
安全链路控制寄存器(偏移10h,如果存在的话)
如果处于IDE能力寄存器中的支持安全链路位被置位,那么必须实施这一寄存器。如果处于IDE能力寄存器中的支持安全链路位被清零,那么可以不必实施这一寄存器,并且相反第一组安全流寄存器必须紧随IDE状态寄存器。
表格EC5:安全链路控制寄存器
安全链路状态寄存器(偏移14h,如果存在的话)
如果处于IDE能力寄存器中的支持安全链路位被置位,那么必须实施这一寄存器。如果处于IDE能力寄存器中的支持安全链路位被清零,那么可以不必实施这一寄存器,并且相反第一组安全流寄存器必须紧随IDE状态寄存器。
表格EC6:安全链路状态寄存器
安全流控制寄存器
每一安全流必须恰好具有一个安全流寄存器块,其中,该块由安全流控制寄存器、随后的安全流状态寄存器、随后的安全流RID关联寄存器、随后的一个或多个安全流地址关联寄存器组构成。与安全流寄存器块相关联的安全流ID由这样的序列所暗示,在该序列中该块出现在IDE扩展能力中,使得第一个对应于安全流ID 1(流ID 0与安全链路相关联并且不使用RID或地址关联机制)。
表格EC7:安全流控制寄存器
安全流状态寄存器
每一安全流必须恰好具有一个安全流寄存器块,其中,该块由安全流控制寄存器、随后的安全流状态寄存器、随后的安全流RID关联寄存器、随后的一个或多个安全流地址关联寄存器组构成。与安全流寄存器块相关联的安全流ID由这样的序列所暗示,在该序列中该块出现在IDE扩展能力中,使得第一个对应于安全流ID 1(流ID 0与安全链路相关联并且不使用RID或地址关联机制)。
表格EC8:安全流状态寄存器
安全流RID关联寄存器
每一安全流必须恰好具有一个安全流寄存器块,其中,该块由安全流控制寄存器、随后的安全流状态寄存器、随后的安全流RID关联寄存器、随后的一个或多个安全流地址关联寄存器组构成。与安全流寄存器块相关联的安全流ID由这样的序列所暗示,在该序列中该块出现在IDE扩展能力中,使得第一个对应于安全流ID 1(流ID 0与安全链路相关联并且不使用RID或地址关联机制)。图21是根据本公开的实施例的示例性安全流请求方标识符(RID)关联块的示意图。表格EC9提供了示例性安全流RID关联寄存器1。表格EC10提供了示例性安全流RID关联寄存器2。
表格EC9安全流RID关联寄存器1(偏移+00h)
表格EC10安全流RID关联寄存器2(偏移+04h)
安全流地址关联寄存器
在紧随每一安全流RID关联块之后必须有至少一个安全流地址关联块。对于既定安全流而言,安全流地址关联块的数量由硬件实施方式确定。系统软件必须将所有未使用的安全流地址关联块的V位清零。图22是根据本公开的实施例的示例性安全流地址关联块的示意图。表格EC11提供了示例性安全流地址关联寄存器1。表格EC12提供了示例性安全流地址关联寄存器2。表格EC13提供了示例性安全流地址关联寄存器3。表格EC14提供了示例性安全流地址关联寄存器4。
表格EC11安全流地址关联寄存器1(偏移+00h)
表格EC12安全流地址关联寄存器2(偏移+04h)
表格EC13安全流地址关联寄存器3(偏移+08h)
位位置 | 寄存器描述 | 属性 |
31:0 | 存储器上限——对应于地址位[63:32]。 | RW |
表格EC14安全流地址关联寄存器4(偏移+0ch)
位位置 | 寄存器描述 | 属性 |
31:0 | 存储器基础上限——对应于地址位[63:32]。 | RW |
图23示出了根据各种实施例的适于用来实践本公开的各个方面的示例性装置。装置2300用于实施所公开的方法的编程方面。如图所示,装置2300包括一个或多个处理器2302(均具有一个或多个处理器核心)和/或任选的硬件加速器2304(其可以是ASIC或FPGA)。在替代实施例中,硬件加速器2304可以是处理器2302的部分或者被一起集成到SOC上。此外,装置2300可以包括存储器2306(其可以是很多已知的永久性存储介质中的任何一种)和包括模块2310的数据存储电路2308。此外,装置2300可以包括耦合至一个或多个传感器2328和显示屏2330的I/O接口2322。I/O接口2322可以包括发送器2326和接收器2324。此外,装置2300可以包括通信电路2316,通信电路2316包括发送器(Tx)2318和网络接口控制器(NIC)2320。可以使各元件经由系统总线2336相互耦合,系统总线2336可以表示一条或多条总线,例如,一条或多条PCIe总线。对于各种PCIe实施例而言,通信电路2316和I/O接口2322可以分别包括发送器2318和NIC 2320以及发送器2326和接收器2324。具体而言,相应的发送器2318、NIC 2320、发送器2326和接收器2324可以包括本文参考附图描述的基于翻转的分组化技术。在各种实施例中,其他部件中的一者或多者,例如处理器2302、存储器2306、储存器2308等也可以类似地包括高速串行链路接口电路,以用于与具有本文参考附图描述的安全流技术的高速串行总线2336(例如,高速PCIe总线)耦合并进行操作。在多条总线的情况下,可以通过一个或多个总线桥(未示出)对它们进行桥接。装置2312可以耦合至系统总线2336,并且装置2332可以耦合至I/O总线2338。装置2312可以包括接口2314,并且装置2332可以包括接口2334。
在实施例中,处理器2302(又称为“处理器电路2302”)可以是被配置为通过实施指令而执行基本算术、逻辑和输入/输出操作的一个或多个处理元件。处理器电路2302可以被实施成独立系统/装置/封装,或者可以被实施成现有系统/装置/封装的部分。处理器电路2302可以是一个或多个微处理器、一个或多个单核处理器、一个或多个多核处理器、一个或多个多线程处理器、一个或多个GPU、一个或多个超低压处理器、一个或多个嵌入式处理器、一个或多个DSP、一个或多个FPD(硬件加速器)(例如FPGA、结构化ASIC、可编程SoC(PSoC)等)、和/或其他处理器或处理/控制电路。处理器电路2302可以是SoC的部分,在该SoC中,处理器电路2302和本文讨论的其他部件被形成到单个IC或单个封装中。作为示例,处理器电路2302可以包括:一个或多个Intel或Core处理器;先进微装置(AMD)加速处理单元(APU)、或处理器;苹果公司的A系列、S系列、W系列等处理器;处理器;和/或三星处理器;等等。
在实施例中,处理器电路2302可以包括传感器集线器,其可以通过处理由一个或多个传感器2328获得的数据而起着协处理器的作用。传感器集线器可以包括被配置为通过执行算术、逻辑和输入/输出操作而将从一个或多个传感器2328中的每者获得的数据集成。在实施例中,传感器集线器可能能够给所获得的传感器数据打上时间戳,响应于对传感器数据的查询而将这种数据提供给处理器电路2302,缓冲传感器数据,连续地将传感器数据流传输至处理器电路2302(包括一个或多个传感器2328中的每一传感器的单独流),基于预定义阈值或条件/触发器报告传感器数据,和/或其他类似数据处理功能。
在实施例中,存储器2306(又称为“存储器电路2306”等)可以是被配置为存储用于操作计算机装置2300的数据或逻辑的电路。存储器电路2306可以包括很多可以用于提供既定量的系统存储器的存储器装置。作为示例,存储器电路2306可以是任何适当类型、数量和/或组合的易失性存储器装置(例如,随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)等)和/或非易失性存储器装置(例如,只读存储器(ROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪速存储器、反熔丝等),可以按照已知的任何适当实施方式对存储器电路2306进行配置。在各种实施方式中,个体存储器装置可以由任何数量的不同封装类型形成,所述封装类型例如是单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装、双列直插存储器模块(DIMM)(例如微DIMM或迷你DIMM)和/或任何其他类似的存储器装置。为了提供对诸如数据、应用程序、操作系统等的信息的永久性存储,存储器电路2306可以包括一个或多个大容量存储装置,例如:固态盘驱动器(SSDD);闪存卡(例如SD卡、微SD卡、xD图片卡等)和USB闪存驱动器;与处理器电路2302相关联的管芯上存储器或寄存器(例如,在低功率实施方式中);微硬盘驱动器(HDD);来自和的三维交叉点(3D XPOINT)存储器等等。
在使用FPD的情况下,处理器电路2302和存储器电路2306(和/或数据存储电路2308)可以包括逻辑块或逻辑织构、存储单元、输入/输出(I/O)块和其他互连资源,其可以被编程以执行本文讨论的示例性实施例的各种功能。可以使用存储单元将数据存储在查找表(LUT)中,该查找表可以被处理器电路2302用来实施各种逻辑功能。存储单元可以包括各种级别的存储器/储存器的任何组合,所述存储器/储存器包括但不限于EPROM、EEPROM、闪存、SRAM、反熔丝等。
在实施例中,具有共享的或者各自的控制器的数据存储电路2308(又称为“存储电路2308”等)可以提供对诸如模块2310、操作系统等的信息的永久性存储。数据存储电路2308可以被实施为:固态驱动器(SSD);固态盘驱动器(SSDD);串行AT附接(SATA)存储器装置(例如,SATA SSD);闪存驱动器;闪存卡(例如SD卡、微SD卡、xD图片卡等)和USB闪存驱动器;三维交叉点(3D Xpoint)存储器装置;与处理器电路2302相关联的管芯上存储器或寄存器;硬盘驱动器(HDD);微HDD;电阻变化存储器;相变存储器;全息存储器;或者化学存储器;以及其他。如图所示,数据存储电路2308被包含到计算机装置2300中;然而,在其他实施例中,数据存储电路2308可以被实施为与计算机装置2300的其他元件分开的一个或多个装置。
在一些实施例中,数据存储电路2308可以包括操作系统(OS)(未示出),其可以是通用操作系统或者专门为计算机装置2300写出或定制的操作系统。OS可以包括一个或多个驱动程序、库和/或应用编程接口(API),其提供代码和/或软件部件,以便模块2310和/或控制系统配置控制和/或获得/处理来自一个或多个传感器2328的数据。
模块2310可以是用于执行计算机装置2300的各种功能和/或实施本文讨论的实施例的功能的软件模块/部件。在处理器电路2302和存储器电路2306包括硬件加速器(例如,FPGA单元、硬件加速器2304)以及处理器核的实施例中,可以采用用以执行本文的实施例的至少一些功能的逻辑单元(替代要由处理器核心执行的编程指令的采用)对硬件加速器(例如,FPGA单元)进行预先配置(例如,借助于适当的位流、逻辑块/织构等)。例如,模块2310可以包括用于关于显示屏2330、屏上输入装置、屏上输入接口控制器2318、屏外输入装置、发送器2326和接收器2324所讨论的对应实体的逻辑单元。
计算机装置2300的部件可以通过系统总线2336相互通信。系统总线2336可以包括任何数量的技术,例如本地互连网络(LIN);工业标准架构(ISA);扩展ISA(EISA);PCI;扩展PCI(PCIx);PCIe;集成电路间(I2C)总线;并行小型计算机系统接口(SPI)总线;通用应用编程接口(CAPI);点对点接口;电力总线;专有总线,例如,超路径接口(UPI)、加速器链路(IAL)或者基于SoC的接口中使用的某种其他专有总线;或者任何数量的其他技术。在一些实施例中,系统总线2336可以是控制器局域网(CAN)总线系统、时间触发协议(TTP)系统或者FlexRay系统,其可以允许各种装置(例如,一个或多个传感器2328等)使用消息或帧相互通信。
通信电路2316可以包括用于与无线网络或有线网络通信的电路。例如,通信电路2316可以包括收发器(Tx)2318和网络接口控制器(NIC)2320。通信电路2316可以包括专用于特定无线通信协议的一个或多个处理器(例如,基带处理器、调制解调器等)。
可以包括NIC 2320,以提供通往网络和/或其他装置的有线通信链路。有线通信可以提供以太网连接和/或USB上以太网等,或者可以基于其他类型的网络,例如DeviceNet、ControlNet、Data Highway+、PROFIBUS或PROFINET以及很多其他网络。可以包括额外的NIC2320,以允许连接至第二网络(未示出)或其他装置,例如,第一NIC 2320通过以太网提供与网络150的通信,并且第二NIC 2320通过另一种类的网络提供与其他装置的通信,例如,所述另一种类的网络是包括个人计算机(PC)装置的个域网(PAN)。在一些实施例中,装置2300的各种部件(例如,一个或多个传感器2328等)可以经由如上文讨论的NIC 2320而非经由如下文讨论的I/O电路2322连接至处理器2302。
Tx 2318可以包括一个或多个无线电装置,以与网络和/或其他装置无线通信。Tx2318可以包括能够通过固态或非固态介质使用调制的电磁辐射与有线网络和/或其他装置通信的硬件装置。这样的硬件装置可以包括交换机、滤波器、放大器、天线元件等,以通过生成或者以其他方式产生无线电波以向一个或多个其他装置发送数据,并且将所接收到的信号转换成可以被提供给计算机装置2300的一个或多个其他部件的可用信息(例如数字数据),来促进空中通信(OTA)。在一些实施例中,装置2300的各种部件(例如,一个或多个传感器2328等)可以经由如上文讨论的Tx 2318而非经由如下文讨论的I/O电路2322连接至装置2300。在一个示例中,一个或多个传感器2328可以经由短程通信协议与装置2300耦合。
Tx 2318可以包括一个或多个无线电装置,其与任何数量的3GPP(第三代合作伙伴计划)规约兼容,尤其是与长期演进(LTE)、高级长期演进(LTE-A)、专业高级长期演进(LTE-A Pro)和第五代(5G)新空口(NR)兼容。应当注意,可以选择与任何数量的其他固定、移动或卫星通信技术和标准兼容的无线电装置。这些技术和标准可以包括(例如)任何蜂窝广域网无线电通信技术,其可以包括(例如)5G通信系统、全球移动通信系统(GSM)无线电通信技术、通用分组无线电服务(GPRS)无线电通信技术或者增强型数据速率GSM演进(EDGE)无线电通信技术。其他可以使用的第三代合作伙伴计划(3GPP)无线电通信技术包括UMTS(通用移动电信系统)、FOMA(自由多媒体接入)、3GPP LTE(长期演进)、高级3GPP LTE(高级长期演进)、专业高级3GPP LTE(专业高级长期演进)、CDMA2000(码分多址2000)、CDPD(蜂窝数字分组数据)、Mobitex、3G(第三代)、CSD(电路交换数据)、HSCSD(高速电路交换数据)、UMTS(3G)(通用移动电信系统(第三代))、W-CDMA(UMTS)(宽带码分多址(通用移动电信系统))、HSPA(高速分组接入)、HSDPA(高速下行链路分组接入)、HSUPA(高速上行链路分组接入)、HSPA+(高速分组接入加)、UMTS-TDD(通用移动电信系统—时分复用)、TD-CDMA(时分—码分多址)、TD-SCDMA(时分—同步码分多址)、第8版3GPP(Pre-4G)(第8版第三代合作伙伴计划(预4代))、第9版3GPP(第9版第三代合作伙伴计划)、第10版3GPP(第10版第三代合作伙伴计划)、第11版3GPP(第11版第三代合作伙伴计划)、第12版3GPP(第12版第三代合作伙伴计划)、第13版3GPP(第13版第三代合作伙伴计划)、第14版3GPP(第14版第三代合作伙伴计划)、3GPP LTE Extra、LTE许可辅助接入(LAA)、UTRA(UMTS陆地无线电接入)、E-UTRA(演进的UMTS陆地无线电接入)、高级LTE(4G)(高级长期演进(第四代))、cdmaOne(2G)、CDMA2000(3G)(码分多址2000(第三代))、EV-DO(演进数据优化或者唯独演进数据)、AMPS(1G)(高级移动电话系统(第一代))、TACS/ETACS(全接入通信系统/扩展全接入通信系统)、D-AMPS(2G)(数字AMPS(第二代))、PTT(即按即说)、MTS(移动电话系统)、IMTS(改进的移动电话系统)、AMTS(高级移动电话系统)、OLT(挪威语Offentlig Landmobil Telefoni,公共陆地移动电话)、MTD(Mobiltelefonisystem D的瑞典语缩写,移动电话系统D)、Autotel/PALM(公用自动陆地移动)、ARP(Finnish for Autoradiopuhelin“车用无线电电话”)、NMT(北欧移动电话)、Hicap(NTT(日本电报电话公司)的高容量版本)、CDPD(蜂窝数字分组数据)、Mobitex、DataTAC、iDEN(集成数字增强网络)、PDC(个人数字蜂窝)、CSD(电路交换数据)、PHS(个人手提电话系统)、WiDEN(宽带集成数字增强网络)、iBurst、免许可移动接入(UMA,又称为3GPP通用接入网络或GAN标准)、无线吉比特联盟(WiGig)标准、通用的毫米波标准(在10-90Ghz及以上操作的无线系统,例如WiGig、IEEE 802.11ad、IEEE 802.11ay)等等。除了上文列举的标准之外,可以将任何数量的卫星上行链路技术用于上行链路收发器,包括(例如)符合ITU(国际电信联盟)或ETSI(欧洲电信标准机构)发布的标准及其他标准的无线电。因而,本文提供的示例被理解为适用于各种其他通信技术,既包括现有的,也包括尚未创制的。上文提及协议的实施、部件和细节可以是本领域已知的那些,并且本文为了简单起见而将其省略。
输入/输出(I/O)接口2322可以包括用于使计算机装置2300与外部部件/装置(例如一个或多个传感器2328等)连接的电路,例如外部扩展总线(例如,通用串行总线(USB)、FireWire、Thunderbolt、PCI/PCIe/PCIx等)。I/O接口电路2322可以包括任何适当的接口控制器和连接器,以对处理器电路2302、存储器电路2306、数据存储电路2308、通信电路2316和计算机装置2300的其他部件中的一者或多者进行互连。接口控制器可以包括但不限于存储器控制器、储存器控制器(例如,独立磁盘冗余阵列(RAID)控制器)、基板管理控制器(BMC)、输入/输出控制器、主机控制器等。连接器可以包括(例如)总线(例如,总线2336)、端口、插槽、跳线、互连模块、插孔、模块化连接器等。I/O电路2322可以使装置2300经由有线连接与一个或多个传感器2328等耦合,所述有线连接例如是使用USB、FireWire、Thunderbolt、RCA、视频图形阵列(VGA)、数字视频接口(DVI)和/或迷你DVI、高清晰度多媒体接口(HDMI)、S-Video和/或类似物。
一个或多个传感器2328可以是任何装置,其被配置为检测事件或环境变化,将检测到的事件转化成电信号和/或数字数据,并且将信号/数据发送/传送至计算机装置2300。一个或多个传感器2328中的一些可以是用于提供计算机生成的感测输入的传感器。一个或多个传感器2328中的一些可以是用于运动和/或物体检测的传感器。这样的一个或多个传感器2328的示例尤其可以包括电荷耦合装置(CCD)、互补金属氧化物半导体(CMOS)有源像素传感器(APS)、无镜头图像拍摄装置/相机、热图(红外)相机、光成像检测和测距(LIDAR)系统和/或类似装置。在一些实施方式中,一个或多个传感器2328可以包括无镜头图像拍摄机制,其包括光圈元件的阵列,其中,通过光圈元件阵列的光定义了图像的像素。在运动检测的实施例中,可以使一个或多个传感器2328与光生成装置(例如,用以将红外光的网格投射到场景上的一个或多个红外投射器)耦合或者相关联,其中,红外相机可以记录反射的红外光,以计算深度信息。
一个或多个传感器2328中的一些可以用于位置和/或取向检测、周边/环境条件检测等等。这样的一个或多个传感器2328的示例尤其可以包括具有压电、压阻和/或电容部件的微机电系统(MEMS),其可以用于确定与计算机装置2300有关的环境条件或位置信息。在实施例中,MEMS可以包括3轴加速度计、3轴陀螺仪和/或磁力计。在一些实施例中,一个或多个传感器2328还可以包括一个或多个重力计、高度计、气压计、接近传感器(例如,红外辐射探测器等)、深度传感器、环境光传感器、热传感器(温度计)和/或超声波收发器和/或类似装置。
这些元件中的每者,例如,一个或多个处理器2302、硬件加速器2304、存储器2306、包括模块2310的数据存储电路2308、输入/输出接口2322、一个或多个传感器2328、包括Tx2318的通信电路2316、NIC 2320、系统总线2336、I/O总线2338、装置2312、装置2332可以执行其在本领域已知的常规功能。此外,可以采用它们存储实施各种操作系统功能和/或应用程序的编程指令(尤其是与上文联系附图描述的安全流技术相关联的操作)以及托管所述指令的执行。各种元件可以是通过由处理器2302支持的汇编指令或者能够被编译成这样的指令的高级语言(例如,C)实施的。未通过软件实施的与装置2300相关联的操作可以通过硬件实施,例如,经由硬件加速器2304和/或固件来实施。
这些元件2302-2338的数量、能力和/或容量可以根据装置2300被配置为支持的其他装置的数量而变化。在其他方面,元件2302-2338的构造是已知的,并且相应地将不再对其做进一步描述。
本领域技术人员应当认识到,本公开可以被体现为方法或者计算机程序产品。相应地,本公开除了如较早所述通过硬件体现之外,还可以采取完全软件实施例(包括固件、驻留软件、伪代码等)的形式或者合并了软件方面和硬件方面的实施例的形式,它们可以被概括地称为“电路”、“模块”或“系统”。
此外,本公开可以采取体现在任何有形的或非暂态表现介质中的计算程序产品的形式,所述介质中具有体现在所述介质中的计算机可用程序代码。图24示出了可以适于用来存储指令的示例性计算机可读非暂态存储介质2400,所述指令响应于其被设备执行而使该设备实践本公开的选定方面。如图所示,非暂态计算机可读存储介质2402可以包括许多编程指令2404(本文中又称为“指令”)。编程指令2404可以被配置为使装置(例如,装置2300)能够响应于编程指令的运行而执行(例如)与操作系统功能和/或应用程序相关联的各种编程操作,尤其是与上文参考附图描述的安全流技术相关联的操作。
在替代实施例中,编程指令2404可以被转而设置到多个计算机可读非暂态存储介质2402上。在替代实施例中,编程指令2404可以被设置到计算机可读暂态存储介质2402(例如,信号)上。可以利用一个或多个计算机可用或计算机可读介质的任何组合。例如,计算机可用或者计算机可读介质可以是(例如,但不限于)电子、磁、光学、电磁、红外或半导体系统、设备、装置或者传播介质。计算机可读介质的更具体的示例(非排他列表)将包括下述选项:具有一条或多条导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光学存储装置、传输介质(例如,那些支持互联网或内联网的传输介质)或者磁存储装置。注意,计算机可用或计算机可读介质甚至可以是程序打印于其上的纸张或者其他合适的介质,因为能够经由(例如)对该纸张或其他介质的光学扫描以电子方式俘获该程序,之后按照适当方式对其进行编译、解释或其他处理(如果必要的话),并且之后将其存储到计算机存储器中。在本文的语境下,计算机可用或计算机可读介质可以是任何可以含有、存储、传达、传播或转移程序的介质,所述程序供指令执行系统、设备或装置使用或者与指令执行系统、设备或装置结合使用。计算机可用介质可以包括处于基带中或者作为载波的部分的所传播的数据信号,该信号具有借助于其体现的计算机可用程序代码。可以使用任何适当介质发送计算机可用程序代码,所述介质包括但不限于无线、有线线路、光纤光缆、RF等。
图25是示出了根据一个或多个实施例的包括处理器的计算系统的另一实施例的块图。根据本公开,例如,在本文描述的实施例中,系统2500包括用以采用包括逻辑单元的执行单元来执行用于过程数据的算法的部件,例如,处理器2502。系统2500代表基于可从加利福尼亚圣克拉拉的Intel公司获得的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,尽管也可以使用其他系统(包括具有其他微处理器的PC、工程设计工作站、机顶盒等)。在一个实施例中,示例性系统2500执行可从华盛顿雷德蒙德的Microsoft公司获得的WINDOWSTM操作系统的版本,尽管也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因而,本公开的实施例不限于任何具体的硬件电路和软件的组合。
实施例不限于计算机系统。本公开的替代实施例可以被用到其他装置中,例如用到手提式装置和嵌入式应用中。手提式装置的一些示例包括蜂窝电话、互联网协议装置、数字相机、个人数字助理(PDA)和手提式PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统(SoC)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机或者能够执行根据至少一个实施例的一条或多条指令的任何其他系统。
在这一例示实施例中,处理器2502包括一个或多个执行单元2508,以实施将执行至少一条指令的算法。一个实施例可以是在单处理器台式机或服务器系统的语境下描述的,但是替代实施例可以被包含到多处理器系统中。系统2500是“集线器”系统架构的示例。计算机系统2500包括用以处理数据信号的处理器2502。作为一个说明性示例,处理器2502包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实施指令集的组合的处理器、或者任何其他处理器装置,例如数字信号处理器等。处理器2502耦合至处理器总线2510,处理器总线2510在处理器2502和系统2500中的其他部件之间发送数据信号。系统2500的元件(例如,图形加速器2512、存储器控制器集线器2516、存储器2520、I/O控制器集线器2530、无线收发器2526、闪存BIOS 2528、网络控制器2534、音频控制器2536、串行扩展端口2538、具有用户输入接口2542的旧式I/O控制器2540)执行它们的对于熟知本领域的技术人员而言公知的常规功能。
在一个实施例中,处理器2502包括1级(L1)内部高速缓存存储器2504。取决于架构,处理器2502可以具有单个内部高速缓存或者多级内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存的组合,其取决于特定实施方式和需求。寄存器堆2506将不同类型的数据存储到各种寄存器中,所述寄存器包括整数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子寄存器、检查点寄存器、状态寄存器和指令指针寄存器。
执行单元2508(包括用以执行整数和浮点运算的逻辑单元)也驻留在处理器2502中。在一个实施例中,处理器2502包括用以存储微码的微码(μcode)ROM,所述微码在被运行时执行用于某些宏指令的算法或者处理复杂情形。这里,微码有可能是可更新的,以处理处理器2502的逻辑漏洞/修复。对于一个实施例,执行单元2508包括用以处理打包指令集2509的逻辑单元。通过将打包指令集2509包括到通用处理器2502(连同用以执行所述指令的相关联的电路)的指令集中,可以使用通用处理器2502中的打包数据执行很多多媒体应用程序所使用的操作。因而,可以通过使用处理器的数据总线的整个宽度对打包数据执行操作而对很多多媒体应用程序进行加速以及更有效率地执行这些应用程序。这样做有可能消除为了执行一个或多个操作而一次一个数据元地跨越处理器的数据总线传输更小的数据单位的必要性。
执行单元2508的替代实施例还可以被用到微控制器、嵌入式处理器、图形装置、DSP和其他类型的逻辑电路中。系统2500包括存储器2520。存储器2520包括动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置或者其他存储器装置。存储器2520存储通过数据信号表示的将由处理器2502执行的指令和/或数据。
注意,本文描述的实施例的任何前述特征或方面可以被用到图25中所示的一个或多个互连上。例如,用于耦合处理器2502的内部单元的管芯上互连(ODI)(未示出)实施上文描述的实施例的一个或多个方面。或者,这些实施例与下述各项相关联:处理器总线2510(例如,Intel快速路径互连(QPI)或其他已知高性能计算互连)、通往存储器2520的高带宽存储器路径2518、通往图形加速器2512的点对点链路(例如,符合外围部件互连高速(PCIe)的织构)、控制器集线器互连2522、用于耦合其他所示部件的I/O或其他互连(例如,USB、PCI、PCIe)。这样的部件的一些示例包括音频控制器2536、固件集线器(闪存BIOS)2528、无线收发器2526、数据储存器2524、含有用户输入和键盘接口2542的旧式I/O控制器2540、串行扩展端口(例如,通用串行总线(USB))和网络控制器2534。数据存储装置2524可以包括硬盘驱动器、软盘驱动器、CD-ROM装置、闪速存储器装置或者其他大容量存储装置。
图26是根据一个或多个实施例的根据本公开的至少一个实施例的示例性计算机架构2600的块图。图26示出了根据实施例的按照点对点(PtP)配置布置的另一计算装置2600,其中,一个或多个互连实施根据本公开的至少一个实施例的一个或多个特征。具体而言,图26示出了一种系统,其中,处理器、存储器和输入/输出装置通过许多点对点接口而互连。一般地,本文描述的计算系统或者计算装置中的一者或多者可以按照与计算系统2600相同或类似的方式配置。
处理器2670和2680可以被实施成单核处理器2674a和2684a或者多核处理器2674a-2674b和2684a-2684b。处理器2670和2680可以均包括由其相应的一个或多个核心使用的高速缓存2671和2681。共享高速缓存(未示出)可以包括在任一处理器中,或者包括在两个处理器外,但是经由P-P互连与处理器连接,使得在处理器被置于低功率模式时任一处理器或两个处理器的本地高速缓存信息可以被存储到共享高速缓存中。
处理器2670和2680还可以均包括集成存储器控制器逻辑单元(MC)2672和2682,以与存储器元件2632和2634通信,存储器元件2632和2634可以是本地附接至相应处理器的主存储器的部分。在替代实施例中,存储器控制器逻辑单元2672和2682可以是与处理器2670和2680分开的分立逻辑单元。存储器元件2632和/或2634可以存储处理器2670和2680实现本文概述的操作和功能所使用的各种数据。
处理器2670和2680可以是任何类型的处理器,例如本文联系其他附图讨论的那些处理器。处理器2670和2680可以分别使用点对点接口电路2678和2688经由点对点(PtP)接口2650交换数据。处理器2670和2680可以均使用点对点接口电路2676、2686、2694和2698经由个体点对点接口2652和2654与输入/输出(I/O)子系统2690交换数据。I/O子系统2690(在至少一个实施例中可以是芯片组)可以使用接口电路2692(可以是PtP接口电路)经由高性能图形接口2639与高性能图形电路2638交换数据。在一个实施例中,高性能图形电路2638是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器、或类似装置。I/O子系统2690还可以与显示器2616通信,以显示可由人类用户查看的数据。在替代实施例中,图26所示的PtP链路中的任何或者全部可以被实施成多点总线而非PtP链路。
I/O子系统2690可以经由接口电路2696与总线2610通信。总线2610可以使一个或多个装置(例如总线桥2618和I/O装置2614)通过其通信。经由总线2610,总线桥2618可以与其他装置通信,例如,所述其他装置为用户接口2622(例如键盘、鼠标、触摸屏或其他输入装置)、通信装置2626(例如调制解调器、网络接口装置或其他类型的可以通过计算机网络2660通信的通信装置)、音频I/O装置2624和/或数据存储装置2628。数据存储装置2628可以存储可以由处理器2670和/或2680执行的代码和数据2630。在替代实施例中,可以借助于一条或多条PtP链路实施总线架构的任何部分。
图26所示的计算机系统是可以用于实施本文讨论的各种实施例的计算系统的实施例的示意图。应当认识到,图26所示的系统的各种部件可以被组合到片上系统(SoC)架构中,或组合到能够实现本文提供的示例和实施方式的功能和特征的任何其他适当的配置中。
用于实施本公开的至少一些操作的计算机程序代码可以是通过一种或多种编程语言的任意组合编写的,所述语言包括面向对象的编程语言(例如Java、Smalltalk、C++等)以及常规过程编程语言(例如“C”编程语言或类似编程语言)。程序代码可以完全在用户的计算机上、部分地在用户的计算机上、作为独立软件包、部分地在用户的计算机上并且部分地在远程计算机上或者完全在远程计算机或服务器上运行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户的计算机,或者可以实施与外部计算机的连接(例如,使用Internet服务提供商通过Internet)。
将参考根据本公开的实施例的方法、设备(系统)和计算机程序产品的流程图和/或块图描述本公开。应当理解,流程图和/或块图的每一块以及流程图和/或块图中的块的任何组合可以通过计算机程序指令实施。这些计算机程序指令可以被提供给通用计算机、专用计算机或者其他可编程数据处理设备的处理器,以产生一种机器,使得所述指令在经由所述计算机或其他可编程数据处理设备的处理器执行时,创建用于实施在所述流程图和/或块图的一个或多个块中指定的功能/动作的模块。
这些计算机程序指令还可以被存储到计算机可读介质中,这些指令能够指引计算机或其他可编程数据处理设备按照特定的方式发挥作用,使得存储在计算机可读介质中的指令产生包括指令模块的制品,所述指令模块实施流程图和/或块图的一个或多个块中指定的功能/动作。
计算机程序指令还可以被加载到计算机或其他可编程数据处理设备上,从而使一系列操作步骤在该计算机或其他可编程设备上得以执行,以产生计算机实施的过程,使得在该计算机或其他可编程设备上执行指令时,所述指令提供用于实施在流程图和/或块图的一个或多个块中指定的功能/动作。
附图中的流程图和块图示出了根据本公开的各种实施例的系统、设备、计算机可读介质、方法和计算机程序产品的可能实施方式的架构、功能和操作。就此而言,流程图或块图中的每一块可以表示代码和/或硬件的模块、区段或部分,其包括用于实施指定逻辑功能的一条或多条可执行指令。还应该指出的是,在一些替代实施方式中,块中指出的功能可能不按附图中指出的顺序发生。例如,被示为相继的两个块实际上可以是基本上同时执行的,或者这两个块有时可以是按照相反顺序执行的,具体取决于所涉及的功能。还应当指出,块图和/或流程图中的每一块以及块图和/或流程图中的块的组合可以是通过执行指定的功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实施的。如本文所用,“计算机实施的方法”可以指由一个或多个处理器、具有一个或多个处理器的计算机系统、诸如智能电话的移动装置(其可以包括一个或多个处理器)、平板电脑、膝上型计算机、机顶盒、游戏控制台等执行的任何方法。
一个或多个实施例可以被实施成计算机过程、计算系统或者制品,例如,具有计算机可读介质的计算机程序产品。计算机程序产品可以是可由计算机系统读取并且编码了用于执行计算机过程的计算机程序指令的计算机存储介质。
意在使下文的权利要求中的所有模块或步骤加功能元件的对应结构、材料、动作和等价方案包括用于与专门要求保护的其他要求保护的元件相结合来执行功能的任何结构、材料或动作。出于例示和说明的目的介绍了对本公开的描述,但是无意使其具有排他性或者以所公开的形式局限于本公开。很多修改和变化对于本领域普通技术人员而言将是显而易见的,而不背离本公开的范围和精神。选择和描述实施例是为了对本公开的原理和实际应用做出最佳阐释,并且使本领域普通技术人员能够理解本公开,以获得具有适于所设想的特定用途的各种修改的实施例。
前文对一种或多种实施方式的说明提供了图示和描述,但是并非意在具有排他性,也并非意在使实施例的范围局限于所公开的确切形式。根据上述教导可能存在各种修改和变化,或者可以由对各种实施例的实践取得各种修改和变化。
已经描述了本公开的各种示例性实施例,其包括但不限于:
示例X01可以包括一种设备,其包括:用于管理通过计算机总线的完整性和数据加密(IDE)的模块。
示例X02可以包括示例1和/或本文的一些其他示例的设备,其中,所述计算机总线包括PCI相关总线。
示例X03可以包括示例1和/或本文的一些其他示例的设备,其中,所述的用于管理IDE的模块包括分组结构、端口级机制、配置寄存器或者用于计算机总线的操作规则。
示例Z01可以包括一种设备,其包括用以执行在本文的任何示例中描述的或者与本文的任何示例相关的方法或者本文描述的任何其他方法或过程的一个或多个要素。
示例Z02可以包括一种或多种包括指令的非暂态计算机可读介质,在所述指令被电子装置的一个或多个处理器执行时,所述指令使得该电子装置执行在本文的任何示例中描述的或者与本文的任何示例相关的方法或者本文描述的任何其他方法或过程的一个或多个要素。
示例Z03可以包括一种设备,其包括用以执行在本文的任何示例中描述的或者与本文的任何示例相关的方法或者本文描述的任何其他方法或过程的一个或多个要素的逻辑单元、模块或电路。
示例Z04可以包括在本文的任何示例中描述的或者与本文的任何示例相关的方法、技术或过程或者其部分或片段。
示例Z05可以包括一种设备,其包括:一个或多个处理器以及一种或多种包括指令的计算机可读介质,所述指令在被一个或多个处理器执行时使得所述一个或多个处理器执行本文的任何示例中描述的或者与本文的任何示例相关的方法、技术或过程或者其部分。
示例Z06可以包括在本文的任何示例中描述的或者与本文的任何示例相关的信号或者其部分或片段。
示例1是一种设备,其包括:用于对安全流事务的链路伙伴的身份进行认证的加密引擎;以及包括硬件电路的事务层逻辑单元,所述硬件电路用于:用完整性保护对事务层分组(TLP)进行编码和/或用数据加密对TLP的数据有效载荷加密,以形成安全TLP;使安全TLP与安全流相关联;以及将安全TLP跨越安全流发送至链路伙伴。
示例2可以包括示例1的主题,并且还可以包括:事务层逻辑电路,其用于读取扩展能力寄存器;并且确定该设备和链路伙伴支持完整性保护和数据加密用于TLP编码。
示例3可以包括示例2的主题,并且还可以包括:事务层逻辑电路,其用于在控制寄存器中设置,以指示该设备和链路伙伴支持使用完整性保护或数据加密的安全流。
示例4可以包括示例1-3中的任何示例的主题,其中,事务层逻辑单元用安全流编号对安全TLP编码,安全流编号是安全TLP将渡越的安全流所特有的。
示例5可以包括示例1-4中的任何示例的主题,并且还可以包括:加密引擎,其包括用于对TLP加密的硬件电路。
示例6可以包括示例5的主题,其中,加密引擎使用基于美国加密标准计数器(AES-CTR)加密协议的加密标准。
示例7包括示例1-6中的任何示例的主题,并且还可以包括:数据完整性保护引擎,其包括用于对TLP实施数据完整性保护的硬件电路。
示例8包括示例7的主题,其中,数据完整性保护引擎使用基于伽罗瓦消息认证码(GMAC)协议的完整性协议。
示例9包括示例1-9中的任何示例的主题,并且还可以包括用于用前缀对TLP编码的事务层逻辑电路,该前缀指示TLP包括完整性保护或数据加密之一或两者。
示例10包括示例9的主题,其中,前缀包括L位,该L位在被置位时指示TLP是该安全流上的最后一个安全TLP,并且在该安全流上接收的后续TLP将具有新的加密秘钥集。
示例11可以包括示例9-10中的任何示例的主题,其中,前缀包括M位,该M位在被置位时指示TLP包括消息认证码(MAC)。
示例12可以包括示例1-11中的任何示例的主题,其中,安全流包括一个或多个子流,一个或多个安全子流包括用于已发布请求、未发布请求或完成的安全子流。
示例13可以包括示例12的主题,还包括:事务层逻辑电路,其用于为安全流中的每一安全子流提供用于数据加密的计数器块和用于完整性保护的计数器块。
示例14可以包括示例1-13中的任何示例的主题,并且还可以包括:事务层逻辑电路,其用于确定TLP将通过交换机复合体渡越至链路伙伴;以及用完整性保护对安全流的每一TLP编码和/或对安全流的每一TLP的数据有效载荷加密。
示例15可以包括示例1-14中的任何示例的主题,并且还可以包括事务层逻辑电路,其用于确定TLP将在不横越交换机复合体的情况下发送至链路伙伴;以及选择性地对安全流中的一个或多个TLP编码和/或选择性地对一个或多个TLP的数据有效载荷加密。
示例16是一种方法,其包括:通过装置的协议栈的事务层处的逻辑电路确定分组将在安全流上横越至链路伙伴;对链路伙伴的接收端口进行认证;将事务层分组(TLP)前缀配置为将该TLP识别为安全TLP;使安全TLP与安全流相关联;对安全TLP应用完整性保护和/或数据加密;以及跨越安全流将安全TLP发送至链路伙伴。
示例17可以包括示例16的主题,并且还可以包括使该安全流与认证密钥相关联;以及使认证密钥与密钥标识符(密钥ID)相关联,密钥ID是数据加密和完整性保护中的每者所特有的。
示例18可以包括示例16-17中的任何示例的主题,其中,使安全TLP与安全流相关联包括使安全TLP与安全流编号相关联,安全流编号被编码到TLP前缀中。
示例19可以包括示例16-18中的任何示例的主题,其中,使用高级加密标准计数器模式(AES-CTR)加密执行数据加密。
示例20可以包括示例16-19中的任何示例的主题,其中,使用伽罗瓦消息认证码(GMAC)执行完整性保护。
示例21是一种系统,其包括:包括根端口的根复合体;包括上游端口的端点装置;以及使根端口与上游端口耦合的互连。根端口可以包括具有事务层的协议栈,所述事务层包括硬件电路,该硬件电路用于:用安全TLP前缀对事务层分组(TLP)编码,安全TLP前缀指示TLP将在安全流上渡越互连;使TLP与安全流相关联;执行对TLP的数据有效载荷的数据加密或者对TLP的完整性保护之一或两者;以及将TLP发送至端点装置。
示例22可以包括示例21的主题,其中,根端口直接链接至上游端口,并且其中,安全TLP前缀包括本地TLP前缀。
示例23可以包括示例22的主题,其中,使TLP与安全流相关联包括将TLP报头中的安全流标识符设置为零。
示例24可以包括示例21的主题,还包括:交换机复合体,其包括耦合至上游端口的下游交换机端口和耦合至根端口的上游交换机端口,事务层包括硬件电路,该硬件电路用于基于请求方标识符(RID)和地址关联寄存器设置确保要通过交换机复合体传输至端点的TLP的安全。
示例25可以包括示例21的主题,其中,安全TLP前缀可以包括指示安全流中的最后一个TLP的第一位;指示TLP是否源自于受信任环境的第二位;指示TLP包括消息认证码(MAC)的第三位;以及指示用于未发布请求和完成的TLP计数的计数器值。
示例26是一种设备,其包括用于下述操作的模块:用完整性保护对事务层分组(TLP)进行编码和/或用数据加密对TLP的数据有效载荷加密,以形成安全TLP;使安全TLP与安全流相关联;以及跨越安全流将安全TLP发送至链路伙伴。
示例27可以包括示例26的主题,并且还可以包括用于下述操作的模块:读取扩展能力寄存器;并且确定该设备和链路伙伴支持用于TLP编码的完整性保护和数据加密。
示例28可以包括示例27的主题,并且还可以包括用于下述操作的模块:在控制寄存器中进行设置,以指示该设备和链路伙伴支持使用完整性保护或数据加密的安全流。
示例29可以包括示例26-28中的任何示例的主题,其中,事务层逻辑单元用安全流编号对安全TLP编码,安全流编号是该安全TLP将渡越的安全流所特有的。
示例30可以包括示例26-29中的任何示例的主题,并且还可以包括具有用于对TLP加密的硬件电路的加密引擎。
示例31是一种存储指令的非暂态计算机可读介质,所述指令在被执行时使硬件过程执行操作,所述操作包括:通过装置的协议栈的事务层处的逻辑电路确定分组将在安全流上横越至链路伙伴;对链路伙伴的接收端口进行认证;将事务层分组(TLP)前缀配置为将该TLP识别为安全TLP;使安全TLP与安全流相关联;对安全TLP应用完整性保护和数据加密;以及跨越安全流将安全TLP发送至链路伙伴。
示例32可以包括示例31的主题,并且还可以包括:使安全流与认证密钥相关联;以及使认证密钥与密钥标识符(密钥ID)相关联,密钥ID是数据加密和完整性保护中的每者所特有的。
示例33可以包括示例31的主题,其中,使安全TLP与安全流相关联包括使安全TLP与安全流编号相关联,安全流编号被编码到TLP前缀中。
前文对一种或多种实施方式的说明提供了图示和描述,但是并非意在具有排他性,也并非意在使实施例的范围局限于所公开的确切形式。根据上述教导可能存在各种修改和变化,或者可以从对各种实施例的实践取得各种修改和变化。
Claims (25)
1.一种设备,包括:
包括硬件电路的事务层逻辑单元,所述硬件电路用于:
使安全TLP与安全流相关联;
用完整性保护对事务层分组(TLP)进行编码,并且用数据加密对所述TLP的数据有效载荷进行加密,以形成所述安全TLP;以及
跨越所述安全流将所述安全TLP发送至链路伙伴。
2.根据权利要求1所述的设备,还包括事务层逻辑电路,所述事务层逻辑电路用于:
读取指示支持IDE的能力的扩展能力寄存器;以及
确定所述设备和所述链路伙伴支持完整性保护和数据加密用于TLP编码。
3.根据权利要求2所述的设备,还包括事务层逻辑电路,所述事务层逻辑电路用于:
在控制寄存器中进行设置,以指示所述设备和所述链路伙伴支持使用完整性保护或数据加密的安全流。
4.根据权利要求1所述的设备,其中,所述事务层逻辑单元用安全流编号对所述安全TLP进行编码,所述安全流编号是所述安全TLP将渡越的所述安全流所特有的。
5.根据权利要求1所述的设备,还包括加密引擎,所述加密引擎包括用于对所述TLP加密的硬件电路。
6.根据权利要求5所述的设备,其中,所述加密引擎使用基于美国加密标准伽罗瓦计数器模式(AES-GCM)加密协议的加密标准。
7.根据权利要求1所述的设备,还包括数据完整性保护引擎,所述数据完整性保护引擎包括用于对所述TLP实施数据完整性保护的硬件电路。
8.根据权利要求7所述的设备,其中,所述数据完整性保护引擎使用基于美国加密标准伽罗瓦计数器模式(AES-GCM)协议的完整性协议。
9.根据权利要求1所述的设备,还包括事务层逻辑电路,所述事务层逻辑电路用于:
用指示所述TLP包括完整性保护和数据加密的信息来扩充所述TLP。
10.根据权利要求9所述的设备,其中,所述信息被包含在TLP前缀或TLP报头之一中。
11.根据权利要求9所述的设备,其中,所述信息包括L位,所述L位在被置位时指示所述TLP是所述安全流上的最后的安全TLP,并且在所述安全流上接收的后续TLP将具有新的加密秘钥集。
12.根据权利要求1所述的设备,其中,所述安全流包括一个或多个子流,所述一个或多个安全子流包括用于已发布请求、未发布请求或完成的安全子流。
13.根据权利要求12所述的设备,还包括事务层逻辑电路,所述事务层逻辑电路用于:
构建初始化向量(IV),所述初始化向量(IV)包括装置所特有的固定字段以及所要发送的数据所特有的调用字段。
14.根据权利要求13所述的设备,其中,所述IV包括96b IV,并且其中:
所述固定字段处于所述IV的位95:64中,其中,位95:92包括指示所述子流(根据上文的定义被编码)的固定值,并且
所述调用字段处于所述IV的位63:0中,其包含线性反馈移位寄存器的值,其中在位置64、63、61和60处的抽头最初被设置为值0000_0001h。
15.根据权利要求1所述的设备,还包括事务层逻辑电路,所述事务层逻辑电路用于:
确定所述TLP将在选择性安全流或者链路安全流上发送至链路伙伴;以及
选择性地对所述安全流中的一个或多个TLP进行编码,和/或选择性地对一个或多个TLP的数据有效载荷进行加密。
16.一种方法,包括:
由装置的协议栈的事务层处的逻辑电路确定分组将在安全流上被横越至链路伙伴;
对所述链路伙伴的接收部分进行认证;
将事务层分组(TLP)前缀配置为将所述TLP识别为安全TLP;
使所述安全TLP与所述安全流相关联;
对所述安全TLP应用完整性保护和数据加密;以及
跨越所述安全流将所述安全TLP发送至所述链路伙伴。
17.根据权利要求16所述的方法,还包括:
使所述安全流与认证密钥相关联;以及
使所述认证密钥与密钥标识符(密钥ID)相关联,所述密钥ID是数据加密和完整性保护中的每者所特有的。
18.根据权利要求16所述的方法,其中,使所述安全TLP与所述安全流相关联包括使所述安全TLP与安全流编号相关联,所述安全流编号被编码到所述TLP前缀中。
19.根据权利要求16所述的方法,其中,使用高级加密标准伽罗瓦计数器模式(AES-GCM)加密来执行所述数据加密。
20.根据权利要求16所述的方法,其中,使用美国加密标准伽罗瓦计数器模式(AES-GCM)完整性保护来执行所述完整性保护。
21.一种系统,包括:
包括根端口的根复合体;
包括上游端口的端点装置;
使所述根端口与所述上游端口耦合的互连;
所述根端口包括具有事务层的协议栈,所述事务层包括硬件电路,所述硬件电路用于:
用安全TLP前缀对事务层分组(TLP)进行编码,所述安全TLP前缀指示所述TLP将在安全流上渡越所述互连;
使所述TLP与所述安全流相关联;
对所述TLP的数据有效载荷执行数据加密,并且对所述TLP执行完整性保护;以及
将所述TLP发送至所述端点装置。
22.根据权利要求21所述的系统,其中,所述根端口直接链接至所述上游端口,并且其中,所述安全TLP前缀包括本地TLP前缀。
23.根据权利要求22所述的系统,其中,使所述TLP与所述安全流相关联包括将TLP报头中的安全流标识符设置为零。
24.根据权利要求21所述的系统,还包括交换机复合体,所述交换机复合体包括耦合至所述上游端口的下游交换机端口和耦合至所述根端口的上游交换机端口,所述事务层包括硬件电路,所述硬件电路用于基于请求方标识符(RID)和地址关联寄存器设置来确保要通过所述交换机复合体传输至所述端点的所述TLP的安全。
25.根据权利要求21所述的系统,其中,所述安全TLP前缀包括:
指示所述安全流中的最后的TLP的第一位;
指示所述TLP是否源自于受信任环境的第二位;
指示所述TLP包括消息认证码(MAC)的第三位;以及
指示用于未发布请求和完成的TLP计数的计数器值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962889948P | 2019-08-21 | 2019-08-21 | |
US62/889,948 | 2019-08-21 | ||
US16/740,373 | 2020-01-10 | ||
US16/740,373 US20200151362A1 (en) | 2019-08-21 | 2020-01-10 | Integrity and data encryption (ide) over computer buses |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112422492A true CN112422492A (zh) | 2021-02-26 |
Family
ID=70550565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010591835.4A Pending CN112422492A (zh) | 2019-08-21 | 2020-06-24 | 通过计算机总线的完整性和数据加密(ide) |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200151362A1 (zh) |
EP (1) | EP3783517A1 (zh) |
CN (1) | CN112422492A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022246614A1 (zh) * | 2021-05-24 | 2022-12-01 | 华为技术有限公司 | 一种数据传输的方法及装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11604671B2 (en) | 2020-03-19 | 2023-03-14 | Red Hat, Inc. | Secure virtual machine and peripheral device communication |
US11205003B2 (en) | 2020-03-27 | 2021-12-21 | Intel Corporation | Platform security mechanism |
US20210391978A1 (en) * | 2020-06-15 | 2021-12-16 | Microchip Technology Incorporated | Increased data integrity for authenticated encryption algorithms |
US20210089388A1 (en) * | 2020-07-14 | 2021-03-25 | Intel Corporation | System, Apparatus And Method For Providing Protection Against Silent Data Corruption In A Link |
US11328111B2 (en) | 2020-09-25 | 2022-05-10 | Intel Corporation | Broadcast remote sealing for scalable trusted execution environment provisioning |
US20210240655A1 (en) * | 2020-11-16 | 2021-08-05 | Intel Corporation | Source ordering in device interconnects |
US20210255973A1 (en) * | 2020-12-17 | 2021-08-19 | Intel Corporation | Stream routing and ide enhancements for pcie |
US20220207194A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Memory address bus protection for increased resilience against hardware replay attacks and memory access pattern leakage |
CN113110160B (zh) * | 2021-04-09 | 2023-03-21 | 黑芝麻智能科技(上海)有限公司 | 域控制器的时间同步方法、装置、域控制器和存储介质 |
CN114398216B (zh) * | 2022-02-15 | 2022-11-15 | 深圳市航顺芯片技术研发有限公司 | 链路控制方法、装置、系统、设备及可读存储介质 |
CN114826813A (zh) * | 2022-03-23 | 2022-07-29 | 北京全路通信信号研究设计院集团有限公司 | 一种多路数据可靠传输的设备、系统及方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102685562B (zh) * | 2005-03-14 | 2016-06-08 | 尼尔逊媒介研究股份有限公司 | 用于媒体信号的压缩域编码设备和方法 |
JP2006352676A (ja) * | 2005-06-17 | 2006-12-28 | Toshiba Corp | 情報処理装置およびその制御方法 |
JP4347350B2 (ja) * | 2007-02-15 | 2009-10-21 | 富士通株式会社 | データ暗号転送装置、データ復号転送装置、データ暗号転送方法およびデータ復号転送方法 |
US7793032B2 (en) * | 2007-07-11 | 2010-09-07 | Commex Technologies, Ltd. | Systems and methods for efficient handling of data traffic and processing within a processing device |
US8930609B2 (en) * | 2010-08-18 | 2015-01-06 | Intel Corporation | Method, apparatus, and system for manageability and secure routing and endpoint access |
US9747245B2 (en) * | 2014-12-17 | 2017-08-29 | Intel Corporation | Method, apparatus and system for integrating devices in a root complex |
US10181946B2 (en) * | 2015-07-20 | 2019-01-15 | Intel Corporation | Cryptographic protection of I/O data for DMA capable I/O controllers |
US20200089645A1 (en) * | 2018-09-14 | 2020-03-19 | Qualcomm Incorporated | Security techniques for a peripheral component interconnect (pci) express (pcie) system |
US11343093B2 (en) * | 2019-02-08 | 2022-05-24 | Fisher Controls International Llc | Methods and apparatus to broadcast data packets in a process control environment |
-
2020
- 2020-01-10 US US16/740,373 patent/US20200151362A1/en not_active Abandoned
- 2020-06-05 EP EP20178403.0A patent/EP3783517A1/en active Pending
- 2020-06-24 CN CN202010591835.4A patent/CN112422492A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022246614A1 (zh) * | 2021-05-24 | 2022-12-01 | 华为技术有限公司 | 一种数据传输的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200151362A1 (en) | 2020-05-14 |
EP3783517A1 (en) | 2021-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3706005B1 (en) | Secure stream protocol for serial interconnect | |
EP3783517A1 (en) | Integrity and data encryption (ide) over computer buses | |
US10755156B2 (en) | Configurable integrity protected link for secure accelerator communication | |
US11070527B2 (en) | Securing platform link with encryption | |
US20200328879A1 (en) | Secure communications over computer buses | |
US11394531B2 (en) | Overhead reduction for link protection | |
US11593529B2 (en) | Device interface security management for computer buses | |
US11533170B2 (en) | Hardware mechanisms for link encryption | |
US11088967B2 (en) | Shared resources for multiple communication traffics | |
JP6222802B2 (ja) | ランダム値生成方法およびシステム | |
US11809346B2 (en) | System architecture with secure data exchange | |
US9705916B2 (en) | Integrating wireless input functionality into secure elements | |
US11212671B2 (en) | Method and system for securing communication links using enhanced authentication | |
US11294846B2 (en) | System, apparatus and method for secure communication on a bus | |
CN111213129A (zh) | 用于第三方流量监控的不引人注意的支持 | |
US10877911B1 (en) | Pattern generation using a direct memory access engine | |
US20240106644A1 (en) | Mitigation of side channel attacks on platform interconnects using endpoint hardware based detection, synchronization and re-keying | |
US11991159B2 (en) | Bi-directional encryption/decryption device for underlay and overlay operations |
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 |