CN111682939A - 用于可信输入/输出装置的链路保护 - Google Patents

用于可信输入/输出装置的链路保护 Download PDF

Info

Publication number
CN111682939A
CN111682939A CN202010086659.9A CN202010086659A CN111682939A CN 111682939 A CN111682939 A CN 111682939A CN 202010086659 A CN202010086659 A CN 202010086659A CN 111682939 A CN111682939 A CN 111682939A
Authority
CN
China
Prior art keywords
soc
counter
encryption
data
decryption
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
CN202010086659.9A
Other languages
English (en)
Inventor
V.商布霍格
S.克哈布拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111682939A publication Critical patent/CN111682939A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/16Implementing security features at a particular protocol layer
    • H04L63/162Implementing security features at a particular protocol layer at the data link layer
    • 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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner

Landscapes

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

Abstract

一种片上系统(SoC)包含存储器、耦合到存储器的处理器和耦合到存储器和处理器的链路保护电路。链路保护电路包含SoC加密引擎以执行以下操作:接收第一密钥和来自存储器的第一数据;由SoC加密引擎的SoC加密计数器生成SoC加密计数器值;使用SoC加密计数器值和第一密钥来加密第一数据以生成第一加密的数据;以及促使第一加密的数据被传送到包含与SoC加密计数器同步的装置解密计数器的装置。

Description

