CN110069439A - 设备认证 - Google Patents

设备认证 Download PDF

Info

Publication number
CN110069439A
CN110069439A CN201811581492.2A CN201811581492A CN110069439A CN 110069439 A CN110069439 A CN 110069439A CN 201811581492 A CN201811581492 A CN 201811581492A CN 110069439 A CN110069439 A CN 110069439A
Authority
CN
China
Prior art keywords
equipment
register
response
mailbox
host
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
CN201811581492.2A
Other languages
English (en)
Inventor
Y-Y·陈
W·S·波维尔托斯基
S·瓦拉达拉扬
D·J·哈里曼
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 CN110069439A publication Critical patent/CN110069439A/zh
Pending legal-status Critical Current

Links

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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic 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/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/3234Cryptographic 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 involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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/3239Cryptographic 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 non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/3263Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3265Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
    • 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/3271Cryptographic 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 challenge-response
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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
    • 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/0042Universal serial bus [USB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2103Challenge-response

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Storage Device Security (AREA)

Abstract

一种设备包括微控制器、包括用于存储私钥的安全存储器的存储器、一组寄存器和认证引擎。该组寄存器包括写邮箱寄存器和读邮箱寄存器,并且主机系统将消息数据写入写邮箱寄存器。消息数据包括质询请求的至少一部分,并且所述质询请求包括所述主机系统对设备的真实性的质询。认证引擎生成对质询的响应,其中响应包括用于标识设备的属性的数据和使用私钥生成的签名。认证引擎使得所述响应的至少一部分被写入主机系统读取的所述读邮箱寄存器。

Description

设备认证
相关申请
本申请要求2018年1月24日提交的美国临时专利申请序列号62/621,153的优先权,其公开内容通过引用整体并入本文。
技术领域
本公开涉及计算系统,并且特别地(但非排他地)涉及连接设备的认证。
背景技术
半导体处理和逻辑设计的进步已经允许增加可能存在于集成电路器件上的逻辑量。作为必然结果,计算机系统配置已经从系统中的单个或多个集成电路发展到存在于各个集成电路上的多个核、多个硬件线程和多个逻辑处理器,以及集成在这些处理器内的其他接口。处理器或集成电路通常包括单个物理处理器管芯,其中处理器管芯可包括任何数量的核、硬件线程、逻辑处理器、接口、存储器、控制器集线器等。
由于在较小的封装中使得更大的处理能力适应的能力,较小的计算设备普及度已经增加。智能电话、平板电脑、超薄笔记本电脑和其他用户设备呈指数级增长。但是,这些较小的设备依赖于服务器,无论是数据存储还是超出外形尺寸的复杂处理。因此,高性能计算市场(即服务器空间)的需求也增加了。例如,在现代服务器中,通常不仅存在具有多个核的单个处理器,而且还存在多个物理处理器(也称为多个插槽)以增加计算能力。但在诸如上述的实现方式中,随着处理能力随着计算系统中设备的数量而增长,插槽和其他设备之间的通信变得更加关键。
实际上,互连已经从主要处理电通信的更传统的多点总线发展到促进快速通信的完全互连架构。不幸的是,随着对未来处理器以更高速率进行消耗的需求,相对应的需求被放在现有互连架构的能力上。
附图说明
图1示出了包括互连架构的计算系统的实施例。
图2示出了包括分层堆栈的互连架构的实施例。
图3示出了要在互连架构内生成或接收的请求或分组的实施例。
图4示出了用于互连架构的发射器和接收器对的实施例。
图5是示出了系统中的主机和设备之间的示例认证的图。
图6是示出了设备上的证书的示例供应和系统中的设备的运行时认证的图。
图7是示出了示例信任链的框图。
图8是示出了通过互连连接到主机系统的示例设备的框图。
图9是表示示例认证扩展能力结构的图。
图10A-图10M是示例认证扩展能力结构内的寄存器的详细视图。
图11是示出了设备和主机之间的示例认证会话的简化框图。
图12是表示与设备的认证相关联地生成的示例清单的图。
图13是表示示例质询响应的格式的图。
图14示出了包括多核处理器的计算系统的框图的实施例。
图15示出了用于包括多个处理器的计算系统的块的实施例。
具体实施方式
在以下描述中,阐述了许多具体细节(诸如,特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等的示例),以便提供对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,不需要采用这些具体细节来实施本发明。在其他实例中,为了避免不必要地模糊本发明,没有详细描述众所周知的组件或方法,例如特定和替代处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、算法以代码形式的特定表达、特定的断电和门控技术/逻辑以及计算机系统的其他特定操作细节。
尽管可以参考特定计算系统中(例如,在计算平台或微处理器中)的计算机安全增强来描述以下实施例,但是其他实施例也适用于其他类型的集成电路和逻辑设备。本文描述的实施例的类似技术和教导可以应用于也可以受益于更好的能量效率和能量节省的其他类型的电路或半导体器件。例如,所公开的实施例不限于台式计算机系统或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)、南桥和根控制器/集线器。通常,术语芯片组指的是两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意,当前系统通常包括与处理器105集成的MCH,而控制器115以与下面描述的类似方式与I/O设备通信。在一些实施例中,可选地通过根复合体115支持对等路由。
这里,控制器集线器115通过串行链路119耦合到交换机/桥接器120。输入/输出模块117和121(也可以称为接口/端口117和121)包括/实现分层协议栈以提供控制器集线器115和交换机120之间的通信。在一个实施例中,多个设备能够耦合到交换机120。
交换机/桥120将分组/消息从设备125向上游(即,朝向根联合体顺着层次结构向上)路由到控制器集线器115并且向下游(即从远离根控制器顺着层次结构向下)从处理器105或系统存储器110路由到设备125。在一个实施例中,交换机120被称为多个虚拟PCI到PCI桥设备的逻辑组件。设备125包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备。通常在PCIe术语中,例如设备,被称为端点。尽管没有具体示出,但是设备125可以包括PCIe到PCI/PCI-X桥,以支持传统或其他版本的PCI设备。PCIe中的端点设备通常被分类为传统、PCIe或根联合体集成端点。
图形加速器130还通过串行链路132耦合到控制器集线器115。在一个实施例中,图形加速器130耦合到MCH,而MCH耦合到ICH。然后将交换机120和I/O设备125耦合到ICH。I/O模块131和118还用于实现分层协议栈以在图形加速器130和控制器集线器115之间进行通信。类似于上面的MCH讨论,图形控制器或图形加速器130本身可以集成在处理器105中。此外,系统的一个或多个链路(例如,123)可以包括一个或多个扩展设备(例如,150),例如,重定时器、转发器等。
转到图2,图2示出了分层协议栈的实施例。分层协议栈200包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈或其他分层栈。尽管下面参考图1-图4进行的讨论涉及PCIe栈,但是相同的概念可以应用于其他互连栈。在一个实施例中,协议栈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是由请求代理生成的字段,并且对于需要完成该请求代理的所有未完成请求它是唯一的。此外,在该示例中,源标识符310在PCIe层次结构内唯一地标识请求者代理。因此,与源ID 310一起,本地事务标识符308字段提供层次结构域内的事务的全局标识。
属性字段304指定事务的特征和关系。在这方面,属性字段304可能用于提供允许修改事务的默认处理的附加信息。在一个实施例中,属性字段304包括优先级字段312、保留字段314、排序字段316和非窥探字段318。这里,优先级子字段312可以由发起者修改以向事务分配优先级。保留属性字段314保留用于将来或供应商定义的用途。可以使用保留属性字段来实现使用优先级或安全性属性的可能使用模型。
在该示例中,排序属性字段316用于提供传达可以修改默认排序规则的排序类型的可选信息。根据一个示例实现方式,排序属性“0”表示要应用默认排序规则,其中排序属性“1”表示放宽排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。窥探属性字段318用于确定是否窥探了事务。如图所示,通道ID字段306标识与事务相关联的通道。
链路层
链路层210(也称为数据链路层210)充当事务层205和物理层220之间的中间级。在一个实施例中,数据链路层210的职责是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠机制。数据链路层210的一侧接受由事务层205组装的TLP,应用分组序列标识符211,即标识号或分组号,计算并应用错误检测码,即CRC 212,并将修改的TLP提交给物理层220用于跨物理到外部设备的传输。
物理层
在一个实施例中,物理层220包括逻辑子块221和电子块222,以物理地将分组发送到外部设备。这里,逻辑子块221负责物理层221的“数字”功能。在这方面,逻辑子块包括用于准备用于由物理子块222发送的传出信息的发送部分,以及用于在将所接收的信息传递到链路层210之前识别和准备所接收的信息的接收部分。
物理块222包括发射器和接收器。发射器由逻辑子块221提供符号,发射器将符号串行化并发送到外部设备。接收器被提供有来自外部设备的串行符号,并将接收的信号转换为位流。位流被反序列化并提供给逻辑子块221。在一个实施例中,采用8b/10b传输码,其中发送/接收10位符号。这里,特殊符号用于利用帧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从高逻辑电平驱动到低逻辑电平,即下降沿。差分信号潜在地表现出更好的电特性,例如更好的信号完整性,即交叉耦合、电压过冲/下冲、振铃等。这允许更好的定时窗口,这实现更快的传输频率。
在一些实现方式中,可以提供高性能互连和对应的互连协议(例如,诸如基于下一代PCIe的互连),其能够以诸如25GT/s和/或32GT/s的高速操作。在一个示例中,可以基于针对信道确定的特性(例如,在链路训练期间)针对高性能互连定义两个速度,一个速度为25GT/s和32GT/s。在一种实现方式中,互连可以向后兼容现有的PCIe代和针对这些代提供的速度(例如,8GT/s、16GT/s等)。
在过去十年中,计算行业的硬件安全环境集中于在中央处理单元(CPU)及其相关联的芯片组中建立根或信任。由于PCIe设备通常由IOMMU管理,IOMMU受低级系统软件的控制以限制设备允许的访问,因此这些PCIe设备被认为是在平台的可信计算基础(TCB)之外,而不考虑设备的功能或设备制造商的可信赖性。
随着基于PCIe的计算加速器的激增,越来越多的工作负载依赖于PCIe设备以进行关键和高性能操作。为此,PCIe设备给提供有用于允许设备获得PCIe的全部性能优势的功能。作为示例,可以提供地址转换服务(ATS)以使PCIe设备能够本地缓存地址转换。传统上,PCIe设备可以通过向CPU发送访客物理地址(GPA)请求来访问系统存储器,其中CPU上的IOMMU将GPA请求转换为主机物理地址(HPA)请求并将请求转发到存储器以完成事务。设备地址转换高速缓存(ATC)使设备请求能够以较低的存储器存取延迟绕过系统的IOMMU转换,并通过使设备适当地调整其本地转换高速缓存的大小来进一步支持系统优化。
使设备绕过系统的地址转换机制,例如通过PCIe ATS,可能出现新的安全风险以及所产生的性能益处。例如,PCIe ATS可以允许PCIe设备直接存取所有物理存储器位置。尽管PCIe主机可能会针对不适当的PCIe设备行为实施某些检查,但实施全面检查会对ATS的性能优势不利。为了减少或消除对此类检查的需要,平台的TCB需要包括所有实现ATS的PCIe设备,以及其他示例问题。即使没有实现ATS的PCIe设备,在现代云计算系统中,云运营商也有动力增强向他们的客户保证云环境的可信度,包括用于实现云计算环境而部署的每一个PCIe设备。但是,目前还没有针对主机软件的统一的机制以针对PCIe设备做出这样的信任决定。
在一个实现方式中,可以针对PCIE设备实现设备固件测量和设备认证机制。这些特征可以使主机软件能够针对PCIe设备做出信任决定。例如,这样的机制可以实现检查设备的标识和在设备上运行的固件组件的标识。在一个实现方式中,主机软件可以通过PCI配置空间报头中的供应商ID和设备ID来识别设备,以及其他示例实现。然而,一些PCIe设备可以包括独立于主机处理器操作的一个或多个微控制器,并且当前没有用于暴露其固件标识的针对PCIe设备的定义机制。因此,在一个示例中,可以执行PCIe设备的摘要、清单或其他测量,并允许在这些设备微控制器上运行的任何固件映像暴露给主机。例如,PCIe设备固件测量特征可以允许PCIe设备的固件标识被包括作为平台组件的一部分以用于增强的平台保证。
在一个实现方式中,除了利用PCIe供应商/设备ID和设备固件测量之外,可以提供附加特征,因为这些特征本身可能不保证来自特定供应商(例如,供应商A)的设备不能通过欺骗供应商和设备ID字段或固件测量而伪装成来自不同供应商(例如,供应商B)的设备。换句话说,当前PCIe规范和PCIe设备固件测量本身可能不提供特定设备的标识和能力的加密或其他保证。随着其中部署了数万个计算主机以及插入到这些主机的每个中的若干基于PCIe的设备的云和数据中心环境中计算资源的整合,对此类问题的担忧大大增加。虽然可以通过可靠的供应链采购PCIe设备以确保在主机上使用真正的设备,但仍然存在假冒PCIe设备通过供应链流窜的事件。这种伪造的PCIe设备可能会将其组件或微控制器固件替换为更便宜或更不可靠的部件,从而导致云或数据中心操作中断。在更险恶的示例中,PCIe设备的功能可能被秘密伪造或者替换成被配备有恶意逻辑或故意缺陷且易受攻击的硬件或固件的设备,以及其他示例。因此,在一些实现方式中,可以提供增强的设备认证功能,例如本文介绍的,以减轻这种攻击或缺陷。
可以在期望或者需要关于PCIe设备行为的更高保证的任何地方应用增强的PCIe设备认证功能。例如,固件和/或低级系统软件(例如,虚拟机监视器(VMM))可以在将设备分配给虚拟机之前利用这种功能来在系统上建立设备的标识。作为另一示例,当设备实现地址转换高速缓存(ATC)以实现地址转换服务(ATS)给出的性能益处时,设备被赋予在设备上对地址转换结果进行高速缓存的特权。为了让主机做出信任决定以将此权限授予设备,设备可以使用其通过增强的设备认证特征提供的唯一加密标识向主机进行认证。管理大量系统的远程系统(每个系统包含一个或多个设备)管理员也可以通过生成所有设备的加密标识清单来使用增强的设备认证特征,而无需对系统进行物理检查。还可以执行PCIe设备的运行时/热交换验证,而不需要主机重启,其中在将资源分配给设备之前,操作系统(OS)驱动程序验证PCIe设备的标识,以及其他示例和用例。实际上,PCIe设备固件测量和设备认证框架可以建立可以验证设备标识和能力的基础。在一些实现方式中,还可以提供附加特征,诸如双向认证(例如,允许主机的标识也由设备使用类似技术来验证),在各个主机和设备之间建立安全通道(例如,通过交换秘密来建立彼此之间的安全通道),以及其他示例。
可以利用设备认证来在主机(例如,在物理主机系统上运行的软件、主机固件、与主机相关联的实体等)和PCIe设备之间建立信任关系。主机可以确定PCIe设备的标识和能力以做出信任决定,或者简单地验证设备正在运行批准的固件版本,授予设备某些特权,或者与设备共享秘密。
图5描绘了用于认证目的的主机-设备关系的示例。诸如PCIe设备之类的设备505可以连接到主机系统510(例如,经由端口),并且可以由主机系统510的各种程序和服务使用。在准许访问某些主机资源之前,允许通过主机系统的其他组件或软件使用PCIe设备,或者允许在主机系统510环境内的设备505的其他操作,主机系统可以首先利用认证架构来确保该设备是特定的、来自特定制造、具有特定特征、由特定组织认证、认可或拥有,以及在将某些策略应用于设备505与主机510的交互之前的其他检查。例如,主机510可以通过固件测量515来查询设备的505固件版本。主机510还可以通过设备认证520查询设备的硬件和固件。在一些实现方式中,设备505同样可以查询主机的标识(例如,通过主机认证520),例如,使用与主机标识相连的主机私钥。在一些情况下,可以通过设备520和主机525认证来实现相互认证530。在验证标识(和能力,当需要)之后,设备和主机可以通过密钥交换来交换秘密(例如,在535处)以进行链路加密或其他安全目的。如图5的示例中所示,可以利用设备认证来允许经由互连(例如,遵循PCIe的互连)在主机和连接到主机的设备之间进行信任决定。在一些实现方式中,可以结合设备认证来利用设备固件测量,以实现设备认证的可信性。
在一些实现方式中,设备认证(例如,520)可以从现有认证方案、协议和范例借用。在一个示例中,PCIe设备认证方案可以从不同互连协议的认证架构借用并且至少部分地遵循该认证架构。例如,在PCIe设备的认证期间(通过PCIe寄存器和链路)可以使用通用串行总线(USB)认证规范中阐述的认证方案的至少一部分。例如,可以使用在USB认证规范的认证架构、认证协议和认证消息中定义的原理和流程。利用(例如,其他互连的)现有的认证方案可能是有益的,例如,因为相同的软件实现不仅可以用于目标协议的认证,而且可以用于其他协议的认证(例如,USB和PCIe设备认证),相同的硅硬件实现块可以用于多个协议的认证(例如,用于USB和PCIe设备),以及其他示例益处。
转到图6的示例,可以向设备和主机提供增强功能以实现PCIe设备认证架构,以提供用于设备的硬件和固件标识及其能力的密码保证。在一个实现方式中,可以从USB认证规范调整设备认证架构中使用的协议和消息中的至少一些。在一个示例中,PCIe设备认证可以定义扩展能力结构,其可以被提供以允许在主机系统上运行的软件和/或固件查询连接到主机的设备的密码标识,包括其功能,使得可以以密码安全的方式确定设备的唯一标识以及设备的能力,允许主机的软件和/或固件做出与设备有关的信任决定。
图6是描绘了用于PCIe设备认证架构的高级架构的简化框图,包括认证供应和运行时认证。在一些实现方式中,认证供应605可以构成作为制造流程的一部分的设备供应商或制造商所遵循的过程,并且可以通过在设备制造之后执行的附加供应来扩展。例如,受信任的根证书颁发机构(CA)610可以生成根证书(RootCert)615,其被供应给认证发起者/验证者510以允许认证发起者在运行时认证620期间验证由设备505生成的签名的有效性。根CA 610还可以间接地使用信任链612(例如,通过信任层次结构,例如图7中所示)支持每部分设备公钥/私钥对,其中设备私钥被供应给设备505,并且设备公钥包含在设备证书(DeviceCert)625中,该设备证书使用可以使用RootCert中的根CA的公钥来验证的私钥进行签名,以及其他示例实现方式。
在运行时认证650期间,(主机510的)系统软件可以与正在运行的系统中的连接的PCIe设备505交互。在设备公钥/私钥和RootCert供应之后,认证发起者(例如,510)可以从设备505取回(在622处)证书(例如,625、630),可以以一个随机数的形式(例如,唯一的或一次使用的随机数)向设备505发送唯一的质询635,并且设备505可以通过生成响应640来认证其标识和能力,所述响应640通过使用设备的私钥将质询与其他认证数据一起签名而生成。认证发起者(例如,主机软件、管理控制器(例如,基板管理控制器等)或其他基于硬件和/或软件的控制器)使用设备的公钥和根CA 605以及任何中间公钥来验证签名,以及其他示例和特征。
转到图7,示出了框图700,其示出了要在示例PCIe设备认证中使用的示例信任层次结构。可以通过从DeviceCert 625一直到RootCert 615的证书签名来建立信任链。例如,在通过根证书615促进的所需信任根705之下,供应商特定级别的层次结构710可以通过供应商或制造商证书(例如,715a-n)建立。还可以提供其他中间证书720a-n(具有中间密钥)。可以在设备自身上提供证书(例如,625、630)的至少一部分以实现设备供应725,包括每部分设备证书(例如,625)和模型证书(例如,630)。在一些实现方式中,当在认证事务期间验证由设备生成的签名时,认证发起者可以使用整个证书链(例如,615、715a-n、720a-n、630、625)。例如,RootCert(例如,615)、ModelCert(例如,630)(例如,其可以被发布给特定模型的所有设备(例如,由制造商)以及DeviceCert(例如,625)(例如,特定于设备的证书)可以用作用于形成最小证书链的基础,其中在证书链中,中间密钥形成信任链。每个部分唯一的DeviceCert(例如,625)允许设备认证架构检测和防止高级设备克隆攻击,以及在必要时撤销单个设备。在一些实例中,PCIe供应商可以选择具有任意数量的中间证书(例如,720a-n)和在示例信任层次结构中任意数量的中间级别。
转到图8的简化框图800,示出了示例系统,其包括使用物理互连802连接到设备505的主机510,所述物理互连例如被配置为实现遵循基于PCIe的协议的协议的互连。示例主机可以包括一个或多个微处理器(例如,805)、计算机存储器(例如,810),以实现系统软件(例如,815)。可以提供协议层逻辑(例如,820)(例如,在主机510的一个或多个端口中)以在物理互连802上实现特定协议(例如,PCIe、Gen-ZTM、UPI、用于加速器的高速缓存一致性互连(CCIXTM)、Advanced Micro DeviceTM的(AMDTM)InfinityTM、公共通信接口(CCI)、QualcommTM的CentriqTM等)的链路和堆栈。系统软件815可以包括用于管理主机系统510以及与外围设备(例如设备505)的连接的软件。在一些实现方式中,由主机510执行的设备(和主机)认证和设备测量功能(例如,实现基于主机的认证引擎)可以在系统软件815中实现。在其他示例中,“设备”可以与主机集成,和/或设备可以具有其自己的计算能力,具有独立于主机的本地固件/软件,和/或单个处理器可以代表复杂设备运行,复杂设备通过多种功能(例如,交换机)和/或甚至多个逻辑设备(例如,具有逻辑上出现在交换机下方的一个或多个附加设备的交换机,以及其他示例实现方式)来暴露。在一些实现方式中,主机510可另外被提供有密码引擎825,密码引擎825包括硬件电路、固件和/或软件以与示例设备认证架构中执行的认证和验证任务相关联地执行密码操作以及与证书和对应密码密钥的管理和使用有关的其他任务(例如,签名清单的解密和加密、散列的验证和其他密码任务)。
诸如PCIe设备的示例设备(例如,505)可以包括微控制器(例如,830)和相对应的固件(例如,835)。PCIe 505可以类似地包括协议层逻辑840(例如,在设备505的硬件电路中实现)以实现基于PCIe的协议的协议栈,其可以用于建立链路并通过链路与主机510通信。设备505可以另外包括用于支持认证架构的功能。例如,设备505可以包括固件测量引擎845和认证引擎850。在一个实现方式中,固件测量引擎845可以利用设备的硬件化或其他安全硬件和/或固件(例如,835)来测量固件以生成设备505的固件和潜在的其他特征的测量,其可以由主机510访问并与主机510(例如,主机软件815)共享。认证引擎850可以包括用于使设备505能够参与与主机的认证协议的功能。认证引擎850可以根据现有的认证架构(例如USB认证规范,以及其他示例,包括认证消息传递和针对其他互连定义的流)来支持消息的生成和消费。认证引擎850还可以控制对设备505上供应的证书(例如,860)和私钥(例如,865)的访问和使用(例如,在制造期间在安全存储器855中),证书和私钥可以由设备505使用以根据主机510发送(并由主机510的认证引擎生成)的认证质询来生成签名。认证引擎可以生成指示设备505的特征的清单或报告,其在设备的认证期间由主机510使用。该清单可以包括使用设备505私钥865、散列或其他加密技术的签名(或可以进行签名)来安全地指示设备的可信赖性。
被配置为支持设备认证的设备可以包括用于实现用于存储和维护设备私钥的信任域的存储器和硬件。可以针对使用中和静止(安全存储)的每部分设备私钥(安全签名)提供这样的保护,其中每部分设备私钥实现设备信任根(RoT)。类似地,测量引擎845可以仅使用硬件或不可变固件(例如,存储在设备的只读存储器(ROM)中)来通过微控制器固件835实现并测量微控制器固件835。因此,测量引擎845可以实现用于设备的测量信任的设备根(RTM)。可以通过设备RoT和设备RTM的组合来实现用于报告的信任设备根(RTR)。可以假设认证发起者可以访问真正的根证书(RootCert),其中用于设备认证的RoT是根CA的私钥,以及其他示例。此外,PCIe设备认证可以考虑对用于威胁模型的范围内的设备的私钥的任何物理提取,并且假设已经(例如,由制造商)向有资格参与设备认证的任何设备提供了用于设备RoT的物理保护机制。此外,对于设备私钥,可以假设设备制造商针对恶意内部人员攻击采取足够的保护,其中攻击者可以获得对设备私钥生成和供应过程的访问以危害PCIe设备认证架构,以及其他示例考虑因素。
在一些实现方式中,例如在PCIe设备的示例中,可以在设备505上提供一组寄存器(例如,870),并且可以填充和读取寄存器(例如,使用认证引擎)以允许在认证架构中与主机510传递消息或指令。在一个示例中,寄存器870可以包括在设备505上定义和供应的寄存器,作为PCIe下的扩展能力寄存器。例如,寄存器870可以包括用于指示设备505的特征的寄存器,所述设备505的特征包括其型号、供应商、它支持的认证协议、它支持的密码技术,以指示其证书授权(与证书860和私钥865相关联),以及设备505的其它特征。寄存器870还可以包括邮箱寄存器,其中主机510可以在认证交换期间(例如,在主机或设备认证期间)将消息存储在其中,并且主机510可以从其读取来自该设备505的响应。在一个示例中,可以在设备505上向主机510(例如,通过主机软件815)供应单独的读邮箱寄存器和写邮箱寄存器,从读邮箱读取消息并将消息写入写邮箱。在一些实现方式中,设备505的寄存器870的至少一部分可以实现为只读寄存器(例如,在安全只读存储器中),而其他寄存器(例如,写邮箱寄存器)允许值由主机510覆盖,以及其他示例实现方式。
转到图9中,示出了一组示例性32位寄存器870,例如可以针对能够参与设备认证架构的PCIe设备来实现。该组寄存器可以定义寄存器接口,主机510(例如,主机软件815)使用该寄存器接口来经由密码安全消息来取回设备505的标识和能力。在一个示例中,可以使用相对应的指定供应商特定扩展能力(DVSEC)针对PCIe设备实现寄存器接口。图9示出了示例认证扩展能力结构中的寄存器字段的示例分配(例如,870)。例如,可以提供一个或多个扩展能力报头(例如,DVSEC报头)(例如,905、910、915)。还可以提供认证报头920以及认证能力字段(例如,920、930、935)。可以提供认证状态字段945以及认证控制字段950、955、960。此外,写和读数据邮箱(例如,965、970)可以在扩展能力寄存器870中实现,以及其他示例字段。在一些实现方式中,扩展能力结构870可以实现为多个非连续寄存器,作为图9的示例中所示的连续寄存器空间的替代,以及其它示例实现方式。在一些实现方式中,寄存器中的一个或多个可以实现为PCIe扩展能力寄存器以及其它示例实现方式。
图10A-图10M示出了示例寄存器字段(或寄存器)(例如,包括在图9中所示的示例扩展能力结构中)的示例实现方式的表示。例如,图10A示出了包括用于扩展能力结构的第一报头或报头的第一部分的示例字段(例如,在能力结构的链接列表内的偏移00h(例如,870))。在一个示例中,根据PCIe DVSEC报头(例如,DVSEC报头1)来定义第一报头部分。标题的子字段在905a处示出,其中详细示例在905b处示出。子字段可以包括快速PCI扩展能力ID,其可以包括指示扩展能力的性质和格式的PCI-SIG定义的ID号。还可以提供能力版本子字段,其是PCI-SIG定义的版本号,其指示存在的能力结构的版本。如果能力的链接列表中不存在其他项目,则下一能力偏移子字段包含下一个快速PCI能力结构的偏移量或000h。在PCIe扩展功能结构的示例中,对于在配置空间中实现的扩展能力,此偏移量相对于PCI兼容的配置空间的开头。
转到图10B中,示出了第二扩展能力报头(例如,DVSEC报头)。报头的子字段在910a处示出,其中详细示例在910b处示出。例如,可以向供应商ID提供供应商ID子字段,所述供应商ID与定义该能力的内容的供应商相关联(例如,在DVSEC供应商定义的能力中)。DVSEC修订子字段可以包括供应商定义的版本号,其指示扩展能力结构的版本(例如,DVSEC能力结构的版本)。长度子字段可以指示整个扩展能力结构中的字节数。图10C示出了用扩展能力结构的第三部分编码的字段的实例。报头的子字段在915a处示出,其中详细示例在915b处示出。例如,扩展能力ID字段(例如,DVSEC ID)可以包括供应商定义的ID,其指示扩展能力结构的性质和格式。
转到图10D,在该示例中,扩展能力结构可以另外包括认证报头字段。认证报头的子字段在920a处示出,其中详细示例在920b处示出。例如,可以包括认证支持字段,其指示针对认证架构的支持,诸如快速PCI认证架构或诸如上面介绍的示例架构。例如,硬件可以将认证支持字段设置为1b以指示认证已经实现。在一些实现方式中,允许硬件在该位中返回值0b以指示尽管实现了扩展能力本身,但是认证接口不可用。在尝试解释或使用此扩展功能的任何其他字段之前,系统固件/软件可能会读取此位以确认此位已被置位。认证中断支持子字段可以在被置位时指示设备支持使用中断(例如,MSI/MSI-X)来指示设备对认证消息的完成。可以保留寄存器的各个部分(例如,用于扩展能力结构的未来分配或扩展),例如,如图10D的示例所示。认证报头字段还可以包括附加子字段,例如认证版本字段,其指示由设备支持的认证架构的最高版本(其可以体现其扩展和演进时的多个版本),以及其他示示例字段。
图10E-图10G示出了示例扩展能力寄存器中的附加字段,其涉及识别认证能力的设备的实现方式的特征。例如,图10E示出了第一示例认证能力字段。该字段的子字段在930a处示出,子字段的详细示例在930b处示出。例如,可以提供支持的签名算法子字段,其指示设备的支持的签名算法(例如,ECDSA NIST P256、RSA 3072等)(例如,使用在设备上实现的认证引擎)。支持的散列算法子字段可以指示设备支持的散列算法(例如,SHA-384),其可以在架构内的认证事务中使用。支持的对称加密算法子字段指示在认证架构中设备支持的对称加密算法。支持的认证协议子字段指示设备支持的认证协议,例如设备认证协议、主机认证协议、相互认证协议或认证架构中定义的其他认证协议和任务。图10F示出了附加或继续认证能力字段,包括子字段(在935a、935b处示出),诸如指示设备支持的HMAC算法的支持HMAC算法子字段,以及指示由设备实现的信任根保护级别的设备信任根(RoT)保护等级子字段,以及其他示例。
转到图10G的示例,可以在示例扩展能力结构内提供另一个寄存器字段,以用于支持互连的认证架构。如上所述,在一些实现方式中,可以利用现有的认证方案、流和消息传递协议,并使其适于在认证架构内使用。因此,可以包括一个或多个寄存器字段以指示特定于采用的认证方案的特征、值和能力。例如,在图10G的示例中,示出了寄存器字段(在940a、940b处),其被提供以支持由设备使用和支持的认证方案。在一些实现方式中,可以提供寄存器字段以识别使用哪种认证方案,并进一步指示提供了多少附加寄存器字段以提供与该认证方案的支持相关的信息。在图10G的示例中,提供了特定于PCIe认证架构中采用的USB认证规范中使用的信息的子字段。应当意识到,USB认证规范只是潜在的许多不同认证方案之一(例如,用于除设备的本地互连协议之外的互连协议(例如,PCIe)),并且可以针对这些其他示例互连认证方案中的任何之一提供类似的寄存器字段。
图10H示出了示例认证状态寄存器字段,其可以包括在支持认证架构的扩展能力结构中。认证报头的子字段在945a处示出,其中详细示例在945b处示出。设备可以利用认证状态寄存器来指示设备何时可用于接受来自主机的与认证事务相关的指示,以及向主机指示何时结果或响应可供主机消费(例如,通过主机软件或固件)。例如,认证状态寄存器字段可以包括繁忙(Busy)子字段,该繁忙子字段在被置位时指示设备正忙并且不能在现有认证会话中从主机开始新的认证会话或字段下一个指示。当设备已执行认证会话中的动作时,设备可以设置繁忙字段。类似地,当设备准备好处理认证会话内的新指示或动作或者与主机开始新的认证会话时,设备(例如,通过其认证引擎逻辑)可以清除繁忙字段。主机可以间歇地(例如,周期性地)轮询认证状态寄存器中的子字段,以确定设备何时可用以及设备是否已准备好响应并准备好供主机消费。因此,认证状态寄存器可以另外包括响应就绪子字段,该子字段在被置位时指示该设备具有要由主机读取和处理的有效消息(例如,在邮箱寄存器中)。当消息已被消费(其可能涉及设备的多次连续写入和主机的多次相对应的读取)或响应于中止时,设备(以及在一些实现方式中,主机)可以清除实现响应就绪子字段的一个或多个位。
转到图10I-图10K的示例,在一些实现方式中,可以在扩展能力结构内提供附加认证控制寄存器字段(例如,950、955、960)。例如,如图10I的示例中所示,第一认证控制寄存器字段(例如,在950a、950b处示出),其可以包括诸如中止子字段、中断使能子字段和Go子字段的子字段。当被置位(例如,由主机)时,中止子字段可以使得主机发送的最后的、待处理消息的处理在设备处中止。中止子字段可以用于释放设备以在主机的方向上从一个动作移动到另一个动作。响应于中止子字段的置位,该设备可以在处理中止时断言繁忙子字段(例如,在认证状态寄存器字段945中),并且可以在中止完成时同样清除繁忙子字段。还可以提供认证中断使能子字段,当被置位时(例如,由主机请求在与设备的认证交换中由设备使用中断)并且启用MSI/MSI-X,使得设备发出MSI/MSI-X中断以指示响应就绪位的0b到1b转换(从而向主机指示从设备针对主机准备好新响应)。还可以提供中断消息号子字段,其指示用于与有效(Valid)关联生成的中断消息的MSI/MSI-X向量。对于MSI,此寄存器中的值指示基本消息数据与生成的中断消息之间的偏移量。如果在软件写入MSI消息控制寄存器中的多消息启用字段时指派给该功能(Function)的MSI消息的数量发生更改,则硬件可以更新此字段,以使其正确。对于MSI-X,该寄存器中的值指示使用哪个MSI-X表条目来生成中断消息。即使功能(Function)实现了超过32个条目,该条目也可能是最初32个条目之一。对于给定的MSI-X实现,条目保持不变。如果同时实现MSI和MSI-X,则允许它们使用不同的向量,但允许软件一次只启用一种机制。如果启用了MSI-X,则该寄存器中的值指示MSI-X的向量。如果MSI已启用或两者均未启用,则此寄存器中的值指示MSI的向量。如果软件同时启用MSI和MSI-X,则该寄存器中的值可能被视为未定义。
继续图10I的示例,可以提供Go子字段,其可以由主机写入以向设备指示设备可以开始消费主机通过写数据邮箱寄存器发送到设备的最后有效
消息(例如,如图10L中所示和所讨论的)。一旦通过写数据邮箱接收到消息,该设备可以等待执行消息的内容,直到主机写入Go子字段。在设置Go位时,设备可以在认证状态寄存器(例如,945)中断言繁忙子字段,同时设备处理相对应的消息并且可以在整个消息(通过写数据邮箱接收)已被设备消费时清除繁忙子字段。
在图10J-图10K的示例中,示出了附加的认证控制寄存器(在955a、955b和960a、960b),包括诸如签名算法配置子字段、散列算法配置子字段、对称加密算法配置子字段、认证协议配置和HMAC算法配置子字段之类的子字段。签名算法配置子字段可以指示(例如,通过位掩码中的单个位)以指示用于认证会话的潜在多个支持的签名算法中的所选择的一个。在一些实现方式中,该字段将在认证控制1寄存器中的Go位被断言之前被写入。在认证控制1寄存器中的Go位被断言后对该字段的任何修改都可能导致设备的未定义行为。类似地,散列算法配置子字段可以指示用于认证会话的所选择的散列算法,对称加密算法配置可以指示用于认证会话的所选择的对称加密算法,认证协议配置可以指示用于认证会话的所选择的认证协议,并且HMAC算法配置子字段可以指示用于认证会话的所选择的认证协议。在认证控制1寄存器中的Go位被断言之前,可以首先设置认证控制寄存器中的每个子字段(如图10J-图10K所示)(例如,作为要求),并且如果在主机结合给定消息将Go位置位之后发生更改,可以不允许修改这些值(或者可能导致设备未定义的行为),以及其他示例规则、条件和功能。
图10L-图10M的示例,示例邮箱寄存器可以被提供有用于PCIe认证架构的扩展能力结构。图10L示出了示例写数据邮箱965。写数据邮箱是寄存器,主机可以使用该寄存器来向设备写入分段消息,然后设备可以消费该消息(例如,在认证控制寄存器中设置了Go子字段时)。在该示例中,写数据邮箱965的大小等于认证扩展能力结构内的其他寄存器或字段(例如,双字或32位)。由于主机发送的消息可能消费写数据邮箱大小的多倍,因此单个消息可能涉及主机写入,一次32位,消息的连续部分写入到写数据邮箱。设备可以在消息写入时提取消息的每个部分,并将该部分(具有相同消息的前面部分)存储在本地设备存储器中。在一些实现方式中,主机对Go子字段的设置不仅可以触发对消息的设备处理,还可以指示主机已经完成发送当前消息以用于设备的消费。响应于识别出设备将前一部分从写数据邮箱复制到存储器,主机可以等待将消息的下一部分写入写数据邮箱。在一些示例中,可以在认证扩展能力结构内提供一个或多个附加比特,设备可以将其设置为指示写数据邮箱内的当前内容已被复制到设备的存储器,以及其他技术以指示由设备对写数据信箱的成功复制(例如,由设备发送的信号、预编程的增量周期,其中主机被授权以在通过增量周期之后呈现为成功复制,以及其他示例)。
转到图10M中,示出了示例读数据邮箱寄存器970,其也可以包括在认证扩展能力结构中。读数据邮箱970可以用作写数据邮箱的模拟,即通过用作设备向其写入响应或与主机(在写数据邮箱中)的先前发送的消息相对应的结果的邮箱。主机可以访问读数据邮箱并从中读取以获得设备的响应消息。在一些示例中,与写数据邮箱一样,读数据邮箱可以具有大小(例如,32位),其比可以由设备生成的至少一些响应的长度短。因此,设备同样可以以零散的方式向读数据邮箱写入响应,响应消息的一个连续部分一个接一个地写入读数据邮箱,并且主机从响应消息的内容读取并将其复制到主机存储器作为响应消息的部分被写入读数据邮箱。当新的消息部分准备好写邮箱时,可以使用类似的技术来协调从读数据邮箱和写数据邮箱中的任一个或两者复制数据(例如,扩展能力结构中的附加就绪子字段、信令、预定的复制周期等),使得在另一个链接伙伴(即,主机或设备)有机会成功复制邮箱的先前实例的内容之前,不会覆盖邮箱的内容。
转到图11,示出了简化框图1100,其示出了使用PCIe扩展能力寄存器在主机510和设备505之间的认证消息的示例传递。可以根据认证协议或方案来定义指示主机510和设备505之间的消息传递的认证消息和流,所述认证协议或方案包括针对除PCIe之外的互连定义的认证方案(例如,USB认证规范)。在图11的示例中,可以在设备505(例如,包括遵循基于PCIe的协议的协议逻辑(例如,协议堆栈层电路和固件)的设备)上提供与写邮箱寄存器(例如,965)和读邮箱(例如,970)相关的状态和控制寄存器(例如,1102)以促进主机510和设备505之间的认证消息的通信。在图11的简化示例中,状态和控制寄存器1102可以包括Go寄存器、响应就绪(RR)寄存器和繁忙寄存器(例如,如图10H和图10I的示例中所讨论的)。在一个示例中,状态和控制寄存器1102的值可以指示设备505准备好进行下一个认证任务(例如,Busy=0b)。认证质询可以由主机510准备(例如,使用其认证引擎固件),并且可以通过按顺序将每个部分(例如,部分1-n)写入设备505的写邮箱寄存器965而在多个部分(例如,1110)中传递到设备505。当质询消息1110的每个部分被发送到设备505时,设备505可以在质询消息1110的下一部分由主机510写入写邮箱965之前将写入到写邮箱965的内容复制到其本地存储器。
当所有部件已经通过写邮箱写入设备505时,设备可以具有存储在其存储器中的完整消息1115。然后,主机510可以写入Go寄存器(例如,Go=1)(如1125所示)以指示已经将有效消息传送到设备505并且指示设备505根据认证方案消费或处理消息。当设备505开始消费该消息时,设备505可以设置繁忙寄存器(例如,Busy=1b)(如1130所示)以指示设备忙于与该消息相关的相对应的任务(例如,1115)。在一个示例中,消费质询消息1115可以包括设备505测量其固件和硬件电路以及设备505的组件,生成包括设备505在(例如,在质询消息之前或响应于质询消息执行的)测量活动期间发现的设备的属性的报告、摘要或清单,生成签名、散列或其他密码数据以及其它认证数据,以及其他示例任务。这些任务可以基于系统中使用的特定认证方案并在其上定义,以用于向主机510认证设备(例如,505)。当设备505已经生成响应数据时,设备505可以写入响应就绪寄存器(例如,RR=1b)以向主机510指示(即,在主机读取响应就绪寄存器时)设备505已将响应写入读邮箱970。在一些实现方式中,结合对响应就绪寄存器的设置,设备505可以类似地将值写入其他状态和控制寄存器,例如通过重置Go和繁忙字段,以及与准备自身接收来自主机510的下一消息有关的其他寄存器字段,以及其他示例。
响应于质询消息1115而由设备505生成的数据(例如,使用认证引擎、测量引擎、密码引擎和在设备505的固件和/或硬件中实现的其他逻辑)可以被写入读邮箱寄存器970以由主机510读取和聚合。例如,响应消息可以由设备505按顺序部分地写入(例如,1140)到读邮箱970。当每个部分被写入读邮箱970时,主机510可以读取该部分并将其复制到主机存储器(例如,810)。当响应消息的所有部分1140已被设备505写入读邮箱并由主机复制到主机存储器810时,主机510可具有整个消息的副本以供消费。如上所述,在一些实现方式中,响应消息1145可以包括由设备505准备以向主机510认证其标识和能力的认证数据。例如,响应消息1145可以包括描述设备505的属性的清单或摘要并且还可以或者可选地,包括签名(例如,使用设备的私钥生成的),主机510可以使用该签名来确定设备505的真实性以及设备的能力。主机可以使用该响应中的信息(或响应于多个主机请求而接收的多个响应中获得的信息)来确定要应用于设备505的策略(例如,特权、安全性、访问级别等)。这些策略可以应用(在1150处)于链接主机510和设备505之间的通信1155(或甚至建立或训练链路)。例如,访问某些服务、能力或资源(例如,在PCIe下或主机本身下定义)可被启用或限制,这取决于主机510是否能够基于主机510和设备505之间的一个或多个质询和响应来认证设备505。作为具体示例,主机510可以基于设备是否能够通过主机510和设备505使用的认证协议成功建立其可信赖性来向设备505允许、限制或拒绝对PCIe ATS的访问。通常,成功的认证向主机软件提供关于该设备是真实的(例如,未被篡改)的保证。各种策略和动作可以基于或取决于成功的认证。例如,管理程序可以利用数据中心环境内的设备的成功认证来将设备分配给特定租户(例如,虚拟机),以及各种其他示例和用例。
尽管图11的示例出了包括质询消息和对质询消息的响应消息的消息,但是应当意识到,可以将多个响应消息发送到单个质询消息,可以响应于多个先前质询消息或其他请求发送单个响应消息,并且请求和响应可能具有任何长度,并且可能包含任何合适的内容。实际上,任何被定义为认证方案内的消息(例如,用于通过链路或互连直接在主机和设备之间传递)的请求和响应可以替代地使用设备上提供的读邮箱和写邮箱来传送。例如,可以通过使用使用PCIe扩展能力寄存器实现的读和写邮箱来针对PCIe设备实现USB认证规范或其他认证协议(例如,质询请求、证书摘要查询、证书链请求等)中定义的所有请求和响应,以及其他示例实现方式。此外,在一些实现方式中(例如,主机认证或相互认证),设备可以利用设备上的读邮箱来将质询和请求从设备传达到主机,其中设备的写邮箱用于将主机的响应传递给设备,以及其他示例用途、流和示例实现方式。
转到图12,示出了示例清单1200的表示,其可以是签名的,或者在一些示例认证方案中散列可以由设备根据该表示被生成作为认证数据并写入读邮箱寄存器。例如,示例清单1200可以包括在认证响应消息中。在一个示例中,可以生成清单1200的散列(例如,使用SHA散列算法,例如SHA384)并将其包括在根据认证会话中使用的特定协议定义的认证响应中定义的一个或多个字段中。例如,转到图13,在示例USB认证方案中,响应于质询请求,可以定义要发送质询认证响应,其格式在图13中示出。例如,在质询认证响应的有效载荷中,可以提供上下文散列字段1305。在一个示例中,可以在针对USB定义的质询认证响应中的上下文散列字段1305内对由PCIe设备生成并且包括PCIe特定信息的清单的散列(例如,使用SHA384)进行编码,以及其他示例实现方式。
回到图12的示例,在一些实现方式中,摘要可以包括提供关于要认证的设备的PCIe特定信息的各种字段(例如,1205-1245)。例如,可以提供字段(例如,1205、1210、1215)以包括来自PCIe配置空间的信息,例如设备和设备的供应商标识符(以及可能是它所驻留的板)、设备的类代码和修订版标识符,以及设备的子系统和/或子系统供应商标识符(以及它所驻留的板,如果相关),以及其他示例信息。可以进一步提供字段1220以指示能力指针。此外,可以提供一个或多个字段(例如,1225)以指示用作位掩码的位向量以指示由设备实现的一个或多个功能。此外,可以提供一个或多个字段(例如,1230)以包括设备的测量,例如结合在摘要中的测量。在一个示例中,设备可以维护摘要(digest)寄存器或摘要能力结构。设备可以实现一个或多个摘要寄存器(例如,用于其固件的一个或多个定义部分中的每一个的摘要寄存器)以包含对应固件组件的测量,并且从而暴露其相应固件部分或组件的密码标识。在一个示例中,摘要能力结构可以识别关于摘要、其状态和特征的信息,它对应于哪些固件组件,以及摘要本身的内容。在图12的示例中,清单中可以包括整个摘要能力结构。在其他示例中,仅摘要本身可以包括在清单中,以及其他示例实现方式。除了与包括这样的测量的设备或摘要的测量有关的信息之外,示例清单数据结构1200还可以包括一个或多个字段以包括关于设备的认证架构的实现方式的信息。例如,来自认证扩展能力结构的一个或多个寄存器或寄存器字段的信息(例如,如图9-图10M中的任何一个的示例中所讨论的)可以包括在清单中。作为示例,字段1235、1240、1245可以填充有来自认证报头的信息(例如,诸如在图10D的示例中)和来自认证能力字段的信息(例如,诸如图10E-图10F的示例中所示和描述的认证能力信息),以及其他示例信息。
如上所述,例如在设备认证期间由设备向主机提供的对质询的响应可以包括由设备的私钥签名的数据。转向图13中所示的示例响应格式,可以提供字段(例如,1310)以包括使用被认证的设备的私钥生成的签名。例如,在一个示例实现方式中,签名字段可以利用由设备使除了签名字段1310之外的响应消息的整个内容(例如,1300)的用其私钥生成的签名来编码。在另一个示例中,签名可以是关于质询请求和响应消息(除了签名字段1310之外)的内容的签名,以及其他示例。在一些实现方式中,签名可以是确定性或非确定性椭圆曲线数字签名算法(ECDSA)签名、数字签名算法(DSA)签名或根据另一数字签名算法使用要认证的设备的私钥生成的其他签名,以及其他示例。此签名可用于允许验证者确认设备的标识。实际上,计算清单数据结构的散列值(例如,如图12中所示)并使用设备私钥提供签名允许响应中提供的字段值(例如,如图13中)根据设备供应商的规范被验证为真实的,而不是盲目地信任设备报告的值,以及其他示例用途和优点。
前面的公开已经呈现了多个示例测试链路状态,其可以补充在互连协议中定义的标准链路状态。应当意识到,除了上面标识的那些之外,可以提供其他测试链路状态,而不脱离本公开内容中包含的更一般化的原理。例如,虽然参考基于PCIe或PCIe的协议描述了本文讨论的示例状态机和有序序列中的一些,但是应当意识到,可以对其他互连协议进行类似的、相对应的增强,所述其他互连协议例如OpenCAPITM、Gen-ZTM、UPI、通用串行总线(USB)、用于加速器的高速缓存一致性互连(CCIXTM)、Advanced Micro DeviceTM(AMDTM)InfinityTM、通用通信接口(CCI)或QualcommTM的CentriqTM互连等。
注意,上述装置、方法和系统可以在如上所述的任何电子设备或系统中实现。作为具体说明,下图提供了用于利用如本文所述的本发明的示例性系统。由于更详细地描述了以下系统,因此从上面的讨论中公开、描述和重新考虑了许多不同的互连。并且显而易见的是,上述进步可以应用于那些互连、结构或架构中的任何一种。例如,可以实现主机和设备,其配备有用于在各种计算架构中的任何一种中(例如,使用各种不同互连或结构中的任何一种)实现如以上示例中所讨论的认证和测量架构的功能。例如,主机可以连接到支持个人计算系统内的认证架构的设备(例如,在膝上型、桌面型计算机、移动设备、智能电话、物联网(IoT)设备、智能设备、游戏控制台、媒体控制台等等中实现)。在另一示例中,主机可以连接到支持服务器计算系统内的认证架构的设备(例如,机架服务器、刀片服务器、塔式服务器、机架规模服务器架构或其他分解的服务器架构)以及其他示例。
参考图14,描绘了包括多核处理器的计算系统的框图的实施例。处理器1400包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)或用于执行代码的其他设备。在一个实施例中,处理器1400包括至少两个核-核1401和1402,其可包括不对称核或对称核(所示实施例)。然而,处理器1400可以包括可以是对称或不对称的任何数量的处理元件。
在一个实施例中,处理元件是指用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核,和/或能够保持处理器的状态(诸如执行状态或架构状态)的任何其它元件。换言之,在一个实施例中,处理元件是指能够独立地与代码(诸如软件线程、操作系统、应用或其它代码)相关联的任何硬件。物理处理器(或处理器插槽)通常是指集成电路,可能包括诸如核或硬件线程的任意数量的其它处理元件。
核通常是指位于能够维护独立架构状态的集成电路上的逻辑,其中每个独立维护的架构状态与至少一些专用执行资源相关联。与核不同,硬件线程通常是指位于能够维护独立架构状态的集成电路上的任何逻辑,其中独立维护的架构状态共享对执行资源的访问。能够看出,当某些资源被共享并且其它专用于架构状态时,硬件线程和核的命名法之间的线重叠。更通常地,核和硬件线程被操作系统视为单独的逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。
如图14所示,物理处理器1400包括两个核-核1401和1402。这里,核1401和1402被认为是对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核1401包括乱序处理器核,而核1402包括有序处理器核。然而,核1401和1402可以从任何类型的核中单独选择,例如本机核、软件管理核、适于执行本机指令集架构(ISA)的核、适于执行转换指令集架构(ISA)的核、共同设计的核或其他已知核。在异构核环境(即,非对称核)中,可以利用某种形式的转换(例如二进制转换)来在一个或两个核上调度或执行代码。然而,为了进一步讨论,核1401中示出的功能单元在下面进一步详细描述,因为核1402中的单元在所描绘的实施例中以类似的方式操作。
如所描绘的,核1401包括两个硬件线程1401a和1401b,它们也可以称为硬件线程槽1401a和1401b。因此,在一个实施例中,诸如操作系统的软件实体可能将处理器1400视为四个单独的处理器,即,能够同时执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器1401a相关联,第二线程与架构状态寄存器1401b相关联,第三线程可以与架构状态寄存器1402a相关联,并且第四线程可以与架构状态寄存器1402b相关联。这里,架构状态寄存器(1401a、1401b、1402a和1402b)中的每个可以被称为处理元件、线程槽或线程单元,如上所述。如图所示,架构状态寄存器1401a在架构状态寄存器1401b中被复制,因此能够针对逻辑处理器1401a和逻辑处理器1401b存储单个架构状态/上下文。在核1401中,还可以针对线程1401a和1401b复制其他较小的资源,例如分配器和重命名器块1430中的指令指针和重命名逻辑。可以通过分区来共享一些资源,诸如重新排序/引退单元1435中的重新排序缓冲区、ILTB 1420、加载/存储缓冲区和队列。其他资源(例如,通用内部寄存器、页表基址寄存器、低级数据高速缓存和数据TLB 1415、执行单元1440以及乱序单元1435的部分)是可能完全共享的。
处理器1400通常包括其他资源,其可以是完全共享的、通过分区共享的,或由处理元件/对处理元件专用的。在图14中,示出了具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略这些功能单元中的任何一个,以及包括未描绘的任何其他已知功能单元、逻辑或固件。如图所示,核1401包括简化的、代表性的乱序(OOO)处理器核。但是可以在不同的实施例中使用有序处理器。OOO核包括用于预测要执行/采用的分支的分支目标缓冲器1420和用于存储用于指令的地址转换条目的指令转换缓冲器(I-TLB)1420。
核心1401还包括解码模块1425,其耦合到取指单元1420以解码所获取的元件。在一个实施例中,取指逻辑包括分别与线程槽1401a、1401b相关联的各个定序器。通常,核心1401与第一ISA相关联,第一ISA定义/指定在处理器1400上能执行的指令。通常作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),其引用/指定要执行的指令或操作。解码逻辑1425包括从其操作码识别这些指令并在管线中传递解码的指令以便进行由第一ISA定义的处理的电路。例如,如下面更详细讨论的,在一个实施例中,解码器1425包括被设计或适于识别特定指令(例如,事务指令)的逻辑。作为解码器1425识别的结果,架构或核心1401采取特定的预定义动作来执行与适当指令相关联的任务。重要的是要注意,可以响应于单个或多个指令来执行本文描述的任务、块、操作和方法中的任何一个;其中一些可能是新的或旧的指令。注意,在一个实施例中,解码器1426识别相同的ISA(或其子集)。可替代地,在异构核心环境中,解码器1426识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块1430包括用于预留资源的分配器,诸如用于存储指令处理结果的寄存器文件。然而,线程1401a和1401b可能能够乱序执行,其中分配器和重命名器块1430还保留其他资源,例如用于跟踪指令结果的重排序缓冲器。单元1430还可以包括寄存器重命名器,其用于将程序/指令参考寄存器重命名为处理器1400内部的其他寄存器。重排序/引退单元1435包括组件,例如上面提到的重排序缓冲器、加载缓冲器和存储缓冲器,以支持乱序执行和稍后乱序执行的指令的有序引退。
在一个实施例中,调度器和执行单元块1440包括调度器单元,其用于调度执行单元上的指令/操作。例如,浮点指令在具有可用浮点执行单元的执行单元的端口上被调度。还包括与执行单元相关联的寄存器文件以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
较低级数据高速缓存和数据转换缓冲器(D-TLB)1450耦合到执行单元1440。数据高速缓存用于存储最近使用/操作的元素,例如数据操作数,其可能保存在存储器一致性状态中。D-TLB用于存储最近的虚拟/线性到物理地址转换。作为特定示例,处理器可以包括页表结构,用于将物理存储器分成多个虚拟页面。
这里,核心1401和1402共享对较高级或较远级的高速缓存(例如,与片上接口1410相关联的第二级高速缓存)的访问。注意,较高级或较远级是指高速缓存级增加或从执行单位进一步远离。在一个实施例中,较高级高速缓存是最后级数据高速缓存—处理器1400上的存储器层次结构中的最后高速缓存,诸如第二或第三级数据高速缓存。然而,较高级高速缓存不限于此,因为它可以与指令高速缓存相关联或包括指令高速缓存。跟踪高速缓存是一种类型的指令高速缓存,可以耦合在解码器1425之后以存储最近解码的跟踪。这里,指令可能涉及宏指令(即,由解码器识别的一般指令),其可以解码为多个微指令(微操作)。
在所描绘的配置中,处理器1400还包括片上接口模块1410。历史上,下面更详细描述的存储器控制器已被包括在处理器1400外部的计算系统中。在这种情况下,片上接口1411用于与处理器1400外部的设备进行通信,所述处理器1400外部的设备例如系统存储器1475、芯片组(通常包括连接到存储器1475的存储器控制器集线器和用于连接外围设备的I/O控制器集线器)、存储器控制器集线器、北桥或其他集成电路。并且在这种情况下,总线1405可以包括任何已知的互连,例如多点总线、点对点互连、串行互连、并行总线,相干(例如高速缓存相干)总线、分层协议架构、差分总线和GTL总线。
存储器1475可以专用于处理器1400或者与系统中的其他设备共享。存储器1475类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知的存储设备。注意,设备1480可以包括图形加速器、耦合到存储器控制器集线器的处理器或卡、耦合到I/O控制器集线器的数据存储装置、无线收发器、闪存设备、音频控制器、网络控制器或其他已知的设备。
然而,最近,随着更多逻辑和设备被集成在诸如SOC的单个管芯上,这些设备中的每一个可以合并在处理器1400上。例如,在一个实施例中,存储器控制器集线器与处理器1400在同一封装和/或管芯上。这里,核心的一部分(核心上部分)1410包括一个或多个控制器,用于与诸如存储器1475或图形设备1480之类的其他设备接合。包括与这些设备接合的互连和用于控制器的该配置通常被称为核心上(或非核心配置)。作为示例,片上接口1410包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路1405。然而,在SOC环境中,甚至更多的设备,例如网络接口、协处理器、存储器1475、图形处理器1480和任何其他已知的计算机设备/接口可以集成在单个管芯或集成电路上以提供具有高功能和低功耗的小形状因子。
在一个实施例中,处理器1400能够执行编译器、优化和/或转换器代码1477以编译、转换和/或优化应用代码1476以支持本文描述的装置和方法或与其接合。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或程序集。通常,使用编译器编译程序/应用代码是在多个阶段和多遍中完成的,以将高级编程语言代码转换为低级机器或汇编语言代码。然而,单遍编译器仍可用于简单编译。编译器可以利用任何已知的编译技术并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
较大的编译器通常包括多个阶段,但是大多数情况下这些阶段包括在两个一般阶段中:(1)前端,即通常可以进行句法处理、语义处理和一些变换/优化的地方,以及(2)后端,即通常进行分析、转换、优化和代码生成的地方。一些编译器引用了一个中间部分,它示出了编译器的前端和后端之间描绘的模糊。结果,对编译器的插入、关联、生成或其他操作的引用可以在任何上述阶段或遍以及编译器的任何其他已知阶段或遍中发生。作为说明性示例,编译器可能在编译的一个或多个阶段插入操作、调用、函数等,例如在编译的前端阶段插入调用/操作,并且然后在变换阶段将调用/操作变换为更低级别的代码。请注意,在动态编译期间,编译器代码或动态优化代码可以插入此类操作/调用,并且对代码进行优化以便在运行时期间执行。作为特定说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或其组合。
与编译器类似,转换器(例如二进制转换器)静态地或动态地转换代码以优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指代:(1)动态地或静态地执行编译器程序、优化代码优化器或转换器以编译程序代码、维护软件结构、执行其他操作、优化代码,或转换代码;(2)执行包括操作/调用的主程序代码,例如已优化/编译的应用代码;(3)执行与主程序代码相关联的其他程序代码,例如库,以维护软件结构、执行其他软件相关操作,或优化代码;或(4)其组合。
现在参考图15,示出了根据本发明的实施例的另一系统1500的框图。如图15所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每一个可以是处理器的某个版本。在一个实施例中,1552和1554是串行、点对点相干互连结构的一部分,例如高性能架构。结果,本发明可以在QPI架构内实现。
虽然仅示出了两个处理器1570、1580,但应理解,本发明的范围不限于此。在其他实施例中,一个或多个附加处理器可以存在于给定处理器中。
示出了处理器1570和1580,其分别包括集成存储器控制器单元1572和1582。处理器1570还包括作为其总线控制器单元的一部分的点对点(P-P)接口1576和1578;类似地,第二处理器1580包括P-P接口1586和1588。处理器1570、1580可以使用P-P接口电路1578、1588经由点对点(P-P)接口1550交换信息。如15所示,IMC 1572和1582将处理器耦合到相应的存储器,即存储器1532和存储器1534,它们可以是本地附连到相应处理器的主存储器的一部分。
处理器1570、1580各自使用点对点接口电路1576、1594、1586、1598经由单个P-P接口1552、1554与芯片组1590交换信息。芯片组1590还经由接口电路1592沿着高性能图形互连1539与高性能图形电路1538交换信息1538。
共享高速缓存(未示出)可以包括在任一处理器中或两个处理器外部;然后又经由P-P互连与处理器连接,使得如果处理器被置于低功率模式,则处理器的本地高速缓存信息中的任一者或两者可以存储在共享高速缓存中。
芯片组1590可以经由接口1596耦合到第一总线1516。在一个实施例中,第一总线1516可以是外围组件互连(PCI)总线,或者诸如快速PCI总线或另一第三代I/O互连总线的总线,但本发明的范围不限于此。
如图15所示,各种I/O设备1514耦合到第一总线1516,以及将第一总线1516耦合到第二总线1520的总线桥1518。在一个实施例中,第二总线1520包括低引脚数(LPC)总线。在一个实施例中,各种设备耦合到第二总线1520,所述各种设备包括例如键盘和/或鼠标1522、通信设备1527和存储单元1528,诸如磁盘驱动器或其他大容量存储设备,其通常包括指令/代码和数据1530。此外,音频I/O 1524被示出耦合到第二总线1520。注意,其他架构是可能的,其中所包括的组件和互连架构是变化的。例如,代替图15的点对点架构,系统可以实现多点分支总线或其他这样的架构。
尽管已经关于有限数量的实施例描述了本发明,但是本领域技术人员将意识到由此产生的许多修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这些修改和变化。
设计可以经历从创建到模拟到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用,可以使用硬件描述语言或另一种功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中各种设备的物理位置的数据级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生成集成电路的掩模在不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或诸如盘的磁或光存储装置可以是机器可读介质,用于存储经由调制或以其他方式生成以发送这样的信息的光波或电波发送的信息。当发送指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重传的程度上,制作新的副本。因此,通信提供商或网络提供商可以将体现本公开的实施例的技术的诸如编码到载波中的信息的制品至少临时存储在有形的、机器可读介质上。
本文所使用的模块是指硬件、软件和/或固件的任意组合。作为示例,模块包括硬件,诸如微控制器,其与用于存储适于由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中对模块的引用是指特别被配置为识别和/或执行要保持在非暂时性介质上的代码的硬件。此外,在另一实施例中,模块的使用是指包括特别适于由微控制器执行以实施预定操作的代码的非暂时性介质。并且,如可推断的,在又一实施例中,术语模块(在该示例中)可以是指微控制器和非暂时性介质的组合。通常,图示为单独的模块界限通常变化并且可能重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,诸如晶体管、寄存器或其它硬件,如可编程逻辑器件。
在一个实施例中,短语“被配置为”的使用是指布置、放在一起、制造、提供以售卖,进口和/或设计用于执行指定或确定的任务的装置、硬件、逻辑或元件。在该示例中,没有进行操作的装置或其元件仍‘被配置为’执行指定任务,前提是其被设计、耦合和/或互连来执行所述指定的任务。纯粹作为说明性的示例,逻辑门可以在操作期间提供0或1。但是‘被配置为’提供使能信号到时钟的逻辑门不包括可提供1或0的每一个可能的逻辑门。相反,该逻辑门是以在操作期间1或0输出用于使能时钟的某种方式耦合的逻辑门。再次注意到,术语‘被配置为’的使用不要求操作,而是侧重于装置、硬件和/或元件的潜在状态,其中在潜在状态下,装置、硬件和/或元件设计成当装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,短语“用于”、“能够/能”和/或“能操作”的使用是指以这样的方式设计来使能按指定方式使用装置、逻辑、硬件和/或元件的某种装置、逻辑、硬件和/或元件。如上文所提到的,在一个实施例中,用于、能够或能操作的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没有正操作,但是以这样的方式被设计成使得能够以指定方式使用装置。
如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑上的值还称为1和0,其简单地表示二进制逻辑状态。例如,1表示高逻辑电平,而0表示低逻辑电平。在一个实施例中,诸如晶体管或闪存单元的存储单元能够保持单个逻辑值或多个逻辑值。但是,已经使用了计算机系统中的其他值表示。例如,十进制数十也可以表示为二进制值1410和十六进制字母A。因此,值包括能够保存在计算机系统中的任何信息表示。
此外,状态可由值或值的部分表示。作为示例,诸如逻辑1的第一值可以表示默认或初始状态,而诸如逻辑0的第二值可以表示非默认值。另外,在一个实施例中,术语复位和置位分别是指默认值或状态和更新值或状态。例如,默认值可能包括高逻辑值,即复位,而更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用于表示任意数量的状态。
上文所阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的、能够由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子系统的机器能够读取的形式的信息的任何机制。例如,非暂时性机器可访问介质包括随机存取存储器(RAM),如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从暂时(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其它形式的存储设备;等等,以区别于可从其接收信息的非暂时性介质。
用于对逻辑进行编程以执行本公开的实施例的指令可以存储在系统中的存储器内,如DRAM、高速缓存、闪速存储器或其它存储装置。此外,指令可以经由网络或通过其它计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读形式存储或发送信息的任何机制,但不限于软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或用于经由电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号等)通过因特网传输信息的有形的、机器可读存储装置。因此,计算机可读介质包括适合于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
在一些实施例中,电子设备可以被配置为执行如本文所述的一个或多个过程、技术和/或方法,或其部分。图X-2中描绘了一个这样的过程。例如,该过程可以包括由第一和第二重定时器在第一SKP有序集(OS)期间执行SKP调整;并且通过第三和第四重定时器在第二SKP OS期间执行SKP调整。
在一些实施例中,电子设备可以被配置为执行如本文所述的一个或多个过程、技术和/或方法,或其部分。例如,该过程可以包括增强训练有序集(OS)以允许五代速度;并设置配置寄存器以指示Gen 5PCIe速度。
在一些实施例中,电子设备可以被配置为执行如本文所述的一个或多个过程、技术和/或方法,或其部分。例如,该过程可以包括识别由平台提供的信道类型;识别一个或多个重定时器的存在;并基于通道类型以及是否存在一个或多个重定时器,在每秒25Gigatransfers(GT/s)和32GT/s之间进行选择。
在一些实施例中,电子设备可以被配置为执行如本文所述的一个或多个过程、技术和/或方法,或其部分。例如,该过程可以包括从包括宽度x20、x24、x28和x28的集合中识别通道链路宽度;并基于所识别的通道链路宽度通过通道链路进行通信。
在一些实施例中,电子设备可以被配置为执行如本文所述的一个或多个过程、技术和/或方法,或其部分。例如,该过程可以包括从时钟数据恢复(CDR)识别恢复的时钟数据;以及基于恢复的时钟数据,在初始训练之后发送发送(TX)数据。
在一些实施例中,可以提供一种根据PCIe标准进行通信的方法,其包括由第一和第二重定时器在第一SKP有序集(OS)期间执行SKP调整,以及由第三和第四次重定时器在第二SKP OS期间执行SKP调整。该方法还可以包括将SKP OS频率减半。在某些情况下,第一SKPOS可以与第二SKP OS背对背发送。该方法还可以包括增强训练有序集(OS)以允许五代速度,并设置配置寄存器以指示Gen 5PCIe速度。此外,可以识别由平台提供的信道类型,可以识别一个或多个重定时器的存在,并且可以基于通道类型以及是否存在一个或多个重定时器来选择信道速度(例如,从每秒25Gatatransfers(GT/s)或32GT/s)。还可以基于是启用还是支持前向纠错(FEC)来确定该选择。该速度选择可以在链接训练期间进行。这些示例方法可以另外包括从包括宽度x20、x24、x28和x28的集合中识别通道链路宽度,以及基于所识别的通道链路宽度通过通道链路进行通信。此外,可以识别来自时钟数据恢复组件的恢复时钟数据,并且可以在训练链路之后基于恢复的时钟数据发送发送数据。
在一些实施例中,可以提供一种装置以根据基于PCIe的标准进行通信,该装置包括扩展连续时间线性均衡器(CTLE)和/或最小8抽头判决反馈均衡器(DFE),和/或T线圈或Pi线圈终端,和/或与时钟数据恢复(CDR)有关的数据模式滤波器,和/或4路交错时钟架构,以及其他示例特征和组件。
在一些实施例中,可以提供一种装置,以根据具有信道损耗特性的快速外围组件互连(PCIe)标准进行通信,例如上面讨论的。PCIe标准可以是Gen 5(或更高)PCIe标准。
以下示例涉及根据本说明书的实施例。示例1是一种装置,包括:微控制器;存储器,包括用于存储私钥的安全存储器;一组寄存器,其中该组寄存器包括一个或多个邮箱寄存器,并且消息数据由主机系统写入该一个或多个邮箱寄存器中的至少一个,该消息数据包括质询请求的至少一部分,并且所述质询请求包括由所述主机系统进行的用于对所述装置的真实性的质询;以及认证引擎,用于:生成对所述质询的响应,其中所述响应包括用于识别所述装置的属性的数据和使用所述私钥生成的签名;以及使得所述响应的至少一部分被写入要由所述主机系统读取的一个或多个邮箱寄存器中的一个。
示例2可以包括示例1的主题,其中一个或多个寄存器包括写数据邮箱和读数据邮箱,所述主机系统用于将所述消息数据写入所述写数据邮箱,并且所述认证引擎用于将所述响应写入所述读数据邮箱。
示例3可以包括示例2的主题,其中所述写数据邮箱和所述读数据邮箱包括扩展能力寄存器结构中的寄存器,所述扩展能力寄存器结构还包括一个或多个附加寄存器以指示由所述装置支持的认证特征。
示例4可以包括示例1-3中任一个的主题,其中所述装置包括遵循基于快速外围组件互连(PCIe)互连协议的设备。
示例5可以包括示例4的主题,其中所述质询是向所述主机系统认证所述设备,所述质询请求以基于通用串行总线(USB)的认证协议为基础的,并且所述响应以基于USB的认证协议为基础。
示例6可以包括示例1-5中任一个的主题,还包括微控制器固件,其中对所述装置的真实性的质询包括用于确定所述微控制器固件的可信度的质询。
示例7可以包括示例6的主题,其中所述认证引擎至少部分地实现在所述微控制器固件中。
示例8可以包括示例1-6中任一个的主题,其中响应的生成包括清单数据结构的生成,所述清单数据结构包括用于识别所述装置的属性的数据。
示例9可以包括示例8的主题,其中响应包括清单的散列。
示例10可以包括示例8-9中任一个的主题,其中清单包括微控制器的固件的测量。
示例11可以包括示例10的主题,还包括用于安全地执行固件的测量的测量引擎。
示例12可以包括示例1-11中任一个的主题,其中所述质询请求包括多个部分,所述消息数据包括所述质询请求的第一部分,所述装置包括用于将所述质询请求的第一部分复制到所述存储器的逻辑,在将所述质询请求的第一部分复制到存储器之后,所述质询请求的第二部分从所述主机系统被接收并被写入所述一个或多个邮箱寄存器,并且认证引擎用于在质询请求的多个部分中的所有已写入所述一个或多个邮箱寄存器并复制到存储器之后从存储器对质询请求进行存取。
示例13可以包括示例12的主题,其中所述一组寄存器包括控制寄存器,并且所述控制寄存器包括要由所述主机系统写入的至少一个Go位,以指示所述装置将消费所述质询请求。
示例14可以包括示例1-13中任一项的主题,其中所述响应包括多个部分,所述装置包括用于将所述多个部分中的每个部分按顺序写入所述一个或多个邮箱寄存器的逻辑,并且在多个部分中的下一部分被写入所述一个或多个邮箱寄存器之前,所述主机系统读取所述多个部分中的每个部分。
示例15可以包括示例14的主题,其中所述一组寄存器包括状态寄存器,并且所述状态寄存器包括要由所述主机系统读取的至少一个响应就绪位,并指示所述认证引擎已生成对所述质询请求的响应。
示例16可以包括示例1-15中任一项的主题,还包括中断逻辑,用于向所述主机系统产生中断,以指示所述响应准备好由所述主机系统读取。
示例17是一种方法,包括:接收用于将来自主机系统的质询请求的至少一部分写入连接到所述主机系统的设备上的写邮箱寄存器的请求,其中所述质询请求包括对设备的真实性的质询,并且该设备包括用于实现设备认证的认证寄存器结构,所述认证寄存器结构包括写邮箱寄存器和读邮箱寄存器;将所述质询请求从所述写邮箱寄存器复制到所述设备的存储器中;生成对所述质询请求的响应,其中所述响应包括清单数据结构和签名的散列,所述清单数据结构指示所述设备的属性,并且所述签名是根据设备上的私钥生成的;将所述响应的至少一部分写入所述设备上的读邮箱寄存器;以及从所述主机系统接收读取请求以从所述读邮箱寄存器读取所述响应的至少一部分。
示例18可以包括示例17的主题,其中该设备遵循基于快速外围组件互连(PCIe)的互连协议。
示例19可以包括示例18的主题,其中主机系统基于响应来认证设备。
示例20可以包括示例19的主题,其中响应包括关于设备的固件的信息,并且主机系统用于基于确定设备的固件是可信的来认证设备。
示例21可以包括示例20的主题,其中使用设备的固件来执行该方法的至少一部分。
示例22可以包括示例17-21中任一项的主题,其中质询请求以基于通用串行总线(USB)的认证协议为基础,并且响应以基于USB的认证协议为基础。
示例23可以包括示例17-22中任一个的主题,其中生成响应包括生成清单数据结构。
示例24可以包括示例23的主题,其中清单数据结构包括设备的固件的测量。
示例25可以包括示例17-24中任一个的主题,其中质询请求包括多个部分,用于写入的请求包括用于按顺序将多个部分中的每个部分写入写邮箱寄存器的多个写入,并且该方法还包括在将多个部分中的下一个部分写入写邮箱寄存器之前,将多个部分中的每一个复制到设备的本地存储器。
示例26可以包括示例25的主题,其中该设备包括一组认证寄存器,包括写邮箱寄存器、读邮箱寄存器和控制寄存器,并且控制寄存器包括至少一个Go位,其由主机系统写入用于指示设备将消费质询请求。
示例27可以包括示例17-26中任一项的主题,其中响应包括多个部分,并且将响应的至少一部分写入读邮箱寄存器包括将多个部分中的每一个按顺序写入读邮箱寄存器。
示例28可以包括示例27的主题,其中该设备包括一组认证寄存器,包括写邮箱寄存器、读邮箱寄存器和状态寄存器,并且状态寄存器包括至少一个响应就绪位,其由主机系统读取并指示设备已经生成对质询请求的响应,其中该方法还包括写入响应就绪位,其用于指示响应已准备好。
示例29可以包括示例17-28中任一个的主题,还包括向主机系统生成中断,其用于指示响应准备好由主机系统从读邮箱寄存器读取。
示例30是至少一个非暂时性机器可访问存储介质,其上存储有指令,所述指令当在机器上执行时,使机器用于:识别通过互连连接到主机的设备;生成针对设备的用于测试设备的可信度的质询;将所述质询写入所述设备的写邮箱寄存器;识别出对所述质询的响应已被生成,并且所述响应的至少一部分被写入所述设备的读邮箱寄存器;读取所述响应的至少一部分;根据所述响应确定所述设备是否可信;以及将一个或多个策略应用于所述设备。
示例31可以包括示例30的主题,其中所述指令在被执行时还使机器用于轮询所述设备上的状态寄存器以确定响应是否准备就绪。
示例32可以包括示例30-31中任一个的主题,其中,所述指令在被执行时还使得机器用于将值写入所述设备上的控制寄存器以触发所述设备对所述质询的消费。
示例33可以包括示例30-32中任一示例的主题,其中该设备遵循基于快速外围组件互连(PCIe)的互连协议。
示例34可以包括示例33的主题,其中互连遵循基于快速外围组件互连(PCIe)的互连协议。
示例35可以包括示例34的主题,其中质询以基于通用串行总线(USB)的认证规范为基础,并且响应以基于USB的认证规范为基础。
示例36可以包括示例30-35中任一示例的主题,其中响应包括根据设备的私钥生成的签名,并且基于签名的真实性来确定设备是否可信。
示例37可以包括示例30-36中任一示例的主题,其中响应包括由设备生成的清单的散列,其中清单标识设备的属性。
示例38可以包括示例37的主题,其中清单包括设备的固件的测量。
示例39可以包括示例30-38中任一示例的主题,其中质询包括多个部分,将质询写入写邮箱寄存器包括将多个部分中的每一个按顺序写入写邮箱寄存器。
示例40可以包括示例30-39中任一示例的主题,其中响应包括多个部分,并且从读邮箱寄存器读取响应的至少一部分包括按顺序从读邮箱寄存器读取多个部分中的每一个。
示例41是一种系统,包括:主机,其包括用于执行主机软件的处理器;以及通过互连连接到所述主机的设备,其中该设备包括:微控制器;存储器,包括用于存储私钥的安全存储器;用于实现认证能力结构的一组寄存器,其中该组寄存器包括写邮箱寄存器、读邮箱寄存器和认证能力寄存器,该认证能力寄存器指示所述主机的认证能力,所述写邮箱寄存器用于存储由所述主机写入的消息数据,所述消息数据包括质询请求的至少一部分,并且所述质询请求请求用于确认所述设备的可信度的认证数据;以及认证引擎,其用于:生成对所述质询请求的响应,其中所述响应包括认证数据,并且所述认证数据用于识别所述微控制器的固件的属性并且包括使用私钥生成的签名;以及使得所述响应的至少一部分被写入所述读邮箱寄存器,其中所述读邮箱寄存器将由所述主机系统读取。
示例42可以包括示例41的主题,其中所述主机用于将所述质询请求写入所述写邮箱寄存器并从所述读邮箱寄存器读取所述响应,并且所述主机用于基于所述响应来确定一个或多个策略以应用于所述设备。
示例43可以包括示例41-42中任一示例的主题,其中所述认证能力结构包括遵循基于快速外围组件互连(PCIe)的互连协议的扩展能力结构。
示例44可以包括示例43的主题,其中所述质询请求和响应以基于通用串行总线(USB)的认证规范为基础。
示例45可以包括示例43-44中任一示例的主题,其中该设备遵循基于PCIe的互连协议。
示例46可以包括示例43-45中任一示例的主题,其中互连遵循基于PCIe的互连协议。
示例47可以包括示例41-46中任一示例的主题,其中互连遵循基于Gen-Z、超级通道互连(UPI)、用于加速器的高速缓存一致性互连(CCIX)、高级微设备无限、通用通信接口(CCI)或基于Centriq的互连协议中的一个的互连协议。
示例48可以包括示例41-47中任一项的主题,其中主机和设备是服务器架构内的组件。
示例49可以包括示例48的主题,其中服务器架构包括机架规模服务器架构。
示例50可以包括示例41-47中任一项的主题,还包括包括了主机和设备的个人计算设备。
示例51可以包括示例41-50中任一项的主题,其中扩展能力结构包括指定供应商特定扩展能力(DVSEC)结构。
示例52是一种包括用于执行示例17-29中任一项的方法的单元的系统。
示例53可以包括示例52的主题,其中该单元包括设备的微控制器固件。
示例54可以包括示例52的主题,其中该单元包括编码有指令的机器可读介质,所述指令能由数据处理装置执行以执行示例17-29中任一项的方法的至少一部分。
示例55可以包括示例52的主题,其中该单元包括硬件电路。
在本说明书通篇提到“一个实施例”或“实施例”是指结合该实施例描述的特定的特征、结构或特性包括在本公开的至少一个实施例中。因此,在本说明书通篇各处出现的措辞“在一个实施例中”或“在实施例中”不一定都指同一实施例。此外,特定的特征、结构或特性可以任何适合的方式组合在一个或多个实施例中。
在前面的说明书中,已经参考具体的示例性实施例进行了详细说明。然而,将显而易见的是,可以对其进行各种修改和改变,而不偏离如随附权利要求中阐述的本公开的更宽泛的精神和范围。说明书和附图因此应在说明性的意义而非限制性的意义上考虑。此外,对实施例和其它示范性语言的前面的使用不一定是指同一实施例或同一示例,但是可以指不同和独特的实施例以及可能同一实施例。

