DE102019127892A1 - Sichern eines Plattform-Links mit Verschlüsselung - Google Patents

Sichern eines Plattform-Links mit Verschlüsselung Download PDF

Info

Publication number
DE102019127892A1
DE102019127892A1 DE102019127892.9A DE102019127892A DE102019127892A1 DE 102019127892 A1 DE102019127892 A1 DE 102019127892A1 DE 102019127892 A DE102019127892 A DE 102019127892A DE 102019127892 A1 DE102019127892 A1 DE 102019127892A1
Authority
DE
Germany
Prior art keywords
packet
computing device
link
packets
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019127892.9A
Other languages
English (en)
Inventor
David J. Harriman
Raghunandan Makaram
Ioannis T. Schoinas
Kapil Sood
Yu-Yuan Chen
Vedvyas Shanbhogue
Siddhartha Chhabra
Reshma Lal
Reouven Elbaz
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 DE102019127892A1 publication Critical patent/DE102019127892A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Ein geschützter Link zwischen einer ersten Rechenvorrichtung und einer zweiten Rechenvorrichtung wird eingerichtet, wobei die Kommunikation über den geschützten Link ein Kommunikationsprotokoll einhalten soll, das es ermöglicht, dass Pakete während der Übermittlung umgeordnet werden. Mehrere Pakete werden gemäß einem Paketformat erzeugt, das sicherstellt, dass die mehreren Pakete während der Übertragung über den geschützten Link nicht umgeordnet werden, wobei die mehreren Pakete ein erstes Paket und ein zweites Paket umfassen. Daten der mehreren Pakete werden zur Übertragung über den geschützten Link verschlüsselt, wobei Daten des ersten Pakets basierend auf dem kryptografischen Schlüssel und einem ersten Wert eines Zählers verschlüsselt werden und Daten des zweiten Pakets basierend auf dem kryptografischen Schlüssel und einem zweiten Wert des Zählers verschlüsselt werden.

