CN111666246A - 用于串行互连的安全流协议 - Google Patents

用于串行互连的安全流协议 Download PDF

Info

Publication number
CN111666246A
CN111666246A CN202010151771.6A CN202010151771A CN111666246A CN 111666246 A CN111666246 A CN 111666246A CN 202010151771 A CN202010151771 A CN 202010151771A CN 111666246 A CN111666246 A CN 111666246A
Authority
CN
China
Prior art keywords
transaction
counter
reporting
secure
transactions
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
Application number
CN202010151771.6A
Other languages
English (en)
Inventor
V·尚博格
S·查伯拉
D·J·哈里曼
R·玛卡拉姆
I·T·朔伊纳斯
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
Priority to CN202311283996.7A priority Critical patent/CN117234990A/zh
Publication of CN111666246A publication Critical patent/CN111666246A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network 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
    • H04L63/0457Network 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 wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network 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
    • H04L63/0464Network 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 using hop-by-hop encryption, i.e. wherein an intermediate entity decrypts the information and re-encrypts it before forwarding it
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

公开了与用于串行互连的安全流协议相关联的方法、系统和装置。一种装置包括第一设备,该第一设备包括电路,用于使用端到端协议至少部分地基于事务的事务类型在第一安全流中保护事务,其中第一安全流与第二安全流分开。第一设备还用于通过在第一设备与第二设备之间建立的链路将在第一安全流中保护的事务发送到第二设备,其中事务从第一设备经过一个或多个中间设备到达第二设备。在更具体的实施例中,第一安全流基于报告事务类型、非报告事务类型或完成事务类型中的一个。

Description