Claims (25)

1.一种装置,包括:
微控制器;
存储器,其包括用于存储私钥的安全存储器;
一组寄存器,其中,所述一组寄存器包括一个或多个邮箱寄存器,并且消息数据由主机系统写入所述一个或多个邮箱寄存器中的至少一个,该消息数据包括质询请求的至少一部分,并且所述质询请求包括所述主机系统对所述装置的真实性的质询;以及
认证引擎,用于:
生成对所述质询的响应,其中,所述响应包括用于对所述装置的属性和使用所述私钥生成的签名进行识别的数据;以及
使得所述响应的至少一部分被写入由所述主机系统读取的所述一个或多个邮箱寄存器中的一个。
2.如权利要求1所述的装置,其中,所述一个或多个寄存器包括写数据邮箱和读数据邮箱,所述主机系统用于将所述消息数据写入所述写数据邮箱,并且所述认证引擎用于将所述响应写入所述读数据邮箱。
3.如权利要求2所述的装置,其中,所述写数据邮箱和所述读数据邮箱包括扩展能力寄存器结构中的寄存器,所述扩展能力寄存器结构还包括一个或多个附加寄存器,其用于指示由所述装置支持的认证特征。
4.如权利要求1所述的装置,其中,所述装置包括遵循基于快速外围组件互连(PCIe)的互连协议的设备。
5.如权利要求4所述的装置,其中,所述质询用于向所述主机系统认证所述设备,所述质询请求以基于通用串行总线(USB)的认证协议为基础,并且所述响应以基于USB的认证协议为基础。
6.如权利要求1所述的装置,还包括微控制器固件,其中,对所述装置的真实性的质询包括用于确定所述微控制器固件的可信度的质询。
7.如权利要求6所述的装置,其中,所述认证引擎至少部分地实现在所述微控制器固件中。
8.如权利要求1所述的装置,其中,所述响应的生成包括清单数据结构的生成,所述清单数据结构包括用于识别所述装置的属性的数据。
9.如权利要求8所述的装置,其中,所述响应包括所述清单的散列。
10.如权利要求8所述的装置,其中,所述清单包括对所述微控制器的固件的测量。
11.如权利要求10所述的装置,还包括测量引擎,其用于安全地执行对所述固件的测量。
12.如权利要求1所述的装置,其中,所述质询请求包括多个部分,所述消息数据包括所述质询请求的第一部分,所述装置包括用于将所述质询请求的所述第一部分复制到所述存储器的逻辑,在所述质询请求的所述第一部分被复制到所述存储器之后,所述质询请求的第二部分被从所述主机系统接收并且被写入所述一个或多个邮箱寄存器,并且所述认证引擎用于在所述质询请求的多个部分中的所有已被写入所述一个或多个邮箱寄存器并且被复制到所述存储器之后访问来自存储器的质询请求。
13.如权利要求12所述的装置,其中,所述一组寄存器包括控制寄存器,并且所述控制寄存器包括至少一个Go位,所述Go位要由所述主机系统写入,用于指示所述装置将消费所述质询请求。
14.如权利要求1所述的装置,其中,所述响应包括多个部分,所述装置包括用于将所述多个部分中的每个部分按顺序写入所述一个或多个邮箱寄存器的逻辑,并且在所述多个部分中的下一部分被写入所述一个或多个邮箱寄存器之前,所述主机系统读取所述多个部分中的每个部分。
15.如权利要求14所述的装置,其中,所述一组寄存器包括状态寄存器,并且所述状态寄存器包括至少一个响应就绪位,所述响应就绪位要由所述主机系统读取,并且指示所述认证引擎已生成对所述质询请求的响应。
16.如权利要求1所述的装置,还包括中断逻辑,所述中断逻辑用于向所述主机系统生成中断,用于指示所述响应准备好由所述主机系统读取。
17.一种方法,包括:
接收用于将质询请求的至少一部分从主机系统写入到连接到所述主机系统的设备上的写邮箱寄存器的请求,其中,所述质询请求包括对所述设备的真实性的质询,并且所述设备包括用于实现设备认证的认证寄存器结构,所述认证寄存器结构包括所述写邮箱寄存器和读邮箱寄存器;
将所述质询请求从所述写邮箱寄存器复制到所述设备的存储器;
生成对所述质询请求的响应,其中,所述响应包括清单数据结构和签名的散列,所述清单数据结构指示所述设备的属性,并且所述签名是根据所述设备上的私钥生成的;
将所述响应的至少一部分写入所述设备上的所述读邮箱寄存器;以及
从所述主机系统接收读取请求以从所述读邮箱寄存器读取所述响应的至少一部分。
18.至少一个非暂时性机器可访问存储介质,其上存储有指令,所述指令当在机器上执行时,使所述机器用于:
识别由互连连接到主机的设备;
生成针对所述设备的用于测试所述设备的可信度的质询;
将所述质询写入所述设备的写邮箱寄存器;
识别出对所述质询的响应已被生成,并且所述响应的至少一部分被写入所述设备的读邮箱寄存器;
读取所述响应的至少一部分;
根据所述响应确定所述设备是否可信;以及
将一个或多个策略应用于所述设备。
19.如权利要求18所述的存储介质,其中,所述指令在被执行时还使所述机器用于:
轮询所述设备上的状态寄存器以确定所述响应是否准备就绪。
20.如权利要求18所述的存储介质,其中,所述指令在被执行时还使所述机器用于:
将值写入所述设备上的控制寄存器以触发所述设备对所述质询的消费。
21.一种系统,包括:
主机,其包括用于执行主机软件的处理器;以及
由互连连接到所述主机的设备,其中,所述设备包括:
微控制器;
存储器,其包括用于存储私钥的安全存储器;
一组寄存器,其用于实现认证能力结构,其中,所述一组寄存器包括写邮箱寄存器、读邮箱寄存器和认证能力寄存器,所述认证能力寄存器指示所述主机的认证能力,所述写邮箱寄存器用于存储由所述主机写入的消息数据,所述消息数据包括质询请求的至少一部分,并且所述质询请求对用于确认所述设备的可信度的认证数据进行请求;以及
认证引擎,其用于:
生成对所述质询请求的响应,其中,所述响应包括所述认证数据,并且所述认证数据用于识别所述微控制器的固件的属性并且包括使用所述私钥生成的签名;以及
使得所述响应的至少一部分被写入所述读邮箱寄存器,其中,所述读邮箱寄存器将由所述主机系统读取。
22.如权利要求21所述的系统,其中,所述主机用于将所述质询请求写入所述写邮箱寄存器并且从所述读邮箱寄存器读取所述响应,并且所述主机用于基于所述响应来确定一个或多个策略以应用于所述设备。
23.如权利要求21所述的系统,其中,所述认证能力结构包括遵循基于快速外围组件互连(PCIe)的互连协议的扩展能力结构。
24.如权利要求23所述的系统,其中,所述质询请求和响应以基于通用串行总线(USB)的认证规范为基础。
25.如权利要求21所述的系统,其中,所述扩展能力结构包括指定供应商特定扩展能力(DVSEC)结构。
CN201811581492.2A 2018-01-24 2018-12-24 设备认证 Pending CN110069439A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862621153P 2018-01-24 2018-01-24
US62/621,153 2018-01-24
US16/024,469 2018-06-29
US16/024,469 US11677730B2 (en) 2018-01-24 2018-06-29 Device authentication