Description

  • Verwandte Anmeldungen
  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung mit der lfd. Nr. 62/776781 , die am 7. Dezember 2018 eingereicht wurde und den Titel „SECURING PLATFORM LINK WITH ENCRYPTION“ trägt. Die Offenbarung der prioritären Anmeldung ist hier durch Bezugnahme vollständig mit aufgenommen.
  • Hintergrund
  • Fortschritte in der Halbleiterverarbeitung und im Logikentwurf haben eine Erhöhung der Menge an Logik ermöglicht, die in Vorrichtungen mit integrierten Schaltungen vorhanden sein kann. Als Folge haben sich Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardwaresträngen und mehreren logischen Prozessoren, die auf einzelnen integrierten Schaltungen vorhanden sind, sowie zu anderen in solchen Prozessoren integrierten Schnittstellen entwickelt. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise einen einzelnen physischen Prozessorchip, wobei der Prozessorchip eine beliebige Anzahl von Kernen, Hardwaresträngen, logischen Prozessoren, Schnittstellen, Speicher, Controller-Hubs usw. umfassen kann.
  • Ein Prozessor kann eine Logik, die zwei Vorrichtungen über einen Link miteinander koppeln kann, umfassen oder mit dieser gekoppelt sein. Beispielsweise kann ein Prozessor eine Zwischenverbindungs-Fabric-Architektur aufweisen, beispielsweise eine Peripheriekomponentenzwischenverbindungs-Express-Architektur (PCIe-Express-Architektur). Ein primäres Ziel von PCIe ist es, es verschiedenen Komponenten und Vorrichtungen (z. B. von verschiedenen Anbietern) zu ermöglichen, in einer offenen Architektur zusammenzuarbeiten, die mehrere Marktsegmente umfasst.
  • Figurenliste
    • 1 zeigt eine Ausführungsform eines Rechensystems mit einer Zwischenverbindungsarchitektur.
    • 2 zeigt eine Ausführungsform einer Zwischenverbindungsarchitektur mit einem Schichtstapel.
    • 3 zeigt eine Ausführungsform einer Anforderung oder eines Pakets, die bzw. das innerhalb einer Zwischenverbindungsarchitektur erzeugt oder empfangen werden soll.
    • 4 zeigt eine Ausführungsform eines Paares aus Sender und Empfänger für eine Zwischenverbindungsarchitektur.
    • 5 zeigt einen Peer-zu-Peer-Link (P2P-Link) gemäß bestimmten Ausführungsformen.
    • 6 zeigt einen Ende-zu-Ende-Link (E2E-Link) gemäß bestimmten Ausführungsformen.
    • 7 veranschaulicht eine Nachricht zum Kommunizieren von Sicherheitsaustauschnutzdaten gemäß bestimmten Ausführungsformen.
    • 8A zeigt ein Standardkommunikationsordnungsschema gemäß bestimmten Ausführungsformen.
    • 8B zeigt ein modifiziertes Kommunikationsordnungsschema, das eine verschlüsselte Linkkommunikation ermöglicht, gemäß bestimmten Ausführungsformen.
    • 9 zeigt eine Nachricht zum Tunneln eines oder mehrerer Transaktionsschichtpakete (TLPs) gemäß bestimmten Ausführungsformen.
    • 10 zeigt eine Nachricht zum Tunneln eines Sicherungsschichtpakets (DLLP) gemäß bestimmten Ausführungsformen.
    • 11 zeigt ein TLP mit einem Integritätsprüfwert in einem LCRC-Feld gemäß bestimmten Ausführungsformen.
    • 12 zeigt ein System zum Kommunizieren von verschlüsselten Daten über einen geschützten Link gemäß bestimmten Ausführungsformen.
    • 13 zeigt einen Ablauf zum Kommunizieren von verschlüsselten Daten über einen geschützten Link gemäß bestimmten Ausführungsformen.
    • 14 zeigt ein Blockdiagramm für ein Rechensystem mit einem Mehrkernprozessor gemäß bestimmten Ausführungsformen.
    • 15 zeigt ein Blockdiagramm eines Rechensystems mit mehreren Prozessoren gemäß bestimmten Ausführungsformen.
    • 16 zeigt einen beispielhaften Ablauf in AES-GCM zum Verwenden von Initialisierungsvektoren zum Erzeugen von verschlüsseltem Chiffretext und einem Authentifizierungs-Etikett gemäß bestimmten Ausführungsformen.
  • Genaue Beschreibung
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten wie beispielsweise Beispiele spezifischer Arten von Prozessoren und Systemkonfigurationen, spezifischer Hardwarestrukturen, spezifischer Architektur- und Mikroarchitekturdetails, spezifischer Registerkonfigurationen, spezifischer Befehlstypen, spezifischer Systemkomponenten. spezifischer Messungen/Höhen, spezifischer Prozessor-Pipeline-Stufen und Operationen usw. dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung zu ermöglichen. Für Fachleute ist es jedoch offensichtlich, dass diese spezifischen Einzelheiten nicht praktiziert werden müssen, um alle Ausführungsformen der vorliegenden Offenbarung auszuführen. In anderen Fällen sind wohlbekannte Komponenten oder Verfahren wie spezifische und alternative Prozessorarchitekturen, bestimmte Logikschaltungen/Codes für beschriebene Algorithmen, bestimmte Firmware-Codes, bestimmte Zwischenverbindungsoperationen, bestimmte Logikkonfigurationen, bestimmte Herstellungstechniken und -materialien, bestimmte Kompiliererimplementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Abschalt- und Torsteuerungstechniken/-logik und andere spezifische betrieblichen Einzelheiten des Rechensystems nicht genau beschrieben, um zu vermeiden, dass die hierin offenbarten Ausführungsformen unnötig verunklart werden.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Verbesserungen der Computersicherheit in bestimmten Rechensystemen wie beispielsweise in Rechenplattformen, Speichervorrichtungen oder Mikroprozessoren beschrieben sein können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren der hier beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleitervorrichtungen wie z. B. in der Hand gehaltene Vorrichtungen, Tablets, andere dünne Notebooks, Ein-Chip-System-Vorrichtungen (SOC-Vorrichtungen) und eingebettete Anwendungen angewendet werden. Einige Beispiele für in der Hand gehaltene Vorrichtungen umfassen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDA) und in der Hand gehaltene PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein Ein-Chip-System, Netzcomputer (NetPC), Beistellkästen, Netz-Hubs, Weitbereichsnetz-Switches (WAN-Switches) oder jedes andere System, das eine die unten beschriebenen Funktionen und Operationen leisten kann. Darüber hinaus sind die hier beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieeinsparung und -effizienz beziehen.
  • Mit dem Fortschritt in Rechensystemen werden die darin enthaltenen Komponenten komplexer. Infolgedessen nimmt auch die Komplexität der Zwischenverbindungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten zu, um sicherzustellen, dass die Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Darüber hinaus erfordern unterschiedliche Marktsegmente verschiedene Aspekte von Zwischenverbindungsarchitekturen, um den Anforderungen des Marktes zu entsprechen. Beispielsweise erfordern Server eine höhere Rechenleistung, während das mobile Ökosystem manchmal die Gesamtrechenleistung für Energieeinsparungen opfern kann. Dennoch ist es ein spezieller Zweck der meisten Fabrics, höchstmögliche Rechenleistung bei maximaler Energieeinsparung zu erzielen. Nachfolgend wird eine Reihe von Zwischenverbindungen erläutert, die möglicherweise von verschiedenen hier beschriebenen Ausführungsformen profitieren würden.
  • Eine Zwischenverbindungsstrukturarchitektur umfasst Peripheriekomponentenzwischenverbindungs-Express-Architektur (PCIe-Express-Architektur). Ein vorrangiges Ziel von PCIe ist es, die Zusammenarbeit von Komponenten und Vorrichtungen verschiedener Hersteller in einer offenen Architektur zu ermöglichen, die sich über mehrere Marktsegmente erstreckt. Clients (Desktops und Mobilvorrichtungen), Server (Standard, Rack-Scale und Enterprise) sowie eingebettete und kommunikationstechnische Vorrichtungen. PCI-Express ist eine Hochleistungs-Allzweck-I/O-Zwischenverbindung, die für eine große Vielfalt von zukünftigen Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie z. B. Anwendungsmodul, Last-Speicher-Architektur und Software-Schnittstellen davon wurden während ihrer Überarbeitungen beibehalten, während frühere Parallel-Bus-Implementierungen durch hochskalierbare vollständig serielle Schnittstellen ersetzt wurden. Die neueren Versionen von PCI-Express nutzen die Vorteile von Fortschritten in Punkt-zu-Punkt-Zwischenverbindungen, switchbasierter Technologie und paketiertem Protokoll, um neue Leistungsstufen und Merkmale zu bieten. Leistungsmanagement, Dienstgüte (QoS), Unterstützung von Einbau/Tausch im laufenden Betrieb, Datenintegrität und Fehlerhandhabung sind unter einigen der fortgeschrittenen Merkmalen, die durch PCI-Express unterstützt werden.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform einer Fabric, die aus Punkt-zu-Punkt-Links zusammengesetzt ist, die eine Gruppe von Komponenten zusammenschalten, dargestellt. Das System 100 umfasst den Prozessor 105 und den Systemspeicher 110, der mit dem Controller-Hub 115 gekoppelt ist. Der Prozessor 105 kann irgendein Verarbeitungselement wie z. B. einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor umfassen. Der Prozessor 105 ist mit dem Controller-Hub 115 über einen Link 106 (z. B. einen Vorderseiten-Bus (FSB)) gekoppelt. In einer Ausführungsform umfasst der Link 106 eine serielle, differentielle Zwischenverbindungsarchitektur, die mit unterschiedlichen Zwischenverbindungsstandards konform ist. In einigen Implementierungen kann das System neben anderen beispielhaften Merkmalen eine Logik zum Implementieren mehrerer Protokollstapel und eine weitere Logik zum Aushandeln alternativer Protokolle, die auf einer gemeinsamen Bitübertragungsschicht ausgeführt werden sollen, umfassen.
  • Der Systemspeicher 110 umfasst eine beliebige Speichervorrichtung wie etwa einen Direktzugriffsspeicher (RAM), einen flüchtigen Speicher, einen nichtflüchtigen Speicher (NV) oder einen anderen Speicher, auf den Vorrichtungen in dem System 100 zugreifen können. Der Systemspeicher 110 ist mit dem Controller-Hub 115 durch eine Speicherschnittstelle 116 verbunden. Beispiele für eine Speicherschnittstelle umfassen eine Speicherschnittstelle mit doppelter Datenrate (DDR-Speicherschnittstelle), eine DDR-Speicherschnittstelle mit zwei Kanälen und eine Speicherschnittstelle für dynamischen RAM (DRAM-Speicherschnittstelle).
  • In einer Ausführungsform ist der Controller-Hub 115 einen Wurzel-Hub, Wurzelkomplex oder Wurzel-Controller in einer PCIe- oder PCIE-Zwischenverbindungshierarchie umfassen. Beispiele des Controller-Hubs 115 umfassen einen Chipsatz, einen Speicher-Controller-Hub (MCH), eine Northbridge, einen Zwischenverbindungs-Controller-Hub (ICH), eine Southbridge und einen Wurzel-Controller/Hub. Der Begriff Chipsatz bezieht sich häufig auf zwei physisch getrennte Controller-Hubs, z. B. einen Speicher-Controller-Hub (MCH), der mit einem Zwischenverbindungs-Controller-Hub (ICH) gekoppelt ist. Es ist zu beachten, dass aktuelle Systeme häufig umfassen, dass der MCH in dem Prozessor 105 integriert ist, während der Controller 115 auf ähnliche Weise wie nachstehend beschrieben zum Kommunizieren mit I/O-Vorrichtungen dient. In einigen Ausführungsformen wird optional Peer-zu-Peer-Routing über den Wurzelkomplex 115 unterstützt.
  • Hier ist der Controller-Hub 115 mit Switch/Brücke 120 durch einen seriellen Link 119 gekoppelt. Eingabe/Ausgabe-Module 117 und 121, die auch als Schnittstellen/Anschlüsse 117 und 121 bezeichnet sein können, können einen Schichtprotokoll-Stapel umfassen/implementieren, um Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120 bereitzustellen. In einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 120 gekoppelt sein.
  • Der/die Switch/Brücke 120 lenkt Pakete/Nachrichten von Vorrichtung 125 aufwärts, d. h. nach oben in einer Hierarchie zu einem Wurzelkomplex hin, zu dem Controller-Hub 115 und abwärts, d. h. nach unten in einer Hierarchie weg von einem Wurzel-Controller, von dem Prozessor 105 oder Systemspeicher 110 zu Vorrichtung 125. Der Switch 120 wird in einer Ausführungsform als eine logische Anordnung mehrerer virtueller PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 125 umfasst irgendeine interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System gekoppelt werden soll, wie z. B. eine I/O-Vorrichtung, einen Netzschnittstellen-Controller (NIC), eine Zusatzkarte, einen Audioprozessor, einen Netzprozessor, ein Festplattenlaufwerk, eine Speichervorrichtung, einen CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine Vorrichtung für den universellen seriellen Bus (USB-Vorrichtung), einen Scanner oder andere Eingabe/AusgabeVorrichtungen. Häufig wird in der PCIe-Umgangssprache eine solche Vorrichtung als ein Endpunkt bezeichnet. Obwohl dies nicht spezifisch gezeigt ist, kann die Vorrichtung 125 eine PCIe-zu-PCI/PCI-X-Brücke umfassen, um alte oder andere Versionen von PCI-Vorrichtungen zu unterstützen. Endpunktvorrichtungen in PCIe werden oft in Altlast-, PCIe- oder in dem Wurzelkomplex integrierte Endpunkte eingeteilt.
  • Der Grafikbeschleuniger 130 kann auch über den seriellen Link 132 mit dem Controller-Hub 115 gekoppelt sein. In einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und dementsprechend die I/O-Vorrichtung 125 ist dann mit dem ICH gekoppelt. Die I/O-Module 131 und 118 dienen auch dazu, einen geschichteten Protokoll-Stapel zum Kommunizieren zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu implementieren. Ähnlich der vorstehenden MCH-Diskussion kann ein Grafik-Controller oder der Grafikbeschleuniger 130 selbst in dem Prozessor 105 integriert sein. Ferner können eine oder mehrere Links (z. B. 123) des Systems eine oder mehrere Erweiterungsvorrichtungen (z. B. 150) wie Neuzeitgeber, Wiederholer usw. umfassen.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform eines geschichteten Protokoll-Stapels dargestellt. Der geschichtete Protokollstapel 200 kann eine beliebige Form eines geschichteten Kommunikations-Stapels wie z. B. einen QPI-Stapel, einen PCIe-Stapel, einen Hochleistungscomputerzwischenverbindungs-Stapel (HPI-Stapel) der nächsten Generation oder einen anderen geschichteten Stapel umfassen. Obwohl die unmittelbar nachstehende Diskussion unter Bezugnahme auf 1-4 sich auf einen PCIe-Stapel bezieht, können die gleichen Konzepte auf andere Zwischenverbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 200 eine Transaktionsschicht 205, eine Verbindungsschicht 210 und eine Bitübertragungsschicht 220 umfassen. Eine Schnittstelle, z. B. die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 repräsentiert sein. Die Repräsentierung als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle bezeichnet sein, das/die einen Protokollstapel implementiert/umfasst.
  • PCI-Express verwendet Pakete, um Informationen zwischen Komponenten zu übermitteln. Pakete können in der Transaktionsschicht 205 und der Sicherungsschicht 210 gebildet werden, um Informationen von der Sendekomponente an die Empfangskomponente zu übertragen. Wenn die gesendeten Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die notwendig werden, um Pakete in diesen Schichten zu behandeln. An der Empfangsseite geschieht der umgekehrte Prozess und Pakete werden von ihrer Repräsentation der Bitübertragungsschicht 220 in die Repräsentation der Sicherungsschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form, die durch die Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann, umgesetzt.
  • Transaktionsschicht
  • In einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Zwischenverbindungsarchitektur wie z. B. Sicherungsschicht 210 und Bitübertragungsschicht 220 bereitstellen. In dieser Hinsicht ist eine primäre Zuständigkeit der Transaktionsschicht 205 der Zusammenbau und die Zerlegung von Paketen (d. h. Transaktionsschichtpaketen oder TLPs). Die Transaktionsschicht 205 verwaltet außerdem guthabenbasierte Flusssteuerung für TLPs. PCIe implementiert aufgespaltene Transaktionen, d. h. Transaktionen mit Anforderung und Antwort, die zeitlich getrennt sind, was ermöglicht, dass ein Link anderen Verkehr führt, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Zudem verwendet PCIe guthabenbasierte Flusssteuerung. In diesem Schema verkündet eine Vorrichtung ein anfängliches Guthaben für jeden der Empfangspuffer in der Transaktionsschicht 205. Eine externe Vorrichtung an dem entgegengesetzten Ende des Links, z. B. der Controller-Hub 115 in 1, kann die die Guthabenmenge zählen, das durch jedes TLP verbraucht werden. Eine Transaktion kann gesendet werden, wenn die Transaktion eine Guthabengrenze nicht überschreitet. Nach dem Empfangen einer Antwort wird eine Guthabenmenge wiederhergestellt. Ein Vorteil eines solchen Guthabenschemas ist, dass die Latenz der Guthabenrückgabe nicht die Leistung beeinträchtigt, vorausgesetzt dass die Guthabengrenze nicht erreicht wird.
  • In einer Ausführungsform können vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe/Ausgabeadressraum und einen Nachrichtenadressraum umfassen. Speicherraumtransaktionen umfassen eine oder mehrere Leseanforderungen und Schreibanforderungen, um Daten in eine/aus einer speicherabgebildeten Stelle zu übertragen. In einer Ausführungsform können Speicherraumtransaktionen zwei unterschiedliche Adressformate verwenden, z. B. ein kurzes Adressformat, wie z. B. eine 32-Bit-Adresse, oder ein langes Adressformat, wie z. B. eine 64-Bit-Adresse. Konfigurationsraumtransaktionen können verwendet werden, um auf den Konfigurationsraum der PCIE-Vorrichtungen zuzugreifen. Transaktionen zu dem Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) sind definiert, um bandinterne Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • In einer Ausführungsform setzt die Transaktionsschicht 205 Paketkopf/Nutzdaten 206 zusammen. Das aktuelle Format für Paketkopf/Nutzdaten kann in der PCIe-Spezifikation auf der PCIe-Spezifikations-Website gefunden werden (tatsächlich kann jede Bezugnahme auf einen Teil der PCIe-Spezifikation frühere, aktuelle oder zukünftige PCIe-Spezifikationen, die derzeit oder in Zukunft auf der PCIe-Spezifikations-Website oder auf andere Weise verfügbar sind, in Betracht ziehen)
  • Unter schneller Bezugnahme auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform kann der Transaktionsdeskriptor 300 ein Mechanismus zum Führen von Transaktionsinformationen sein. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 eine Identifikation von Transaktionen in einem System. Andere potentielle Anwendungen umfassen das Verfolgen von Modifikationen der Standardtransaktionsordnung und Zuordnung der Transaktion zu Kanälen.
  • Der Transaktionsdeskriptor 300 umfasst ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306. In dem dargestellten Beispiel ist das globale Kennungsfeld 302 so abgebildet, dass es das lokale Transaktionskennungsfeld 308 und das Quellkennungsfeld 310 umfasst. In einer Ausführungsform ist die globale Transaktionskennung 302 eindeutig für alle unerledigten Anforderungen.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein Feld, das durch einen anfordernden Agenten erzeugt wird, und kann für alle unerledigten Anforderungen für diesen anfordernden Agenten, die eine Fertigstellung erfordern, eindeutig sein. Darüber hinaus identifiziert in diesem Beispiel die Quellkennung 310 eindeutig den Anfordereragenten innerhalb einer PCIe-Hierarchie. Dementsprechend stellt das lokale Transaktionskennungsfeld 308 zusammen mit der Quell-ID 310 die globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 304 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 304 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die die Modifikation der Standardhandhabung von Transaktionen ermöglichen. In einer Ausführungsform enthält das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Ordnungsfeld 316 und ein "Keine-Abhörung-Feld 318. Hier kann das Prioritätsteilfeld 312 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 314 ist für zukünftige oder anbieterdefinierte Verwendung reserviert. Mögliche Verwendungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Ordnungsfeld 316 verwendet, um optionale Informationen, die den Typ der Ordnung vermitteln, der Standardordnungsregeln modifizieren kann, zu liefern. Gemäß einer Beispielimplementierung sagt ein Ordnungsattribut „0“ aus, dass Standardordnungsregeln gelten, wobei ein Ordnungsattribut „1“ eine gelockerte Ordnung bezeichnet, bei der Schreibvorgänge Schreibvorgänge in derselben Richtung überholen können und Lesefertigstellungen Schreibvorgänge in derselben Richtung überholen können. Das „Abhörungs“-Attributfeld 318 wird benutzt, um zu bestimmen, ob Transaktionen abgehört werden. Wie gezeigt identifiziert das Kanal-ID-Feld 306 einen Kanal, dem eine Transaktion zugeordnet ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 210, auch als Sicherungsschicht 210 bezeichnet, fungiert als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der Bitübertragungsschicht 220. In einer Ausführungsform ist eine Zuständigkeit der Sicherungsschicht 210 das Bereitstellen eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TPLs) zwischen zwei Komponenten über einen Link. Eine Seite der Sicherungsschicht 210 akzeptiert Transaktionsschichtpakete (TPLs), die durch die Transaktionsschicht 205 zusammengestellt sind, wendet die Paketsequenzkennung 211, d. h. eine Identifikationsnummer oder Paketnummer, an, berechnet und wendet einen Fehlerdetektionscode, d. h. CRC 212, an und schickt die modifizierten TPLs zu der Bitübertragungsschicht 220 zur Übertragung über ein physisches Medium zu einer externen Vorrichtung.
  • Bitübertragungsschicht
  • In einer Ausführungsform umfasst die Bitübertragungsschicht 220 den logischen Teilblock 221 und den elektrischen Teilblock 222, um ein Paket physisch zu einer externen Vorrichtung zu übertragen. Hier ist der logische Teilblock 221 zuständig für die „digitale“ Funktion der Bitübertragungsschicht 221. In dieser Hinsicht kann der logische Teilblock einen Sendeabschnitt, um ausgehende Informationen zum Übertragen durch den physischen Teilblock 222 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie an die Verbindungsschicht 210 weitergeleitet werden, umfassen.
  • Der physische Block 222 umfasst einen Sender und einen Empfänger. Der Sender wird durch den logischen Teilblock 221 mit Symbolen versorgt, die der Sender serialisiert und weiter zu einer externen Vorrichtung sendet. Der Empfänger wird mit serialisierten Symbolen von einer externen Vorrichtung versorgt und setzt die empfangenen Symbole in einen Bitstrom um. Der Bitstrom wird deserialisiert und dem logischen Teilblock 221 zugeführt. In einer Ausführungsform wird ein 8b/10b-Sendecode einsetzt, bei dem Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 zu rahmen. Zusätzlich liefert der Empfänger in einem Beispiel außerdem einen Symboltakt, der aus dem eingehenden seriellen Datenstrom wiederhergestellt wird.
  • Wie vorstehend dargelegt ist ein geschichteter Protokoll-Stapel, obwohl Transaktionsschicht 205, Verbindungsschicht 210 und Bitübertragungsschicht 220 unter Bezugnahme auf eine spezifische Ausführungsform eines Protokollstapels (wie z. B. eines PCIe-Protokollstapels) erörtert sind, nicht derartig eingeschränkt. Tatsächlich kann jedes beliebige geschichtete Protokoll enthalten/implementiert sein. Als ein Beispiel kann ein/e Port/Schnittstelle, der/die als ein geschichtetes Protokoll repräsentiert ist, umfassen: (1) eine erste Schicht, um Pakete zusammenzustellen, d. h. eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequenzieren, d. h. eine Verbindungsschicht; und eine dritte Schicht, um die Pakete zu senden, d. h. eine Bitübertragungsschicht. Als spezifisches Beispiel wird ein geschichtetes Protokoll mit gemeinsamer Standardschnittstelle (CSI-Protokoll) genutzt.
  • Unter Bezugnahme auf 4 ist eine Ausführungsform einer seriellen Punkt-zu-Punkt-Fabric dargestellt. Obwohl eine Ausführungsform eines seriellen Punkt-zu-Punkt-PCIe-Links dargestellt ist, ist eine serielle Punkt-zu-Punkt-Link nicht darauf beschränkt und umfasst einen beliebigen Sendepfad zum Senden serieller Daten. In der gezeigten Ausführungsform umfasst ein grundlegender PCIe-Link zwei differentiell getriebene Niederspannungs-Signalpaare: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Dementsprechend umfasst die Vorrichtung 405 Sendelogik 406, um Daten zu der Vorrichtung 410 zu senden, und Empfangslogik 407, um Daten aus der Vorrichtung 410 zu empfangen. Mit anderen Worten sind zwei Sendepfade, d. h. die Pfade 416 und 417, und zwei Empfangspfade, d. h. die Pfade 418 und 419, in einem PCIe-Link enthalten.
  • Ein Sendepfad bezieht sich auf irgendeinen Pfad zum Senden von Daten, z. B. eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie z. B. Vorrichtung 405 und Vorrichtung 410, wird als eine Link bezeichnet, wie z. B. Link 415. Ein Link kann eine Spur unterstützen - wobei jede Spur eine Gruppe von differentiellen Signalpaaren (ein Paar zum Senden, ein Paar zum Empfangen) repräsentiert. Um die Bandbreite zu skalieren, kann eine Link mehrere Spuren aggregieren, die durch xN bezeichnet sind, wobei N irgendeine unterstützte Link-Breite ist, wie z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter
  • Ein differentielles Paar kann sich auf zwei Sendepfade beziehen, wie z. B. die Leitungen 416 und 417 zum Senden von differentiellen Signalen. Wenn die Leitung 416 als ein Beispiel von einem niedrigen Spannungspegel zu einem hohen Spannungspegel schaltet, d. h. eine ansteigende Flanke, fährt die Leitung 417 von einem hohen Logikpegel zu einem niedrigen Logikpegel, d. h. eine abfallende Flanke. Differentielle Signale demonstrieren potentiell bessere elektrische Eigenschaften wie z. B. bessere Signalintegrität, d. h. Kreuzkopplung, Spannungs-Überschwingen/Unterschwingen, Nachschwingen usw. Das ermöglicht ein besseres Zeitvorgabenfenster, was schnellere Sendefrequenzen erlaubt.
  • In einigen Implementierungen kann eine Hochleistungszwischenverbindung und das entsprechende Zwischenverbindungsprotokoll (z. B. wie etwa eine PCIebasierte Zwischenverbindung) nächster Generation bereitgestellt sein, die in der Lage ist, mit hohen Geschwindigkeiten wie etwa 25 GT/s und/oder 32 GT/s zu laufen. In einem Beispiel können zwei Geschwindigkeiten für die Hochleistungszwischenverbindung definiert sein: eine mit 25 GT/s und eine mit 32 GT/s, basierend auf den Eigenschaften, die für den Kanal festgelegt wurden (z. B. während des Linktrainings). Die Zwischenverbindung kann in einer Implementierung abwärtskompatibel mit bestehenden PCIe-Generationen und -Geschwindigkeiten sein, die für diese Generationen bereitgestellt werden (z. B. 8 GT/s, 16 GT/s usw.).
  • Gegenwärtige SoCs haben verschiedene baugruppeninterne und baugruppenexterne Links, die sensible Daten transportieren. Diese Links sind anfällig für physische Angriffe, bei denen ein Angreifer direkt auf den physischen Link zugreift, um entweder passiv den Kommunikationskanal abzuhören oder den Datenverkehr aktiv abzufangen, um Man-in-the-Middle-Angriffe (MITM) zu implementieren. Während das Risiko physischer Angriffe auf baugruppeninterne und baugruppenexterne Links im Allgemeinen gering war, ändert sich die Sicherheitsbedrohungssituation aufgrund des Vorhandenseins ausgefeilter Gegner, der Leichtigkeit physischer Angriffe, der geringen Kosten für den Start eines physischen Angriffs und der zunehmenden Verwendung von Beschleunigern (z. B. SmartNICs, künstlicher Intelligenz oder Grafikprozessoren usw.), die über baugruppenexterne Links verbunden sind. Zudem bietet die zunehmende Verwendung von Retimer- und Redriver-Vorrichtungen eine spezielle Möglichkeit für MITM-Angriffe. Darüber hinaus hat die Unterstützung der Industrie für die Entwicklung von PCIe-Hardware zu einer weiten Verfügbarkeit von Hardwarewerkzeugen wie PCIe-Interposern geführt, die auch physische Angriffe erleichtern. Wenn die Lieferkette für solche Vorrichtungen infiltriert ist, können Vorrichtungshersteller unabsichtlich „Spionagevorrichtungen“ einbinden, die beispielsweise den Link-Verkehr abhören und dann den Verkehr für die Außenwelt freilegen könnten, z. B. über eine Funkverbindung.
  • In verschiedenen Ausführungsformen der vorliegenden Offenbarung werden kryptografische Mechanismen verwendet, um den durch PCIe-Links fließenden Verkehr gegen Vertraulichkeits-, Integritäts- und Wiederholungsangriffe zu schützen. Obwohl es bestimmte Merkmale des PCIe-Protokolls wie beispielsweise die PCIe-Ordnungsregeln die Verwendung von Standard-Kryptografieprotokollen besonders schwierig machen, überwinden verschiedene Ausführungsformen diese Hindernisse und bieten Lösungen für den Einsatz von Schutzmaßnahmen gegen physische Angriffen auf einen Link zwischen Vorrichtungen.
  • In einer Ausführungsform wird zum Schützen des durch PCIe-Links fließenden Verkehrs gegen Vertraulichkeits- und Integritätsangriffe ein authentifiziertes Verschlüsselungsschema, das auf dem im Galois/Counter-Modus arbeitenden, fortgeschrittenen Verschlüsselungsstandard (AES-GCM) mit 256-Bit-Schlüsseln zum Verschlüsseln/Entschlüsseln von Daten auf dem Link basiert, verwendet. In anderen Ausführungsformen können Endpunkte (z. B. PCIe-Endpunkte oder andere Rechenvorrichtungen) zusätzliche Schlüsselgrößen (z. B. AES-128) oder andere geeignete Kryptoalgorithmen (z. B. Stream-Chiffren, die zum Verschlüsseln von Kommunikationskanälen geeignet sind, einschließlich Block-Chiffren, die im Zählermodus arbeiten) unterstützen. Obwohl verschiedene Ausführungsformen hierin unter Bezugnahme auf AES-GCM erörtert werden, können solche Ausführungsformen unter Verwendung eines beliebigen geeigneten Kryptoalgorithmus implementiert werden. In solchen Fällen können die Endpunkte flexible und agile Kryptografiemechanismen einschließlich der Fähigkeit, die kryptografischen Fähigkeiten der Endpunkte aufzulisten, bereitstellen und können authentifizierte Mechanismen bereitstellen, um den Status des ausgewählten Kryptografiealgorithmus zu bestimmen.
  • AES-GCM ist ein anerkannter Industriestandard-Kryptografiealgorithmus zum Schutz der Integrität und Vertraulichkeit der Kommunikation zwischen zwei Agenten, die über eine Kommunikations-Fabric verbunden sind. AES-GCM (oder andere Kryptoalgorithmen) stützt sich auf Initialisierungsvektoren (manchmal als Nonces bezeichnet) für jede Übertragung. Initialisierungsvektoren sind eine Eingabe in den Kryptografiealgorithmus, die nicht geheim sein muss, aber für den mit demselben Schlüssel verschlüsselten Verkehr nicht wiederholt werden darf. Initialisierungsvektoren können von dem Absender erzeugt und mit einem Paket übertragen werden oder können in einer vereinbarten Abfolge von dem Absender und von dem Empfänger erzeugt werden. Initialisierungsvektoren können hier auch als Zählerwerte bezeichnet werden.
  • 16 zeigt einen beispielhaften Ablauf in AES-GCM zum Verwenden der Initialisierungsvektoren zum Erzeugen von verschlüsseltem Chiffretext und eines Authentifizierungs-Etiketts, das in einigen Ausführungsformen als Integritätsprüfwert (ICV) für ein oder mehrere verschlüsselte Pakete (z. B. TLPs) verwendet werden kann. Obwohl hier ein Ablauf für AES-GCM dargestellt und erörtert ist, sehen verschiedene Ausführungsformen der vorliegenden Offenbarung die Verwendung eines geeigneten authentifizierten Verschlüsselungsmechanismus vor.
  • In der dargestellten Ausführungsform wird ein Zählerwert verschlüsselt (basierend auf einem geteilten kryptografischen Schlüssel K) und dann mit Klartextdaten (z. B. der Gesamtheit oder einem Teil eines PCIe-Pakets) XOR-verknüpft, um verschlüsselte Daten zu erzeugen. Das Auth-Etikett wird unter Verwendung einer Reihe von Multiplikationsoperationen unter Verwendung unverschlüsselter zusätzlicher Authentifizierungsdaten (AAD), z. B. Auth-Daten 1, und verschlüsselter Daten (z. B. Chiffretext 1, Chiffretext 2 usw.) als Eingaben erzeugt. Beispielsweise kann eine GHASH-Funktion einen Unterschlüssel „H“ (128h0 verschlüsselt mit einem Verschlüsselungsschlüssel) mit einem Block von AAD (z. B. Auth-Daten 1) oder verschlüsselten Daten (z. B. Chiffretext 120) multiplizieren, um ein GHASH-Ergebnis zu erzeugen. In der nächsten Iteration kann das aktuelle GHASH-Ergebnis zusammen mit einem anderen Block von AAD und/oder verschlüsselten Daten als Eingabe geliefert werden, um ein neues GHASH-Ergebnis zu erzeugen. Bei jeder Iteration wird das kumulative GHASH-Ergebnis mit AAD und/oder verschlüsselten Daten als Eingabe geliefert, um ein neues GHASH-Ergebnis zu erzeugen. Das endgültige GHASH-Ergebnis bildet die Grundlage für eine Authentifizierungssignatur für die AAD und verschlüsselten Daten.
  • In bestimmten Ausführungsformen kann dann, wenn keine Kopfinformationen für die anfängliche Empfängerverarbeitung oder für das Switch-Routing sichtbar sein müssen, der gesamte Kopf eines Pakets (z. B. eines PCIe-Pakets) zusammen mit den Paketnutzdaten verschlüsselt werden und somit würden keine AAD in dem AES-GCM-Algorithmus verwendet werden (das gesamte Paket würde verschlüsselt). In anderen Ausführungsformen kann ein Empfänger selbst dann, wenn kein Routing durchgeführt wird, während der Verarbeitung in den ersten Teil des Paketkopfs hineinschauen und somit kann dieser erste Teil des Kopfs (z. B. das erste DW oder 4 Bytes des Kopfs) aus AAD bestehen, während der Rest des Kopfs und die Paketnutzdaten verschlüsselt wären. In wieder anderen Ausführungsformen kann dann, wenn die Adresse sichtbar sein soll, z. B. für das Switch-Routing, der gesamte Kopf aus AAD bestehen und die Paketnutzdaten werden verschlüsselt sein.
  • In einer Ausführungsform kann ein Wiedereinspielungsangriffsschutz implementiert werden, indem monoton zunehmende Initialisierungsvektoren verwendet werden und verifiziert wird, dass jedes Paket einen höheren Initialisierungsvektor als das vorherige Paket hat. In einer weiteren Ausführungsform sind die Zähler implizit geordnet und die Reihenfolge wird von dem Sender und von dem Empfänger verstanden. In beiden Fällen detektiert AES-GCM bei Umordnung des Verkehrs innerhalb der Kommunikations-Fabric die Umordnung als Angriff und verwirft das Paket. Um den Schutz mittels AES-GCM zu implementieren, sollte die Kommunikations-Fabric in der Lage sein, verworfene Pakete zu handhaben, und sollte die Reihenfolge der von der Quelle an das Ziel gesendeten Nachrichten nicht zu ändern. Das Standard-PCIe-Protokoll (wie es z. B. in der PCI-Express®-Grund Spezifikation in Revision 4.0 definiert ist) erfüllt jedoch keine dieser Bedingungen. In verschiedenen Ausführungsformen kann dieses Hindernis überwunden werden, indem die Nachrichtenreihenfolge beibehalten wird, wenn AES-GCM zwischen über einen PCIe-Link direkt verbundenen Komponenten verwendet wird. In anderen Ausführungsformen können zusätzliche Mechanismen in PCIe eingeführt werden, um die Reihenfolge in einer PCIe-Fabric mit PCIe-Switches aufrechtzuerhalten (obwohl sich PCIe-Switches im Allgemeinen in der Vertrauensgrenze zum Schützen der Kommunikation der beiden Fabric-Agenten befinden sollten, wodurch die Vertrauensgrenze erweitert und die Attestierung der Plattform gegenüber den Parteien, die Vertrauen dazu herstellen möchten, verkompliziert wird).
  • Obwohl sich verschiedene hierin offenbarte Ausführungsformen hauptsächlich auf PCIe konzentrieren, können die beschriebenen Techniken auf alle ähnlichen Link-Technologien angewendet werden. Die hier beschriebenen Techniken können beispielsweise auf Link-Technologien angewendet werden, die nicht in der Lage sind, verworfene Pakete zu handhaben und/oder die die Reihenfolge der von einer Quelle an ein Ziel gesendeten Nachrichten ändern. Eine nicht einschränkende Liste von Kommunikationsprotokollen, auf die die hier beschriebenen Techniken angewendet werden können, umfasst cachekohärente Zwischenverbindung für Beschleuniger (CCIX), offene kohärente Beschleuniger-Prozessor-Schnittstelle (OpenCAPI™) , GenZ™, SuperSpeed USB, USB4 und Compute-Express-Link (CXL).
  • Sobald ein physisch geschützter Link eingerichtet ist (wobei sich ein physisch geschützter Link auf einen Link zwischen Endpunkten beziehen kann, die mindestens einen kryptografischen Schlüssel zum Schutz von Nachrichten über den Link vereinbart haben), kann ein kryptografisches Protokoll (z. B. AES-GCM) zum Schutz von Nachrichten verwendet werden, die zwischen Endpunkten über den Link gesendet werden. Diese Offenbarung beschreibt sowohl Punkt-zu-Punkt-Links (P2P-Links) als auch Ende-zu-Ende-Links (E2E-Links), um AES GCM (oder einen anderen Kryptoalgorithmus) auf einer PCIe-Zwischenverbindungs-Fabric (oder einer anderen Zwischenverbindungs-Fabric) bereitzustellen. Ein P2P-Link umfasst einen einzelnen direkten Kommunikationspfad zwischen einem vorgeschalteten Port und einem nachgeschalteten Port, während ein E2E-Link eine beliebige Topologie (z. B. über einen oder mehrere PCIe-Switches und/oder einen Wurzel-Komplex) zwischen zwei beliebigen Agenten umfassen kann.
  • 5 zeigt P2P-Links 506A-C gemäß bestimmten Ausführungsformen. In 5 hat eine Vorrichtung 502A einen Link mit einem Switch 504, der durch einen oder mehrere kryptografische Schlüssel 508A geschützt sein kann. Der Switch 504 hat einen Link mit der Vorrichtung 502B, der durch einen oder mehrere kryptografische Schlüssel 508B geschützt sein kann, und einen Link mit der Vorrichtung 502C, der durch einen oder mehrere kryptografische Schlüssel 508C geschützt sein kann.
  • 6 zeigt E2E-Links 610A-B gemäß bestimmten Ausführungsformen. In dieser Ausführungsform wird ein Link 610A von Vorrichtung 602A zu 602B (der den Switch 604 durchläuft) durch einen oder mehrere kryptografische Schlüssel 608A geschützt, während ein Link 610B von Vorrichtung 602A zu 602C (der auch den Switch 604 durchläuft) durch einen oder mehrere kryptografische Schlüssel 608B geschützt wird. In diesem Beispiel kann der Switch 604 anders als in dem Beispiel von 5 in dem Kommunikationsschema ohne Kenntnis der von den Endpunkten verwendeten kryptografischen Schlüssel richtig arbeiten.
  • Obwohl hier bestimmte Implementierungen in Bezug auf eine bestimmte Link-Topologie (z. B. P2P oder E2E) erörtert sein können, können in verschiedenen Ausführungsformen die hier offenbarten Implementierungen mit einer beliebigen geeigneten Link-Topologie verwendet werden.
  • Wenn ein physischer Schutz über einen Link gewünscht wird, kann von den Endpunkten ein Schlüsselaustausch über den Link durchgeführt werden. In einer Ausführungsform wird der Schlüsselaustausch über logische PCIe-Schutzverwaltungsentitäten durchgeführt. In einigen Ausführungsformen kann dies die Verwendung eines bandinternen Registersatzmechanismus (z. B. eines Postfachmechanismus) für Authentifizierungs- und Messprozeduren beinhalten. In einigen Ausführungsformen kann vor dem Durchführen des Schlüsselaustauschs eine Authentifizierung sowohl von unveränderlichen Merkmalen (z. B. Hardware-Attributen) der Endpunktvorrichtungen als auch von veränderlichen Merkmalen (z. B. Software- oder Firmware-Attributen) durchgeführt werden. Während dieses Initialisierungsvorgangs kann zudem die Unterstützung für die Verschlüsselung an sowohl dem vorgeschalteten als auch dem nachgeschalteten Port erkannt werden. In einer Ausführungsform wird der Schlüsselaustausch als Teil des Authentifizierungsablaufs durchgeführt. In einer weiteren Ausführungsform wird der Schlüsselaustausch als separater Ablauf durchgeführt. Alternativ kann ein bandinterner Nachrichtenmechanismus verwendet werden, vorausgesetzt, es gibt eine Möglichkeit, die Korrespondenz zwischen dem spezifischen Link und der bandexternen Verbindung sicher herzustellen. Der Schlüsselaustausch kann auch mit hardwaregesteuerten Mitteln erfolgen, beispielsweise unter Verwendung von PCIe-Nachrichten (z. B. Tunnelungsnachrichten des Verwaltungskomponenten-Transportprotokolls (MCTP) oder Nachrichten mit neuen Formaten, die speziell für diesen Zweck entwickelt wurden). In diesem Fall kann der Schlüsselaustausch durch die unten diskutierten Einrichtungs-/Verwaltungsmechanismen, die in verschiedenen Ausführungsformen teilweise oder vollständig unabhängig von auf den Endpunkten ausgeführter Software arbeiten können, ausgelöst und verwaltet werden. In verschiedenen Ausführungsformen kann der Schlüsselaustausch auf eine beliebige geeignete implementierungsspezifische Weise durchgeführt werden. In einer bestimmten Ausführungsform kann der Schlüsselaustausch dazu führen, dass ein gemeinsames Geheimnis zwischen den Endpunkten eingerichtet wird, das zum Erstellen einer Schlüsselkette verwendet wird, die mehrere abgeleitete Schlüssel umfasst.
  • Die Einrichtung eines physisch geschützten Links würde mit einem Auslöser beginnen, beispielsweise über ein neues Steuerbit („z. B. Linksverschlüsselung Ein“), das dem nachgeschalteten Port hinzugefügt wird. Beispielsweise kann ein Bit zum Angeben dieses Auslösers in das Register Link-Steuerung 3 der sekundären PCI-Express-Struktur für erweiterte Fähigkeiten aufgenommen werden. In verschiedenen Ausführungsformen kann jedes der reservierten (RsvdP) Bits (wie beispielsweise Bit 2, wie in 7 - 69 gezeigt) des Registers Link-Steuerung 3 als das Steuerbit verwendet werden, um den Linkschutz auszulösen. In anderen Ausführungsformen kann eine beliebige geeignete Nachricht, die zwischen den Endpunkten weitergeleitet wird, die Konfiguration eines physisch geschützten Links auslösen.
  • Vor dem Auslösen der Einrichtung können optionale Parameter wie die Aktivierung und Konfiguration des Integritätsmechanismus zwischen Link-Partnern kommuniziert werden. Zum Beispiel kann die Größe des Integritätsprüfwerts (ICV) und, falls die ICVs nicht je TLP angewendet werden, die Häufigkeit bzw. das Fenster der ICV-Anwendung mitgeteilt werden. Die ICVs werden nachstehend ausführlicher beschrieben. Nach dem Auslösen sendet der nachgeschaltete Port eine „Initiiere sicheren Link“-Nachricht an den vorgeschalteten Port und der gesamte TLP-Link-Verkehr wird (z. B. durch Hardware) in beide Richtungen blockiert, bis der geschützte Link erstellt wurde. Wenn der Schlüsselaustausch zum Zeitpunkt des Auslösens noch nicht durchgeführt wurde, kann der Schlüsselaustausch zu diesem Zeitpunkt durchgeführt werden. In verschiedenen Ausführungsformen können die dem Schlüsselaustausch zugeordneten Informationen über einen nachrichtenbasierten Mechanismus übermittelt werden. 7 zeigt eine beispielhafte Nachricht 702, die verwendet werden kann, um Sicherheitsaustauschnutzdaten 704 während des Schlüsselaustauschs zu transportieren. Bei der dargestellten Nachricht handelt es sich um eine Nachrichtenanforderung mit Nutzdaten (MsgD) gemäß Definition in PCI-Express. In verschiedenen Ausführungsformen kann der Schlüsselaustausch ohne Software-Interaktion durchgeführt werden.
  • Da in Abhängigkeit von der Implementierung ein Laufzeitschlüsselaustausch erforderlich sein kann, ist es in verschiedenen Ausführungsformen wünschenswert, diesen nachrichtenbasierten Mechanismus zu unterstützen und denselben Mechanismus sowohl für den anfänglichen Schlüsselaustausch als auch für alle nachfolgenden Schlüsselaustausche zu verwenden. Sobald der erste Schlüsselaustausch abgeschlossen ist, sendet jeder Port eine Nachricht „Sicherer Link hergestellt“ an den anderen Port. Diese Nachricht kann selbst verschlüsselt sein (zusammen mit dem gesamten nachfolgenden Link-Verkehr). Der TLP-Verkehr kann dann entsperrt werden und der normale Betrieb des (jetzt geschützten) Links beginnt (oder wird fortgesetzt, wenn dieser Prozess ausgeführt wurde, um den Schutz wiederherzustellen). Die hierin beschriebenen Link-Schlüssel-Verwaltungsprotokolle können auch zur integritätsgeschützten Synchronisation von beliebigen Protokollparametern wie Zählern (z. B. Initialisierungsvektoren), anderen hierin identifizierten Betriebsparametern oder anderen geeigneten Protokollparametern verwendet werden.
  • Wenn ein Versuch, eine verschlüsselte Verbindung herzustellen, fehlschlägt (z. B. eine Detektion eines unerwarteten Verhaltens, das beim Handshake beobachtet wird), wird der Link in einen deaktivierten Zustand gezwungen, bis das Auslöserbit gelöscht wurde. In einer Ausführungsform wird durch das Löschen des Bits „Link-Verschlüsselung Ein“ das Bit „Link-Deaktivierung“ gesetzt, und die Verbindung muss im deaktivierten Zustand bleiben, bis das Bit „Link-Deaktivierung“ gelöscht wird, um Angriffe zu vermeiden, bei denen ein Gegner Link-Sicherheit abschaltet. Zusätzliche Fehlerstatusinformationen (z. B. Beschreiben eines Fehlers, der beim Einrichten der geschützten Verbindung aufgetreten ist) können bereitgestellt werden. In einem Beispiel können solche Fehlerstatusinformationen in demselben Mechanismus enthalten sein wie das Auslöserbit (z. B. das Register Link-Status 3).
  • Wie oben erwähnt besteht eine der Schwierigkeiten beim Einrichten der Transaktionsschichtverschlüsselung über PCIe darin, dass TLP-Verkehr einer Umordnung unterzogen wird und Stream-Chiffren, die zum Verschlüsseln von Kommunikationskanälen geeignet sind, nur für reihenfolgetreuen Verkehr funktionieren. In verschiedenen Ausführungsformen kann dieses Problem gelöst werden, indem Zähler separat auf verschiedene Typen von TLPs angewendet werden, und/oder Sequenznummern können hinzugefügt werden, damit TLPs in die ursprüngliche Sendereihenfolge zurückgeführt werden können. Solche Lösungen können jedoch relativ große Leistungseinbußen in Kauf nehmen, um die Anzahl umgeordneter TLPs zu begrenzen. Typischerweise können der Anforderer (z. B. der Endpunkt, der eine Operation anfordert) und der Durchführer (z. B. der Endpunkt, der die Anforderung ausführt) eine Ende-zu-Ende-Ablaufsteuerung implementieren, oder bei Annahme, dass die verbuchten Anforderungen in der Reihenfolge ablaufen, (z. B. durch Deaktivieren von lockerer Ordnung) kann der Ablaufsteuerungs-Handshake implizit basierend auf der Anzahl der ausstehenden nicht verbuchten Anforderungen erfolgen. Beispielsweise kann der Anforderer während der Einrichtung des verschlüsselten Links oder nach vorheriger Anordnung so konfiguriert sein, dass er weiß, dass der Durchführer beispielsweise bis zu 4 nicht verbuchte Anforderungen puffern kann. Der Anforderer würde dann eine Richtlinie implementieren, dass nicht mehr als 4 nicht verbuchte Anforderungen über den verschlüsselten Link ausstehen dürfen, um sicherzustellen, dass jede Menge an Umordnung verarbeitet werden kann. Beispielsweise können erteilte Anforderungen 1, 2, 3, 4 in der Reihenfolge 4, 3, 2, 1 empfangen und dann wieder in ihre ursprünglichen Reihenfolge gebracht werden. Diese und andere Lösungen werden im Folgenden näher erläutert.
  • Hierin werden verschiedene Lösungen in Betracht gezogen, um die von PCIe präsentierte Umordnungs-Herausforderung zu bewältigen. In einer Ausführungsform können die PCIe-Ordnungsregeln geändert werden. Zum Beispiel könnte jegliche Umordnung beseitigt werden. PCIe ist jedoch darauf angewiesen, die Reihenfolge zu ändern, um einen ordnungsgemäßen Betrieb und eine verbesserte Leistung zu gewährleisten. Die PCIe-Ordnungsregeln sind von grundlegender Bedeutung für die Unterstützung des PCIe-Verbraucher-Hersteller-Ordnungsmodells, die Verwaltung von Puffern und die Vermeidung von Blockaden. Dementsprechend kann eine solche Implementierung den Betrieb von PCIe grundlegend verändern.
  • In einer weiteren Ausführungsform werden die Ordnungsregeln von PCIe so modifiziert, dass verbuchte Anforderungen, nicht verbuchte Anforderungen und Abschlüsse als unabhängige Ströme behandelt werden und jeder Strom mit einem anderen kryptografischen Schlüssel und einer anderen Zählersequenz (z. B. Initialisierungsvektor) geschützt wird. Dieser Ansatz führt zu einem viel kleineren Satz von zu ändernden Ordnungsregeln, was zu einer viel geringeren Auswirkung auf den PCIe-Betrieb führt.
  • 8A zeigt ein vereinfachtes Diagramm der Standard-PCIe-Ordnungsregeln gemäß bestimmten Ausführungsformen und 8B zeigt ein vereinfachtes Diagramm der modifizierten PCIe-Ordnungsregeln, die die Verwendung kryptografischer Algorithmen zum Schutz von Nachrichten ermöglichen, wenn verbuchte Anforderungen, nicht verbuchte Anforderungen und Abschlüsse als unabhängige Ströme behandelt werden und jeder Strom mit einem anderen kryptografischen Schlüssel und einer anderen IV-Sequenz geschützt wird. 8A ist aus Abschnitt 4.0.2.4 der PCIe-Grundspezifikation wiedergegeben. 8A und 8B und die folgende Erläuterung beziehen sich auf verbuchte Anforderungen, Leseanforderungen, nicht verbuchte Anforderungen (NPR) und Abschlüsse. Im Allgemeinen handelt es sich bei nicht verbuchten Anforderungen um Anforderungen, für die der Anforderer einen Abschluss von der Vorrichtung erwartet, die die Anforderung vervollständigt. Verbuchte Anforderungen sind solche, bei denen der Anforderer keinen Abschluss erwartet und diesen auch nicht empfangen wird. Abschlüsse sind Antworten auf Anforderungen. In einer Ausführungsform, die mit der aktuellen Version von PCIe konsistent ist, ist eine verbuchte Anforderung eine Speicherschreibanforderung oder eine Nachrichtenanforderung; eine Leseanforderung ist eine Konfigurationsleseanforderung, eine E/A-Leseanforderung oder eine Speicherleseanforderung; eine NPR mit Daten ist eine Konfigurationsschreibanforderung, eine E/A-Schreibanforderung oder eine AtomicOp-Anforderung; und eine nicht verbuchte Anforderung ist eine Leseanforderung oder eine NPR mit Daten.
  • Eine vereinfachte Erläuterung der Regeln ist wie folgt (unter Bezugnahme auf die in 8A angegebenen Spalten und Zeilen):
  • A3, A4, D3, D4: Eine verbuchte Anforderung oder ein Abschluss muss nicht verbuchte Anforderungen überholen können, um Blockaden zu vermeiden.
  • A2, B2B, C2B, D2B: Eine verbuchte Anforderung oder eine NPR mit Daten oder ein Abschluss mit gesetztem Bit für gelockerte Reihenfolge kann eine verbuchte Anforderung überholen. Eine verbuchte Anforderung oder eine Leseanforderung oder eine NPR mit Daten oder ein Abschluss mit gesetztem ID-Ordnungsbit kann eine verbuchte Anforderung überholen, wenn die beiden Anforderer-IDs unterschiedlich sind. Ein E/A- oder Konfigurationsschreibabschluss können eine verbuchte Anforderung überholen.
  • A5a, D5a: Verbuchte Anforderungen können Abschlüsse überholen. Abschlüsse mit unterschiedlichen Transaktions-IDs können sich gegenseitig überholen.
  • B3, B4, C3, C4, B5, C5: Eine nicht verbuchte Anforderung kann eine nicht verbuchte Anforderung oder einen Abschluss überholen.
  • A5b: Innerhalb einer PCI-Express-zu-PCI/PCI-X-Brücke, deren PCI/PCI-X-Bussegment im herkömmlichen PCI-Modus betrieben wird, muss für Transaktionen, die sich in der PCI-Express-zu-PCI-Richtung bewegen, eine verbuchte Anforderung zur Vermeidung von Blockaden Abschlüsse überholen können.
  • 8B zeigt ein modifiziertes Kommunikationsordnungsschema, das eine verschlüsselte Link-Kommunikation gemäß bestimmten Ausführungsformen ermöglicht. In dem modifizierten Ordnungsschema, das in 8B dargestellt ist, kann eine verbuchte Anforderung oder ein Abschluss nicht verbuchte Anforderungen überholen, um Blockaden zu vermeiden. In diesem Schema ist jedoch kein weiteres Überholen zulässig.
  • Der Einsatz von AES-GCM auf diese Weise (z. B. durch Modifizieren der Ordnungsregeln und Behandeln von verbuchten Anforderungen, nicht verbuchten Anforderungen und Abschlüssen als unabhängige Datenströme und Schützen jedes Datenstroms mit einem anderen kryptografischen Schlüssel und einer anderen Zählersequenz) kann eine Gelegenheit für neue Angriffe schaffen, die selektiv in den Verkehr in einem der drei Ströme eingreifen. Um solchen Angriffen zu begegnen, können in verschiedenen Ausführungsformen zusätzliche Linderungsmechanismen eingesetzt werden. Beispielsweise kann beim Absender ein Zähler geführt werden, der die Anzahl der verbuchten Anforderungen und Abschlussanforderungen zählt. In ähnlicher Weise kann ein Zähler bei dem Empfänger geführt werden, der die Anzahl der verbuchten Anforderungen und Abschlussanforderungen zählt, die empfangen worden sind. Jede nicht verbuchte Anforderung kann dann eine Kopie des aktuellen Zählerwerts an dem Absender führen. Der Empfänger vergleicht den in der nicht verbuchten Anforderung enthaltenen Zählerwert mit dem Wert seines lokalen Zählers, um sicherzustellen, dass der empfangene Zählerwert nicht höher als sein lokaler Wert ist, wodurch bestätigt wird, dass die Zwischenverbindung alle vor der nicht verbuchten Anforderung gesendeten verbuchten Anforderungen und Abschlussanforderungen ordnungsgemäß weitergeleitet hat.
  • 9 zeigt eine Nachricht zum Tunneln eines oder mehrerer TLPs gemäß bestimmten Ausführungsformen. Um die zusätzliche Komplexität bei Implementierungen, die die Umordnung behandeln, zu vermeiden, kann in einigen Ausführungsformen AES-GCM auf einem E2E-Link eingesetzt werden, indem ein Tunnelungsprotokoll verwendet wird, das PCIe-Verkehr über PCIe unter Verwendung von PCIe-Nachrichten (z. B. verbuchten Anforderungen) tunnelt, deren Ordnung zwischen der Quelle und dem Ziel garantiert ist. In einer solchen Implementierung wird das Bit zur gelockerten Ordnung (RO-Bit) in solchen Nachrichten nicht gesetzt, um eine Umordnung der Nachrichten durch eine Zwischenentität in dem Link zu vermeiden.
  • In solchen Ausführungsformen kann weiterhin eine ID-basierte Ordnung (IDO) verwendet werden, da die Ordnung für ein bestimmtes Anforderer/Durchführer-Paar aufrechterhalten wird. Um ein solches Tunneln zu unterstützen, können zusätzlich neue Mechanismen für das Puffermanagement und die Vermeidung von Blockaden zwischen den Tunnelendpunkten eingeführt werden. Diese Unterstützung kann jedoch auf die Eingangs- und Ausgangspunkte in der PCIe-Fabric beschränkt sein, wodurch die Gesamtauswirkung der Änderung verringert wird. Dementsprechend kann die Einführung des Tunnelns so implementiert werden, dass vorhandene PCIe-Switches (und einige Wurzelkomplex-Implementierungen) nicht modifiziert werden müssen, um das Tunneln zu unterstützen (z. B. lassen sie nur den getunnelten Verkehr durch). Zusätzliche Vorteile des Tunnelungs-Ansatzes umfassen beispielsweise die Ermöglichung von Dienstgüte- und anderen Richtlinienmechanismen auf Plattformebene.
  • In verschiedenen Ausführungsformen können „virtuelle Links“ eingerichtet werden, wobei Konzepte ähnlich zu jenen, die gegenwärtig auf der Linkebene zur Ablaufsteuerung und -reihenfolge angewendet werden, über eine Verbindung über eine beliebige PCIe-Topologie, die zwei Entitäten verbindet, angewendet werden können. Beispielsweise kann eine Verbindung zwischen zwei PCIe-Elementen, RID1 und RID2, hergestellt werden, so dass der gesamte Verkehr zwischen den beiden Elementen wie oben erläutert in PCIe-Nachrichten (z. B. einer Nachrichtenanforderung mit Nutzdaten (MsgD)) eingekapselt wird, die von ID zwischen den beiden Elementen geleitet wird, was reihenfolgetreuen Ende-zu-Ende-Verkehrsfluss bereitstellt (z. B. in der obigen Ordnungstabelle, siehe Eintrag A2a, in dem beschrieben wird, dass verbuchte Anforderungen einander nicht überholen dürfen).
  • In einer Ausführungsform kann das Format solcher Nachrichten die in 9 gezeigte Form annehmen. In der gezeigten Ausführungsform können ein oder mehrere TLPs 906 (die z. B. verbuchte Anforderungen, NPRs und Abschlüsse umfassen können) wie dargestellt in dem Nutzdatenfeld 904 einer MsgD 902 enthalten sein. In verschiedenen Ausführungsformen ist nur der Transaktionsschichtinhalt (TLP-Inhalt) in den Nutzdaten enthalten und die Sequenznummer und LCRC sind in diesen Nutzdaten weggelassen.
  • 10 zeigt eine Nachricht 1002 zum Tunneln eines Sicherungsschichtpakets (DLLP) 1006 gemäß bestimmten Ausführungsformen. In verschiedenen Ausführungsformen kann der DLLP-Verkehr auf eine Art und Weise virtualisiert werden (z. B. durch Tunneln), die der Art und Weise ähnlich ist, in der der TLP-Verkehr virtualisiert wird. Als ein Beispiel kann ein DLLP-Paket 1006 getunnelt werden, indem eine andere Nachricht (z. B. MsgD) in das Nutzdatenfeld 1004 aufgenommen wird. Ebenso können die Ablaufsteuerung und andere Link-Verwaltungsfunktionen innerhalb einer anderen Nachricht, die keiner Umordnung unterliegt, wie z. B. MsgD über den Link getunnelt werden.
  • Anstatt Routing-nach-ID-Nachrichten für den Tunnelungsmechanismus zu verwenden, können andere Ausführungsformen Nachrichten, die auf andere Weise geroutet werden, oder Speicherschreib-TLPs, bei denen die Nutzdaten solcher Nachrichten der getunnelte TLP/DLLP-Inhalt ist, verwenden. In anderen Ausführungsformen können andere Tunnelungsprotokolle, z. B. Thunderbolt, zum Tunneln des TLP/DLLP-Inhalts verwendet werden.
  • In Ausführungsformen, in denen der virtuelle Link einen Mechanismus wie den nachfolgend beschriebenen, der LCRC durch ICV ersetzt, verwendet, können die Link-Wiederholungsmechanismen (z. B. Neuübertragungsanforderungen, wenn Fehler auftreten) auf den virtuellen Link angewendet werden. Es sind jedoch nicht alle Linkoperationen für virtuelle Links erforderlich, und um eine Verschwendung von Bandbreite zu vermeiden, werden in verschiedenen Ausführungsformen nur die erforderlichen Elemente verwendet. Für Software, die auf den Endpunktvorrichtungen ausgeführt wird, kann der virtuelle Link wie ein einzelner PCIe-Link (z. B. ein P2P-Link) aussehen.
  • Die Zuordnung dieses Tunnels zu bestimmten Agenten kann unter Verwendung des Konzepts von „virtuellen Ports“ geschehen, wobei ein Wurzelkomplex oder eine Endpunktvorrichtung eine bestimmte Anforderer-/Durchführer-ID einem virtuellen Port zuordnen kann. Für eine Endpunktvorrichtung kann dies mithilfe der vorhandenen Einzelwurzel-EA-Virtualisierungs-Mechanismen (SR-IOV-Mechanismen) erfolgen. In trivialer Erweiterung können dieselben Ideen zum Einrichten virtueller Wurzel-Ports verwendet werden. Zum Herstellen der sicheren Verbindung zwischen zwei bestimmten Elementen kann eine bestimmte Art von „Verbindungsmanager“-Logik verwendet werden. Dies kann beispielsweise von einem Überwacher virtueller Maschinen (VMM) als ein Aspekt zum Erstellen einer Instanz einer virtuellen Maschine (VM-Instanz) ausgeführt werden. Wenn zwei virtuelle Endpunkt-Funktionen (VFs) Peer zu Peer verbunden sind, sollte eine als virtueller nachgeschalteter Port festgelegt werden (da ein Endpunkt-Port normalerweise ein vorgeschalteter Port ist). Sobald die Zuordnung hergestellt wurde, kann die sichere Verbindung unter Verwendung der oben für geschützte Links beschriebenen Mechanismen hergestellt und verwaltet werden.
  • Wie bereits in Bezug auf SR-IOV festgestellt und verstanden wurde, müssen nicht alle PCIe-Mechanismen, die nur für physische Links gelten, für virtuelle Links implementiert werden und können in verschiedenen Ausführungsformen weggelassen werden. Virtuelle Ports sind nicht nur auf die Arbeit innerhalb des vorhandenen SR-IOV-Rahmens beschränkt, sondern können auch mithilfe anderer und/oder erweiterter Mechanismen implementiert werden, einschließlich derer, die zusätzlich zu der Anforderer-ID (oder anstelle der Anforderer-ID (RID)) die Prozessadressraum-ID (PASID) als Grundeinheit der Zuordnung anwenden. In diesen Fällen können die E2E-Tunnelungs-Nachrichten jedoch weiterhin nach ID geroutet werden.
  • Wie oben beschrieben kann eine Integritätsprüfung auf einem geschützten Link implementiert werden, um die Gewissheit zu geben, dass die übertragenen Daten mit den empfangenen Daten identisch sind. Unabhängig davon, ob die Integritätsprüfung auf TLP-Ebene oder auf Ebene der Verbindungsschicht durchgeführt wird, kann es aus Effizienzgründen wünschenswert sein, dass die Integritätsprüfung mehr als ein TLP abdeckt. Dies führt jedoch zu praktischen Problemen bei der Handhabung von Integritätsprüfungsfehlern. Der einfachste Ansatz ist es, alle empfangenen TLPs zu puffern und erst dann zur weiteren Verarbeitung freizugeben, wenn die Integritätsprüfung bestanden wurde. Dies kann jedoch zu einer erheblichen Pufferung und zusätzlicher Latenz führen. Eine Ausführungsform umfasst einen „Abschuss“-Mechanismus, bei dem die TLP-Verarbeitung nicht für eine Integritätsprüfung verschoben wird, jedoch dann, wenn die Integritätsprüfung fehlschlägt, es Vorwärts-„Umgehungs“-Mechanismen gibt, die so einfach sein können wie ein Signal, das spätere Pipeline-Stufen durchläuft und angibt, dass die Auswirkungen der TLPs, die die Integritätsprüfungen nicht bestanden haben, nicht festgeschrieben werden sollen (z. B. irreversibel gemacht werden sollen). Ein spezieller Fall, in dem dies leicht möglich ist, ist der, in dem synchronisierende TLPs, z. B. Merker-Schreibvorgänge, beispielsweise durch spezielle Kenntnisse beim Anforderer identifiziert werden können und die Integritätsprüfung so geplant wird, dass sie diesen synchronisierenden TLPs unmittelbar vorausgeht und folgt.
  • In einer bestimmten Ausführungsform kann die Verschlüsselungs-Hardware in einer Schnittstelle zwischen der PHY-Schicht und der Verbindungsschicht angeordnet sein. Beispielsweise kann eine solche Schnittstelle eine PIPE-Schnittstelle umfassen, wie sie unter https://www.intel.com/content/www/us/en/io/pci-express/phy-interface-pci-express-sata-usb31-architectures.html beschrieben ist. Zusätzlich dazu, dass dies eine bequeme Grenze zwischen IP-Blöcken ist, fließt der Verkehr an einer solchen Schnittstelle auch in der Reihenfolge, die für Strom-Chiffren erforderlich ist, die zum Verschlüsseln eines Kommunikationskanals geeignet sind. Ein zusätzlicher Vorteil besteht darin, dass viele Protokolle die PIPE-Schnittstelle verwenden und daher in verschiedenen Ausführungsformen dieselbe Verschlüsselungs-Hardware auf mehrere Schnittstellentypen (z. B. IAL, Flexbus, Ultra Path Interconnect (UPI) oder andere) angewendet werden kann, die über eine gemeinsame PHY betrieben werden.
  • Das Implementieren der Verschlüsselung und insbesondere der Integrität auf dieser Ebene stellt jedoch erhebliche Herausforderungen dar, da auf dieser Ebene in dem Verbindungsprotokoll keine garantierte Zustellung vorliegt, was es schwierig macht, sicherzustellen, dass die Tx/Rx-Zähler (z. B. Initialisierungsvektoren) synchron bleiben, wenn eine im Zählermodus arbeitende Blockchiffre als Stromchiffre verwendet wird, z. B. AES-GCM.
  • Das Zählersynchronisationsproblem ist jedoch dem Verschlüsselungsmechanismus, den PCIe bereits verwendet, sehr ähnlich (wie es z. B. in der PCIe-Grundspezifikation 4.2.1.3 beschrieben ist). Beim Verschlüsseln wird PCIe jedoch immer auf die gleichen Startwerte zurückgesetzt, während sich bei der Zählersynchronisierung für die Verschlüsselung der Zähler in der Regel in der Abfolge nach vorne bewegen sollte, so dass ein Zählerwert nicht für denselben Verschlüsselungsschlüssel wiederverwendet wird. Eine wichtige Beobachtung ist, dass es auf der PIPE-Ebene (oder einer anderen Schnittstelle zwischen der PHY und der Verbindungsschicht) eine ziemlich genaue Vorstellung von der Zeit gibt, die von beiden Komponenten auf dem Link geteilt wird, und dies kann verwendet werden, um eine Regel basierend auf Zeitfenstern zu erstellen, die sicherstellt, dass beide Komponenten ihre Zähler auf die gleichen Synchronisierungspunkte aktualisieren. Beide Komponenten können über Neusynchronisationsereignisse hinweg laufende Takte beibehalten, sodass die ungefähre Ausrichtung in der verstrichenen Echtzeit erhalten bleibt.
  • Ereignisse, die eine Neusynchronisation der Zähler auslösen können, sind geordnete Mengen mit Überspringen (die relativ kurz sind) und Link-Neutraining (die relativ lang ist). Wenn ein Neusynchronisationsauslöser auftritt, insbesondere im Fall eines Link-Neutrainings, ist es möglich, dass die beiden Komponenten den Beginn und das Ende des Ereignisses zu unterschiedlichen Zeiten beobachten. Um dies zu handhaben, kann ein Fenster eingerichtet werden, das der Detektion des Auslösers zugeordnet ist. Ein nachfolgender Neusynchronisations-Punkt, zu dem beide Komponenten ihre Zähler vorrücken, kann ebenfalls konfiguriert werden. Im Fall des Link-Neutrainings kann davon ausgegangen werden, dass ein Neutraining nicht weniger als eine gewisse Zeit in Anspruch nehmen kann, z. B. 1 µs (in verschiedenen Implementierungen kann sich dieser Wert mit der Zeit ändern und wäre abhängig von der Datenrate) .
  • Verschiedene Ausführungsformen können eine Logik umfassen, um sicherzustellen, dass kein Neutrainungsereignis schneller als dieses Fenster erfolgen kann und dass jede Komponente bei Bedarf einem Neutrainungsereignis eine Verzögerung hinzufügt, um sicherzustellen, dass nicht zwei oder mehr Neutrainings innerhalb eines einzelnen Fensters auftreten können. Solche Einschränkungen werden heute nicht von PCIe selbst garantiert, sondern können beispielsweise an der PIPE oder einer ähnlichen Grenze durchgesetzt werden, indem beispielsweise die Übertragung von Trainingssätzen selektiv blockiert wird, um sicherzustellen, dass der Neutrainingsprozess die erforderliche Zeit in Anspruch nimmt.
  • Beim Verlassen eines Neusynchronisationsereignisses rücken beide Komponenten ihre Zähler auf den nächsten „runden“ Synchronisationspunkt vor (in einigen Situationen können ein oder mehrere Werte in der Abfolge während der Synchronisation übersprungen werden) basierend auf dem Ereignistyp und der damit verbundenen erwarteten minimalen Ereignislänge. Beispielsweise löst Komponente 1 ein Neutraining bei ZeitX aus und Komponente 2 beobachtet das Neutraining ab ZeitX + Y. Beide Komponenten folgen dem Link-Neutrainingsprotokoll (wie es z. B. in der PCIe-Spezifikation definiert ist), mit der Modifikation, dass jede Komponente gewährleistet, dass Neutrainingsprotokollprozeduren mindestens die erwartete Mindestereignislänge (z. B. 1 µs im obigen Beispiel) benötigen. Nach Abschluss des Neutrainingsprotokolls setzen beide Komponenten ihre Zähler (die mehrere Zähler umfassen können, wenn separate Zähler für verschiedene Nachrichtentypen verwendet werden) auf den nächsten Synchronisationspunkt zurück, wie er z. B. durch den nächsten Wert definiert ist, der zu Zeit Z erreicht worden wäre, wobei der Wert auf jede geeignete Weise bestimmt werden kann, beispielsweise durch einen der folgenden Ansätze:
    1. (1) Wechseln zu dem nächsten vorbestimmten Verschlüsselungsschlüssel und setzen des Zählers zurück auf null. Für diesen Ansatz können mindestens zwei Schlüssel (der aktuelle Schlüssel und ein alternativer Schlüssel) verfügbar sein, um Laufzeitverzögerungen beim Einrichten eines neuen Schlüssels zu vermeiden. Alternativ kann die Schlüsselerzeugung ausreichend schnell sein, um eine Unterbrechung des laufenden Verkehrs zu vermeiden. In verschiedenen Ausführungsformen werden während der Initialisierung mehrere Schlüssel in einer Schlüsselkette erzeugt (wobei jeder Schlüssel durch seine eindeutige Schlüssel-ID identifiziert wird) und während der Synchronisierung kann der Wechsel zu derselben Schlüssel-ID erfolgen.
    2. (2) Festlegen des Konzepts von ungeraden und geraden Synchronisationspunkten, wobei die Bitposition X entweder 1 (ungerade) oder 0 (gerade) sein wird, und Vorrücken des Zählers, um Bits mit einer niedrigeren Wertigkeit als X auf Nullen zu setzen, und Angeben in den Nachrichten, die die geordneten Mengen mit Training/Überspringen übermitteln, ob der ungerade oder der gerade Sprung ausgeführt werden soll. X sollte so gewählt werden, dass das Zeitintervall, in dem das Bit X während des normalen Betriebs zum Umschalten veranlasst wird, viel länger (beispielsweise 4-10x) ist als die längste Zeit, die der Empfänger benötigt, um zu bestimmen, dass der Sender der anderen Komponente das Neutrainings-/Überspringen-Ereignis initiiert/darauf antwortet. Da geordnete Mengen mit Überspringen sofort erkannt werden, ist die Zeit sehr kurz. Für Neutrainingsereignisse wäre jedoch ein Sprung von 10 bis 100 Mikrosekunden angemessen, da das Detektionsfenster weniger genau ist.
  • Als eine Variation von (2) können die Zähler sowohl an dem Sender als auch an dem Empfänger weiterhin in einer „offenen Schleife“ arbeiten, wenn die Synchronisation verloren geht, was es ermöglichen würde, einen kleineren Sprung beim Wiederherstellen der Synchronisation zu machen, obwohl die Berechnung der maximalen Abweichung die Taktungsarchitektur einschließlich aller Neuzeitgeber auf dem Link berücksichtigen muss.
  • Alternativ oder ergänzend zu (2) oder (3) könnte der Empfänger dann, wenn der Grad an Fehlausrichtung eingegrenzt werden kann, z. B. auf eine von zwei Zählerwertwahlen, beide Zählerwerte auf die nach dem Synchronisierungsereignis empfangenen Anfangsdaten anwenden und dann bestimmen, welcher der richtige ist.
  • Senden des Zählers (mit der Einschränkung, dass der Zähler nur vorwärts gehen darf), beispielsweise durch Senden eines oder mehrerer (z. B. aus Redundanzgründen) Sicherungsschichtpakete (DLLPs) mit dem Zählerwert (oder einem Teil davon) vor der Wiederaufnahme der TLP-Übertragungen.
  • Wenn Verschlüsselungs-/Integritätsmerkmale aktiviert sind, kann der Betrieb bestimmter Energieverwaltungszustände modifiziert werden, um sicherzustellen, dass eine ordnungsgemäße Zählersynchronisation aufrechterhalten werden kann.
  • Ein Ansatz zur Integritätsprüfung, der besonders bei einer Verschlüsselung an der PIPE-Schnittstelle vielversprechend ist, besteht darin, den ICV regelmäßig auf dem Link hinzuzufügen, beispielsweise basierend auf einem festen Zeitplan oder unmittelbar im Anschluss an oder in jeder geordneten Menge mit Überspringen (z. B. durch Setzen von Bit 7 des Symbols 4N+2 und Verwenden einiger oder aller reservierten Bits oder durch Verwenden anderer Bits der geordneten Menge mit Überspringen), wodurch bereits ein regulärer Synchronisationspunkt zwischen den beiden Komponenten hergestellt wird.
  • In einigen Ausführungsformen kann die Verschlüsselungsschaltungsanordnung in der Sicherungsschicht implementiert sein und das Feld für zyklische Redundanzprüfung (CRC-Feld) einer Nachricht durch den Integritätsprüfwert (ICV) ersetzen. In verschiedenen Ausführungsformen wird der ICV-Wert durch einen geeigneten Prüfsummenalgorithmus berechnet, der nach Anwendung der Sequenznummernanwendung auf den TLP angewendet wird und alle Bits des TLP enthält. In verschiedenen Ausführungsformen ist der ICV-Wert ein Auth-Etikett von AES-GCM oder ein ähnliches Etikett, das teilweise auf der Basis eines zwischen Sender und Empfänger geteilten kryptografischen Schlüssels erstellt wird.
  • In PCIe kann ein als LCRC bezeichneter 32-Bit-CRC-Code in der Sicherungsschicht verwendet werden, um Fehler in TLPs zu detektierten und erneute Übertragungen zu veranlassen, während in der Transaktionsschicht ein als ECRC bezeichneter 32-Bit-CRC in dem TLP-Exzerpt-Feld am Ende eines TLP platziert sein kann. In verschiedenen Ausführungsformen kann eine Integritätsprüfsumme in einer Nachricht in dem Feld enthalten sein, das normalerweise für den ECRC oder den LCRC reserviert ist. Zum Beispiel zeigt 11 zeigt ein TLP 1100 mit einem LCRC-Feld 1104, das zum Führen des ICV verwendet werden kann. In Szenarien, in denen eine 32-Bit-Integritätsprüfsumme akzeptabel ist, führt dieser Ansatz zu keiner Erhöhung des Link-Mehraufwand-Verkehrs. Selbst dann, wenn eine größere (z. B. 64-Bit- oder 128-Bit-) Integritätsprüfsumme verwendet wird, hat dieser Ansatz immer noch den wesentlichen Vorteil, dass ein Verstoß in einem bestimmten TLP isoliert werden kann, wodurch die Prüfung erheblich vereinfacht wird, die Latenz verringert wird und mehr Flexibilität im Umgang mit Verstößen geboten wird. Vorausgesetzt, die Integritätsprüfung wird so gewählt, dass eine ausreichende Abdeckung gegen Bitfehler gewährleistet ist, tritt kein Verlust der Fehlerabdeckung auf und die Handhabung eines Integritätsprüfungsfehlers ist häufig gut auf die Fehlerhandhabung abgestimmt.
  • In der Sicherungsschicht kann das Ersetzen des LCRC durch den ICV mehrere Vorteile erzielen. Wenn ein 32b-ICV akzeptabel ist, muss keine zusätzliche Bandbreite verbraucht werden. Alternativ können längere ICVs, z. B. 64b, 96b oder 128b, implementiert werden, und obwohl dies eine Modifikation der TLP-Verarbeitungsschaltungen erfordern würde, können die Modifikationen auf die Sicherungsschicht beschränkt werden, wodurch vermieden wird, dass Datenpfade und Puffer der Transaktionsschicht modifiziert werden müssen (was ebenfalls Kosten verursachen würde).
  • Das gegenwärtige Verhalten, das LCRC-Überprüfungsfehlern zugeordnet ist, würde im Allgemeinen auch bei Integritätsprüfungsfehlern gut funktionieren. Da diese Mechanismen bereits existieren und es sehr wahrscheinlich sein soll, dass Bitfehler durch nachfolgende Neuübertragung korrigiert werden, ist die Erweiterung der LCRC-Mechanismen zur Durchführung von Integritätsprüfungen sowohl einfach als auch kostengünstig und auch äußerst robust, da nur echte Angriffsszenarien eine Eskalation zu Handhabern höherer Ebene bewirken, da Fehler vorübergehend sind und daher normalerweise durch die vorhandenen Wiederholungsmechanismen behoben werden, während ein Angriff, um erfolgreich zu sein, bis zum Erfolg wiederholt werden muss, um ein Muster eines scheinbar wiederkehrenden „Fehlers“ zu erzeugen, was anhand eines Filters von echten Fehlerfällen unterschieden werden könnte. Darüber hinaus führt ein wiederholtes Fehlschlagen der Integritätsprüfung nach einem eng eingegrenzten Wiederholungsversuch zu einer Neusynchronisierung oder Wiederherstellung des Schlüssels, was zum Schutz vor Angriffen beiträgt. In verschiedenen Ausführungsformen führt ein nicht korrigierbarer Integritätsprüfungsfehler zu einem Link-Neutraining und einer Neuverhandlung der Sitzungsschlüsselerstellung, um eine neue geschützte Link-Sitzung einzurichten. Darüber hinaus sind die Einrichtungs-/Abbau- und Verwaltungsmechanismen für P2P-Ansätze unkompliziert.
  • In einigen Ausführungsformen kann die Integritätsprüfsumme den ECRC anstelle des LCRC ersetzen, obwohl dies einige Nachteile hat. Die Wiederherstellungsmechanismen sind in PCIe nicht definiert, so dass die Handhabung nur dann konsistent ist, wenn neue Handhabungsmechanismen definiert werden. Dies macht das System jedoch weniger attraktiv, da neue Handhabungsmechanismen dazu führen, dass das System weniger wie die heutige ECRC-Handhabung funktioniert. Das Ersetzen des ECRC durch den ICV kann jedoch für E2E-Ansätze attraktiv sein.
  • 12 zeigt ein System 1200 zum Kommunizieren von verschlüsselten Daten über einen geschützten Link gemäß bestimmten Ausführungsformen. Der Endpunkt 1202 kann mit dem Endpunkt 1204 über einen Link 1206 kommunizieren. Jeder Endpunkt umfasst eine Sicherheitsmaschine 1212, eine Protokollsicherheitszustandsmaschine 1218, Konfigurationsregister 1220, eine Verschlüsselungsmaschine 1222 und eine Paketmaschine 1224. Der Endpunkt 1202 umfasst einen Link-Treiber 1214 und der Endpunkt 1204 umfasst Link-Firmware 1216. Der Endpunkt 1202 kann eine Host-Rechenvorrichtung sein, beispielsweise ein SoC oder eine andere Verarbeitungs vorrichtung.
  • Um einen Schutz für den Link 1206 einzurichten, können die Endpunkte 1202 und 1204 über ihre jeweiligen Sicherheitsmaschinen 1212 verschiedene Informationen 1208 wie beispielsweise Authentifizierungsdaten, kryptografische Schlüsselinformationen und andere Konfigurationsparameter austauschen. Sobald der Link geschützt wurde, können Pakete durch Paketmaschinen 1224 erzeugt werden, die durch Verschlüsselungsmaschinen 1222 verschlüsselt werden, um verschlüsselten Link-Verkehr 1210 zu erzeugen, der dann zwischen dem Endpunkt 1202 und dem Endpunkt 1204 übermittelt wird.
  • 13 veranschaulicht einen Ablauf zum Kommunizieren von verschlüsselten Daten über einen geschützten Link gemäß bestimmten Ausführungsformen. Der Ablauf von 13 kann durch die Rechenvorrichtungen 502, 602, den Endpunkt 1202, den Prozessor 1400 oder andere geeignete Rechenvorrichtungen ausgeführt werden.
  • 1302 umfasst ein Einrichten eines geschützten Links zwischen einer ersten Rechenvorrichtung und einer zweiten Rechenvorrichtung, wobei die Kommunikation über den geschützten Link ein Kommunikationsprotokoll einhalten soll, das es ermöglicht, dass Pakete während der Übermittlung umgeordnet werden. 1304 umfasst ein Erzeugen mehrerer Pakete gemäß einem Paketformat, das sicherstellt, dass die mehreren Pakete während der Übertragung über den geschützten Link nicht umgeordnet werden, wobei die mehreren Pakete ein erstes Paket und ein zweites Paket umfassen. 1306 umfasst ein Verschlüsseln der mehreren Pakete zur Übertragung über den geschützten Link, wobei das erste Paket basierend auf dem kryptografischen Schlüssel und einem ersten Wert eines Zählers verschlüsselt wird und das zweite Paket basierend auf dem kryptografischen Schlüssel und einem zweiten Wert des Zählers verschlüsselt wird.
  • Einige der in 13 dargestellten Blöcke können gegebenenfalls wiederholt, kombiniert, modifiziert oder entfernt werden und dem Ablaufdiagramm können auch zusätzliche Blöcke hinzugefügt werden. Zusätzlich können Blöcke in einer beliebigen geeigneten Reihenfolge ausgeführt werden, ohne vom Umfang bestimmter Ausführungsformen abzuweichen.
  • Obwohl einige der hier diskutierten Ausführungsformen unter Bezugnahme auf PCIe oder PCIebasierte Protokolle beschrieben wurden, sollte klar sein, dass ähnliche, entsprechende Verbesserungen an anderen Zwischenverbindungsprotokollen wie unter anderem OpenCAPI™, Gen-ZTM, UPI, USB, cachekohärente Zwischenverbindung für Beschleuniger (CCIX™), Advanced Micro Device™ (AMD™) Infinity™, gemeinsame Kommunikationsschnittstelle (CCI) oder Centriq™-Zwischenverbindung von Qualcomm™ vorgenommen werden können.
  • Es sei angemerkt, dass die oben beschriebenen Einrichtungen, Verfahren und Systeme wie oben erwähnt in jeder elektronischen Vorrichtung oder jedem elektronischen System implementiert werden können. Als spezielle Veranschaulichung stellen die folgenden Figuren beispielhafte Systeme zur Verwendung der hier beschriebenen Erfindung bereit. Da die folgenden Systeme genauer beschrieben werden, wird eine Reihe verschiedener Zwischenverbindungen offenbart, beschrieben und aus der obigen Diskussion übernommen. Und wie leicht ersichtlich ist, können die oben beschriebenen Fortschritte auf jede dieser Zwischenverbindungen, Fabrics oder Architekturen angewendet werden. Zum Beispiel können ein Host und eine Vorrichtung implementiert werden, die mit einer Funktionalität zum Implementieren eines Sicherheitsmechanismus ausgestattet sind, wie er in den obigen Beispielen diskutiert ist, und zwar in einer beliebigen einer Vielzahl von Rechenarchitekturen (z. B. unter Verwendung einer beliebigen einer Vielzahl von unterschiedlichen Zwischenverbindungen oder Fabrics). Beispielsweise kann ein Host eine Verbindung zu einer die Sicherheitsmechanismen unterstützenden Vorrichtung in einem persönlichen Rechensystem (z. B. implementiert in einem Laptop, Desktop, Mobiltelefon, Smartphone, einer Vorrichtung des Internets der Dinge (IoT), einem intelligenten Haushaltsgerät, einer Spielekonsole oder einer Medienkonsole etc.) herstellen. In einem weiteren Beispiel kann ein Host eine Verbindung zu einer die Sicherheitsmechanismen unterstützenden Vorrichtung in einem Server-Rechensystem (z. B. einer Rack-Server-, Blade-Server-, Tower-Server-, Rack-Scale-Server-Architektur oder einer anderen dezentralen Server-Architektur) herstellen.
  • Unter Bezugnahme auf 14 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor dargestellt. Der Prozessor 1400 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor, einen Handprozessor, einen Anwendungsprozessor, einen Coprozessor, ein Ein-Chip-System (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 1400 umfasst in einer Ausführungsform mindestens zwei Kerne - Kern 1401 und 1402, die asymmetrische Kerne oder symmetrische Kerne (in der dargestellten Ausführungsform) umfassen können. Der Prozessor 1400 kann jedoch eine beliebige Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Softwarestrangs. Beispiele für Hardware-Verarbeitungselemente umfassen: eine Strangeinheit, einen Strangschlitz, einen Strang, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarestrang, einen Kern und/oder ein beliebiges anderes Element, das dazu in der Lage ist, einen Zustand für einen Prozessor wie beispielsweise einen Ausführungszustand oder einen Architekturzustand zu halten. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf beliebige Hardware, die unabhängig Code zugeordnet werden kann, wie z. B. einen Softwarestrang, ein Betriebssystem, eine Anwendung oder anderen Code. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl anderer Verarbeitungselemente wie Kerne oder Hardwarestränge enthält.
  • Ein Kern bezieht sich häufig auf eine Logik, die auf einer integrierten Schaltung angeordnet ist, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei jeder unabhängig aufrechterhaltene Architekturzustand mindestens einigen dedizierten Ausführungsbetriebsmitteln zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarestrang typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei sich die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsbetriebsmittel teilen. Wie ersichtlich ist, überlappen sich die Grenzen zwischen der Nomenklatur eines Hardwarestrangs und des Kerns, wenn bestimmte Betriebsmittel gemeinsam genutzt werden und andere einem Architekturzustand zugeordnet sind. Ein Kern und ein Hardwarestrang werden jedoch häufig von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem Operationen auf jedem logischen Prozessor einzeln planen kann.
  • Der physische Prozessor 1400 umfasst wie in 14 dargestellt zwei Kerne - Kern 1401 und 1402. Die Kerne 1401 und 1402 werden als symmetrische Kerne aufgefasst, d. h. als Kerne mit der/n gleichen Konfiguration, Funktionseinheiten und/oder Logik. In einer weiteren Ausführungsform umfasst der Kern 1401 einen nicht reihenfolgetreuen Prozessorkern, während der Kern 1402 einen reihenfolgetreuen Prozessorkern umfasst. Die Kerne 1401 und 1402 können jedoch individuell aus beliebigen Typen von Kernen ausgewählt werden wie beispielsweise einem nativen Kern, einem durch Software verwalteten Kern, einem Kern, der zum Ausführen einer nativen Befehlssatzarchitektur (ISA) ausgelegt ist, einem Kern, der zum Ausführen einer übersetzten Befehlssatzarchitektur (ISA) ausgelegt ist, einem Co-Design-Kern oder einem anderen bekannten Kern. In einer heterogenen Kernumgebung (d. h. asymmetrische Kerne) kann irgendeine Form der Übersetzung wie etwa eine binäre Übersetzung verwendet werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Zur weiteren Erörterung werden die in dem Kern 1401 dargestellten Funktionseinheiten nachstehend ausführlicher beschrieben, da die Einheiten in dem Kern 1402 in der dargestellten Ausführungsform auf ähnliche Weise arbeiten.
  • Wie dargestellt umfasst der Kern 1401 zwei Hardwarestränge 1401a und 1401b, die auch als Hardwarestrangschlitze 1401a und 1401b bezeichnet werden können. Daher betrachten Softwareentitäten wie beispielsweise ein Betriebssystem in einer Ausführungsform den Prozessor 1400 möglicherweise als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Softwarestränge gleichzeitig auszuführen. Wie oben angedeutet ist ein erster Strang den Architekturzustandsregistern 1401a zugeordnet, ein zweiter Strang den Architekturzustandsregistern 1401b zugeordnet, ein dritter Strang den Architekturzustandsregistern 1402a zugeordnet und ein vierter Strang den Architekturzustandsregistern 1402b zugeordnet. Hier können die Architekturzustandsregister (1401a, 1401b, 1402a und 1402b) jeweils als Verarbeitungselemente, Strangschlitze oder Strangeinheiten bezeichnet werden, wie sie oben beschrieben sind. Wie dargestellt werden Architekturzustandsregister 1401a in Architekturzustandsregistern 1401b repliziert, so dass einzelne Architekturzustände/-kontexte für den logischen Prozessor 1401a und den logischen Prozessor 1401b gespeichert werden können. In dem Kern 1401 können auch andere kleinere Betriebsmittel wie beispielsweise Befehlszeiger und Umbenennungslogik in dem Zuweisungs-und-Umbenennungsblock 1430 für die Stränge 1401a und 1401b repliziert werden. Einige Betriebsmittel wie z. B. Puffer in einer Umordnungs-/Stilllegungseinheit 1435, einem ILTB 1420, einem Lade-/Speicherpuffer und Warteschlangen können durch Partitionierung gemeinsam genutzt werden. Andere Betriebsmittel wie etwa interne Allzweckregister, Seitentabellen-Basisregister, DatenCache und Daten-TLB 1415 niedriger Ebene, Ausführungseinheit(en) 1440 und Teile der nicht reihenfolgetreuen Einheit 1435 werden möglicherweise vollständig gemeinsam genutzt.
  • Der Prozessor 1400 umfasst häufig andere Betriebsmittel, die vollständig gemeinsam genutzt werden können, durch Partitionierung gemeinsam genutzt werden können oder von/für Verarbeitungselemente(n) reserviert sind. In 14 ist eine Ausführungsform eines rein beispielhaften Prozessors mit beispielhaften logischen Einheiten/Betriebsmitteln eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor jede dieser Funktionseinheiten enthalten oder weglassen kann, sowie beliebige andere bekannte Funktionseinheiten, Logik oder Firmware enthalten kann, die nicht dargestellt sind. Wie dargestellt umfasst der Kern 1401 einen vereinfachten, repräsentativen, nicht reihenfolgetreuen Prozessorkern (OOO-Prozessorkern). In verschiedenen Ausführungsformen kann jedoch ein reihenfolgetreuer Prozessor verwendet werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer 1420 zum Vorhersagen von auszuführenden bzw. zu nehmenden Verzweigungen und einen Befehlsübersetzungspuffer (I-TLB) 1420 zum Speichern von Adressübersetzungseinträgen für Befehle.
  • Der Kern 1401 umfasst ferner ein Decodiermodul 1425, das mit der Abrufeinheit 1420 gekoppelt ist, um abgerufene Elemente zu decodieren. In einer Ausführungsform umfasst die Abruflogik einzelne Sequenzer, die den Strangschlitzen 1401a bzw. 1401b zugeordnet sind. Üblicherweise ist der Kern 1401 einer ersten ISA zugeordnet, die auf dem Prozessor 1400 ausführbare Befehle definiert/spezifiziert. Häufig enthalten Maschinencodebefehle, die Teil der ersten ISA sind, einen Befehlsabschnitt (als Opcode bezeichnet), der einen auszuführenden Befehl oder eine auszuführende Operation referenziert oder festlegt. Die Decodierlogik 1425 weist eine Schaltung auf, die diese Befehle anhand ihrer Opcodes erkennt und die decodierten Befehle in der Pipeline zum Verarbeiten weiterleitet, wie es von der ersten ISA definiert wird. Wie später näher erörtert wird, haben bei einer Ausführungsform die Decodierer 1425 beispielsweise eine Logik, die so ausgelegt oder eingerichtet ist, dass sie spezielle Befehle erkennt, wie etwa einen transaktionalen Befehl. Als Ergebnis der Erkennung durch die Decodierer 1425 trifft die Architektur oder der Kern 1401 spezielle festgelegte Maßnahmen, um Aufgaben auszuführen, die dem entsprechenden Befehl zugeordnet sind. Es ist wichtig zu beachten, dass alle hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Antwort auf einen oder mehrere Befehle ausgeführt werden können, wobei einige davon neue oder alte Befehle sein können. Es ist zu beachten, dass die Decodierer 1426 in einer Ausführungsform die gleiche ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen die Decodierer 1426 in einer heterogenen Kernumgebung eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine andere ISA).
  • In einem Beispiel enthält der Zuweisungs-und-Umbenennungsblock 1430 einen Zuweiser zum Reservieren von Betriebsmitteln wie z. B. Registersätzen zum Speichern von Befehlsverarbeitungsergebnissen. Die Stränge 1401a und 1401b sind jedoch möglicherweise zu nicht reihenfolgetreuer Ausführung fähig, wobei der Zuweisungs-und-Umbenennungsblock 1430 zudem andere Betriebsmittel reserviert wie beispielsweise Umordnungspuffer zum Verfolgen von Befehlsergebnissen. Die Einheit 1430 kann zudem einen Registerumbenenner enthalten, um Programm-/Befehlsreferenzregister in andere Register innerhalb des Prozessors 1400 umzubenennen. Die Umordnungs-/Stilllegungseinheit 1435 enthält Komponenten wie die oben erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer, um die nicht reihenfolgetreue Ausführung und spätere reihenfolgetreue Stilllegung von nicht reihenfolgetreu ausgeführten Befehlen zu unterstützen.
  • Der Scheduler-und-Ausführungseinheit-Block 1440 umfasst in einer Ausführungsform eine Scheduler-Einheit zum Planen von Befehlen/Operationen an Ausführungseinheiten. Beispielsweise wird ein Gleitkommabefehl an einem Port einer Ausführungseinheit geplant, die eine verfügbare Gleitkommaausführungseinheit hat. Registersätze, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls enthalten, um Informationen zu Befehlsverarbeitungsergebnissen zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Datencache niedrigerer Ebene und der Datenübersetzungspuffer (D-TLB) 1450 sind mit der Ausführungseinheit (den Ausführungseinheiten) 1440 gekoppelt. Der Datencache dient zum Speichern kürzlich verwendeter/bearbeiteter Elemente wie beispielsweise Datenoperanden, die möglicherweise in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern aktueller virtueller/linearer/physischer Adressübersetzungen. Als ein spezielles Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um den physischen Speicher in mehrere virtuelle Seiten aufzuteilen.
  • Hier teilen sich die Kerne 1401 und 1402 den Zugriff auf einen Cache höherer oder entfernterer Ebene wie beispielsweise einen Cache zweiter Ebene, der einer chipinternen Schnittstelle 1410 zugeordnet ist. Es ist zu beachten, dass höhere oder entferntere Ebene sich drauf bezieht, dass Cache-Ebenen zunehmen oder sich von der/den Ausführungseinheit(en) entfernen. In einer Ausführungsform ist der Cache höherer Ebene ein Datencache letzter Ebene - ein letzter Cache in der Speicherhierarchie auf dem Prozessor 1400 - wie etwa ein Datencache zweiter oder dritter Ebene. Der Cache höherer Ebene ist jedoch nicht darauf beschränkt, da er einem Befehls-Cache zugeordnet sein kann oder diesen enthalten kann. Ein Verfolgungs-Cache - eine Art Befehls-Cache - kann stattdessen nach dem Decodierer 1425 eingekoppelt sein, um kürzlich decodierte Verfolgungen zu speichern. Hier bezieht sich ein Befehl möglicherweise auf einen Makrobefehl (d. h. einen von den Decodierern erkannten allgemeinen Befehl), der in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodiert werden kann.
  • In der dargestellten Konfiguration umfasst der Prozessor 1400 auch ein chipinternes Schnittstellenmodul 1410. In der Vergangenheit war ein Speicher-Controller, der nachstehend ausführlicher beschrieben ist, in einem Rechensystem außerhalb des Prozessors 1400 enthalten. In diesem Szenario dient die chipinterne Schnittstelle 1410 zur Kommunikation mit Vorrichtungen außerhalb des Prozessors 1400 wie beispielsweise dem Systemspeicher 1475, einem Chipsatz (der häufig einen Speicher-Controller-Hub zur Verbindung mit dem Speicher 1475 und einen E/A-Controller-Hub zur Verbindung mit Peripherievorrichtungen enthält), einem Speicher-Controller-Hub, einer Northbridge oder einer anderen integrierten Schaltung. In diesem Szenario kann der Bus 1405 zudem eine beliebige bekannte Zwischenverbindung wie beispielsweise einen Mehrpunktbus, eine Punkt-zu-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z. B. einen cachekohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus und einen GTL-Bus umfassen.
  • Der Speicher 1475 kann dem Prozessor 1400 zugewiesen sein oder mit anderen Vorrichtungen in einem System gemeinsam genutzt werden. Übliche Beispiele für Speichertypen 1475 umfassen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen. Es ist zu beachten, dass die Vorrichtung 1480 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, der/die mit einem Speicher-Controller-Hub gekoppelt ist, einen Datenspeicher, der mit einem E/A-Controller-Hub gekoppelt ist, einen drahtlosen Sendeempfänger, eine Flash-Vorrichtung, einen Audio-Controller, einen Netz-Controller oder einen andere bekannte Vorrichtung umfassen kann.
  • Da in letzter Zeit jedoch mehr Logik und Vorrichtungen auf einem einzelnen Chip wie beispielsweise einem SOC integriert werden, kann jede dieser Vorrichtungen auf dem Prozessor 1400 eingebaut sein. In einer Ausführungsform befindet sich beispielsweise ein Speicher-Controller-Hub auf derselben Baugruppe und/oder demselben Chip wie der Prozessor 1400. Hier umfasst ein Teil des Kerns (ein On-Core-Abschnitt) 1410 eine oder mehrere Controller zum Verbinden mit anderen Vorrichtungen wie einem Speicher 1475 oder einer Grafikvorrichtung 1480. Die Konfiguration, die eine Zwischenverbindung und Controller zum Bilden einer Schnittstelle mit solchen Vorrichtungen enthält, wird häufig als On-Core (oder Un-Core-Konfiguration) bezeichnet. Beispielsweise enthält die chipinterne Schnittstelle 1410 eine Ringzwischenverbindung für die chipinterne Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung 1405 für die chipexterne Kommunikation. In der SOC-Umgebung können jedoch noch mehr Vorrichtungen wie z. B. die Netzschnittstelle, Coprozessoren, der Speicher 1475, der Grafikprozessor 1480 und andere bekannte Computervorrichtungen/Schnittstellen auf einem einzelnen Chip oder einer integrierten Schaltung integriert sein, um einen geringen Formfaktor mit hoher Funktionalität und geringem Energieverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 1400 in der Lage, einen Kompilier-, Optimierungs- und/oder Übersetzercode 1477 auszuführen, um den Anwendungscode 1476 zu kompilieren, zu übersetzen und/oder zu optimieren, um die hierin beschriebenen Vorrichtungen und Verfahren zu unterstützen oder eine Schnittstelle damit zu bilden. Ein Kompilierer enthält häufig ein Programm oder eine Reihe von Programmen, um Quelltext/-code in Zieltext/-code zu übersetzen. In der Regel erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Kompilierer in mehreren Phasen und Durchläufen zum Umwandeln von Hochprogrammiersprachencode in Maschinen- oder Assemblersprachencode niederer Ebene. Kompilierer mit einmaligem Durchlauf können jedoch weiterhin für die einfache Kompilierung verwendet werden. Ein Kompilierer kann alle bekannten Kompilierungstechniken verwenden und alle bekannten Kompilieroperationen ausführen, wie z. B. lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codeerzeugung, Codetransformation und Codeoptimierung.
  • Größere Kompilierer umfassen häufig mehrere Phasen, aber am häufigsten sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) einem Frontend, d. h. im Allgemeinen dort, wo syntaktische Verarbeitung, semantische Verarbeitung und einige Transformationen/Optimierungen stattfinden können, und (2) einem Backend, d. h. im Allgemeinen dort, wo Analysen, Transformationen, Optimierungen und Codeerzeugung stattfinden. Einige Kompilierer verweisen auf eine Mitte, was die Unschärfe der Abgrenzung zwischen einem Frontend und einem Backend eines Kompilierers zeigt. Infolgedessen können Verweise auf Einfügen, Verknüpfen, Erstellen oder andere Operationen eines Kompilierers in einer der oben genannten Phasen oder Durchgänge sowie in anderen bekannten Phasen oder Durchgängen eines Kompilierers erfolgen. Als anschauliches Beispiel fügt ein Kompilierer möglicherweise Operationen, Aufrufe, Funktionen usw. in eine oder mehrere Phasen der Kompilierung ein, z. B. das Einfügen von Aufrufen/Operationen in eine Frontend-Phase der Kompilierung und anschließend eine Transformation der Aufrufe/Operationen in einen Code niedrigerer Ebene während einer Transformationsphase. Es ist zu beachten, dass während der dynamischen Kompilierung Kompilierercode oder dynamischer Optimierungscode möglicherweise solche Operationen/Aufrufe einfügen kann und den Code für die Ausführung während der Laufzeit optimieren kann. Als spezielles anschauliches Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich wie ein Kompilierer übersetzt ein Übersetzer wie etwa ein Binärübersetzer den Code entweder statisch oder dynamisch, um den Code zu optimieren und/oder zu übersetzen. Daher kann sich der Verweis auf die Ausführung eines Codes, Anwendungscodes, Programmcodes oder einer Software-Umgebung auf Folgendes beziehen: (1) dynamische oder statische Ausführung eines oder mehrerer Kompilierprogramme, eines Optimierungscode-Optimierers oder -Übersetzers, um den Programmcode zu kompilieren, Software-Strukturen aufrechtzuerhalten, andere Operationen auszuführen, Code zu optimieren oder Code zu übersetzen; (2) Ausführung eines Hauptprogrammcodes mit Operationen/Aufrufen wie etwa eines Anwendungscodes, der optimiert/kompiliert worden ist; (3) Ausführung eines anderen Programmcodes wie etwa Bibliotheken, die dem Hauptprogrammcode zugeordnet sind, um Software-Strukturen aufrechtzuerhalten, andere softwarebezogene Operationen auszuführen oder den Code zu optimieren; oder (4) eine Kombination davon.
  • Unter Bezugnahme auf 15 ist ein Blockdiagramm eines weiteren Systems 1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie es in 15 gezeigt ist, ist das Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Zwischenverbindung 1550 gekoppelt sind. Jeder der Prozessoren 1570 und 1580 kann irgendeine Version eines Prozessors sein. In einer Ausführungsform sind 1552 und 1554 Teil eine4 seriellen, kohärenten Punkt-zu-Punkt-Verbindungs-Fabric wie beispielsweise einer Hochleistungsarchitektur. Infolgedessen kann die Erfindung in der QPI-Architektur implementiert sein.
  • Obwohl nur zwei Prozessoren 1570, 1580 gezeigt sind, versteht es sich, dass der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 1570 und 1580 sind mit integrierten Speicher-Controller-Einheiten 1572 bzw. 1582 gezeigt. Der Prozessor 1570 umfasst zudem als Teil seiner Bus-Controller-Einheiten auch Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1576 und 1578; in ähnlicher Weise umfasst der zweite Prozessor 1580 P-P-Schnittstellen 1586 und 1588. Die Prozessoren 1570, 1580 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 1550 unter Verwendung von P-P-Schnittstellenschaltungen 1578, 1588 austauschen. Wie es in 15 gezeigt ist, koppeln die IMCs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Teile des Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angebunden ist.
  • Die Prozessoren 1570, 1580 tauschen jeweils Informationen mit einem Chipsatz 1590 über einzelne P-P-Schnittstellen 1552, 1554 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1576, 1594, 1586, 1598 aus. Der Chipsatz 1590 tauscht auch Informationen mit einer Hochleistungsgrafikschaltung 1538 über eine Schnittstellenschaltung 1592 entlang einer Hochleistungsgrafikzwischenverbindung 1539 aus.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann entweder in einem Prozessor oder außerhalb beider Prozessoren enthalten sein; jedoch über eine P-P-Zwischenverbindung mit den Prozessoren verbunden sein, so dass die lokalen Cache-Informationen eines oder beider Prozessoren im gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird.
  • Der Chipsatz 1590 kann über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1516 ein Peripheriekomponenten-Zwischenverbindungs-Bus (PCI-Bus) oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie es in 15 gezeigt ist, sind verschiedene E/A-Vorrichtungen 1514 mit dem ersten Bus 1516 zusammen mit einer Busbrücke 1518 gekoppelt, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt. In einer Ausführungsform umfasst der zweite Bus 1520 einen Bus mit niedriger Stiftzahl (LPC). Verschiedene Vorrichtungen sind mit dem zweiten Bus 1520 verbunden, einschließlich beispielsweise einer Tastatur und/oder Maus 1522, Kommunikationsvorrichtungen 1527 und einer Speichereinheit 1528 wie beispielsweise einem Plattenlaufwerk oder einer anderen Massenspeichervorrichtung, die in einer Ausführungsform häufig Befehle/Code und Daten 1530 enthält. Ferner ist gezeigt, dass ein Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt ist. Es ist zu beachten, dass andere Architekturen möglich sind, bei denen die enthaltenen Komponenten und Zwischenverbindungsarchitekturen variieren. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur von 15 einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Obwohl diese Offenbarung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben ist, werden Fachleute zahlreiche Abwandlungen und Variationen davon erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Abwandlungen und Variationen abdecken, die unter den wahren Gedanken und Umfang dieser vorliegenden Offenbarung fallen.
  • Ein Entwurf kann verschiedene Stadien durchlaufen, von der Erzeugung über die Simulation bis zur Herstellung. Daten, die einen Entwurf repräsentieren, können den Entwurf auf eine Reihe von Arten darstellen. Zuerst kann die Hardware, wie es in Simulationen nützlich ist, unter Verwendung einer Hardwarebeschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann ein Schaltungsebenenmodell mit Logik- und/oder Transistorgattern in einigen Stufen des Entwurfsprozesses erzeugt werden. Darüber hinaus erreichen die meisten Entwürfe zu einem bestimmten Zeitpunkt ein Datenniveau, das die physische Anordnung verschiedener Vorrichtungen in dem Hardwaremodell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken angeben, die zur Herstellung der integrierten Schaltung verwendet werden. In jeder Darstellung des Entwurfs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetischer oder optischer Datenspeicher wie etwa eine Platte kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder auf andere Weise erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf angibt oder trägt, übertragen wird, wird, soweit das Kopieren, Puffern oder erneute Senden des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem konkreten, maschinenlesbaren Medium zumindest vorübergehend ein Element, beispielsweise in eine Trägerwelle codierte Informationen, speichern, das Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert.
  • Ein Modul oder eine Maschine bezieht sich wie hierin verwendet auf irgendeine Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul oder eine Maschine Hardware wie beispielsweise einen Mikrocontroller, der einem nichtflüchtigen Medium zugeordnet ist, um Code zu speichern, der dazu ausgelegt ist, von dem Mikrocontroller ausgeführt zu werden. Daher bezieht sich der Verweis auf ein Modul oder eine Maschine in einer Ausführungsform auf die Hardware, die speziell dazu ausgelegt ist, den auf einem nichtflüchtigen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich in einer weiteren Ausführungsform die Verwendung eines Moduls oder einer Maschine auf das nichttransitorische Medium, das den Code enthält, der speziell dazu ausgelegt ist, von dem Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie daraus geschlossen werden kann, kann sich in einer weiteren Ausführungsform der Begriff Modul oder Maschine (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Häufig variieren Modul- oder Maschinengrenzen, die separat dargestellt sind, und überlappen sich möglicherweise. Zum Beispiel können sich ein erstes und ein zweites Modul bzw. eine erste und eine zweite Maschine Hardware, Software, Firmware oder eine Kombination davon teilen, während möglicherweise einige unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware wie z. B. Transistoren, Register oder andere Hardware wie etwa programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks „dazu ausgelegt“ bezieht sich in einer Ausführungsform auf ein Anordnen, Zusammenstellen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements zum Ausführen einer zugewiesenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die/das nicht in Betrieb ist, immer noch dazu ausgelegt, eine bestimmte Aufgabe auszuführen, wenn sie entworfen, angekoppelt und/oder angeschlossen ist, um die bestimmte Aufgabe auszuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 liefern. Ein Logikgatter, das dazu ausgelegt ist, dass ein Aktivierungssignal an einen Takt zu liefern, umfasst jedoch nicht jedes mögliche Logikgatter, das eine 1 oder 0 liefern kann. Stattdessen ist das Logikgatter auf irgendeine Weise so gekoppelt, dass während des Betriebs die Ausgabe 1 oder 0 dazu dient, den Takt zu aktivieren. Es ist noch einmal anzumerken, dass die Verwendung des Ausdrucks „dazu ausgelegt“ keine Operation erfordert, sondern stattdessen auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements abzielt, wobei die Vorrichtung, die Hardware und/oder das Element in dem latenten Zustand dazu ausgelegt ist, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb ist.
  • Ferner bezieht sich die Verwendung der Ausdrücke „dazu fähig“ und/oder „dazu betreibbar“ in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die so gestaltet sind, dass sie die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements in einer bestimmten Art und Weise ermöglichen. Wie oben erwähnt bezieht sich die Verwendung von „dazu fähig“ und/oder „dazu betreibbar“ in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements, in dem die Vorrichtung Logik, Hardware und/oder das Element nicht in Betrieb ist, sondern derart ausgelegt ist, dass die Verwendung einer Vorrichtung in einer bestimmten Art und Weise ermöglicht wird.
  • Ein Wert umfasst wie hierin verwendet jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, was einfach binäre logische Zustände darstellt. Zum Beispiel bezieht sich 1 auf einen hohen Logikpegel und 0 auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle wie etwa ein Transistor oder eine Flashzelle in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein Binärwert 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Daher umfasst ein Wert irgendeine Darstellung von Informationen, die in einem Computersystem gehalten werden kann.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert wie beispielsweise eine logische Eins einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert wie beispielsweise eine logische Null einen Nicht-Standardzustand darstellen kann. Außerdem beziehen sich die Begriffe zurückgesetzt und gesetzt in einer Ausführungsform auf einen Standardwert bzw. einen aktualisierten Wert bzw. Zustand. Zum Beispiel umfasst ein Standardwert möglicherweise einen hohen logischen Wert, d. h. zurückgesetzt, während ein aktualisierter Wert möglicherweise einen niedrigen logischen Wert umfasst, d. h. gesetzt. Es ist zu beachten, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die oben dargelegt sind, können mittels Befehlen oder Code implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind und die durch ein Verarbeitungselement ausführbar sind. Ein nichttransitorisches maschinenzugängliches/-lesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die von einer Maschine wie etwa einem Computer oder einem elektronischen System gelesen werden kann. Zum Beispiel umfasst ein nichttransitorisches, maschinenzugängliches Medium einen Direktzugriffsspeicher (RAM) wie etwa einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; eine andere Form von Speichervorrichtungen zum Halten von Informationen, die aus transitorischen (sich ausbreitenden) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von den nichttransitorischen Medien zu unterscheiden sind, die daraus Informationen empfangen können.
  • Befehle, die verwendet werden, um Logik zum Ausführen von Ausführungsformen der Offenbarung zu programmieren, können in einem Speicher in dem System gespeichert sein, wie beispielsweise einem DRAM, einem Cache, einem Flash-Speicher oder einem anderen Speicher. Darüber hinaus können die Befehle über ein Netz oder über andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) lesbar ist, umfassen, ist aber nicht darauf beschränkt auf Disketten, optische Disketten, CD-Nur-Lese-Speicher (CD-ROMs) und magnetooptische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbare programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen konkreten, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium irgendeinen Typ eines konkreten, maschinenlesbaren Mediums, das zum Speichern oder Übertragen elektronischer Befehlen oder Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann, geeignet ist.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Beschreibung. Beispiel 1 ist eine Rechenvorrichtung, die Folgendes umfasst: einen Speicher zum Speichern eines kryptografischen Schlüssels; eine Sicherheitsmaschine, die eine Schaltungsanordnung umfasst, wobei die Sicherheitsmaschine einen geschützten Link zwischen der Rechenvorrichtung und einer zweiten Rechenvorrichtung herstellen soll, wobei die Kommunikation über den Link ein Kommunikationsprotokoll einhalten soll, das es ermöglicht, dass Pakete während der Übermittlung umgeordnet werden; eine Paketmaschine, die eine Schaltungsanordnung umfasst, wobei die Paketmaschine mehrere Pakete gemäß einem Paketformat erzeugen soll, das sicherstellt, dass die mehreren Pakete während der Übertragung über den geschützten Link nicht umgeordnet werden, wobei die mehreren Pakete ein erstes Paket und ein zweites Paket umfassen; und eine Verschlüsselungsmaschine, die eine Schaltungsanordnung umfasst, wobei die Verschlüsselungsmaschine Daten der mehreren Pakete zur Übertragung über den geschützten Link verschlüsseln soll, wobei die Verschlüsselungsmaschine Daten des ersten Pakets basierend auf dem kryptografischen Schlüssel und einem ersten Wert eines Zählers verschlüsseln soll und Daten des zweiten Pakets basierend auf dem kryptografischen Schlüssel und einem zweiten Wert des Zählers verschlüsseln soll.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei das Kommunikationsprotokoll ein Peripheriekomponenten-Zwischenverbindungs-Express-Protokoll (PCI-Express-Protokoll) ist.
  • Beispiel 3 kann den Gegenstand eines der Beispiele 1 bis 2 umfassen, wobei die Verschlüsselungsmaschine Daten der mehreren Pakete gemäß dem fortgeschrittenen Verschlüsselungsstandard (AES) verschlüsselt, der in dem Galois-Counter-Modus (GCM) implementiert ist.
  • Beispiel 4 kann den Gegenstand eines der Beispiele 1 bis 3 umfassen, wobei die Paketmaschine ein Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in ein anderes Paket einkapseln soll, das durch das Kommunikationsprotokoll nicht umgeordnet werden kann.
  • Beispiel 5 kann den Gegenstand von Beispiel 4 umfassen, wobei das Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in einer PCI-Express-Nachricht für verbuchte Anforderungen eingekapselt ist.
  • Beispiel 6 kann den Gegenstand eines der Beispiele 1 bis 5 umfassen, wobei die Verschlüsselungsmaschine separate Ströme für separate Nachrichtentypen pflegen soll, wobei der kryptografische Schlüssel und die Werte des Zählers zum Verschlüsseln von Daten von Paketen eines ersten Nachrichtentyps verwendet werden und ein zweiter kryptografischer Schlüssel und die Werte eines zweiten Zählers zum Verschlüsseln von Daten von Paketen eines zweiten Nachrichtentyps verwendet werden.
  • Beispiel 7 kann den Gegenstand von Beispiel 6 umfassen, wobei die Rechenvorrichtung die Anzahl von Paketen des ersten Nachrichtentyps und des zweiten Nachrichtentyps, die an die zweite Rechenvorrichtung gesendet wurden, verfolgen soll und die Anzahl mit einem Paket eines dritten Nachrichtentyps an die zweite Rechenvorrichtung senden soll.
  • Beispiel 8 kann den Gegenstand von Beispiel 7 umfassen, wobei der erste Nachrichtentyp eine verbuchte Anforderung ist, der zweite Nachrichtentyp ein Abschluss ist und der dritte Nachrichtentyp eine nicht verbuchte Anforderung ist.
  • Beispiel 9 kann den Gegenstand eines der Beispiele 1 bis 8 umfassen, wobei die Verschlüsselungsmaschine den Zähler als Antwort auf ein Link-Neutrainings-Ereignis mit einem zweiten Zähler synchronisieren soll, der von der zweiten Rechenvorrichtung geführt wird.
  • Beispiel 10 kann den Gegenstand von Beispiel 9 umfassen, wobei die Rechenvorrichtung einem Link-Neutrainings-Ereignis eine Verzögerung hinzufügen soll, um sicherzustellen, dass nicht mehr als ein Link-Neutrainings-Ereignis über ein Zeitfenster auftritt, um den Zähler genau zu synchronisieren.
  • Beispiel 11 kann den Gegenstand eines der Beispiele 1 bis 10 umfassen, wobei die Paketmaschine einen Integritätsprüfwert zumindest teilweise basierend auf Daten des ersten Pakets berechnen und den Integritätsprüfwert in das erste Paket aufnehmen soll.
  • Beispiel 12 kann den Gegenstand von Beispiel 11 umfassen, wobei mindestens ein Teil des Integritätsprüfwerts in einem Feld des ersten Pakets platziert ist, das durch das Kommunikationsprotokoll als zyklische Redundanzprüfung spezifiziert ist.
  • Beispiel 13 kann den Gegenstand von Beispiel 11 umfassen, wobei der Integritätsprüfwert auf einer Sicherungsschicht-Ebene berechnet wird.
  • Beispiel 14 kann den Gegenstand von Beispiel 11 umfassen, wobei der Integritätsprüfwert auf Transaktionsschicht-Ebene berechnet wird.
  • Beispiel 15 kann den Gegenstand eines der Beispiele 1 bis 14 umfassen, wobei die Paketmaschine einen Integritätsprüfwert für die mehreren Pakete berechnen und die Integritätsprüfsumme in das erste Paket aufnehmen soll.
  • Beispiel 16 kann den Gegenstand eines der Beispiele 1-15 umfassen, wobei sich die Verschlüsselungsmaschine innerhalb einer Schnittstelle zwischen einer Sicherungsschicht und einer durch die Rechenvorrichtung implementierten Bitübertragungsschicht befindet.
  • Beispiel 17 kann den Gegenstand eines der Beispiele 1-16 umfassen, der ferner die zweite Rechenvorrichtung umfasst.
  • Beispiel 18 ist ein Verfahren, das Folgendes umfasst: Einrichten eines geschützten Links zwischen einer ersten Rechenvorrichtung und einer zweiten Rechenvorrichtung, wobei die Kommunikation über den geschützten Link ein Kommunikationsprotokoll einhalten soll, das es ermöglicht, dass Pakete während der Übermittlung umgeordnet werden; Erzeugen mehrerer Pakete gemäß einem Paketformat, das sicherstellt, dass die mehreren Pakete während der Übertragung über den geschützten Link nicht umgeordnet werden, wobei die mehreren Pakete ein erstes Paket und ein zweites Paket umfassen; und Verschlüsseln von Daten der mehreren Pakete zur Übertragung über den geschützten Link, wobei Daten des ersten Pakets basierend auf dem kryptografischen Schlüssel und einem ersten Wert eines Zählers verschlüsselt werden und Daten des zweiten Pakets basierend auf dem kryptografischen Schlüssel und einem zweiten Wert des Zählers verschlüsselt werden.
  • Beispiel 19 kann den Gegenstand von Beispiel 18 umfassen, wobei das Kommunikationsprotokoll ein Peripheriekomponenten-Zwischenverbindungs-Express-Protokoll (PCI-Express-Protokoll) ist.
  • Beispiel 20 kann den Gegenstand eines der Beispiele 1-19 umfassen, wobei Daten der mehreren Pakete gemäß dem fortgeschrittenen Verschlüsselungsstandard (AES) verschlüsselt werden, der in dem Galois-Counter-Modus (GCM) implementiert ist.
  • Beispiel 21 kann den Gegenstand eines der Beispiele 18-20 umfassen, wobei das Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in einem anderen Paket eingekapselt werden soll, das durch das Kommunikationsprotokoll nicht umgeordnet werden kann.
  • Beispiel 22 kann den Gegenstand von Beispiel 21 umfassen, wobei das Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in einer PCI-Express-Nachricht für verbuchte Anforderungen eingekapselt ist.
  • Beispiel 23 kann den Gegenstand eines der Beispiele 18-22 umfassen, wobei für separate Nachrichtentypen separate Ströme gepflegt werden, wobei der kryptografische Schlüssel und die Werte des Zählers zum Verschlüsseln von Daten von Paketen eines ersten Nachrichtentyps verwendet werden und ein zweiter kryptografischer Schlüssel und Werte eines zweiten Zählers zum Verschlüsseln von Daten von Paketen eines zweiten Nachrichtentyps verwendet werden.
  • Beispiel 24 kann den Gegenstand von Beispiel 23 umfassen, wobei die Anzahl von Paketen des ersten Nachrichtentyps und des zweiten Nachrichtentyps, die an die zweite Rechenvorrichtung gesendet wurden, verfolgt wird und mit einem Paket eines dritten Nachrichtentyps an die zweite Rechenvorrichtung gesendet werden.
  • Beispiel 25 kann den Gegenstand von Beispiel 24 umfassen, wobei der erste Nachrichtentyp eine verbuchte Anforderung ist, der zweite Nachrichtentyp ein Abschluss ist und der dritte Nachrichtentyp eine nicht verbuchte Anforderung ist.
  • Beispiel 26 kann den Gegenstand eines der Beispiele 18-25 umfassen, der ferner ein Synchronisieren des Zählers mit einem zweiten Zähler, der von der zweiten Rechenvorrichtung geführt wird, als Antwort auf ein Link-Neutrainings-Ereignis umfasst.
  • Beispiel 27 kann den Gegenstand von Beispiel 26 umfassen, der ferner ein Hinzufügen einer Verzögerung zu einem Link-Neutrainings-Ereignis umfasst, um sicherzustellen, dass nicht mehr als ein Link-Neutrainings-Ereignis über ein Zeitfenster auftritt, um den Zähler genau zu synchronisieren.
  • Beispiel 28 kann den Gegenstand eines der Beispiele 18-27 umfassen, der ferner ein Berechnen eines Integritätsprüfwerts zumindest teilweise basierend auf dem ersten Paket und ein Aufnehmen des Integritätsprüfwerts in das erste Paket umfasst.
  • Beispiel 29 kann den Gegenstand von Beispiel 28 umfassen, wobei mindestens ein Teil des Integritätsprüfwerts in einem Feld des ersten Pakets platziert wird, das durch das Kommunikationsprotokoll als zyklische Redundanzprüfung spezifiziert ist.
  • Beispiel 30 kann den Gegenstand von Beispiel 28 umfassen, wobei der Integritätsprüfwert auf einer Sicherungsschicht-Ebene berechnet wird.
  • Beispiel 31 kann den Gegenstand von Beispiel 28 umfassen, wobei der Integritätsprüfwert auf einer Transaktionsschicht-Ebene berechnet wird.
  • Beispiel 32 kann den Gegenstand eines der Beispiele 18 bis 31 umfassen, wobei die Paketmaschine einen Integritätsprüfwert für die mehreren Pakete berechnen und den Integritätsprüfwert in das erste Paket aufnehmen soll.
  • Beispiel 33 kann den Gegenstand eines der Beispiele 18 bis 32 umfassen, wobei sich die Verschlüsselungsmaschine innerhalb einer Schnittstelle zwischen einer Sicherungsschicht und einer durch die Rechenvorrichtung implementierten Bitübertragungsschicht befindet.
  • Beispiel 34 kann den Gegenstand eines der Beispiele 18 bis 33 umfassen, der ferner ein Kommunizieren durch die zweite Rechenvorrichtung umfasst.
  • Beispiel 35 ist mindestens ein für eine Maschine zugängliches, nichttransitorisches Speichermedium, auf dem Befehle gespeichert sind, wobei die Befehle dann, wenn sie auf einer Maschine ausgeführt werden, die Maschine zu Folgendem veranlassen: Einrichten eines geschützten Links zwischen einer ersten Rechenvorrichtung und einer zweiten Rechenvorrichtung, wobei die Kommunikation über den geschützten Link ein Kommunikationsprotokoll einhalten soll, das es ermöglicht, dass Pakete während der Übermittlung umgeordnet werden; Erzeugen mehrerer Pakete gemäß einem Paketformat, das sicherstellt, dass die mehreren Pakete während der Übertragung über den geschützten Link nicht umgeordnet werden, wobei die mehreren Pakete ein erstes Paket und ein zweites Paket umfassen; und Verschlüsseln von Daten der mehreren Pakete zur Übertragung über den geschützten Link, wobei Daten des ersten Pakets basierend auf dem kryptografischen Schlüssel und einem ersten Wert eines Zählers verschlüsselt werden und Daten des zweiten Pakets basierend auf dem kryptografischen Schlüssel und einem zweiten Wert des Zählers verschlüsselt werden.
  • Beispiel 36 kann den Gegenstand von Beispiel 35 umfassen, wobei das Kommunikationsprotokoll ein Peripheriekomponenten-Zwischenverbindungs-Express-Protokoll (PCI-Express-Protokoll) ist.
  • Beispiel 37 kann den Gegenstand eines der Beispiele 35-36 umfassen, wobei Daten der mehreren Pakete gemäß dem fortgeschrittenen Verschlüsselungsstandard (AES) verschlüsselt werden, der in dem Galois-Counter-Modus (GCM) implementiert ist.
  • Beispiel 38 kann den Gegenstand eines der Beispiele 35 bis 37 umfassen, wobei die Befehle dann, wenn sie ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: Einkapseln eines Pakets, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in ein anderes Paket, das durch das Kommunikationsprotokoll nicht umgeordnet werden kann.
  • Beispiel 39 kann den Gegenstand von Beispiel 38 umfassen, wobei das Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in einer PCI-Express-Nachricht für verbuchte Anforderungen eingekapselt ist.
  • Beispiel 40 kann den Gegenstand eines der Beispiele 35 bis 39 enthalten, wobei die Befehle dann, wenn sie ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: Pflegen von separaten Strömen für separate Nachrichtentypen, wobei der kryptografische Schlüssel und die Werte des Zählers zum Verschlüsseln von Daten von Paketen eines ersten Nachrichtentyps verwendet werden und ein zweiter kryptografischer Schlüssel und Werte eines zweiten Zählers zum Verschlüsseln von Daten von Paketen eines zweiten Nachrichtentyps verwendet werden.
  • Beispiel 41 kann den Gegenstand von Beispiel 40 umfassen, wobei die Befehle dann, wenn sie ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: Verfolgen der Anzahl von Paketen des ersten Nachrichtentyps und des zweiten Nachrichtentyps, die an die zweite Rechenvorrichtung gesendet wurden, und Senden der Anzahl an die zweite Rechenvorrichtung mit einem Paket eines dritten Nachrichtentyps.
  • Das Beispiel 42 kann den Gegenstand des Beispiels 41 umfassen, wobei der erste Nachrichtentyp eine verbuchte Anforderung ist, der zweite Nachrichtentyp ein Abschluss ist und der dritte Nachrichtentyp eine nicht verbuchte Anforderung ist.
  • Beispiel 43 kann den Gegenstand eines der Beispiele 35-42 umfassen, wobei die Befehle dann, wenn sie ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: Synchronisieren des Zählers mit einem zweiten Zähler, der von der zweiten Rechenvorrichtung geführt wird, als Antwort auf ein Link-Neutrainings-Ereignis umfasst.
  • Beispiel 44 kann den Gegenstand von Beispiel 43 umfassen, wobei die Befehle dann, wenn sie ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: Hinzufügen einer Verzögerung zu einem Link-Neutrainings-Ereignis, um sicherzustellen, dass nicht mehr als ein Link-Neutrainings-Ereignis über ein Zeitfenster auftritt, um den Zähler genau zu synchronisieren.
  • Beispiel 45 kann den Gegenstand eines der Beispiele 35 bis 44 umfassen, wobei die Befehle dann, wenn sie ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: Berechnen eines Integritätsprüfwerts zumindest teilweise basierend auf dem ersten Paket und Aufnehmen des Integritätsprüfwerts in das erste Paket.
  • Beispiel 46 kann den Gegenstand von Beispiel 45 umfassen, wobei mindestens ein Teil des Integritätsprüfwerts in einem Feld des ersten Pakets platziert wird, das durch das Kommunikationsprotokoll als zyklische Redundanzprüfung spezifiziert ist.
  • Beispiel 47 kann den Gegenstand von Beispiel 45 umfassen, wobei der Integritätsprüfwert auf einer Sicherungsschicht-Ebene berechnet wird.
  • Beispiel 48 kann den Gegenstand von Beispiel 45 umfassen, wobei der Integritätsprüfwert auf einer Transaktionsschicht-Ebene berechnet wird.
  • Beispiel 49 kann den Gegenstand eines der Beispiele 35 bis 48 umfassen, wobei die Befehle dann, wenn sie ausgeführt werden, die Maschine ferner zu Folgendem veranlassen: Berechnen eines Integritätsprüfwerts für die mehreren Pakete und Aufnehmen des Integritätsprüfwerts in das erste Paket.
  • Beispiel 50 kann den Gegenstand eines der Beispiele 35-49 umfassen, wobei sich eine Verschlüsselungsmaschine innerhalb einer Schnittstelle zwischen einer Sicherungsschicht und einer durch die Rechenvorrichtung implementierten Bitübertragungsschicht befindet.
  • Eine Bezugnahme auf „eine Ausführungsform“ in dieser Beschreibung bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wurde, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit bezieht sich das Auftauchen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise immer auf die gleiche Ausführungsform. Darüber hinaus können die besonderen Merkmale, Strukturen oder Eigenschaften in irgendeiner geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Beschreibung ist eine genaue Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben worden. Es ist jedoch offensichtlich, dass verschiedene Abwandlungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Gedanken und Schutzumfang der Erfindung abzuweichen, wie sie in den beigefügten Ansprüchen dargelegt ist. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht als einschränkend zu betrachten. Ferner bezieht sich die vorstehende Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich auf verschiedene und unterschiedliche Ausführungsformen sowie möglicherweise die gleiche Ausführungsform beziehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62/776781 [0001]

