DE102019128141A1 - Hardwaremechanismen zur linkverschlüsselung - Google Patents

Hardwaremechanismen zur linkverschlüsselung Download PDF

Info

Publication number
DE102019128141A1
DE102019128141A1 DE102019128141.5A DE102019128141A DE102019128141A1 DE 102019128141 A1 DE102019128141 A1 DE 102019128141A1 DE 102019128141 A DE102019128141 A DE 102019128141A DE 102019128141 A1 DE102019128141 A1 DE 102019128141A1
Authority
DE
Germany
Prior art keywords
cryptographic
data
counter
link
machine
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
DE102019128141.5A
Other languages
English (en)
Inventor
Reouven Elbaz
Hooi Kar Loo
Poh Thiam Teoh
Su Wei Lim
Patrick Maloney
Santosh Ghosh
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 DE102019128141A1 publication Critical patent/DE102019128141A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0827Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving distinctive intermediate devices or communication paths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

Es werden Verfahren, Systeme und Vorrichtungen offenbart, die mit Hardwaremechanismen zur Linkverschlüsselung assoziiert sind. In verschiedenen Ausführungsformen ist eine Interconnect-Schnittstelle mit einem Prozessorkern gekoppelt, um ein Peripheriegerät über einen Link, der zwischen dem Peripheriegerät und der Interconnect-Schnittstelle hergestellt ist, mit dem Prozessorkern zu verbinden. Die Interconnect-Schnittstelle ist zum Auswählen einer zweiten Kryptografiemaschine einer Mehrzahl von Kryptografiemaschinen, die auf der Interconnect-Schnittstelle für den Link instanziiert sind. Die Kryptografiemaschine ist zum symmetrischen Verschlüsseln von Daten, die durch den Link gesendet werden sollen. In mehreren spezifischen Ausführungsformen ist jede der Mehrzahl von Kryptografiemaschinen für eines von einem Anforderungstyp auf dem Link, einem virtuellen Kanal auf dem Link oder einem Anforderungstyp innerhalb eines virtuellen Kanals auf dem Link instanziiert.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung ist eine endgültige Patentanmeldung und beansprucht den Vorteil der Priorität gemäß 35 U.S.C. § 119(e) gegenüber der am 17. Dezember 2018 eingereichten vorläufigen Patentanmeldung Seriennr. 62/780,819 mit dem Titel HARDWARE MECHANISMS FOR LINK ENCRYPTION, deren Offenbarung hiermit durch Bezugnahme in ihrer Gesamtheit hierin aufgenommen wird.
  • TECHNISCHES GEBIET
  • Verschiedene Ausführungsformen können sich im Allgemeinen auf das technische Gebiet der Datenverarbeitung und insbesondere auf Hardwaremechanismen zur Linkverschlüsselung beziehen.
  • HINTERGRUND
  • Die hierin bereitgestellte Hintergrundbeschreibung dient lediglich der allgemeinen Darstellung des Kontexts der Offenbarung. Sofern hierin nicht anders angegeben, stellen die in diesem Abschnitt beschriebenen Materialien nicht den Stand der Technik bezüglich der Ansprüche in dieser Anmeldung dar, und durch ihre Aufnahme in diesen Abschnitt wird nicht anerkannt, dass sie zum Stand der Technik gehören.
  • Rechengeräte werden häufig in einer Weise gehäust, welche die Schutzvorkehrungen für die Geheimschlüssel und andere vertrauliche Informationen, die sie verarbeiten und verwalten, gegen einen Hardwareangreifer erfüllt. Wenn eine Plattform mit diskreten Komponenten gebaut wird, die von verschiedenen Anbietern stammen, könnten Geheimschlüssel, die ausgetauscht werden, potenziell einem Angreifer ausgesetzt sein, der den Eingabe/Ausgabe (E/A)-Link sondiert/beobachtet, der die zwei Geräte verbindet. Zum Beispiel können Geheimschlüssel auf einem PCle (Peripheral Component Interconnect Express)-Link zwischen einer zentralen Verarbeitungseinheit (CPU - Central Processing Unit) eines Hosts und einem Festkörperlaufwerk (SSD - Solid State Drive) exponiert sein. Computer- und Peripheriegerätehersteller sowie Endbenutzer und andere können von der Erweiterung von Vertrauensgrenzen von zentralen Verarbeitungseinheiten (CPUs) und Peripheriegeräten auf geräteverbindende E/A-Links profitieren.
  • Figurenliste
  • Die Ausführungsformen sind anhand der folgenden ausführlichen Beschreibung in Verbindung mit den beiliegenden Zeichnungen leicht zu verstehen. Zur Erleichterung dieser Beschreibung bezeichnen gleiche Bezugszeichen gleiche Strukturelemente. Ausführungsformen sind in den Figuren der beiliegenden Zeichnungen beispielhaft und nicht einschränkend veranschaulicht.
    • 1 veranschaulicht eine Ausführungsform eines Datenverarbeitungssystems, das eine Interconnect-Architektur umfasst.
    • 2 veranschaulicht eine Ausführungsform einer Interconnect-Architektur, die einen Schichtstapel umfasst.
    • 3 veranschaulicht eine Ausführungsform einer Anforderung oder eines Pakets, die/das innerhalb einer Interconnect-Architektur erzeugt oder empfangen wird.
    • 4 veranschaulicht eine Ausführungsform eines Sender- und Empfängerpaares für eine Interconnect-Architektur.
    • 5 veranschaulicht einen beispielhaften potenziellen Laufzeitangriff auf ein System mit selbstverschlüsselnden Laufwerken.
    • 6 ist ein vereinfachtes Blockdiagramm, das ein System mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen veranschaulicht.
    • 7 ist ein Blockdiagramm, das Zählermodusverschlüsselung gemäß verschiedenen Ausführungsformen veranschaulicht.
    • 8 veranschaulicht mögliche Kryptografiemaschinen in Linkprotokollstapeln von verbundenen Geräten in einem System gemäß verschiedenen Ausführungsformen.
    • 9 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen assoziiert sein kann.
    • 10 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen assoziiert sein kann.
    • 11 veranschaulicht ein Beispiel von möglichen ausgewählten Schlüsseln und Zählern in einem System mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen.
    • 12 veranschaulicht ein Beispiel von möglichen ausgewählten Schlüsseln und Zählern in einem System mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen.
    • 13 ist ein Blockdiagramm, das zusätzliche Funktionalität von Zählermodusverschlüsselung gemäß verschiedenen Ausführungsformen veranschaulicht.
    • 14 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen assoziiert sein kann.
    • 15 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen assoziiert sein kann.
    • 16 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen assoziiert sein kann.
    • 17 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen assoziiert sein kann.
    • 18 veranschaulicht zusätzliche Funktionalität zum Optimieren von Zählermodusverschlüsselung und -entschlüsselung gemäß verschiedenen Ausführungsformen.
    • 19 ist ein vereinfachtes Flussdiagramm, das eine beispielhafte Technik veranschaulicht, die mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen assoziiert sein kann.
    • 20 veranschaulicht ein beispielhaftes Gerät gemäß verschiedenen Ausführungsformen, das zur Verwendung zum Realisieren verschiedener Aspekte der vorliegenden Offenbarung geeignet ist.
    • 21 veranschaulicht ein Speichermedium mit ausführbaren Anweisungen gemäß verschiedenen Ausführungsformen.
    • 22 ist Blockdiagramm einer beispielhaften Computerarchitektur gemäß mindestens einer Ausführungsform der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Offenbarung stellt Hardwaremechanismen zur Linkverschlüsselung bereit. Genauer gesagt beschreibt diese Offenbarung ein System zum Verschlüsseln von Daten, die über einen E/A-Link zwischen zwei diskreten Geräten gesendet werden, um die Vertrauensgrenze von einzelnen Komponentengehäusen in einer Plattform zur Einbeziehung des Links zu erweitern. Die folgende Beschreibung detailliert Ausführungsformen, in welchen ein Verschlüsselungsschema innerhalb eines typischen Linkprotokollstapels installiert ist, während es die Vorteile bietet, dass es keine oder eine vernachlässigbare Auswirkung auf die Linkbandbreite hat, die Vertraulichkeit von Datennutzlast wahrt, die auf dem Link übertragen wird, und die Linkzuverlässigkeit aufrechterhält (z. B. verhindert, dass das Verschlüsselungsschema unendliche Fehlerausbreitung auf dem Link verursacht).
  • Die folgende ausführliche Beschreibung nimmt auf die beiliegenden Zeichnungen Bezug. In verschiedenen Zeichnungen können die dieselben Bezugszeichen zum Identifizieren der gleichen oder ähnlicher Elemente verwendet werden. In der folgenden Beschreibung werden zum Zwecke der Erläuterung und ohne Einschränkung spezifische Details, wie beispielsweise bestimmte Strukturen, Architekturen, Schnittstellen, Techniken usw. dargelegt, um ein umfassendes Verständnis der verschiedenen Aspekte verschiedener Ausführungsformen zu vermitteln. Für einen Fachmann, dem die vorliegende Offenbarung zur Verfügung steht, ist jedoch zu erkennen, dass die verschiedenen Aspekte der verschiedenen Ausführungsformen in anderen Beispielen realisiert werden können, die von diesen spezifischen Details abweichen. In bestimmten Fällen werden Beschreibungen allgemein bekannter Geräte, Schaltungen und Verfahren weggelassen, um die Beschreibung der verschiedenen Ausführungsformen verständlicher zu machen.
  • Verschiedene Vorgänge werden auf eine Weise, die für das Verständnis der veranschaulichenden Ausführungsformen am hilfreichsten ist, als mehrere getrennte Vorgänge der Reihe nach beschrieben; die Reihenfolge der Beschreibung ist jedoch nicht dahingehend auszulegen, dass diese Vorgänge unbedingt von einer Reihenfolge abhängig sind. Insbesondere müssen diese Vorgänge nicht in der Reihenfolge ihrer Darstellung durchgeführt werden.
  • Es können die Ausdrücke „in verschiedenen Ausführungsformen“, „in einigen Ausführungsformen“ und dergleichen hierin verwendet werden. Der Ausdruck bezieht sich im Allgemeinen nicht auf die gleichen Ausführungsformen, kann es jedoch. Der Ausdruck „A und/oder B“ bedeutet (A), (B) oder (A und B). Die Ausdrücke „A/B“ und „A oder B“ bedeuten ähnlich wie der Ausdruck „A und/oder B“ (A), (B) oder (A und B). Zum Zwecke der vorliegenden Offenbarung bedeutet der Ausdruck „mindestens eines von A und B“ (mindestens A), (mindestens B) oder (mindestens ein A und mindestens ein B). Die Beschreibung kann die Ausdrücke „in einer Ausführungsform“, „in Ausführungsformen“, „in einigen Ausführungsformen“ und/oder „in verschiedenen Ausführungsformen“ verwenden, die sich jeweils auf eine oder mehrere der gleichen oder verschiedene Ausführungsformen beziehen können. Außerdem sind die Begriffe „aufweisend“, „umfassend“ und dergleichen, wie in Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet, bedeutungsgleich, sofern aus dem Kontext nicht etwas anders hervorgeht.
  • Ausführungsformen können als ein Prozess beschrieben werden, der als ein Flussdiagramm, Ablaufdiagramm, ein Datenflussdiagramm, ein Strukturdiagramm oder ein Blockdiagramm dargestellt wird. Obwohl ein Flussdiagramm die Vorgänge als einen sequenziellen Prozess beschreiben kann, können viele der Vorgänge parallel, gleichzeitig oder simultan durchgeführt werden. Außerdem kann die Reihenfolge der Vorgänge umgestellt werden. Ein Prozess kann beendet sein, wenn seine Vorgänge abgeschlossen sind, er kann aber auch zusätzliche Schritte umfassen, die in der bzw. den Figur(en) nicht umfasst sind. Ein Prozess kann einem Verfahren, einer Funktion, einer Prozedur, einer Subroutine, einem Unterprogramm und dergleichen entsprechen. Wenn ein Prozess einer Funktion entspricht, kann seine Beendigung einer Rückkehr der Funktion zur aufrufenden Funktion und/oder der Hauptfunktion entsprechen. Außerdem können einige oder alle Vorgänge in zwei oder mehr getrennten Flussdiagrammen zu einer Ausführungsform kombiniert werden.
  • Ausführungsformen können im allgemeinen Kontext von computerausführbaren Anweisungen, wie beispielsweise Programmcode, Softwaremodulen und/oder Funktionsprozessen beschrieben werden, die von einer oder mehreren der zuvor erwähnten Schaltungen ausgeführt werden. Der Programmcode, die Softwaremodule und/oder die Funktionsprozesse können Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw. umfassen, die bestimmte Aufgaben ausführen oder bestimmte Datentypen implementieren. Der Programmcode, die Softwaremodule und/oder die Funktionsprozesse, die hierin erörtert werden, können unter Verwendung bestehender Hardware in bestehenden Kommunikationsnetzwerken implementiert werden. Zum Beispiel können der Programmcode, die Softwaremodule und/oder die Funktionsprozesse, die hierin erörtert werden, unter Verwendung bestehender Hardware an bestehenden Netzwerkeelementen oder Steuerknoten implementiert werden.
  • Wie hier verwendet, bezieht sich der Begriff „Schaltungsanordnung“ auf, ist Teil von oder umfasst Hardwarekomponenten, wie beispielsweise eine elektronische Schaltung, eine Logikschaltung, einen Prozessor (gemeinsam genutzt, dediziert oder als Gruppe), eine anwendungsspezifische integrierte Schaltung (ASIC - Application Specific Integrated Circuit), ein feldprogrammierbares Bauelement (FPD - Field-Programmable Device) (z. B. ein feldprogrammierbares Gate-Array (FPGA - Field-Programmable Gate Array), einen programmierbaren Logikbaustein (PLD - Programmable Logic Device), einen komplexen PLD (CPLD - Complex PLD), einen Hochleistungs-PLD (HCPLD - High-Capacity PLD), eine strukturierte ASIC oder einen programmierbaren Systemchip (SoC - System on Chip)), digitale Signalprozessoren (DSP) usw., die zum Bereitstellen der beschriebenen Funktionalität konfiguriert sind. In einigen Ausführungsformen kann die Schaltungsanordnung ein oder mehrere Software- oder Firmwareprogramme ausführen, um wenigstens einige der beschriebenen Funktionen bereitzustellen.
  • Wie hierin verwendet, kann sich der Begriff „Prozessorschaltungsanordnung“ auf eine Schaltungsanordnung, die zum sequenziellen oder automatischen Ausführen einer Folge von arithmetischen oder logischen Operationen; Aufzeichnen, Speichern und/oder Übertragen von digitalen Daten imstande ist, beziehen, ein Teil davon sein oder eine solche umfassen. Der Begriff „Prozessorschaltungsanordnung“ kann sich auf einen oder mehrere Anwendungsprozessoren, einen oder mehrere Basisbandprozessoren, eine physikalische zentrale Verarbeitungseinheit (CPU), einen Prozessor mit einem Kern, einen Prozessor mit zwei Kernen, einen Prozessoren mit drei Kernen, einen Prozessor mit vier Kernen und/oder jedes andere Gerät beziehen, das zum Ausführen oder anderweitigen Anwenden von computerausführbaren Anweisungen, wie beispielsweise Programmcode, Softwaremodulen und/oder Funktionsprozessen, imstande ist. Wie hierin verwendet kann sich der Begriff „Schnittstellenschaltungsanordnung“ auf eine Schaltungsanordnung, die für den Austausch von Informationen zwischen zwei oder mehr Komponenten oder Geräten sorgt, beziehen, ein Teil davon sein oder eine solche umfassen. Der Begriff „Schnittstellenschaltungsanordnung“ kann sich auf eine oder mehrere Hardwareschnittstellen (zum Beispiel Busse, Eingabe-/Ausgabe (E/A)-Schnittstellen, Peripheriekomponentenschnittstellen, Netzwerkschnittstellenkarten und/oder dergleichen) beziehen. Wie hierin verwendet, können sich die Begriffe „instanziieren“, „Instanziierung“ und dergleichen auf die Erzeugung einer Instanz beziehen, und „Instanz“ kann sich auf ein konkretes Auftreten eines Objekts beziehen, das zum Beispiel während der Ausführung eines Programmcodes auftreten kann.
  • Wie hierin verwendet, kann der Begriff „Computergerät“ jedes physische Hardwaregerät beschreiben, das eine Folge von arithmetischen oder logischen Operationen sequenziell und automatisch ausführen, zum Aufzeichnen/Speichern von Daten auf einem maschinenlesbaren Medium ausgestattet sein und Daten von einem oder mehreren anderen Geräten in einer Plattform oder in einem Kommunikationsnetzwerk senden und empfangen kann. Computergerät kann als Synonym für Computer, Datenverarbeitungsplattform, Datenverarbeitungsgerät usw. betrachtet und im Folgenden gelegentlich so bezeichnet werden. Der Begriff „Computersystem“ kann jede Art von miteinander verbundenen elektronischen Geräten, Computergeräten oder Komponenten davon umfassen. Außerdem können sich die Begriffe „Computersystem“ und/oder „System“ auf verschiedene Komponenten eines Computers beziehen, die miteinander kommunikativ gekoppelt sind. Ferner können sich die Begriffe „Computersystem“ und/oder „System“ auf mehrere Computergeräte und/oder mehrere Datenverarbeitungssysteme beziehen, die miteinander kommunikativ gekoppelt und zum gemeinsamen Nutzen von Datenverarbeitungs- und/oder Netzwerkressourcen konfiguriert sind. Wie hierin verwendet, kann sich der Begriff „Benutzer-Equipment“ oder „UE“ auf ein Gerät, wie beispielsweise ein Computergerät, mit Funkkommunikationsfähigkeiten beziehen und einen entfernen Benutzer von Netzwerkressourcen in einem Kommunikationsnetzwerk beschreiben. Der Begriff „Benutzer-Equipment“ oder „UE“ kann als Synonym für Client, Mobiltelefon, Mobilgerät, mobiles Endgerät, Benutzerendgerät, Mobileinheit, Mobilstation, mobiler Benutzer, Teilnehmer, Benutzer, Remote-Station, Zugangsagent, Benutzeragent, Empfänger, Funk-Equipment, rekonfigurierbares Funk-Equipment, rekonfigurierbares Mobilgerät usw. betrachtet und im Folgenden gelegentlich so bezeichnet werden.
  • Beispiele für „Computergeräte“, „Computersysteme“, „UEs“ usw. können Mobilfunktelefone oder Smartphones, Featurephones, Tablet-PCs, am Körper tragbare Datenverarbeitungsgeräte, autonome Sensoren, Laptop-Computer, Desktop-PCs, Videospielekonsolen, digitale Media-Player, Handheld-Nachrichtenübermittlungsgeräte, persönliche Datenassistenten, E-Book-Lesegeräte, Geräte für erweiterte Realität, Server-Computergeräte (z. B. eigenständig, rackmontiert oder als Bladeserver), Cloud-Computing-Dienste/-Systeme, Netzwerkelemente, fahrzeuginterne Infotainment (IVI - In-Vehicle Infotainment)-Geräte, fahrzeuginterne Entertainment (ICE - In-Car Entertainment)-Geräte, Armaturentafel (IC - Instrument Cluster)-Geräte, Head-up-Display (HUD)-Geräte, Onboard-Diagnose (OBD)-Geräte, Dashtop-Mobil-Equipments (DME), mobile Datenendgeräte (MDT- Mobile Data Terminal), elektronische Motormanagementsysteme (EEMS - Electronic Engine Management System), Elektronik-/Motorsteuereinheiten (ECU - Electronic/Engine Control Unit), Elektronik-/Motorsteuermodule (ECM - Electronic/Engine Control Module), eingebettete Systeme, Mikrocontroller, Steuermodule, Motormanagementsysteme (EMS), vernetzte oder „intelligente“ Appliances, Maschinenkommunikations (MTC - Machine-Type Communications)-Geräte, Maschine-zu-Maschine (M2M)-Geräte, Internet-der-Dinge (IoT - Internet of Things)-Geräte und/oder alle anderen ähnlichen elektronischen Geräte umfassen. Darüber hinaus kann sich der Begriff „in Fahrzeug eingebettetes Computergerät“ auf jedes Computergerät und/oder Computersystem beziehen, das physisch in einem Fahrzeug installiert, darin eingebaut oder anderweitig darin eingebettet ist.
  • Ein Datenverarbeitungssystem oder eine Plattform kann verschiedene Geräte verwenden, die mit einem Computerbus extensiv gekoppelt sind. Ein Computerbus kann zugehörige Hardwarekomponenten (Draht, Glasfaser usw.) und Software, einschließlich Kommunikationsprotokollen, umfassen. Ein PCI (Peripheral Component Interconnect)-Bus oder ein PCI Express (PCle, PCI-E) kann ein Computerbus sein, der auf einem Spezifikations- oder Schnittstellenstandard basiert, der einen Mechanismus für Systemsoftware oder einen Systemtreiber zum Durchführen verschiedener Vorgänge in Bezug auf die Konfiguration eines Geräts bereitstellt, das mit dem PCI-Bus oder dem PCIe-Bus gekoppelt ist. Geräte oder Komponenten, die mit einem Computerbus gekoppelt sind, können auch als Funktionen bezeichnet werden. PCle kann in einem Verbraucher, Server und industriellen Anwendungen, beispielsweise einem Interconnect auf Hauptplatinenebene (zum Verbinden von Peripheriegeräten, die auf der Hauptplatine montiert sind), einem passiven Backplane-Interconnect, und als eine Erweiterungskartenschnittstelle für Add-in-Karten angewendet werden. PCIe-Geräte kommunizieren über eine logische Verbindung, die Interconnect oder Link genannt wird. Ein Link ist ein Punkt-zu-Punkt-Kommunikationskanal zwischen zwei PCIe-Ports, der den beiden das Senden und Empfangen von normalen PCI-Anforderungen, z. B. Konfiguration, Eingabe/Ausgabe (E/A) oder Speicher-Lese-/-Schreibvorgängen, und Interrupts ermöglicht. Auf physikalischer Ebene kann ein Link aus einer oder mehreren Lanes bestehen. Peripheriegeräte mit niedriger Geschwindigkeit, beispielsweise eine 802.11 Wi-Fi-Karte, verwenden einen Link mit einer einzigen Lane (×1), während ein Grafikadapter typischerweise einen wesentlich breiteren und schnelleren Link mit 16 Lanes verwendet. Es ist zu erwähnen, dass „Link“ sich auch auf Kommunikationskanäle beziehen kann, die mit einem anderen Typ von Schnittstellenstandard verbunden sind, der Hochgeschwindigkeitskomponenten verbindet.
  • Obwohl die folgenden Ausführungsformen in Bezug Linkverschlüsselung in integrierten Schaltungen, wie beispielsweise Computerplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikbausteinen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen, die hierin beschrieben werden, können auf andere Typen von Schaltungen oder Halbleitergeräten angewendet werden, die ebenfalls von Linkverschlüsselung profitieren können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Systemchips (SoC - System-on-Chip) beschränkt. Ausführungsformen können auch in anderen Geräten, wie beispielsweise Desktop-Computersystemen, Ultrabooks™, Handheld-Geräten, Tablets, anderen flachen Notebooks und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Geräte umfassen Zellulartelefone, Internetprotokoll-Geräte, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), einen Systemchip, Netzcomputer (NetPC), Set-Top-Boxen, Netzwerkhubs, Weitverkehrsnetz (WAN - Wide Area Network)-Switches oder jedes andere System, das die im Folgenden gelehrten Funktionen und Operationen ausführen kann. Außerdem sind die hierin beschriebenen Vorrichtungen Verfahren und Systeme nicht auf physische Computergeräte beschränkt, sondern können sich auch auf Software und Optimierungen zum Schützen der Integrität von Komponentenkommunikationen beziehen. Wie aus der folgenden Beschreibung hervorgeht, sind die hierin beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (einerlei ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) vital für eine energieeffiziente Datenverarbeitung im Gleichgewicht mit Sicherheitsüberlegungen (z. B. Integrität und Vertraulichkeit).
  • Mit zunehmendem Fortschritt von Computersystemen werden die Komponenten darin komplexer. Folglich nimmt auch die Komplexität der Interconnect-Architektur zum Koppeln von und Kommunizieren zwischen den Komponenten zu, um zu gewährleisten, dass die Bandbreitenanforderungen für optimalen Komponentenbetrieb erfüllt werden. Außerdem verlangen verschiedene Marktsegmente eine Anpassung verschiedener Aspekte von Interconnect-Architekturen an die Marktbedürfnisse. Zum Beispiel benötigen Server eine höhere Performance, während das mobile Ökosystem manchmal imstande ist, für Energieeinsparungen Gesamtleistung zu opfern. Dennoch ist es ein besonderes Ziel der meisten Fabrics, die höchstmögliche Performance bei maximaler Energieeinsparung bereitzustellen. Im Folgenden wird eine Anzahl von Zwischenverbindungen erörtert, die potenziell von Aspekten der hierin beschriebenen Ausführungsformen profitieren könnten.
  • Eine Interconnect-Fabric-Architektur umfasst die PCI (Peripheral Component Interconnect)-Express (PCIe)-Architektur. Ein Hauptziel von PCle ist es, Komponenten und Geräte von verschiedenen Anbietern zu Interoperabilität in einer offenen Architektur zu befähigen, die mehrere Marktsegmente, (Desktop- und Mobil-) Clients, (Standard-, Rack- und Enterprise-) Server sowie eingebettete und Kommunikationsgeräte umspannt. PCI Express ist ein Hochleistungs-Universal-E/A-Interconnect, der für eine große Vielfalt von künftigen Computer- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie beispielsweise Nutzungsmodell, Lade-/Speicherarchitektur und Softwareschnittstellen, wurden all ihre Überarbeitungen hindurch beibehalten, während frühere Parallelbusimplementierungen durch eine hochskalierbare, voll serielle Schnittstelle ersetzt wurden. Die jüngsten Versionen von PCI Express nutzen die Fortschritte bei Punkt-zu-Punkt-Interconnects, switchbasierter Technologie und paketiertem Protokoll, um neue Performance- und Merkmalslevels bereitzustellen. Leistungsverwaltung, Dienstqualität (QoS), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den fortschrittlichen Merkmalen, die von PCI Express unterstützt werden.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform einer Fabric veranschaulicht, die aus Punkt-zu-Punkt-Links besteht, die einen Satz von Komponenten miteinander verbinden. Ein System 100 umfasst einen Prozessor 105 und einen Systemspeicher 110, die mit einem Controllerhub 115 gekoppelt sind. Der Prozessor 105 umfasst ein beliebiges Verarbeitungselement, wie beispielsweise einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 105 ist mit dem Controllerhub 115 durch einen Frontside-Bus (FSB) 106 gekoppelt. In einer Ausführungsform ist der FSB 106 ein serieller Punkt-zu-Punkt-Interconnect, wie im Folgenden beschrieben. In einer anderen Ausführungsform umfasst der Link 106 eine serielle, differenzielle Interconnect-Architektur, die mit einem anderen Interconnect-Standard kompatibel ist.
  • Der Systemspeicher 110 umfasst ein beliebiges Speichergerät, wie beispielsweise einen Direktzugriffsspeicher (RAM - Random Access Memory), einen nichtflüchtigen (NV - Non-Volatile) Speicher oder einen anderen Speicher, auf den durch Geräte im System 100 zugegriffen werden kann. Der Systemspeicher 110 ist mit dem Controllerhub 115 durch eine Speicherschnittstelle 116 gekoppelt. Beispiele einer Speicherschnittstelle umfassen eine Doppeldatenraten (DDR)-Speicherschnittstelle, eine Zweikanal-DDR-Speicherschnittstelle und eine DRAM (dynamischer RAM)-Speicherschnittstelle.
  • In einer Ausführungsform kann der Controllerhub 115 einen Stammhub, Stammkomplex oder Stammcontroller in einer PCle oder PCIE (Peripheral Component Interconnect Express)-Zwischenverbindungshierarchie umfassen. Beispiele des Controllerhubs 115 umfassen einen Chipsatz, einen Speichercontrollerhub (MCH - Memory Controller Hub), eine Northbridge, einen Interconnect-Controllerhub (ICH - Interconnect Controller Hub), eine Southbridge und einen Stammcontroller/-hub. Der Begriff Chipsatz bezieht sich häufig auf zwei physisch getrennte Controllerhubs, d. h. einen Speicher-Controllerhub (MCH), der mit einem Zwischenverbindungs-Controllerhub (ICH) gekoppelt ist. Es ist zu erwähnen, dass aktuelle Systeme den MCH oft in den Prozessor 105 integriert aufweisen, während der Controllerhub 115 zum Kommunizieren mit E/A-Geräten in ähnlicher Weise ist, wie im Folgenden beschrieben. In einigen Ausführungsformen wird Partner-zu-Partner-Routing optional durch einen Stammkomplex (z. B. 115) unterstützt.
  • Hierbei ist der Controllerhub 115 durch einen seriellen Link 119 mit einem Switch bzw. einer Brücke 120 gekoppelt. Eingangs-/Ausgangsmodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, umfassen/implementieren einen Schichtprotokollstapel, um Kommunikation zwischen dem Controllerhub 115 und dem Switch 120 bereitzustellen. In einer Ausführungsform sind mehrere Geräte imstande, mit dem Switch 120 gekoppelt zu werden.
  • Der Switch bzw. die Brücke 120 leitet Pakete/Nachrichten von einem Gerät 125 stromaufwärts, d. h. eine Hierarchie nach oben zu einem Stammkomplex, zum Controllerhub 115, und stromabwärts, d. h. eine Hierarchie nach unten weg von einem Stammcontroller, vom Prozessor 105 oder dem Systemspeicher 110 zum Gerät 125. Der Switch 120 wird in einer Ausführungsform als logische Anordnung von mehreren virtuellen PCI-zu-PCI-Brückengeräten bezeichnet. Das Gerät 125 umfasst ein beliebiges internes oder externes Gerät oder eine beliebige interne oder externe Komponente, das/die mit einem elektronischen System gekoppelt werden soll, wie beispielsweise ein E-/A-Gerät, einen Netzschnittstellencontroller (NIC - Network Interface Controller), eine Add-in-Karte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, ein Speichergerät, ein Festkörperlaufwerk (SSD - Solid State Drive), eine CD-/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, ein tragbares Speichergerät, ein Firewire-Gerät, ein USB (Universal Serial Bus)-Gerät, einen Scanner und andere Eingabe-/Ausgabe-Geräte. In der PCIe-Sprache werden solche Begriffe wie Gerät häufig als Endpunkt bezeichnet. Obwohl nicht spezifisch dargestellt, kann das Gerät 125 eine PCIe-zu-PCI/PCI-X-Brücke umfassen, um Legacy- oder andere Versionen von PCI-Geräten zu unterstützen. Endpunktgeräte in PCle werden häufig als integrierte Legacy-, PCle- oder Stammkomplex-Endpunkte klassifiziert.
  • Unter Hinwendung zu 2 ist eine Ausführungsform eines Schichtprotokollstapels 200 veranschaulicht, der in einer oder mehreren Komponenten eines mobilen Datenverarbeitungsgeräts, u. a. beispielsweise einem Anwendungsprozessor oder einem Basisbandprozessor oder einem Modem, implementiert sein kann. Der Schichtprotokollstapel 200 umfasst Logik, die in Hardwareschaltungsanordnung, Software und/oder Firmware implementiert ist, um eine beliebige Form eines geschichteten Kommunikationsstapels, wie beispielsweise einen QPI (Quick Path Interconnect)-Stapel, einen PCIe-Stapel, einen Hochleistungs-Computer-Interconnect-Stapel der nächsten Generation oder einen anderen Schichtstapel zu implementieren. Obwohl die unmittelbar nachstehende Erörterung in Bezug auf 2 bis 4 mit einem PCIe-Stapel in Beziehung steht, können ähnliche Konzepte auch auf andere Interconnect-Stapel, u. a. beispielsweise OpenCAPI™, Gen-Z™, UPI, Universal Serial Bus (USB), Cache Coherent Interconnect for Accelerators (CCIX™), Infinity™ von Advanced Micro Device™ (AMD™), Common Communication Interface (CCI) oder Centriq™-Interconnect von Qualcomm™, angewendet werden.
  • In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der eine Transaktionsschicht 205, eine Linkschicht 210 (hierin auch als ,Datenlinkschicht‘ bezeichnet) und eine physikalische Schicht 220 umfasst. Eine Schnittstelle, beispielsweise Schnittstelle 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 dargestellt werden. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, das/die einen Protokollstapel implementiert/umfasst.
  • Transaktionsschicht
  • In einer Ausführungsform dient die Transaktionsschicht 205 zur Bereitstellung einer Schnittstelle zwischen einem Verarbeitungskern eines Geräts und der Interconnect-Architektur, wie beispielsweise der Datenlinkschicht 210 und der physikalischen Schicht 220. In dieser Hinsicht umfasst eine Hauptverantwortung der Transaktionsschicht 205 die Paketierung und Depaketierung von Paketen (d. h. Transaktionsschichtpaketen oder TLPs (Transaction Layer Packets)). Die Transaktionsschicht 205 steuert typischerweise kreditbasierte Flusskontrolle für TLPs. PCle implementiert geteilte Transaktionen, d. h. Transaktionen mit zeitlich getrennter Anforderung und Antwort, die es einem Link ermöglichen, anderen Verkehr zu übertragen, während das Zielgerät Daten für die Antwort sammelt.
  • Außerdem verwendet PCle kreditbasierte Flusskontrolle. In diesem Schema zeigt ein Gerät eine anfängliche Menge von Kredit für jeden der Empfangspuffer in der Transaktionsschicht 205 an. Ein externes Gerät am gegenüberliegenden Ende des Links, wie beispielsweise ein Controllerhub 115 in 1, zählt die Anzahl von Krediten, die von jedem TLP konsumiert werden. Eine Transaktion kann gesendet werden, wenn die Transaktion eine Kreditgrenze nicht überschreitet. Bei Empfang einer Antwort wird eine Kreditmenge wiederhergestellt. Ein Vorteil solch eines Kreditschemas ist, dass die Latenzzeit der Kreditrückgabe die Performance nicht beeinträchtigt, vorausgesetzt, dass die Kreditgrenze nicht erreicht wird.
  • In einer Ausführungsform umfassen vier Transaktionsadressräume einen Speicheradressraum, einen Konfigurationsadressraum, einen Nachrichtenadressraum und einen Eingabe-/Ausgabe-Adressraum. Speicherraumtransaktionen umfassen eine oder mehrere von Leseanforderungen und Schreibanforderungen, um Daten an einen bzw. von einem im Speicher zugeordneten Speicherort zu übertragen. In einer Ausführungsform sind Speicherraumtransaktionen imstande, zwei verschiedene Adressformate, z. B. ein kurzes Adressformat, wie beispielsweise eine 32-Bit-Adresse, oder ein langes Adressformat, wie beispielsweise eine 64-Bit-Adresse, zu verwenden. Konfigurationsraumtransaktionen werden zum Zugreifen auf Konfigurationsraum der PCIe-Geräte verwendet. Transaktionen für den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) werden definiert, um Inband-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher paketiert die Transaktionsschicht 205 in einer beispielhaften Ausführungsform Paket-Header/-Nutzdaten 206. Das Format für aktuelle Paket-Header/-Nutzdaten ist in der PCIe-Spezifikation auf der Website der PCIe-Spezifikation zu finden.
  • Kurz unter Bezugnahme auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors veranschaulicht. In einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Übertragen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifikation von Transaktionen in einem System. Andere potenzielle Verwendungsmöglichkeiten umfassen ein Verfolgen von Modifikationen der Standardtransaktionsreihenfolge und Transaktionsassoziation mit virtuellen Kanälen.
  • Der Transaktionsdeskriptor 300 umfasst ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306. Im veranschaulichten Beispiel ist das globale Kennungsfeld 302 so dargestellt, dass es ein lokales Transaktionskennungsfeld 308 und ein Ursprungskennungsfeld 310 aufweist. In einer Ausführungsform ist das Feld einer globale Kennung 302 für alle unerledigten Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein Feld, das von einem anfordernden Agenten erzeugt wird und für alle unerledigten Anforderungen, die eine Fertigstellung für diesen anfordernden Agenten benötigen, eindeutig ist. Außerdem identifiziert in diesem Beispiel die Ursprungskennung 310 den Requester-Agenten innerhalb einer PCIe-Hierarchie eindeutig. Demgemäß stellt das lokale Transaktionskennungsfeld 308 zusammen mit der Ursprungs-ID 310 eine globale Identifikation einer Transaktion innerhalb eines Hierarchiebereichs bereit.
  • Das Attributfeld 304 spezifiziert Charakteristiken und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 304 potenziell verwendet, um zusätzliche Informationen bereitzustellen, welche eine Modifikation der Standardhandhabung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Reihenfolge-Feld 316 und ein Nicht-Abhören-Feld 318. Hierbei kann das Prioritäts-Teilfeld 312 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuordnen. Das reservierte Attributfeld 314 wird zur zukünftigen oder anbieterdefinierten Nutzung reserviert gelassen. Mögliche Nutzungsmodelle, welche Prioritäts- und Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Reihenfolge-Attributfeld 316 verwendet, um optionale Informationen zu liefern, die den Reihenfolgetyp übertragen, welcher Standardreihenfolgeregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bedeutet ein Reihenfolgeattribut von „0“, dass Standardreihenfolgeregeln angewendet werden sollen, wobei ein Reihenfolgeattribut von „1“ eine zwanglose Reihenfolge bedeutet, wobei Schreiboperationen Schreiboperationen in der gleichen Richtung überholen können und Leseausführungen Schreiboperationen in der gleichen Richtung überholen können. Das Abhören-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen abgehört werden. Wie dargestellt, identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Linkschicht
  • Neuerlich unter Bezugnahme auf 2 fungiert eine Linkschicht 210, die auch als Datenlinkschicht 210 bezeichnet wird, als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der physikalischen Schicht 220. In einer Ausführungsform ist eine Zuständigkeit der Datenlinkschicht 210 die Bereitstellung eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs - Transaction Layer Packets) zwischen zwei Komponenten von einem Link. Eine Seite der Datenlinkschicht 210 akzeptiert von der Transaktionsschicht 205 paketierte TLPs, wendet eine Paketsequenzkennung 211, d. h. eine Identifikationsnummer oder Paketnummer an, berechnet einen Fehlererkennungscode, d. h. CRC 212, und wendet diesen an und übermittelt die modifizierten TLPs an die physikalische Schicht 220 zur Übertragung über ein physisches an ein externes Gerät.
  • Physikalische Schicht
  • In einer Ausführungsform umfasst die physikalische Schicht 220 einen logischen Teilblock 221 und einen elektrischen Teilblock 222, um ein Paket physikalisch an eine externe Einrichtung zu senden. Hierbei ist der logische Teilblock 221 für die „digitalen“ Funktionen der physikalischen Schicht 220 zuständig. In dieser Hinsicht umfasst der logische Teilblock einen Sendeabschnitt zum Vorbereiten von abgehenden Informationen zur Übertragung durch den elektrischen Teilblock 222 und einen Empfangsabschnitt zum Identifizieren und Vorbereiten von empfangenen Informationen vor ihrer Weitergabe an die Linkschicht 210.
  • Die physikalische Schicht 220 umfasst einen Sender und einen Empfänger. Der Sender wird durch den logischen Teilblock 221 mit Symbolen versorgt, welche der Sender serialisiert und an ein externes Gerät weitersendet. Der Empfänger wird mit serialisierten Symbolen von einem externen Gerät versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und an den logischen Teilblock 221 geliefert. In einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei Zehn-Bit-Symbole gesendet/empfangen werden. In anderen Ausführungsformen wird u. a. 128b/130b-Übertragungscodierung verwendet. Hierbei werden spezielle Symbole zum Einrahmen eines Pakets mit Rahmen 223 verwendet. Außerdem stellt der Empfänger in einem Beispiel auch einen Symboltakt bereit, der aus dem ankommenden seriellen Strom rückgewonnen wird.
  • Obwohl, wie bereits erwähnt, die Transaktionsschicht 205, die Linkschicht 210 und die physikalische Schicht 220 in Bezug auf eine spezifische Ausführungsform eines PCI-Protokollstapels erörtert werden, ist ein Schichtprotokollstapel nicht darauf beschränkt. Tatsächlich kann jedes Schichtprotokoll einbezogen/implementiert werden. Als ein Beispiel umfasst ein Port bzw. eine Schnittstelle, der/die als ein Schichtprotokoll dargestellt ist: (1) eine erste Schicht zum Paketieren von Paketen, z. B. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, z. B. eine Linkschicht; und eine dritte Schicht zum Senden der Pakete, z. B. eine physikalische Schicht. Als ein spezifisches Beispiel wird ein Schichtprotokoll einer allgemeinen Standardschnittstelle (CSI - Common Standard Interface) verwendet.
  • Als Nächstes ist unter Bezugnahme auf 4 ist eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Fabric veranschaulicht. Obwohl eine Ausführungsform eines seriellen Punkt-zu-Punkt-PCIe-Links veranschaulicht ist, ist ein serieller Punkt-zu-Punkt-Link nicht darauf beschränkt, da er einen beliebigen Übertragungspfad zum Senden von seriellen Daten umfasst. In der dargestellten Ausführungsform umfasst ein elementarer PCIe-Link zwei differenziell gesteuerte Niederspannungssignalpaare umfassen: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Demgemäß umfasst ein Gerät 405 Sendelogik 406, um Daten an ein Gerät 410 zu senden, und Empfangslogik 407, um Daten vom Gerät 410 zu empfangen. Mit anderen Worten sind zwei Sendepfade, d. h. Pfade 416 und 417, und zwei Empfangsfade, d. h. Pfade 418 und 419, in einem PCIe-Link umfasst.
  • „Sendepfad“ bezieht sich auf jeden Pfad zum Senden von Daten, wie beispielsweise eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, einen Infrarotkommunikationslink oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Geräten, wie beispielsweise Gerät 405 und Gerät 410, wird als Link, beispielsweise Link 415, bezeichnet. Ein Link kann eine Lane unterstützen - wobei jede Lane einen Satz von differenziellen Signalpaaren (ein Paar zum Senden, ein Paar zum Empfangen) darstellt. Zum Skalieren der Bandbreite kann ein Link mehrere Lanes aggregieren, die mit xN bezeichnet werden, wobei N eine beliebige unterstützte Linkbreite ist, wie beispielsweise 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • „Differenzielles Paar“ bezieht sich auf zwei Sendepfade, wie beispielsweise die Leitungen 416 und 417, zum Senden von differenziellen Signalen. Als ein Beispiel steuert die Leitung 417 von einem logischen H-Pegel auf einen logischen L-Pegel, d. h. abfallende Flanke, wenn die Leitung 416 von einem Niederspannungspegel auf einen Hochspannungspegel umschaltet, d. h. ansteigende Flanke. Differenzielle Signale weisen potenziell bessere elektrische Charakteristiken, wie beispielsweise eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschreitung/- unterschreitung, Nachschwingen usw. auf. Dies ermöglicht ein besseres Taktfenster, welches schnellere Übertragungsfrequenzen ermöglicht.
  • Zum Zwecke der Veranschaulichung bestimmter beispielhafter Techniken zur Verwendung von Hardwaremechanismen zur Linkverschlüsselung gemäß den hierin offenbarten Ausführungsformen ist es wichtig, die Aktivitäten zu verstehen, die in Systemen stattfinden können, in welchen Links zum Verbinden von Geräten in einer Plattform miteinander verwendet werden. Demgemäß können die folgenden grundlegenden Informationen als eine Basis betrachtet werden, von der aus die vorliegende Offenbarung entsprechend erläutert werden kann.
  • Im Zusammenhang mit dem Schutz von ruhenden Daten werden häufig zwei Ansätze zur Behandlung des Problems verwendet: die Technologie selbstverschlüsselnder Laufwerke oder der CPU-basierter Verschlüsselung. Wenn das Bedrohungsmodell für ruhende Daten auf Angriffe auf laufende Systeme (z. B. Mehrbenutzersystem mit Fernzugriff) erweitert wird, muss der exponierte Interconnect geschützt werden, um die gleichen Sicherheitseigenschaften zu erzielen. CPU-basierte Verschlüsselung behandelt das betreffende Problem, wenn Daten am Ursprung verschlüsselt (und infolgedessen bei Verlassen des CPU-Gehäuses verschlüsselt übertragen) werden. Selbstverschlüsselnde Laufwerke benötigen dagegen zusätzlichen Schutz, da Verschlüsselung am Ziel erfolgt.
  • 5 veranschaulicht ein System 500 mit einer beispielhaften Bedrohung, die gemindert werden muss. Ein Systemchip (SoC) 510 ist in einer Vertrauensgrenze 502 umfasst. In diesem Beispiel ist auch ein dynamischer Direktzugriffsspeicher (DRAM - Dynamic Random Access Memory), der mit dem SoC 510 gekoppelt ist, in der Vertrauensgrenze 502 umfasst. Außerdem ist ein Peripheriegerät (z. B. ein selbstverschlüsselndes Festkörperlaufwerk 550), das über einen E/A-Link oder Bus 506 mit dem SoC 510 verbunden ist, in einer separaten Vertrauensgrenze 504 umfasst. Der E/A-Link 506 ist nicht in den Vertrauensgrenzen umfasst und stellt daher einen Angriffsvektor 508 dar. Für diese beispielhafte Bedrohung wird Schutz des Links 506 zwischen dem CPU-Gehäuse und dem Laufwerk benötigt, um die Vertraulichkeit von Daten zu schützen, die über den Link gesendet werden.
  • Ein konkretes Beispiel dieser Art von Bedrohung besteht im Cloud-Marktsegment, in welchem physikalische Angriffe zunehmend anzutreffen sind. Im Allgemeinen kann jedes Mehrbenutzersystem mit Fernzugriff Gefahr laufen, dass ein Angreifer den Bus zwischen dem SoC und dem SSD anzapft, während das System in Verwendung ist. Zum Beispiel kann ein böswilliger Benutzer einen Link abhören, der auf einer Plattform zwischen einem SoC und einem Peripheriegerät (z. B. einem SSD) exponiert ist. In noch einem anderen Beispiel kann die Bedrohung einen Dieb umfassen, der ein System stiehlt. Zum Beispiel könnte ein böswilliger Benutzer einen Angriff auf ein System in Verwendung (z. B. einen Server in Verwendung) durchführen oder das System (z. B. ein Client-System, wie beispielsweise einen PC oder ein Handheld-Gerät) stehlen und einen Angriff durchführen.
  • Blockchiffre-Verschlüsselung ist ein Typ von Verschlüsselung, der Schutz für Daten bereitstellen könnte, die über einen Link, beispielsweise den Link 506, gesendet werden. Einige Blockchiffres könnten in Abhängigkeit von der Link-Betriebsfrequenz jedoch möglicherweise zwischen 15 und 50 Zyklen Latenz einführen. Solch eine zusätzliche Latenz ist in den meisten Plattformen unerwünscht. Es werden Lösungen zum Schützen der Vertraulichkeit von Daten, die zwischen Komponenten einer Plattform gesendet werden, bei gleichzeitiger Minimierung der Auswirkung auf die Performance benötigt.
  • In einer verbesserten Systemimplementierung, wie in 1 dargestellt, können Kryptografiemaschinen implementiert werden, um den Schutz von Links zwischen Komponenten oder Geräten (z. B. Systemchip, Peripheriegeräten usw.) in einer Plattform zu unterstützen. Genauer gesagt stellen Ausführungsformen hierin die Vertraulichkeit von Daten bereit, die auf einem Link übertragen werden, der auf einer Plattform zwischen einer zentralen Verarbeitungseinheit (z. B. einem SoC) und einem Gerät, beispielsweise einem SSD-Komponentengehäuse, oder einem anderen Peripheriegerät in der Plattform exponiert ist. In einer oder mehreren Ausführungsformen wird zum Schützen von Daten, die auf einem Link zwischen einer CPU und einem Peripheriegerät kommuniziert werden, symmetrische Verschlüsselung auf die Daten angewendet, die auf dem Link (z. B. zwischen dem SoC und dem SSD) übertragen werden. Eine oder mehrere Ausführungsformen setzen Zählermodusverschlüsselung in Kryptografiemaschinen ein, die auf oder über der Transaktionsschicht im Protokollstapel vorgesehen sind. Zusätzliche Merkmale können einbezogen werden, um die Link-Reihenfolgeanforderungen ohne Beeinträchtigung der Verschlüsselung einzuhalten, Zähler zu initialisieren und zu verwalten, um zu gewährleisten, dass die Sicherheitsanforderungen für Zählermodusverschlüsselung erfüllt werden, und schwerwiegende Linkfehler, die darauf zurückzuführen sind, dass die Zähler zum Beispiel aufgrund von fehlerhaften Paketen oder Empfängerpufferüberlauf nicht synchronisiert sind, zu erkennen und danach Wiederherstellung durchzuführen.
  • Hierin beschriebene Ausführungsformen bieten signifikante technische Verbesserungen bei der Datenübertragung in einer Plattform zur Wahrung der Vertraulichkeit der Daten. Zählermodusverschlüsselung, die in jedem Paar von Kryptografiemaschinen verwendet wird, die in einer Plattform über einen Link verbunden sind, kann die Vertraulichkeit von Übertragungsdaten wahren, während sie den einzigartigen Vorteil des Transparentseins sowohl hinsichtlich der Bandbreite als auch der Latenz bietet, da nur ein Exklusiv-ODER (XOR)-Gatter zum Datenpfad hinzugefügt wird, und ein XOR-Gatter typischerweise von der Controller-Zykluszeit absorbiert werden kann. Demnach haben Ausführungsformen mit Zählermodusverschlüsselung keine oder eine vernachlässigbare Auswirkung auf die Linkbandbreite. Außerdem können hierin beschriebene Ausführungsformen durch Erkennen von nicht synchronisierten Zählern und Wiederherstellen daraus die Linkzuverlässigkeit aufrechterhalten, derart dass verhindert wird, dass das Verschlüsselungsschema unendliche Fehlerausbreitung auf dem Link verursacht.
  • Unter Hinwendung zu 6 zeigt 6 ein beispielhaftes System 600 zum Wahren der Vertraulichkeit von Daten, welche die Links zwischen getrennten Komponenten in einer Plattform, beispielsweise einer Host-CPU und einem Peripheriegerät, durchlaufen. Im Allgemeinen umfasst das System einen Systemchip (SoC) 610, einen dynamischen Direktzugriffsspeicher (DRAM) 630 und ein Festkörperlaufwerk (SSD) 650. Der SoC 610 und der DRAM 630 sind innerhalb einer Vertrauensgrenze 602 enthalten, und das SSD 650 ist innerhalb einer separaten Vertrauensgrenze 604 enthalten. Der SoC 610 umfasst eine CPU 612, einen Systemagenten 614, einen Speichercontroller 616, und eine Interconnect-Schnittstelle, beispielsweise einen PCle (Peripheral Component Interconnect Express)-Stammport 620 (hierin auch als ,PCIe-Controller‘ oder ,Stammkomplex‘ bezeichnet). Das SSD 650 umfasst eine PCIe-Endpunktschnittstelle 660, die über einen Link 606 mit dem PCIe-Stammport 620 verbunden ist. Ein Paar von Kryptografiemaschinen (CE - Cryptographic Engine) 622 und 662 ist mit gegenüberliegenden Enden des Links 606 verbunden. Wie in 6 dargestellt, ist die CE 622 im PCIe-Stammport 620 des SoCs 610 vorgesehen, und die CE 662 ist in der PCIe-Endpunktschnittstelle 660 des SSDs 650 vorgesehen.
  • Der PCIe-Stammport 620 kann Teil eines Stammkomplexes sein, der im SoC 610 zum Verwalten von Kommunikationen zwischen der CPU 612 und einem oder mehreren Endpunkten, wie beispielsweise dem SSD 650, implementiert ist. Die Endpunkte können jedes Peripheriegerät (z. B. SSDs, Videokarten, Soundkarten, Netzwerkschnittstellenkarten usw.) umfassen, das über eine Interconnect-Schnittstelle (z. B. PCle-Endpunktschnittstelle 660) zur Kommunikation mit einer entsprechenden Interconnect-Schnittstelle (z. B. PCIe-Stammport, PCIe-Switch usw.) verfügt. Die CPU 612 kann in einem SoC, beispielsweise SoC 610, oder jedem anderen geeigneten Datenverarbeitungssystem (z. B. Desktop, Laptop, Handheld-Gerät, Tablet, Server, Appliance, Smartphones, usw.) vorgesehen sein.
  • Paare von Kryptografiemaschinen können an gegenüberliegenden Enden eines Links vorgesehen sein, der zwei PCIe-Interconnect-Schnittstellen verbindet, beispielweise Link 606 zwischen dem PCIe-Stammport 620 und der PCIe-Endpunktschnittstelle 660. Eine oder mehrere Ausführungsformen von Linkverschlüsselung umfassen Kryptografiemaschinen im PCIe-Stammport 620 und in der PCIe-Endpunktschnittelle 6609, die unter Verwendung von Kryptografie für symmetrische Schlüssel abgehende Daten verschlüsseln und eingehende Daten entschlüsseln. Ein Paar von Kryptografiemaschinen (z. B. eine CE im Stammport und eine CE in der Endpunktschnittstelle) kann sich einen Geheimschlüssel teilen, um die symmetrische Verschlüsselung und Entschlüsselung zu ermöglichen. Es kann jede Anzahl geeigneter sicherer Techniken zur gemeinsamen Nutzung von symmetrischen Schlüsseln implementiert werden, um einen Geheimschlüsselaustausch zu ermöglichen, der den Stammport und die Endpunktschnittstelle mit einem gemeinsamen Schlüssel ausstattet. Mindestens eine mögliche Technik zur gemeinsamen Nutzung von Geheimschlüsseln wird in der am 28. Dezember 2016 eingereichten US-Patentanmeldung Seriennr. 15/393,179 mit dem Titel „Arrangements for Datalink Security“ beschrieben. In diesem Beispiel kann ein Kopplungsschlüssel sowohl für einen SoC als auch einen verschlüsselten Speicher bei der Her- oder Bereitstellung der Geräte erstellt werden. Anschließend können das SoC- und das verschlüsselte Speichergerät während des Betriebs einen Sitzungsschlüssel erzeugen und über einen kryptografischen Austausch basierend auf dem Kopplungsschlüssel geheim austauschen. Das SoC- und das verschlüsselte Speichergerät können den Kopplungsschlüssel und/oder Sitzungsschlüssel zum sicheren Senden und Empfangen von Daten des Datenlinks verwenden.
  • Die Kryptografiemaschinen 622 und 662 können zum Durchführen eines Zähler (CTR - Counter)-Modusverschlüsselungsschemas konfiguriert sein. Verschlüsselte Daten, die aus als ,Chiffretext‘ 607 bezeichnet werden können, werden über den Link 606 zum PCIe-Stammport 620 gesendet, wenn die Daten am SSD 650 abgehen. Der Chiffretext 607 wird über den Link 606 zur PCIe-Endpunktschnittstelle 660 gesendet, wenn die Daten am SoC 610 abgehen. Wenn der PCIe-Stammport 620 den Chiffretext 607 empfängt, kann die Kryptografiemaschine 622 den Chiffretext unter Verwendung des gleichen Zählermodusverschlüsselungsschemas entschlüsseln. Wenn die PCIe-Endpunktschnittstelle 660 den Chiffretext 607 empfängt, kann die Kryptografiemaschine 662 den Chiffretext unter Verwendung des gleichen Zählermodusverschlüsselungsschemas entschlüsseln.
  • Wie hierin ausführlicher erörtert wird, können bestimmte Ausführungsformen mehrere Paare von Kryptografiemaschinen für einen einzigen Link verwenden. Zum Beispiel können verschiedene Instanzen einer Kryptografiemaschine in einer Interconnect-Schnittstelle zum Verschlüsseln von abgehendem Verkehr für einen Link und Entschlüsseln von eingehendem Verkehr für den Link instanziiert werden. Außerdem können bestimmte Ausführungsformen einen eindeutigen symmetrischen Schlüssel für jedes Paar von Kryptografiemaschinen verwenden, aber andere Ausführungsformen können den gleichen symmetrischen Schlüssel mit verschiedenen Zählerwerten verwenden, wie hierin ausführlicher beschrieben.
  • Obwohl das System 600 und andere Beispiele der Hardwaremechanismen zur Linkverschlüsselung im Zusammenhang mit PCIe-Links dargestellt und beschrieben werden, geschieht dies für ein besseres Verständnis, und es versteht sich, dass diese Systeme und Beispiele nicht darauf beschränkt sind. Tatsächlich könnten die hierin beschriebenen Techniken und Konzepte auf jeden Link angewendet werden und sind nicht unbedingt auf Plattformen beschränkt, die mit PCle in Beziehung stehen. Außerdem können PCIe-Links zum Verbinden einer beliebigen Anzahl von verschiedenen Typen von Geräten (z. B. Peripheriegeräten, Verarbeitungselementen, Endpunkte, CPUs usw.) verwendet werden, die ebenfalls von den hierin dargestellten und beschriebenen Konzepten profitieren können.
  • In der folgenden Beschreibung wird zunächst das in Betracht gezogene Bedrohungsmodell beschrieben. Anschließend werden die weiteren Probleme beschrieben, die durch das Verwenden der CTR-Modusverschlüsselung und der Innovationen aufgeworfen werden, die eingeführt werden, um die Bereitstellung der CTR-Modusverschlüsselung zu ermöglichen.
  • 7 ist ein Blockdiagramm, das ein Zählermodusverschlüsselungsschema 700 veranschaulicht, in welchem Zählermodusverschlüsselung 705A durch ein sendendes Gerät an einem Ende eines PCIe-Links 706 durchgeführt wird, und Zählermodusentschlüsselung 705B durch ein empfangendes Gerät am gegenüberliegenden Ende des PCIe-Links 706 durchgeführt wird. Das sendende Gerät und das empfangende Gerät können einem Paar von Kryptografiemaschinen (z. B. 622, 662) entsprechen, die an gegenüberliegenden Enden eines Links (z. B. 606) angeordnet sind. Eine Kryptografiemaschine im sendenden Gerät kann Verschlüsselung für abgehende Daten durchführen, und eine Kryptografiemaschine im empfangenden Gerät kann Entschlüsselung für eingehende Daten durchführen.
  • Die Zählermodusverschlüsselung 705A wird zum Verschlüsseln von Daten verwendet, die über den PCIe-Link 706 gesendet werden. Die Zählermodusverschlüsselung 705A kann einen AES (Advanced Encryption Standard)-Kryptoblock 710A zum Verschlüsseln eines monotonen Zählers 712A unter Verwendung eines Schlüssels 714A verwenden. Der Schlüssel 714A kann ein symmetrischer Geheimschlüssel sein, der zwischen dem sendenden Gerät und dem empfangenden Gerät unter Verwendung einer geeigneten Technik zum Austausch von symmetrischen Geheimschlüsseln erstellt wurde. Die Verschlüsselung durch den AES-Kryptoblock 710A des Zählers 712A unter Verwendung des Schlüssels 714A erzeugt einen verschlüsselten Strom 716A (auch als ,Schlüsselstrom‘ bezeichnet). Die Verschlüsselung der zu sendenden Daten (oder eines Teils davon) wird durch Durchführen einer Exklusiv-ODER (XOR)-Operation 722A zwischen dem verschlüsselten Strom 716A und den zu sendenden Daten (oder einem Teil davon) erreicht, was als Klartext 718A dargestellt ist. Die XOR-Operation 722A erzeugt einen Chiffretext 720A, der über den PCIe-Link 706 an ein empfangendes Gerät gesendet werden kann, das die Zählermodusentschlüsselung 705B durchführen kann.
  • Datenentschlüsselung durch ein empfangendes Gerät unter Verwendung der Zählermodusentschlüsselung 705B kann durch Anwenden des gleichen verschlüsselten Stroms auf den empfangenen Chiffretext durch eine XOR-Operation 722B erreicht werden. Bei der Zählermodusentschlüsselung 705B führt ein AES (Advanced Encryption Standard)-Kryptoblock 710B den gleichen Verschlüsselungsalgorithmus wie der AES-Kryptoblock 710A aus. Die Eingabe in den AES-Kryptoblock 710B umfasst einen Zähler 712B und einen Schlüssel 714B, welche die gleichen Werte haben sollten, die der Zähler 712A bzw. der Schlüssel 714A während der Operationen der Zählermodusverschlüsselung 705A hatten, um den jeweiligen Chiffretext zu erzeugen, der entschlüsselt wird. Obwohl der Geheimschlüssel (z. B. 714A, 714B) a priori in den Kryptografiemaschinen vorgesehen sein kann, müssen die Zähler 712A und 712B für jedes Segment von Klartext synchronisiert bleiben, der in Chiffretext verschlüsselt, über den PCIe-Link 706 gesendet und wieder in Klartext zurück entschlüsselt wird.
  • Der AES-Kryptoblock 710B, der unter Verwendung des Schlüssels 714B auf den Zähler 712B angewendet wird, erzeugt einen verschlüsselten Strom 716B, der dem verschlüsselten Strom 716A entsprechen sollte. Datenentschlüsselung des Chiffretexts 720B, der den Chiffretext 720A darstellt, der über den PCIe-Link 706 gesendet wurde, wird durch Anwenden des verschlüsselten Stroms 716B auf einen Chiffretext 720B durch eine XOR-Operation 722B erreicht, was zu einem Klartext 718B führt. Das Anwenden des gleichen verschlüsselten Stroms auf den Chiffretext, der aus dem Klartext 718A erzeugt wurde, erzeugt aufgrund der Eigenschaften der XOR-Operation den Klartext 718B, der mit dem Klartext 718A übereinstimmen sollte.
  • Für jeden neuen Strom von Klartext 718A, der in die Zählermodusverschlüsselung 705A eingegeben wird, wird der Zähler 712A inkrementiert, derart dass für jede Verschlüsselung ein verschiedener Zähler verwendet wird. Der Zähler 712B bei der entsprechenden Entschlüsselung wird ebenfalls für jeden neuen Strom von Chiffretext 720B inkrementiert, den er empfängt. Demnach werden die Zähler 712A und 712B bei der Zählermodusverschlüsselung 705A am sendenden Gerät und der Zählermodusentschlüsselung 705B am empfangenden Gerät synchronisiert gehalten.
  • Obwohl bestimmte wünschenswerte Ziele von Linkverschlüsselung erfüllt werden, können bei der Verwendung von Zählermodusverschlüsselung zur Linkverschlüsselung andere Probleme auftreten. Diese Probleme umfassen das Einhalten von Link-Reihenfolgeanforderungen ohne Unterbrechung der Verschlüsselung, Initialisieren und Verwalten von Zählern, um zu gewährleisten, dass die Sicherheitsanforderungen für Zählermodusverschlüsselung erfüllt werden, und Erkennen von schwerwiegenden Linkfehlern, die darauf zurückzuführen sind, dass die Zähler nicht synchronisiert sind, und Wiederherstellen danach. Wenn die Zähler während der Zählermodusverschlüsselung nicht synchronisiert bleiben, wird Datenmüll erzeugt, wenn Datenentschlüsselung durch ein empfangendes Gerät durchgeführt wird. Eine oder mehrere Ausführungsformen bieten neuartige Techniken und Hardwaremechanismen zum Bewältigen dieser Probleme und werden nun ausführlicher beschrieben.
  • 8 ist ein Blockdiagramm, das eine beispielhafte Anordnung von Kryptografiemaschinen (CEs) in Linkprotokollstapeln von Geräten zum Einhalten von Linkreihenfolgeanforderungen ohne Beeinträchtigung von Verschlüsselung gemäß verschiedenen Ausführungsformen veranschaulicht. In diesem Beispiel ist ein Stammkomplex 820 über einen Link 806 mit einer Endpunktschnittstelle 860 verbunden. Der Stammkomplex 820, die Endpunktschnittstelle 860 und der Link 806 stellen mögliche Implementierungen des PCIe-Stammports 620, der PCIe-Endpunktschnittstelle 660 bzw. des PCIe-Links 606 dar. Der Stammkomplex 820 kann mit einer Backbone-Fabric 810 (z. B. SoC 610) verbunden sein und einen Linkprotokollstapel umfassen, der eine physikalische Schicht 825, eine Linkschicht 823, und eine Transaktionsschicht 821 aufweist. Die Endpunktschnittstelle 860 kann mit einer Backbone-Fabric 850 (z. B. SSD 650) verbunden sein und einen Linkprotokollstapel umfassen, der eine physikalische Schicht 865, eine Linkschicht 863 und eine Transaktionsschicht 861 aufweist. In einer oder mehreren Ausführungsformen sind die Kryptografiemaschinen, die Zählermodusverschlüsselung durchführen, über oder auf den Transaktionsschichten 821 und 861 in den jeweiligen Protokollstapeln des Stammkomplexes 820 und der Endpunktschnittstelle 860 vorgesehen.
  • Typischerweise kann ein Link mehrere Anforderungstypen für Daten unterstützen, die von einem Gerät an einem Ende des Links an ein Gerät am anderen Ende des Links gesendet werden. Zum Beispiel umfasst PCle Posted-, Non-Posted- und Completion-Anforderungstypen. Diese Anforderungstypen können Leseanforderungen (z. B. Speicher, E/A, Konfiguration), Schreibanforderungen (z. B. Speicher, E/A, Konfiguration) und Nachrichten aufweisen. Innerhalb eines jeden der Anforderungstypen können spezifische Reihenfolgeregeln definiert sein, um Blockierungen und andere Übertragungsfehler zu vermeiden. Daher könnten in einigen Szenarien Daten von bestimmten Anforderungstypen Daten von anderen Anforderungstypen weitergeben, um Weiterleitung voranzutreiben und das System nicht architektonisch zu blockieren. Wenn zum Beispiel ein erstes Gerät erste Daten eines Anforderungstyps A über einen Link an ein zweites Gerät sendet und dann anschließend zweite Daten eines Anforderungstyps B über den Link an das zweite Gerät sendet, dann können die empfangenen ersten und zweiten Daten am zweiten Gerät neu geordnet werden, und die zweiten Daten können durch die Linkschichten vor den ersten Daten verarbeitet werden. Für Geräte mit Schnittstellen mit Kryptografiemaschinen, die Zählermodusverschlüsselung durchführen, wenn der Link Neuordnung ermöglicht, könnten der Zähler auf dem Empfangsseite und der Zähler auf der Sendeseite nicht mehr synchronisiert sein.
  • Eine oder mehrere Ausführungsformen, wie in 8 dargestellt, können das Neuordnungsproblem lösen. In 8 ist eine modularer Ansatz dargestellt, wobei die Kryptografiemaschine (CE) pro virtuellem Kanal (VC - Virtual Channel) und pro Anforderungstyp instanziiert wird. In PCle sind virtuelle Kanäle durch die PCle Express Base Specification Revision 3.0, PCI-SIG, 10. November 2010, für verschiedene Bandbreitenzuweisungen definiert. Transaktionen (z. B. Pakete von Daten) können mit einem VC gemäß ihrem Verkehrsklassen (TC - Traffic Class)-Attribut assoziiert werden. Eine TC-zu-VC-Zuordnung in einem Konfigurationsblock eines Geräts spezifiziert, welche Verkehrsklasse mit welchem VC assoziiert ist. Virtuelle Kanäle können verwendet werden, um zu ermöglichen, dass Transaktionen mit einer höheren Priorität einem separaten VC zugeordnet werden, um Ressourcenkonflikte mit Transaktionen niedrigerer Priorität zu vermeiden. Transaktionen jedes Anforderungstyps können mit einem virtuellen Kanal assoziiert werden, und die Reihenfolge von Transaktionen wird pro virtuellem Kanal beibehalten. Demnach kann eine TC mit höherer Priorität Transaktionen umfassen, die Posted-, Non-Posted- und/oder Completion-Anforderungen sind, und auch eine TC mit niedrigerer Priorität kann Transaktionen umfassen, die Posted-, Non-Posted- und/oder Completion-Anforderungen sind.
  • Wie in 8 dargestellt, können in mindestens einer Ausführungsform entsprechende virtuelle Kanäle für Upstream-Verkehr 830, der von der Endpunktschnittstelle 860 zum Stammkomplex 820 fließt, und für Downstream-Verkehr 840 zugewiesen werden, der vom Stammkomplex 820 zur Endpunktschnittstelle 860 fließt. Zum Beispiel umfassen virtuelle Upstream-Kanäle im Stammkomplex 820 VC-1 822(1) bis VC-N 822(N), während entsprechende virtuelle Upstream-Kanäle in der Endpunktschnittstelle 860 VC-1 862(1) bis VC-N 862(N) umfassen. Virtuelle Downstream-Kanäle im Stammkomplex 820 umfassen VC-1 832(1) bis VC-N 832(M), während entsprechende virtuelle Downstream-Kanäle VC-1 872(1) bis VC-N 872(M) umfassen.
  • In einer oder mehreren Ausführungsformen wird eine Kryptografiemaschine für jeden Anforderungstyp (z. B. Posted, Non-Posted, Completion) im Stammkomplex instanziiert. Zum Beispiel können eine Posted-CE 824A, eine Non-Posted-CE 824B und eine Completion-CE 824C im Stammkomplex instanziiert und mit VC-1 822(1) für Upstream-Verkehr assoziiert werden, und eine Posted-CE 834A, eine Non-Posted-CE 834B und eine Completion-CE 834C können im Stammkomplex instanziiert und mit VC-1 832(1) für Downstream-Verkehr assoziiert werden. CEs können auch im Stammkomplex instanziiert und mit den anderen VCs und Anforderungstypen assoziiert werden, die für Upstream- und Downstream-Verkehr zugewiesen sind, aber der Klarheit der Darstellung halber weggelassen wurden.
  • Auch in der Endpunktschnittstelle wird eine Kryptografiemaschine für jeden Anforderungstyp (z. B. Posted, Non-Posted, Completion) instanziiert, um einer CE im Stammkomplex zu entsprechen. Zum Beispiel können eine Posted-CE 864A, eine Non-Posted-CE 864B und eine Completion-CE 864C in der Endpunktschnittstelle instanziiert und mit VC-1 862(1) für Upstream-Verkehr assoziiert werden. Die Posted-CE 864A, die Non-Posted-CE 864B und die Completion-CE 864C werden mit der Posted-CE 824A, der Non-Posted-CE 824B, bzw. der Completion-CE 824C gekoppelt und mit VC-1 822(1) des Stammkomplexes assoziiert. Ähnlich können die Posted-CE 874A, die Non-Posted-CE 874B und die Completion-CE 874C in der Endpunktschnittstelle instanziiert und mit VC-1 872(1) für Downstream-Verkehr assoziiert werden. Die Posted-CE 874A, die Non-Posted-CE 874B und die Completion-CE 874C werden mit der Posted-CE 834A, der Non-Posted-CE 834B bzw. der Completion-CE 834C gekoppelt und mit VC-1832(1) des Stammkomplexes assoziiert. CEs können auch in der Endpunktschnittstelle instanziiert und mit den anderen VCs und Anforderungstypen assoziiert werden, die für Upstream- und Downstream-Verkehr zugewiesen sind, aber der Klarheit der Darstellung halber weggelassen wurden.
  • Es ist zu erwähnen, dass nicht alle Geräte jeden Anforderungstyp verwenden können. In einigen Szenarien zum Beispiel kann ein Endpunkt nur einen Anforderungstyp verwenden. In diesem Szenario kann eine einzige CE pro VC für das Gerät instanziiert werden. In anderen Szenarien können virtuelle Kanäle durch ein Gerät nicht verwendet werden. In diesem Szenario können die CEs pro Anforderungstyp instanziiert werden, ohne mit einem virtuellen Kanal assoziiert zu werden.
  • Da die Reihenfolge pro VC und Pro Anforderungstyp beibehalten wird, bewahrt jede CE ihren eigenen Zähler. Zähler für ein Paar von CEs bleiben jedoch synchronisiert, um Zählermodusverschlüsselung und -entschlüsselung von Daten durchzuführen, die über einen Link zwischen dem Paar von CEs gesendet werden. Zusätzlich zum Einhalten von Linkreihenfolgeanforderungen ohne Unterbrechung des Zählermodusverschlüsselungsschemas ist ein weiterer Vorteil dieses Ansatzes, dass, wenn nur ein spezifischer VC oder Anforderungstyp geschützt werden muss, die Kosten in Bezug auf Verschlüsselung durch Instanziieren nur der entsprechenden CE dementsprechend skaliert werden können.
  • 9 und 10 stellen vereinfachte Flussdiagramme 900 und 1000 dar, die beispielhafte Techniken zum Einhalten von Linkreihenfolgeanforderungen ohne Beeinflussung der Zählermodusverschlüsselung von Daten veranschaulichen, die über einen Link gesendet werden. In mindestens einer Ausführungsform entsprechen ein oder mehrere Sätze von Operationen Aktivitäten in jeder der 9 und 10. Ein sendendes Gerät kann den einen oder die mehreren Sätze von Operationen verwenden, die Aktivitäten von 9 entsprechen. Ein empfangendes Gerät kann den einen oder die mehreren Sätze von Operationen verwenden, die Aktivitäten von 10 entsprechen. Geräte in einer Plattform (z. B. SoC mit PCIe-Stammkomplex 620, 820, Gerät mit PCIe-Endpunktschnittstelle 660, 860) können sowohl als ein sendendes Gerät zum Verschlüsseln und Senden von Daten an ein anderes Gerät als auch ein empfangendes Gerät zum Empfangen von verschlüsselten Daten vom anderen Gerät und Entschlüsseln der verschlüsselten Daten fungieren. Das sendende Gerät und das empfangende Gerät können jeweils Hardware, Software, Firmware oder eine beliebige geeignete Kombination davon zum Durchführen ihrer Operationen aufweisen. In einer oder mehreren Ausführungsformen können wenigstens einige der Aktivitäten in 9 durch eine Kryptografiemaschine (z. B. 834A, 834B, 834C, 864A, 864B, 864C) einer Interconnect-Schnittstelle (z. B. 820, 860) eines sendenden Geräts durchgeführt werden, und wenigstens einige der Aktivitäten in 10 können von einer Kryptografiemaschine (z. B. 824A, 824B, 824C, 874A, 874B, 874C) einer Interconnect-Schnittstelle (z. B. 820, 860) eines empfangenden Geräts durchgeführt werden.
  • In 9 erhält ein sendendes Gerät bei 902 Daten, die an ein empfangendes Gerät gesendet werden sollen. Bei 904 erfolgt eine Bestimmung im Hinblick darauf, welcher Anforderungstyp mit den Daten assoziiert ist. Zum Beispiel kann es sich bei den Daten um einen Posted-Anforderungstyp, einen Non-Posted-Anforderungstyp oder einen Completion-Anforderungstyp in einer PCIe-Plattform handeln. Es erfolgt außerdem eine Bestimmung im Hinblick darauf, welcher virtuelle Kanal und/oder welche Verkehrsklasse mit den Daten assoziiert ist. Die Daten können eine Verkehrsklasse aufweisen, die mit einem virtuellen Kanal mit hoher Priorität, einem virtuellen Kanal mit normaler Priorität oder einem virtuellen Kanal mit niedriger Priorität assoziiert ist. In einem PCIe-Gerät wird ein Paket erzeugt, um Daten aufzunehmen, sobald sie verschlüsselt sind. Ein TC-Attribut und ein Anforderungstypindikator können zu entsprechenden Feldern in einem Header des Pakets hinzugefügt werden.
  • Bei 906 wird basierend auf dem virtuellen Kanal und dem Anforderungstyp, die mit den Daten assoziiert sind, eine Kryptografiemaschine im sendenden Gerät ausgewählt. Bei 908 können die Daten durch die ausgewählte Kryptografiemaschine unter Verwendung von Zählermodusverschlüsselung verschlüsselt werden. Bei 910 kann die ausgewählte Kryptografiemaschine verschlüsselte Daten (z. B. Chiffretext) erzeugen und die verschlüsselten Daten über den Linkt, der das sendende Gerät mit dem empfangenden Gerät verbindet, an das empfangende Gerät senden. Der Link kann in einem möglichen Beispiel ein PCIe-Link sein.
  • Unter Bezugnahme auf 10 veranschaulicht 10 mögliche Aktivitäten eines empfangenden Geräts, an welches bei 910 die verschlüsselten Daten durch ein sendendes Gerät gesendet wurden. Bei 1002 empfängt das empfangende Gerät verschlüsselte Daten von einem sendenden Gerät über einen Link, der das empfangende Gerät und das sendende Gerät verbindet.
  • Bei 1004 erfolgt eine Bestimmung im Hinblick darauf, welcher virtuelle Kanal und welcher Anforderungstyp mit den verschlüsselten Daten assoziiert sind. Zum Beispiel kann es sich bei den verschlüsselten Daten um einen Posted-Anforderungstyp, einen Non-Posted-Anforderungstyp oder einen Completion-Anforderungstyp in einer PCIe-Plattform handeln. In einer PCIe-Implementierung kann der Anforderungstyp basierend auf einem TLP-Header-Feld in einem Paket bestimmt werden, das die verschlüsselten Daten enthält. In einem nicht einschränkenden Beispiel können die verschlüsselten Daten eine Verkehrsklasse aufweisen, die mit einem virtuellen Kanal mit hoher Priorität, einem virtuellen Kanal mit normaler Priorität oder einem virtuellen Kanal mit niedriger Priorität assoziiert ist. In einer PCIe-Implementierung kann eine Verkehrsklasse basierend auf einem TC-Attribut im TLP-Header-Feld des Pakets bestimmt werden, das die verschlüsselten Daten enthält. Das TC-Attribut kann verwendet werden, um den entsprechenden VC aus einer TC-zu-VC-Zuordnung in einem Konfigurationsblock des empfangenden Geräts zu erhalten.
  • Bei 1006 wird basierend auf dem virtuellen Kanal und dem Anforderungstyp, die mit den verschlüsselten Daten assoziiert sind, eine Kryptografiemaschine im empfangenden Gerät ausgewählt. Bei 1008 können die Daten durch die ausgewählte Kryptografiemaschine unter Verwendung von Zählermodusentschlüsselung entschlüsselt werden. Bei 1010 kann die ausgewählte Kryptografiemaschine entschlüsselte Daten (z. B. Klartext) erzeugen, die den Daten entsprechen, die vom empfangenden Gerät verschlüsselt wurden (z. B. 908).
  • Unter Hinwendung zu 11 und 12 sind 11 und 12 Blockdiagramme, die mögliche Formate von Zählern und Schlüsselauswahlen veranschaulichen, die verwendet werden können, um zu gewährleisten, dass Zählermodus-Sicherheitsanforderungen in Systemen mit Linkverschlüsselung gemäß verschiedenen Ausführungsformen erfüllt werden. Zur Wahrung der Vertraulichkeit der Daten, die verschlüsselt werden, erfordert die CTR-Modusverschlüsselung, dass der gleiche Zähler nicht zweimal zum Verschlüsseln zweier verschiedener Datenblöcke mit einem gegebenen Schlüssel verwendet wird. Demnach müssen Schlüssel und Zähler für jedes Paar von Kryptografiemaschinen, die durch einen Link verbunden sind, sorgfältig gewählt werden, um zu gewährleisten, dass die Zähler bei gleichzeitiger Erfüllung dieser Sicherheitsanforderungen synchronisiert bleiben.
  • In einer oder mehreren Ausführungsformen mit mehreren virtuellen Kanälen und Anforderungstypen, wie zuvor beschrieben, können mehrere Paare von Kryptografiemaschinen zum Schützen der Linkreihenfolge von Upstream-Verkehr auf einem Link instanziiert werden, und mehrere Paare von Kryptografiemaschinen können zum Schützen der Linkreihenfolge von Downstream-Verkehr auf dem gleichen Link instanziiert werden. Jede CE ist mit einem dedizierten Zähler assoziiert, und die Zähler werden unabhängig voneinander inkrementiert. Die Zähler jedes CE-Paares, die durch einen Link verbunden sind, müssen synchronisiert gehalten werden; andernfalls kann die Zählermodusverschlüsselung fehlschlagen. Eine oder mehrere Ausführungsformen können einen von zwei möglichen Ansätzen, die in 11 bzw. 12 veranschaulicht sind, zum Initialisieren und Verwalten von Zählern nutzen, um zu gewährleisten, dass die Zählermodus-Sicherheitsanforderungen erfüllt werden.
  • In 11 veranschaulicht ein Blockdiagramm einen Ansatz zum Gewährleisten, dass Zähler von Paaren von Kryptografiemaschinen, die durch einen Link zwischen Interconnect-Schnittstellen (z. B. Stammkomplex 820, Endpunktschnittstelle 860) der Geräte verbunden sind, synchronisiert bleiben, ohne dass ein Zähler zweimal zum Verschlüsseln verschiedener Datenblöcke mit einem gegebenen Schlüssel verwendet wird. 11 zeigt mögliche Zähler und Schlüsselauswahlen für einen virtuellen Kanal eines Geräts, das Zählermodus-Linkverschlüsselung implementiert. Konkret kann der gleiche Schlüssel 1110 in allen CEs für einen Link verwendet werden, einschließlich des Upstream- und des Downstream-Verkehrs über alle virtuelle Kanäle und alle Anforderungstypen innerhalb der virtuellen Kanäle. In dieser Ausführungsform weisen Zähler 1120, 1130, und 1140 jeweils ein oder mehrere hartcodierte Bits auf und werden für Kryptografiemaschinen 824A, 824B bzw. 824C im virtuellen Kanal VC-1 822(1) initialisiert. Ein oder mehrere höchstwertige Bits (MSBs - Most Significant Bits) jedes Zählers, die als hartcodierte MSBs 1122, 1132 und 1142 bezeichnet werden, sind in Bezug auf die anderen MSBs in den anderen Zählern in einen eindeutigen Wert hartcodiert. Die anderen Bits im Zähler, die als inkrementierbare niedrigstwertige Bits (LSBs - Least Significant Bits) 1124, 1134 und 1144 bezeichnet werden, können bei jeder Verschlüsselung oder Entschlüsselung (z. B. um +1) inkrementiert werden. Bei Rücksetzung können die LSBs der Zähler auf Nullen zurückgesetzt werden.
  • Es ist zu erwähnen, dass für ein gegebenes Paar von CEs auf separaten Geräten, die durch einen Link verbunden sind, wobei die CEs für einen jeweiligen VC und einen jeweiligen Anforderungstyp (z. B. 824A und 864A, 824B und 864B, 824C und 864C, 834A und 874B usw.) instanziiert werden, die Zähler der CEs synchronisiert sind. Zum Beispiel weisen die Posted-CE 824A in VC-1 822(1) auf dem Stammkomplex 820 und die CE 864A in VC-1 862(1) der Endpunktschnittstelle 860 jeweils einen Zähler mit dem gleichen Wert auf, der in die gleiche Anzahl von höchstwertigen Bits codiert ist. Wie in 11 veranschaulicht, weist der Zähler 1120 der Posted-CE 824A drei hartcodierte MSBs mit einem Wert von 001 auf. Demnach wird in mindestens einer Ausführungsform ein anderer Zähler für die Posted-CE 864A mit den gleichen hartcodierten MSBs initialisiert, die mit dem gleichen Wert von 001 initialisiert sind. Die niedrigstwertigen Bits können bei Rücksetzung des Systems auf Nullen zurückgesetzt werden. Während des Betriebs wird der Zähler CE 864A unabhängig inkrementiert, wenn Daten verschlüsselt und über einen Link zum Stammkomplex 820 gesendet werden, und der Zähler der CE 824A wird unabhängig inkrementiert, wenn die verschlüsselten Daten durch die CE 824A empfangen und entschlüsselt werden.
  • In dieser Ausführungsform werden die Zähler mit Werten in den hartcodierten MSBs jedes Zählers initialisiert, um zu gewährleisten, dass die Zähler über alle CEs eines Links eindeutig bleiben. Die Anzahl von Bits, die hartcodiert werden sollen, hängt von der Anzahl von CEs ab, die für diesen Link instanziiert werden. Wenn zum Beispiel nur zwei CEs für einen Link (z. B. eine für Upstream-Verkehr und eine für Downstream-Verkehr) instanziiert werden, da nur ein Anforderungstyp verwendet wird und keine virtuellen Kanäle verwendet werden, dann kann ein einziges hartcodiertes höchstwertiges Bit in den Zählern der CEs hartcodiert werden. Wenn in einem anderen Beispiel vier virtuelle Kanäle (2 Upstream und 2 Downstream) drei Anforderungstypen aufweisen, dann können vier höchstwertige Bits in den Zählern der CEs hartcodiert werden.
  • In 12 veranschaulicht ein Blockdiagramm einen anderen Ansatz zum Gewährleisten, dass Zähler von Paaren von Kryptografiemaschinen, die durch einen Link zwischen Interconnect-Schnittstellen (z. B. Stammkomplex 820, Endpunktschnittstelle 860) der Geräte verbunden sind, synchronisiert bleiben, ohne dass ein Zähler zweimal zum Verschlüsseln verschiedener Datenblöcke mit einem gegebenen Schlüssel verwendet wird. 12 zeigt mögliche Zähler und Schlüsselauswahlen für einen virtuellen Kanal eines Geräts, das Zählermodus-Linkverschlüsselung implementiert. Konkret werden Zähler 1220, 1230 und 1240 für Kryptografiemaschinen 824A, 824B bzw. 824C initialisiert, die mit dem virtuellen Kanal VC-1 822(1) assoziiert sind. In dieser Ausführungsform werden verschiedene Schlüssel 1210, 1212 und 1214 in jeder CE verwendet, die in einer Interconnect-Schnittstelle, beispielsweise dem Stammkomplex 820, instanziiert wird. Demnach können in mindestens einer Ausführungsform alle Bits in den Zählern inkrementierbar sein, wie bei 1224, 1234 und 1244 angegeben.
  • Es ist zu erwähnen, dass für ein gegebenes Paar von CEs auf separaten Geräten, die durch einen Link verbunden sind, wobei die CEs für einen jeweiligen VC und einen jeweiligen Anforderungstyp (z. B. 824A und 864A, 824B und 864B, 824C und 864C, 834A und 874B usw.) instanziiert werden, der Schlüssel, der von jeder CE im Paar verwendet wird, gleich ist. Zum Beispiel verwenden die Posted-CE 824A in VC-1 822(1) auf dem Stammkomplex 820 und die Posted-CE 864A in VC-1 862(1) der Endpunktschnittstelle 860 jeweils den Schlüssel 1210, die Non-Posted-CE 824B in VC-1 822(1) auf dem Stammkomplex 820 und die Non-Posted-CE 864B in VC-1 862(1) der Endpunktschnittstelle 860 verwenden jeweils den Schlüssel 1212 und die Completion-CE 824C in VC-1 822(1) auf dem Stammkomplex 820 und die CE 864C in VC-1 862(1) der Endschnittstelle 860 verwenden jeweils den Schlüssel 1214.
  • Unter Hinwendung zu 13 bis 18 sind 13 bis 18 verschiedene Diagramme und schematische Darstellungen, die beispielhafte Hardwaremechanismen und Techniken veranschaulichen, die zum Erkennen von und Wiederherstellen nach schwerwiegenden Fehlern verwendet werden können, die in Systemen mit Linkverschlüsselung auftreten können, wenn Zähler für Zählermodusverschlüsselung nicht synchronisiert sind. Ein schwerwiegender Fehler kann zum Beispiel auftreten, wenn ein Paket fehlerhaft ist oder ein Empfängerpuffer überläuft. Zum Beispiel könnte die Empfangsseite ein Paket verwerfen, bevor es die CE erreicht, was dazu führt, dass der Zähler auf der Empfangsseite nicht inkrementiert wird, während die Sendeseite ihre Version des Zählers für diese Transaktion inkrementierte. Die Sendeseite wäre sich des Verwerfens des Pakets (z. B. fehlerhaftes Transaktionsschichtprotokoll (TLP - Transaction Layer Protocol) nicht bewusst, was dazu führt, dass die Zähler nicht mehr synchronisiert sind und möglicherweise ungültige Daten im Speicher oder auf der Festplatte abgelegt werden, da nachfolgende Pakete mit dem falschen Zähler entschlüsselt würden. Demnach kann dies eine unendliche Fehlerausbreitung auslösen. Es ist zu erwähnen, dass, wenn der Link nicht verschlüsselt ist, schwerwiegende Linkfehler nicht zu einem beschädigten Speicher oder einer beschädigten Festplatte führen, da sie sich nur auf das verworfene Paket auswirken. Einem unverschlüsselten Link fehlt jedoch Sicherheit, die erforderlich ist, um zu gewährleisten, dass die Vertraulichkeit über Links zwischen Geräten in einem System gewahrt wird.
  • 13 ist ein Blockdiagramm, das die Zählermodusverschlüsselung 705A mit der zusätzlichen Funktionalität des Ermöglichens von Erkennung von schwerwiegenden Fehlern in einem System mit Linkverschlüsselung veranschaulicht. Die Zählermodusverschlüsselung 705A, die zuvor unter Bezugnahme auf 7 beschrieben wurde, veranschaulicht eine mögliche Technik für eine CE eines sendenden Geräts zum Einbeziehen einer Nachricht mit einem Chiffretext (z. B. 720A), die von einer CE am empfangenden Gerät erkannt werden kann. In diesem Beispiel umfasst die Nachricht einen aktuellen Zählerwert, der von einem Zähler abgeleitet ist, der mit der CE am sendenden Gerät assoziiert ist. Der aktuelle Zählerwert der CE am sendenden Gerät kann durch die CE am empfangenden Gerät verwendet werden, um zu bestimmen, ob ihre Zähler nicht synchronisiert sind.
  • In einer oder mehreren Ausführungsformen kann ein aktueller Zählerwert in ein Paket einbezogen werden, der zum Senden der verschlüsselten Daten (oder des Chiffretexts 720A) an das empfangende Gerät erzeugt wird. Wie in 13 dargestellt, kann in einer Ausführungsform, beispielsweise PCle, ein Transaktionsschichtpaket (TLP - Transaction Layer Packet) 730A erzeugt werden und mehrere Felder, wie beispielsweise ein TLP-Digest-Feld 732A, ein TLP-Datenfeld 734A, ein TLP-Header-Feld 736A und ein TLP-Präfixfeld 738A umfassen. Das TLP-Datenfeld 734A kann zum Speichern des Chiffretexts 720A verwendet werden, und das TLP-Präfixfeld 738A kann zum Speichern des aktuellen Zählerwerts verwendet werden. In einigen Ausführungsformen kann der aktuelle Zählerwert, der im TLP-Präfixfeld 738A gespeichert wird, vom ganzen Zähler (z. B. allen der Bits) abgeleitet sein. In anderen Ausführungsformen kann der aktuelle Zählerwert von einer ausgewählten Anzahl n von niedrigstwertigen Bits im Zähler abgeleitet sein. Dies kann vorteilhaft sein, um die Menge von Daten, die im Paket gespeichert wird, ohne wesentlichen Verlust an Genauigkeit bei einem Vergleich der Zähler zu verringern. In anderen Ausführungsformen, die hierin ausführlicher beschrieben werden, kann dieser abgeleitete kleinere Teil des Zählers als ein Zeiger in eine Tabelle von vorausberechneten Schlüsselströmen verwendet werden.
  • 14 und 15 sind vereinfachte Flussdiagramme 1400 und 1500, die eine beispielhafte Technik gemäß einer oder mehreren Ausführungsformen zum Einbeziehen einer Nachricht mit verschlüsselten Daten veranschaulicht, die an ein empfangendes Gerät gesendet werden, um Erkennung von schwerwiegenden Fehlern zu ermöglichen, die darauf zurückzuführen sind, dass die Zähler nicht synchronisiert sind. In mindestens einer Ausführungsform entsprechen ein oder mehrere Sätze von Operationen Aktivitäten von 14 und 15. Ein sendendes Gerät kann den einen oder die mehreren Sätze von Operationen verwenden, die Aktivitäten von 14 entsprechen. Ein empfangendes Gerät kann den einen oder die mehreren Sätze von Operationen verwenden, die Aktivitäten von 15 entsprechen. Das sendende Gerät und das empfangende Gerät können jeweils Hardware, Software, Firmware oder jede geeignete Kombination davon zum Durchführen der Operationen aufweisen. In einer oder mehreren Ausführungsformen können wenigstens einige der Aktivitäten in 14 und 15 von einer Kryptografiemaschine (z. B. 834A, 834B, 834C, 864A, 864B, 864C) und/oder einer Transaktionsschicht (z. B. 821, 861) einer Interconnect-Schnittstelle (z. B. 820, 860) eines sendenden Geräts durchgeführt werden, und mindestens einige der Aktivitäten in 15 können von einer Kryptografiemaschine (z. B. 824A, 824B, 824C, 874A, 874B, 874C) und/oder einer Transaktionsschicht (z. B. 821, 861) einer Interconnect-Schnittstelle (z. B. 820, 860) eines empfangenden Geräts durchgeführt werden.
  • In der in 14 und 15 dargestellten Ausführungsform wird der aktuelle Zählerwert des sendenden Geräts mit einem Datenpaket mit einer konfigurierbaren Frequenz gesendet. Dieser Zählerwert kann durch eine spezifische Nachricht (hierin auch als ,Zählerwertnachricht‘ bezeichnet) identifiziert werden, die von der CE auf der Empfangsseite erkannt wird (z. B. ein TLP-Präfix für ein PCIe-Protokoll), die dann überprüfen kann, ob die Zähler auf beiden Seiten noch synchronisiert sind. In mindestens einer Implementierung kann der Link zurück- bzw. herabgesetzt werden, wenn bestimmt wird, dass die Zähler nicht mehr synchronisiert sind. Diese Option ist aufgrund ihrer geringen Auswirkung auf die Bandbreite vorteilhaft, während gleichzeitig eine Beschädigung von Festplatte oder Speicher verhindert wird.
  • Unter Bezugnahme auf 14 erhält ein sendendes Gerät bei 1402 Daten, die an ein empfangendes Gerät gesendet werden sollen. Bei 1403 wird eine Kryptografiemaschine für die Daten ausgewählt. Die entsprechende CE kann gemäß virtuellen Kanälen und/oder Anforderungstypen, die mit den Daten assoziiert sind, ausgewählt werden, wie hierin zuvor unter Bezugnahme auf 9 und 10 beschrieben.
  • Bei 1404 erfolgt eine Bestimmung im Hinblick darauf, ob eine Paketfrequenzzählung eine gegebene Schwelle erreicht oder überschritten hat. In Abhängigkeit von der Implementierung kann die Paketfrequenzzählung pro Link, pro CE, pro VC oder pro Anforderungstyp eines VCs anwendbar sein. Wenn die Paketfrequenzzählung eine Schwelle nicht erreicht oder überschritten hat, dann kann die Paketfrequenzzählung bei 1406 (z. B. um +1) inkrementiert werden. Bei 1408 kann ein Datenpaket zum Senden der Daten ohne den aktuellen Zählerwert, der mit der CE assoziiert ist, normal erzeugt werden.
  • Wenn bei 1404 bestimmt wird, dass die Paketfrequenzzählung eine Schwelle erreicht oder überschritten hat, dann kann die Paketfrequenzzählung bei 1410 auf null zurückgesetzt werden. Bei 1412 kann ein Datenpaket erzeugt werden, um den aktuellen Zählerwert des mit der ausgewählten CE assoziierten Zählers einzubeziehen. In einem Beispiel kann der aktuelle Zählerwert in einem TLP-Präfix des Datenpakets gespeichert werden. Außerdem können auch verschlüsselte Daten, die an das empfangende Gerät gesendet werden sollen, im Datenpaket gespeichert werden.
  • Sobald ein Datenpaket mit den verschlüsselten Daten und mit oder ohne den aktuellen Zählerwert in Abhängigkeit von der Paketfrequenzzählung (z. B. bei 1412 oder 1408) erzeugt wurde, kann das Datenpaket bei 1414 an das empfangende Gerät gesendet werden.
  • Es ist zu erwähnen, dass die bei 1420 dargestellten und beschriebenen Aktivitäten ein Einbeziehen des aktuellen Zählerwerts mit verschlüsselten Daten mit einer konfigurierbaren Frequenz ermöglichen. Wenn daher der aktuelle Zählerwert mit jeder Instanz von verschlüsselten Daten (z. B. in jedem Datenpaket) einbezogen werden soll, dann können diese Aktivitäten 1404 bis 1410 für diese Ausführungsformen weggelassen werden.
  • Unter Bezugnahme auf 15 empfängt das empfangende Gerät bei 1502 ein Datenpaket über einen Link von einem sendenden Gerät. Bei 1503 wird eine Kryptografiemaschine für das Datenpaket ausgewählt. Die entsprechende CE kann gemäß virtuellen Kanälen und/oder Anforderungstypen, die mit dem Datenpaket assoziiert sind, ausgewählt werden, wie hierin zuvor unter Bezugnahme auf 9 und 10 beschrieben.
  • Bei 1504 erfolgt eine Bestimmung im Hinblick darauf, ob das Datenpaket eine Zählerwertnachricht umfasst. Zum Beispiel kann die CE am sendenden Gerät, das die verschlüsselten Daten im Datenpaket erzeugte, mit einer Frequenz konfiguriert sein, die das empfangende Gerät alle 100 Datenpakete zum Senden des Zählerwerts veranlasst. Demnach würde nicht jedes Datenpaket eine Zählerwertnachricht umfassen, um mit einem Zählerwert eines Zählers verglichen zu werden, der mit der entsprechenden CE auf dem empfangenden Gerät assoziiert ist. Wenn bei 1504 bestimmt wird, dass das Datenpaket keine Zählerwertnachricht umfasst, dann wird das Datenpaket bei 1514 normal verarbeitet.
  • Wenn bei 1504 bestimmt wird, dass das Datenpaket eine Zählerwertnachricht umfasst, dann kann der Zählerwert im Datenpaket bei 1506 identifiziert werden, und es kann ein Zählerwert, der mit der ausgewählten CE im empfangenden Gerät assoziiert ist, identifiziert werden. Es ist zu erwähnen, dass wenigstens in einigen Ausführungsformen mehrere CEs im empfangenden Gerät für den gleichen Link instanziiert werden können, wie hierin zuvor beschrieben (z. B. pro VC und pro Anforderungstyp instanziierte CEs). Daher muss die korrekte CE im empfangenden Gerät ausgewählt werden, um den korrekten Zählerwert zu identifizieren, der mit dem Zählerwert aus dem empfangenen Datenpaket verglichen werden soll.
  • Bei 1508 wird der Zählerwert aus dem empfangenen Datenpaket mit dem Zählerwert verglichen, der mit der ausgewählten CE des empfangenden Geräts assoziiert ist. Bei 1510 erfolgt eine Bestimmung im Hinblick darauf, ob der Zählerwert aus dem empfangenen Datenpaket und der mit der ausgewählten CE des empfangenden Geräts assoziierte Zählerwert nicht synchronisiert sind. Wenn bei 1510 bestimmt wird, dass die beiden Zähler synchronisiert sind, dann kann das Datenpaket bei 1514 normal verarbeitet werden. Wenn bei 1510 bestimmt wird, dass die beiden Zähler nicht synchronisiert sind, dann kann der Link bei 1512 zurückgesetzt werden. In einem Beispiel werden bei Rücksetzung des Links (z. B. Herabsetzung des Links) die Geheimschlüssel und der gesamte Fluss von Reinitialisierungen von Geheimschlüsseln zurückgesetzt, die zur Wiederherstellung bei Anbindung erforderlich sind. Bei Neutraining des Links bleibt der Link unverschlüsselt, bis die neuen Geheimschlüssel wiederhergestellt sind. Außerdem startet der Zähler von Anfang an, um einen neuen Satz von Schlüsselströmen zu erzeugen.
  • 16 ist ein vereinfachtes Flussdiagramm 1600, das eine beispielhafte Technik zum Erzwingen veranschaulicht, dass ein Zähler an einer Kryptografiemaschine in einem empfangenden Gerät gemäß mindestens einer Ausführungsform synchronisiert ist, wobei eine entsprechende Kryptografiemaschine in einem sendenden Gerät mit jedem Datenpaket eine Zählerwertnachricht sendet. In mindestens einer Ausführungsform entsprechen ein oder mehrere Sätze von Operationen Aktivitäten von 16. Ein empfangendes Gerät (z. B. SoC mit PCIe-Stammkomplex 820, PCIe-Gerät mit PCIe-Endpunktschnittstelle 860) kann den einen oder die mehreren Sätze von Operationen verwenden, die Aktivitäten von 16 entsprechen. Das empfangende Gerät kann Hardware, Software, Firmware oder jede geeignete Kombination davon zum Durchführen der Operationen aufweisen. In einer oder mehreren Ausführungsformen können wenigstens einige der Aktivitäten in 16 von einer Kryptografiemaschine (z. B. 824A, 824B, 824C, 874A, 874B, 874C) und/oder einer Transaktionsschicht (z. B. 821, 861) einer Interconnect-Schnittstelle (z. B. 820, 860) eines empfangenden Geräts durchgeführt werden.
  • In der Ausführungsform, die durch das Flussdiagramm 1600 in 16 veranschaulicht wird, wird davon ausgegangen, dass der aktuelle Zählerwert des sendenden Geräts mit jedem Datenpaket gesendet werden soll, wobei es sich um eine Ausführungsform handelt, die unter Bezugnahme auf 14 beschrieben wurde. Bei 1602 empfängt das empfangende Gerät ein Datenpaket über einen Link von einem sendenden Gerät.
  • Bei 1604 kann der Zählerwert im Datenpaket identifiziert werden, und es kann ein Zählerwert, der mit der entsprechenden CE im empfangenden Gerät assoziiert ist, identifiziert werden. Es ist zu erwähnen, dass wenigstens in einigen Ausführungsformen mehrere CEs im empfangenden Gerät für den gleichen Link instanziiert werden können, wie hierin zuvor beschrieben (z. B. pro VC und pro Anforderungstyp instanziierte CEs). Daher wird die korrekte CE im empfangenden Gerät ausgewählt, um den Zählerwert zu identifizieren, der mit Zählerwert aus dem empfangenen Datenpaket verglichen werden soll.
  • Bei 1606 wird der Zählerwert aus dem empfangenen Datenpaket mit dem Zählerwert verglichen, der mit der ausgewählten CE des empfangenden Geräts assoziiert ist. Bei 1608 erfolgt eine Bestimmung im Hinblick darauf, ob der Zählerwert aus dem empfangenen Datenpaket und der mit der ausgewählten CE des empfangenden Geräts assoziierte Zählerwert nicht synchronisiert sind.
  • Wenn bei 1608 bestimmt wird, dass die beiden Zähler synchronisiert sind, dann wird bei 1610 ein Schlüsselstrom zum Durchführen von Entschlüsselung durch die ausgewählte CE unter Verwendung des mit der ausgewählten CE assoziierten Zählerwerts und eines mit der ausgewählten CE assoziierten Schlüssels erzeugt. Zum Beispiel kann ein AES-Kryptoblock (z. B. 710B) den Schlüssel zum Verschlüsseln des mit der ausgewählten CE assoziierten Zählerwerts und Erzeugen eines Schlüsselstroms oder verschlüsselten Stroms (z. B. 716B) verwenden. Bei 1614 werden die verschlüsselten Daten im Datenpaket durch die ausgewählte CE auf dem empfangenden Gerät unter Verwendung des Schlüsselstroms, der basierend auf dem Zählerwert der ausgewählten CE erzeugt wurde, abgerufen und entschlüsselt.
  • Wenn bei 1608 bestimmt wird, dass die beiden Zähler nicht synchronisiert sind, dann wird bei 1612 ein Schlüsselstrom zum Durchführen von Entschlüsselung durch die ausgewählte CE unter Verwendung des Zählerwerts im Datenpaket und eines mit der ausgewählten CE assoziierten Schlüssels erzeugt. Zum Beispiel kann ein AES-Kryptoblock (z. B. 710B) den Schlüssel zum Verschlüsseln des Zählerwerts im Datenpaket und Erzeugen eines Schlüsselstroms oder verschlüsselten Stroms (z. B. 716B) verwenden. Bei 1614 werden die verschlüsselten Daten im Datenpaket durch die ausgewählte CE auf dem empfangenden Gerät unter Verwendung des Schlüsselstroms, der basierend auf dem vom sendenden Gerät gesendeten Zählerwert im empfangenen Paket erzeugt wurde, abgerufen und entschlüsselt.
  • 17 ist ein vereinfachtes Flussdiagramm 1700, das eine andere beispielhafte Technik zum Erzwingen veranschaulicht, dass ein Zähler für eine Kryptografiemaschine in einem empfangenden Gerät gemäß mindestens einer Ausführungsform synchronisiert ist, wobei eine entsprechende Kryptografiemaschine in einem sendenden Gerät mit jedem Datenpaket eine Zählerwertnachricht sendet. In mindestens einer Ausführungsform entsprechen ein oder mehrere Sätze von Operationen Aktivitäten von 17. Ein empfangendes Gerät (z. B. SoC mit PCIe-Stammkomplex 820, PCIe-Gerät mit PCIe-Endpunktschnittstelle 860) kann den einen oder die mehreren Sätze von Operationen verwenden, die Aktivitäten von 17 entsprechen. Das empfangende Gerät kann Hardware, Software, Firmware oder jede geeignete Kombination davon zum Durchführen der Operationen aufweisen. In einer oder mehreren Ausführungsformen können wenigstens einige der Aktivitäten in 16 von einer Kryptografiemaschine (z. B. 824A, 824B, 824C, 874A, 874B, 874C) und/oder einer Transaktionsschicht (z. B. 821, 861) einer Interconnect-Schnittstelle (z. B. 820, 860) eines empfangenden Geräts durchgeführt werden.
  • In der Ausführungsform, die durch das Flussdiagramm 1700 in 17 veranschaulicht wird, wird davon ausgegangen, dass der aktuelle Zählerwert einer CE in einem sendenden Gerät mit jedem Datenpaket gesendet werden soll, wobei es sich um eine Ausführungsform handelt, die unter Bezugnahme auf 14 beschrieben wurde. Bei 1702 empfängt das empfangende Gerät ein Datenpaket über einen Link von einem sendenden Gerät.
  • Bei 1704 kann ein Zählerwert im Datenpaket bei identifiziert werden, und es kann ein Zählerwert, der mit der entsprechenden CE im empfangenden Gerät assoziiert ist, identifiziert werden. Es ist zu erwähnen, dass wenigstens in einigen Ausführungsformen mehrere CEs im empfangenden Gerät für den gleichen Link instanziiert werden können, wie hierin zuvor beschrieben (z. B. pro VC und pro Anforderungstyp instanziierte CEs). Daher wird die korrekte CE im empfangenden Gerät ausgewählt, um den Zählerwert zu identifizieren, der mit Zählerwert aus dem empfangenen Datenpaket verglichen werden soll.
  • Bei 1706 wird ein Schlüsselstrom zum Durchführen von Entschlüsselung durch die ausgewählte CE unter Verwendung des Zählerwerts aus dem Datenpaket und eines mit der ausgewählten CE assoziierten Schlüssels erzeugt. Zum Beispiel kann ein AES-Kryptoblock (z. B. 710B) den Schlüssel zum Verschlüsseln des Zählerwerts im Datenpaket und Erzeugen eines Schlüsselstroms oder verschlüsselten Stroms (z. B. 716B) verwenden. Bei 1708 werden die verschlüsselten Daten im Datenpaket durch die ausgewählte CE auf dem empfangenden Gerät unter Verwendung des erzeugten Schlüsselstroms abgerufen und entschlüsselt.
  • 18 ist ein Blockdiagramm, welches das Zählermodusverschlüsselungsschema 700 mit der zusätzlichen Funktionalität des Optimierens von Erkennung von und Wiederherstellung nach schwerwiegenden Fehlern in einem System mit Linkverschlüsselung veranschaulicht. In wenigstens einigen Szenarien kann die in 18 hinzugefügte zusätzliche Funktionalität die Latenz reduzieren, die in Ausführungsformen hinzugefügt werden kann, in welchen jedes Mal, wenn ein Datenpaket empfangen wird, ein Schlüsselstrom berechnet wird.
  • In 18 veranschaulicht die Zählermodusverschlüsselung 705A, die hierin zuvor (z. B. unter Bezugnahme auf 7 und 13) beschrieben wurde, eine mögliche Technik für eine CE eines sendenden Geräts zum Einbeziehen einer Zählerwertnachricht (z. B. 720A), die an ein empfangendes Gerät gesendet wird, wobei die Zählerwertnachricht durch eine CE am empfangenden Gerät, die mit der CE am sendenden Gerät gekoppelt ist, erkannt werden kann. In der in 18 dargestellten Ausführungsform kann die Zählerwertnachricht eine ausgewählte Anzahl n von niedrigstwertigen Bits des mit der CE am sendenden Gerät assoziierten Zählers umfassen. Die n niedrigstwertigen Bits des Zählers sind hierin durch CTR(n) dargestellt. In einer Ausführungsform mit PCIe-Links kann das sendende Gerät CTR(n) des Zählers durch Speichern von CTR(n) des Zählers im TLP-Präfixfeld 738A eines Datenpakets 730A an das Datenpaket 730A anhängen.
  • Auf der Empfangsseite können die an das Datenpaket angehängten n niedrigstwertigen Bits durch die CE auf dem empfangenden Gerät, die mit der CE auf dem sendenden Gerät gekoppelt ist, zum Zeigen in eine Tabelle 740B mit m Einträgen verwendet werden. Das Zeigen in die Tabelle 740B lokalisiert einen vorausberechneten verschlüsselten Strom (oder Schlüsselstrom) 716B, der in der XOR-Operation 722B zum Entschlüsseln des Chiffretexts 720B in den Klartext 718B verwendet werden kann. Die Tabelle 740B mit m Einträgen enthält vorausberechnete Schlüsselströme Ks[x -1] bis Ks[x + m]. Der Wert von m kann die maximale Anzahl von vorab abgerufenen Schlüsselstromeinträgen sein, die in der Tabelle 740B verfügbar ist.
  • In einer oder mehreren Ausführungsformen werden die Zähler auf dem empfangenden und dem sendenden Gerät zurückgesetzt, wenn das System gestartet oder zurückgesetzt wird. Zähler, die mit gekoppelten CEs assoziiert sind, starten mit dem gleichen Anfangswert. Zum Beispiel können einige Zähler mit nur Nullen starten, wohingegen Zähler, die hartcodierte Bits aufweisen (z. B. 11) mit Nullen in ihren inkrementierbaren niedrigstwertigen Bits und hartcodierten Werten in ihren hartcodierten höchstwertigen Bits starten können. Die vorausberechneten Schlüsselströme können anfänglich bei Rücksetzung oder Start durch Durchführen mehrerer Iterationen von AES-Verschlüsselung AES-Kryptoblock 710B mit der CE und dem mit der CE assoziierten Zählerwert erzeugt werden, der für jede Iteration der AES-Verschlüsselung inkrementiert wird.
  • Die Größe von n kann in Abhängigkeit von der Wahrscheinlichkeit des Verlierens von aufeinanderfolgenden Datenpakete auf dem zugrunde liegenden Link und Protokoll gewählt werden. Zum Beispiel ist der Wert von n umso größer, je größer die Wahrscheinlichkeit des Verlierens von aufeinanderfolgenden Datenpaketen ist. Mit dem Vorausberechnen zusätzlicher Schlüsselströme kann fortgefahren werden, um die Tabelle mit m Einträgen stets gefüllt zu halten, bis das System zurückgesetzt oder ausgeschaltet und erneut gestartet wird. In alternativen Ausführungsformen können stattdessen andere Ansätze eingesetzt werden.
  • 19 ist ein vereinfachtes Flussdiagramm 1900, das eine optimierte Technik zum Erzwingen veranschaulicht, dass ein Zähler an einer Kryptografiemaschine eines empfangenden Geräts synchronisiert ist, wobei die entsprechende Kryptografiemaschine eines sendenden Geräts mit jedem Datenpaket eine Zählerwertnachricht sendet. 19 veranschaulicht einen Fluss, der Latenz beseitigt, die in Ausführungsformen hinzugefügt werden kann, in welchen ein Schlüsselstrom für jedes Datenpaket berechnet wird, das empfangen wird, und außerdem schwerwiegende Fehler beseitigt, die daraus resultieren können, dass ein Zähler nicht synchronisiert ist. In mindestens einer Ausführungsform entsprechen ein oder mehrere Sätze von Operationen Aktivitäten von 19. Ein empfangendes Gerät (z. B. SoC mit PCIe-Stammkomplex 820, PCIe-Gerät mit PCIe-Endpunktschnittstelle 860) kann den einen oder die mehreren Sätze von Operationen verwenden, die Aktivitäten von 19 entsprechen. Das empfangende Gerät kann Hardware, Software, Firmware oder jede geeignete Kombination davon zum Durchführen der Operationen aufweisen. In einer oder mehreren Ausführungsformen können wenigstens einige der Aktivitäten in 16 von einer Kryptografiemaschine (z. B. 824A, 824B, 824C, 874A, 874B, 874C) und/oder einer Transaktionsschicht (z. B. 821, 861) einer Interconnect-Schnittstelle (z. B. 820, 860) eines empfangenden Geräts durchgeführt werden.
  • In der Ausführungsform, die durch das Flussdiagramm 1900 in 19 veranschaulicht wird, wird davon ausgegangen, dass ein Zeigerwert mit jedem Datenpaket gesendet wird, wie in 18 dargestellt. Bei dem Zeigerwert handelt es sich um die n niedrigstwertigen Bits (oder CTR(n)) eines aktuellen Zählerwerts, der mit der CE des sendenden Geräts assoziiert ist. Bei 1902 empfängt das empfangende Gerät ein Datenpaket über einen Link von einem sendenden Gerät. Es ist zu erwähnen, dass wenigstens in einigen Ausführungsformen mehrere CEs im empfangenden Gerät für den gleichen Link instanziiert werden können, wie hierin zuvor beschrieben (z. B. pro VC und pro Anforderungstyp instanziierte CEs). Daher wird die korrekte CE im empfangenden Gerät ausgewählt, um die korrekte Tabelle zu identifizieren, aus welcher der korrekte vorausberechnete Schlüsselstrom abgerufen werden soll.
  • Bei 1904 kann der Zeigerwert im Datenpaket identifiziert werden. Bei 1906 wird eine mit der CE im empfangenden Gerät assoziierte Tabelle vorausberechneter Schlüsselströme identifiziert. Bei 1908 wird der Zeigerwert aus dem empfangenen Paket zum Zeigen in die Tabelle vorausberechneter Schlüsselströme verwendet, um den korrekten vorausberechneten Schlüsselstrom abzurufen, der zum Entschlüsseln der verschlüsselten Daten im empfangenen Datenpaket verwendet werden soll. Bei 1910 werden die verschlüsselten Daten im Datenpaket durch die ausgewählte CE auf dem empfangenden Gerät unter Verwendung des aus der Tabelle vorausberechneter Schlüsselströme abgerufenen Schlüsselstroms abgerufen und entschlüsselt.
  • 20 veranschaulicht ein beispielhaftes Gerät gemäß verschiedenen Ausführungsformen, das zur Verwendung zum Umsetzen der vorliegenden Offenbarung geeignet ist. Wie dargestellt, kann das Gerät 2000 einen oder mehrere Prozessoren 2002, die jeweils einen oder mehrere Prozessorkerne aufweisen, oder optional einen Hardwarebeschleuniger 2003 (der eine ASIC oder ein FPGA sein kann) umfassen. In alternativen Ausführungsformen kann der Hardwarebeschleuniger 2003 Teil des Prozessors 2002 oder zusammen damit auf einem SOC integriert sein.
  • Außerdem kann das Gerät 2000 einen Speicher 2004 umfassen, der einer von einer Anzahl von einem bekannten flüchtigen Speichermedium und einer persistenten Datenspeicherschaltungsanordnung 2008 mit Modulen 2009 sein kann. Zusätzlich kann das Gerät 2000 eine E/A-Schnittstelle 2018 umfassen, die mit einem oder mehreren Sensoren 2014 und einem Anzeigebildschirm 2013 gekoppelt ist. Die E/A-Schnittstelle 2018 kann einen Sender 2023 und einen Empfänger 2017 umfassen. Ferner kann das Gerät 2000 Kommunikationsschaltungsanordnung 2005, die einen Sendeempfänger (Tx) 2011 umfasst, und einen Netzwerkschnittstellencontroller (NIC - Network Interface Controller) 2012 umfassen. Die Elemente können über einen Systembus 2006, der einen oder mehrere Busse darstellen kann, miteinander verbunden sein. Im Falle mehrerer Busse können sie durch eine oder mehrere Busbrücken (nicht dargestellt) verbrückt sein. Ein Gerät 2031 kann mit dem Systembus 2006 gekoppelt sein, und ein Gerät 2035 kann mit einem Computerbus 2039 gekoppelt sein. Das Gerät 2031 kann eine Schnittstelle 2033 umfassen, und das Gerät 2035 kann eine Schnittstelle 2037 umfassen. In Ausführungsformen kann eine Datenspeicherschaltungsanordnung 2008 ein persistenter Speicher, beispielsweise ein Festkörperlaufwerk (SSD), sein. Der bzw. die Prozessor(en) 2002 können außerdem über einen anderen Bus (z. B. einem PCIe-Bus) direkt oder über einen Peripheriegerätecontroller mit der persistenten Datenspeicherschaltungsanordnung 2008 gekoppelt sein. Für einige dieser Ausführungsformen können die Prozessor(en) 2002 und die Datenspeicherschaltungsanordnung 2008 die Lehren der vorliegenden Offenbarung berücksichtigen, um die Daten zu schützen, die über den Link ausgetauscht werden, der die Prozessor(en) 2002 und die Datenspeicheranordnung 2008 koppelt.
  • In Ausführungsformen können die Prozessor(en) 2002 (auch als „Prozessorschaltungsanordnung 2002“ bezeichnet) ein oder mehrere Verarbeitungselemente sein, die durch Ausführen von Anweisungen zum Durchführen von grundlegenden arithmetischen, logischen und/oder Ein-/Ausgabeoperationen konfiguriert sind. Die Prozessorschaltungsanordnung 2002 kann als ein eigenständiges System/Gerät/Bauelement oder als Teil eines bestehenden Systems/Geräts/Bauelements implementiert sein. Bei der Prozessorschaltungsanordnung 2002 kann es sich um einen oder mehrere Mikroprozessoren, einen oder mehrere Einkernprozessoren, einen oder mehrere Mehrkernprozessoren, einen oder mehrere Multithread-Prozessoren, eine oder mehrere GPUs, einen oder mehrere Energiesparprozessoren, einen oder mehrere eingebettete Prozessoren, einen oder mehrere DSPs, einen oder mehrere FPDs (Hardwarebeschleuniger) wie FPGAs, strukturierte ASICs, programmierbare SoCs (PSoCs) usw. und/oder eine andere Prozessor- oder Verarbeitungs-/Steuerschaltung handeln. Die Prozessorschaltungsanordnung 2002 kann Teil eines SoCs sein, in welchem die Prozessorschaltungsanordnung 2002 und andere hierin erörterte Komponenten zu einer einzigen IC oder einer einzigen Packung ausgebildet sind. Als Beispiele kann die Prozessorschaltungsanordnung 2002 einen oder mehrere Intel Pentium®, Core®, Xeon®, Atom® oder Core M® Prozessor(en); Accelerated Processing Units (APUs), Epyc® oder Ryzen® Prozessoren von Advanced Micro Devices (AMD); Apple Inc. Serie A, Serie S, Serie W usw. Prozessor(en); Qualcomm Snapdragon® Prozessor(en); Samsung Exynos® Prozessoren und/oder dergleichen umfassen.
  • In Ausführungsformen kann die Prozessorschaltungsanordnung 2002 einen Sensorhub umfassen, der durch Verarbeiten von Daten, die von dem einen oder den mehreren Sensoren 2014 erhalten werden, als ein Coprozessor fungieren kann. Der Sensorhub kann Schaltungsanordnung umfassen, die zum Integrieren von Daten, die von jedem des einen oder der mehreren Sensoren 2014 erhalten werden, durch Durchführen von arithmetischen, logischen und Ein-/Ausgabeoperationen konfiguriert ist. In Ausführungsformen kann der Sensorhub zum Zeitstempeln von erhaltenen Sensordaten, Bereitstellen von Sensordaten für die Prozessorschaltungsanordnung 2002 in Reaktion auf eine Abfrage solcher Daten, Puffern von Sensordaten, kontinuierlichem Streamen von Sensordaten zur Prozessorschaltungsanordnung 2002, einschließlich unabhängiger Ströme für jeden Sensor des einen oder der mehreren Sensoren 2014, Melden von Sensordaten basierend auf vordefinierten Schwellen oder Bedingungen/Auslösern und/oder dergleichen Datenverarbeitungsfunktionen imstande sein.
  • In Ausführungsformen kann der Speicher 2004 (auch als „Arbeitsspeicherschaltungsanordnung 2004“ oder dergleichen bezeichnet) eine Schaltungsanordnung, die zum Speichern von Daten konfiguriert ist, oder Logik zum Betreiben des Computergeräts 2000 sein. Die Arbeitsspeicherschaltungsanordnung 2004 kann eine Anzahl von Speichergeräten umfassen, die zum Bereitstellen einer gegebenen Systemspeicherkapazität verwendet werden können. Als Beispiele kann die Arbeitsspeicherschaltungsanordnung 2004 beliebige Typen, Anzahlen und/oder Kombinationen von flüchtigen Speichergeräten (z. B. Direktzugriffsspeicher (RAM), dynamischer RAM (DRAM), statischer RAM (SAM) usw.) und/oder nichtflüchtigen Speichergeräten (z. B. Festwertspeicher (ROM), löschbarer programmierbarer Festwertspeicher (EPROM), elektrisch löschbarer programmierbarer Festwertspeicher (EEPROM), Flash-Speicher, Antifuses usw.) umfassen, die in jeder geeigneten Implementierung konfiguriert sein können, die bekannt ist. In verschiedene Implementierungen können einzelne Speichergeräte aus jeder Anzahl von Packungstypen, wie beispielsweise einer Einzelchip-Packung (SDP), einer Doppelchip-Packung (DDP) oder einer Vier-Chip-Packung, doppelreihigen Speichermodulen (DIMMs), beispielsweise microDIMMs oder MiniDIMMs, und/oder beliebigen anderen ähnlichen Speichergeräten gebildet sein. Zum Bereitstellen persistenter Speicherung von Informationen, wie beispielsweise Daten, Anwendungen, Betriebssystemen und so weiter, kann die Arbeitsspeicherschaltungsanordnung 2004 ein oder mehrere Massenspeichergeräte, wie beispielsweise Festkörper-Festplattenlaufwerk (SSDD - Solid State Disk Drive); Flash-Speicherkarten, wie beispielsweise SD-Karten, microSD-Karten, xD-Picture Cards und dergleichen, und USB-Flash-Laufwerke; einen chipintegrierten Speicher oder mit dem Prozessor 2002 assoziierte Register (zum Beispiel in Energiesparimplementierungen); ein Mikro-Festplattenlaufwerk (HDD); 3D-XPOINT (Three-Dimensional Cross-Point)-Speicher von Intel® und Micron® usw. umfassen.
  • Bei Verwendung von FPDs können die Prozessorschaltungsanordnung 2002 und die Arbeitsspeicherschaltungsanordnung 2004 (und/oder die Datenspeicherschaltungsanordnung 2008) Logikblöcke oder Logik-Fabric, Speicherzellen, Eingabe/Ausgabe (E/A)-Blöcke und andere verbundene Ressourcen umfassen, die zum Ausführen verschiedener Funktionen der hierin erörterten beispielhaften Ausführungsformen programmiert sein können. Die Speicherzellen können zum Speichern von Daten in Nachschlagetabellen (LUT- Lookup-Table) verwendet werden, die durch die Prozessorschaltungsanordnung 2002 zum Implementieren verschiedener logischer Funktionen verwendet werden. Die Speicherzellen können jede Kombination verschiedener Ebenen von Arbeitsspeicher/Datenspeicher umfassen, einschließlich EPROM, EEPROM, Flash-Speicher, SRAM, Antifuses usw., ohne darauf beschränkt zu sein.
  • In Ausführungsformen kann die Datenspeicherschaltungsanordnung 2008 (auch als „Storage-Schaltungsanordnung 2008“ oder dergleichen bezeichnet) mit gemeinsamen oder jeweiligen Controllern persistente Speicherung von Informationen, wie beispielsweise Modulen 2009, Betriebssystemen usw. bereitstellen. Die Datenspeicherschaltungsanordnung 2008 kann u. a. als Festkörperlaufwerke (SSDs); Festkörper-Festlattenlaufwerk (SSDD); SATA (Serial AT Attachment)-Speichergeräte (z. B. SATA-SSDs); Flash-Laufwerke; Flash-Speicherkarten, wie beispielsweise SD-Karten, microSD-Karten, xD-Picture Cards, und dergleichen und USB-Flash-Laufwerke; 3D Xpoint (Three-Dimensional Cross-Point)-Speichergeräte; ein chipintegrierter Speicher oder mit dem Prozessor 2002 assoziierte Register; Festplattenlaufwerke (HDDs); Mikro-HDDs; Widerstandswechselspeicher; Phasenwechselspeicher; holografischer Speicher oder chemischer Speicher implementiert sein. Wie dargestellt, ist die Datenspeicherschaltungsanordnung 2008 im Computergerät 2000 enthalten; in anderen Ausführungsformen kann die Datenspeicheranordnung 2008 jedoch auch als ein oder mehrere Geräte implementiert sein, die von den anderen Elementen des Computergeräts 2000 getrennt sind.
  • In einigen Ausführungsformen kann die Datenspeicherschaltungsanordnung 2008 ein Betriebssystem (OS - Operating System) (nicht dargestellt) umfassen, das ein Universalbetriebssystem oder ein Betriebssystem sein, das spezifisch für das Computergerät 2000 geschrieben und darauf zugeschnitten wurde, sein kann. Das OS kann einen oder mehrere Treiber, Bibliotheken und/oder Anwendungsprogrammierschnittstellen (API - Application Programming Interface) umfassen, die Programmcode und/oder Softwarekomponenten für die Module 2009 und/oder Steuersystemkonfigurationen zum Steuern und/oder Erhalten/Verarbeiten von Daten von dem einen oder den mehreren Sensoren 2014 bereitstellen.
  • Die Module 2009 können Softwaremodule/-komponenten sein, die zum Ausführen verschiedener Funktionen des Computergeräts 2000 und/oder zum Ausführen von Funktionen der hierin erörterten beispielhaften Ausführungsformen verwendet werden. In Ausführungsformen, in welchen die Prozessorschaltungsanordnung 2002 und die Arbeitsspeicherschaltungsanordnung 2004 Hardwarebeschleuniger (z. B. FPGA-Zellen, den Hardwarebeschleuniger 2003) sowie Prozessorkerne umfassen, können die Hardwarebeschleuniger (z. B. die FPGA-Zellen) mit der Logik (anstelle des Einsatzes von Programmierungsanweisungen, die von der Prozessorkern(en) ausgeführt werden sollen) zum Ausführen einiger Funktionen hierin (z. B. mit entsprechenden Bitströmen, Logikblöcken/-Fabric) usw.) vorkonfiguriert sein. Zum Beispiel können die Module 2009 Logik für die entsprechenden, in Bezug auf die Anzeigebildschirm 2013 erörterten Entitäten eine Bildschirmeingabeeinrichtung (nicht dargestellt), einen Bildschirm-Eingabeschnittstellencontroller (nicht dargestellt), ein externes Eingabegerät (nicht dargestellt), den Sender 2023 und den Empfänger 2017 umfassen.
  • Die Komponenten des Computergeräts 2000 können über den Bus 2006 miteinander kommunizieren. Der Bus 2006 kann eine beliebige Anzahl von Technologien, beispielsweise Local Interconnect Network (LIN); Industriestandardarchitektur (ISA); erweiterte ISA (EISA); PCI; PCI extended (PCIx); PCle; einen Inter-Integrated Circuit (I2C)-Bus; einen Parallel Small Computer System Interface (SPI)-Bus; eine Common Application Programming Interface (CAPI); Punkt-zu-Punkt-Schnittstellen; einen Power-Bus; einen proprietären Bus, zum Beispiel Intel® Ultra Path Interface (UPI), oder irgendeinen anderen proprietären Bus, der in einer SoC-basierten Schnittstelle verwendet wird, oder eine beliebige Anzahl von anderen Technologien umfassen. In einigen Ausführungsformen kann der Bus 2006 ein CAN (Controller Area Network)-Bussystem, ein Time-Trigger Protocol (TTP)-System oder ein FlexRay-System sein, das verschiedenen Geräten (z. B. dem einen oder den mehreren Sensoren 2014, usw.) ermöglichen kann, miteinander unter Verwendung von Nachrichten oder Rahmen zu kommunizieren.
  • Die Kommunikationsschaltungsanordnung 2005 kann Schaltungsanordnung zum Kommunizieren mit einem drahtlosen Netzwerk oder einem drahtgebundenen Netzwerk umfassen. Zum Beispiel kann die Kommunikationsschaltungsanordnung 2005 einen Sendeempfänger (Tx) 2011 und einen Netzwerkschnittstellencontroller (NIC) 2012 umfassen. Die Kommunikationsschaltungsanordnung 2005 kann einen oder mehrere Prozessoren (z. B. Basisbandprozessoren, Modems usw.) umfassen, die für ein konkretes drahtloses Kommunikationsprotokoll bestimmt sind.
  • Der NIC 2012 kann enthalten sein, um einen drahtgebundenen Kommunikationslink mit einem Netzwerk und/oder anderen Geräten bereitzustellen. Die drahtgebundene Kommunikation kann eine Ethernet-Verbindung, Ethernet über USB und/oder dergleichen bereitstellen, oder sie kann auf anderen Typen von Netzwerken, wie beispielsweise u. a. DeviceNet, ControlNet, Data Highway+, PROFIBUS oder PROFINET, basieren. Ein zusätzlicher NIC 2012 kann zum Ermöglichen einer Verbindung mit einem zweiten Netzwerk (nicht dargestellt) enthalten sein, zum Beispiel ein NIC 2012, der Kommunikationen mit dem Netzwerk 150 über Ethernet bereitstellt, und einen zweiten NIC 2012, der Kommunikationen mit anderen Geräten über einen anderen Typ von Netzwerk bereitstellt, wie beispielsweise ein Netzwerk für den persönlichen Bereich (PAN), das ein Personalcomputer (PC)-Gerät umfasst. In einigen Ausführungsformen können die verschiedenen Komponenten des Geräts 2000, wie beispielsweise der eine oder die mehreren Sensoren 2014 usw., über den NIC 2012, wie oben erörtert, statt über die E/A-Schaltungsanordnung 2018, wie unten erörtert, mit den Prozessor(en) 2002 verbunden sein.
  • Der Tx 2011 kann ein oder mehrere Funkgeräte zum drahtlosen Kommunizieren mit einem Netzwerk und/oder anderen Geräten umfassen. Der Tx 2011 kann Hardwaregeräte umfassen, die Kommunikation mit drahtgebundenen Netzwerken und/oder anderen Geräten unter Verwendung von modulierter elektromagnetischer Strahlung durch ein festes oder nichtfestes Medium ermöglichen. Solche Hardwaregeräte können Schalter, Filter, Verstärker, Antennenelemente und dergleichen umfassen, um die Kommunikationen über die Luft (OTA - Over The Air) zu ermöglichen, indem Funkwellen zum Senden von Daten an ein oder mehrere andere Geräte generiert oder anderweitig erzeugt und empfangene Signalen in verwendbare Informationen, wie beispielsweise digitale Daten, umgewandelt werden, die für eine oder mehrere andere Komponenten des Computergeräts 2000 bereitgestellt werden können. In einigen Ausführungsformen können die verschiedenen Komponenten des Geräts 2000, wie beispielsweise der eine oder die mehreren Sensoren 2014 usw., über den Tx 2011, wie oben erörtert, statt über die E/A-Schaltungsanordnung 2018, wie unten erörtert, mit dem Gerät 2000 verbunden sein. In einem Beispiel können der eine oder die mehreren Sensoren 2014 über ein Nahbereichskommunikationsprotokoll mit dem Gerät 2000 gekoppelt sein.
  • Der Tx 2011 kann ein oder mehrere Funkgeräte umfassen, die mit einer beliebigen Anzahl von Spezifikationen des Partnerschaftsprojekts der dritten Generation (3GPP - Third Generation Partnership Project), insbesondere Long Term Evolution (LTE), Long Term Evolution-Advanced (LTE-A), Long Term Evolution-Advanced Pro (LTE-A Pro) und New Radio (NR) der fünften Generation (5G) kompatibel sind. Es ist zu erwähnen, dass Funkgeräte ausgewählt werden können, die mit einer beliebigen Anzahl von Festnetz-, Mobilfunk- oder Satelliten-Kommunikationstechnologien und -standards kompatibel sind. Diese können zum Beispiel jede Weitverkehrs-Mobilfunkkommunikationstechnologie umfassen, die z. B. ein Kommunikationssystem der 5. Generation (5G), eine Funkkommunikationstechnologie des Globalen Systems für mobile Kommunikation (GSM - Global System for Mobile Communications), eine Funkkommunikationstechnologie des allgemeinen paketvermittelten Funkdiensts (GPRS - General Packet Radio Service) oder eine EDGE (Enhanced Data Rates for GSM Evolution)-Funkkommunikationstechnologie umfassen kann. Andere Funkkommunikationstechnologien des Third Generation Partnership Project (3GPP - Partnerschaftsprojekts der dritten Generation), die verwendet werden können, umfassen UMTS (Universal Mobile Telecommunications System), FOMA (Freedom of Multimedia Access), 3GPP LTE (Long Term Evolution), 3GPP LTE Advanced (Long Term Evolution Advanced), 3GPP LTE Advanced Pro (Long Term Evolution Advanced Pro)), CDMA2000 (Code Division Multiple Access 2000), CDPD (Cellular Digital Packet Data), Mobitex, 3G (Third Generation), CSD (Circuit Switched Data), HSCSD (High-Speed Circuit-Switched Data), UMTS (3G) (Universal Mobile Telecommunications System (Third Generation)), W-CDMA (UMTS) (Wideband Code Division Multiple Access (Universal Mobile Telecommunications System)), HSPA (High Speed Packet Access), HSDPA (High-Speed Downlink Packet Access), HSUPA (High-Speed Uplink Packet Access), HSPA+ (High Speed Packet Access Plus), UMTS-TDD (Universal Mobile Telecommunications System - Time-Division Duplex), TD-CDMA (Time Division - Code Division Multiple Access), TD-SCDMA (Time Division - Synchronous Code Division Multiple Access), 3GPP Rel. 8 (Pre-4G) (3rd Generation Partnership Project Release 8 (Pre-4G)), 3GPP Rel. 9 (3rd Generation Partnership Project Release 9), 3GPP Rel. 10 (3rd Generation Partnership Project Release 10), 3GPP Rel. 11 (3rd Generation Partnership Project Release 11), 3GPP Rel. 12 (3rd Generation Partnership Project Release 12), 3GPP Rel. 13 (3rd Generation Partnership Project Release 13), 3GPP Rel. 14 (3rd Generation Partnership Project Release 14), 3GPP LTE Extra, LTE Licensed-Assisted Access (LAA), UTRA (UMTS Terrestrial Radio Access), E-UTRA (Evolved UMTS Terrestrial Radio Access), LTE Advanced (4G) (Long Term Evolution Advanced (4th Generation)), cdmaOne (2G), CDMA2000 (3G) (Code Division Multiple Access 2000 (Third Generation)), EV-DO (Evolution-Data Optimized or Evolution-Data Only), AMPS (IG) (Advanced Mobile Phone System (Ist Generation)), TACS/ETACS (Total Access Communication System/Extended Total Access Communication System), D-AMPS (2G) (Digital AMPS (2nd Generation)), PTT (Push-to-talk), MTS (Mobile Telephone System), IMTS (Improved Mobile Telephone System), AMTS (Advanced Mobile Telephone System), OLT (Norwegisch für Offentlig Landmobil Telefoni, öffentlicher Land-Mobilfunk), MTD (schwedische Abkürzung für Mobiltelefonisystem D bzw. Mobilfunksystem D), Autotel/PALM (Public Automated Land Mobile), ARP (Finnisch für Autoradiopuhelin, „Fahrzeug-Funktelefon“), NMT (Nordic Mobile Telephony), Hicap (Hochleistungsversion von NTT (Nippon Telegraph and Telephone)), CDPD (Cellular Digital Packet Data), Mobitex, DataTAC, iDEN (Integrated Digital Enhanced Network), PDC (Personal Digital Cellular), CSD (Circuit Switched Data), PHS (Personal Handyphone System), WiDEN (Wideband Integrated Digital Enhanced Network), iBurst, Unlicensed Mobile Access (UMA, auch als 3GPP Generic Access Network oder GAN-Standard bezeichnet)), Wireless Gigabit Alliance (WiGig)-Standard, mm-Wellen-Standards im Allgemeinen (drahtlose Systeme, die auf 10 bis 90 GHz und darüber funktionieren, wie beispielsweise WiGig, IEEE 802.11ad, IEEE 802.11ay, und dergleichen. Zusätzlich zu den vorstehend aufgeführten Standards kann jede Anzahl von Satelliten-Uplink-Technologien für den Uplink-Sendeempfänger verwendet werden, der zum Beispiel Funkgeräte umfasst, die mit den Standards kompatibel ist, die u. a. von der ITU (International Telecommunication Union) oder dem ETSI (European Telecommunications Standards Institute) herausgegeben werden. Die hierin bereitgestellten Beispiele sind demnach so zu verstehen, dass sie auf verschiedene andere, sowohl bereits bestehende als auch noch nicht formulierte, Kommunikationstechnologien angewendet werden können. Implementierungen, Komponenten und Details der zuvor erwähnten Protokolle können jene sein, die auf dem Fachgebiet bekannt sind, und werden hierin der Kürze halber weggelassen.
  • Die Eingabe/Ausgabe (E/A)-Schnittstelle 2018 kann Schaltungsanordnung, wie beispielsweise einen externen Erweiterungsbus (z. B. Universal Serial Bus (USB), FireWire, Thunderbolt, PCI/PCIe/PCIx usw.), umfassen, die zum Verbinden des Computergeräts 2000 mit externen Komponenten, wie beispielsweise einem oder mehreren Sensoren 2014 usw., verwendet wird. Die E/A-Schnittstellenschaltungsanordnung 2018 kann jeden geeigneten Schnittstellencontroller und Verbinder zum Verbinden einer oder mehrerer der Prozessorschaltungsanordnung 2002, der Arbeitsspeicherschaltungsanordnung 2004, der Datenspeicherschaltungsanordnung 2008, der Kommunikationsschaltungsanordnung 2005 und der anderen Komponenten des Computergeräts 2000 umfassen. Die Schnittstellencontroller können Arbeitsspeichercontroller, Datenspeichercontroller (z. B. RAID (redundante Anordnung unabhängiger Festplatten)-Controller, Baseboard-Verwaltungscontroller (BMC - Baseboard Management Controller), Eingabe/Ausgabe-Controller, Hostcontroller usw. umfassen, ohne darauf beschränkt zu sein. Die Verbinder können zum Beispiel Busse (z. B. Bus 2006), Ports, Steckplätze, Überbrückungseinrichtungen, Interconnect-Module, Buchsen, modulare Verbinder usw. umfassen. Die E/A-Schaltungsanordnung 2018 kann das Gerät 2000 über eine drahtgebundene Verbindung, wie beispielsweise unter Verwendung von USB, FireWire, Thunderbolt, RCA, Video Graphics Array (VGA), Digital Visual Interface (DVI) und/oder mini-DVI, High-Definition Multimedia Interface (HDMI), S-Video und/oder dergleichen mit dem einen oder den mehreren Sensoren 2014 usw. koppeln.
  • Bei dem einen oder den mehreren Sensoren 2014 kann es sich um jedes Gerät handeln, das zum Erkennen von Ereignissen oder Umgebungsveränderungen, Umwandeln der erkannten Ereignisse in elektrische Signale und/oder digitale Daten und Senden/Empfangen der Signale/Daten an das Computergerät 2000 konfiguriert ist. Einige des einen oder der mehreren Sensoren 2014 können Sensoren sein, die zum Bereitstellen von computergenerierten sensorischen Eingaben verwendet werden. Einige des einen oder der mehreren Sensoren 2014 können Sensoren sein, die zur Bewegungs- und/oder Objekterkennung verwendet werden. Beispiele für solch einen oder mehrere Sensoren 2014 können u. a. ladungsgekoppelte Geräte (CCD - Charge-Coupled Devices), aktive Pixelsensoren (APS) auf der Basis von komplementären Metalloxidhalbleitern (CMOS - Complementary Metal-Oxide-Semiconductor), Bilderfassungsgeräte/Kameras ohne Linsen, thermografische (Infrarot-) Kameras, Systeme für optische Abstands- und Geschwindigkeitsmessung (LIDAR - Light Imaging Detection And Ranging) und/oder dergleichen umfassen. In einigen Ausführungsformen können der eine oder die mehreren Sensoren 2014 einen Bilderfassungsmechanismus ohne Linsen umfassen, der eine Anordnung von Blendenelementen umfasst, wobei Licht, das durch die Anordnung von Blenden durchtritt, die Pixel eines Bildes definiert. In Ausführungsformen können der eine oder die mehreren Sensoren 2014 für Bewegungserkennung mit Lichterzeugungsgeräten, zum Beispiel einem oder mehreren Infrarotprojektoren zum Projizieren eines Gitters von Infrarotlicht auf eine Szene, gekoppelt oder assoziiert sein, wobei eine Infrarotkamera reflektiertes Infrarotlicht aufzeichnen kann, um Tiefeninformationen zu berechnen.
  • Einige des einen oder der mehreren Sensoren 2014 können zur Positions- und/oder Ausrichtungserfassung, Erfassung von Umgebungs-/Umweltbedingungen und dergleichen verwendet werden. Beispiele für solch einen oder mehrere Sensoren 2014 können u. a. mikroelektromechanische Systeme (MEMS) mit piezoelektrischen, piezoresistiven und/oder kapazitiven Komponenten umfassen, die zum Bestimmen von Umgebungsbedingungen oder Standortinformationen in Bezug auf das Computergerät 2000 verwendet werden können. In Ausführungsformen können die MEMS 3-Achsen-Beschleunigungsmesser, 3-Achsen-Gyroskope und/oder Magnetometer umfassen. In einigen Ausführungsformen können der eine oder die mehreren Sensoren 2014 außerdem einen oder mehrere Gravimeter, Altimeter, Barometer, Näherungssensoren (z. B. Infrarotstrahlungsdetektor(en) und dergleichen), Tiefensensoren, Umgebungslichtsensoren, Thermosensoren (Thermometer), Ultraschall-Sendeempfänger und/oder dergleichen umfassen.
  • Jedes dieser Elemente, z. B. der eine oder die mehreren Prozessoren 2002, der Hardwarebeschleuniger 2003, der Arbeitsspeicher 2004, die Datenspeicherschaltungsanordnung 2008 mit den Modulen 2009, die Eingabe/Ausgabe-Schnittstelle 2018, der eine oder die mehreren Sensoren 2014, die Kommunikationsschaltungsanordnung 2005 mit dem Tx 2011, der NIC 2012, der Systembus 2006, der Computerbus 2039, das Gerät 2031, das Gerät 2035, kann seine herkömmlichen Funktionen ausführen, die auf dem Fachgebiet bekannt ist. Außerdem können sie zum Speichern und Hosten der Ausführung von Programmanweisungen eingesetzt werden, die verschiedene Betriebssystemfunktionen und/oder Anwendungen implementieren. Die verschiedene Elemente können durch Assembler-Anweisungen, die von den Prozessor(en) 2002 unterstützt werden, oder höhere Programmiersprachen, wie beispielsweise C, implementiert sein, die in solche Anweisungen kompiliert sein können. Operationen, die mit dem Gerät 2000 assoziiert und nicht in Software implementiert sind, können in Hardware, z. B. über den Hardwarebeschleuniger 2003, implementiert sein.
  • Die Anzahl, Fähigkeit und/oder Kapazität dieser Elemente 2002 bis 2039 kann in Abhängigkeit von der Anzahl anderer Geräte, zu deren Unterstützung das Gerät 2000 konfiguriert ist, variieren. Ferner können zusätzlich zu den Prozessor(en) 2002 und der Datenspeicherschaltungsanordnung 2008 andere Komponenten des Geräts 2000 die Technologie der vorliegenden Offenbarung zum Schützen der Daten umfassen, die auf einem Link ausgetauscht werden, der ein Paar der Komponenten koppelt. Im Übrigen ist der Aufbau der Elemente 2002 bis 2039 bekannt, so dass er nicht näher beschrieben wird.
  • Für den Fachmann ist zu erkennen, dass die vorliegende Offenbarung als Verfahren oder Computerprogrammprodukte realisiert sein kann. Demgemäß kann die vorliegende Offenbarung zusätzlich dazu, dass sie in Hardware realisiert sein kann, wie zuvor beschrieben, die Form einer zur Gänze aus Hardware bestehenden Ausführungsform, einer zur Gänze aus Software bestehenden Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert und allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden kann.
  • Außerdem kann die vorliegende Offenbarung die Form eines Computerprogrammprodukts annehmen, das in jedem dinglichen oder nicht-transitorischen Ausdrucksmedium mit einem Programmcode realisiert sein kann, der von einem Computer verwendet werden kann und im Medium enthalten ist. 21 veranschaulicht ein beispielhaftes computerlesbares, nicht-transitorisches Speichermedium, das zur Verwendung zum Speichern von Anweisungen geeignet sein kann, die eine Vorrichtung in Reaktion auf die Ausführung der Anweisungen durch die Vorrichtung zum Realisieren ausgewählter Aspekte der vorliegenden Offenbarung veranlassen können. Wie dargestellt, kann das nicht-transitorische, computerlesbare Speichermedium 2102 eine Anzahl von Programmieranweisungen 2104 umfassen. Die Programmieranweisungen 2104 können so konfiguriert sein, dass sie ein Gerät, z. B. das Gerät 2000, in Reaktion auf die Ausführung der Programmieranweisungen z. B. zum Durchführen verschiedener Programmieroperationen befähigen, die mit Betriebssystemfunktionen und/oder Anwendungen assoziiert sind.
  • In alternativen Ausführungsformen können die Programmieranweisungen 2104 stattdessen auf mehreren computerlesbaren nicht-transitorischen Speichermedien 2102 angeordnet sein. In alternativen Ausführungsformen können die Programmieranweisungen 2104 auf computerlesbaren transitorischen Speichermedien 2102, wie beispielsweise Signalen, angeordnet sein. Es kann jede Kombination eines oder mehrerer durch einen Computer verwendbarer oder lesbarer Medien verwendet werden. Das durch einen Computer verwendbare oder lesbare Medium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, -Gerät oder -Ausbreitungsmedium oder eine ebensolche Vorrichtung sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) des computerlesbaren Mediums würden Folgende umfassen: eine elektrische Verbindung mit einem oder mehreren Drähten, eine tragbare Computer-Diskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Festwertspeicher (EPROM oder Flash-Speicher), eine Glasfaser, eine tragbare CD-ROM (Compact Disc Read-Only Memory), ein optisches Speichergerät, Übertragungsmedien, wie beispielsweise jene, die das Internet oder ein Intranet unterstützen, oder ein Magnetspeichergerät. Es ist zu erwähnen, dass das durch einen Computer verwendbare oder lesbare Medium auch Papier oder jedes andere geeignete Medium sein könnte, auf welches das Programm gedruckt ist, da das Programm zum Beispiel durch optisches Scannen des Papiers oder des anderen Mediums elektronisch erfasst, anschließend kompiliert, interpretiert oder nötigenfalls anderweitig in geeigneter Weise verarbeitet und dann in einem Computerspeicher gespeichert werden kann. Im Kontext dieses Dokuments kann sich „durch einen Computer verwendbares oder lesbares Medium“ auf jedes Medium oder Mittel beziehen, welches das Programm zur Verwendung durch Anweisungsausführungssysteme, -vorrichtungen oder -geräte oder in Verbindung damit enthalten, speichern, kommunizieren, verbreiten oder transportieren kann. Das durch einen Computer verwendbare Medium kann ein übertragenes Datensignal mit dem durch einen Computer verwendbaren Programmcode, der dadurch verkörpert wird, entweder in Basisband oder als Teil einer Trägerwelle umfassen. Der durch einen Computer verwendbare Programmcode kann unter Verwendung jedes geeigneten Mediums gesendet werden, das Wireless, Drahtleitung, Glasfaserkabel, HF usw. umfasst, ohne darauf beschränkt zu sein.
  • 22 veranschaulicht ein Datenverarbeitungssystem 2200 gemäß einer Ausführungsform, das in einer Punkt-zu-Punkt (PtP)-Konfiguration angeordnet ist. Konkret stellt 22 ein System dar, wobei Prozessoren, Speicher und Eingabe/Ausgabe-Geräte durch eine Anzahl von Punkt-zu-Punkt-Schnittstellen miteinander verbunden sind. Im Allgemeinen können eines oder mehrere der hierin beschriebenen Datenverarbeitungssystem oder Datenverarbeitungsgeräte oder Teile davon (z. B. System 600) wenigstens teilweise in der gleichen oder einer ähnlichen Weise wie das Datenverarbeitungssystem 2200 konfiguriert sein.
  • Prozessoren 2270 und 2280 können als Einkernprozessoren 2274a und 2284a oder Mehrkernprozessoren 2274a bis 2274b und 2284a bis 2284b implementiert sein. Die Prozessoren 2270 und 2280 können jeweils einen Cache 2271 und 2281 umfassen, der durch ihre/n jeweiligen Kern oder Kerne verwendet wird. Ein gemeinsam benutzter Cache (nicht dargestellt) kann in den Prozessoren enthalten oder außerhalb von beiden Prozessoren, aber dennoch über einen P-P-Interconnect mit den Prozessoren verbunden sein, derart dass Informationen des lokalen Caches eines oder beider Prozessoren im gemeinsam benutzten Cache gespeichert werden können, wenn ein Prozessor in einen Stromsparmodus versetzt wird.
  • Die Prozessoren 2270 und 2280 können außerdem jeweils integrierte Speichercontrollerlogik (MC) 2272 und 2282 zum Kommunizieren mit Speicherelementen 2232 und 2234 umfassen, die Teile eines Hauptspeichers sein können, die mit den jeweiligen Prozessoren lokal verbunden sind. In alternativen Ausführungsformen können die Speichercontrollerlogiken 2272 und 2282 diskrete Logiken separat von den Prozessoren 2270 und 2280 sein. Die Speicherelemente 2232 und/oder 2234 können verschiedene Daten speichern, die von den Prozessoren 2270 und 2280 zum Erreichen der hierin skizzierten Operationen und Funktionen verwendet werden sollen.
  • Die Prozessoren 2270 und 2280 können jeder Typ von Prozessor sein, wie beispielsweise jene, die in Verbindung mit anderen Figuren erörtert wurden. Die Prozessoren 2270 und 2280 können über eine Punkt-zu-Punkt (PtP)-Schnittstelle 2250 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 2278 bzw. 2288 Daten austauschen. Die Prozessoren 2270 und 2280 können jeweils über individuelle Punkt-zu-Punkt-Schnittstellen 2252 und 2254 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 2276, 2286, 2294, und 2298 Daten mit einem Eingabe/Ausgabe (E/A)-Subsystem 2290 austauschen. Das E/A-Subsystem 2290 kann außerdem über eine Hochleistungs-Grafikschnittstelle 2239 unter Verwendung einer Schnittstellenschaltung 2292, die eine PtP-Schnittstellenschaltung sein könnte, mit einer Hochleistungs-Grafikschaltung 2238 Daten austauschen. In einer Ausführungsform ist die Hochleistungs-Grafikschnittstelle 2238 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPU, ein eingebetteter Prozessor oder dergleichen. Das E/A-Subsystem 2290 kann auch mit einer Anzeige 2233 zum Anzeigen von Daten kommunizieren, die für einen menschlichen Benutzer sichtbar sind. In alternativen Ausführungsformen könnten jeder oder alle der in 22 veranschaulichten PtP-Links als Mehrpunktverbindungsbus statt als PtP-Link implementiert sein.
  • Das E/A-Subsystem 2290 kann über eine Schnittstellenschaltung 2296 mit einem Bus 2220 in Kommunikation sein. Der Bus 2220 kann ein oder mehrere Geräte aufweisen, die über ihn kommunizieren, wie beispielsweise eine Busbrücke 2218 und E/A-Geräte 2216. Über einen Bus 2210 kann die Busbrücke 2218 mit anderen Geräten, wie beispielsweise einer Benutzerschnittstelle 2212 (wie Tastatur, Maus, Touchscreen oder anderen Eingabegeräten), Kommunikationsgeräten 2226 (wie Modems, Netzwerkschnittstellengeräten oder anderen Typen von Kommunikationsgeräten, die durch ein Computernetzwerk 2260 kommunizieren können), Audio-E/A-Geräten 2214 und/oder einem Datenspeichergerät 2228 in Kommunikation sein. Das Datenspeichergerät 2228 kann Code und Daten 2230 speichern, die von den Prozessoren 2270 und/oder 2280 ausgeführt werden können. In alternativen Ausführungsformen könnte jeder Teil der Busarchitekturen mit einem oder mehreren PtP-Links implementiert sein.
  • Das in 22 dargestellte Computersystem ist eine schematische Darstellung einer Ausführungsform eines Datenverarbeitungssystems, das zum Implementieren verschiedener Ausführungsformen verwendet werden kann, die hierin erörtert wurden. Es versteht sich, dass verschiedene Komponenten des in 22 dargestellten Systems in einer Systemchip (SoC)-Architektur oder in jeder anderen geeigneten Konfiguration, die zum Erreichen der Funktionalität und der Merkmale der hierin bereitgestellten Beispiele und Implementierungen imstande sind, kombiniert sein können.
  • Computerprogrammcode zum Ausführen von Operationen der vorliegenden Offenbarung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, die eine objektorientierte Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, und herkömmliche verfahrensorientierte Programmiersprachen, wie beispielsweise die „C“-Programmiersprache, oder ähnliche Programmiersprachen umfassen. Der Programmcode kann zur Gänze auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem Remote-Computer oder zur Gänze auf einem Remote-Computer oder Server ausgeführt werden. Im letzteren Szenario kann der Remote-Computer durch jeden Typ von Netzwerk, einschließlich eines lokalen Netzwerk (LAN) oder eines Weiterverkehrsnetzwerks (WAN), mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann durch einen externen Computer (zum Beispiel durch das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt sein.
  • Die vorliegenden Offenbarung wurde unter Bezugnahme auf veranschaulichte Fluss- und/oder Blockdiagrammen von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass eine oder mehrere der veranschaulichten Fluss- und/oder Blockdiagrammen und Kombinationen von Blöcken in den veranschaulichten Fluss- und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert sein können. Die Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, Spezialcomputers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, derart dass die Anweisungen, die über den Prozessor des Computers oder einer anderen Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Fluss- und/oder Blockdiagramme spezifiziert werden.
  • Diese Computerprogrammanweisungen können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, derart dass die im computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungsmittel umfasst, welche die Funktionen/Vorgänge implementieren, die in dem Block oder den Blöcken der Flussdiagramme und/oder Blockdiagramme spezifiziert werden.
  • Die Computerprogrammanweisungen können außerdem in einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um eine Reihe von betrieblichen Schritten zu bewirken, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden sollen, um einen computerimplementierten Prozess zu erzeugen, derart dass die Anweisungen, welche auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Implementieren der Funktionen/Vorgänge bereitstellen, die in dem Block oder den Blöcken der Fluss- und/oder Blockdiagramme spezifiziert werden.
  • Die Fluss- und Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise von möglichen Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in den Fluss- oder Blockdiagrammen ein Modul, ein Segment oder einen Teil eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren der spezifizierten logischen Funktion(en) umfasst. Es ist außerdem zu erwähnen, dass in einigen alternativen Implementierungen die in dem Block erwähnten Funktionen in einer anderen als in der in den Figuren angegebenen Reihenfolge stattfinden können. Zum Beispiel können zwei hintereinander dargestellte Blöcke je nach der involvierten Funktionalität tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden. Es ist außerdem zu erwähnen, dass jeder Block der veranschaulichten Block- und/oder Flussdiagramme und Kombinationen von Blöcken in den veranschaulichten Block- und/oder Flussdiagrammen durch hardwarebasierte Spezialsysteme, welche die spezifizierten Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen implementiert sein können. Wie hierin verwendet, kann „computerimplementiertes Verfahren“ sich auf jedes Verfahren beziehen, das von einem oder mehreren Prozessoren, einem Computersystem mit einem oder mehreren Prozessoren, einem Mobilgerät, wie beispielsweise einem Smartphone (das einen oder mehrere Prozessoren umfassen kann), einem Tablet, einem Laptop-Computer, einer Set-Top-Box, einer Spielekonsole und so weiter ausgeführt wird.
  • Ausführungsformen können als ein Computerprozess, ein Datenverarbeitungssystem oder als ein Herstellungsgegenstand, wie beispielsweise ein Computerprogrammprodukt von computerlesbaren Medien, implementiert sein. Das Computerprogrammprodukt kann ein Computerspeichermedium sein, das von einem Computer gelesen werden kann und Computerprogrammanweisungen zum Ausführen eines Computerprozesses codiert.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Äquivalente aller Mittel oder Schritte sowie Funktionselemente in den nachstehenden Patentansprüchen sollen alle Strukturen, Materialien oder Vorgänge zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen umfassen, die eigens beansprucht werden. Die Beschreibung der vorliegenden Offenbarung wurde zum Zwecke der Veranschaulichung und Beschreibung dargelegt und soll weder erschöpfend sein, noch die Offenbarung auf die offenbarte Form beschränken. Für den Fachmann sind viele Modifikationen und Änderungen zu erkennen, ohne vom Schutzbereich und Wesen der Offenbarung abzuweichen. Die Ausführungsformen sind gewählt und beschrieben, um die Grundsätze der Offenbarung und die praktische Anwendung am besten zu erläutern und andere Fachleute zu befähigen, die Offenbarung für Ausführungsformen mit verschiedenen Modifikationen je nach Eignung für die beabsichtigte Verwendung zu verstehen.
  • Die vorstehende Beschreibung einer oder mehrerer Implementierungen stellt eine Veranschaulichung und Beschreibung bereit und soll weder erschöpfend sein, noch den Schutzbereich von Ausführungsformen auf die konkrete offenbarte Form beschränken. Modifikationen und Änderungen sind angesichts der vorstehenden Lehren möglich oder können aus der Realisierung verschiedener Ausführungsformen erfasst werden.
  • WEITERE ANMERKUNGEN UND BEISPIELE:
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Spezifikation. Die Ausführungsformen des Systems, der Vorrichtung, des Verfahrens und des maschinenlesbaren Speichermediums können eines der folgenden Beispiele oder eine Kombination davon umfassen:
  • Beispiel A1 ist eine Vorrichtung, die umfasst: einen Prozessorkern; und eine Interconnect-Schnittstelle, die mit dem Prozessorkern gekoppelt ist, um ein Peripheriegerät über einen Link, der zwischen dem Peripheriegerät und der Vorrichtung hergestellt ist, mit dem Prozessorkern zu verbinden, wobei die Interconnect-Schnittstelle dient zum: Auswählen einer Kryptografiemaschine aus einer Mehrzahl von Kryptografiemaschinen, die in der Interconnect-Schnittstelle für den Link instanziiert sind, wobei die Kryptografiemaschine zum symmetrischen Verschlüsseln von Daten ist, die durch den Link gesendet werden sollen.
  • In Beispiel A2 kann der Gegenstand nach Beispiel A1 optional umfassen, wobei jede der Mehrzahl von Kryptografiemaschinen instanziiert ist für eines von: einem Anforderungstyp auf dem Link, einem virtuellen Kanal auf dem Link oder einem Anforderungstyp innerhalb eines virtuellen Kanals auf dem Link.
  • In Beispiel A3 kann der Gegenstand nach einem der Beispiele A1 bis A2 optional umfassen, wobei die Kryptografiemaschine zum Verwenden eines Schlüssels und eines Zählers zum Durchführen von Zählermodusverschlüsselung zum symmetrischen Verschlüsseln der Daten ist.
  • In Beispiel A4 kann der Gegenstand nach Beispiel A3 optional umfassen, wobei der Schlüssel mit einem oder mehreren anderen Schlüsseln übereinstimmt, die mit einer oder mehreren anderen Kryptografiemaschinen der Mehrzahl von Kryptografiemaschinen assoziiert sind, und wobei der Zähler eine Anzahl von höchstwertigen Bits umfasst, die in einen eindeutigen Wert in Bezug auf eine gleiche Anzahl von höchstwertigen Bits in einem oder mehreren anderen Zählern, die mit der einen oder den mehreren anderen Kryptografiemaschinen der Mehrzahl von Kryptografiemaschinen assoziiert sind, hartcodiert sind.
  • In Beispiel A5 kann der Gegenstand nach Beispiel A3 optional umfassen, wobei der Schlüssel in Bezug auf einen oder mehrere andere Schlüssel, die mit einer oder mehreren anderen Kryptografiemaschinen der Mehrzahl von Kryptografiemaschinen assoziiert sind, eindeutig ist.
  • In Beispiel A6 kann der Gegenstand nach einem der Beispiele A3 bis A5 optional umfassen, wobei die Interconnect-Schnittstelle einen Interconnect-Protokollstapel umfasst zum: Erzeugen eines Pakets, das von der Kryptografiemaschine verschlüsselte Daten enthält; und Speichern eines vom Zähler abgeleiteten Wertes im Paket.
  • In Beispiel A7 kann der Gegenstand nach Beispiel A6 optional umfassen, wobei der Wert des Zählers basierend auf einer konfigurierbaren Paketfrequenz im Paket gespeichert wird.
  • In Beispiel A8 kann der Gegenstand nach einem der Beispiele A6 bis A7 optional umfassen, wobei der vom Zähler abgeleitete Wert auf einem von einer Anzahl von niedrigstwertigen Bits im Zähler oder allen der Bits im Zähler basiert.
  • In Beispiel A9 kann der Gegenstand nach einem der Beispiele A1 bis A8 optional umfassen, wobei die Interconnect-Schnittstelle ein Peripheral Component Interconnect Express, PCle,-Stammkomplex ist.
  • In Beispiel A10 kann der Gegenstand nach einem der Beispiele A1 bis A9 optional umfassen, wobei die Vorrichtung ein Systemchip ist, und das Peripheriegerät ein Festkörperlaufwerk ist.
  • Bei Beispiel C1 handelt es sich um ein oder mehrere nicht-transitorische, computerlesbare Speichermedien mit darauf gespeicherten Anweisungen, wobei die Anweisungen ausgeführt werden können, um eine Maschine zu veranlassen zum: Empfangen erster Daten und eines Wertes, der von einem ersten Zähler abgeleitet ist, der mit einer ersten Kryptografiemaschine eines sendenden Geräts assoziiert ist, an einer Interconnect-Schnittstelle eines empfangenden Geräts über einen Link, der mit dem sendenden Gerät verbunden ist; und Auswählen einer zweiten Kryptografiemaschine einer Mehrzahl von Kryptografiemaschinen, die auf der Interconnect-Schnittstelle für den Link instanziiert sind, wobei die zweite Kryptografiemaschine zum Durchführen einer oder mehrerer Operationen zum symmetrischen Entschlüsseln der ersten Daten ist.
  • In Beispiel C2 kann der Gegenstand nach Beispiel C1 optional umfassen, wobei die zweite Kryptografiemaschine basierend auf einem von einem Anforderungstyp, der mit den ersten Daten assoziiert ist, einem virtuellen Kanal, der mit den ersten Daten assoziiert ist, oder einem Anforderungstyp innerhalb eines virtuellen Kanals, der mit den ersten Daten assoziiert ist, auszuwählen ist.
  • In Beispiel C3 kann der Gegenstand nach einem der Beispiele C1 bis C2 optional umfassen, wobei der vom ersten Zähler abgeleitete Wert zum Durchführen mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten zu verwenden ist.
  • In Beispiel C4 kann der Gegenstand nach einem der Beispiele C1 bis C3 optional umfassen, wobei der vom ersten Zähler abgeleitete Wert eines von einer Anzahl von niedrigstwertigen Bits im ersten Zähler oder allen der Bits im ersten Zähler ist.
  • In Beispiel C5 kann der Gegenstand nach einem der Beispiele C1 bis C4 optional umfassen, wobei die zweite Kryptografiemaschine dient zum: Verwenden des vom ersten Zähler abgeleiteten Wertes als einen Zeiger in einer Tabelle von vorausberechneten verschlüsselten Strömen, um einen vorausberechneten verschlüsselten Strom zum Entschlüsseln der ersten Daten zu identifizieren; und Verwenden des vorausberechneten verschlüsselten Stroms in mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten.
  • In Beispiel C6 kann der Gegenstand nach einem der Beispiele C1 bis C4 optional umfassen, wobei die zweite Kryptografiemaschine dient zum: Erzeugen eines verschlüsselten Stroms basierend auf dem vom ersten Zähler abgeleiteten Wert und einem mit der zweiten Kryptografiemaschine assoziierten Schlüssel; und Verwenden des vorausberechneten verschlüsselten Stroms in mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten.
  • In Beispiel C7 kann der Gegenstand nach Beispiel C6 optional umfassen, wobei die zweite Kryptografiemaschine dient zum: Bestimmen, ob ein Wert, der von einem zweiten Zähler abgeleitet ist, der mit der zweiten Kryptografiemaschine assoziiert ist, mit dem Wert, der vom ersten Zähler abgeleitet ist, der mit der ersten Kryptografiemaschine assoziiert ist, nicht synchronisiert ist, wobei der verschlüsselte Strom basierend auf einem Bestimmen zu erzeugen ist, dass der vom zweiten Zähler abgeleitete Wert mit dem vom ersten Zähler abgeleiteten Wert nicht synchronisiert ist.
  • Beispiel S1 ist ein System, das umfasst: eine erste Interconnect-Schnittstelle, die mit einem Prozessorkern gekoppelt ist, wobei die erste Interconnect-Schnittstelle eine erste Kryptografiemaschine umfasst; und eine zweite Interconnect-Schnittstelle, die eine zweite Kryptografiemaschine umfasst, wobei die erste Kryptografiemaschine dient zum: symmetrischen Verschlüsseln erster Daten, um zweite Daten zu erzeugen; und Senden der zweiten Daten und eines Wertes, der von einem ersten Zähler abgeleitet ist, der mit der ersten Kryptografiemaschine assoziiert ist, über einen Link, der die erste Interconnect-Schnittstelle mit der zweiten Interconnect-Schnittstelle verbindet, an die zweite Interconnect-Schnittstelle.
  • In Beispiel S2 kann der Gegenstand nach Beispiel S1 optional umfassen, wobei die erste Kryptografiemaschine ferner dient zum: Erzeugen eines Pakets, das die zweiten Daten enthält; Bestimmen, ob eine Paketfrequenzzählung eine Schwelle erreicht oder überschritten hat; und Speichern basierend auf einem Bestimmen, dass die Paketfrequenzzählung eine Schwelle erreicht oder überschritten hat, des vom ersten Zähler abgeleiteten Wertes im Paket.
  • In Beispiel S3 kann der Gegenstand nach einem der Beispiele S1 bis S2 optional umfassen, wobei die zweite Kryptografiemaschine ferner zum Rücksetzen des Links in Reaktion auf ein Bestimmen ist, dass ein Wert, der von einem zweiten Zähler abgeleitet ist, der mit der zweiten Kryptografiemaschine assoziiert ist, mit dem Wert, der vom ersten Zähler abgeleitet ist, der mit der ersten Kryptografiemaschine assoziiert ist, nicht synchronisiert ist.
  • In Beispiel S4 kann der Gegenstand nach einem der Beispiele S1 bis S3 optional umfassen wobei die erste Interconnect-Schnittstelle eine dritte Kryptografiemaschine umfasst, und wobei die zweite Interconnect-Schnittstelle eine vierte Kryptografiemaschine umfasst, die über den Link mit der dritten Kryptografiemaschine verbunden ist.
  • In Beispiel S5 kann der Gegenstand nach Beispiel S4 optional umfassen wobei die erste und die zweite Kryptografiemaschine mit einem ersten virtuellen Kanal und einem ersten Anforderungstyp assoziiert sind, und wobei die dritte und die vierte Kryptografiemaschine mit einem zweiten virtuellen Kanal und dem ersten Anforderungstyp assoziiert sind.
  • In Beispiel S6 kann der Gegenstand nach Beispiel S4 optional umfassen wobei die erste und die zweite Kryptografiemaschine mit einem ersten virtuellen Kanal und einem ersten Anforderungstyp assoziiert sind, und wobei die dritte und die vierte Kryptografiemaschine mit dem ersten virtuellen Kanal und einem zweiten Anforderungstyp assoziiert sind.
  • Beispiel M1 ist ein Verfahren, das umfasst: Empfangen erster Daten und eines Wertes, der von einem ersten Zähler abgeleitet ist, der mit einer ersten Kryptografiemaschine eines sendenden Geräts assoziiert ist, an einer Interconnect-Schnittstelle eines empfangenden Geräts über einen Link, der mit dem sendenden Gerät verbunden ist; und Auswählen einer zweiten Kryptografiemaschine einer Mehrzahl von Kryptografiemaschinen, die auf der Interconnect-Schnittstelle für den Link instanziiert sind, wobei die zweite Kryptografiemaschine zum Durchführen einer oder mehrerer Operationen zum symmetrischen Entschlüsseln der ersten Daten ist.
  • In Beispiel M2 kann der Gegenstand nach Beispiel M1 optional ein Auswählen der zweiten Kryptografiemaschine basierend auf einem von einem Anforderungstyp, der mit den ersten Daten assoziiert ist, einem virtuellen Kanal, der mit den ersten Daten assoziiert ist, oder einem Anforderungstyp innerhalb eines virtuellen Kanals, der mit den ersten Daten assoziiert ist, umfassen.
  • In Beispiel M3 kann der Gegenstand nach einem oder mehreren der Beispiele M1 bis M2 optional umfassen, wobei der vom ersten Zähler abgeleitete Wert zum Durchführen mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten verwenden wird.
  • In Beispiel M4 kann der Gegenstand nach Beispiel M1 bis M3 optional umfassen, wobei der vom ersten Zähler abgeleitete Wert eines von einer Anzahl von niedrigstwertigen Bits im ersten Zähler oder allen der Bits im ersten Zähler ist.
  • In Beispiel M5 kann der Gegenstand nach einem der Beispiele M1 bis M4 optional ein Verwenden des vom ersten Zähler abgeleiteten Wertes als einen Zeiger in einer Tabelle von vorausberechneten verschlüsselten Strömen, um einen vorausberechneten verschlüsselten Strom zum Entschlüsseln der ersten Daten zu identifizieren, und Verwenden des vorausberechneten verschlüsselten Stroms in mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten umfassen.
  • In Beispiel M6 kann der Gegenstand nach einem der Beispiele M1 bis M4 optional ein Erzeugen eines verschlüsselten Stroms basierend auf dem vom ersten Zähler abgeleiteten Wert und einem mit der zweiten Kryptografiemaschine assoziierten Schlüssel und Verwenden des vorausberechneten verschlüsselten Stroms in mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten umfassen.
  • In Beispiel M7 kann der Gegenstand nach Beispiel M6 optional ein Bestimmen umfassen, ob ein Wert, der von einem zweiten Zähler abgeleitet ist, der mit der zweiten Kryptografiemaschine assoziiert ist, mit dem Wert, der vom ersten Zähler abgeleitet ist, der mit der ersten Kryptografiemaschine assoziiert ist, nicht synchronisiert ist, wobei der verschlüsselte Strom basierend auf einem Bestimmen erzeugt wird, dass der vom zweiten Zähler abgeleitete Wert mit dem vom ersten Zähler abgeleiteten Wert nicht synchronisiert ist.
  • Beispiel X1 stellt eine Vorrichtung bereit, wobei die Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der vorstehenden Beispiele M1 bis M7 aufweist.
  • In Beispiel X2 kann der Gegenstand nach Beispiel X1 optional umfassen, dass das Mittel zum Durchführen des Verfahrens mindestens einen Prozessor und mindestens ein Speicherelement aufweist.
  • In Beispiel X3 kann der Gegenstand nach Beispiel X2 optional umfassen, dass das mindestens eine Speicherelement maschinenlesbare Anweisungen aufweist, die bei Ausführung die Vorrichtung zum Durchführen des Verfahrens nach einem der vorstehenden Beispiele M1 bis M7 veranlassen.
  • In Beispiel X4 kann der Gegenstand nach einem der Beispiele X1 bis X3 optional umfassen, dass die Vorrichtung eines von einem Datenverarbeitungssystem oder einem Systemchip ist.
  • Beispiel Y1 stellt mindestens ein maschinenlesbares Speichermedium bereit, das Anweisungen aufweist, wobei die Anweisungen bei Ausführung ein System oder eine Vorrichtung nach einem der Beispiele S1 bis S6 bzw. A1 bis A10 realisieren oder ein Verfahren nach einem der Beispiele M1 bis M7 implementieren.

Claims (25)

  1. Vorrichtung, umfassend: einen Prozessorkern; und eine Interconnect-Schnittstelle, die mit dem Prozessorkern gekoppelt ist, um ein Peripheriegerät über einen Link, der zwischen dem Peripheriegerät und der Vorrichtung hergestellt ist, mit dem Prozessorkern zu verbinden, wobei die Interconnect-Schnittstelle dient zum: Auswählen einer Kryptografiemaschine aus einer Mehrzahl von Kryptografiemaschinen, die in der Interconnect-Schnittstelle für den Link instanziiert sind, wobei die Kryptografiemaschine zum symmetrischen Verschlüsseln von Daten dient, die durch den Link gesendet werden sollen.
  2. Vorrichtung nach Anspruch 1, wobei jede der Mehrzahl von Kryptografiemaschinen instanziiert ist für eines von: einem Anforderungstyp auf dem Link, einem virtuellen Kanal auf dem Link oder einem Anforderungstyp innerhalb eines virtuellen Kanals auf dem Link.
  3. Vorrichtung nach einem der Ansprüche 1 bis 2, wobei die Kryptografiemaschine zum Verwenden eines Schlüssels und eines Zählers zum Durchführen von Zählermodusverschlüsselung zum symmetrischen Verschlüsseln der Daten dient.
  4. Vorrichtung nach Anspruch 3, wobei der Schlüssel mit einem oder mehreren anderen Schlüsseln übereinstimmt, die mit einer oder mehreren anderen Kryptografiemaschinen der Mehrzahl von Kryptografiemaschinen assoziiert sind, und wobei der Zähler eine Anzahl von höchstwertigen Bits umfasst, die in einen eindeutigen Wert in Bezug auf eine gleiche Anzahl von höchstwertigen Bits in einem oder mehreren anderen Zählern, die mit der einen oder den mehreren anderen Kryptografiemaschinen der Mehrzahl von Kryptografiemaschinen assoziiert sind, hartcodiert sind.
  5. Vorrichtung nach Anspruch 3, wobei der Schlüssel in Bezug auf einen oder mehrere andere Schlüssel, die mit einer oder mehreren anderen Kryptografiemaschinen der Mehrzahl von Kryptografiemaschinen assoziiert sind, eindeutig ist.
  6. Vorrichtung nach einem der Ansprüche 3 bis 5, wobei die Interconnect-Schnittstelle ferner einen Interconnect-Protokollstapel umfasst zum: Erzeugen eines Pakets, das von der Kryptografiemaschine verschlüsselte Daten enthält; und Speichern eines vom Zähler abgeleiteten Wertes im Paket.
  7. Verfahren nach Anspruch 6, wobei der vom Zähler abgeleitete Wert basierend auf einer konfigurierbaren Paketfrequenz im Paket gespeichert wird.
  8. Vorrichtung nach einem der Ansprüche 6 bis 7, wobei der vom Zähler abgeleitete Wert auf einem von einer Anzahl von niedrigstwertigen Bits im Zähler oder allen Bits im Zähler basiert.
  9. Vorrichtung nach einem der Ansprüche 1 bis 8, wobei die Interconnect-Schnittstelle ein Peripheral Component Interconnect Express, PCle,-Stammkomplex ist.
  10. Vorrichtung nach einem der Ansprüche 1 bis 9, wobei die Vorrichtung ein Systemchip ist, und das Peripheriegerät ein Festkörperlaufwerk ist.
  11. Nicht-transitorisches, computerlesbares Speichermedium oder mehrere nicht-transitorische, computerlesbare Speichermedien mit darauf gespeicherten Anweisungen, wobei die Anweisungen ausgeführt werden können, um eine Maschine zu veranlassen zum: Empfangen erster Daten und eines Wertes, der von einem ersten Zähler abgeleitet ist, der mit einer ersten Kryptografiemaschine eines sendenden Geräts assoziiert ist, an einer Interconnect-Schnittstelle eines empfangenden Geräts über einen Link, der mit dem sendenden Gerät verbunden ist; und Auswählen einer zweiten Kryptografiemaschine einer Mehrzahl von Kryptografiemaschinen, die auf der Interconnect-Schnittstelle für den Link instanziiert sind, wobei die zweite Kryptografiemaschine zum Durchführen einer oder mehrerer Operationen zum symmetrischen Entschlüsseln der ersten Daten ist.
  12. Nicht-transitorisches, computerlesbares Speichermedium oder mehrere nicht-transitorische, maschinenlesbare Speichermedien nach Anspruch 11, wobei die zweite Kryptografiemaschine basierend auf einem von einem Anforderungstyp, der mit den ersten Daten assoziiert ist, einem virtuellen Kanal, der mit den ersten Daten assoziiert ist, oder einem Anforderungstyp innerhalb eines virtuellen Kanals, der mit den ersten Daten assoziiert ist, auszuwählen ist.
  13. Nicht-transitorisches, computerlesbares Speichermedium oder mehrere nicht-transitorische, maschinenlesbare Speichermedien nach einem der Ansprüche 11 bis 12, wobei der vom ersten Zähler abgeleitete Wert zum Durchführen mindestens einer der einen oder mehreren Operationen zum Entschlüsseln der ersten Daten zu verwenden ist.
  14. Nicht-transitorisches, computerlesbares Speichermedium oder mehrere nicht-transitorische, maschinenlesbare Speichermedien nach einem der Ansprüche 11 bis 13, wobei der vom ersten Zähler abgeleitete Wert eines von einer Anzahl von niedrigstwertigen Bits im ersten Zähler oder allen Bits im ersten Zähler ist.
  15. Nicht-transitorisches, computerlesbares Speichermedium oder mehrere nicht-transitorische, maschinenlesbare Speichermedien nach einem der Ansprüche 11 bis 14, wobei die zweite Kryptografiemaschine dient zum: Verwenden des vom ersten Zähler abgeleiteten Wertes als einen Zeiger in einer Tabelle von vorausberechneten verschlüsselten Strömen, um einen vorausberechneten verschlüsselten Strom zum Entschlüsseln der ersten Daten zu identifizieren; und Verwenden des vorausberechneten verschlüsselten Stroms in mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten.
  16. Nicht-transitorisches, computerlesbares Speichermedium oder mehrere nicht-transitorische, maschinenlesbare Speichermedien nach einem der Ansprüche 11 bis 14, wobei die zweite Kryptografiemaschine dient zum: Erzeugen eines verschlüsselten Stroms basierend auf dem vom ersten Zähler abgeleiteten Wert und einem mit der zweiten Kryptografiemaschine assoziierten Schlüssel; und Verwenden des verschlüsselten Stroms in mindestens einer der einen oder der mehreren Operationen zum Entschlüsseln der ersten Daten.
  17. Nicht-transitorisches, computerlesbares Speichermedium oder mehrere nicht-transitorische, maschinenlesbare Speichermedien nach Anspruch 16, wobei die zweite Kryptografiemaschine dient zum: Bestimmen, ob ein Wert, der von einem zweiten Zähler abgeleitet ist, der mit der zweiten Kryptografiemaschine assoziiert ist, mit dem Wert, der vom ersten Zähler abgeleitet ist, der mit der ersten Kryptografiemaschine assoziiert ist, nicht synchronisiert ist, wobei der verschlüsselte Strom basierend auf einem Bestimmen zu erzeugen ist, dass der vom zweiten Zähler abgeleitete Wert mit dem vom ersten Zähler abgeleiteten Wert nicht synchronisiert ist.
  18. System, umfassend: eine erste Interconnect-Schnittstelle, die mit einem Prozessorkern gekoppelt ist, wobei die erste Interconnect-Schnittstelle eine erste Kryptografiemaschine umfasst; und eine zweite Interconnect-Schnittstelle, die eine zweite Kryptografiemaschine umfasst, wobei die erste Kryptografiemaschine dient zum: symmetrischen Verschlüsseln erster Daten, um zweite Daten zu erzeugen; und Senden der zweiten Daten und eines Wertes, der von einem ersten Zähler abgeleitet ist, der mit der ersten Kryptografiemaschine assoziiert ist, über einen Link, der die erste Interconnect-Schnittstelle mit der zweiten Interconnect-Schnittstelle verbindet, an die zweite Interconnect-Schnittstelle.
  19. System nach Anspruch 18, wobei die erste Kryptografiemaschine ferner dient zum: Erzeugen eines Pakets, das die zweiten Daten enthält; Bestimmen, ob eine Paketfrequenzzählung eine Schwelle erreicht oder überschritten hat; und Speichern basierend auf einem Bestimmen, dass die Paketfrequenzzählung eine Schwelle erreicht oder überschritten hat, des vom ersten Zähler abgeleiteten Wertes im Paket.
  20. System nach einem der Ansprüche 18 bis 19, wobei die zweite Kryptografiemaschine ferner dient zum: Rücksetzen des Links in Reaktion auf ein Bestimmen, dass ein Wert, der von einem zweiten Zähler abgeleitet ist, der mit der zweiten Kryptografiemaschine assoziiert ist, mit dem Wert, der vom ersten Zähler abgeleitet ist, der mit der ersten Kryptografiemaschine assoziiert ist, nicht synchronisiert ist.
  21. System nach einem der Ansprüche 18 bis 20, wobei die erste Interconnect-Schnittstelle eine dritte Kryptografiemaschine umfasst, und wobei die zweite Interconnect-Schnittstelle eine vierte Kryptografiemaschine umfasst, die über den Link mit der zweiten Kryptografiemaschine verbunden ist.
  22. System nach Anspruch 21, wobei die erste und die zweite Kryptografiemaschine mit einem ersten virtuellen Kanal und einem ersten Anforderungstyp assoziiert sind, und wobei die dritte und die vierte Kryptografiemaschine mit einem zweiten virtuellen Kanal und dem ersten Anforderungstyp assoziiert sind.
  23. System nach Anspruch 21, wobei die erste und die zweite Kryptografiemaschine mit einem ersten virtuellen Kanal und einem ersten Anforderungstyp assoziiert sind, und wobei die dritte und die vierte Kryptografiemaschine mit dem ersten virtuellen Kanal und einem zweiten Anforderungstyp assoziiert sind.
  24. Verfahren, umfassend: Empfangen erster Daten und eines Wertes, der von einem ersten Zähler abgeleitet ist, der mit einer ersten Kryptografiemaschine eines sendenden Geräts assoziiert ist, an einer Interconnect-Schnittstelle eines empfangenden Geräts über einen Link, der mit dem sendenden Gerät verbunden ist; und Auswählen einer zweiten Kryptografiemaschine einer Mehrzahl von Kryptografiemaschinen, die auf der Interconnect-Schnittstelle für den Link instanziiert sind; und Durchführen einer oder mehrerer Operationen zum symmetrischen Entschlüsseln der ersten Daten durch die zweite Kryptografiemaschine.
  25. Verfahren nach Anspruch 24, wobei die zweite Kryptografiemaschine basierend auf einem von einem Anforderungstyp, der mit den ersten Daten assoziiert ist, einem virtuellen Kanal, der mit den ersten Daten assoziiert ist, oder einem Anforderungstyp innerhalb eines virtuellen Kanals, der mit den ersten Daten assoziiert ist, ausgewählt wird.
DE102019128141.5A 2018-12-17 2019-10-18 Hardwaremechanismen zur linkverschlüsselung Pending DE102019128141A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862780819P 2018-12-17 2018-12-17
US62/780,819 2018-12-17
US16/368,800 2019-03-28
US16/368,800 US11533170B2 (en) 2018-12-17 2019-03-28 Hardware mechanisms for link encryption

Publications (1)

Publication Number Publication Date
DE102019128141A1 true DE102019128141A1 (de) 2020-06-18

Family

ID=67300241

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019128141.5A Pending DE102019128141A1 (de) 2018-12-17 2019-10-18 Hardwaremechanismen zur linkverschlüsselung

Country Status (2)

Country Link
US (1) US11533170B2 (de)
DE (1) DE102019128141A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11606688B2 (en) 2019-02-20 2023-03-14 Coretigo Ltd. Secure key exchange mechanism in a wireless communication system
US11456877B2 (en) * 2019-06-28 2022-09-27 Intel Corporation Unified accelerator for classical and post-quantum digital signature schemes in computing environments
US11636046B1 (en) * 2019-11-15 2023-04-25 The Charles Stark Draper Laboratory, Inc. Latency free data encryption and decryption between processor and memory
US11200189B2 (en) * 2019-11-21 2021-12-14 Hewlett Packard Enterprise Development Lp Baseboard management controller-based security operations for hot plug capable devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734044B2 (en) * 2006-02-23 2010-06-08 Texas Instruments Incorporated Method and apparatus for synchronous stream cipher encryption with reserved codes
WO2012108024A1 (ja) * 2011-02-09 2012-08-16 富士通株式会社 中継装置、中継履歴記録方法、及びデータ処理装置
US8677127B2 (en) * 2011-12-08 2014-03-18 Lantiq Deutschland Gmbh Method and apparatus for secure setup of an encrypted connection between two communication devices
KR102007368B1 (ko) * 2012-12-17 2019-08-05 한국전자통신연구원 Pci 익스프레스 스위치 및 이를 이용한 컴퓨터 시스템
WO2014210277A1 (en) * 2013-06-28 2014-12-31 The Trustees Of Columbia University In The City Of New York Diversified instruction set processing to enhance security
US10891535B1 (en) * 2014-08-19 2021-01-12 Next Level Derivatives Llc Secure multi-server stabilized data packet exchange systems
US10708236B2 (en) * 2015-10-26 2020-07-07 Secturion Systems, Inc. Multi-independent level secure (MILS) storage encryption
US20180183581A1 (en) 2016-12-28 2018-06-28 Intel Corporation Arrangements for datalink security
US10419481B1 (en) * 2017-05-16 2019-09-17 Cavium, Llc Methods and systems for overlapping protection domain in network devices
US11153289B2 (en) * 2017-07-28 2021-10-19 Alibaba Group Holding Limited Secure communication acceleration using a System-on-Chip (SoC) architecture
US11140139B2 (en) * 2018-11-21 2021-10-05 Microsoft Technology Licensing, Llc Adaptive decoder selection for cryptographic key generation

Also Published As

Publication number Publication date
US11533170B2 (en) 2022-12-20
US20190229901A1 (en) 2019-07-25

Similar Documents

Publication Publication Date Title
EP3706005B1 (de) Sicheres stream-protokoll für serielle verbindung
US10755156B2 (en) Configurable integrity protected link for secure accelerator communication
DE102019128141A1 (de) Hardwaremechanismen zur linkverschlüsselung
EP3783517A1 (de) Integrität und datenverschlüsselung (id) über rechnerbusse
US11669481B2 (en) Enabling sync header suppression latency optimization in the presence of retimers for serial interconnect
US11743109B2 (en) Link layer communication by multiple link layer encodings for computer buses
US11789889B2 (en) Mechanism for device interoperability of switches in computer buses
US11394531B2 (en) Overhead reduction for link protection
US20210409351A1 (en) Shared resources for multiple communication traffics
CN110347360A (zh) 包括多个显示设备的系统中的显示设备的同步
DE112019006221T5 (de) Virtueller Flash
CN107276620B (zh) 耳机数据传输的方法、终端设备及计算机可读存储介质
EP3751781B1 (de) Overhead-reduktion für verbindungsschutz
US11789891B2 (en) Multi-device read protocol using a single device group read command
US20240106644A1 (en) Mitigation of side channel attacks on platform interconnects using endpoint hardware based detection, synchronization and re-keying