用于串行互连的安全流协议
相关申请的交叉引用
本申请是非临时专利申请,并且根据35U.S.C.§119(e)要求享有于2019年3月8日提交的且标题为A SECURE STREAM PROTOCOL FOR SERIAL INTERCONNECT(用于串行互连的安全流协议)的美国临时专利申请第62/815,554号的优先权的权益,该申请的公开内容整体通过引用合并于此。
技术领域
各种实施例总体上可以涉及计算技术领域,并且具体地,涉及用于串行互连(例如,快速外围组件互连(PCIe)链路)的安全流协议。
背景技术
半导体处理和逻辑设计中的发展已经允许可以存在于集成电路设备上的逻辑的量的增加。作为必然结果,计算机系统配置已经从系统中的单个电路或多个集成电路演变为存在于单独的集成电路上的多个核心、多个硬件线程和多个逻辑处理器,以及集成在此类处理器内的其他接口。处理器或集成电路典型地包括单个物理处理器管芯,其中处理器管芯可以包括任何数量的核心、硬件线程、逻辑处理器、接口、存储器、控制器中心等。随着处理能力随计算系统中设备数量的增加而增长,插座与其他设备之间的通信变得越来越重要。因此,互连已经从主要处理电气通信的更传统的多点总线发展到促进快速通信的充分发展的互连架构。不幸的是,由于对未来处理器以甚至更高速率消费的需求增加,对应的需求被置于现有互连架构的能力上。互连架构可以基于多种技术,包括快速外围组件互连(PCIe)、通用串行总线等。
附图说明
通过以下具体实施方式,结合附图,将容易理解实施例。为了有助于该描述,相似的附图标记表示相似的结构元素。在附图的图中,通过示例而非限制的方式示出了实施例。
图1示出了包括互连架构的计算系统的实施例。
图2示出了包括分层协议栈的互连架构的实施例。
图3示出了要在互连架构内生成或接收的请求或分组的实施例。
图4示出了用于互连架构的发射机和接收机对的实施例。
图5A和5B是分别示出了快速外围组件互连(PCIe)系统架构中的逐跳加密和端到端加密的简化框图。
图6是示出在PCIe协议中可能发生的分组重排序的类型的表。
图7是示出根据至少一个实施例的具有用于安全流协议的套接字的系统的简化框图。
图8是示出根据至少一个实施例的实现端到端安全流协议的系统的简化框图。
图9是示出根据至少一个实施例的用于使用三个流以受限排序模式操作的安全流协议的可能分组重排序规则的表。
图10是根据至少一个实施例的通过PCIe协议的层的分组流的示例。
图11是示出根据至少一个实施例的可以在安全流协议中使用的示例计数器和密钥的交互图。
图12示出了根据至少一个实施例的可以由每个事务携带的TLP安全流前缀的可能格式。
图13-15是示出根据至少一个实施例的在使用三个流以受限排序模式操作的安全流协议中的可能事务的交互图。
图16是示出根据至少一个实施例的用于使用两个流以受限排序模式操作的安全流协议的可能分组重排序规则的表。
图17是示出根据至少一个实施例的可以在使用两个流以受限排序模式操作的安全流协议中使用的示例计数器和密钥的交互图。
图18-20是示出根据至少一个实施例的在使用两个流以受限排序模式操作的安全流协议中的可能事务的交互图。
图21是示出根据至少一个实施例的可以与报告事务(posted transaction)和安全流协议相关联的示例操作的简化流程图。
图22A-22B是示出根据至少一个实施例的可以与报告事务和安全流协议相关联的另外的示例操作的简化流程图。
图23是示出根据至少一个实施例的可以与非报告事务(non-postedtransaction)和安全流协议相关联的示例操作的简化流程图。
图24A-24B是示出根据至少一个实施例的可以与非报告事务和安全流协议相关联的另外的示例操作的简化流程图。
图25是示出根据至少一个实施例的可以与完成事务和安全流协议相关联的示例操作的简化流程图。
图26A-26B是示出根据至少一个实施例的可以与完成事务和安全流协议相关联的另外的示例操作的简化流程图。
图27-29是示出根据至少一个实施例的以显式计数器模式操作的安全流协议中的可能事务的交互图。
图30示出了根据各种实施例的适用于实践本公开的各种方面的示例设备。
图31示出了根据各种实施例的具有用于实践参考图1-29所描述的方法的指令的存储介质。
图32是示出根据一个或多个实施例的包括处理器的计算系统的另一实施例的框图。
图33是根据本公开的至少一个实施例的示例计算机架构的框图。
具体实施方式
本公开提供了用于实现诸如快速外围组件接口(PCIe)加密之类的用于互连安全性的安全流协议(SEC_STREAM)的系统、方法、架构和装置的各种可能的实施例或示例。为了易于理解,在对PCIe协议进行扩展以保护设备或端点与片上系统(SOC)之间的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)设备、仪表板移动设备(DME)、移动数据终端(MDT)、电子发动机管理系统(EEMS)、电子/发动机控制单元(ECU)、电子/发动机控制模块、嵌入式系统、微控制器、控制模块、发动机管理系统(EMS)、联网或“智能”电器、机器类型通信(MTC)设备、机器对机器(M2M)、物联网(IoT)设备和/或任何其他类似电子设备。此外,术语“车辆嵌入式计算机设备”可以指代物理地安装在、内置于或以其他方式嵌入车辆中的任何计算机设备和/或计算机系统。
计算系统或平台可以广泛地使用耦合到计算机总线的各种设备。计算机总线可以包括相关的硬件组件(例如,电线、光纤等)和软件,包括通信协议。外围组件互连(PCI)总线或快速PCI(PCIe,PCI-E)可以是基于规范的计算机总线,该规范为系统软件或系统驱动程序提供了用于执行与耦合到PCI总线或PCIe总线的设备的配置相关的各种操作的机制。耦合到计算机总线的设备或组件也可以称为功能。PCIe可以在消费者、服务器和工业应用中操作,作为主板级互连(以链接安装在主板上的外围设备)、无源底板互连以及作为插入板的扩展卡接口。PCIe设备经由称为互连或链路的逻辑连接进行通信。链路是两个PCIe端口之间的点对点通信信道,允许两个PCIe端口发送和接收普通PCI请求,例如,配置、输入/输出(I/O)或存储器读取/写入和中断。在物理级别,链路可以由一个或多个通道组成。低速外围设备(例如,802.11Wi-Fi卡)使用单通道(×1)链路,而图形适配器典型地使用更宽且更快的16通道链路。
尽管可以参考在诸如计算平台或微处理器之类的集成电路中的安全流协议来描述以下实施例,但是其他实施例也适用于其他类型的集成电路和逻辑器件。本文所描述的实施例的类似技术和教导可以适用于其他类型的电路或半导体器件,其也可以受益于安全流协议。例如,所公开的实施例不限于台式计算机系统或UltrabooksTM。并且还可以用于其他设备,例如,手持设备、平板计算机、其他薄型笔记本、片上系统(SOC)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数字相机、个人数字助理(PDA)和手持PC。嵌入式应用典型地包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机或可以执行下面教导的功能和操作的任何其他系统。此外,本文所描述的装置、方法和系统不限于物理计算设备,而是还可以涉及用于能量节约和效率的软件优化。如在下面的描述中将变得显而易见的,本文描述的方法、装置和系统的实施例(无论是参考硬件、固件、软件还是其组合)对于平衡性能考量的“绿色技术”未来至关重要。
随着计算系统的发展,其中的组件变得更加复杂。因此,用于在组件之间耦合和通信的互连架构的复杂度也在增加,以确保针对最佳组件操作满足带宽要求。此外,不同的市场细分要求互连架构的不同方面适合市场的需要。例如,服务器要求更高的性能,而移动生态系统有时能够牺牲整体性能以节约功率。然而,大多数结构的唯一目的是以最大功率节约来提供可能的最高性能。下面讨论了多种互连,这些互连将潜在地受益于本文所描述的实施例的方面。
一种互连结构架构包括快速外围组件互连(PCI)(PCIe)架构。PCIe的主要目标是使得来自不同供应商的组件和设备能够在开放架构中互操作,从而跨越多个市场细分;(台式的和移动的)客户端、(标准的、机架规模的和企业的)服务器以及嵌入式和通信设备。快速PCI是针对各种未来的计算和通信平台定义的高性能、通用I/O互连。某些PCI属性(例如,其使用模型、加载-存储架构和软件接口)已经通过其修订版进行维护,而先前的并行总线实现方式已经由高度可扩展的、完全串行的接口取代。快速PCI的最近的版本利用点对点互连、基于交换机的技术和分组化协议中的发展,以递送新的性能和特征水平。快速PCI支持的高级特征中的一些包括功率管理、服务质量(QoS)、热插拔/热交换支持、数据完整性和错误处理。
参考图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)、南桥和根端口控制器/中心。术语芯片组经常指代两个物理上分离的控制器中心,即,存储器控制器中心(MCH)耦合到互连控制器中心(ICH)。注意,当前系统经常包括与处理器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设备或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统式集成端点、PCIe集成端点或根联合体集成端点。
图形加速器130也通过串行链路132与控制器中心115耦合。在一个实施例中,图形加速器130耦合到与ICH耦合的MCH。然后,将交换机120以及因此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)、Advanced Micro DeviceTM(AMDTM)InfinityTM、通用通信接口(CCI)或QualcommTM的CentriqTM互连等。在一个实施例中,协议栈200是PCIe协议栈,其包括事务层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是由请求代理生成的字段,并且本地事务标识符字段308对于对该请求代理而言要求完成的所有未完成请求是唯一的。此外,在该示例中,源标识符310唯一地标识PCIe层级内的请求者代理。因此,本地事务标识符308字段连同源ID 310一起提供层级域内的事务的全局标识。
属性字段304指定事务的特性和关系。就这一点而言,属性字段304潜在地用于提供允许对事务的默认处理进行修改的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和非窥探(no-snoop)字段318。这里,优先级子字段312可以由启动程序修改以向事务指派优先级。保留属性字段314被保留用于将来使用或供应商定义的使用。可以使用保留属性字段来实现使用优先级或安全属性的可能的使用模型。
在该示例中,排序属性字段316用于供应传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示要应用的默认排序规则,其中排序属性“1”表示放宽排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。窥探属性字段318用于确定事务是否被窥探。如所示的,信道ID字段306标识与事务相关联的信道。
链路层
再次参考图2,链路层210(也称为数据链路层210)用作事务层205与物理层220之间的中间级。在一个实施例中,数据链路层210的责任是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受由事务层205组装的TLP,应用分组序列标识符211(即,标识号或分组号),计算并应用错误检测码(即,CRC 212),并且将经修改的TLP提交给物理层220以用于跨物理到外部设备的传输。
物理层
在一个实施例中,物理层220包括逻辑子块221和电子块222,以将分组物理地发送到外部设备。这里,逻辑子块221负责物理层220的“数字”功能。就这一点而言,逻辑子块包括用于准备用于由电子块222传输的传出信息的发送部分,以及用于在将接收到的信息传递到链路层210之前标识并准备接收到的信息的接收机部分。
物理层220包括发射机和接收机。发射机由逻辑子块221供应符号,发射机将该符号串行化并发送到外部设备上。接收机被供应有来自外部设备的经串行化的符号,并且将接收到的信号变换为位流。位流被解串行化并且供应给逻辑子块221。在一个实施例中,采用8b/10b传输码,其中发送/接收十位符号。在其他实施例中,使用128b/130b传输编码,以及其他示例。这里,特殊符号用于利用帧223对分组进行组帧。此外,在一个示例中,接收机还提供从传入串行流中恢复的符号时钟。
如上面所陈述的,尽管参考PCIe协议栈的特定实施例讨论了事务层205、链路层210和物理层220,但是分层协议栈不限于此。实际上,可以包括/实现任何分层协议。作为示例,表示为分层协议的端口/接口包括:(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从高逻辑电平驱动到低逻辑电平(即,下降沿)。差分信号潜在地展示出更好的电气特性,例如,更好的信号完整性(即,交叉耦合)、电压过冲/下冲、振铃等。这允许更好的时序窗口,从而实现更快的传输频率。
出于说明根据本文公开的实施例的将安全流协议用于串行互连的某些示例技术的目的,重要的是理解在其中在可信域环境中使用链路加密的系统中可能发生的活动。因此,以下基础信息可以被视为可以适当地解释本公开的基础。
一些新的CPU能力包括信任域,该信任域在没有可信计算基础(TCB)中的管理程序的情况下提供了虚拟计算环境。管理程序(或虚拟机管理器(VMM))从其管理的虚拟机的可信计算基础中移除。除非明确地由可信域虚拟机本身共享,否则该可信域中的虚拟机可以保护其存储器内容和运行时中央处理单元(CPU)状态的机密性免受任何其他软件(包括托管VMM)的影响。例如,还可以通过使用加密的存储器控制器来保护存储器免受VMM和其他信任域的影响。通常,信任域不允许经由串行互连接口连接的设备访问信任域保护的存储器。然而,这些连接的设备典型地需要访问受保护的数据以执行其预期功能。
其中管理程序已经从其管理的虚拟机的可信计算基础中移除的虚拟计算环境的示例用例包括托管许多租户虚拟机(VM)工作负载的云服务提供商。云服务提供商(CSP)和云租户两者都可能期望针对VM工作负载的机密性。租户VM可能不信任VMM或云数据中心中的软件中的任何软件。因此,运行对其而言已经从信任边界移除了管理程序的信任域VM确保VM不会受到VMM或者操作或以其他方式访问数据中心的恶意用户的攻击。为了实现这种机密的VM执行,必须使存储器和运行时CPU状态保持机密并对其进行完整性保护,以防止数据泄露或篡改攻击。通过使用利用存储器加密和完整性保护的存储器控制器,例如,
Figure BDA0002402696840000141
多秘钥总存储器加密(MK-TME),新的CPU安全功能可以满足这些安全目标。
信任域(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是目标设备。
对于任何端到端协议而言,一个关键挑战是发起设备与目标设备之间可能发生的事务重排序。PCIe中宽松的重排序允许发起设备与目标设备之间的路径中的交换机将接收到的一个或多个事务在先前接收到的其他事务之前重排序。在PCIe协议中,在需要避免死锁时,要求重排序某些类型的事务。对于其他类型的事务,协议不禁止在交换机(和桥接器)中执行重排序,并且所产生的行为对于那些组件是特定于实现方式的。本公开实现了端到端安全性,同时继续允许排序行为中的所有现有的要求变化。另外,描述了允许在复杂度和分组开销与所允许的排序行为中的限制中折衷的几种变型。
图6是示出可以在PCIe协议中发生的重排序的类型的表600。在PCIe中,分组的重排序可能在中间设备中发生,这可能在端到端安全性技术中造成问题。在某些场景中,重排序可以自动发生,而在其他场景中,允许中间设备进行重排序以避免死锁。如表6所示,行A-D 602和列2-5 604标识PCIe系统中的事务的类型,其包括报告请求、非报告请求和完成请求。非报告请求可以包括两种不同类型的事务:非报告读取请求和带有数据的非报告请求。
表600中的每个单元格指示如果关联行中的请求在关联列中的请求之后排队则可能发生的重排序的类型。每个单元格提供有关在关联行中指定的请求是否可以超过在关联列中指定的请求的答案。例如,单元格610基于条件(a)或条件(b)指示报告请求(在行A中指定)是否可以超过另一报告请求(在列2中指定)。如果分组中的宽松排序(RO)位未被置位(例如,RO=0),则遵循条件(a)。如果分组中的宽松排序位被置位(例如,RO=1),则遵循条件(b)。具体地,如果宽松重排序位未被置位(例如,RO=0),则遵循条件(a),并且不允许报告请求超过另一报告请求。如果宽松重排序位被置位(例如,RO=1),则遵循条件(b)。条件(b)为“是/否”或“是或否”,这意味着报告请求可能会被允许或者可能不会被允许超过另一(例如,较旧的)报告请求。例如,如果发送了事务1、2和3,并且如果事务3标记有RO位,则允许PCIe设备在事务1和2之前发送事务3。
如果启用宽松排序(例如,RO=1)或启用基于ID的排序,如列2所示,则PCIe协议允许报告请求超过单元格610处的报告请求,非报告请求超过报告请求(单元格620和630),以及完成请求超过单元格640处的报告请求。如果宽松排序位未被置位或基于ID的排序未被启用,则PCIe协议禁止报告请求被任何其他请求超过。
宽松重排序可能在端到端协议中造成多个问题。第一,一个安全规则是要求非报告请求和完成请求推送较旧的报告请求。然而,在没有跟踪机制的情况下,无法在端到端协议中实施此规则。尽管可以跟踪在非报告请求(单元格612和614)之前推送的报告请求的数量,但是在没有复杂的跟踪机制的情况下,无法检测是否所有报告请求都被推送,或者是否报告请求中的某些报告请求被重放。此外,要求一个报告请求超过非报告请求,这会使跟踪机制更加复杂,因为它必须跟踪非报告请求划定的时间点。
第二,不允许带有未被置位的宽松排序(RO)位(例如,RO=0)的事务超过报告请求(单元格610、620、630和640)。在没有复杂的跟踪机制的情况下,任何标记有被置位的宽松排序位(例如,RO=1)的分组都被允许超过报告请求,包括较早的报告请求。简单的水印或事务计数方案检测RO=0请求到达时重排序窗口的关闭是不可行的,因为在没有更复杂的跟踪机制的情况下,不可能确保在RO=0请求之前的所有RO=1写入请求实际上被接收到,并且没有被丢弃/重放。通常,允许重排序位被置位(例如,RO=1)的报告请求超过具有未被置位的重排序位(例如,RO=0)的报告请求。这可能会使跟踪机制更加复杂,因为它将需要跟踪RO=0划定的时间点。
第三,尽管宽松重排序会产生一些问题,但是在PCIe事务的发起设备和目标设备(例如,根联合体和端点)中,这是理想的。
PCIe协议还允许读取请求超过其他读取请求(单元格622、624、632、634)。通常,读取请求不需要重放保护。然而,当读取请求以寄存器为目标时,读取的重放可能会导致非期望的副作用。在允许对读取进行重排序的同时检测重放还要求更精细的跟踪机制来跟踪读取请求。
其他重排序规则包括要求报告请求和完成请求超过非报告请求(单元格612、614、642和644),而与宽松排序位内容无关。当宽松排序位被置位时,要求报告请求超过完成请求,并且不允许完成请求超过完成请求(单元格616和646)。当宽松排序位未被置位时,要求报告请求超过完成请求,并且允许完成请求超过完成请求(单元格616和646)。最后,无论宽松排序位是否被置位,都允许非报告请求超过非报告请求。
如本文所公开的用于串行互连系统的安全流协议解决了上述问题中的许多问题(以及更多问题)。该协议是一种端到端协议,用于保护加密会话的两个端点之间的链路。加密会话的两个端点包括发起设备和目标设备。发起设备和目标设备可以包括片上系统(SoC)和外围设备,或利用诸如PCIe之类的串行互连架构的任何其他合适设备对。另外,应当注意,每个端点在发送事务数据时可以作为发起设备执行适当的操作,并且在接收事务数据时可以作为目标设备执行适当的操作。中间交换机和桥接器不在信任边界内,因此无法访问明文数据。从发起设备发送的事务的事务报头为明文形式,并且被中间交换机和桥接器用来路由事务。然而,事务报头受完整性保护,使得在没有检测的情况下无法修改事务报头。在一些实现方式中,可以在实现端到端安全性的可信域环境中利用此能力,并且还可以将此能力应用于类似于可信域的其他安全方法。
可以基于与根据互连协议(例如,PCIe)对事务重排序有关的不同操作模式来配置安全流协议。一种操作模式在本文中称为“受限排序模式”或“ROM”,其中与重排序事务有关的限制被置于在两个端点(例如,SoC和外围设备)之间的路径中的中间设备(例如,交换机)上。在受限排序模式的一个或多个实施例中,如果互连协议允许但不要求将第一类型的事务重排序在第二类型的事务之上,则在大多数情况下,不允许将第一类型的事务重排序在第二类型的事务之上。如果在互连协议中要求将第一类型的事务重排序在第二类型的事务之上,则在安全流协议的受限排序模式中要求进行重排序。
可以使用两个流或三个流来实现受限排序模式。在受限排序模式的三个流的实施例中,在安全流协议中,报告事务、非报告事务和完成事务各自被视为单独的流。在受限排序模式的两个流的实施例中,报告事务和完成事务一起被视为一个流,而非报告事务被视为另一流。这些限制确保了每个流中的事务是有序的,但是相对于其他流中的事务可能是乱序的。因此,可以在不使用复杂的跟踪机制的情况下跟踪事务,以检测是否按分组被发送的顺序接收到所有分组。另外,由于用于加密的计数器不需要随分组一起携带,因此可以优化带宽。
另一操作模式在本文中称为“显式计数器模式”或“ECM”,其中允许在两个端点(例如,SoC和外围设备)之间的路径中的中间设备(例如,交换机)根据互连协议(例如,PCIe)对事务进行重排序。在显式计数器模式下,用于加密的计数器与事务一起作为分组有效载荷的一部分被携带。两个端点实现跟踪机制以检测丢弃或重放的事务。当目标设备接收到事务时,跟踪机制可以确定先前在目标设备处是否已经接收到分组有效载荷中携带的计数器。如果先前尚未接收到计数器,则将其添加到跟踪机制。如果先前已收到计数器,则该事务将被标记为错误。此外,如果尚未接收到计数器,但是上一个接收到的计数器与当前TLP中的计数器之间存在缺失的分组,则跟踪机制可以等待以处理当前分组,直到接收到在上一个接收到的计数器与当前分组中的计数器之间的具有计数器值的所有缺失的分组为止。实施例可以具有有限的缓冲来保存已经乱序到达的分组,并且如果其耗尽了缓冲器空间,则可以声明错误。
本文公开的端到端安全流协议的实施例提供了几个优点。例如,可以提供较小的可信计算基础(TCB)以仅包括处理敏感数据的实体(例如,SoC、外围设备等)。交换机和桥接器可以保留在TCB之外。另外,降低了管理安全通信的软件复杂度。例如,可以仅针对可信设备执行证明和提供,而不是验证整个拓扑。端到端安全协议的实施例还实现了典型地与逐跳链路加密方案相关联的几个安全目标。这些安全目标可以包括事务层协议(TLP)数据的机密性、完整性和重放保护,以及TLP数据、报头和前缀的完整性。实施例还可以使得能够检测和防止事务的重放。另外,可以实施生产者-消费者排序。具体地,非报告请求(例如,读取)推送报告请求(例如,写入),而完成请求推送报告请求(例如,写入)。
转到图7,图7是示出根据至少一个实施例的互连架构的实施例的简化框图,该互连架构包括具有安全流协议的套接字的分层协议栈。互连架构包括发起设备710和目标设备730。如本文先前描述的,分层协议栈包括以硬件电路和/或软件实现的逻辑,以实现任何形式的分层通信栈,例如,快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈。为了便于讨论,本文可以主要关于PCIe栈来描述图7和后续附图,但是相似的概念可以适用于其他互连栈。在至少一个实施例中,发起设备710和目标设备730各自包括PCIe栈,例如,参照图2描述的PCIe协议栈200。发起设备710中的PCIe栈包括事务层712、链路层714和物理层716。目标设备730中的PCIe栈包括事务层732、链路层734和物理层736。
在至少一个实施例中,发起设备710和目标设备730可以根据安全流协议来保护事务层分组。事务层分组在本文中也被称为“分组”和“TLP”。如图7所示,发生安全流处理的套接字包括在发起设备710的事务层712与链路层714之间的安全流TLP插入点(STX)713,以及在目标设备730的事务层732与链路层734之间的安全流TLP检测点(SRX)。
在各种实施例中,在安全流协议(本文中也称为“SEC-STREAM”)中,每个事务类型(即,报告、非报告和完成)可以被视为单独的受保护的流。如本文所使用的,“受保护的流”或“安全流”旨在表示已经基于该特定事务类型(或事务类型的组合)受到机密性、完整性和重放保护的特定事务类型(或特定事务类型的组合)的一个或多个事务。事务的数据有效载荷受到机密性、完整性和重放保护。事务的元数据(例如,TLP安全流前缀、TLP报头)受到完整性和重放保护。在各种实施例中,具有96位计数器和96位消息认证码(MAC)的高级加密标准——Galois/计数器模式(AES-GCM)构造可以用于以密码方式保护流量。然而,应该注意的是,这种方法可以在类似类型的安全方案中同样有效,并且不仅限于这些细节。例如,可以替代地使用提供重放保护和完整性保护的其他密码构造。在其他实施例中,可以使用更大的AES-GCM构造和/或更大的MAC。
本公开定义了用于TLP的新的TLP安全流前缀,以指示TLP是否是可信IO会话的一部分并传达其他安全流信息。如果请求由可信实体发起,并且要由另一可信实体消耗,则TLP可以是可信IO会话的一部分。通常,可信实体是信任域的一部分。可以各自为发起设备和目标设备提供可信实体以及不可信实体。安全流信息的存在(例如,在TLP的前缀中或以其他方式存储在TLP中)指示TLP在提供机密性(例如,加密数据)、完整性保护(例如,用于加密数据、安全流信息和TLP报头的完整性码值)和重放保护(例如,加密/解密计数器)的安全流中是受保护的。应当注意的是,使用TLP安全流前缀是为了方便地将此能力添加到现有实现方式中,并且在其他变体中,可以修改TLP报头,或者可以潜在地添加附加“安全层”来携带事务中的安全流信息。在一个替代实施例中,可以将安全流前缀中携带的安全流信息中的一些或全部嵌入到分组的有效载荷中。尽管在下面详细描述了前缀方法,但是应该理解,尽管可能具有不同的实现方式和/或带宽开销折衷,但是传达所需要的安全流信息的任何方式都可以提供等效的结果。因此,加密的有效载荷对中间交换机是透明的。中间交换机可以将元数据用于缓冲器管理和路由,但是可以检测到任何篡改或重放。
可操作地,在至少一个实施例中,在发起设备710的事务层712中形成分组。该分组可以包括但不一定限于具有要被传送到目标设备的路由信息和有效载荷数据的报头。在713处,在将分组传递到链路层714之前,对分组中的数据进行加密,生成TLP安全流前缀,将该前缀插入到分组中,在分组(例如,前缀、报头、数据)上生成诸如MAC之类的完整性码值(ICV),并且将ICV添加到分组。在目标设备730中的链路层734处理接收到的事务之后,在733处,对分组中的数据进行解密,对ICV进行验证,并且从分组中剥离TLP安全流前缀,之后由事务层732进行进一步处理。用于在713和733处执行安全流处理的硬件和/或软件可以集成在它们相应的事务层712和732中,或者可以单独地实现为事务层710、732和链路层714、734之间的子层。
本公开定义了用于安全流协议的两种操作模式,以解决与可能发生的宽松排序和读取重放有关的问题。这些模式包括受限排序模式(ROM)和显式计数器模式(ECM)。
在受限排序模式下,某些限制被置于路径中的交换机上。对于交换机中的给定场景,如果PCIe协议允许但不要求基于被排队的事务类型进行重排序,则将禁止交换机执行重排序。因此,可以优化链路带宽,因为不是必须将用于加密的计数器与事务一起携带。另外,由于不要求复杂的跟踪机制(例如,其中计数器用于检测是否按事务被发送的顺序接收到所有事务),因此简化了跟踪。
在受限排序模式中的限制的一个示例中,要求交换机针对SEC-STREAM TLP将事务的TLP报头中的宽松排序或基于ID的排序位(RO/IDO)视为RO/IDO=0。可替代地,可以禁止发起设备针对SEC-STREAM TLP设置RO/IDO=1。在这些示例中,即使IO/Cfg完成请求可以与其他完成请求区分开,交换机也不允许IO/Cfg完成请求超过报告请求。然而,发起设备(例如,根联合体)和目标设备(例如,端点)可以基于RO/IDO位对事务进行重排序。
在受限排序模式中的限制的另一示例中,防止交换机允许非报告请求(读取)超过其他非报告请求。因此,交换机无法针对读取对读取进行重排序,因此,在表600中,对于SEC-STREAM TLP,单元格622、624、632和634被视为“否”。另外,禁止交换机针对完成请求对完成请求进行重排序,因此对于SEC-STREAM TLP,单元格646被视为“否”。然而,发起设备(例如,根联合体)和目标设备(例如,端点)可以正常地针对读取请求对读取请求进行重排序,并且针对完成请求对完成请求进行重排序。
在显式计数器模式(ECM)中,不限制诸如交换机之类的中间设备对事务进行重排序。在ECM中,与TLP分组的经认证的加密一起使用的计数器随TLP分组一起携带。在至少一个实施例中,用于加密的计数器可以是TLP分组的数据有效载荷的一部分。跟踪机制在SEC-STREAM会话的每个端点处实现,该机制跟踪序列号的接收以实施TLP排序规则。在至少一个实施例中,加密计数器可以用作要被跟踪的序列号。跟踪窗口是特定于实现方式的,并且实现方式可以增加耗尽/栅栏以避免跟踪溢出。跟踪机制可能具有有限的跟踪序列号的容量。如果跟踪机制已接近其容量,则发起设备可以插入“栅栏”以暂时停止发送新事务,直到比栅栏旧的所有内容耗尽,目标设备已经接收到发送的每个事务,并且跟踪机制被清除。此技术限制了未完成的读取请求的数量。
图8是PCIe互连架构800的简化框图,其包括经由PCIe交换机820连接到端点830的根联合体810。根联合体810包括根端口812,在根端口812处针对受端到端保护的流中的TLP分组执行加密或解密814(取决于根联合体是发射机还是接收机)。端点830包括上游端口832,在上游端口832处对受端到端保护的流中的TLP分组执行加密或解密834(取决于端点是发射机还是接收机)。PCIe交换机820包括经由链路815连接到根端口812的上游端口822和经由链路825连接到端点830的上游端口832的下游端口826。在受保护的流中,未在PCIe交换机820处对事务进行加密或解密。而是,PCIe交换机使用TLP分组中的报头数据来路由事务。当根端口是发起设备时,根端口812可以对分组的数据有效载荷执行加密,并且当根端口是目标设备时,根端口812可以对分组的数据有效载荷执行解密。类似地,当端点830是发起设备时,端点可以对分组的数据有效载荷执行加密,并且当端点830是目标设备时,端点可以对分组的数据有效载荷执行解密。
图9是示出使用三个流以受限排序模式操作的安全流协议的潜在重排序规则的表900。表900包括行A-C 902和列2-4 904,其标识事务的类型(例如,报告请求、非报告请求和完成请求)。非报告请求可以包括两种不同种类的事务(即,非报告读取请求和具有数据的非报告请求),为简化起见,将其合并在表900中。类似于图6的表600,表900中的每个单元格910-936针对在PCIe交换机(例如,820)中排队并基于针对安全流协议定义的三个流进行保护的事务指定可能的重排序规则。这三个流包括报告流、非报告流和完成流。
在表900中所示的示例重排序规则中,对于超过非报告请求的报告请求和完成请求,要求通过PCIe交换机进行重排序。这由单元格912和932中的“是”指示。在至少一个实施例中,在这些场景中允许重排序以避免死锁。如果对于这些场景不允许重排序,则可能需要对PCIe操作进行重大修改。如果宽松排序位被置位(例如,RO=1),则对于超过完成请求的报告请求也要求重排序,如单元格914(b)中的“是”指示的。
在三个流的实施例中,对于某些事务,允许(但不要求)重排序。例如,如单元格914(a)中的“是/否”指示的,如果宽松排序位未被置位(例如,RO=0),则对于超过完成请求的报告请求允许重排序。如单元格924中的“是/否”指示的,对于超过完成请求的非报告请求也允许(但不要求)重排序。
如单元格910、920和930中的“否”指示的,不允许任何请求超过报告请求。应注意,在ECM中,可以允许这种重排序。防止非报告请求和完成请求超过报告请求的规则(即,920和930)有助于实施生产者-消费者排序。因为非报告请求超过非报告请求或完成请求超过完成请求几乎没有好处,所以不允许这些类型的重排序,如单元格922和936中的“否”指示的。
这些受限排序规则是规则的一种可能示例,这些规则可以用于以最小的性能影响简化端到端安全性。受限排序规则以及跟踪报告请求有助于避免可能发生的死锁,并且确保特定流中的事务由目标设备按发起设备发送这些事务的顺序接收。然而,应该注意,可以使用其他更具限制性的规则,尽管这潜在地会导致性能折衷。
转到图10,通过安全流协议层示出了安全事务层分组的流1000。在事务层1002中,利用要从第一设备(例如,发起设备、发射机)发送到第二设备(例如,目标设备、接收机)的数据1010生成事务层分组(TLP)。数据1010被称为分组的“有效载荷”。可以将端点循环冗余校验(ECRC)1014在末尾附加(或以其他方式添加)到有效载荷,并且可以将报头1012在开头附加(或以其他方式添加)到有效载荷。报头1012可以包含未加密(例如,以明文形式)并且可以由中间交换机用来对事务进行路由的寻址和路由信息。
在数据链路层1004处理TLP之前,在TLP中插入安全流前缀1022。前缀1022可以包含端到端安全流协议将覆盖每个TLP的链路的指示。完整性校验值(ICV)1024也在末尾附加(或以其他方式添加)到TLP。在至少一个实施例中,ICV 1024可以是消息认证码(MAC),其可以在安全流前缀1022、报头1012、数据1010和ECRC 1014上计算,以便确保事务层分组的完整性。因此,前缀1022、TLP报头1012、数据1010、ECRC 1014和ICV 1024形成事务层分组。
当TLP已经传递到数据链路层1004时,将链路循环冗余校验(LCRC)1034在末尾附加到TLP,并且将序列号1032在开头附加到TLP。当分组被传递到物理层1006时,将帧1042和1044在末尾附加和在开头附加到数据链路层分组的末端,以指示事务的开始和结束。
图11是示出根据至少一个实施例的可以在使用三个安全流的受限排序模式(ROM)下操作的安全流协议中使用的各种可能的计数器和密钥的交互图1100。交互图1100示出了发起设备1110和目标设备1130。在发起设备1110和目标设备1130之间建立了两个连接1102和1104。连接1102和1104可以包括一个或多个中间设备(例如,交换机、桥接器),为了便于说明,未示出这些中间设备。发起设备1110可以经由连接1102向目标设备1130发送事务1103(例如,报告或非报告)。在一些场景中,事务1105可以经由连接1104从目标设备发送至发起设备1110(例如,完成)。响应于要求响应的事务(例如,非报告(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可以维护标识为pr_stream_enc_key的PR加密密钥,以用于加密要发送给目标设备1130的PR数据,并且目标设备1130可以维护被标识为pr_stream_dec_key的对应的PR解密密钥,以用于解密由发起设备1110接收到的PR数据。可以分别与PR加密计数器和解密计数器结合执行加密和解密。另外,PR加密密钥和PR加密计数器也可以被发起设备用来在TLP(例如,TLP安全流前缀、(多个)TLP报头、加密数据)上生成完整性码值(ICV)。接收报告事务的目标设备可以使用对应的PR解密密钥和PR解密计数器来验证接收到的报告事务的ICV。
对于从发起设备1110发送到目标设备1130的非报告事务(例如,1103),发起设备1110可以维护标识为npr_stream_enc_key的NPR加密密钥,以用于加密要发送的NPR数据,并且目标设备1130可以维护标识为npr_stream_dec_key的对应的NPR解密密钥,以用于解密接收到的NPR数据。可以分别与NPR加密计数器和解密计数器结合执行加密和解密。另外,发起设备还可以使用NPR加密密钥和NPR加密计数器在TLP(例如,TLP安全流前缀、(多个)TLP报头、加密数据)上生成完整性码值(ICV)。接收非报告事务的目标设备可以使用对应的NPR解密密钥和NPR解密计数器来验证接收到的非报告事务的ICV。
对于从目标设备1130发送到发起设备1110的完成事务,目标设备1130可以维护标识为cpl_stream_enc_key的CPL加密密钥,以用于加密要发送的CPL数据,并且发起设备1110可以维护标识为cpl_stream_dec_key的对应的CPL解密密钥,以用于解密接收到的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。
在一个示例中,操作的高级加密标准-Galois计数器模式(AES-GCM)可以用于提供数据的计数器模式加密和该数据的消息认证码。计数器模式加密使用对称密钥密码块密码。通常,块密码是使用对称密钥以提供机密性或真实性的方式对数据块进行加密的加密算法。计数器操作模式将块密码转换为流密码。作为与计数器值级联的初始化向量(IV)的输入块通过块密码利用密钥加密。块密码的输出用于加密(例如,通过XOR函数)明文块以产生密文。IV的连续值和计数器值用于加密连续的明文块,以产生附加的密文块。
除了从输入数据产生密文之外,GCM操作还计算Galois消息认证码(GMAC)。GMAC(更通常地称为“标签”或“认证标签”)是用于认证消息(或事务)的几字节信息。GMAC是可以在TLP分组(例如,TLP安全流前缀、(多个)TLP报头、加密数据)上生成的ICV的一个示例。在至少一个实施例中,乘法函数用于基于从明文块的加密产生的密文块来计算GMAC。GMAC可以附加到密文中。尽管AES-GCM是一个或多个实施例中可以使用的一种可能类型的加密和认证技术,但对于本领域技术人员显而易见的是,也可以使用任何其他合适类型的加密和认证(例如,SHA-3、哈希消息认证码(HMAC)等)。
尽管上面描述的实施例提供了一种可能的方法,其中相同的加密/解密密钥和计数器用于对TLP中的数据进行加密和解密以及验证TLP的完整性,但应注意,可以实现任何其他合适的加密/解密和完整性验证方案以保护安全流中的事务。例如,在另一实施例中,可以将不同的密钥用于每种分组类型的加密和ICV生成。即,可以使用第一报告密钥来完成对报告请求有效载荷的加密,并且可以使用与第一报告密钥不同的第二报告密钥来完成在报告请求有效载荷、报头和前缀上的ICV生成。可以使用第一非报告密钥来完成对非报告请求有效载荷的加密,并且可以使用与第一非报告密钥不同的第二非报告秘钥来完成在非报告请求有效载荷、报头和前缀上的ICV生成。可以使用第一完成密钥来完成对完成请求有效载荷的加密,并且可以使用与第一完成密钥不同的第二完成密钥来完成在完成请求有效载荷、报头和前缀上的ICV生成。应当注意,可以在TLP安全流前缀、TLP报头(或如果使用不止一个报头,则为多个报头)和加密的有效载荷数据上生成ICV。然而,在一些实施例中,TLP的其他字段也可以被包括在ICV中(例如,ECRC 1014)。
图12示出了根据至少一个实施例的可以由实现安全流协议的系统中的每个事务携带的TLP安全流前缀1200的可能格式,该安全流协议使用两个受保护的流或三个受保护的流以受限排序模式操作。该格式包括sec-stream前缀指示符1202、sec-stream前缀报头1204和pr_sent_counter值1206。pr_sent_counter值1206表示自从上一个非报告事务或完成事务从发起设备发送到目标设备以来已经从发起设备发送到目标设备的报告事务的数量。sec-stream前缀指示符1202指示TLP安全流前缀1200的类型。例如,前缀指示符1202可以指示TLP安全流前缀1200包含与安全流协议有关的信息。
在至少一个实施例中,在sec-stream报头1204中定义了三个位。第一位(例如,BIT0)可以是可信位,其是对事务是否是可信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是使用PR解密计数器和PR解密密钥验证的MAC,例如,GMAC。在另一实施例中,可以使用不同的密钥和计数器(例如,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是使用NPR解密计数器的递增的值和NPR解密密钥来验证的MAC。如果ICV验证失败,则引发错误(例如,记录错误消息,生成响应以发送到目标设备,对密钥进行重新初始化,等等)。否则,由目标设备1130维护的PR接收计数器(例如,pr_received_counter)的值递减从发起设备1110接收的TLP中的PR发送计数器的值。如果PR接收计数器的结果值小于零,表示一个或多个报告请求已经被丢弃和/或延迟。因此,会引发错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。否则,目标设备消耗该分组。在一些实施例中,PR接收计数器评估可以在MAC验证之前发生或与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是使用CPL解密计数器的递增的值和CPL解密密钥来验证的MAC。如果ICV验证失败,则引发错误(例如,记录错误消息,生成响应以发送到目标设备,对密钥进行重新初始化,等等)。否则,由发起设备1110维护的PR接收计数器(例如,pr_received_counter)的值递减从目标设备1130接收的PR发送计数器(例如,pr_sent_counter)的值。如果PR接收计数器的结果值小于零,表示一个或多个报告请求已经被丢弃和/或延迟。因此,会引发错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。否则,发起设备1110消耗该分组。在一些实施例中,PR接收计数器评估可以在MAC验证之前发生。
应当注意,参考从发起设备1110发送报告请求和非报告请求以及响应于非报告事务而从目标设备1130发送完成事务描述了发起设备1110和目标设备1130的操作。然而,应当显而易见的是,发起设备1110可以作为目标设备操作,并且目标设备1130可以作为发起设备操作。
图16是示出用于使用两个流以受限排序模式操作的安全流协议的潜在重排序规则的表1600。表1600包括行A-C 1602和列2-4 1604,其标识事务的类型(例如,报告请求、非报告请求和完成请求)。非报告请求可以包括两种不同种类的事务(即,非报告读取请求和具有数据的非报告读取请求),为简化起见,将其合并在表1600中。类似于图6的表600,表1600中的每个单元格1610-1636针对在PCIe交换机(例如,820)中排队并基于针对安全流协议定义的两个流进行保护的事务指定可能的重排序规则。这两个流包括报告和完成流以及非报告流。
在表1600中所示的示例重排序规则中,对于超过非报告请求的报告请求和完成请求,要求PCIe交换机进行重排序。这由单元格1612和1632中的“是”指示。在至少一个实施例中,在这些场景中允许重排序以避免死锁。如果对于这些场景不允许重排序,则可能需要对PCIe操作进行重大修改。还应当注意,允许由单元格1612和1632指示的重排序意味着对于非报告请求相对报告请求和完成请求,要求单独的计数器。
表1600中不允许任何其他重排序。如单元格1610、1620和1630中的“否”指示的,不允许任何请求超过报告请求。应注意,在ECM中,可以允许这种重排序。防止非报告请求和完成请求超过报告请求的规则(即,1620和1630)有助于实施生产者-消费者排序。因为非报告请求超过非报告请求或完成请求超过完成请求几乎没有好处,所以不允许这些类型的重排序,如单元格1622和1636中的“否”指示的。另外,如单元格1614和1624中的“否”指示的,不允许报告请求和非报告请求超过完成请求。
这些受限排序规则是规则的一种可能示例,这些规则可以用于以最小性能影响简化端到端安全性。受限排序规则以及跟踪报告请求有助于避免可能发生的死锁,并且确保特定流中的事务由目标设备按发起设备发送这些事务的顺序接收。表1600中的规则比图9中的表900中示出的规则更具限制性。
图17是示出根据至少一个实施例的可以在使用两个安全流以受限排序模式操作的安全流协议的替代示例实现方式中使用的各种可能的计数器和密钥的交互图1700。交互图1700示出了发起设备1710和目标设备1730。在发起设备1710与目标设备1730之间建立了两个连接1702和1704。连接1702和1704可以包括一个或多个中间设备(例如,交换机、桥接器),为了便于说明,未示出这些中间设备。发起设备1710可以经由连接1702将事务1703(例如,报告或非报告)发送至目标设备1730。在一些情况下,事务1705可以经由连接1704从目标设备(例如,完成)发送至发起设备1710。响应于要求响应的事务(例如,非报告(NPR)事务),发送完成请求1705。例如,NPR事务可以包括要求响应的读取请求或写入请求。
图17中所示的计数器和密钥可以用于安全的两个流的协议而不是安全的三个流的协议的实现方式中。在安全的两个流的协议中,将报告事务和完成事务一起视为单独的受保护的流,而非报告事务被视为单独的受保护的流。在1712处示出了可以由具有安全的两个流的协议实现方式的发起设备1710使用的示例计数器和密钥。在1732处示出了可以由具有安全的两个流的协议实现方式的目标设备1730使用的示例计数器和密钥。对于事务流的每个方向,该方向的发起设备和目标设备维护以下计数器,这些计数器可以在安全流协议的设置期间初始化:
用于报告请求和完成请求的计数器(pr_cpl_enc_counter,pr_cpl_dec_counter)——这些计数器可以是具有32位随机前缀的64位计数器。该计数器对可以用于报告请求和完成请求的经认证的加密。
用于非报告请求的计数器(npr_enc_counter,npr_dec_counter)——这些计数器可以是具有32位随机前缀的64位计数器。该计数器对可以用于非报告请求的经认证的加密。
用于发送的报告请求和完成请求的计数器(pr_cpl_sent_counter)——该计数器可以是16位计数器。该计数器可以用于检测丢弃/延迟的报告请求(例如,不正确的读取-超过-写入重排序)。该计数器是表示自从发送上一个非报告请求以来发送的报告请求和完成请求的数量的值。该计数器还用作实施生产者-消费者排序的校验,以使非报告请求不会在报告请求之前重排序。应注意,在两个流的模型中,由于报告请求和完成请求位于一个有序流中,因此对报告请求和完成请求的任何重排序都可能导致ICV验证失败。
用于接收到的报告请求和完成请求的计数器(pr_cpl_received_counter)
——该计数器可以是32位计数器。该计数器可以用于检测丢弃/延迟的报告请求(例如,不正确的读取-超过-写入重排序)。该计数器是表示自从接收到上一个非报告请求以来接收到的报告请求和完成请求的数量的值。该计数器还用作实施生产者-消费者排序的校验,以使非报告请求不会在报告请求之前重排序。应注意,在两个流的模型中,由于报告请求和完成请求位于一个有序流中,因此对报告请求和完成请求的任何重排序都可能导致ICV验证失败。
除了加密和解密计数器之外,可以在发起设备和目标设备两者处维护用于安全流协议的加密和解密密钥。可以针对每个会话初始化加密和解密密钥,并且可以针对每个流初始化不同的加密密钥对。例如,对于从发起设备1710发送到目标设备1730的报告事务(例如,1703)和完成事务(图17中未示出),发起设备1710可以维护被标识为pr_cpl_stream_enc_key的PR-CPL加密密钥,以用于对发送到目标设备1730的PR数据和CPL数据进行加密。目标设备1730可以维护标识为pr_cpl_stream_dec_key的对应的PR-CPL解密密钥,以用于解密从发起设备1710接收到的PR数据和CPL数据。可以分别与PR-CPL加密计数器和解密计数器结合执行加密和解密。此外,发起设备还可以使用PR-CPL加密密钥和PR-CPL加密计数器在TLP(例如,TLP安全流前缀、(多个)TLP报头、加密数据)上生成完整性码值(ICV)。接收报告事务的目标设备可以使用对应的PR-CPL解密密钥和PR-CPL解密计数器来验证接收到的报告事务的ICV。
对于从目标设备1730发送到发起设备1710的完成事务(例如,1705),目标设备1730可以维护被标识为pr_cpl_stream_enc_key的PR-CPL加密密钥,以用于加密要发送到发起设备1710的CPL数据。发起设备1710可以维护被标识为pr_cpl_stream_dec_key的对应的PR-CPL解密密钥,以用于解密从目标设备1730接收到的CPL数据。加密可以与由目标设备1730维护的PR-CPL加密计数器结合执行,并且解密可以与由发起设备1710维护的PR-CPL解密计数器结合执行。此外,目标设备还可以使用PR-CPL加密密钥和PR-CPL加密计数器在TLP(例如,TLP安全流前缀、(多个)TLP报头、加密数据)上生成完整性码值(ICV)。接收完成事务的发起设备可以使用对应的PR-CPL解密密钥和PR-CPL解密计数器来验证接收到的完成事务的ICV。
对于从发起设备1710发送到目标设备1730的非报告事务(例如,1703),发起设备1710可以维护被标识为npr_stream_enc_key的NPR加密密钥,以用于加密要发送到目标设备1730的NPR数据,并且目标设备1730可以维护被标识为npr_stream_dec_key的对应的NPR解密密钥,以用于解密从发起设备1710接收的NPR数据。可以分别与NPR加密计数器和解密计数器结合执行加密和解密。此外,发起设备还可以使用NPR加密密钥和NPR加密计数器在TLP(例如,TLP安全流前缀、(多个)TLP报头、加密数据)上生成完整性码值(ICV)。接收到非报告事务的目标设备可以使用对应的NPR解密密钥和NPR解密计数器来验证接收到的非报告事务的ICV。
在至少一个实施例中,可以使用对称加密。在该实施例中,对于用于一种事务类型的每对密钥,相同的密钥用于加密和解密两者。例如,对于从发起设备1710流到目标设备1730的报告事务和完成事务,发起设备1710处的pr_cpl_stream_enc_key等同于目标设备1730处的pr_cpl_stream_dec_key,目标设备1730处的pr_cpl_stream_enc_key等同于发起设备1710处的pr_cpl_stream_dec_key,而npr_stream_enc_key等同于npr_stream_dec_key。而且,如本文先前所描述的,操作的高级加密标准-Galois计数器模式(AES-GCM)可以用于以数据的消息认证码的形式提供数据的计数器模式加密和完整性计数器值。另外,如本文先前所描述的,在一个或多个实施例中可以使用任何其他合适的加密/解密和完整性验证方案。特别地,对于每个流,可以将不同的密钥用于该流中的分组的加密和ICV生成。
还应注意,两个流的实施例中的TLP安全流前缀可以具有与图12的TLP安全流前缀1200相同的格式。然而,在两个流的实施例中,字段1206可以包含PR-CPL计数器值(而不是三个流的实施例中的PR计数器值)。同样,第二位(位1)可以设置为1以指示TLP安全流前缀中存在PR-CPL计数器值,并且可以设置为0以指示不存在PR-CPL计数器值。
转到图18-20,交互图示出了根据本公开的在实现以受限排序模式配置的安全流协议的互连架构中可能发生的可能事务。图18-20所示的事务、计数器和密钥是基于安全的两个流的协议实现方式的。这两个流分别对应于组合的报告事务和完成事务以及非报告事务。
图18是示出用于从发起设备1710发送到目标设备1730的报告请求1802的安全的两个流的协议的交互图1800。发起设备1710对其PR-CPL加密计数器(例如,pr_cpl_enc_counter)进行采样并递增采样值。发起设备1710还递增其PR-CPL发送计数器(例如,发起设备1710处的pr_cpl_sent_counter)的值。对计数器进行采样可以包括获得计数器的值并且可能存储该值以便快速访问。发起设备1710对用于形成报告请求1802的事务层分组(TLP)的数据进行加密。可以使用PR-CPL加密计数器的递增的值和PR-CPL加密密钥(例如,pr_cpl_stream_enc_key)来执行加密。还在包括加密数据、TLP报头和TLP安全流前缀的TLP上计算完整性码值(ICV),例如,MAC。发起设备1710将由加密数据和ICV保护的报告请求发送到目标设备1730。
目标设备1730对其PR-CPL解密计数器(例如,pr_cpl_dec_counter)的值进行采样并递增采样值。目标设备1730还递增其PR-CPL接收计数器(例如,pr_cpl_received_counter)的值。目标设备1730使用PR-CPL解密计数器的递增的值和PR-CPL解密密钥(例如,pr_cpl_stream_dec_key)对接收到的报告请求的TLP中的数据进行解密。在至少一个实施例中,用于报告请求的加密密钥和解密密钥是相同的。目标设备1730通过验证针对TLP接收的ICV来验证TLP的完整性。在至少一个实施例中,ICV是使用PR-CPL解密计数器和PR-CPL解密密钥来验证的MAC。如果ICV验证失败,则将引发错误(例如,记录错误消息,生成响应以发送到发起设备,对密钥进行重新初始化,等等)。否则,目标设备消耗该分组。
图19是示出针对从发起设备1710发送到目标设备1730的非报告请求1902(具有或不具有数据)的安全的两个流的协议操作的交互图1900。发起设备1710对其NPR加密计数器(例如,npr_enc_counter)的值进行采样并递增采样值。发起设备1710还对其PR-CPL发送计数器(例如,pr_cpl_sent_counter)的值进行采样,然后将PR-CPL发送计数器中的值置零。发起设备1710对用于形成非报告请求1902的TLP的数据进行加密。可以使用NPR加密计数器的递增的值和NPR加密密钥(例如,npr_stream_enc_key)来执行加密。在包括加密数据、TLP报头和TLP安全流前缀的TLP上计算完整性码值(ICV),例如,MAC。发起设备1710将由加密数据和ICV保护的非报告请求发送到目标设备1730。此外,TLP还携带PR-CPL发送计数器的采样值,以指示自从上一个非报告事务以来已经由发起设备1710发送了多少报告请求和完成请求。
目标设备1730对其NPR解密计数器(例如,npr_dec_counter)进行采样并递增采样值。目标设备1730使用NPR解密计数器的递增的值和NPR解密密钥(例如,npr_stream_dec_key)对接收到的非报告请求的TLP中的数据进行解密。在至少一个实施例中,用于非报告请求的加密密钥和解密密钥是相同的。目标设备1730通过验证针对TLP接收的ICV来验证TLP的完整性。在至少一个实施例中,ICV是使用NPR解密计数器的递增的值和NPR解密密钥来验证的MAC。如果ICV验证失败,则会引发错误(例如,记录错误消息,生成响应以发送到目标设备,对密钥进行重新初始化,等等)。否则,由目标设备1730维护的PR-CPL接收计数器(例如,pr_cpl_received_counter)的值递减从发起设备1710接收的TLP中的PR-CPL发送计数器的值。如果PR-CPL接收计数器的结果值小于零,表示一个或多个报告请求或完成请求已经被丢弃和/或延迟。因此,会引发错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。否则,目标设备消耗该分组。在一些实施例中,PR-CPL接收计数器评估可以在ICV验证之前发生或与ICV验证并行发生。
图20是示出用于从目标设备1730发送到发起设备1710的完成请求2002的安全的两个流的协议操作的交互图2000。目标设备1730对其PR-CPL加密计数器(例如,pr_cpl_enc_counter)的值进行采样并递增采样值。目标设备1730还对其自己的PR-CPL发送计数器(例如,目标设备1730处的pr_cpl_sent_counter)的值进行采样,然后将其PR-CPL发送计数器的值置零。目标设备1730对用于形成完成请求2002的TLP的数据进行加密。可以使用PR-CPL加密计数器的递增的值和PR-CPL加密密钥(例如,pr_cpl_stream_enc_key)来执行加密。还在包括加密数据、TLP报头和TLP安全流前缀的TLP上计算完整性码值(ICV),例如,MAC。目标设备1730将由加密数据和ICV保护的完成请求发送到发起设备1710。
发起设备1710对其PR-CPL解密计数器(例如,pr_cpl_dec_counter)进行采样并递增采样值。发起设备1710使用PR-CPL解密计数器的递增的值和PR-CPL解密密钥(例如,pr_cpl_stream_dec_key)对接收到的完成请求的TLP中的数据进行解密。在至少一个实施例中,用于完成请求的加密密钥和解密密钥是相同的。发起设备1710通过验证针对TLP接收的ICV来验证TLP的完整性。在至少一个实施例中,ICV是使用PR-CPL解密计数器的递增的值和PR-CPL解密密钥来验证的MAC。如果ICV验证失败,则会引发错误(例如,记录错误消息,生成响应以发送到目标设备,对密钥进行重新初始化,等等)。否则,发起设备1710消耗该分组。
图21是示出根据至少一个实施例的可以与发送报告事务以及使用以具有三个流的受限排序模式操作的安全流协议相关联的示例操作的流程2100的流程图。在至少一个实施例中,一个或多个操作对应于图21的活动。作为包括分层协议栈(例如,712、714、716)或其一部分的发起设备(例如,1110、710)的端点可以执行或利用一个或多个操作。在一个示例中,发起设备的在SEC-STREAM TLP插入点(例如,713)或其一部分处包括硬件和/或软件的事务层(例如,710、205)执行或利用一个或多个操作。
在2102处,发起设备确定报告事务要被发送到目标设备,并要使用以受限排序模式操作的安全流协议在可信会话中进行保护。另外,发起设备还可以确定事务是否源自可信实体。在2104处,递增报告请求(PR)发送计数器的值。PR发送计数器表示自从发起设备向目标设备发送上一个非报告事务或完成事务以来发起设备已经向目标设备发送的报告事务的数量。
在2106处,可以利用用于报告请求的数据来形成事务层分组(TLP)。包含地址和路由信息的TLP报头也包含在TLP中。在2108处,获得并递增PR加密计数器的值。在2110处,使用PR加密计数器的递增的值和PR加密密钥来加密TLP中的数据。
在2112处,生成包括前缀指示符和前缀报头的TLP安全流前缀,并将其插入TLP中。前缀指示符指示安全流前缀包含安全流协议信息。前缀报头可以至少包括可信位、PR发送计数器位和模式位。对于报告事务,可信位(例如,设置为1)指示该分组是可信会话的一部分,PR发送计数器位(例如,设置为0)指示TLP安全流前缀中不包括PR发送计数器的值,并且模式位(例如,设置为1)指示安全流协议正在以受限排序模式操作。
在2114处,在安全流前缀、TLP报头和加密数据上计算完整性码值(ICV)。在一个示例中,使用AES-GCM加密在块密码流中执行消息认证码(MAC)的加密和生成。在2116处,可以将ICV附加到事务层分组。在2118处,发起设备经由一个或多个中间设备通过串行链路将受保护的报告事务发送到目标设备。在一个示例中,受保护的报告事务在其被传输到目标设备时经过一个或多个中间设备。中间设备可以使用事务报头中的明文数据将事务路由到目标设备,而不解密或以其他方式确定有效载荷数据。
图22A-22B是示出根据至少一个实施例的可以与接收报告事务以及使用以具有三个流的受限排序模式操作的安全流协议相关联的示例操作的流程2200A和2200B的流程图。在至少一个实施例中,一个或多个操作对应于图22A-22B的活动。作为包括分层协议栈(例如,732、734、736)或其一部分的目标设备(例如,1130、730)的端点可以执行或利用一个或多个操作。在一个示例中,目标设备的在SEC-STREAM TLP检测点(例如,733)或其一部分处包括硬件和/或软件的事务层(例如,712、205)执行或利用一个或多个操作。
在2202处,目标设备经由一个或多个中间设备通过串行链路从发起设备接收报告事务。在2204处,目标设备确定报告事务是通过以受限排序模式操作的端到端协议在用于报告事务的安全流中进行保护的。可以基于报告事务的TLP的TLP安全流前缀进行这些确定。特别地,可以使用TLP安全流前缀和前缀报头中模式位的存在来进行这些确定。
在2206处,获得并递增由目标设备维护的PR解密计数器的值。在2208处,使用PR解密计数器的递增的值和PR解密密钥来验证TLP的完整性。在一个示例中,在TLP上计算完整性码值(ICV),TLP包括安全流前缀、TLP报头和加密数据。在2210处,关于计算出的ICV是否等同于附加到TLP的ICV进行确定。如果它们不等同,则验证失败,并且在2212处,可能会引发错误(例如,记录错误消息,生成响应以发送到发起设备,对密钥进行重新初始化,等等)。在一个示例中,使用AES-GCM加密在块密码流中执行消息认证码(MAC)的加密和生成。
如果ICV验证没有失败(例如,计算出的ICV等同于报告事务的ICV),则在2214处,关于事务是否针对可信实体进行确定。例如,TLP可能正在尝试访问在可信域中配置的接口(例如,虚拟功能、可分配设备接口)。如果确定该事务正在尝试访问可信实体,则流程可以传递到图22B的流程2200B中的2230。
在2230处,识别TLP安全流前缀中(例如,前缀报头中)的可信位。在2232处,关于可信位是否被置位进行确定。如果可信位未被置位,则事务针对可信实体,而没有对它本身是可信实体的指示。因此,在2234处,报告事务被拒绝,可能产生非预期请求错误,并且流程可以结束。
如果在2232处确定可信位被置位,或者如果在2214处确定事务不针对可信实体,则在图22A中的2216处,报告请求(PR)接收计数器被递增。在2218处,使用PR解密计数器的递增的值和PR解密密钥来解密TLP中的加密数据。在一个实施例中,使用对称加密/解密,因此目标设备处的PR解密密钥与发起设备处的PR加密密钥相同。一旦数据被解密,则在2220处,可以在目标设备处消耗该数据。
在进行一些修改的情况下,图21和图22A-22B的流程还适用于以受限操作模式操作的安全流协议的两个流的实现方式。在两个流的实现方式中,图21和图22A-22B的流程适用于报告事务和完成事务两者,因为使用相同的加密/解密计数器和相同的加密/解密密钥在组合的安全流中保护这些类型的事务。在两个流的实施例中,如果确定要准备和发送的事务是报告事务类型或完成事务类型,则执行流程2100。如果确定接收到的事务是报告事务类型或完成事务类型,则执行流程2200A。对于任一类型的事务,都使用相同的加密/解密计数器(例如,pr_cpl_enc_counter,pr_cpl_dec_counter)和相同的加密/解密密钥(例如,pr_cpl_stream_enc_key,pr_cpl_stream_dec_key)而不是仅用于报告事务的加密/解密计数器(例如,pr_enc_counter,pr_dec_counter)和加密/解密密钥(例如,pr_stream_enc_key,pr_stream_dec_key)来执行流程。另外,在两个流的实施例中,在流程2100和2200A-2200B中使用组合的报告-完成发送计数器和报告-完成接收计数器(例如,pr_cpl_sent_counter,pr_cpl_received_counter),而不是报告发送计数器和报告接收计数器(例如,pr_sent_counter,pr_received_counter)。PR-CPL发送计数器包含表示自从发送上一个非报告请求以来发送的报告请求和完成请求的数量的值。PR-CPL接收计数器包含表示自从接收到上一个非报告请求以来接收到的报告请求和完成请求的数量的值。
图23是示出根据至少一个实施例的可以与使用三个流以受限排序模式操作的非报告事务和安全流协议相关联的示例操作的流程2300的流程图。在至少一个实施例中,一个或多个操作对应于图23的活动。作为包括分层协议栈(例如,712、714、716)或其一部分的发起设备(例如,1110、710)的端点可以执行或利用一个或多个操作。在一个示例中,发起设备的在SEC-STREAM TLP插入点(例如,713)或其一部分处包括硬件和/或软件的事务层(例如,710、205)执行或利用一个或多个操作。
在2302处,发起设备确定非报告事务要被发送到目标设备,并要使用以受限排序模式操作的安全流协议在可信会话中进行保护。另外,发起设备还可以确定事务是否源自可信实体。在2304处,获得发起设备处维护的PR发送计数器的值,然后将PR发送计数器中的值置零。
在2306处,可以利用用于非报告请求的数据来形成事务层分组。包含地址和路由信息的TLP报头也包含在TLP中。在2308处,获得并递增NPR加密计数器的值。在2310处,使用NPR加密计数器的递增的值和NPR加密密钥来加密用于非报告事务的数据。
在2312处,生成包括前缀指示符、前缀报头和获得的PR发送计数器的值的TLP安全流前缀,并将其插入TLP中。前缀指示符指示安全流前缀包含安全流协议信息。前缀报头可以至少包括可信位、PR发送计数器位和模式位。在该示例中,对于非报告事务,可信位(例如,设置为1)指示该分组是可信会话的一部分,PR发送计数器位(例如,设置为1)指示TLP安全流前缀中包括PR发送计数器的值,并且模式位(例如,设置为1)指示安全流协议正在以受限排序模式操作。
在2314处,在安全流前缀、TLP报头和加密数据上计算完整性码值(ICV)。在一个示例中,使用AES-GCM加密在块密码流中执行消息认证码(MAC)的加密和生成。
在2316处,可以将ICV附加到TLP。在2318处,发起设备经由一个或多个中间设备通过串行链路将受保护的非报告事务发送到目标设备。在一个示例中,受保护的非报告事务在被传输到目标设备时经过一个或多个中间设备。中间设备可以使用事务报头中的明文数据将事务路由到目标设备,而不解密或以其他方式确定有效载荷数据。
图24A-24B是示出根据至少一个实施例的可以与接收非报告事务以及使用以具有三个流的受限排序模式操作的安全流协议相关联的示例操作的流程2400A和2400B的流程图。在至少一个实施例中,一个或多个操作对应于图24A-24B的活动。作为包括分层协议栈(例如,732、734、736)或其一部分的目标设备(例如,1130、730)的端点可以执行或利用一个或多个操作。在一个示例中,目标设备的在SEC-STREAM TLP检测点(例如,733)或其一部分处包括硬件和/或软件的事务层(例如,712、205)执行或利用一个或多个操作。
在2402处,目标设备经由一个或多个中间设备通过串行链路从发起设备接收非报告事务。在2404处,目标设备确定非报告事务是通过以受限排序模式操作的端到端协议在用于非报告事务的安全流中进行保护的。可以基于非报告事务的事务层分组(TLP)的TLP安全流前缀进行这些确定。特别地,可以使用TLP安全流前缀和前缀报头中模式位的存在来进行该确定。
在2406处,获得并递增由目标设备维护的NPR解密计数器的值。在2408处,使用NPR解密计数器的递增的值和NPR解密密钥来验证TLP的完整性。在一个示例中,在非报告事务的TLP上计算完整性码值(ICV),非报告事务的TLP包括安全流前缀、TLP报头和加密数据。在2410处,关于计算出的ICV是否等同于附加到TLP的ICV进行确定。如果它们不等同,则验证失败,并且在2412处,可能会引发非致命错误(例如,记录错误消息,生成响应以发送到发起设备,密钥被重新初始化,等等)。在一个示例中,使用AES-GCM加密在块密码流中执行消息认证码(MAC)的加密和生成。
如果ICV验证没有失败(例如,计算出的ICV等同于非报告事务的ICV),则在2414处,将在目标设备处维护的PR接收计数器的值减小包含在TLP的安全流前缀中的PR发送计数器的值。如果发送和接收相同数量的报告请求,则PR接收计数器的结果值将为零。如果发送的报告请求多于接收的报告请求,则PR接收计数器的结果值将为负,这表示至少某些报告请求被丢弃或延迟。
在2416处,关于PR接收计数器的结果值是否小于零进行确定,从而指示至少某些报告请求被丢弃或延迟。如果是这样,则在2418处,可能会引发致命错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。
如果确定PR接收计数器的结果值不小于零,从而指示没有任何报告事务被丢弃或延迟,则在2420处,关于非报告事务是否针对可信实体进行确定。例如,TLP可能正在尝试访问在可信域中配置的接口(例如,虚拟功能、可分配设备接口)。如果确定该事务正在尝试访问可信实体,则流程可以传递到图24B的流程2400B中的2430。
在2430处,识别TLP安全流前缀中(例如,前缀报头中)的可信位。在2432处,关于可信位是否被置位进行确定。如果可信位未被置位,则事务针对可信实体,而没有对它本身是可信实体的指示。因此,在2434处,非报告事务被拒绝,并且可能产生非预期请求错误。
如果在2432处确定可信位被置位,或者如果在2420处确定非报告事务不针对可信实体,则在图24A中的2422处,使用NPR解密计数器的递增的值和NPR解密密钥来解密TLP中的加密数据。在一个实施例中,使用对称加密/解密,因此目标设备处的NPR解密密钥与发起设备处的NPR加密密钥相同。一旦数据被解密,则在2424处,可以在目标设备处消耗该数据。
在进行一些修改的情况下,图23和图24A-24B的流程还适用于以受限操作模式操作的安全流协议的两个流的实现方式。在两个流的实现方式中,图23和图24A-24B的流程也适用于非报告事务。加密计数器、加密密钥、解密计数器和解密密钥可以与针对三个流的实施例的图23和图24A-24B中所描述的相同。在两个流的实施例中,如果确定要准备和发送的事务是非报告事务类型,则执行流程2300。如果确定接收到的事务是非报告事务类型,则执行流程2400A。使用与流程2300和2400A-2400B中指示的相同的加密/解密计数器(例如,npr_enc_counter,npr_dec_counter)和加密/解密密钥(例如,npr_stream_enc_key,npr_stream_dec_key)来执行这些流程。然而,在两个流的实施例中,在流程2300和2400A-2400B中使用针对报告事务和完成事务组合的发送计数器和接收计数器(例如,pr_cpl_sent_counter,pr_cpl_received_counter),而不是仅用于报告事务的发送计数器和接收计数器(例如,pr_sent_counter,pr_received_counter)。PR-CPL发送计数器包含表示自从发送上一个非报告请求以来发送的报告请求和完成请求的数量的值。PR-CPL接收计数器包含表示自从接收到上一个非报告请求以来接收到的报告请求和完成请求的数量的值。
图25是示出根据至少一个实施例的可以与使用以具有三个流的受限排序模式操作的安全流协议来发送完成事务相关联的示例操作的流程2500的流程图。在至少一个实施例中,一个或多个操作对应于图25的活动。在一个示例中,作为先前接收到要求响应的事务(例如,非报告事务)并且包括分层协议栈(例如,732、734、736)或其一部分的目标设备(例如,1130、730)的端点可以执行或利用一个或多个操作。在一个示例中,事务层(例如,732、205)或其一部分可以执行或利用一个或多个操作。在一个示例中,目标设备的在SEC-STREAM TLP插入点(例如,733)或其一部分处包括硬件和/或软件的事务层(例如,732、205)执行或利用一个或多个操作。
在2502处,目标设备确定完成事务要被发送到发起设备,并要使用以受限排序模式操作的安全流协议在可信会话中进行保护。另外,目标设备还可以确定事务是否源自可信实体。在2504处,获得在目标设备处维护的PR发送计数器的值,然后将NPR发送计数器中的值置零。
在2506处,可以利用用于完成事务的数据来形成事务层分组(TLP)。包含地址和路由信息的TLP报头也包含在TLP中。在2508处,获得并递增CPL加密计数器的值。在2510处,使用CPL加密计数器的递增的值和CPL加密密钥来加密数据。
在2512处,生成包括前缀指示符、前缀报头和获得的PR发送计数器的值的TLP安全流前缀,并将其插入TLP中。前缀指示符指示安全流前缀包含安全流协议信息。前缀指示符指示安全流前缀包含安全流协议信息。前缀报头可以至少包括可信位、PR发送计数器位和模式位。在该示例中,对于完成事务,可信位(例如,设置为1)指示该分组是可信会话的一部分,PR发送计数器位(例如,设置为1)指示TLP安全流前缀中包含PR发送计数器的值,并且模式位(例如,设置为1)指示安全流协议正在以受限排序模式操作。
在2514处,在安全流前缀、TLP报头(例如,包含用于分组的寻址/路由信息)和加密数据上计算完整性码值(ICV)。在一个示例中,使用AES-GCM加密在块密码流中执行消息认证码(MAC)的加密和生成。
在2516处,可以将ICV附加到事务层分组。在2518处,目标设备经由一个或多个中间设备通过串行链路将受保护的完成事务发送到发起设备。在一个示例中,受保护的完成事务在被传输到发起设备时经过一个或多个中间设备。中间设备可以使用事务报头中的明文数据将事务路由到发起设备,而不解密或以其他方式确定有效载荷数据。
图26A-26B是示出根据至少一个实施例的可以与接收完成事务以及使用以具有三个流的受限排序模式操作的安全流协议相关联的示例操作的流程2600A和2600B的流程图。在至少一个实施例中,一个或多个操作对应于图26A-26B的活动。作为包括分层协议栈(例如,712、714、716)或其一部分的发起设备(例如,1110、710)的端点可以执行或利用一个或多个操作。在一个示例中,发起设备的在SEC-STREAM TLP插入点(例如,713)或其一部分处包括硬件和/或软件的事务层(例如,712、205)执行或利用一个或多个操作。
在2602处,发起设备经由一个或多个中间设备通过串行链路从目标设备接收完成事务。在2604处,发起设备确定完成事务是通过以受限排序模式操作的端到端协议在用于完成事务的安全流中进行保护的。可以基于完成事务的事务层分组(TLP)的TLP安全流前缀进行这些确定。特别地,可以使用TLP安全流前缀和前缀报头中模式位的存在来进行该确定。
在2606处,获得并递增由发起设备维护的CPL解密计数器的值。在2608处,使用CPL解密计数器的递增的值和CPL解密密钥来验证TLP的完整性。在一个示例中,在非报告事务的TLP上计算完整性码值(ICV),非报告事务的TLP包括安全流前缀、TLP报头和加密数据。在2610处,关于计算出的ICV是否等同于附加到TLP的ICV进行确定。如果它们不等同,则验证失败,并且在2612处,可能会引发非致命错误(例如,记录错误消息,生成响应以发送到目标设备,密钥被重新初始化,等等)。在一个示例中,使用AES-GCM加密在块密码流中执行消息认证码(MAC)的加密和生成。
如果ICV验证没有失败(例如,计算出的ICV等同于完成事务的ICV),则在2614处,将在发起设备处维护的PR接收计数器的值减小包含在TLP的安全流前缀中的PR发送计数器的值。如果发送和接收相同数量的报告请求,则PR接收计数器的结果值为零。如果发送的报告请求多于接收的报告请求,则PR接收计数器的结果值为负,这表示至少某些报告请求被丢弃或延迟。
在2616处,关于PR接收计数器的结果值是否小于零进行确定,从而指示至少某些报告请求被丢弃或延迟。如果是这样,则在2418处,可能会引发致命错误(例如,记录错误消息,生成响应以通知目标设备,终止会话,等等)。
如果确定PR接收计数器的结果值不小于零,从而指示没有任何报告事务被丢弃或延迟,则在2620处,关于完成事务是否针对可信实体进行确定。例如,TLP可能正在尝试访问在可信域中配置的接口(例如,虚拟功能、可分配设备接口)。如果确定完成事务正在尝试访问可信实体,则流程可以传递到图26B的流程2600B中的2630。
在2630处,识别TLP安全流前缀中(例如,前缀报头中)的可信位。在2632,关于可信位是否被置位进行确定。如果可信位未被置位,则事务针对可信实体,而没有对它本身是可信实体的指示。因此,在2634处,完成事务被拒绝,并且可能产生非预期完成错误。
如果在2632处确定可信位被置位,或者如果在2620处确定完成事务不针对可信实体,则在图26A中的2622处,使用CPL解密计数器的递增的值和CPL解密密钥来解密TLP中的加密数据。在一个实施例中,使用对称加密/解密,因此发起设备处的CPL解密密钥与目标设备处的CPL加密密钥相同。一旦数据被解密,则在2624处,可以在发起设备处消耗该数据。
转到图27-29,交互图示出了根据本公开的在实现以显式计数器模式(ECM)配置的安全流协议的互连架构中可能发生的可能事务。图27、图28和图29中的交互图2700、2800和2900示出了发起设备2710和目标设备2730,它们可以以与参考图11的发起设备1110和目标设备1130所描述的相似的方式配置。图27-29所示的密钥可以类似于参考图11描述的密钥。然而,图27-29所示的加密/解密计数器可以由端点共享。另外,端点可以各自包括跟踪结构而不是PR接收计数器来跟踪接收到的报告请求。
当以显式计数器模式进行操作时,允许设置在端点之间的交换机(例如,PCIe交换机820)对分组进行重排序。为了检测丢弃或重放的事务,每个端点都设置有跟踪结构以检测事务的丢弃或重放。例如,发起设备2710设置有跟踪结构2712,并且目标设备2730设置有跟踪结构2732,这基于跟踪结构对于所示出的特定事务的用法而在图27-29中示出。对于每个事务,分组携带序列号,以使接收设备能够跟踪接收到的分组、缺失的分组和重放的分组。在至少一个实施例中,序列号可以是用于加密的计数器(例如,pr_enc_counter,npr_enc_counter,cpl_enc_counter)。在至少一个实施例中,序列号可以作为TLP有效载荷的一部分被携带。
当在端点处接收到事务时,搜索跟踪结构以确定分组中的序列号是否先前已经与事务一起被接收。如果序列号先前未与事务一起被接收,则将序列号添加到跟踪结构。如果序列号先前已与事务一起被接收,则表明正在发生重放,并且可以采取适当的措施。
在至少一些实现方式中,端点可以具有有限量的跟踪序列号的容量。为了避免必须跟踪无限大数量的序列号,跟踪结构可以维护水印方案。在水印方案的一个示例中,一旦已经接收到多达阈值序列号的所有分组,就可以更新水印并且可以将低于水印的序列号从跟踪器结构中清除。然后可以将与后续事务一起发送的序列号添加到跟踪结构,直到已接收到多达更新的阈值序列号的所有分组,并且处理可以继续如先前描述地进行,以再次刷新跟踪结构。
跟踪结构还可以用于检测非报告请求或完成请求是否已推送了所有较新的报告请求。例如,端点可以使用其跟踪结构来验证PR发送计数器(例如,pr_sent_counter)等于自从接收到上一个非报告请求或完成请求以来该端点已接收到的报告请求的数量。如果验证失败,PR发送计数器不等于自从接收到上一个非报告请求或完成请求以来端点已接收到的报告请求的数量,则可能引发错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。否则,目标设备消耗该分组。
图27是示出针对从发起设备2710发送到目标设备2730的报告请求2702以显式计数器模式操作的安全流协议的交互图2700。发起设备2710对其PR加密计数器(例如,pr_enc_counter)的值进行采样并递增采样值。发起设备2710还递增其PR发送计数器(例如,pr_sent_counter)。对计数器进行采样可以包括获得计数器的值并且可能存储该值以便快速访问。发起设备2710对用于形成报告请求2702的事务层分组(TLP)的数据进行加密。可以使用PR加密计数器的递增的值和PR加密密钥(例如,pr_stream_enc_key)来执行加密。还在包括加密数据、TLP报头、TLP安全流前缀和PR序列号的TLP上计算完整性码值(ICV),例如,MAC。在至少一个实施例中,PR序列号可以被存储在TLP安全流前缀中。在一个示例中,AES-GCM被用于块密码流中的消息认证码(MAC)的加密和生成。在至少一些实施例中,PR序列号是PR加密计数器的递增的值(例如,递增的pr_enc_counter),并且由ICV进行完整性保护。发起设备2710将由加密数据和ICV保护的报告请求发送到目标设备2730。
目标设备2730从报告请求2702的TLP获得PR序列号。目标设备2730搜索跟踪结构2732,以确定接收到的PR序列号是否先前已在另一报告请求中被接收。如果PR序列号先前已与另一报告请求一起被接收,则表明已经发生了重放,并引发错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。如果PR序列号先前未与另一报告请求一起被接收,则将其添加到跟踪结构中。目标设备2730使用来自TLP的PR序列号(例如,递增的pr_enc_counter)和目标设备2730维护的PR解密密钥(例如,pr_stream_dec_key)对报告请求的TLP中的数据进行解密。目标设备2730通过验证与TLP一起接收的ICV来验证TLP的完整性。在至少一个实施例中,ICV是使用TLP中的PR序列号(例如,递增的pr_enc_counter)和PR解密密钥来验证的MAC。如果ICV验证失败,则引发错误(例如,记录错误消息,生成响应以发送到发起设备,对密钥进行重新初始化,等等)。否则,目标设备消耗该分组。如果没有引发错误,则将PR序列号添加到跟踪结构。
图28是示出针对从发起设备2710发送到目标设备2730的非报告请求2802(具有或不具有数据)以显式计数器模式操作的安全流协议的交互图2800。发起设备2710对其NPR加密计数器(例如,npr_enc_counter)的值进行采样并递增采样值。发起设备2710还对其PR发送计数器(例如,pr_sent_counter)的值进行采样,然后将PR发送计数器中的值置零。发起设备2710对用于形成非报告请求2802的TLP的数据进行加密。可以使用由发起设备维护的NPR加密计数器的递增的值和NPR加密密钥(例如,npr_stream_enc_key)来执行加密。还在包括加密数据、TLP报头、TLP安全流前缀和NPR序列号的TLP上计算完整性码值(ICV),例如,MAC。在一个示例中,AES-GCM被用于块密码流中的消息认证码(MAC)的加密和生成。在至少一些实施例中,NPR序列号是NPR加密计数器的递增的值(例如,递增的npr_enc_counter),并且由ICV进行完整性保护。TLP还可以携带PR发送计数器的采样值,以指示自从最一个非报告事务或完成事务以来发起设备2710已经发送了多少报告请求。发起设备2710将由加密数据和ICV保护的非报告请求发送到目标设备2730。
目标设备2730从非报告请求2802的TLP获得NPR序列号。目标设备2730搜索跟踪结构2732,以确定接收到的NPR序列号是否先前已在另一非报告请求中被接收。如果NPR序列号先前已与另一非报告请求一起被接收,则表明已经发生重放,并引发错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。如果NPR序列号先前未与另一非报告请求一起被接收,则将其添加到跟踪结构中。目标设备2730使用来自TLP的NPR序列号(例如,递增的npr_enc_counter)和目标设备维护的NPR解密密钥(例如,npr_stream_dec_key)来解密非报告请求的TLP中的数据。目标设备2730通过验证与TLP一起接收的ICV来验证TLP的完整性。在至少一个实施例中,ICV是使用TLP中的NPR序列号(例如,递增的npr_enc_counter)和NPR解密密钥来验证的MAC。如果ICV验证失败,则引发错误(例如,记录错误消息,生成响应以发送到发起设备,对密钥进行重新初始化,等等)。在至少一些实施例中,如本文先前参考例如图14描述的,还可以评估PR发送计数器。如果没有引发错误,则将PR序列号添加到跟踪结构,并且目标设备消费该分组。
图29是示出针对从目标设备2730发送到发起设备2710的完成请求2902以显式计数器模式操作的安全流协议的交互图2900。目标设备2730对其CPL加密计数器(例如,cpl_enc_counter)进行采样并递增采样值。目标设备2730还对其自己的PR发送计数器(例如,目标设备2730处的pr_sent_counter)中的值进行采样,然后将PR发送计数器中的值置零。目标设备2730对用于形成完成请求2902的TLP的数据进行加密。可以使用CPL加密计数器的递增的值和目标设备维护的CPL加密密钥(例如,cpl_stream_enc_key)来执行加密。
还在包括加密数据、TLP报头、TLP安全流前缀和CPL序列号的TLP上计算完整性码值(ICV),例如,MAC。在一个示例中,AES-GCM被用于块密码流中的消息认证码(MAC)的加密和生成。在至少一些实施例中,CPL序列号是CPL加密计数器的递增的值(例如,递增的npr_enc_counter),并且由ICV进行完整性保护。TLP还可以携带PR发送计数器的采样值,以指示自从上一个非报告事务或完成事务以来目标设备2730已经发送了多少报告请求。发起设备2710将由加密数据和ICV保护的完成请求发送到发起设备2710。
发起设备2710从完成事务的TLP获得CPL序列号。发起设备2710搜索跟踪结构2712,以确定接收到的CPL序列号是否先前已在另一完成事务中被接收。如果CPL序列号先前已与另一完成事务一起被接收,则表明已经发生了重放,并引发错误(例如,记录错误消息,生成响应以通知发起设备,终止会话,等等)。如果CPL序列号先前未与另一完成事务一起被接收,则将其添加到跟踪结构2712。发起设备2710使用来自TLP的CPL序列号(例如,递增的cpl_enc_counter)和发起设备维护的CPL解密密钥(例如,cpl_stream_dec_key)来解密完成事务的TLP中的数据。发起设备2710通过验证与TLP一起接收的ICV来验证TLP的完整性。在至少一个实施例中,ICV是使用TLP中的CPL序列号(例如,递增的npr_enc_counter)和CPL解密密钥来验证的MAC。如果ICV验证失败,则引发错误(例如,记录错误消息,生成响应以发送到发起设备,对密钥进行重新初始化,等等)。在至少一些实施例中,如本文先前参考例如图15描述的,还可以评估PR发送计数器。如果没有引发错误,则将CPL序列号添加到跟踪结构,并且发起设备消耗该分组。
显式计数器模式的一种示例变型在本文中被称为“受限显式计数器模式”或“RECM”。受限显式计数器模式减少了携带计数器的开销。首先,要求报告事务有序。因此,报告事务不携带计数器,这消除了附加的计数器带宽开销。其次,非报告请求可以自由地重排序,并且可以针对跟踪结构进行检查以确保它们不会被重放。再次,可以使用在(例如,非报告请求的)对应读取TLP中携带的计数器来对完成请求进行加密,但是该计数器与完成请求加密计数器相级联以进行加密。因此,完成加密计数器可以小于(例如,32位)在显式计数器模式下使用的加密计数器。完成请求携带完成加密计数器。当在读取的发起设备处接收到完成请求时,发起设备使用用于生成读取请求的读取计数器(例如,NPR加密计数器),并将其与在完成请求中接收到的完成加密计数器级联,以对完成请求分组进行解密。由于完成请求和读取请求都部分地基于公共读取计数器进行加密,因此这使完成请求和读取请求绑定在一起。因此,该方案允许对完成请求进行重排序,而无需针对任何跟踪结构进行检查。因为完成请求携带较短的计数器,所以它们具有较低的带宽开销。
在某些情况下,可能希望引入除受限排序模式和显式计数器模式以外的附加变型。例如,可能希望附加变型以获得比受限排序模式所允许的更多的排序灵活性,但是比显式计数器模式所产生的实现成本/复杂度和/或带宽开销更小。在这些变型中的一些变型中,可以修改或不包括TLP安全流前缀。
在某些情况下,可能推断正在使用安全性。例如,推断可以基于系统配置、地址范围等。在该示例中,可以省略TLP中的明确指示(例如,sec-stream前缀指示符1202)。
在另一可能的实施例中,不允许在报告请求和完成请求之间进行重排序,可以减少计数器的总数。例如,PR和CPL机制(例如,计数器和密钥)可以被组合,其中,如本文先前描述的,将报告请求和完成请求的组合视为单独的流。
因为很少使用基于ID的排序(IDO),所以在至少一些实施例中,可以不允许或忽略IDO,而不会对已建立的使用模型产生重大影响。即使使用IDO,对于安全使用模型,端到端连接也确保请求者ID保持不变,因此IDO不会影响通过安全连接的业务的端到端排序。
在另一实施例中,如果可以消除宽松排序,则可以省略用于报告请求的显式计数器(例如,pr_sent_counter和pr_received_counter)。此外,如果如本文先前所讨论的那样,完成请求和报告请求被合并,则可以减少那些TLP的带宽开销。
图30示出了根据各种实施例的适合用于实践本公开的各种编程方面的示例设备。可以使用设备3000来实现所公开的方法的编程方面。如图所示,设备3000可以包括一个或多个处理器3002,每个处理器具有一个或多个处理器核心,或者可选地,硬件加速器3003(其可以是ASIC或FPGA)。在替代实施例中,硬件加速器3003可以是处理器3002的一部分,或者一起集成在SOC上。另外,设备3000可以包括存储器3004(其可以是多种已知的持久性存储介质中的任何一种),以及包括模块3009的数据存储电路3008。此外,设备3000可以包括耦合到一个或多个传感器3014以及显示屏3013的I/O接口3018。I/O接口3018可以包括发射机3023和接收机3017。此外,设备3000可以包括通信电路3005,该通信电路3005包括发射机(Tx)3011和网络接口控制器(NIC)3012。这些元件可以经由系统总线3006彼此耦合,系统总线3006可以表示一条或多条总线,例如,一条或多条PCIe总线。对于各种PCIe实施例,通信电路3005和I/O接口3018可以分别包括发射机3011和NIC 3012,以及发射机3023和接收机3017。特别地,相应的发射机3011、NIC 3012、发射机3023和接收机3017可以包括本文中参考附图描述的基于翻转的分组化技术。在各种实施例中,诸如处理器3002、存储器3004、存储装置3008等之类的其他组件中的一个或多个也可以同样包括用于与具有本文参考附图描述的安全流技术的高速串行总线3006(例如,高速PCIe总线)耦合和利用其操作的高速串行链路接口电路。在多条总线的情况下,这些总线可以由一个或多个总线桥(未示出)桥接。设备3031可以耦合到系统总线3006,并且设备3035可以耦合到I/O总线3039。设备3031可以包括接口3033,并且设备3035可以包括接口3037。
在实施例中,(多个)处理器3002(也称为“处理器电路3002”)可以是一个或多个处理元件,其被配置为通过执行指令来执行基本的算术、逻辑和输入/输出操作。处理器电路3002可以被实现为独立的系统/设备/封装或作为现有系统/设备/封装的一部分。处理器电路3002可以是一个或多个微处理器、一个或多个单核心处理器、一个或多个多核心处理器、一个或多个多线程处理器、一个或多个GPU、一个或多个超低电压处理器、一个或多个嵌入式处理器、一个或多个DSP、一个或多个FPD(硬件加速器)(例如,FPGA、结构化ASIC、可编程SoC(PSoC)等),和/或其他处理器或处理/控制电路。处理器电路3002可以是SoC的一部分,其中本文所讨论的处理器电路3002和其他组件形成为单个IC或单个封装。作为示例,处理器电路3002可以包括一个或多个
Figure BDA0002402696840000521
Figure BDA0002402696840000522
处理器;Advanced Micro Devices(AMD)加速处理单元(APU),
Figure BDA0002402696840000523
Figure BDA0002402696840000524
处理器;Apple公司A系列、S系列、W系列等处理器;
Figure BDA0002402696840000525
处理器;
Figure BDA0002402696840000526
处理器;等等。
在实施例中,处理器电路3002可以包括传感器中心,其可以通过处理从一个或多个传感器3014获得的数据而充当协处理器。传感器中心可以包括被配置为通过执行算术、逻辑和输入/输出操作来集成从一个或多个传感器3014中的每个传感器获得的数据的电路。在实施例中,传感器中心能够对所获得的传感器数据加时间戳,响应于针对这样的数据的查询而向处理器电路3002提供传感器数据,缓冲传感器数据,将包括针对一个或多个传感器3014中的每个传感器的独立流的传感器数据连续流送到处理器电路3002,基于预定义的阈值或条件/触发来报告传感器数据,和/或其他类似的数据处理功能。
在实施例中,存储器3004(也称为“存储器电路3004”等)可以是被配置为存储用于操作计算机设备3000的数据或逻辑的电路。存储器电路3004可以包括可以用于提供给定量的系统存储器的多个存储器设备。作为示例,存储器电路3004可以是可以以已知的任何合适实现方式进行配置的任何合适的类型、数量的易失性存储器设备(例如,随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)等)和/或非易失性存储器设备(例如,只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、反熔丝等)和/或其组合。在各种实现方式中,单个存储器设备可以由任意数量的不同封装类型形成,例如,单管芯封装(SDP)、双管芯封装(DDP)或四管芯封装,双列直插式存储器模块(DIMM)(例如,microDIMM或MiniDIMM),和/或任何其他类似存储器设备。为了提供诸如数据、应用、操作系统等之类的信息的持久存储,存储器电路3004可以包括一个或多个大容量存储设备,例如,固态磁盘驱动器(SSDD);闪速存储器卡,例如,SD卡、microSD卡、xD图片卡等,以及USB闪存驱动器;与处理器电路3002相关联的片上存储器或寄存器(例如,在低功率实现方式中);微型硬盘驱动器(HDD);来自
Figure BDA0002402696840000531
Figure BDA0002402696840000532
的三维交叉点(3D XPOINT)存储器等。
在使用FPD的情况下,处理器电路3002和存储器电路3004(和/或数据存储电路3008)可以包括逻辑块或逻辑结构、存储器单元、输入/输出(I/O)块以及可以被编程以执行本文讨论的示例实施例的各种功能的其他互连资源。存储器单元可以被用于将数据存储在查找表(LUT)中,查找表被处理器电路3002用来实现各种逻辑功能。存储器单元可以包括各种存储器/存储级别的任意组合,包括但不限于EPROM、EEPROM、闪速存储器、SRAM、反熔丝等。
在实施例中,具有共享的或相应的控制器的数据存储电路3008(也称为“存储电路3008”等)可以提供诸如模块3009、操作系统等之类的信息的持久存储。数据存储电路3008可以实现为固态驱动器(SSD);固态磁盘驱动器(SSDD);串行AT附件(SATA)存储设备(例如,SATA SSD);闪存驱动器;闪速存储器卡,例如,SD卡、microSD卡、xD图片卡等,以及USB闪存驱动器;三维交叉点(3D Xpoint)存储器设备;与处理器电路3002相关联的片上存储器或寄存器;硬盘驱动器(HDD);微型HDD;电阻变化存储器;相变存储器;全息存储器;或化学存储器;等等。如图所示,数据存储电路3008被包括在计算机设备3000中;然而,在其他实施例中,数据存储电路3008可以被实现为与计算机设备3000的其他元件分离的一个或多个设备。
在一些实施例中,数据存储电路3008可以包括操作系统(OS)(未示出),该操作系统可以是通用操作系统或专门为计算机设备3000编写和定制的操作系统。OS可能包括一个或多个驱动程序、库和/或应用编程接口(API),其为模块3009和/或控制系统配置提供程序代码和/或软件组件,以控制和/或获得/处理来自一个或多个传感器3014的数据。
模块3009可以是用于执行计算机设备3000的各种功能和/或用于执行本文所讨论的实施例的功能的软件模块/组件。在处理器电路3002和存储器电路3004包括硬件加速器(例如,FPGA单元、硬件加速器3003)以及处理器核心的实施例中,可以利用用于执行本文实施例的至少一些功能的逻辑(代替采用要由(多个)处理器核心执行的编程指令)的逻辑对硬件加速器(例如,FPGA单元)进行预配置(例如,利用适当的位流、逻辑块/结构等)。例如,模块3009可以包括用于关于显示屏3013、屏上输入设备、屏上输入接口控制器、屏外输入设备、发射机3023和接收机3017所讨论的对应实体的逻辑。
计算机设备3000的组件可以通过系统总线3006相互通信。系统总线3006可以包括任何数量的技术,例如,本地互连网络(LIN);工业标准架构(ISA);扩展ISA(EISA);PCI;PCI扩展(PCIx);PCIe;集成电路间(I2C)总线;并行小型计算机系统接口(SPI)总线;通用应用编程接口(CAPI);点对点接口;电力总线;专有总线,例如,
Figure BDA0002402696840000541
超路径接口(UPI)、
Figure BDA0002402696840000542
加速器链路(IAL)或基于SoC的接口中使用的某种其他专有总线;或任何数量的其他技术。在一些实施例中,系统总线3006可以是控制器局域网(CAN)总线系统、时间触发协议(TTP)系统或FlexRay系统,其可以允许各种设备(例如,一个或多个传感器3014等)使用消息或帧相互通信。
通信电路3005可以包括用于与无线网络或有线网络进行通信的电路。例如,通信电路3005可以包括发射机(Tx)3011和网络接口控制器(NIC)3012。通信电路3005可以包括专用于特定无线通信协议的一个或多个处理器(例如,基带处理器、调制解调器等)。
可以包括NIC 3012以提供到网络和/或其他设备的有线通信链路。有线通信可以提供以太网连接、USB上以太网等等,或者可以基于其他类型的网络,例如,DeviceNet、ControlNet、Data Highway+、PROFIBUS或PROFINET等等。可以包括附加的NIC 3012以允许连接到第二网络(未示出)或其他设备,例如,第一NIC 3012通过以太网提供到网络150的通信,而第二NIC 3012通过另一类型的网络提供到其他设备的通信,例如,包括个人计算机(PC)设备的个域网(PAN)。在一些实施例中,设备3000的各种组件(例如,一个或多个传感器3014等)可以如上面讨论的经由NIC 3012而不是经由如下文讨论的I/O电路3018连接到(多个)处理器3002。
Tx 3011可以包括一个或多个无线电以与网络和/或其他设备无线地通信。Tx3011可以包括硬件设备,这些硬件设备实现使用通过固态或非固态介质的调制电磁辐射与有线网络和/或其他设备进行通信。这样的硬件设备可以包括交换机、滤波器、放大器、天线元件等,以通过生成或以其他方式产生无线电波以将数据发送到一个或多个其他设备并将接收到的信号转换成诸如数字数据之类的可用信息来促进空中(OTA)通信,该可用信息可以提供给计算机设备3000的一个或多个其他组件。在一些实施例中,设备3000的各种组件(例如,一个或多个传感器3014等)可以经由如上面讨论的Tx 3011而不是经由如下文的I/O电路3018连接到设备3000。在一示例中,一个或多个传感器3014可以经由短距离通信协议与设备3000耦合。
Tx 3011可以包括与任何数量的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(时分-同步码分多址)、3GPP版本8(Pre-4G)(第三代合作伙伴计划版本8(Pre-4thGeneration))、3GPP版本9(第三代合作伙伴计划版本9)、3GPP版本10(第三代合作伙伴计划版本10)、3GPP版本11(第三代合作伙伴计划版本11)、3GPP版本12(第三代合作伙伴计划版本12)、3GPP版本13(第三代合作伙伴计划版本13)、3GPP版本14(第三代合作伙伴计划版本14)、3GPP LTE Extra、LTE许可辅助接入(LAA)、UTRA(UMTS地面无线电接入)、E-UTRA(演进的UMTS地面无线电接入)、高级LTE(4G)(高级长期演进(第4代))、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(芬兰语为Autoradiopuhelin,“车载无线电电话”)、NMT(北欧移动电话)、Hicap(NTT(日本电报和电话)的大容量版本)、CDPD(蜂窝数字分组数据)、Mobitex、DataTAC、iDEN(集成数字增强网络)、PDC(个人数字蜂窝)、CSD(电路交换数据)、PHS(个人手持电话系统)、WiDEN(宽带集成数字增强网络)、iBurst、未许可移动接入(UMA,也称为3GPP通用接入网络,或GAN标准))、无线千兆联盟(WiGig)标准、一般的mmWave标准(以10-90GHz及更高操作的无线系统,例如,WiGig、IEEE 802.11ad、IEEE 802.11ay等)。除了上面列出的标准之外,任何数量的卫星上行链路技术都可以用于上行链路收发器,包括例如符合ITU(国际电信联盟)或ETSI(欧洲电信标准协会)发布的标准的无线电等等。因此,本文提供的示例被理解为适用于现有的和尚未制定的各种其他通信技术。前述协议的实现方式、组件和细节可以是本领域中已知的那些,并且为了简洁起见在本文中省略。
输入/输出(I/O)接口3018可以包括电路,例如,外部扩展总线(例如,通用串行总线(USB)、FireWire、Thunderbolt、PCI/PCIe/PCIx等),用于将计算机设备3000与外部组件/设备(例如,一个或多个传感器3014等)连接。I/O接口电路3018可以包括任何合适的接口控制器和连接器,以互连处理器电路3002、存储器电路3004、数据存储电路3008、通信电路3005和计算机设备3000的其他组件中的一个或多个。接口控制器可以包括但不限于存储器控制器、存储控制器(例如,独立磁盘冗余阵列(RAID)控制器)、基板管理控制器(BMC)、输入/输出控制器、主机控制器等。连接器可以包括例如总线(例如,总线3006)、端口、插槽、跳线、互连模块、插座、模块化连接器等。I/O电路3018可以经由有线连接将设备3000与一个或多个传感器3014等耦合,例如,使用USB、FireWire、Thunderbolt、RCA、视频图形阵列(VGA)、数字视觉接口(DVI)和/或mini-DVI、高清多媒体接口(HDMI)、S-Video等。
一个或多个传感器3014可以是被配置为检测事件或环境变化、将检测到的事件转换为电信号和/或数字数据以及将信号/数据传输/发送到计算机设备3000的任何设备。一个或多个传感器3014中的一些可以是用于提供计算机生成的感官输入的传感器。一个或多个传感器3014中的一些可以是用于运动和/或对象检测的传感器。这样的一个或多个传感器3014的示例尤其可以包括电荷耦合器件(CCD)、互补金属氧化物半导体(CMOS)有源像素传感器(APS)、无透镜图像捕获设备/相机、热像仪(红外)相机、光成像检测与测距(LIDAR)系统等。在一些实现方式中,一个或多个传感器3014可以包括无透镜图像捕获机构,该无透镜图像捕获机构包括孔径元件的阵列,其中穿过孔径元件的阵列的光限定图像的像素。在实施例中,一个或多个传感器3014的运动检测可以与光产生设备耦合或相关联,例如,一个或多个红外投影仪将红外光网格投影到场景上,其中红外相机可以记录反射的红外光来计算深度信息。
一个或多个传感器3014中的一些可以用于位置和/或方位检测、外界/环境条件检测等。这样的一个或多个传感器3014的示例可以尤其包括具有压电、压阻和/或电容组件的微机电系统(MEMS),其可以用于确定与计算机设备3000有关的环境条件或位置信息。在实施例中,MEMS可以包括3轴加速度计、3轴陀螺仪和/或磁力计。在一些实施例中,一个或多个传感器3014还可以包括一个或多个重力仪、高度计、气压计、接近传感器(例如,(多个)红外辐射检测器等)、深度传感器、外界光传感器、热传感器(温度计)、超声收发器等。
这些元件(例如,一个或多个处理器3002,硬件加速器3003,存储器3004,包括模块3009的数据存储电路3008,输入/输出接口3018,一个或多个传感器3014,包括Tx 3011、NIC3012的通信电路3005,系统总线3006,I/O总线3039,设备3031,设备3035)中的每一个可以执行其本领域已知的常规功能。另外,这些元件可以被用来存储和托管实现各种操作系统功能和/或应用的编程指令的执行,特别是与以上参考附图描述的与安全流技术相关联的操作。各种元件可以由(多个)处理器3002支持的汇编指令或可以被编译成这样的指令的高级语言(例如,C)来实现。未以软件实现的与设备3000相关联的操作可以以硬件(例如,经由硬件加速器3003)和/或固件实现。
这些元件3002-3039的数量、能力和/或容量可以变化,这取决于设备3000被配置为支持的其他设备的数量。否则,元件3002-3039的构造是已知的,因此将不再进一步描述。
如本领域技术人员将理解的,本公开可以体现为方法或计算机程序产品。因此,本公开除了如先前所描述的以硬件体现之外,还可以采取完全软件实施例(包括固件、驻留软件、微代码等)的形式,或者组合全部通常可以称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。
此外,本公开可以采取以任何有形的或非暂时性的表达介质体现的计算机程序产品的形式,该有形的或非暂时性的表达介质具有体现在介质中的计算机可用程序代码。图31示出了可以适用于存储指令的示例计算机可读非暂时性存储介质,该指令响应于装置执行指令而使得装置实践本公开的选定方面。如图所示,非暂时性计算机可读存储介质3102可以包括多个编程指令3104(本文也称为“指令”)。编程指令3104可以被配置为响应于编程指令的执行而使诸如设备3000之类的设备能够执行例如与操作系统功能和/或应用相关联的各种编程操作,特别是与以上参考附图描述的安全流技术相关联的操作。
在替代实施例中,编程指令3104可以替代地设置在多种计算机可读非暂时存储介质3102上。在替代实施例中,编程指令3104可以设置在诸如信号之类的计算机可读暂时性存储介质3102上。可以使用一种或多种计算机可用介质或计算机可读介质的任何组合。计算机可用介质或计算机可读介质可以是例如但不限于电子、磁性、光学、电磁、红外或半导体的系统、装置、设备或传播介质。计算机可读介质的更具体的示例(非穷尽列表)将包括以下各项:具有一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储设备、诸如支持互联网或内联网的介质之类的传输介质或磁性存储设备。注意,计算机可用介质或计算机可读介质甚至可以是纸张或在其上打印程序的另一种合适介质,因为程序可以经由例如对纸张或其他介质进行光学扫描而被电子地捕获,然后编译、解释或以其他方式以合适方式处理(如果需要),然后存储在计算机存储器中。在本文档的上下文中,计算机可用介质或计算机可读介质可以是能够包含、存储、传送、传播或传输程序以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备相结合地使用的任何介质。计算机可用介质可以包括在基带中或者作为载波的一部分的、其中体现有计算机可用程序代码的传播数据信号。计算机可用程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、RF等。
转到图32,示出了根据本公开的至少一个实施例的示例性计算机系统的框图,该计算机系统利用包括用于执行指令的执行单元的处理器形成,其中互连中的一个或多个互连实现一个或多个特征。根据本公开,例如,在本文描述的实施例中,系统3200包括诸如处理器3202之类的组件,用于采用包括逻辑的执行单元来执行用于过程数据的算法。系统3200表示基于可从Intel公司(Santa Clara,California)获得的PENTIUM IIITM、PENTIUM4TM、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,但是也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统3200执行可从Microsoft公司(Redmond,Washington)获得的WINDOWSTM操作系统的版本,但是也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户接口。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本公开的替代实施例可以用在其他设备中,例如,手持设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统(SoC)、网络计算机(NetPC)、机顶盒、网络中心、广域网(WAN)交换机或可以执行根据至少一个实施例的一个或多个指令的任何其他系统。
在该示出的实施例中,处理器3202包括一个或多个执行单元3208,以实现要执行至少一个指令的算法。可以在单处理器台式机或服务器系统的上下文中描述一个实施例,但是替代实施例可以包括在多处理器系统中。系统3200是“中心”系统架构的示例。计算机系统3200包括处理数据信号的处理器3202。作为一个说明性示例,处理器3202包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或者任何其他处理器设备(例如,数字信号处理器)。处理器3202耦合到处理器总线3210,该处理器总线3210在处理器3202与系统3200中的其他组件之间传输数据信号。系统3200的元件(例如,图形加速器3212、存储器控制器中心3216、存储器3220、I/O控制器中心3230、无线收发器3226、闪速BIOS 3228、网络控制器3234、音频控制器3236、串行扩展端口3238、具有用户输入接口3242的传统式I/O控制器3240等)执行其被本领域技术人员公知的常规功能。
在一个实施例中,处理器3202包括1级(L1)内部高速缓冲存储器3204。取决于架构,处理器3202可以具有单个内部高速缓存或多级内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存两者的组合,这取决于特定的实现方式和需求。寄存器文件3206用于在各种寄存器中存储不同类型的数据,该寄存器包括整数寄存器、浮点寄存器、向量寄存器、分组式寄存器、影子寄存器、检查点寄存器、状态寄存器以及指令指针寄存器。
包括用于执行整数运算和浮点运算的逻辑的执行单元3208也驻留在处理器3202中。在一个实施例中,处理器3202包括用于存储微代码(μcode)的微代码ROM,该微代码在被执行时将执行用于特定宏指令或处理复杂场景的算法。这里,微代码潜在地是可更新的,以处理处理器3202的逻辑错误/修复。对于一个实施例,执行单元3208包括用于处理打包的指令集3209的逻辑。通过将打包的指令集3209连同执行指令的相关联的电路一起包括在通用处理器3202的指令集中,许多多媒体应用使用的操作可以使用通用处理器3202中的打包的数据来执行。因此,通过使用处理器的数据总线的完全宽度对打包的数据执行操作,来更高效地加速和执行许多多媒体应用。这潜在地消除了跨处理器的数据总线传送较小数据单元以执行一个或多个操作(一次一个数据元素)的需要。
执行单元3208的替代实施例还可以在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中使用。系统3200包括存储器3220。存储器3220包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其他存储设备。存储器3220存储由要由处理器3202执行的数据信号表示的指令和/或数据。
注意,本文描述的实施例的前述特征或方面中的任一个可以用于图32中所示的一个或多个互连上。例如,用于耦合处理器3202的内部单元的管芯上互连(ODI)(未示出)实现了上面描述的实施例的一个或多个方面。或者,实施例关联于处理器总线3210(例如,Intel快速路径互连(QPI)或其他已知的高性能计算互连),到存储器3220的高带宽存储器路径3218,到图形加速器3212的点对点链路(例如,符合快速外围组件互连(PCIe)的结构),控制器中心互连3222,用于耦合其他所示组件的I/O或其他互连(例如,USB、PCI、PCIe)。这些组件的一些示例包括音频控制器3236、固件中心(闪速BIOS)3228、无线收发器3226、数据存储设备3224、包含用户输入和键盘接口3242的传统式I/O控制器3210、诸如通用串行总线(USB)之类的串行扩展端口3238以及网络控制器3234。数据存储设备3224可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其他大容量存储设备。
图33示出了根据实施例的以点对点(PtP)配置布置的另一计算系统3300,其中,一个或多个互连实现根据本公开的至少一个实施例的一个或多个特征。特别地,图33示出了其中处理器、存储器和输入/输出设备通过多个点对点接口互连的系统。通常,本文描述的计算系统或计算设备中的一个或多个(例如,发起设备710、1110、1710、2710,目标设备730、1130、1730、2730等)可以以与计算系统3300相同或相似的方式配置。
处理器3370和3380可以被实现为单核心处理器3374a和3384a或多核心处理器3374a-3374b和3384a-3384b。处理器3370和3380可以各自包括由其相应的一个或多个核心使用的高速缓存3371和3381。共享高速缓存(未示出)可以包含在任一个处理器中,或者在两个处理器外但经由P-P互连与处理器连接,使得如果处理器被置于低功率模式,则可以将一个或两个处理器的本地高速缓存信息存储在共享高速缓存中。
处理器3370和3380也可以各自包括集成的存储器控制器逻辑(MC)3372和3382,以与存储器元件3332和3334进行通信,存储器元件3332和3334可以是本地附接到相应处理器的主存储器的一部分。在替代实施例中,存储器控制器逻辑3372和3382可以是与处理器3370和3380分开的分立逻辑。存储器元件3332和/或3334可以存储处理器3370和3380要用于实现本文概述的操作和功能的各种数据。
处理器3370和3380可以是任何类型的处理器,例如,结合其他附图所讨论的那些。处理器3370和3380可以分别使用点对点接口电路3378和3388经由点对点(PtP)接口3350交换数据。处理器3370和3380可以各自使用点对点接口电路3376、3386、3394和3398经由单独的点对点接口3352和3354与输入/输出(I/O)子系统3390交换数据。I/O子系统3390(在至少一个实施例中可以是芯片组)可以使用可以是PtP接口电路的接口电路3392经由高性能图形接口3339与高性能图形电路3338交换数据。在一个实施例中,高性能图形电路3338是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。I/O子系统3390还可以与显示器3316通信,以显示人类用户可见的数据。在替代实施例中,图33所示的PtP链路中的任一个或全部可以被实现为多点总线而不是PtP链路。
I/O子系统3390可以经由接口电路3396与总线3310通信。可以有一个或多个设备通过总线3310通信,例如,总线桥3318和I/O设备3314。经由总线3310,总线桥3318可以与其他设备通信,例如,用户接口3322(例如,键盘、鼠标、触摸屏或其他输入设备)、通信设备3326(例如,调制解调器、网络接口设备或可以通过计算机网络3360通信的其他类型的通信设备)、音频I/O设备3324和/或数据存储设备3328。数据存储设备3328可以存储可以由处理器3370和/或3380执行的代码和数据3330。在替代实施例中,可以用一个或多个PtP链路来实现总线架构的任何部分。
图33中描绘的计算机系统是可以用于实现本文讨论的各种实施例的计算系统的实施例的示意图示。将意识到,图33中描绘的系统的各种组件可以以片上系统(SoC)架构或能够实现本文提供的示例和实现方式的功能和特征的任何其他合适的配置来组合。
用于执行本公开的操作中的至少一些的计算机程序代码可以以一种或多种编程语言的任何组合来编写,编程语言包括面向对象的编程语言(例如,Java、Smalltalk、C++等)以及常规的过程编程语言(例如,“C”编程语言或类似的编程语言)。程序代码可以完全在用户的计算机上、部分在用户的计算机上、作为独立的软件包、部分在用户的计算机上且部分在远程计算机上、或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开。应该理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以用于产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的框或多个框中指定的功能/动作的单元。
这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指导计算机或其他可编程数据处理装置以特定方式运行,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或框图的框或多个框中指定的功能/动作的指令单元的制品。
计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的进程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的框或多个框中指定的功能/动作的进程。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、装置、计算机可读介质、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示包括用于实现指定的(多个)逻辑功能的一个或多个可执行指令的模块、段或代码部分和/或硬件。还应该注意,在一些替代实现方式中,框中指出的功能可以不按照附图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。还应注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的、基于专用硬件的系统或专用硬件和计算机指令的组合来实现。如本文所使用的,“计算机实现的方法”可以指由一个或多个处理器、具有一个或多个处理器的计算机系统、诸如智能电话之类的移动设备(其可以包括一个或多个处理器)、平板电脑、笔记本电脑、机顶盒、游戏机等执行的任何方法。
一个或多个实施例可以被实现为计算机进程、计算系统或诸如计算机可读介质的计算机程序产品之类的制品。该计算机程序产品可以是计算机系统可读并且编码用于执行计算机进程的计算机程序指令的计算机存储介质。
所附权利要求中的所有单元或步骤加功能元素的对应结构、材料、动作和等同物旨在包括用于与特别要求保护的其他要求保护的元素相结合地执行功能的任何结构、材料或动作。对本公开的描述出于说明和描述的目的呈现,但是并非旨在穷尽性的或限于以所公开的形式的公开内容。在不脱离本公开的范围和精神的情况下进行许多修改和变化对于普通技术人员将是显而易见的。选择并描述实施例以便于最好地解释本公开的原理和实际应用,并且使本领域的其他普通技术人员能够理解针对具有适于设想的特定用途的各种修改的实施例的公开内容。
一个或多个实现方式的前述描述提供了说明和描述,但并不旨在穷举或将实施例的范围限制为所公开的精确形式。鉴于以上教导,修改和变化是可能的,或者可以从各种实施例的实践中获得。
其他说明和示例:
以下示例涉及根据本说明书的实施例。该系统、装置、方法和机器可读存储介质实施例可以包括以下示例之一或其组合:
示例A1提供一种装置、系统、一种或多种计算机可读存储介质、方法和/或基于硬件、固件和/或软件的逻辑,其中A1的示例包括第一设备,其包括电路,该第一设备用于:使用端到端协议,至少部分地基于事务的事务类型在第一安全流中保护事务,其中第一安全流与第二安全流分开;以及通过在第一设备与第二设备之间建立的链路将在第一安全流中保护的事务发送到第二设备,其中事务用于从第一设备经过一个或多个中间设备到达第二设备。
在示例A2中,示例A1的主题可以可选地包括,事务是与第一安全流相关联的两个或更多个事务中的一个,并且其中,两个或更多个事务用于以与第一设备发送两个或更多个事务相同的顺序由第二设备接收。
在示例A3中,示例A1-A2中任一个的主题可以可选地包括,第二安全流至少部分地基于第二事务类型,其中,与第二安全流相关联的两个或更多个其他事务用于以与第一设备发送两个或更多个其他事务相同的顺序由第二设备接收。
在示例A4中,示例A1-A3中任一个的主题可以可选地包括,事务包括:加密数据;报头,其包括用于事务的路由信息;以及安全流信息,其包括对事务是否源自第一设备处的可信实体的指示。
在示例A5中,示例A4的主题可以可选地包括,其中第一设备还用于:至少在安全流信息、加密数据和报头上计算完整性码值;以及将完整性码值添加到事务,其中完整性码值用于至少部分地基于分配给第一安全流的第一加密计数器来计算。
在示例A6中,示例A4-A5中任一个的主题可以可选地包括,第一设备还用于:以未加密的形式将报头和安全流信息插入事务中;以及至少部分地基于分配给第一安全流的第一加密密钥生成加密数据。
在示例A7中,示例A4-A6中任一个的主题可以可选地包括,第一设备用于将安全流信息存储在事务的事务层分组的前缀、事务层分组的一个或多个报头之一、事务层分组的有效载荷或添加到事务层分组的安全层中。
在示例A8中,示例A4-A7中任一个的主题可以可选地包括:指示事务是否源自第一设备处的可信实体的可信位;以及指示该事务是否包括计数器值的计数器位,该计数器值表示自从第一设备向第二设备发送上一个非报告事务或上一个完成事务以来第一设备向第二设备发送的报告事务的数量。
在示例A9中,示例A1-A8中任一个的主题可以可选地包括,其中基于事务的事务类型是非报告事务类型或完成事务类型,第一设备还用于:获得第一计数器的值;以及将第一计数器的值插入事务中,其中第一计数器的值表示自从第一设备向第二设备发送上一个非报告事务或上一个完成事务以来第一设备向第二设备发送的报告事务的数量。
在示例A10中,示例A1-A8中任一个的主题可以可选地包括,其中基于事务的事务类型是报告事务类型,第一设备还用于:递增表示自从第一设备向第二设备发送上一个非报告事务或上一个完成事务以来第一设备向第二设备发送的报告事务的数量的第二计数器值。
示例C1提供一种装置、系统、一种或多种计算机可读存储介质、方法和/或基于硬件、固件和/或软件的逻辑,其中C1的示例包括指令,该指令可执行以使机器用于:在第一设备处,通过在第一设备与第二设备之间建立的链路从第二设备接收事务,其中该事务用于从第二设备经过一个或多个中间设备到达第一设备;以及确定事务是根据端到端协议在第一安全流中受保护的,其中事务是至少部分地基于事务的事务类型在第一安全流中受保护的。
在示例C2中,示例C1的主题可以可选地包括,事务是与第一安全流相关联的两个或更多个事务中的一个,其中指令可执行以使机器进一步用于在第一设备处以与第二设备发送两个或更多个事务相同的顺序从第二设备接收两个或更多个事务。
在示例C3中,示例C1-C2中任一个的主题可以可选地包括,第二安全流至少部分地基于第二事务类型,其中指令可执行以使机器进一步用于在第一设备处以第二设备发送与第二安全流相关联的两个或更多个其他事务的顺序相同接收两个或更多个其他事务。
在示例C4中,示例C1-C3中任一个的主题可以可选地包括,事务包括:加密数据;报头,其包括事务的路由信息;以及安全流信息,其包括对事务是否源自第二设备处的可信实体的指示。
在示例C5中,示例C4的主题可以可选地包括,指令可执行以使机器进一步用于通过以下操作来验证事务的完整性:至少在安全流信息、报头和加密数据上计算完整性码值;以及比较完整性码值与事务中的另一完整性码值。
在示例C6中,示例C4-C5中任一个的主题可以可选地包括,其中报头和安全流信息以未加密的形式包含在事务中,并且其中指令可执行以使机器进一步用于至少部分地基于分配给第一安全流的第一解密密钥对加密数据进行解密。
在示例C7中,示例C4-C6中任一个的主题可以可选地包括,安全流信息包含在事务的事务层分组的前缀、事务层分组的一个或多个报头之一、事务层分组的有效载荷或添加到事务层分组的安全层中。
在示例C8中,示例C4-C7中任一个的主题可以可选地包括:指示事务是否源自第二设备处的可信实体的可信位;以及指示事务是否包括计数器值的计数器位,该计数器值表示自从第二设备向第一设备发送上一个非报告事务或上一个完成事务以来第二设备向第一设备发送的报告事务的数量。
在示例C9中,示例C1-C8中任一个的主题可以可选地包括,其中基于事务的事务类型是非报告事务类型或完成事务类型,指令可执行以使机器进一步用于:从事务中获得第一计数器的值;将第一设备中的第二计数器的值递减第一计数器的值;以及基于确定第二计数器的值小于零,终止与该事务相关联的会话,其中第一计数器的值表示自从第二设备向第一设备发送上一个非报告事务或上一个完成事务以来第二设备向第一设备发送的报告事务的数量,并且第二计数器的值表示自从第一设备从第二设备接收到上一个非报告事务或上一个完成事务以来第一设备从第二设备接收到的报告事务的数量。
示例S1提供一种装置、系统、一种或多种计算机可读存储介质、方法和/或基于硬件、固件和/或软件的逻辑,其中S1的示例包括:第一端点,其包括发射机;以及第二端点,其包括接收机,该接收机用于经由链路和一个或多个中间设备从第一端点接收事务,其中第一端点用于:确定事务的事务类型;以及在事务中插入安全流信息,该安全流信息包括对事务在第一安全流中受保护的指示,其中第一安全流至少部分地基于事务的事务类型。
在示例S2中,示例S1的主题可以可选地包括,事务是与第一安全流相关联的两个或更多个事务中的一个,其中第一端点还用于将两个或更多个事务以特定顺序发送到第二端点,并且其中第二端点还用于以该特定顺序从第一端点接收两个或更多个事务。
在示例S3中,示例S1-S2中任一个的主题可以可选地包括,第二安全流至少部分基于第二事务类型,其中第二端点还用于以与第一端点发送与第二安全流相关联的两个或更多个其他事务相同的顺序接收两个或更多个其他事务。
在示例S4中,示例S1-S3中任一个的主题可以可选地包括,事务包括加密数据以及报头,该报头包括用于事务的路由信息。
在示例S5中,示例S4的主题可以可选地包括,其中第一端点用于通过以下操作在第一安全流中保护事务:至少在安全流信息、报头和加密数据上计算第一完整性码值;以及将第一完整性码值添加到事务。
在示例S6中,示例S4-S5中任一个的主题可以可选地包括,其中第二端点用于通过以下操作来验证事务的完整性:至少在事务中的安全流信息、报头和加密数据上计算第二完整性码值;以及比较第二完整性码值与事务中的第一完整性码值。
在示例S7中,示例S4-S6中任一个的主题可以可选地包括,其中第一端点还用于:以未加密的形式将报头和安全流信息插入事务中;以及至少部分地基于分配给第一安全流的第一加密密钥生成加密数据。
在示例S8中,示例S1-S7中任一个的主题可以可选地包括,其中基于事务的事务类型是报告事务类型,第一端点还用于递增表示自从第一端点向第二端点发送上一个非报告事务或上一个完成事务以来第一端点向第二端点发送的报告事务的数量的第一计数器值。
在示例S9中,示例S1-S7中任一个的主题可以可选地包括,其中基于事务的事务类型是非报告事务类型或完成事务类型,第一端点还用于:获得第一计数器的值;以及将第一计数器的值插入事务中,其中第一计数器的值表示自从第一端点向第二端点发送上一个非报告事务或完成事务以来第一端点向第二端点发送的报告事务的数量。
在示例S10中,示例S9的主题可以可选地包括,其中第二端点还用于:从事务中获得第一计数器的值;将第二端点中的第二计数器的值递减从事务中获得的第一计数器的值;以及基于确定第二计数器的值小于零,终止与该事务相关联的会话,其中第二计数器的值表示自从第二端点从第一端点接收到上一个非报告事务或上一个完成事务以来第二端点从第一端点接收到的报告事务的数量。
在示例S11中,示例S1-S10中任一个的主题可以可选地包括,其中第一端点用于将安全流信息存储在事务的事务层分组的前缀、事务层分组的一个或多个报头之一、事务层分组的有效载荷或添加到事务层分组的安全层中。
在示例S12中,示例S1-S11中任一个的主题可以可选地包括,其中一个或多个中间设备中的第一中间设备用于:接收事务;以及基于确定事务在第一安全流中受保护,基于受限排序规则来确定是否对事务进行重排序以进行传输,其中,受限排序规则包括:不允许报告事务超过另一报告事务;不允许非报告事务超过非报告事务;不允许非报告事务超过报告事务;不允许完成事务超过报告事务;以及不允许完成事务超过完成事务。
在示例S13中,示例S1-S12中任一个的主题可以可选地包括:指示事务是否源自第一端点处的第一可信实体的可信位;以及指示事务是否包括计数器值的计数器位,该计数器值表示自从第一端点向第二端点发送上一个非报告事务或上一个完成事务以来第一端点向第二端点发送的报告事务的数量。
在示例X1中,前述示例中任一个的主题可以可选地包括,第一安全流基于报告事务类型、非报告事务类型或完成事务类型中的一个。
在示例X2中,前述示例中任一个的主题可以可选地包括,第一安全流基于非报告事务类型或者报告事务类型与完成事务类型的组合中的一个。
在示例X3中,前述示例中任一个的主题可以可选地包括,其中事务用于包括对端到端协议是以受限排序模式还是显式计数器模式进行操作的指示。
在示例X4中,前述示例中任一个的主题可以可选地包括,其中链路是基于快速外围组件互连(PCIe)协议和端到端协议建立的。
示例Y1提供一种装置,该装置包括用于执行前述示例中任一个的方法的单元。
在示例Y2中,示例Y1的主题可以可选地包括,用于执行该方法的单元包括至少一个处理器和至少一个存储器元件。
在示例Y3中,示例X1-X3中任一个的主题可以可选地包括,该装置是计算系统或片上系统中的一个。

Claims (25)

1.一种装置,包括:
包括电路的第一设备,所述第一设备用于:
使用端到端协议,至少部分地基于事务的事务类型在第一安全流中保护所述事务,其中,所述第一安全流与第二安全流分开;以及
通过在所述第一设备与第二设备之间建立的链路将在所述第一安全流中保护的所述事务发送到所述第二设备,其中,所述事务用于从所述第一设备经过一个或多个中间设备到达所述第二设备。
2.根据权利要求1所述的装置,其中,所述第一安全流基于报告事务类型、非报告事务类型或完成事务类型中的一个。
3.根据权利要求1所述的装置,其中,所述第一安全流基于非报告事务类型或者报告事务类型与完成事务类型的组合中的一个。
4.根据权利要求1所述的装置,其中,所述事务是与所述第一安全流相关联的两个或更多个事务中的一个,并且其中,所述两个或更多个事务用于以与所述第一设备发送所述两个或更多个事务相同的顺序由所述第二设备接收。
5.根据权利要求4所述的装置,其中,所述第二安全流至少部分地基于第二事务类型,其中,与所述第二安全流相关联的两个或更多个其他事务用于以与所述第一设备发送所述两个或更多个其他事务相同的顺序由所述第二设备接收。
6.根据权利要求1所述的装置,其中,所述事务包括:
加密数据;
报头,其包括用于所述事务的路由信息;以及
安全流信息,其包括对所述事务是否源自所述第一设备处的可信实体的指示。
7.根据权利要求6所述的装置,其中,所述第一设备还用于:
至少在所述安全流信息、所述加密数据和所述报头上计算完整性码值;以及
将所述完整性码值添加到所述事务,其中,所述完整性码值用于至少部分地基于分配给所述第一安全流的第一加密计数器来计算。
8.根据权利要求6-7中任一项所述的装置,其中,所述第一设备还用于:
以未加密的形式将所述报头和所述安全流信息插入所述事务中;以及
至少部分地基于分配给所述第一安全流的第一加密密钥生成所述加密数据。
9.根据权利要求6-7中任一项所述的装置,其中,所述第一设备用于将所述安全流信息存储在所述事务的事务层分组的前缀、所述事务层分组的一个或多个报头之一、所述事务层分组的有效载荷或添加到所述事务层分组的安全层中。
10.根据权利要求6-7中任一项所述的装置,其中,所述安全流信息包括:
指示所述事务是否源自所述第一设备处的所述可信实体的可信位;以及
指示所述事务是否包括计数器值的计数器位,所述计数器值表示自从所述第一设备向所述第二设备发送上一个非报告事务或上一个完成事务以来所述第一设备向所述第二设备发送的报告事务的数量。
11.根据权利要求1-7中任一项所述的装置,其中,基于所述事务的事务类型是非报告事务类型或完成事务类型,所述第一设备还用于:
获得第一计数器的值;以及
将所述第一计数器的值插入所述事务中,其中,所述第一计数器的值表示自从所述第一设备向所述第二设备发送上一个非报告事务或上一个完成事务以来所述第一设备向所述第二设备发送的报告事务的数量。
12.根据权利要求1-7中任一项所述的装置,其中,基于所述事务的事务类型是报告事务类型,所述第一设备还用于:
递增表示自从所述第一设备向所述第二设备发送上一个非报告事务或上一个完成事务以来所述第一设备向所述第二设备发送的报告事务的数量的第一计数器。
13.根据权利要求1-7中任一项所述的装置,其中,所述事务用于包括对所述端到端协议是以受限排序模式还是显式计数器模式操作的指示。
14.根据权利要求1-7中任一项所述的装置,其中,所述第一设备与所述第二设备之间的所述链路是基于快速外围组件互连(PCIe)协议和所述端到端协议建立的。
15.一种方法,包括:
在第一设备处,通过在所述第一设备与第二设备之间建立的链路从第二设备接收事务,其中,所述事务从所述第二设备经过一个或多个中间设备到达所述第一设备;以及
确定所述事务是根据端到端协议在安全流中受保护的,其中,所述事务是至少部分地基于所述事务的事务类型在所述安全流中受保护的。
16.根据权利要求15所述的方法,其中,所述安全流基于报告事务类型、非报告事务类型或完成事务类型中的一个。
17.根据权利要求15所述的方法,其中,所述事务包括:
加密数据;
报头,其包括用于所述事务的路由信息;以及
安全流信息,其包括对所述事务是否源自所述第二设备处的可信实体的指示。
18.根据权利要求17所述的方法,还包括:
通过以下操作来验证所述事务的完整性:
至少在所述安全流信息、所述报头和所述加密数据上计算完整性码值;以及
比较所述完整性码值和与所述事务一起接收的另一完整性码值。
19.根据权利要求15所述的方法,其中,基于所述事务的事务类型是非报告事务类型或完成事务类型,所述方法还包括:
从所述事务中获得第一计数器的值;
将所述第一设备中的第二计数器的值递减所述第一计数器的值;以及
基于确定所述第二计数器的值小于零,终止与所述事务相关联的会话,其中,所述第一计数器的值表示自从所述第二设备向所述第一设备发送上一个非报告事务或上一个完成事务以来所述第二设备向所述第一设备发送的报告事务的数量,并且所述第二计数器的值表示自从所述第一设备从所述第二设备接收到上一个非报告事务或上一个完成事务以来所述第一设备从所述第二设备接收到的报告事务的数量。
20.一种装置,所述装置包括用于执行根据权利要求15-19中任一项所述的方法的单元。
21.一种系统,包括:
第一端点,其包括发射机;以及
第二端点,其包括接收机,所述接收机用于经由链路和一个或多个中间设备从所述第一端点接收事务,
其中,所述第一端点用于:
确定所述事务的事务类型;以及
在所述事务中插入指示所述事务在安全流中受保护的安全流信息,其中,所述安全流至少部分地基于所述事务的事务类型。
22.根据权利要求21所述的系统,其中,所述事务包括:
加密数据;以及
报头,其包括用于所述事务的路由信息。
23.根据权利要求22所述的系统,其中,所述第一端点用于通过以下操作在所述安全流中保护所述事务:
至少在所述安全流信息、所述报头和所述加密数据上计算第一完整性码值;以及
将所述第一完整性码值添加到所述事务,
其中,所述第二端点用于通过以下操作来验证所述事务的完整性:
至少在所述事务中的所述安全流信息、所述报头和所述加密数据上计算第二完整性码值;以及
比较所述第二完整性码值与所述事务中的所述第一完整性码值。
24.根据权利要求23所述的系统,其中,所述第一端点还用于:
以未加密的形式将所述报头和所述安全流信息插入所述事务中;以及
至少部分地基于分配给所述安全流的第一加密密钥生成所述加密数据。
25.根据权利要求21-24中任一项所述的系统,其中,所述一个或多个中间设备中的第一中间设备用于:
接收所述事务;以及
基于确定所述事务在所述安全流中受保护,基于受限排序规则来确定是否对所述事务进行重排序以进行传输,其中,所述受限排序规则包括:
不允许报告事务超过另一报告事务;
不允许非报告事务超过非报告事务;
不允许非报告事务超过报告事务;
不允许完成事务超过报告事务;以及
不允许完成事务超过完成事务。
CN202010151771.6A 2019-03-08 2020-03-06 用于串行互连的安全流协议 Pending CN111666246A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311283996.7A CN117234990A (zh) 2019-03-08 2020-03-06 用于串行互连的安全流协议

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962815554P 2019-03-08 2019-03-08
US62/815,554 2019-03-08
US16/445,019 US11743240B2 (en) 2019-03-08 2019-06-18 Secure stream protocol for serial interconnect
US16/445,019 2019-06-18

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311283996.7A Division CN117234990A (zh) 2019-03-08 2020-03-06 用于串行互连的安全流协议

Publications (1)

Publication Number Publication Date
CN111666246A true CN111666246A (zh) 2020-09-15

Family

ID=68055157

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311283996.7A Pending CN117234990A (zh) 2019-03-08 2020-03-06 用于串行互连的安全流协议
CN202010151771.6A Pending CN111666246A (zh) 2019-03-08 2020-03-06 用于串行互连的安全流协议

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311283996.7A Pending CN117234990A (zh) 2019-03-08 2020-03-06 用于串行互连的安全流协议

Country Status (3)

Country Link
US (2) US11743240B2 (zh)
EP (2) EP4280073A3 (zh)
CN (2) CN117234990A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157510A (zh) * 2021-04-25 2021-07-23 海光信息技术股份有限公司 高速串行计算机扩展总线事务排序规则测试方法及装置
TWI739690B (zh) * 2020-12-08 2021-09-11 喬鼎資訊股份有限公司 雷霆裝置模組及與該雷霆裝置模組整合之具有根聯合體元件之電子裝置
CN113961409A (zh) * 2021-10-25 2022-01-21 广州芯德通信科技股份有限公司 一种提高串口数据安全的方法及其olt设备
CN114912107A (zh) * 2022-07-15 2022-08-16 飞腾信息技术有限公司 访问管理方法、相关装置、系统及计算机可读存储介质
CN116233000A (zh) * 2023-05-04 2023-06-06 苏州浪潮智能科技有限公司 报文发送控制方法、装置、服务器、设备和存储介质
TWI807766B (zh) * 2021-04-09 2023-07-01 美商谷歌有限責任公司 安全之全晶片通信

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580420B (zh) 2018-06-11 2023-03-28 阿里巴巴集团控股有限公司 基于集成芯片的数据处理方法、计算机设备、存储介质
US11070527B2 (en) 2018-12-07 2021-07-20 Intel Corporation Securing platform link with encryption
US11792114B2 (en) 2019-05-23 2023-10-17 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient management of non-idempotent operations in a network interface controller (NIC)
US11456855B2 (en) * 2019-10-17 2022-09-27 Arm Limited Obfuscating data at-transit
US11627079B2 (en) * 2020-06-02 2023-04-11 Apple Inc. Apparatus and methods for embedding security association identifier in IP address
US20210089388A1 (en) * 2020-07-14 2021-03-25 Intel Corporation System, Apparatus And Method For Providing Protection Against Silent Data Corruption In A Link
DE102020118960A1 (de) * 2020-07-17 2022-01-20 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren und Wiedergabeeinheit zur Wiedergabe von gesicherten Nachrichten
US11537761B2 (en) * 2020-09-25 2022-12-27 Intel Corporation Transparent network access control for spatial accelerator device multi-tenancy
US20210255973A1 (en) * 2020-12-17 2021-08-19 Intel Corporation Stream routing and ide enhancements for pcie
US20220179961A1 (en) * 2021-11-03 2022-06-09 Intel Corporation Method to support pci device having multiple spdm secure sessions with different security policies for each security domain by virtualized data object exchange

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454610B2 (en) * 2002-12-31 2008-11-18 Broadcom Corporation Security association updates in a packet load-balanced system
US7426602B2 (en) * 2004-01-08 2008-09-16 Topside Research, Llc Switch for bus optimization
JP2007300370A (ja) * 2006-04-28 2007-11-15 Toshiba Corp 情報処理装置及びその制御方法
CN101689957A (zh) * 2007-06-25 2010-03-31 Nxp股份有限公司 传输流处理器和解码器之间的编码数字视频内容保护
US8139575B2 (en) * 2007-06-29 2012-03-20 International Business Machines Corporation Device, system and method of modification of PCI express packet digest
CN101640629B (zh) * 2008-07-29 2012-08-29 华为技术有限公司 一种链路丢包监控的方法和双向转发探测设备
JP2010238150A (ja) 2009-03-31 2010-10-21 Toshiba Corp PCIExpress通信システム、及びその通信方法
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US20100312928A1 (en) * 2009-06-09 2010-12-09 Brownell Paul V System and method for operating a communication link
US8560848B2 (en) * 2009-09-02 2013-10-15 Marvell World Trade Ltd. Galois/counter mode encryption in a wireless network
JP2012010254A (ja) * 2010-06-28 2012-01-12 Fujitsu Ltd 通信装置、通信方法及び通信システム
WO2012044234A1 (en) * 2010-09-29 2012-04-05 Telefonaktiebolaget L M Ericsson (Publ) Determining loss of ip packets
IL210169A0 (en) 2010-12-22 2011-03-31 Yehuda Binder System and method for routing-based internet security
US8775700B2 (en) * 2011-09-29 2014-07-08 Intel Corporation Issuing requests to a fabric
JP6075169B2 (ja) 2013-04-09 2017-02-08 富士通株式会社 スイッチ装置、パケット制御方法及びデータ通信システム
US11283734B2 (en) 2014-04-30 2022-03-22 Intel Corporation Minimizing on-die memory in pull mode switches
US9596075B2 (en) * 2014-06-03 2017-03-14 L3 Technologies, Inc. Transparent serial encryption
US10699031B2 (en) * 2014-10-30 2020-06-30 Hewlett Packard Enterprise Development Lp Secure transactions in a memory fabric
US10157153B2 (en) * 2016-02-03 2018-12-18 Qualcomm Incorporated Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems
US20180183581A1 (en) 2016-12-28 2018-06-28 Intel Corporation Arrangements for datalink security
WO2019036217A1 (en) 2017-08-18 2019-02-21 Missing Link Electronics, Inc. HETEROGENEOUS TRANSPORT BASED ON PACKETS
US11677730B2 (en) 2018-01-24 2023-06-13 Intel Corporation Device authentication
US20190243796A1 (en) 2018-02-06 2019-08-08 Samsung Electronics Co., Ltd. Data storage module and modular storage system including one or more data storage modules
US11474967B2 (en) 2018-06-25 2022-10-18 Intel Corporation Systems, methods, and devices for dynamic high speed lane direction switching for asymmetrical interfaces
US11070527B2 (en) 2018-12-07 2021-07-20 Intel Corporation Securing platform link with encryption
US11361093B2 (en) 2018-12-12 2022-06-14 Intel Corporation Data release control based on authentication and link protection
US11048800B2 (en) 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI739690B (zh) * 2020-12-08 2021-09-11 喬鼎資訊股份有限公司 雷霆裝置模組及與該雷霆裝置模組整合之具有根聯合體元件之電子裝置
TWI807766B (zh) * 2021-04-09 2023-07-01 美商谷歌有限責任公司 安全之全晶片通信
CN113157510A (zh) * 2021-04-25 2021-07-23 海光信息技术股份有限公司 高速串行计算机扩展总线事务排序规则测试方法及装置
CN113157510B (zh) * 2021-04-25 2023-02-28 海光信息技术股份有限公司 高速串行计算机扩展总线事务排序规则测试方法及装置
CN113961409A (zh) * 2021-10-25 2022-01-21 广州芯德通信科技股份有限公司 一种提高串口数据安全的方法及其olt设备
CN114912107A (zh) * 2022-07-15 2022-08-16 飞腾信息技术有限公司 访问管理方法、相关装置、系统及计算机可读存储介质
CN116233000A (zh) * 2023-05-04 2023-06-06 苏州浪潮智能科技有限公司 报文发送控制方法、装置、服务器、设备和存储介质
CN116233000B (zh) * 2023-05-04 2023-08-04 苏州浪潮智能科技有限公司 报文发送控制方法、装置、服务器、设备和存储介质

Also Published As

Publication number Publication date
US11743240B2 (en) 2023-08-29
US20190306134A1 (en) 2019-10-03
EP3706005A1 (en) 2020-09-09
CN117234990A (zh) 2023-12-15
EP4280073A3 (en) 2024-02-21
EP3706005B1 (en) 2023-08-30
EP4280073A2 (en) 2023-11-22
US20230421545A1 (en) 2023-12-28

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
US11658947B2 (en) Securing platform link with encryption
US11677730B2 (en) Device authentication
EP3779762A1 (en) Secure communications over computer buses
US11533170B2 (en) Hardware mechanisms for link encryption
US11593529B2 (en) Device interface security management for computer buses
US11394531B2 (en) Overhead reduction for link protection
US11088967B2 (en) Shared resources for multiple communication traffics
US11294846B2 (en) System, apparatus and method for secure communication on a bus
CN113557515A (zh) 外围设备与安全电路系统的兼容性
US20200089645A1 (en) Security techniques for a peripheral component interconnect (pci) express (pcie) system
NL2029742B1 (en) Stream routing and ide enhancements for pcie
JP2015216450A (ja) 情報処理装置、情報処理システム及び中継プログラム
US11991159B2 (en) Bi-directional encryption/decryption device for underlay and overlay operations
US20240106644A1 (en) Mitigation of side channel attacks on platform interconnects using endpoint hardware based detection, synchronization and re-keying
TWI807766B (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