Claims (25)

  1. Rechenvorrichtung, die Folgendes umfasst: einen Speicher zum Speichern eines kryptografischen Schlüssels; eine Sicherheitsmaschine, die eine Schaltungsanordnung umfasst, wobei die Sicherheitsmaschine einen geschützten Link zwischen der Rechenvorrichtung und einer zweiten Rechenvorrichtung herstellen soll, wobei die Kommunikation über den Link ein Kommunikationsprotokoll einhalten soll, das es ermöglicht, dass Pakete während der Übermittlung umgeordnet werden; eine Paketmaschine, die eine Schaltungsanordnung umfasst, wobei die Paketmaschine mehrere Pakete gemäß einem Paketformat erzeugen soll, das sicherstellt, dass die mehreren Pakete während der Übertragung über den geschützten Link nicht umgeordnet werden, wobei die mehreren Pakete ein erstes Paket und ein zweites Paket umfassen; und eine Verschlüsselungsmaschine, die eine Schaltungsanordnung umfasst, wobei die Verschlüsselungsmaschine Daten der mehreren Pakete zur Übertragung über den geschützten Link verschlüsseln soll, wobei die Verschlüsselungsmaschine Daten des ersten Pakets basierend auf dem kryptografischen Schlüssel und einem ersten Wert eines Zählers verschlüsseln soll und Daten des zweiten Pakets basierend auf dem kryptografischen Schlüssel und einem zweiten Wert des Zählers verschlüsseln soll.
  2. Rechenvorrichtung nach Anspruch 1, wobei das Kommunikationsprotokoll ein Peripheriekomponenten-Zwischenverbindungs-Express-Protokoll (PCI-Express-Protokoll) ist.
  3. Rechenvorrichtung nach einem der Ansprüche 1-2, wobei die Verschlüsselungsmaschine Daten der mehreren Pakete gemäß dem fortgeschrittenen Verschlüsselungsstandard (AES) verschlüsseln soll, der in dem Galois-Counter-Modus (GCM) implementiert ist.
  4. Rechenvorrichtung nach einem der Ansprüche 1-3, wobei die Paketmaschine ein Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in ein anderes Paket einkapseln soll, das durch das Kommunikationsprotokoll nicht umgeordnet werden kann.
  5. Rechenvorrichtung nach Anspruch 4, wobei das Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in einer PCI-Express-Nachricht für verbuchte Anforderungen eingekapselt wird.
  6. Rechenvorrichtung nach einem der Ansprüche 1-5, wobei die Verschlüsselungsmaschine separate Ströme für separate Nachrichtentypen pflegen soll, wobei der kryptografische Schlüssel und die Werte des Zählers zum Verschlüsseln von Daten von Paketen eines ersten Nachrichtentyps verwendet werden und ein zweiter kryptografischer Schlüssel und die Werte eines zweiten Zählers zum Verschlüsseln von Daten von Paketen eines zweiten Nachrichtentyps verwendet werden.
  7. Rechenvorrichtung nach Anspruch 6, wobei die Rechenvorrichtung die Anzahl von Paketen des ersten Nachrichtentyps und des zweiten Nachrichtentyps, die an die zweite Rechenvorrichtung gesendet wurden, verfolgen soll und die Anzahl mit einem Paket eines dritten Nachrichtentyps an die zweite Rechenvorrichtung senden soll.
  8. Rechenvorrichtung nach Anspruch 7, wobei der erste Nachrichtentyp eine verbuchte Anforderung ist, der zweite Nachrichtentyp ein Abschluss ist und der dritte Nachrichtentyp eine nicht verbuchte Anforderung ist.
  9. Rechenvorrichtung nach einem der Ansprüche 1-8, wobei die Verschlüsselungsmaschine den Zähler als Antwort auf ein Link-Neutrainings-Ereignis mit einem zweiten Zähler synchronisieren soll, der von der zweiten Rechenvorrichtung geführt wird.
  10. Rechenvorrichtung nach Anspruch 9, wobei die Rechenvorrichtung einem Link-Neutrainings-Ereignis eine Verzögerung hinzufügen soll, um sicherzustellen, dass nicht mehr als ein Link-Neutrainings-Ereignis über ein Zeitfenster auftritt, um den Zähler genau zu synchronisieren.
  11. Rechenvorrichtung nach einem der Ansprüche 1-10, wobei die Paketmaschine einen Integritätsprüfwert zumindest teilweise basierend auf Daten des ersten Pakets berechnen und den Integritätsprüfwert in das erste Paket aufnehmen soll.
  12. Rechenvorrichtung nach Anspruch 11, wobei mindestens ein Teil des Integritätsprüfwerts in einem Feld des ersten Pakets platziert ist, das durch das Kommunikationsprotokoll als zyklische Redundanzprüfung spezifiziert ist.
  13. Rechenvorrichtung nach Anspruch 11, wobei der Integritätsprüfwert auf einer Sicherungsschicht-Ebene berechnet wird.
  14. Rechenvorrichtung nach Anspruch 11, wobei der Integritätsprüfwert auf einer Transaktionsschicht-Ebene berechnet wird.
  15. Rechenvorrichtung nach einem der Ansprüche 1-14, wobei die Paketmaschine einen Integritätsprüfwert für die mehreren Pakete berechnen und den Integritätsprüfwert in das erste Paket aufnehmen soll.
  16. Rechenvorrichtung nach einem der Ansprüche 1-15, wobei sich die Verschlüsselungsmaschine innerhalb einer Schnittstelle zwischen einer Sicherungsschicht und einer durch die Rechenvorrichtung implementierten Bitübertragungsschicht befindet.
  17. Rechenvorrichtung nach einem der Ansprüche 1-16, die ferner die zweite Rechenvorrichtung umfasst.
  18. Verfahren, das Folgendes umfasst: Einrichten eines geschützten Links zwischen einer ersten Rechenvorrichtung und einer zweiten Rechenvorrichtung, wobei die Kommunikation über den geschützten Link ein Kommunikationsprotokoll einhalten soll, das es ermöglicht, dass Pakete während der Übermittlung umgeordnet werden; Erzeugen mehrerer Pakete gemäß einem Paketformat, das sicherstellt, dass die mehreren Pakete während der Übertragung über den geschützten Link nicht umgeordnet werden, wobei die mehreren Pakete ein erstes Paket und ein zweites Paket umfassen; und Verschlüsseln von Daten der mehreren Pakete zur Übertragung über den geschützten Link, wobei Daten des ersten Pakets basierend auf einem kryptografischen Schlüssel und einem ersten Wert eines Zählers verschlüsselt werden und Daten des zweiten Pakets basierend auf dem kryptografischen Schlüssel und einem zweiten Wert des Zählers verschlüsselt werden.
  19. Verfahren nach Anspruch 18, wobei das Kommunikationsprotokoll ein Peripheriekomponenten-Zwischenverbindungs-Express-Protokoll (PCI-Express-Protokoll) ist.
  20. Verfahren nach einem der Ansprüche 18-19, wobei das Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in einem anderen Paket eingekapselt werden soll, das durch das Kommunikationsprotokoll nicht umgeordnet werden kann.
  21. Verfahren nach Anspruch 18, wobei das Paket, das gemäß dem Kommunikationsprotokoll umordnungsfähig ist, in einer PCI-Express-Nachricht für verbuchte Anforderungen eingekapselt wird.
  22. Verfahren nach einem der Ansprüche 18-21, wobei für separate Nachrichtentypen separate Ströme gepflegt werden, wobei der kryptografische Schlüssel und die Werte des Zählers zum Verschlüsseln von Daten von Paketen eines ersten Nachrichtentyps verwendet werden und ein zweiter kryptografischer Schlüssel und Werte eines zweiten Zählers zum Verschlüsseln von Daten von Paketen eines zweiten Nachrichtentyps verwendet werden.
  23. Verfahren nach Anspruch 22, wobei die Anzahl von Paketen des ersten Nachrichtentyps und des zweiten Nachrichtentyps, die an die zweite Rechenvorrichtung gesendet wurden, verfolgt wird und mit einem Paket eines dritten Nachrichtentyps an die zweite Rechenvorrichtung gesendet wird.
  24. Einrichtung, die Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 18-23 umfasst.
  25. Maschinenlesbarer Speicher, der maschinenlesbare Befehle enthält, die, wenn sie ausgeführt werden, das Verfahren nach einem der Ansprüche 18-23 implementieren sollen.