用于可信输入/输出装置的链路保护
技术领域
本公开的实施例一般涉及用于输入/输出装置的链路保护。
背景技术
数据可经由中间节点被传送和接收。例如,片上系统(SoC)可经由诸如交换器或桥接器的中间节点传送数据到加速器装置。数据的传输和接收要被保护免于恶意动作,诸如,例如未经授权的读、未经授权的写和写丢弃。
附图说明
图1A根据某些实施例,图示了包含片上系统(SoC)、装置和中间节点的系统。
图1B根据某些实施例,图示了包含SoC、装置和中间节点的系统。
图1C根据某些实施例,图示了SoC的链路保护电路。
图1D根据某些实施例,图示了装置的链路保护电路。
图2A-C根据某些实施例,图示了包含SoC、装置和中间节点的系统。
图3A-3B是根据某些实施例的链路保护的方法的流程图。
图4A是根据一个实施例,图示了用于处理器的微架构的框图。
图4B是根据本公开的一实施例,图示了有序流水线和寄存器重命名段、乱序发布/执行流水线的框图。
图5根据一个实施例,图示了用于执行链路保护的处理器的微架构的框图。
图6是根据一个实施例的计算机系统的框图。
图7是根据另一实施例的计算机系统的框图。
图8是根据一个实施例的片上系统的框图。
图9图示了用于计算系统的框图的另一实施例。
图10图示了在其中本公开的一实施例可操作的系统。
图11图示了用于计算系统的框图的另一实施例。
具体实施方式
本文中描述的是涉及用于可信输入/输出(IO)装置的链路保护的技术。可信IO装置可指的是要成为其中数据的传输要受到保护的可信环境的一部分的片上系统(SoC)或装置(例如,加速器)。 例如,SoC可以是诸如可信执行环境(TEE)之类的可信环境的一部分,并且SoC可以被可通信地耦合到提供另外功能性的一个或多个装置(例如,IO装置、加速器、存储器装置等)。SoC可被直接耦合到装置,或者可经由一个或多个中间节点(例如,交换器、桥接器等)被耦合到装置。通常,为确保数据通信安全,数据可与在传送器(例如,SoC)处生成(例如,密钥可被用来在传送器生成MAC)并且在接收器(例如,装置)处验证(例如,密钥可被用来在接收器验证MAC)的加密钥的散列或消息认证代码(MAC)关联。加密钥的散列或MAC被用来保护在传送器与接收器之间的数据。通常,中间节点可看到纯文本形式的数据,如果中间节点不是可信计算基(TCB)的一部分,则这可造成安全性问题。
为确保经由中间节点在SoC与装置之间数据的传输安全,可在传输的每个段(例如,SoC到中间节点、中间节点到装置等)验证安全性。此方案可被认为是在链路到链路(L2L)基础上提供链路保护(例如,段保护),其中数据的完整性将在沿路径到目的地(例如,加速器等)的每跳(例如,中间节点)处被验证。在L2L下,沿传输的每个段(例如,SoC到中间节点、中间节点到装置等)通过其自己的密钥受到保护。例如,SoC可包含加密引擎以使用第一密钥来加密数据,中间节点可包含解密引擎以通过第一密钥来解密加密的数据和加密引擎以通过第二密钥来加密数据,以及装置可包含解密引擎以通过第二密钥来解密来自中间节点的加密的数据。每个中间节点可通过一个密钥来解密数据并且随后通过另一密钥来加密数据。
为实现L2L安全传输,每个中间节点要具有密码硬件(例如,每个链路的端点要具有密码硬件)。密码硬件可包含解密引擎以解密收到的加密的数据和加密引擎以重新加密解密的数据以便传输。密码硬件占去额外的面积,具有额外的功率消耗(例如,甚至由于功率的静态泄露而在闲置之时),由于解密和重新加密收到的数据而提供额外的时延等。在从源到目的地的每个中间节点增加了增大的时延和功率消耗,这可造成传输时延和平台功率消耗大幅增大。
如本文中所述的装置、系统和方法提供用于可信IO装置的链路保护(例如,端对端(E2E)保护)。要传送数据的第一装置(例如,SoC、可信IO装置)可具有第一链路保护电路。密码原语可包含加密和认证。加密可提供机密性,并且认证可提供数据完整性。MAC可被用于认证。所述两个密码原语可使用第一密钥(例如,秘密密钥)。第一链路保护电路可包含加密引擎以接收要被传送的第一数据(例如,读请求、写请求、完成分组)和第一密钥。加密引擎可包含要生成加密引擎计数器值的加密计数器。加密引擎可使用加密计数器值和第一密钥来加密第一数据以生成第一加密的数据(例如,加密引擎可使用第一密钥生成与要被传送的MAC一起的数据的密文)。第一装置可传送(例如,经由根端口,经由传送器)第一加密的数据到第二装置(例如,装置、SoC)。在本公开的实现中,第一装置可经由中间节点传送加密的数据到第二装置而未让中间节点在中间节点处验证加密的数据的完整性。相反,第一加密的数据将由第二装置的(例如,第二链路保护电路的)解密引擎使用第一密钥和与加密计数器值同步的解密计数器值(例如,由解密引擎的解密计数器生成)来解密。
第一装置和第二装置(例如,传送装置和接收装置、SoC和装置等)可各自具有链路保护电路,其使用密钥和计数器提供E2E保护(例如,在端点到端点基础上的链路保护)。E2E保护可在不依赖中间节点且中间节点不验证数据的完整性(例如,不知道路径的拓扑,不像L2L使用那样在信任边界中使用中间节点,密码工作能够在关键路径外进行)的情况下为数据转移提供保护。在一些实施例中,参与保护的实体仅仅是所述两个端点(例如,用于存储器访问的装置和SoC)。在一些实施例中,对于装置到装置通信,可存在两个装置和SoC牵涉在确保链路上的通信安全之中(例如,第一装置经由E2E保护向SoC进行发送,并且SoC经由E2E保护向第二装置进行发送)。E2E保护可被独立添加到链路而不依赖中间节点的制造商(例如,交换器和桥接器制造商),以提供此类保护。
E2E保护可在不更改通信协议(例如,高速外围组件互连(PCIe®)协议、Intel®加速器链路(IAL)协议、高速接口协议等)的情况下被提供。例如,PCIe®规范允许选择是否允许对读和写请求的重新排序或者限制对读和写请求的排序。重新排序读和写请求能够导致计数器在传送器与接收器之间变得不同步。由于PCIe®规范允许限制排序,因此,E2E保护可在不更改基础PCIe®协议的情况下工作。在一些实施例中,为避免错误和提供功能的校正,一对计数器(用于请求的每个类)可被用于生成可信请求,其被可携带可信IO请求的属性的新可信IO事务层分组(TLP)报头识别(例如,SoC、中间节点、装置等要保持具有可信IOTLP报头的数据的顺序)。可信IO TLP报头可具有两个位,一个用来指示数据是否被加密的位,以及指示数据是否为E2E保护的一部分的另一个位。如果数据被加密但未通过E2E保护被加密,则数据可通过另一类型的保护(例如,L2L保护)被加密。在相同平台上可支持多个链路加密方案。
本公开的实现的E2E保护可通过降低用于确保向/从端点传送的数据的安全的密码引擎和操作的数量,而降低用于支持链路加密解决方案的总体平台成本。中间节点可不具有在E2E保护下的密码引擎。因此,与常规L2L保护解决方案相比较,使用E2E保护来传送和接收数据的时延开销、功率、以及面积可被大幅降低。
E2E保护可被用于带有诸如信任域扩展(TDX)之类的TEE的IO保护,以实现以更低面积和性能开销的数据可信传输。TDX指的是指令集架构(ISA)扩展,其为在不可信云服务提供商(CSP)基础设施中执行的客户(租户)软件提供机密性(和完整性)。TDX架构(其能够是SoC能力)提供在可信域(TD)工作负载与CSP软件(诸如CSP的虚拟机管理器(VMM))之间的隔离。TDX架构的组件可包含1)存储器加密引擎、2)称为可信域资源管理器(TDRM)的资源管理能力(例如,TDRM可以是虚拟机监视器(VMM)的软件扩展)及3)经由一组微架构表、一组指令和中央处理单元(CPU)访问控制的TD控制结构提供的安全加密密钥管理能力。TDX架构提供处理器部署TD的能力,所述TD利用存储器加密引擎、安全密钥管理操作和访问控制的TD控制结构以便获得TD工作负载的安全操作。
图1A根据某些实施例,图示了包含SoC 110、装置120和中间节点130的系统100。SoC 110可包含链路保护电路112,并且每个装置120可包含链路保护电路122。在一些实施例中,链路保护电路112和每个链路保护电路122具有类似或等效功能性。在一些实施例中,链路保护电路112和每个链路保护电路122具有类似或等效硬件、固件和/或软件。图1B和2A-C中进一步详细描述了链路保护电路112和122。
虽然本文中的描述可涉及在SoC 110与装置120之间数据的传输和接收(例如,经由中间节点130),但数据的传输和接收可以是在两个装置120之间,其中所述两个装置120是相同、类似或不同类型的装置。在一些实施例中,数据的传输和接收可以是经由中间节点130在两个装置120之间。例如,装置120A可传送数据到中间节点130,并且中间节点130可传送数据到装置120B(例如,其中SoC 110不接收所述数据)。在一些实施例中,数据的传输和接收可以是在两个装置120、SoC 110和可选地一个或多个中间节点130之间。例如,装置120A可经由中间节点130传送数据到SoC 110,并且SoC 110可传送数据到装置120C。在一些实施例中,数据的传输和接收可以是在两个SoC 110之间,其中所述两个SoC 110是相同、类似或不同类型的SoC。
SoC 110可进一步包含处理器114(例如,处理器核)、存储器116和根端口118。SoC110可包含一个或多个另外的组件,诸如输入输出存储器管理单元(IOMMU)电路、填充缓冲器等(参见图1B)。SoC 110可以是集成电路。在一些实施例中,SoC 110的每个组件可被部署在相同衬底上。在一些实施例中,SoC 110的组件可被部署在两个或更多衬底上。在一些实施例中,根端口118、存储器116或处理器114中的一项或多项可以是链路保护电路的一部分。在一些实施例中,处理器114、存储器116、链路保护电路112和根端口118是不同的组件。在一些实施例中,处理器114、存储器116、链路保护电路112或根端口118中的两项或更多项可以是相互一体的。例如,链路保护电路112可被包含为处理器114中的集成块。
每个装置120可包含一个或多个另外的组件,诸如存储缓冲器、加载缓冲器、装置存储器、处理器、根端口、传送器、接收器等(参见图1B)。装置120可以是IO装置、加速器装置(例如,可编程加速卡(PAC)、图形加速器)、网络卡(例如,集成网络卡)、存储器(例如,存储器装置、动态随机存取存储器(DRAM))、图形卡、现场可编程门阵列(FPGA)、集成电路(IC)、处理器、另外的SoC等中的一项或多项。装置120可提供一个或多个另外的功能性到SoC(例如,以加速处理等)。装置120可以是离散装置(例如,与SoC 110不在相同衬底上)或者可以是集成装置(例如,与SoC在相同衬底上)。装置120可提供另外的功能性到SoC 110(例如,在另外的功能性在与SoC 110相同的衬底上将不合适的情况下)。
中间节点130可以是集线器、桥接器、交换器、路由器等中的一项或多项。在一些实施例中,中间节点130(例如,集线器)可传送收到的数据(例如,在未过滤的情况下)到所有连接的装置(例如,SoC 110、装置120)。在一些实施例中,中间节点130(例如,桥接器)可连接第一本地网络到使用相同协议的第二本地网络,并且可过滤业务(例如,在转发数据前识别数据的目的地)。在一些实施例中,中间节点(例如,交换器)可具有多个端口,并且可在转发数据前执行错误检查。在一些实施例中,中间节点130(例如,路由器)可基于地址(例如,IP地址以允许通过不同网络协议发送数据)来转发数据。
在一些实施例中,中间节点130(例如,路由器)基于在中间节点130上执行的软件来转发数据。在一些实施例中,中间节点130(例如,交换器)基于硬件(例如,专用集成电路(ASIC))来转发数据。在一些实施例中,中间节点130基于中间节点130的固件来转发数据。在一些实施例中,中间节点基于软件、硬件或固件中的两项或更多项的组合来转发数据。在一些实施例中,两个或更多中间节点130(例如,相同类型,不同类型)被定位在SoC 110与装置120之间。
SoC 110和装置120可通过根据PCIe®协议(例如,根据PCI Express®规范基础规范版本3.0(2007年1月17日公布))或诸如串行数据输入/输出(SDIO)标准之类的另一此类协议的互连,向彼此传送数据(例如,经由一个或多个中间节点130)。SoC 110与装置120之间的连接可在一个或多个插件卡(add-in card)上被配置,或者能够取道适配到母板的连接器。在一些实施例中,SoC 110和装置120经由一个或多个物理互连向彼此传送数据(例如,经由一个或多个中间节点130)。在一些实施例中,SoC 110和装置120经由一个或多个无线互连向彼此传送数据(例如,经由一个或多个中间节点130)。在一些实施例中,SoC 110和装置120使用无线局域网(WLAN)单元、根据给定的电气和电子工程师协会(IEEE)802.11标准的Wi-Fi®通信,向彼此传送数据。在一些实施例中,SoC 110和装置120经由使用Bluetooth®技术的单元、经由Bluetooth®协议的近距离通信,向彼此传送数据。在另一实施例中,SoC 110和装置120可经由USB链路或通用异步接收器传送器(UART)链路进行通信。
SoC 110和装置120A可经由中间节点130向彼此传送数据。SoC 110和装置120B可经由相同中间节点130向彼此传送数据。SoC 110和装置120C可直接向彼此传送数据而无需任何中间节点130。在一些实施例中,响应于中间节点130接收来自SoC 110的数据,中间节点130可只传送数据到装置120A。在一些实施例中,响应于中间节点130接收来自SoC 110的数据,中间节点130可传送数据到装置120A和装置120B二者(例如,传送相同数据到这两个装置)。在一些实施例中,响应于中间节点130接收来自SoC 110的数据,中间节点130可传送数据的第一部分(例如,被识别为要被传送到装置120A的数据)到装置120A和数据的第二部分(例如,被识别为要被传送到装置120B的数据,其不同于所述数据的所述第一部分)到装置120B。
在一些实施例中,SoC 110可经由多个中间节点130传送和接收数据(例如,经由第一中间节点接收来自装置120A的数据和经由第二中间节点接收来自装置120B的数据)。在一些实施例中,SoC 110可经由多个中间节点130向装置120传送数据和接收来自装置120的数据(例如,SoC 110传送数据到第一中间节点,第一中间节点传送数据到第二中间节点,并且第二中间节点传送数据到装置120)。
在图1A中,带有实线的箭头可指示数据的路线(例如,从SoC 110到中间节点130和从中间节点130到装置120A),并且带有虚线的箭头可图示安全的路线(例如,箭头指示哪些装置加密和/或解密数据)。例如,数据可在SoC 110与装置120A之间经由中间节点130被传送,并且仅SoC 110和装置120A可加密或解密数据(例如,中间节点130不加密或解密数据)。
每个链路保护电路112和122可加密要被传送的数据和/或可解密收到的数据。每个链路保护电路112和122可保护要被传送的数据的完整性,并且可验证收到的数据的完整性。通过SoC 110和每个装置120具有链路保护电路112或122,数据可被安全地传送和接收而无需由任何介入中间节点130进行数据的安全性的验证。
图1B根据某些实施例,图示了包含SoC 110、装置120和中间节点130的系统。图1C图示了SoC 110的链路保护电路112的计数器。图1D图示了装置122的链路保护电路122的计数器。与图1A中的那些组件带有相同或类似标号的图1B-D中的组件可具有与图1A中的那些功能性相同或类似的功能性。
SoC 110可具有被耦合到处理器114(例如,处理器核)的存储器116。SoC 110可具有存储器加密引擎115(例如,多密钥总存储器加密(MKTME)引擎)。存储器加密引擎115可坐落在SoC 110中的构造(fabric)117(例如,存储器构造)上,并且可连接到存储器(例如,在SoC 110外的存储器,存储器116)。存储器加密引擎115可被耦合到处理器114或存储器116中的一个或多个。链路保护电路112可被用来保护在SoC 110与装置120之间数据的传输,并且存储器加密引擎115可被用来保护SoC 110内的数据。SoC可包含耦合到存储器加密引擎115、输入输出存储器管理单元(IOMMU)电路150、填充缓冲器152和链路保护电路112的构造117。在一些实施例中,处理器114可包含处理器核和IOMMU电路150。在一些实施例中,处理器114可包含链路保护电路112。
SoC 110的链路保护电路112可被耦合到填充缓冲器152、构造117和根端口118。在一些实施例中,链路保护电路112可包含填充缓冲器152、构造117和/或根端口118。链路保护电路112可包含加密引擎140(例如,SoC加密引擎)、解密引擎142(例如,SoC解密引擎)、报头插入逻辑144、报头解析逻辑146和丢弃检测逻辑148。SoC 110的链路保护电路112可为每个装置120使用不同的密钥组和不同的计数器组。
装置120可包含存储缓冲器170、装置存储器172和加载缓冲器174。装置120可包含被耦合到存储缓冲器170、装置存储器172和加载缓冲器174的链路保护电路112。在一些实施例中,链路保护电路122可包含存储缓冲器170、装置存储器172和/或加载缓冲器174。链路保护电路122可包含加密引擎160(例如,装置加密引擎)、解密引擎162(装置解密引擎)、报头插入逻辑164、报头解析逻辑166和丢弃检测逻辑168。在一些实施例中,装置120具有用于由装置120接收和传送的所有数据的一组计数器和一组密钥(例如,一个加密密钥和一个解密密钥)(例如,在多个可信会话之间共享)。在一些实施例中,装置120使用多组计数器和多组密钥。例如,实现网络和存储能力的装置120能够为网络功能性使用第一组计数器和密钥并为存储功能性使用第二组计数器和密钥。
SoC 110的加密引擎140可接收密钥(例如,来自SoC的寄存器、来自SoC的触发器(flop))以及来自构造117的数据(例如,写请求、读请求、完成分组),并且可通过加密引擎140的SoC加密计数器180生成SoC加密计数器值。加密引擎140可使用SoC加密计数器值和密钥来加密数据以生成加密的数据,并且可促使加密的数据被传送到装置120。装置120的解密引擎162可接收来自SoC 110的加密的数据,可接收密钥(例如,来自装置120的寄存器、来自装置120的触发器),并且可由解密引擎162的装置解密计数器192(例如,其通过将链路保护电路112与链路保护电路122初始化到相同值且随后随着每个事务被递增,来在密码会话启动期间与SoC加密计数器180同步)生成装置解密计数器值。解密引擎162可使用装置解密计数器值和密钥来解密加密的数据以生成解密的数据。
装置120的加密引擎160可接收密钥(例如,来自装置120的寄存器、来自装置120的触发器)和数据(例如,写请求、读请求、完成分组),所述数据来自装置存储器172(例如,完成分组)、存储缓冲器170(例如,写请求)或加载缓冲器174(例如,读请求),并且装置120的加密引擎160可通过加密引擎160的装置加密计数器190生成装置加密计数器值。加密引擎160可使用装置加密计数器值和密钥来加密数据以生成加密的数据,并且可促使加密的数据被传送到SoC 110。SoC 110的解密引擎142可接收来自装置120的加密的数据,可接收密钥(例如,来自SoC 110的寄存器、来自SoC 110的触发器),并且可由解密引擎142的SoC解密计数器182(例如,其通过链路保护电路112和链路保护电路122与彼此传递同步的计数器值,来在密码会话启动期间与装置加密计数器190同步)生成SoC解密计数器值。解密引擎142可使用SoC解密计数器值和密钥来解密加密的数据以生成解密的数据。
在一些实施例中,SoC加密计数器180包含加密写计数器180A和加密读计数器180B。SoC 110的加密引擎140可接收密钥1-n、SoC到装置加密写计数器值1-n(例如,经由加密引擎140的一个或多个加密写计数器180A的SoC加密写计数器值)和SoC到装置加密读计数器值1-n(例如,经由加密引擎140的一个或多个加密读计数器180B的SoC加密读计数器值)。在一些实施例中,SoC解密计数器182包含解密写计数器182A、解密读计数器182B和/或解密完成计数器180C。解密引擎142可接收密钥1-n、装置到SoC解密写计数器值1-n(例如,经由解密引擎142的一个或多个解密写计数器182A的SoC解密写计数器值)和装置到SoC解密读计数器值1-n(例如,经由解密引擎142的一个或多个解密读计数器182B的SoC解密读计数器值)。1-n中的每个可对应于不同装置120。例如,密钥1和计数器值1可在SoC 110与装置120A之间被使用,密钥2和计数器值2可在SoC 110与装置120B之间被使用等。在一些实施例中,每个SoC加密计数器180和每个SoC解密计数器182包含用于每个装置的不同计数器(例如,用于SoC 110与装置120A之间通信的第一加密写计数器180A、用于SoC 110与装置120B之间通信的第二加密写计数器180A等)。SoC 110接收的每个分组(例如,带有可信IO TLP报头的加密的数据)可具有识别分组从哪个装置120被传送的标识符。 SoC 110可基于标识符来选择对应密钥和计数器值。
在一些实施例中,装置加密计数器190包含加密写计数器190A和加密读计数器190B。装置120的加密引擎160可接收密钥、装置到SoC加密写计数器值(例如,经由加密引擎160的加密写计数器192A的装置加密写计数器值)和装置到SoC加密读计数器值(例如,经由加密引擎160的加密读计数器190B的装置加密读计数器值)。在一些实施例中,装置解密计数器192包含解密写计数器192A、解密读计数器192B和/或解密完成计数器192C。解密引擎162可接收密钥、SoC到装置解密写计数器值(例如,经由解密引擎162的解密写计数器192A的装置解密写计数器值)和SoC到装置解密读计数器值(例如,经由解密引擎162的解密读计数器192B的装置解密读计数器值)。
在一些实施例中,装置120的加密引擎160可接收来自加载缓冲器174的读请求(例如,加载)。加密引擎160可选择密钥和(例如,加密引擎160的)装置加密读计数器190B。加密引擎160可使用选择的密钥和装置加密读计数器值来加密读请求。报头插入逻辑164可接收加密的读请求,并且可生成可信IO TLP报头(例如,指示该加密的读请求的顺序要基于其它加密的读请求被保持)。响应于生成可信IO TLP报头,装置120可传送(例如,经由传送器)加密的读请求(例如,加载)到SoC 110(例如,经由一个或多个中间节点130)。SoC 110的根端口118可接收加密的读请求。报头解析逻辑146可解析可信IO TLP报头以验证数据的完整性。解密引擎142可确定解密引擎142的装置解密读计数器190B(例如,与装置120的加密引擎160的加密读计数器180B同步)的下一装置解密读计数器值以及相同的密钥将被用来解密加密的读请求。解密引擎142可解密加密的读请求(使用该密钥和解密读计数器值)。填充缓冲器152可暂时保留来自系统存储器(例如,存储器116)的对来自装置120的读请求的响应。一旦在填充缓冲器152中收到来自存储器的响应,便可将响应作为原始读请求的完成(例如,完成分组)传送回装置120。
构造117可传送完成分组(例如,响应于读请求的读响应)到填充缓冲器152,并且填充缓冲器152(例如,在填充缓冲器152变得已满时)可传送完成分组到加密引擎140。加密引擎140可使用SoC加密计数器180(例如,加密完成计数器180C)和密钥来加密完成分组,并且可传送加密的完成分组到报头插入逻辑144。报头插入逻辑144可生成用于加密的完成分组的可信IO TLP报头,并且可提供加密的完成分组和可信IO TLP报头到根端口118。根端口118可提供加密的完成分组和可信IO TLP报头到报头解析逻辑166(例如,经由一个或多个中间节点130)。可信IO TLP报头将由中间节点130观察(例如,中间节点130将确定中间节点130将不重新排序数据)。所述两个端点可接收或传送事务,并且使用对应计数器来加密或解密以及生成或验证完整性。报头解析逻辑166可解析可信IO TLP报头以验证数据的完整性。报头解析逻辑166可提供加密的完成分组到解密引擎162。解密引擎162可使用(与加密引擎140所使用的)相同密钥和(与过去用来加密完成分组的SoC加密计数器180(加密完成计数器180C)同步的装置解密计数器192(解密完成计数器192C)的)装置解密计数器值来解密加密的完成分组。解密引擎162可提供完成分组到装置存储器172和/或加载缓冲器174。
加密引擎160可接收来自存储缓冲器170的写请求(例如,存储)。存储缓冲器170可接收来自装置120的处理逻辑(例如,处理器、微控制器、软件、固件等)的写请求。链路保护电路122可加密和提供可信IO TLP报头到写请求,类似于加密和提供报头到读请求(除了使用装置加密写请求外)。根端口118和链路保护电路112可接收和处理加密的写请求,类似于加密的读请求如何被根端口118和链路保护电路112所接收和处理。解密引擎142可提供写请求到构造117。在一些实施例中,可以与响应于读请求而提供完成分组的类似方式,响应于写请求而从SoC 110到装置120提供完成分组(例如,写响应)。
图1B显示从装置120传送读和写请求到SoC 110以及从SoC传送完成分组到装置120。装置120A可传送读和写请求和完成分组到第二装置120B,并且第二装置120B可传送读和写请求和完成分组到装置120A。装置120可传送读和写请求和完成分组到多个接收方(例如,SoC 110和装置120),并且可接收来自多个接收方的读和写请求和完成分组。SoC 110可传送读和写请求和完成分组到一个或多个装置120,并且可接收来自一个或多个装置120的读和写请求和完成分组。第二SoC可传送读请求和写请求到SoC 110,并且SoC 110可传送完成分组到第二SoC。
链路保护电路112和122的计数器(例如,读和写计数器)可在硬件(例如,触发器)、固件、软件等中的一个或多个中被实现。由链路保护电路112和122使用的密钥可在硬件(例如,寄存器、触发器)、固件、软件等中的一个或多个中被实现。
加密引擎140和160可为链路加密执行认证的计数器模式加密(例如,经由高级加密标准-Galois/计数器模式(AES-GCM)算法或其它认证的加密模式)。对于认证的加密,通过将计数器与将被加密或解密的每个数据块(例如,读请求、写请求、完成分组等)关联,密码工作能够与数据本身分离,从而允许改进的性能。计数器值可被使用(例如,加密)以生成密码板(cryptographic pad),并且密码板可被用于加密和/或解密。由于计数器值在数据到达前已知,因此,密码板能够被预计算和存储在缓冲器中,以在收到将被加密或解密的数据时准备好被使用。
装置到SoC加密写计数器(例如,加密写计数器190A,dev_to_soc_enc_write_ctr)和装置到SoC解密写计数器[i](例如,解密写计数器182A,dev_to_soc_dec_write_ctr)可以每个是96位,可以在用于每个会话i的密码会话设定时被初始化,并且可以是到用于从装置120到SoC 110的写请求(例如,存储请求)和完成分组(例如,完成)的AES-GCM认证的加密的计数器输入。
装置到SoC加密读计数器(例如,加密读计数器190B,dev_to_soc_enc_read_ctr)和装置到SoC解密读计数器[i](例如,解密读计数器器182B,dev_to_soc_dec_read_ctr)可以每个是96位,可以在用于每个会话i的密码会话设定时被初始化,并且可以是到用于从装置120B到SoC 110的加载请求(例如,读请求)的AES-GCM认证的加密的计数器输入。
SoC到装置加密写计数器(例如,加密写计数器180A)和SoC到装置解密写计数器[i](例如,解密写计数器192A)可以每个是96位,可以在用于每个会话i的密码会话设定时被初始化,并且可以是到用于从SoC 110到装置120的存储(例如,写请求)和完成(例如,完成分组)的AES-GCM认证的加密的计数器输入。
SoC到装置加密读计数器(例如,加密读计数器180B)和SoC到装置解密读计数器[i](例如,解密读计数器192B)可以每个是96位,可以在用于每个会话i的密码会话设定时被初始化,并且可以是到用于从SoC 110到装置120的加载请求(例如,读请求)的AES-GCM认证的加密的计数器输入。
报头插入逻辑144和164可提供可信IO TLP报头以携带可信事务的属性。可信IOTLP报头可指示事务是可信IO会话的一部分,并且能够携带其它密码属性(例如,基于使用计数器值和密码被加密)。报头解析逻辑146和166可解析可信IO TLP报头以确定可信事务的属性(例如,以验证数据的完整性)。响应于链路保护电路112或122(经由报头解析逻辑146或166)确定加密的数据具有可信IO TLP报头,链路保护电路可验证数据的完整性。在E2E保护下,可不存在对核心PCIe®排序规则的任何更改。事务的重新排序可以是规范的可选方面,并且E2E保护可使得中间节点130不重新排序具有来自相同请求者的可信IO TLP报头的数据(例如,读请求、写请求、完成分组)。
在一些实施例中,链路层创建可信IO TLP报头,事务层插入可信IO TLP层,并且物理层传送带有加密或解密的数据的可信IO TLP报头。在一些实施例中,事务层创建可信IOTLP层,并且链路层和/或物理层可传送带有加密或解密的数据的可信IO TLP报头。
响应于读和写请求被解耦,丢弃的写请求(例如,由攻击者)可不被检测到,除非有来自请求者(例如,SoC 110或装置120)的紧接的写请求。写请求可被丢弃,并且紧接的读请求接收过时的数据(例如,响应于读请求的数量大于写请求的数量)。为检测和/或防止被丢弃的写请求,SoC 110可包含丢弃检测逻辑148和/或装置120可包含丢弃检测逻辑168。
在一些实施例中,丢弃检测逻辑148和/或168可在每N个读后生成特殊写周期(例如,ping写请求),并且随后使用特殊读(例如,ping读请求)来读。ping写请求向目标中的预确定地点(例如,8b寄存器)写入预确定值(例如,发起方选择值),并且ping读返回预确定地点的值(例如,8b寄存器的值)。如果链路上的插入器丢弃写请求,则丢弃检测逻辑148和/或168将捕获被丢弃的写请求。在一些实施例中,每个写请求有ping写请求。在一些实施例中,ping写请求并不那么频繁地降低带宽要求。在一些实施例中,丢弃检测逻辑148和/或168传送的ping写请求的频率基于可用带宽、传送的写请求等中的一项或多项。
读请求可推送在读请求前发送的所有写请求。在一些实施例中,发起方的丢弃检测逻辑148和/或168可保持随发送的每个写请求递增并且在发送读请求时被重置到零的计数器。读请求可在清除计数器值前对计数器值进行采样。在接收器上,对应的丢弃检测逻辑148和/或168的计数器随每个写请求递增并且按读请求中携带的值递减。如果计数器在任何时候随着读而变成负数,则被丢弃的写攻击被检测到并且会话死亡。
在一个示例中,没有被丢弃的写。有三个写请求,并且紧接的读请求读值三并且随后将该值清除为零。随后,对于每个紧接的读请求(在无任何介入写请求的情况下),读请求读值0并且将该值清除为零。这可被显示为(对于请求的顺序,从右到左读):
R(0)R(0)R(0)R(3)WWW --→ R(0-0)R(0-0)R(0-0)R(3-3)W(3)W(2)W(1);OK
在另一示例中,存在一个被丢弃或推迟的写,从而造成链路死亡。存在将计数递增到1的第一写请求,并且随后存在将计数递增到2的第二写请求。读请求携带值3(一写请求被丢弃了,反映为比传送的写请求的值大一的值),因此,读请求将该值从2递减3,这产生了负数。响应于该负数,被丢弃的写攻击被检测到并且会话死亡。这可被显示为(对于请求的顺序,从右到左读):
R(0)R(0)R(0)R(3)WWW --→R(2-3)W(2)W(1);链路死亡
在另一示例中,写请求可传递正常的读请求。在一个实施例中,第一写请求可将计数递增到1,第二写请求将计数递增到2,第三写请求将计数递增到3,第一读请求将值3递减3,第四写请求将该计数递增到1,第二读请求将计数1递减1,第四读请求将该值重置到零。在另一实施例中,第一写请求可将计数递增到1,第二写请求将计数递增到2,第三写请求将计数递增到3,第四写请求将计数递增到4,第一读请求将值4递减3,第二读请求将计数1递减1,第四读请求将该值重置到零。这可被显示为(对于请求的顺序,从右到左读):
R(0)R(1)WR(0)R(3)WWW --→R(0-0)R(1-1)R(1-0)R(4-3)W(4)W(3)W(2)W(1);写请求传递了读请求,但是OK
通过使用相同计数器来生成ping写和读请求以检测被丢弃的写请求并且进行递增和递减以检测被丢弃的写请求,可限制丢弃检测逻辑148和/或168中计数器的大小。
在一些实施例中,SoC 110经由中间节点130被耦合到装置120。在一些实施例中,SoC 110经由两个或更多中间节点130被耦合到装置120。在一些实施例中,SoC 110直接被耦合到装置120而无任何中间节点130。
在SoC 110与装置120之间传送和接收的数据可以是读请求、写请求或完成分组中的一项或多项。图2A-C图示了在SoC 110与装置120之间传送和接收数据的示例(例如,在E2E保护下)。
通过E2E保护,SoC 110将为与装置120(例如,物理装置、虚拟功能或接口)的每个会话保持状态(例如,计数器)。可限制能够同时支持的可信IO会话的最大数量。例如,在一些实施例中,可支持高达128个会话。在一些实施例中,可在来自TEE的装置的鉴证阶段期间设定密钥。在一些实施例中,SoC 110和装置120的计数器将在用于每个会话的密码会话设定期间被同步。
图2A-C根据某些实施例,图示了包含SoC 110、装置120和中间节点130的系统。虽然图2A-C可图示从装置120到SoC 110或者从SoC 110到装置120的一种类型的数据的流程,但理解的是,该流程能够是在相反方向上,在两个装置120之间,在两个SoC 110之间,从装置120A到SoC 110到装置120B等等。
图2A根据某些实施例,图示了用于在系统200A中从装置120到SoC 110的写请求(例如,装置到SoC存储请求(建立))的示例流程。
装置120的存储缓冲器170可采样和递增装置到SoC加密写计数器190A(dev_to_soc_enc_write_ctr)并且发送写请求(例如,存储请求,存储有效负载)到装置120的加密引擎160。
采样的计数器值(来自加密写计数器190A的装置到SoC加密写计数器值)可由加密引擎160用于为加密(例如,为加密写请求)生成初始化向量(例如,IV),并且生成在可信IOTLP报头和有效负载(例如,写请求)上的MAC。一旦加密的写请求连同MAC是可用的,它们便由装置120与可信IO TLP报头一起被发送以指示可信IO事务。MAC可作为可信IO TLP报头的一部分被携带。沿到SoC 110的路径的一个或多个中间节点130(如果有)促使带有可信IOTLP报头的来自相同请求者的写请求将不被重新排序。
在接收到加密的数据时,SoC 110的解密引擎142采样和递增(以便为下一写请求做准备)装置到SoC写解密计数器182A(例如,dev_to_soc_dec_write_ctrs[i])以获得计数器值来解密和认证写请求。解密的存储被发送到构造117。从该点起,写请求可受存储器加密引擎115保护。尽管该流程指示计数器为仅在收到写请求时被采样,但在一些实施例中,密码板能够使用计数器被生成,并且可被存储在装置120和SoC 110侧上以最小化加密和解密的开销。
装置到SoC解密写计数器182A(例如,dev_to_soc_dec_write_ctrs[i)和装置到SoC加密写计数器190A(例如,dev_to_soc_enc_write_ctr)可以每个是96位,可以在用于每个会话i的密码会话设定时被初始化,并且可以是到用于向SOC 110进行写(例如,存储)的AES-GCM认证加密的计数器输入。
图2B根据某些实施例,图示了用于在系统200B中从装置120到SoC 110的读请求(例如,装置到SoC加载请求(建立))的示例流程。
装置120的加载缓冲器174可生成加载(例如,读请求),并且采样和递增装置到SoC加密读计数器190B(dev_to_soc_enc_read_ctr)。加密引擎160使用装置到SoC读计数器值来生成IV以加密读请求以及生成在可信IO TLP报头和有效负载(例如,读请求)上的MAC。可信IO TLP报头被用来携带MAC,并且发送读请求到SoC 110。SoC 110使用对应计数器(装置到SoC解密读计数器182B(例如,dev_to_soc_dec_read_ctr[i]))来解密和认证请求。SoC110也打开用于读请求的填充缓冲器152以跟踪来自构造117的响应。SoC发送一个或许多高速缓存行大小的请求到构造117。
装置到SoC加密读计数器190B(例如,dev_to_soc_enc_read_ctr)可以是96位,可在会话设定时被初始化,可与读请求(例如,加载请求)一起被发送到SoC 110,以及可以是到用于到SOC 110的读请求的AES-GCM认证的加密的计数器输入。SoC 110可使用在读请求中携带的计数器值以用于读请求的解密。
图2C根据某些实施例,图示了用于在系统200C中从SoC到装置120的完成分组的示例流程。完成分组可以是用于来自图2B的原始读请求(例如,装置到SoC加载请求(建立))的通过构造117被路由到装置120的来自存储器116(例如,DRAM)的响应。
SoC 110可在分配用于(图2B的)读请求的填充缓冲器152中收集来自构造117的读数据。一旦填充缓冲器被填满,完成分组便被发送到加密引擎140。加密引擎140使用SoC到装置加密写计数器180A或SoC到装置加密完成计数器180C来生成用于完成的IV以及在整体上保护它(例如,通过生成MAC)(例如,通过SoC到装置加密写计数器180A或SoC到装置加密完成计数器180C来加密完成分组)。SoC 110使用可信IO TLP报头,将加密的完成分组(例如,加密的响应)连同MAC传送到装置120。装置120使用SoC到装置解密写计数器192A或SoC到装置解密完成计数器192C(例如,soc_to_dev_dec_write_ctr)来解密和认证完成分组。事务标识符(ID)被用来确定正在完成的加载缓冲器请求。
图3A-3B是根据某些实施例的链路保护的方法300和320的流程图。方法300和320可由是硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)的处理逻辑执行。在一个实施例中,方法300和320可部分由SoC 110的链路保护电路112和/或装置120的链路保护电路122执行。
为解释简单起见,方法300和320被描绘和描述为动作。然而,根据本公开的动作能够以各种顺序进行和/或同时进行以及与本文中未呈现和描述的其它动作一起进行。此外,可不执行所有图示的动作来实现根据公开的主题的方法300和320。另外,本领域技术人员将理解和领会,方法300和320可备选地经由状态图或事件被表示为相关联的状态。
参照图3A,在方法300的框302,处理逻辑通过第一装置的第一加密引擎接收第一数据和第一密钥。处理逻辑可接收来自第一装置的处理器、微控制器、软件和/或固件的第一数据。第一数据可以是写请求、读请求或完成分组(例如,对读请求的读响应、对写请求的写响应等)。第一数据可由处理逻辑接收以便被传送到第二装置。
第一密钥可在第一装置和第二装置的密码设定期间被确立。在一些实施例中,第一密钥可以对在第一装置与第二装置之间的数据的任何转移是特定的。
在框304,处理逻辑通过第一加密引擎的第一加密计数器,生成第一加密计数器值。第一装置的第一加密计数器和第二装置的第二解密计数器的值可在第一装置和第二装置的密码设定期间被同步。第一装置的第一加密计数器和第二装置的第二解密计数器可对数据的类型是特定的(例如,第一加密写计数器和第二解密写计数器可被同步,第一加密读计数器和第二解密读计数器可被同步等)。第一加密计数器值可以是对从第一装置的加密引擎到第二装置的解密引擎的数据的转移特定的。第一加密计数器值可以对在第一装置与第二装置之间特定类型的数据(例如,写请求,读请求或完成分组)的转移是特定的。
在框306,处理逻辑通过第一加密引擎,使用第一加密计数器值和第一密钥来加密第一数据以生成第一加密的数据。在一些实施例中,第一加密引擎使用密钥来加密和生成在传送侧的MAC。MAC可与事务一起被携带。在MAC沿从传送器到接收器的链路移动时,MAC可保护事务的完整性。MAC可被用来验证事务的真实性。
在一些实施例中,第一装置的报头插入逻辑生成可信IO TLP(例如,以携带MAC)并且添加可信IO TLP报头到第一加密的数据来保持第一加密的数据在由第一装置传送的加密的数据的实例中的顺序。在一些实施例中,传送器的链路保护电路(例如,经由加密引擎或报头插入逻辑)生成MAC,并且接收器的链路保护电路(例如,经由解密引擎,经由报头解析逻辑)验证MAC以验证收到的事务的真实性。
在框308,处理逻辑通过第一加密引擎促使第一加密的数据被传送(例如,经由第一装置的传送器,经由第一装置的根端口)到第二装置。第一加密的数据将由第二装置的第二解密引擎使用第一密钥和与第一加密计数器值同步的(例如,第二装置的第二解密引擎的)第二解密计数器值来解密。
在一些实施例中,处理逻辑经由丢弃检测逻辑,生成用以写第一值的ping写请求以及ping读请求。在阈值数量的读后,处理逻辑可传送ping写请求到装置以将第一值写到第二装置(例如,到第二装置的预确定地点)。在传送ping写请求后,处理逻辑可传送ping读请求到第二装置以读第二值(例如,从第二装置的预确定地点,经由响应于ping读请求而从第二装置接收的完成分组来确定第二值)。响应于确定第一值不匹配第二值,处理逻辑可检测到写攻击(例如,未经授权的被丢弃的写)。响应于确定第一值匹配第二值,处理逻辑可确定写攻击并未发生。
在一些实施例中,响应于由第一装置传送的每个写请求,处理逻辑经由丢弃检测逻辑,可递增丢弃检测逻辑的丢弃检测计数器。响应于第一装置传送的每个读请求,处理逻辑经由丢弃检测逻辑,可将丢弃检测计数器递减在对应读请求中的对应值。响应于确定在读请求后丢弃检测计数器的丢弃检测计数器值为负数,处理逻辑经由丢弃检测计数器可检测到写攻击。响应于确定丢弃检测计数器值不为负数,处理逻辑经由丢弃检测计数器可确定写攻击并未发生。
响应于检测到写攻击,处理逻辑可提供中断(例如,中断在第一装置与第二装置之间数据的传输,向用户或管理员提供警示等)。响应于确定写攻击并未发生(例如,链路的完整性被保持),处理逻辑可允许在第一与第二装置之间数据的传输继续。
参照图3B,在方法320的框322,处理逻辑通过第一装置的第一解密引擎,接收第二密钥(例如,来自第一装置的寄存器或触发器)和来自第二装置的第二加密的数据。在一些实施例中,第二加密数据是由第二装置的第二加密引擎使用第二密钥和第二加密计数器值加密的第二数据。第二数据可以是读请求(例如,加载请求)、写请求(例如,存储请求)或完成分组(例如,对读请求的读响应、对写请求的写响应等)。
在一些实施例中,处理逻辑经由报头解析逻辑,可解析第二加密的数据的可信IOTLP报头以验证数据的完整性(例如,使用在IO TLP报头中携带的MAC)。报头解析逻辑可解析可信IO TLP报头以识别由可信IO TLP报头携带的MAC,并且链路保护电路(例如,经由解密引擎)可通过使用第二密钥验证第二MAC,来验证第二加密的数据的真实性。中间节点130可基于可信IO TLP报头,保持第二加密的数据在从第二装置收到的加密的数据的实例之中的顺序。在一些实施例中,传送器的链路保护电路(例如,经由加密引擎或报头插入逻辑)生成MAC,并且接收器的链路保护电路(例如,经由解密引擎,经由报头解析逻辑)验证MAC以验证收到的事务的真实性。
在框324,处理逻辑通过第一解密引擎的第一解密计数器,生成第一解密计数器值。第一解密计数器值与第二装置的第二加密计数器值同步。
在框326,处理逻辑通过第一解密引擎,使用第一解密计数器值和第二密钥来将第二加密的数据解密以生成第二解密的数据。在一些实施例中,第一解密引擎使用第二密钥来解密和验证在接收器侧的MAC。MAC可与事务一起被携带。在MAC沿从传送器到接收器的链路移动时,MAC可保护事务的完整性。MAC可被用来验证事务的真实性。
在框328,处理逻辑促使第二解密的数据被存储在第一装置中(例如,在构造117中,在装置存储器172中等)。在一些实施例中,处理逻辑可提供完成分组(例如,对收到的第二加密的数据的响应)到第二装置。
图4A是根据一个实施例,图示了耦合到用于链路保护的链路保护电路112或122的处理器400的微架构的框图。具体地说,处理器400描绘了根据本公开的至少一个实施例的,要包含在处理器中的有序架构核和寄存器重命名逻辑、乱序发布/执行逻辑。在一些实施例中,处理器400是图1A的处理器114。
处理器400包含耦合到执行引擎单元450的前端单元430,并且执行引擎单元和前端单元二者均被耦合到存储器单元470。处理器400可包含核490,其是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、极长指令字(VLIW)核或混合或备选核类型。作为仍有的另一选项,处理器400可包含专用核,诸如例如网络或通信核、压缩引擎、图形核或诸如此类。在另一实施例中,核490可具有五个段。
前端单元430包含耦合到指令高速缓存单元434的分支预测单元432,该指令高速缓存单元434被耦合到指令转译后备缓冲器(TLP)单元436,该指令转译后备缓冲器单元436被耦合到指令获取单元438,该指令获取单元438被耦合到解码单元440。解码单元440(也称为解码器)可解码指令,并且生成从原始指令解码出的、或以其它方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令或其它控制信号作为输出。解码单元440可使用各种不同机制来实现。适合机制的示例包含但不限于查找表、硬件实施例、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434被进一步耦合到存储器单元470。解码单元440被耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包含耦合到引退单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。(一个或多个)调度器单元456表示任何数量的不同调度器,包含预留站(RS)、中央指令窗等。(一个或多个)调度器单元456被耦合到(一个或多个)物理寄存器堆单元458。(一个或多个)物理寄存器堆单元458中的每一个表示一个或多个物理寄存器堆,这些堆的不同堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、打包的整数、打包的浮点、向量整数、向量浮点等等、状态(例如,是要执行的下一指令的地址的指令指针)等。(一个或多个)物理寄存器堆单元458被引退单元454重叠以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)将来堆、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器图和寄存器池等)。
一般地,架构寄存器可从处理器外部或者从程序员的角度而言是可见的。寄存器未被限于任何已知具体类型的电路。各种不同类型的寄存器只要它们能如本文中所述那样存储和提供数据,便是适合的。适合的寄存器的示例包含但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。引退单元454和(一个或多个)物理寄存器堆单元458被耦合到(一个或多个)执行集群460。(一个或多个)执行集群460包含一个或多个执行单元462的集合和一个或多个存储器访问单元464的集合。执行单元462可执行各种操作(例如,移位、加法、减法、乘法),并且在各种类型的数据(例如,标量浮点、打包的整数、打包的浮点、向量整数、向量浮点)上操作。
尽管一些实施例可包含专用于特定功能或功能的集合的一定数量的执行单元,但其它实施例可仅包含一个执行单元或全部执行所有功能的多个执行单元。(一个或多个)调度器单元456、(一个或多个)物理寄存器堆单元458和(一个或多个)执行集群460被示为可能是复数个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包的整数/打包的浮点/向量整数/向量浮点流水线和/或存储器访问流水线,这些流水线各自具有其自己的调度器单元、物理寄存器堆单元和/或执行集群 -并且就单独的存储器访问流水线而言,实现在其中仅此流水线的执行集群具有(一个或多个)存储器访问单元464的某些实施例)。也应理解的是,在使用单独流水线的情况下,这些流水线中的一个或多个可以是乱序发出/执行,并且其余是有序的。
存储器访问单元464的集合被耦合到存储器单元470,存储器单元470可包含耦合到数据高速缓存单元(DCU)474的TLB单元472,DCU单元774耦合到2级(L2)高速缓存单元476。在一些实施例中,DCU 474也可被称为第一级数据高速缓存(L1高速缓存)。DCU 474可处置多个未决的高速缓存未命中,并且继续服务于进入存储和负载。它也支持保持高速缓存一致性。TLB单元472可被用来通过映射虚拟和物理地址空间而改进虚拟地址转译速度。在一个示范实施例中,存储器访问单元464可包含加载单元、存储地址单元和存储数据单元,其中的每个被耦合到存储器单元470中的TLB单元472。L2高速缓存单元476可被耦合到一个或多个其它级别的高速缓存,并且最终耦合到主存储器。
处理器400可支持一个或多个指令集(例如,x86指令集(带有通过较新版本已添加的一些扩展)、加利福尼亚圣尼威尔的MIPS Technologies的MIPS指令集、加利福尼亚圣尼威尔的ARM Holdings的ARM指令集(带有诸如NEON的可选另外扩展))。
应理解的是,核可不支持多线程(例如,执行操作或线程的两个或更多并行集合、经时间切片的多线程、同时多线程(其中单个物理核为该物理核在同时进行多线程的每一个线程提供逻辑的核),或其组合(例如,诸如在Intel®超线程技术中的经时间切片的获取和解码以及其后的同时多线程)。
尽管寄存器重命名在乱序执行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。尽管处理器的图示实施例也包含单独的指令和数据高速缓存单元和共享的L2高速缓存单元,但备选实施例可具有诸如例如1级(L1)内部高速缓存的用于指令和数据二者的单个内部高速缓存,或多个级别的内部高速缓存。在一些实施例中,系统可包含内部高速缓存和在核和/或处理器外的外部高速缓存的组合。备选的是,所有高速缓存可在核和/或处理器的外部。
图4B是根据本公开的一些实施例,图示了由图4A的处理器400实现的有序流水线和寄存器重命名段、乱序发布/执行流水线的框图。图4B中的实线框图示了有序流水线,而虚线框图示了寄存器重命名、乱序发布/执行流水线。在图4B中,作为流水线的处理器400包含获取段402、长度解码段404、解码段406、分配段408、重命名段410、调度(也称为分派或发布)段412、寄存器读/存储器读段414、执行段416、写回/存储器写段418、异常处置段420和提交段422。在一些实施例中,段402-422的排序可与所图示的不同,并且未被限于图4B中示出的特定排序。
图5根据一个实施例,图示了耦合到用于链路保护的链路保护电路112或122的处理器500的微架构的框图。在一些实施例中,处理器500是图1A的处理器114。
在一些实施例中,可实现根据一个实施例的指令以对具有大小为字节、字、双字、四字等以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端501是处理器500的一部分,该部分获取要执行的指令,并且准备它们以便在处理器流水线中以后被使用。
前端501可包含若干单元。在一个实施例中,指令预获取器526从存储器获取指令,并且将它们馈送到指令解码器528,解码器528进而解码或解释它们。例如,在一个实施例中,解码器将收到的指令解码成机器能够执行的称为“微指令”或“微操作”(也称为microop或uop)的一个或多个操作。在其它实施例中,解码器将指令解析成由微架构用来执行根据一个实施例的操作的操作码和对应数据和控制字段。在一个实施例中,踪迹高速缓存530取用解码的uop并且将它们汇编成uop队列534中用于执行的程序有序序列或踪迹。在踪迹高速缓存530遇到复杂指令时,微代码ROM 532提供完成操作所需的uop。
一些指令被转换成单个微操作,而其它指令需要若干个微操作来完成全部操作。在一个实施例中,如果需要超过4个微操作来完成指令,则解码器528访问微代码ROM 532以执行指令。对于一个实施例中,指令能够被解码成少量的微操作以便在指令解码器528进行处理。在另一实施例中,如果需要一定数量的微操作来完成操作,则指令能够被存储在微代码ROM 532内。踪迹高速缓存530查阅入口点可编程逻辑阵列(PLA)以确定正确的微指令指针,以便从微代码ROM 532读微代码序列来完成根据一个实施例的一个或多个指令。在微代码ROM 532为指令完成微操作排序后,机器的前端501恢复从踪迹高速缓存530获取微操作。
乱序执行引擎503是指令被准备以供执行之处。乱序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度用于执行时,平滑处理和重新排序指令的流以优化性能。分配器逻辑分配每个uop为了执行而需要的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器堆中的条目上。在指令调度器(存储器调度器、快速调度器502、慢速/通用浮点调度器504和简单浮点调度器506)前,分配器还为两个uop队列(一个用于存储器操作,且一个用于非存储器操作)之一中的每个uop分配条目。uop调度器502、504、506基于它们的相关输入寄存器操作数源的准备度和uop完成其操作所需要的执行资源的可用性,确定uop何时准备好执行。一个实施例的快速调度器502能够在每半个主时钟周期上进行调度,而其它调度器只能够每主处理器时钟周期调度一次。调度器对分派端口进行裁决,以调度用于执行的uop。
寄存器堆508、510坐落于调度器502、504、506和执行块511中的执行单元512、514、516、518、520、522、524之间。存在分别用于整数和浮点运算的单独寄存器堆508、510。一个实施例的每个寄存器堆508、510也包含旁路网络,其能够旁路或将还尚未被写入寄存器堆中的刚完成的结果转发到新的相关uop。整数寄存器堆508和浮点寄存器堆510也能相互传递数据。对于一个实施例,整数寄存器堆508被拆分成两个单独的寄存器堆,一个寄存器堆用于数据的低阶32位,并且第二寄存器堆用于数据的高阶32位。一个实施例的浮点寄存器堆510具有128位宽的条目,因为浮点指令通常具有宽度从64到128位的操作数。
执行块511含有指令实际上在其中被执行的执行单元512、514、516、518、520、522、524。此部分包含存储微指令执行所需要的整数和浮点数据操作数值的寄存器堆508、510。一个实施例的处理器500由一定数量的执行单元组成:地址生成单元(AGU)512、AGU 514、快速ALU 516、快速ALU 518、慢速ALU 520、浮点ALU 522、浮点移动单元524。对于一个实施例,浮点执行块522、524执行浮点、MMX、SIMD和SSE或其它操作。一个实施例的浮点ALU 522包含64位乘64位浮点除法器以执行除法、平方根和余数微操作。对于本公开的实施例,可通过浮点硬件来处置涉及浮点值的指令。
在一个实施例中,ALU操作转到高速ALU执行单元516、518。一个实施例的快速ALU516、518能够通过半个时钟周期的有效时延来执行快速操作。对于一个实施例,最复杂的整数操作转到慢速ALU 520,因为慢速ALU 520包含用于长时延类型操作的整数执行硬件,诸如乘法器、位移、旗标逻辑和分支处理。存储器加载/存储操作由AGU 512、514执行。对于一个实施例,在对64位数据操作数执行整数操作的上下文中描述整数ALU 516、518、520。在备选实施例中,ALU 516、518、520能够被实现以支持包含16、32、128、256等多种数据位。类似地,能够实现浮点单元522、524以支持具有各种宽度的位的操作数的范围。对于一个实施例,浮点单元522、524能够结合SIMD和多媒体指令,对128位宽打包的数据操作数进行操作。
在一个实施例中,在父母加载已完成执行前,uop调度器502、504、506分派相关操作。由于在处理器500中可猜测性地调度和执行uop,因此,处理器500也包含用来处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中能够存在执行中(in flight)的相关的操作,这些操作已将暂时不正确的数据留给调度器。重现机制跟踪和重新执行使用不正确数据的指令。仅需要重现相关的操作,并且允许独立的操作完成。处理器的一个实施例的调度器和重现机制也被设计成捕获用于文本字符串比较操作的指令序列。
术语“寄存器”可指的是可被用作用来识别操作数的指令的部分的板载处理器存储位置。换而言之,寄存器可以是从处理器的外部可使用的那些寄存器(从程序员的角度而言)。然而,实施例的寄存器不应在含义上被限于具体类型的电路。相反,实施例的寄存器能存储和提供数据,并且执行本文中描述的功能。本文中描述的寄存器能够由处理器内的电路使用任何数量的不同技术实现,诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含用于打包的数据的8个多媒体SIMD寄存器。
对于本文中的讨论,寄存器被理解为是设计成保持打包的数据的数据寄存器,诸如来自加利福尼亚州Santa Clara的Intel Corporation的以MMX技术实现的微处理器中的64位宽MMX™寄存器(在一些实例中也被称为“mm”寄存器)。以整数和浮点形式二者可用的这些MMX™寄存器能够与伴随SIMD和SSE指令的打包的数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高版本(一般称为“SSEx”)技术有关的128位宽XMM寄存器也能够被用来保持此类打包的数据操作数。在一个实施例中,在存储打包的数据和整数数据中,寄存器无需区分所述两种数据类型。在一个实施例中,整数和浮点被包含在相同寄存器堆或不同寄存器堆中。此外,在一个实施例中,浮点和整数数据可被存储在不同寄存器或相同寄存器中。
可在许多不同的系统类型中实现实施例。现在参照图6,示出的是根据一实施例的多处理器系统600的框图。如图6中所示,多处理器系统600是点对点互连系统,并且包含经由点对点互连650耦合的第一处理器670和第二处理器680。如图6中所示,每一个处理器670和680可以是多核处理器,包含第一和第二处理器核(即,处理器核674a和674b与处理器核684a和684b),但处理器中潜在地可存在许多更多的核。处理器670、处理器680或二者可被耦合到用于链路保护的链路保护电路112或122。在一些实施例中,处理器670或处理器680至少之一是图1A的处理器114。
尽管采用两个处理器670、680来示出,但要理解的是,本公开的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个另外的处理器。
处理器670和680被示为分别包含集成I/O控制逻辑(“CL”)672和682。处理器670也包含作为其总线控制器单元的一部分的点对点(P-P)接口676和688;类似地,第二处理器680包含P-P接口686和688。处理器670、680可经由点对点(P-P)接口650使用P-P接口电路678、688交换信息。如图6中所示,CL 672和682将处理器耦合到相应存储器,即存储器632和存储器634,其可以是局部附连到相应处理器的主存储器的部分。
处理器670、680可各自经由各个P-P接口652、654使用点对点接口电路676、694、686、698与芯片集690交换信息。芯片集690也可经由高性能图形接口639与高性能图形电路638交换信息。
共享高速缓存(未示出)可被包含在任一处理器中或者在两个处理器外,但仍经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片集690可经由接口696被耦合到第一总线616。在一个实施例中,第一总线616可以是外围组件互连(PCI)总线,或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但本公开的范围并不受此限制。
如图6中所示,各种I/O装置614可被耦合到第一总线616,以及还有将第一总线616耦合到第二总线620的总线桥618。在一个实施例中,第二总线620可以是低引脚计数(LPC)总线。在一个实施例中,各种装置可被耦合到第二总线620,包含例如键盘和/或鼠标622、通信装置627和诸如可包含指令/代码和数据630的盘驱动器或其它大容量存储装置的存储单元628。此外,音频I/O 624可被耦合到第二总线620。注意,其它架构是可能的。例如,系统可实现多点总线或其它此类架构,而不是图6的点对点架构。
现在参照图7,示出的是根据本公开的一实施例的第三系统700的框图。图6和7中类似的元件带有类似参考标号,并且图7中省略了图6的某些方面以免混淆图7的其它方面。
图7图示了处理器670、680可分别包含集成存储器和I/O控制逻辑(“CL”)672和682。对于至少一个实施例,CL 672、682可包含诸如本文中所述的集成存储器控制器单元。另外,CL 672、682也可包含I/O控制逻辑。图7图示了存储器632、634被耦合到CL 672、682,以及I/O装置714也被耦合到控制逻辑672、682。遗留I/O装置715被耦合到芯片集690。处理器670、处理器680或二者可被耦合到用于链路保护的链路保护电路112或122。处理器670和/或处理器680可以是图1A的处理器114。
图8是可包含一个或多个核801的示范SoC 800。SoC 800可包含用于链路保护的链路保护电路112或122。在一些实施例中,SoC 800是图1A的SoC 110。本领域中熟知的用于膝上型计算机、桌上型计算机、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换器、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置及各种其它电子装置的其它系统设计和配置也是适合的。一般地,能合并处理器和/或如本文中所公开的其它执行逻辑的大量的各种系统或电子装置一般是适合的。
现在参照图8,示出的是根据本公开的一实施例的SoC 800的框图。此外,虚线框是更高级SoC上的特征。在图8中,(一个或多个)互连单元802被耦合到:应用处理器810,其可包含一个或多个核801 A-N的集合以及(一个或多个)共享高速缓存单元806;系统代理器单元809;(一个或多个)总线控制器单元816;(一个或多个)集成存储器控制器单元814;一个或多个媒体处理器820的集合,其可包含集成图形逻辑808、用于提供静态和/或视频摄像机功能性的图像处理器824、用于提供硬件音频加速的音频处理器826及用于提供视频编码/解码加速的视频处理器828;静态随机存取存储器(SRAM)单元830;直接存储器存取(DMA)单元832;及用于耦合到一个或多个外部显示器的显示单元840。提供链路保护的链路保护电路112的实施例能够在SoC 800中被实现。在一些实施例中,图1A的处理器114和存储器116被制作在SoC 800上。在一些实施例中,装置存储器172被制作在SoC 800上。
接下来转到图9,描绘了根据本公开的实施例的片上系统(SoC)设计的一实施例。作为说明性示例,SoC 900被包含在用户设备(UE)中。SoC 900可包含用于链路保护的链路保护电路112或122。在一些实施例中,SoC 900是图1A的SoC 110。在一个实施例中,UE指代由最终用户用于通信的任何装置,诸如手持式电话、智能电话、平板计算机、超薄笔记本、带有宽带适配器的笔记本或任何其它类似的通信装置。UE可连接到基站或节点,其能够性质上对应于GSM网络中的移动台(MS)。
在这里,SoC 900包含2个核 - 906和907。类似于上面的讨论,核906和907可遵照指令集架构,诸如具有Intel® Architecture Core™的处理器、Advanced MicroDevices, Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户以及他们的受许可方或采用者。核906和907被耦合到与总线接口单元909和L2高速缓存910关联的高速缓存控制908,以与系统900的其它部分进行通信。互连911包含片上互连,诸如IOSF、AMBA或上面讨论的其它互连,其能够实现所描述的公开的一个或多个方面。
互连911提供到其它组件的通信信道,诸如与订户身份模块(SIM)卡对接的SIM930、保持引导代码以便由核906和907执行以初始化和引导SOC 900的引导ROM 935、与外部存储器(例如,DRAM 960)对接的SDRAM控制器940、与非易失性存储器(例如,闪存965)对接的闪存控制器945、与外围设备对接的外围控制950(例如,串行外围接口)、显示和接收输入(例如,触摸启用的输入)的视频编解码器920和视频接口925、执行图形有关计算的GPU 915等。任何这些接口均可合并本文中所描述的实施例的各方面。
另外,系统图示了用于通信的外围设备,诸如蓝牙模块970、3G调制解调器975、GPS980和Wi-Fi 985。注意,如上所指出的,UE包含用于通信的无线电。因此,这些外围通信模块可未被全部包含。然而,在UE中,应包含用于外部通信的某种形式的无线电。
现在参照图10,示出的是在其中本公开的一个实施例可操作的系统1000的框图。系统1000可包含被耦合到图形存储器控制器集线器(GMCH)1020的一个或多个处理器1010、1015。在各种实施例中,处理器1010和1015中的一个或多个与图1A的处理器114相同。GMCH1020或ICH 1050中的一个或多个可以是图1A的中间节点130。存储器1040、显示器1045、外部图形装置1060或外围设备1070中的一个或多个可以是图1A的装置120。另外处理器1015的可选性质在图10中通过虚线表示。在一个实施例中,处理器1010、1015实现根据本公开的实施例的混合核。
每个处理器1010、1015可以是如上所述的电路、集成电路、处理器和/或硅集成电路的某一版本。然而,应注意的是,集成图形逻辑和集成存储器控制单元未必将存在于处理器1010、1015中。图10图示了GMCH 1020可被耦合到存储器1040,该存储器1040可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可与非易失性高速缓存关联。
GMCH 1020可以是芯片集或芯片集的一部分。GMCH 1020可与(一个或多个)处理器1010、1015进行通信,并且控制(一个或多个)处理器1010、1015与存储器1040之间的交互。GMCH 1020也可以充当(一个或多个)处理器1010、1015与系统1000的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 1020经由诸如前端总线(FSB)1095之类的多点总线,与(一个或多个)处理器1010、1015进行通信。
此外,GMCH 1020被耦合到显示器1045(诸如平板或触摸屏显示器)。GMCH 1020可包含集成图形加速器。GMCH 1020被进一步耦合到输入/输出(I/O)控制器集线器(ICH)1050,该集线器1050可被用来将各种外围装置耦合到系统1000。例如在图10的实施例中示出了外部图形装置1060,外部图形装置1060可以是连同另一外围装置1070一起耦合到ICH1050的离散图形装置。
备选的是,在系统1000中也可存在另外或不同的处理器。例如,(一个或多个)另外的处理器1015可包含与处理器1010相同的(一个或多个)另外的处理器、与处理器1010异构或不对称的(一个或多个)另外的处理器、加速器(诸如,例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在包含架构、微架构、热、功率消耗特性等品质的指标谱方面,(一个或多个)处理器1010、1015之间能够存在多种差别。这些差别可使它们有效地显现为在处理器1010、1015之间的不对称性和异构性。对于至少一个实施例,各种处理器1010、1015可驻留在相同管芯封装中。
图11图示了采用计算系统1100的示例形式的机器的图形表示,在该机器内可执行用于促使机器执行本文中讨论的任何一种或多种方法的指令集。在备选实施例中,机器可被连接(例如,联网)到在LAN、内联网、外联网或因特网中的其它机器。机器可在客户端-服务器网络环境中的服务器或客户端装置的容量中操作,或者作为对等(或分布式)网络环境中的对等机器操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换器或桥接器或能够执行规定要由该机器采取的动作的指令集(有序或无序)的任何机器。进一步,尽管只图示了单个机器,但术语“机器”也应被视为包含单独或联合运行执行本文中讨论的任何一种或多种方法的指令集(或多个指令集)的机器任何集合。提供链路保护的链路保护电路112或122能够在计算系统1100中被实现。
计算系统1100包含处理装置1102、主存储器1104(例如,只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)(例如,图1A的存储器116、图1B的装置存储器172)、静态存储器1106(例如,闪速存储器、静态随机存取存储器(SRAM)等)和数据存储装置1118,其经由总线1130彼此进行通信。
处理装置1102表示一个或多个通用处理装置,诸如微处理器、中央处理单元或诸如此类。更具体地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、极长指令字(VLIW)微处理器或实现其它指令集的处理器或实现指令集的组合的处理器。处理装置1102也可以是一个或多个专用处理装置,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或诸如此类。在一个实施例中,处理装置1102可包含一个或多个处理器核。处理装置1102被配置成执行指令1126(例如,处理逻辑)以便执行本文中讨论的操作。在一个实施例中,处理装置1102被耦合到图1A的链路保护电路112或122。在另一实施例中,处理装置1102是图1A的处理器114。备选的是,计算系统1100能够包含如本文中所述的其它组件。应理解的是,核可以不支持多线程(例如,执行操作或线程的两个或更多并行集合、经时间切片的多线程、同时多线程(其中单个物理核为物理核在同时进行多线程的每一个线程提供逻辑的核),或其组合(例如,诸如在Intel®超线程技术中的经时间切片的获取和解码以及其后的同时多线程)。
计算系统1100可进一步包含可通信地耦合到网络1120的网络接口装置1108。计算系统1100也可包含视频显示单元1110(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1112(例如,键盘)、光标控制装置1114(例如,鼠标)、信号生成装置1116(例如,扬声器)或其它外围装置。此外,计算系统1100可包含图形处理单元1122、视频处理单元1128和音频处理单元1132。在另一实施例中,计算系统1100可包含芯片集(未图示),其指的是被设计成与处理装置1102一起工作的一组集成电路或芯片,并且控制在处理装置1102与外部装置之间的通信。例如,芯片集可以是母板上的芯片的集合,母板将处理装置1102链接到诸如主存储器1104和图形控制器的极高速装置,并且将处理装置1102链接到诸如USB、PCI或ISA总线之类的外围设备的较低速外围总线。
数据存储装置1118可包含计算机可读存储介质1124,在计算机可读存储介质1124上存储了实施本文中描述的功能的任何一种或多种方法的指令1126(例如,软件)。指令1126(例如,软件)也可作为指令1126完全或至少部分驻留在主存储器1104内和/或在其由计算系统1100执行期间作为处理逻辑完全或至少部分驻留在处理装置1102内;主存储器1104和处理装置1102也构成计算机可读存储介质。主存储器1104可以是图1A的存储器116或图1B的装置存储器172。
计算机可读存储介质1124也可被用来存储利用处理装置1102的指令1126和/或含有调用上述应用的方法的软件库。尽管计算机可读存储介质1124在一示例实施例中被示为是单个介质,但术语“计算机可读存储介质”应被视为包含存储一个或多个指令集的单个介质或多个介质(例如,集中或分布式数据库和/或关联的高速缓存和服务器)。术语“计算机可读存储介质”也应被视为包含能存储、编码或携带指令集以供机器执行并且促使机器执行所提出的实施例的任何一种或多种方法的任何介质。术语“计算机可读存储介质”应相应地被视为包含但不限于固态存储器和光学及磁性介质。
以下示例属于其它实施例。
示例1是一种片上系统(SoC),其包括:处理器;耦合到所述处理器的存储器;耦合到所述存储器的链路保护电路,所述链路保护电路包括SoC加密引擎以执行以下操作:接收第一密钥和来自所述存储器的第一数据;由所述SoC加密引擎的SoC加密计数器生成SoC加密计数器值;使用所述SoC加密计数器值和所述第一密钥来加密所述第一数据以生成第一加密的数据;以及促使所述第一加密的数据被传送到包括与所述SoC加密计数器同步的装置解密计数器的装置。
在示例2中,如示例1所述的主题,其中所述第一加密的数据将由所述装置的装置解密引擎使用所述第一密钥和与所述SoC加密计数器值同步的装置解密计数器值来解密,所述装置解密计数器值由所述装置解密计数器生成。
在示例3中,如示例1-2中任一项所述的主题,其中所述第一加密的数据经由中间节点从所述SoC被传送到所述装置而未在所述中间节点验证所述第一加密的数据的完整性。
在示例4中,如示例1-3中任一项所述的主题,其中所述链路保护电路将使用所述第一密钥来生成第一消息认证代码(MAC),并且其中所述链路保护电路进一步包括:报头插入逻辑,用以执行以下操作:生成可信输入/输出(IO)事务层分组(TLP)报头以携带所述第一MAC到所述装置以便验证所述第一加密的数据的真实性;以及添加所述可信IO TLP报头到所述第一加密的数据以保持所述第一加密的数据在所述SoC传送的加密的数据的实例之中的顺序。
在示例5中,如示例1-4中任一项所述的主题,其中所述链路保护电路进一步包括:SoC解密引擎,用以执行以下操作:接收第二密钥和由所述装置的装置加密引擎使用所述第二密钥和装置加密计数器值加密的第二加密的数据;使用所述SoC解密引擎的SoC解密计数器,生成与所述装置加密计数器值同步的SoC解密计数器值;以及使用所述SoC解密计数器值和所述第二密钥来解密所述第二加密的数据以生成第二解密的数据。
在示例6中,如示例1-5中任一项所述的主题,其中所述链路保护电路进一步包括:报头解析逻辑,用以执行以下操作:解析所述第二加密的数据的可信输入/输出(IO)事务层分组(TLP)报头以识别所述可信IO TLP报头携带的第二MAC,其中所述链路保护电路将通过使用所述第二密钥来验证所述第二MAC,验证所述第二加密的数据的真实性。
在示例7中,如示例1-6中任一项所述的主题,其中所述链路保护电路进一步包括:丢弃检测逻辑,用以执行以下操作:生成用以写第一值的ping写请求以及ping读请求;在阈值量的读后,传送所述ping写请求到所述装置以将所述第一值写入所述装置;在传送所述ping写请求后,传送所述ping读请求到所述装置以读第二值;以及响应于确定所述第一值不匹配所述第二值,检测到写攻击。
在示例8中,如示例1-7中任一项所述的主题,其中所述链路保护电路进一步包括:丢弃检测逻辑,用以执行以下操作:响应于所述SoC传送的每个写请求,递增第一丢弃检测逻辑的第一丢弃检测计数器;响应于所述SoC传送的每个读请求,将所述第一丢弃检测计数器递减在对应读请求中的对应值;以及响应于确定在第一读请求后所述第一丢弃检测计数器的丢弃检测计数器值为负数,检测到写攻击。
在示例9中,如示例1-8中任一项所述的主题,其中所述第一数据是加载请求、存储请求或完成分组。
示例10是第一装置,其包括链路保护电路,所述链路保护电路包括第一加密引擎以执行以下操作:接收第一数据和第一密钥;由所述第一加密引擎的第一加密计数器生成第一加密计数器值;使用所述第一加密计数器值和所述第一密钥来加密所述第一数据以生成第一加密的数据;以及促使所述第一加密的数据被传送到包括与所述第一加密计数器同步的第二解密计数器的第二装置。
在示例11中,如示例10所述的主题,其中所述第一加密的数据将由所述第二装置的第二解密引擎使用所述第一密钥和与所述第一加密计数器值同步的第二解密计数器值来解密,所述第二解密计数器值由所述第二解密计数器生成。
在示例12中,如示例10-11中任一项所述的主题,其中所述第一加密的数据经由中间节点从所述第一装置被传送到所述第二装置而未在所述中间节点验证所述第一加密的数据的完整性。
在示例13中,如示例10-12中任一项所述的主题,其中所述链路保护电路将使用所述第一密钥来生成第一消息认证代码(MAC),并且其中所述链路保护电路进一步包括报头插入逻辑以执行以下操作:生成可信输入/输出(IO)事务层分组(TLP)报头以携带所述第一MAC到所述装置以便验证所述第一加密的数据的真实性;以及添加所述可信IO TLP报头到所述第一加密的数据以保持所述第一加密的数据在所述第一装置传送的加密的数据的实例之中的顺序。
在示例14中,如示例10-13中任一项所述的主题,其中所述链路保护电路进一步包括第一解密引擎,用以执行以下操作:接收第二密钥和由所述第二装置的第二加密引擎使用所述第二密钥和第二加密计数器值加密的第二加密的数据;使用所述第一解密引擎的第一解密计数器,生成与所述第二加密计数器值同步的第一解密计数器值;以及使用所述第一解密计数器值和所述第二密钥来解密所述第二加密的数据以生成第二解密的数据。
在示例15中,如示例10-14中任一项所述的主题,其中所述链路保护电路进一步包括报头解析逻辑,用以执行以下操作:解析所述第二加密的数据的可信输入/输出(IO)事务层分组(TLP)报头以识别所述可信IO TLP报头携带的第二MAC,其中所述链路保护电路将通过使用所述第二密钥来验证所述第二MAC,验证所述第二加密的数据的真实性。
在示例16中,如示例10-15中任一项所述的主题,其中所述链路保护电路进一步包括丢弃检测逻辑,用以执行以下操作:生成用以写第一值的ping写请求和ping读请求;在阈值量的读后,传送所述ping写请求到所述第二装置以将所述第一值写入所述第二装置;在传送所述ping写请求后,传送所述ping读请求到所述第二装置以读第二值;以及响应于确定所述第一值不匹配所述第二值,检测到写攻击。
在示例17中,如示例10-16中任一项所述的主题,其中所述链路保护电路进一步包括丢弃检测逻辑,用以执行以下操作:响应于所述第一装置传送的每个写请求,递增第一丢弃检测逻辑的第一丢弃检测计数器;响应于所述第一装置传送的每个读请求,将所述第一丢弃检测计数器递减在对应读请求中的对应值;以及响应于确定在第一读请求后所述第一丢弃检测计数器的丢弃检测计数器值为负数,检测到写攻击。
示例18是一种方法,其包括:由第一装置的第一加密引擎接收第一数据和第一密钥;由所述第一加密引擎的第一加密计数器生成第一加密计数器值;由所述第一加密引擎使用所述第一加密计数器值和所述第一密钥来加密所述第一数据以生成第一加密的数据;以及由所述第一加密引擎促使所述第一加密的数据被传送到包括与所述第一加密计数器同步的第二解密计数器的第二装置。
在示例19中,如示例18所述的方法,其中:所述第一加密的数据将由所述第二装置的第二解密引擎使用所述第一密钥和与所述第一加密计数器值同步的第二解密计数器值来解密,所述第二解密计数器值由所述第二解密计数器生成;以及所述第一加密的数据经由中间节点从所述第一装置被传送到所述第二装置而未在所述中间节点验证所述第一加密的数据的完整性。
在示例20中,如示例18-19中任一项所述的方法,进一步包括:由第一解密引擎接收第二密钥和由所述第二装置的第二加密引擎使用所述第二密钥和第二加密计数器值加密的第二加密的数据;使用所述第一解密引擎的第一解密计数器,生成与所述第二加密计数器值同步的第一解密计数器值;以及由所述第一解密引擎使用所述第一解密计数器值和所述第二密钥来解密所述第二加密的数据以生成第二解密的数据。
示例21是一种设备,包括用以执行示例18-20中的任一示例的方法的部件。
示例22是包括多个指令的至少一种机器可读介质,所述多个指令在被执行时实施示例18-20中的任一示例的方法,或者实现示例18-20中的任一示例的设备。
示例23是一种设备,包括被配置成执行示例18-20中的任一示例的方法的逻辑。
尽管本公开已相对于有限数量的实施例被描述,但本领域技术人员将领会到由此产生的多种修改和变化。随附的权利要求旨在涵盖落在本公开的真正精神和范围内的所有此类修改和变化。
在本文中的描述中,众多特定细节被阐述,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线段和操作等等的示例,以便提供对本公开的透彻理解。然而,对于本领域技术人员来说将显而易见的是,这些特定细节无需被体现来实践本公开。在其它实例中,没有详细描述公知的组件或方法,诸如特定和备选的处理器架构、用于描述的算法的特定逻辑/电路、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实施例、采用代码形式的算法的特定表达、特定掉电和选通技术/逻辑及计算机系统的其它特定操作细节,以免不必要地使本公开难以理解。
实施例参照了在特定集成电路中(诸如在计算平台或微处理器中)的访问控制来描述。实施例也可适用于其它类型的集成电路和可编程逻辑装置。例如,公开的实施例未被限于桌面型计算机系统或诸如Intel® Ultrabooks™计算机的便携式计算机。并且也可在诸如手持装置、平板、其它的薄笔记本、片上系统(SoC)装置及嵌入式应用之类的其它装置中被使用。手持式装置的一些示例包含蜂窝电话、因特网协议装置、数字摄像机、个人数字助理(PDA)及手持式PC。嵌入式应用通常包含微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换器或能够执行下面教导的功能和操作的任何其它系统。描述了系统能够是任何种类的计算机或嵌入式系统。公开的实施例可被特别用于低端装置,像可穿戴装置(例如,手表)、电子植入物、传感和控制基础设施装置、控制器、监管控制和数据采集(SCADA)系统或诸如此类。另外,本文中描述的设备、方法和系统不限于物理计算装置,而是也可涉及为了能量节约和效率的软件优化。正如在下面的描述中将变得容易显而易见的那样,本文中描述的方法、设备和系统的实施例(无论是涉及硬件、固件、软件还是它们的组合)对于与性能考虑相平衡的“绿色技术”未来是至关重要的。
虽然本文中的实施例参照处理器来描述,但其它实施例适用于其它类型的集成电路和逻辑装置。本公开的实施例的类似技术和教导能够被应用于能够从更高流水线吞吐量和改进的性能中受益的其它类型的电路或半导体装置。本公开的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本公开未被限于执行512位、256位、128位、64位、32位或16位数据运算的处理器或机器,并且能够被应用于其中执行数据的操纵或管理的任何处理器和机器。另外,本文中的描述提供示例,并且附图出于说明目的而示出各种示例。然而,这些示例不应以限制性的意义来理解,因为它们只是为了提供本公开的实施例的示例,而不是要提供本公开的实施例的所有可能实施例的详尽列表。
虽然下面的示例描述在执行单元和逻辑电路的上下文中的指令处置和分发,但本公开的其它实施例能够通过在机器可读有形介质上存储的数据或指令来完成,所述数据或指令在由机器执行时,促使机器执行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开的实施例关联的功能被体现在机器可执行指令中。指令能够被用来促使编程有指令的通用或专用处理器执行本公开的步骤。本公开的实施例可被提供为计算机程序产品或软件,该产品或软件可包含机器或计算机可读介质,在机器或计算机可读介质上存储有可被用来对计算机(或其它电子装置)进行编程以执行根据本公开的实施例的一个或多个操作的指令。备选的是,本公开的实施例的操作可能由含有用于执行操作的固定功能逻辑的特定硬件组件执行,或者由编程的计算机组件和固定功能硬件组件的任何组合执行。
用来对逻辑进行编程以执行本公开的实施例的指令能够被存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它存储装置。此外,指令能够经由网络或借助于其它计算机可读介质来分发。因此,机器可读介质可包含用于以由机器(例如,计算机)可读的形式存储或传送信息的任何机制,但不限于软盘、光盘、紧凑盘、只读存储器(CD-ROM)、和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在信息经由电、光、声或其它传播信号形式(例如,载波、红外信号、数字信号等)通过因特网的传输中使用的有形机器可读存储装置。相应地,计算机可读介质包含适合用于存储或传送机器(例如计算机)可读的形式的电子指令或信息的任何类型的有形机器可读介质。
设计可经历从创建到模拟到制造的各种阶段。表示设计的数据可以多种方式表示设计。首先,由于在模拟中是有用的,可使用硬件描述语言或另一功能描述语言来表示硬件。另外,可在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,在某一阶段,大多数设计可达到表示在硬件模型中的各种装置的物理布局的数据级别。在其中使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定在用来产生集成电路的掩膜的不同掩膜层上存在或不存在各种特征的数据。在设计的任何表示中,数据可被存储在任何形式的机器可读介质中。存储器或者磁性或光学存储装置(诸如盘)可以是用以存储信息的机器可读介质,所述信息经由被调制或以其它方式生成来传送此类信息的光波或电波传送。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传输而言,新的副本被制成。因此,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储诸如编码到载波中的信息、体现本公开的实施例的技术的制品。
如在本文中所使用的模块指硬件、软件和/或固件的任何组合。作为示例,模块包含诸如微控制器的与用以存储适于由微控制器执行的代码的非暂态介质关联的硬件。因此,在一个实施例中,对模块的引用指代特别地配置成识别和/或执行要保留在非暂态介质上的代码的硬件。此外,在另一实施例中,模块的使用指代包含代码的非暂态介质,所述代码特别地适于由微控制器执行以执行预确定的操作。而且如能够推断的,在还有的另一实施例中,术语模块(在此示例中)可指微控制器和非暂态介质的组合。通常,图示为分离的模块边界通常有变化,并可能重叠。例如,第一和第二模块可共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包含诸如晶体管、寄存器之类的硬件或诸如可编程逻辑装置之类的其它硬件。
在一个实施例中,措辞“配置成”的使用指安排、组合、制造、提供销售、导入和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在此示例中,如果设备或其元件被设计、耦合和/或互连以执行指定的任务,则不在进行操作的设备或其元件仍被“配置成”执行所述指定的任务。作为纯说明性示例,逻辑门可在操作期间提供0或1。但“配置成”向时钟提供使能信号的逻辑门不包含可提供1或0的每一个潜在逻辑门。相反,逻辑门是以某一方式耦合的逻辑门,使得在操作期间1或0输出用来启用时钟。再次注意,术语“配置成”的使用不要求操作,而是专注于设备、硬件和/或元件的潜在状态上,其中在潜在状态中,设备、硬件和/或元件被设计成在设备、硬件和/或元件在进行操作时执行特定任务。
此外,在一个实施例中,措辞“以”、“能够”和或“可操作以”的使用指的是以某种方式设计某一设备、逻辑、硬件和/或元件,以能够实现以指定的方式来使用该设备、逻辑、硬件和/或元件。注意,如上所述,在一个实施例中,“以”,“能够”或“可操作以”的使用指设备、逻辑、硬件和/或元件的潜在状态,在该潜在状态中设备、逻辑、硬件和/或元件未在操作,但是以此类方式被设计成能够实现以指定方式使用设备。
在本文中使用时,值包含数字、状态、逻辑的状态或二进制逻辑的状态的任何已知表示。通常,逻辑级别、逻辑值或逻辑的值的使用也指代1和0,这简单地表示二进制逻辑状态。例如,1指高逻辑级别,并且0指低逻辑级别。在一个实施例中,诸如晶体管或闪速单元的存储单元可以有能力保留单个逻辑的值或多个逻辑的值。然而,计算机系统中值的其它表示已被使用。例如,十进制数字十也可被表示为二进制值1010和十六进制字母A。因此,值包含能够被保持在计算机系统中的信息的任何表示。
另外,状态可由值或值的部分表示。作为示例,诸如逻辑的一的第一值可表示默认或初始状态,而诸如逻辑的零的第二值可表示非默认状态。另外,在一个实施例中,术语重置和设置分别指默认和更新的值或状态。例如,默认值潜在地包含高逻辑的值,即重置,而更新的值潜在地包含低逻辑的值,即设置。注意,值的任何组合可用于表示任何数量的状态。
上面所阐述的方法、硬件、软件、固件或代码集的实施例可经由在机器可访问、机器可读、计算机可访问或计算机可读介质上存储的由处理元件可执行的指令或代码来实现。非暂态机器可存取/可读介质包含以机器可读形式提供(即,存储和/或传送)信息的任何机制,诸如计算机或电子系统。例如,非暂态机器可访问介质包含随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光学存储介质;闪速存储器装置;电存储装置;光学存储装置;声学存储装置;用于保持从暂态(传播的)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储装置;等等,它们要与可从其中接收信息的非暂态介质区分开。
用于对逻辑进行编程以执行本公开的实施例的指令可存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其它存储装置。此外,指令能够经由网络或借助于其它计算机可读介质来分发。因此,机器可读介质可包含用于以由机器(例如,计算机)可读的形式存储或传送信息的任何机制,但不限于软盘、光盘、紧凑盘、只读存储器(CD-ROM)、和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在信息经由电、光、声或其它传播信号形式(例如,载波、红外信号、数字信号等)通过因特网的传输中使用的有形机器可读存储装置。相应地,计算机可读介质包含适合于存储或传送采用机器(例如计算机)可读的形式的电子指令或信息的任何类型的有形机器可读介质。
此说明书通篇对“一个实施例”或“一实施例”的引用指与该实施例有关描述的特定特征、结构或特性被包含在本公开的至少一个实施例中。因此,在说明书通篇各个位置出现的措辞“在一个实施例”或“在一实施例中”不一定全部指同一实施例。此外,特定的特征、结构或特性可在一个或多个实施例中以任何适合的方式被组合。
在前述的说明书中,参照特定示范实施例提供了详细描述。然而,将明显的是,在不脱离如随附权利要求所述本公开的更广泛的精神和范围的情况下,可对其进行各种修改和更改。相应地,要以说明性的意义而非限制性的意义来看待说明书和附图。此外,实施例和其它示范语言的上述使用不一定指相同实施例或相同示例,而是可指不同和有区别的实施例及潜在地相同的实施例。
根据对计算机存储器内的数据位进行的操作的符号表示和算法来呈现详细描述的一些部分。这些算法描述和表示是数据处理领域技术人员用来最有效地将其工作内容传达给本领域其它技术人员的手段。算法在这里且一般地被构思为导致期望结果的自洽的操作序列。操作是要求物理量的物理操纵的那些操作。通常但并非一定地,这些量采用能够被存储、转移、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于通常使用的原因,已经证明有时按照位、值、元素、符号、字符、项、数字等来参考这些信号是方便的。本文中描述的框能够是硬件、软件、固件或其组合。
然而,应当记住所有的这些和类似的术语要与适当的物理量关联,并且这些术语只是应用于这些量的方便标记。除非另外具体说明,否则,如从上面的论述中显而易见的,要领会在本说明书通篇中,利用诸如“接收”、“生成”、“加密”、“促使”、“添加”、“解密”、“解析”、“保持”、“检测”、“传送”、“递增”、“递减”等术语的论述指的是计算系统或类似电子计算装置的动作和过程,所述计算系统或类似电子计算装置将表示为在计算系统的寄存器和存储器内的物理(例如,电子)量的数据操纵和变换成类似地表示为在计算系统存储器或寄存器或其它此类信息存储、传输或显示装置内的物理量的其它数据。
词语“示例”或“示范”在本文中被用来表示充当示例、实例或说明。本文中描述为“示例”或“示范”的任何方面或设计不一定被视为优选于或优于其它方面或设计。相反,词语“示例”或“示范”的使用旨在以具体的方式呈现概念。在本申请中使用时,术语“或”旨在表示包容性“或”而不是排它性“或”。也就是说,除非另有指定,或者上下文有明确说明,否则“X包含A或B”旨在表示任何自然包容性置换。也就是说,如果X包含A;X包含B;或者X包含A和B二者,则“X包含A或B”在任何上述实例下都是满足的。另外,除非另有说明,或者从上下文明确地针对单数形式,否则,冠词“一(a及an)”在本申请和随附权利要求中使用时,应一般地被视为表示“一个或多个”。此外,通篇中对术语“一实施例”或“一个实施例”或“一实现”或“一个实现”的使用无意于表示相同实施例或实现,除非如此地描述。还有,术语“第一”、“第二”、“第三”、“第四”等在本文中使用时意为用来在不同元件之间进行区分的标记,且可不一定具有根据其数字指示的排序含义。

Claims (23)

1.一种片上系统(SoC),包括:
处理器;
耦合到所述处理器的存储器;
耦合到所述存储器的链路保护电路,所述链路保护电路包括SoC加密引擎以执行以下操作:
接收第一密钥和来自所述存储器的第一数据;
由所述SoC加密引擎的SoC加密计数器生成SoC加密计数器值;
使用所述SoC加密计数器值和所述第一密钥来加密所述第一数据以生成第一加密的数据;以及
促使所述第一加密的数据被传送到包括与所述SoC加密计数器同步的装置解密计数器的装置。
2.如权利要求1所述的SoC,其中所述第一加密的数据将由所述装置的装置解密引擎使用所述第一密钥和与所述SoC加密计数器值同步的装置解密计数器值来解密,所述装置解密计数器值由所述装置解密计数器生成。
3.如权利要求1所述的SoC,其中所述第一加密的数据经由中间节点从所述SoC被传送到所述装置而未在所述中间节点验证所述第一加密的数据的完整性。
4.如权利要求1所述的SoC,其中所述链路保护电路将使用所述第一密钥来生成第一消息认证代码(MAC),并且其中所述链路保护电路进一步包括:
报头插入逻辑,用以执行以下操作:
生成可信输入/输出(IO)事务层分组(TLP)报头以携带所述第一MAC到所述装置以便验证所述第一加密的数据的真实性;以及
添加所述可信IO TLP报头到所述第一加密的数据以保持所述第一加密的数据在所述SoC传送的加密的数据的实例之中的顺序。
5.如权利要求1所述的SoC,其中所述链路保护电路进一步包括:
SoC解密引擎,用以执行以下操作:
接收第二密钥和由所述装置的装置加密引擎使用所述第二密钥和装置加密计数器值加密的第二加密的数据;
使用所述SoC解密引擎的SoC解密计数器,生成与所述装置加密计数器值同步的SoC解密计数器值;以及
使用所述SoC解密计数器值和所述第二密钥来解密所述第二加密的数据以生成第二解密的数据。
6.如权利要求5所述的SoC,其中所述链路保护电路进一步包括:
报头解析逻辑,用以执行以下操作:
解析所述第二加密的数据的可信输入/输出(IO)事务层分组(TLP)报头以识别所述可信IO TLP报头携带的第二MAC,其中所述链路保护电路将通过使用所述第二密钥来验证所述第二MAC,验证所述第二加密的数据的真实性。
7.如权利要求1所述的SoC,其中所述链路保护电路进一步包括:
丢弃检测逻辑,用以执行以下操作:
生成用以写第一值的ping写请求以及ping读请求;
在阈值量的读后,传送所述ping写请求到所述装置以将所述第一值写入所述装置;
在传送所述ping写请求后,传送所述ping读请求到所述装置以读第二值;以及
响应于确定所述第一值不匹配所述第二值,检测到写攻击。
8.如权利要求1所述的SoC,其中所述链路保护电路进一步包括:
丢弃检测逻辑,用以执行以下操作:
响应于所述SoC传送的每个写请求,递增第一丢弃检测逻辑的第一丢弃检测计数器;
响应于所述SoC传送的每个读请求,将所述第一丢弃检测计数器递减在对应读请求中的对应值;以及
响应于确定在第一读请求后所述第一丢弃检测计数器的丢弃检测计数器值为负数,检测到写攻击。
9.如权利要求1所述的SoC,其中所述第一数据是加载请求、存储请求或完成分组。
10.第一装置,包括:
链路保护电路,包括:
第一加密引擎,用以执行以下操作:
接收第一数据和第一密钥;
由所述第一加密引擎的第一加密计数器生成第一加密计数器值;
使用所述第一加密计数器值和所述第一密钥来加密所述第一数据以生成第一加密的数据;以及
促使所述第一加密的数据被传送到包括与所述第一加密计数器同步的第二解密计数器的第二装置。
11.如权利要求10所述的第一装置,其中所述第一加密的数据将由所述第二装置的第二解密引擎使用所述第一密钥和与所述第一加密计数器值同步的第二解密计数器值来解密,所述第二解密计数器值由所述第二解密计数器生成。
12.如权利要求10所述的第一装置,其中所述第一加密的数据经由中间节点从所述第一装置被传送到所述第二装置而未在所述中间节点验证所述第一加密的数据的完整性。
13.如权利要求10所述的第一装置,其中所述链路保护电路将使用所述第一密钥来生成第一消息认证代码(MAC),并且其中所述链路保护电路进一步包括:
报头插入逻辑,用以执行以下操作:
生成可信输入/输出(IO)事务层分组(TLP)报头以携带所述第一MAC到所述装置以便验证所述第一加密的数据的真实性;以及
添加所述可信IO TLP报头到所述第一加密的数据以保持所述第一加密的数据在所述第一装置传送的加密的数据的实例之中的顺序。
14.如权利要求10所述的第一装置,其中所述链路保护电路进一步包括:
第一解密引擎,用以执行以下操作:
接收第二密钥和由所述第二装置的第二加密引擎使用所述第二密钥和第二加密计数器值加密的第二加密的数据;
使用所述第一解密引擎的第一解密计数器,生成与所述第二加密计数器值同步的第一解密计数器值;以及
使用所述第一解密计数器值和所述第二密钥来解密所述第二加密的数据以生成第二解密的数据。
15.如权利要求14所述的第一装置,其中所述链路保护电路进一步包括:
报头解析逻辑,用以执行以下操作:
解析所述第二加密的数据的可信输入/输出(IO)事务层分组(TLP)报头以识别所述可信IO TLP报头携带的第二MAC,其中所述链路保护电路将通过使用所述第二密钥来验证所述第二MAC,验证所述第二加密的数据的真实性。
16.如权利要求10所述的第一装置,其中所述链路保护电路进一步包括:
丢弃检测逻辑,用以执行以下操作:
生成用以写第一值的ping写请求和ping读请求;
在阈值量的读后,传送所述ping写请求到所述第二装置以将所述第一值写入所述第二装置;
在传送所述ping写请求后,传送所述ping读请求到所述第二装置以读第二值;以及
响应于确定所述第一值不匹配所述第二值,检测到写攻击。
17.如权利要求10所述的第一装置,其中所述链路保护电路进一步包括:
丢弃检测逻辑,用以执行以下操作:
响应于所述第一装置传送的每个写请求,递增第一丢弃检测逻辑的第一丢弃检测计数器;
响应于所述第一装置传送的每个读请求,将所述第一丢弃检测计数器递减在对应读请求中的对应值;以及
响应于确定在第一读请求后所述第一丢弃检测计数器的丢弃检测计数器值为负数,检测到写攻击。
18.一种方法,包括:
由第一装置的第一加密引擎接收第一数据和第一密钥;
由所述第一加密引擎的第一加密计数器生成第一加密计数器值;
由所述第一加密引擎使用所述第一加密计数器值和所述第一密钥来加密所述第一数据以生成第一加密的数据;以及
由所述第一加密引擎促使所述第一加密的数据被传送到包括与所述第一加密计数器同步的第二解密计数器的第二装置。
19.如权利要求18所述的方法,其中:
所述第一加密的数据将由所述第二装置的第二解密引擎使用所述第一密钥和与所述第一加密计数器值同步的第二解密计数器值来解密,所述第二解密计数器值由所述第二解密计数器生成;以及
所述第一加密的数据经由中间节点从所述第一装置被传送到所述第二装置而未在所述中间节点验证所述第一加密的数据的完整性。
20.如权利要求18所述的方法,进一步包括:
由第一解密引擎接收第二密钥和由所述第二装置的第二加密引擎使用所述第二密钥和第二加密计数器值加密的第二加密的数据;
使用所述第一解密引擎的第一解密计数器,生成与所述第二加密计数器值同步的第一解密计数器值;以及
由所述第一解密引擎使用所述第一解密计数器值和所述第二密钥来解密所述第二加密的数据以生成第二解密的数据。
21.一种设备,包括用以执行权利要求18-20中的任一项的方法的部件。
22.包括多个指令的至少一种机器可读介质,所述多个指令在被执行时实施权利要求18-20中的任一项的方法,或者实现权利要求18-20中的任一项的设备。
23.一种设备,包括被配置成执行权利要求18-20中的任一项的方法的处理器。
CN202010086659.9A 2019-03-11 2020-02-11 用于可信输入/输出装置的链路保护 Pending CN111682939A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/298,588 US11171955B2 (en) 2019-03-11 2019-03-11 Link protection for trusted input/output devices
US16/298588 2019-03-11

Publications (1)

Publication Number Publication Date
CN111682939A true CN111682939A (zh) 2020-09-18

Family

ID=69528594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010086659.9A Pending CN111682939A (zh) 2019-03-11 2020-02-11 用于可信输入/输出装置的链路保护

Country Status (3)

Country Link
US (1) US11171955B2 (zh)
EP (1) EP3709562B1 (zh)
CN (1) CN111682939A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282533A (zh) * 2021-07-20 2021-08-20 中科南京智能技术研究院 一种异步链路发送端电路及芯片接收端电路

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11394531B2 (en) * 2019-07-12 2022-07-19 Intel Corporation Overhead reduction for link protection
US20210336767A1 (en) * 2021-06-25 2021-10-28 Intel Corporation Memory bus integrity and data encryption (ide)
US20230046788A1 (en) * 2021-08-16 2023-02-16 Capital One Services, Llc Systems and methods for resetting an authentication counter
US20240106813A1 (en) * 2022-09-28 2024-03-28 Advanced Micro Devices, Inc. Method and system for distributing keys

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101369748B1 (ko) * 2006-12-04 2014-03-06 삼성전자주식회사 데이터 암호화 방법 및 그 장치
KR20100042457A (ko) * 2008-10-16 2010-04-26 삼성전자주식회사 데이터 암호화 방법 및 장치와 데이터 복호화 방법 및 장치
US9852301B2 (en) 2014-12-24 2017-12-26 Intel Corporation Creating secure channels between a protected execution environment and fixed-function endpoints
US20160321458A1 (en) * 2015-05-01 2016-11-03 Marvell World Trade Ltd. Systems and methods for secured data transfer via inter-chip hopping buses

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282533A (zh) * 2021-07-20 2021-08-20 中科南京智能技术研究院 一种异步链路发送端电路及芯片接收端电路
CN113282533B (zh) * 2021-07-20 2021-09-28 中科南京智能技术研究院 一种异步链路发送端电路及芯片接收端电路

Also Published As

Publication number Publication date
US11171955B2 (en) 2021-11-09
EP3709562B1 (en) 2022-09-28
US20200296099A1 (en) 2020-09-17
EP3709562A1 (en) 2020-09-16

Similar Documents

Publication Publication Date Title
US11316661B2 (en) Encryption interface
US11838418B2 (en) Protection of keys and sensitive data from attack within microprocessor architecture
US9893881B2 (en) Efficient sharing of hardware encryption pipeline for multiple security solutions
EP3709562B1 (en) Link protection for trusted input/output devices
US10671740B2 (en) Supporting configurable security levels for memory address ranges
US20220335117A1 (en) Flexible container attestation
JP6504679B2 (ja) セキュア暗号ハッシュラウンド機能を提供する命令およびロジック
US9910793B2 (en) Memory encryption engine integration
CN114692131A (zh) 带有分解式存储器的密码式计算
US20160188889A1 (en) Creating secure channels between a protected execution environment and fixed-function endpoints
US11360910B2 (en) Prevention of trust domain access using memory ownership bits in relation to cache lines
WO2015047779A1 (en) Creating secure original equipment manufacturer (oem) identification
WO2017176407A1 (en) Parallelized authentication encoding
EP3815323B1 (en) Secure virtual machine migration using encrypted memory technologies

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