Publications (1)

Publication Number Publication Date
CN110069439A true CN110069439A (zh) 2019-07-30

Family

ID=65274349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811581492.2A Pending CN110069439A (zh) 2018-01-24 2018-12-24 设备认证

Country Status (3)

Country Link
US (1) US11677730B2 (zh)
EP (1) EP3518131A1 (zh)
CN (1) CN110069439A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113296876A (zh) * 2020-06-30 2021-08-24 阿里巴巴集团控股有限公司 虚拟机的设备直通方法、设备及存储介质
WO2021213209A1 (zh) * 2020-04-22 2021-10-28 华为技术有限公司 数据处理方法及装置、异构系统

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580420B (zh) * 2018-06-11 2023-03-28 阿里巴巴集团控股有限公司 基于集成芯片的数据处理方法、计算机设备、存储介质
US10771264B2 (en) * 2018-10-10 2020-09-08 Hewlett Packard Enterprise Development Lp Securing firmware
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
US10755156B2 (en) * 2018-12-14 2020-08-25 Intel Corporation Configurable integrity protected link for secure accelerator communication
US11048800B2 (en) 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments
US11122081B2 (en) 2019-02-21 2021-09-14 Bank Of America Corporation Preventing unauthorized access to information resources by deploying and utilizing multi-path data relay systems and sectional transmission techniques
US10756908B1 (en) * 2019-02-22 2020-08-25 Beyond Identity Inc. User authentication with self-signed certificate and identity verification
US11743240B2 (en) 2019-03-08 2023-08-29 Intel Corporation Secure stream protocol for serial interconnect
US11654635B2 (en) 2019-04-18 2023-05-23 The Research Foundation For Suny Enhanced non-destructive testing in directed energy material processing
US11397701B2 (en) * 2019-04-30 2022-07-26 Intel Corporation Retimer mechanisms for in-band link management
US11502853B2 (en) 2019-08-02 2022-11-15 EMC IP Holding Company LLC Establishing trust on a data storage network
US11200321B2 (en) * 2019-08-02 2021-12-14 EMC IP Holding Company LLC Maintaining trust on a data storage network
US11251980B2 (en) * 2020-01-22 2022-02-15 Motorola Mobility Llc Electronic devices and corresponding methods for verifying device security prior to use
US11651110B2 (en) * 2021-07-08 2023-05-16 Dell Products, L.P. Hardware device mutual authentication system and method for a baseboard management controller (BMC)
EP4416574A1 (en) * 2021-10-11 2024-08-21 Lexmark International, Inc. Methods and systems for determining the authenticity of a component using elliptic-curve cryptography
US20230133385A1 (en) * 2021-10-29 2023-05-04 Stmicroelectronics Application Gmbh Central controller for multiple development ports

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7940932B2 (en) 2004-04-08 2011-05-10 Texas Instruments Incorporated Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor
US7591008B2 (en) * 2005-06-30 2009-09-15 Microsoft Corporation Client authentication using multiple user certificates
US8543838B1 (en) * 2009-12-23 2013-09-24 Marvell International Ltd. Cryptographic module with secure processor
US8516551B2 (en) * 2010-07-28 2013-08-20 Intel Corporation Providing a multi-phase lockstep integrity reporting mechanism
CN103430479A (zh) * 2011-02-10 2013-12-04 惠普发展公司,有限责任合伙企业 验证通信模块的系统、方法及装置
US20160094531A1 (en) * 2014-09-29 2016-03-31 Microsoft Technology Licensing, Llc Challenge-based authentication for resource access
US10079677B2 (en) * 2015-06-05 2018-09-18 Apple Inc. Secure circuit for encryption key generation
US10382210B2 (en) 2016-01-10 2019-08-13 Apple Inc. Secure device pairing
US10474823B2 (en) 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US20180183581A1 (en) 2016-12-28 2018-06-28 Intel Corporation Arrangements for datalink security
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021213209A1 (zh) * 2020-04-22 2021-10-28 华为技术有限公司 数据处理方法及装置、异构系统
CN113296876A (zh) * 2020-06-30 2021-08-24 阿里巴巴集团控股有限公司 虚拟机的设备直通方法、设备及存储介质