DE102019127892.9A 2018-12-07 2019-10-16 Sichern eines Plattform-Links mit Verschlüsselung Pending DE102019127892A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862776781P 2018-12-07 2018-12-07
US62/776,781 2018-12-07
US16/372,353 2019-04-01
US16/372,353 US11070527B2 (en) 2018-12-07 2019-04-01 Securing platform link with encryption

Publications (1)

Publication Number Publication Date
DE102019127892A1 true DE102019127892A1 (de) 2020-06-10

Family

ID=67842228

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019127892.9A Pending DE102019127892A1 (de) 2018-12-07 2019-10-16 Sichern eines Plattform-Links mit Verschlüsselung

Country Status (2)

Country Link
US (2) US11070527B2 (de)
DE (1) DE102019127892A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11030618B1 (en) 2016-09-30 2021-06-08 Winkk, Inc. Authentication and personal data sharing for partner services using out-of-band optical mark recognition
US11677730B2 (en) 2018-01-24 2023-06-13 Intel Corporation Device authentication
US11637694B2 (en) 2018-07-16 2023-04-25 Winkk, Inc. Secret material exchange and authentication cryptography operations
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
US11743240B2 (en) 2019-03-08 2023-08-29 Intel Corporation Secure stream protocol for serial interconnect
US20200328879A1 (en) * 2019-08-13 2020-10-15 Intel Corporation Secure communications over computer buses
US11936787B2 (en) 2019-12-10 2024-03-19 Winkk, Inc. User identification proofing using a combination of user responses to system turing tests using biometric methods
US11553337B2 (en) 2019-12-10 2023-01-10 Winkk, Inc. Method and apparatus for encryption key exchange with enhanced security through opti-encryption channel
US11574045B2 (en) 2019-12-10 2023-02-07 Winkk, Inc. Automated ID proofing using a random multitude of real-time behavioral biometric samplings
US11928193B2 (en) 2019-12-10 2024-03-12 Winkk, Inc. Multi-factor authentication using behavior and machine learning
US11588794B2 (en) * 2019-12-10 2023-02-21 Winkk, Inc. Method and apparatus for secure application framework and platform
US11328042B2 (en) 2019-12-10 2022-05-10 Winkk, Inc. Automated transparent login without saved credentials or passwords
US11652815B2 (en) 2019-12-10 2023-05-16 Winkk, Inc. Security platform architecture
US11657140B2 (en) 2019-12-10 2023-05-23 Winkk, Inc. Device handoff identification proofing using behavioral analytics
US11563582B2 (en) 2019-12-10 2023-01-24 Winkk, Inc. Method and apparatus for optical encryption communication using a multitude of hardware configurations
US11734105B2 (en) * 2020-07-06 2023-08-22 International Business Machines Corporation Efficient error reporting in a link interface
WO2022015775A1 (en) * 2020-07-14 2022-01-20 Microsoft Technology Licensing, Llc Streaming data to multi-tile processing system
US20210240655A1 (en) * 2020-11-16 2021-08-05 Intel Corporation Source ordering in device interconnects
US11477138B2 (en) * 2020-12-23 2022-10-18 Nokia Solutions And Networks Oy Packet reordering in packet switched networks
US11843943B2 (en) 2021-06-04 2023-12-12 Winkk, Inc. Dynamic key exchange for moving target
US11874776B2 (en) * 2021-06-25 2024-01-16 Intel Corporation Cryptographic protection of memory attached over interconnects
US11824999B2 (en) 2021-08-13 2023-11-21 Winkk, Inc. Chosen-plaintext secure cryptosystem and authentication
US20230046788A1 (en) * 2021-08-16 2023-02-16 Capital One Services, Llc Systems and methods for resetting an authentication counter
US20220179961A1 (en) * 2021-11-03 2022-06-09 Intel Corporation Method to support pci device having multiple spdm secure sessions with different security policies for each security domain by virtualized data object exchange
US20230385138A1 (en) * 2022-05-25 2023-11-30 Meta Platforms, Inc. Chip-to-chip interconnect with a layered communication architecture
CN117369906B (zh) * 2023-12-07 2024-02-09 成都市楠菲微电子有限公司 Pcie验证平台、方法、装置、存储介质及电子设备

Family Cites Families (25)

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

Also Published As

Publication number Publication date
US11070527B2 (en) 2021-07-20
US11658947B2 (en) 2023-05-23
US20210344653A1 (en) 2021-11-04
US20190281025A1 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
DE102019127892A1 (de) Sichern eines Plattform-Links mit Verschlüsselung
DE112013004094B4 (de) Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE102019128261A1 (de) Datenfreigabesteuerung auf der Basis von Authentifizierung und Verbindungsstreckenschutz
DE112017001430T5 (de) In-band-retimer-registerzugriff
EP3779762A1 (de) Sichere kommunikation über computerbusse
US11677730B2 (en) Device authentication
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112017006687T5 (de) Hochgeschwindigkeitsverbindungen mit kanalerweiterung
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112016003233T5 (de) Redriver-verbindungsprüfung
DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
DE112016003222T5 (de) Hochleistungsfähiger repeater
DE102018005753A1 (de) Serdes link training
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE112014000337T5 (de) Sichere Ausführung von Software-Modulen auf einem Computer
DE112018001138T5 (de) Hochleistungsverbindung
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE102019101810A1 (de) Reduzierung von Skew zwischen einem positiven und einem negativen Leiter, die ein differentielles Signalpaar tragen
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme
DE112016002909T5 (de) Flexible Interconnect-Architektur

Legal Events

Date Code Title Description
R012 Request for examination validly filed