Also Published As

Publication number Publication date
US20190052617A1 (en) 2019-02-14
EP3518131A1 (en) 2019-07-31
US11677730B2 (en) 2023-06-13

Similar Documents

Publication Publication Date Title
CN110069439A (zh) 设备认证
CN104380269B (zh) 高性能互连相干协议
CN105095772B (zh) 用于安全地保存并恢复计算平台状态的方法和装置
CN105721057B (zh) 高性能光中继器
US8001390B2 (en) Methods and apparatus for secure programming and storage of data using a multiprocessor in a trusted mode
US11907389B2 (en) Data release control based on authentication and link protection
CN106997438B (zh) 一种可信服务器cpu设计方法
US20150331043A1 (en) System-on-chip secure debug
CN110366842A (zh) 可调节的重定时器缓冲器
CN110036380A (zh) 用于高速互连中低延迟的双模phy
CN107111576A (zh) 发布的中断架构
CN107924380A (zh) 使用业务类别分配高速缓存的方法、装置和系统
US10614454B1 (en) Remote population and redaction of high security data
CN106575261A (zh) 受保护的区域中的存储器初始化
JP2016197436A (ja) ポイントツーポイント相互接続システム上のセキュアな環境初期化命令の実行
CN107430569A (zh) 多芯片封装链路
CN107851170A (zh) 支持用于存储器地址范围的可配置安全级别
CN110262923A (zh) 带内重定时器寄存器访问
CN107408032A (zh) 互连中的伪随机比特序列
KR20220093198A (ko) 전용 및 개방형 블록체인을 이용한 거래의 수행
CN107003971A (zh) 用于高性能互连中的嵌入式流通道的方法、装置、系统
EP4071646A1 (en) Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
CN107003838A (zh) 解码信息库
Tariq Rampant Smoothing (RTS) Algorithm: an optimized consensus mechanism for private Blockchain enabled technologies
CN109643577A (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