DE102023103971A1 - Schutz vor zurücksetzen durch nicht vertrauenswürdige software während kryptographischer operationen - Google Patents

Schutz vor zurücksetzen durch nicht vertrauenswürdige software während kryptographischer operationen Download PDF

Info

Publication number
DE102023103971A1
DE102023103971A1 DE102023103971.7A DE102023103971A DE102023103971A1 DE 102023103971 A1 DE102023103971 A1 DE 102023103971A1 DE 102023103971 A DE102023103971 A DE 102023103971A DE 102023103971 A1 DE102023103971 A1 DE 102023103971A1
Authority
DE
Germany
Prior art keywords
cpu
register
engine
processor
interrupt status
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
DE102023103971.7A
Other languages
English (en)
Inventor
Anuj Rao
Adam Hendrickson
Vaishali Kulkarni
Gobikrishna Dhanuskodi
Naveen Cherukuri
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102023103971A1 publication Critical patent/DE102023103971A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Vorrichtungen, Systeme und Techniken zur Behandlung von Fehlern durch eine Direct-Memory-Access (DMA) Engine. Wenn eine DMA-Engine einen Fehler detektiert, der mit einer Verschlüsselungs- oder Entschlüsselungsoperation assoziiert ist, meldet die DMA-Engine den Fehler an eine CPU, die möglicherweise eine nicht vertrauenswürdige Software ausführt, die eine DMA-Operation leitet, und an den sicheren Prozessor. Die DMA-Engine wartet auf die Freigabe durch den sicheren Prozessor, bevor sie auf weitere Anweisungen der potenziell nicht vertrauenswürdigen Software reagiert.

Description

  • TECHNISCHES GEBIET
  • Mindestens ein Ausführungsbeispiel bezieht sich auf Verarbeitungsressourcen, die zur Durchführung und Erleichterung vertraulicher Datenübertragungen verwendet werden. Zumindest ein Ausführungsbeispiel betrifft Hardware-Schaltungen zur Verhinderung von Zurücksetzungsvorgängen durch nicht vertrauenswürdige Software während kryptographischer Operationen.
  • HINTERGRUND
  • Beschleunigerschaltungen umfassen Direct-Memory-Access (DMA)-Schaltungen, um auf den Systemspeicher unabhängig von einer zentralen Verarbeitungseinheit (CPU) zuzugreifen. Die DMA-Schaltungen können auch zum Kopieren oder Verschieben von Daten innerhalb des Speichers oder zwischen Speichern verwendet werden. Wenn Daten geschützt werden müssen, können die DMA-Schaltungen kryptografische Schaltungen implementieren, um Daten zu ver- und entschlüsseln, die von einem sicheren Speicher kopiert werden. Kritische Sicherheitsfehler im Benutzerbereich, wie z. B. Authentifizierungsfehler, können auftreten, und normalerweise werden diese Fehler an die Systemsoftware gemeldet, z. B. an den Ressourcenverwalter (RM) der Grafikverarbeitungseinheit (GPU). Während kryptografischer Operationen ist die Systemsoftware nicht vertrauenswürdig, so dass man sich auf kritische Sicherheitsfehler im Benutzerraum, die dem RM gemeldet werden, nicht verlassen kann, da die Systemsoftware die Meldung kritischer Sicherheitsfehler maskieren und Authentifizierungsfehler vor dem Benutzer verbergen kann. Selbst wenn die kritischen Sicherheitsfehler an die sichere Software gemeldet werden, wird das Zurücksetzen des DMA-Schaltkreises von der nicht vertrauenswürdigen Systemsoftware durchgeführt. Wenn ein Zurücksetzen ausgelöst wird, bevor die sichere Software die kritischen Sicherheitsfehler bearbeitet, könnte die nicht vertrauenswürdige Systemsoftware möglicherweise die Assoziierung des Fehlers mit dem entsprechenden Kontext maskieren.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Rechnersystems mit einer Beschleunigerschaltung einschließlich einer Kopier-Engine, die Zurücksetzungen (engl. reset, dt. auch Reset) von nicht vertrauenswürdiger Software während kryptographischer Operationen durch die Beschleunigerschaltung verhindert, gemäß zumindest einigen Ausführungsbeispielen;
    • 2 ist ein Blockdiagramm einer Beschleunigerschaltung mit einer privaten Schnittstelle zwischen einer Kopier-Engine und einem sicheren Prozessor, gemäß zumindest einigen Ausführungsbeispielen;
    • 3 ist ein Blockdiagramm einer Kopier-Engine einer Beschleunigerschaltung, gemäß zumindest einigen Ausführungsbeispielen;
    • 4 ist ein Blockdiagramm von Interrupt-Leitungen zwischen einer Kopier-Engine und einem sicheren Prozessor und einem GPU-Systemprozessor, gemäß zumindest einigen Ausführungsbeispielen;
    • 5 ist ein Flussdiagramm eines Verschlüsselungsvorgangs, bei dem ein Fehler detektiert wird, gemäß mindestens einigen Ausführungsbeispielen;
    • 6 ist ein Flussdiagramm eines Entschlüsselungsvorgangs, bei dem ein Fehler detektiert wird, gemäß mindestens einigen Ausführungsbeispielen;
    • 7 ist ein Flussdiagramm eines Verfahrens zum Verhindern eines Zurücksetzens durch nicht vertrauenswürdige Software während einer kryptographischen Operation, bis ein oder mehrere Interrupt-Statusbits gelöscht sind, gemäß zumindest einigen Ausführungsbeispielen; und
    • 8 ist ein Blockdiagramm eines Rechnersystems mit einem Beschleuniger, der eine Kopier-Engine umfasst, die Fairness unter mehreren Benutzern des Rechnersystems garantiert, gemäß mindestens einigen Ausführungsbeispielen.
  • Detaillierte Beschreibung
  • Wie oben beschrieben, können DMA-Schaltungen für das Kopieren oder Verschieben von Daten von Speicher zu Speicher verwendet werden und kryptografische Hardware zum Schutz der Daten umfassen. Während kryptographischer Operationen ist die Systemsoftware nicht vertrauenswürdig und könnte möglicherweise Authentifizierungsfehler vor dem Benutzer verbergen. Außerdem kann die nicht vertrauenswürdige Systemsoftware den DMA-Schaltkreis zurücksetzen, bevor kritische Sicherheitsfehler behandelt werden, wodurch möglicherweise Daten preisgegeben werden. So kann beispielsweise partiell authentifizierter Text offengelegt werden, wenn er nicht von sicherer Software nach Authentifizierungsfehlern entfernt wird. Ein weiteres Beispiel: Initialisierungsvektoren (IVs) können offengelegt und wiederverwendet werden, wenn sie nach einem Überlauf des IV-Zählers nicht von sicherer Software neu konfiguriert werden. Wenn die kritischen Sicherheitsfehler nicht vor dem Zurücksetzen behandelt werden, gibt es ein Zeitfenster, in dem die von der kryptografischen Hardware verwendeten Daten potentiell für einen Angreifer zugänglich sind.
  • Aspekte und Ausführungsbeispiele der vorliegenden Offenbarung befassen sich mit diesen und anderen Herausforderungen, indem sie einen sicheren Pfad zum Melden kritischer Sicherheitsfehler und eine Zurücksetz-Handhabungslogik (Logik zur Behandlung von Zurücksetzvorgängen) bereitstellen, die ein Zurücksetzsignal von nicht vertrauenswürdiger Software zurückhält, bis die kritischen Sicherheitsfehler behoben sind. In mindestens einem Ausführungsbeispiel umfasst eine Beschleunigerschaltung eine DMA-Engine (auch als Kopier-Engine (CE) bezeichnet), die über eine private Schnittstelle mit einem sicheren Prozessor und über eine verschlüsselte Schnittstelle mit einer zentralen Verarbeitungseinheit (CPU) gekoppelt ist. Die DMA-Engine detektiert einen Fehler, der mit einem Verschlüsselungs- oder Entschlüsselungsvorgang durch eine kryptografische Hardware-Engine assoziiert ist. Die DMA-Engine setzt ein oder mehrere Interrupt-Statusbits in einem ersten Register, auf das der sichere Prozessor zugreifen kann. Die DMA-Engine meldet einen oder mehrere mit dem Fehler assoziierte Interrupts an die CPU und den sicheren Prozessor. Der sichere Prozessor führt eine oder mehrere Operationen durch, um das eine oder die mehreren Interrupt-Statusbits zu löschen. Die DMA-Engine kann ein Zurücksetzsignal von der nicht vertrauenswürdigen Software empfangen. Die DMA-Engine hält das Zurücksetzsignal (engl. hold, dt. auch anhalten, um das Zurücksetzen der DMA-Engine zu verhindern), bis das eine oder die mehreren Interrupt-Statusbits durch den sicheren Prozessor gelöscht sind. Als Antwort auf die Löschung des einen oder der mehreren Interrupt-Statusbits durch den sicheren Prozessor wird das Zurücksetzen der DMA-Engine durchgeführt.
  • Bei der Beschleunigerschaltung kann es sich um eine Grafikverarbeitungseinheit (GPU), eine Deep-Learning-Beschleunigerschaltung (DLA), eine Intelligenzverarbeitungseinheit (IPU), eine neuronale Verarbeitungseinheit (NPU), eine Tensorverarbeitungseinheit (TPU), einen Prozessor für ein neuronales Netzwerk (NNP), eine Datenverarbeitungseinheit (DPU), eine Vision-Verarbeitungseinheit (VPU), eine applikationsspezifische integrierte Schaltung (ASIC) oder ein Field-Programmable Gate Array (FPGA) handeln. Beschleunigerschaltungen können die Rechenanforderungen der Inferenzphase des neuronalen Netzwerks erfüllen, indem sie Bausteine bereitstellen, die die Kernoperationen des Deep Learning beschleunigen. Ein Deep-Learning-Beschleuniger kann beispielsweise verwendet werden, um verschiedene neuronale Netzwerke zu beschleunigen, wie etwa Convolutional Neural Networks (CNNs), Recurrent Neural Networks (RNN), Fully Connected Neural Networks und so weiter.
  • Eine Beschleunigerschaltung kann von einer mit der Beschleunigerschaltung gekoppelten Host-Zentraleinheit (CPU) geplant (scheduled) werden. Alternativ kann die Beschleunigerschaltung lokal durch Firmware geplant werden, um eine minimale Latenzzeit zu gewährleisten. Die Beschleunigerschaltung kann für verschiedene Typen von Schichten in diesen neuronalen Netzwerken verwendet werden, wie z. B. Festfunktions-Engines für Faltungen, Aktivierungsfunktionen, Pooling, Stapelnormalisierung oder Ähnliches. Es sei darauf hingewiesen, dass ein neuronales Netzwerk aus algorithmischer Sicht mit einem Satz von Schichten (hier als „ursprüngliche Schichten“ bezeichnet) spezifiziert werden kann, wie z. B. Bias und Batch-Normalisierung. Diese ursprünglichen Schichten können in einen anderen Satz von Schichten (hier als „Hardwareschichten“ bezeichnet) kompiliert oder umgewandelt werden, wobei jede Hardwareschicht als Basiselement für die Planung der Ausführung in einer Beschleunigerschaltung verwendet wird. Die Zuordnung zwischen Originalschichten und Hardwareschichten kann m:n sein, wobei m die Anzahl der Originalschichten und n die Anzahl der Hardwareschichten ist. In einem neuronalen Netzwerk können beispielsweise die Originalschichten Bias, Batch-Normalisierung und Local Response Normalization (LRN), wie z. B. eine Rectified Linear Unit (ReLU), zu einer Hardware-Schicht zusammengefasst werden. In diesem Fall ist das Verhältnis m:n 3:1. Jede Hardwareschicht kann durch eine grundlegende Anweisung für die Beschleunigerschaltung repräsentiert werden, um eine Operation durchzuführen, und jede Schicht kann mit einer anderen Schicht über eine Speicherschnittstelle kommunizieren. Eine erste Schicht kann beispielsweise von einer Engine mit einer ersten festen Funktion in einem DLA-Schaltkreis durchgeführt werden, die einen Eingabetensor empfängt, eine Operation an dem Eingabetensor durchführt, um einen Ausgabetensor zu generieren, und den Ausgabetensor in einem Systemspeicher speichert, z. B. in einem Dynamic Random Access Memory (DRAM), der mit dem Beschleuniger gekoppelt ist. Eine zweite Engine mit fester Funktion kann eine zweite Schicht durchführen, die den Ausgabetensor der ersten Schicht aus dem Speicher als zweiten Eingabetensor empfängt, eine Operation an dem zweiten Eingabetensor durchführt, um einen zweiten Ausgabetensor zu generieren, und den zweiten Ausgabetensor im DRAM speichert. Jede Kommunikation führt eine Tensor-Leseoperation und eine Tensor-Schreiboperation in der Speicherschnittstelle ein.
  • 1 ist ein Blockdiagramm eines Rechnersystems 100 mit einer Beschleunigerschaltung 102, die eine Kopier-Engine 120 enthält, die Zurücksetzungen von nicht vertrauenswürdiger Software während kryptographischer Operationen durch die Beschleunigerschaltung 102 verhindert, gemäß zumindest einigen Ausführungsbeispielen. Das Rechnersystem 100 wird als Headless-System betrachtet, in dem die Verwaltung einer Beschleunigerschaltung 102 Einheit für Einheit auf einem Hauptsystemprozessor, CPU 104, erfolgt. Die Beschleunigerschaltung 102 umfasst eine Interrupt-Schnittstelle 106, eine Configuration Space Bus (CSB)-Schnittstelle 108, eine primäre Datenbus-Schnittstelle 110 (Data Backbone Interface (DBBIF)), eine sekundäre Datenbus-Schnittstelle 112 und eine Kopier-Engine (CE) 120, wie im Folgenden detaillierter beschrieben. Die CPU 104 und die Beschleunigerschaltung 102 sind mit dem Systemspeicher 114 (z.B. DRAM) gekoppelt. Die Beschleunigerschaltung 102 ist über die primäre Datenbusschnittstelle 110 mit dem Systemspeicher 114 gekoppelt. Die Beschleunigerschaltung 102 kann über die sekundäre Datenbusschnittstelle 112 mit einem sekundären Speicher 116, beispielsweise einem Videospeicher (DRAM und/oder SRAM), gekoppelt sein. Die CSB-Schnittstelle 108 kann eine Steuerkanalschnittstelle sein, die eine Registerdatei (z.B. Konfigurationsregister) und eine Interrupt-Schnittstelle implementiert. In mindestens einem Ausführungsbeispiel ist die CSB-Schnittstelle 108 ein synchroner 32-Bit-Steuerbus mit geringer Bandbreite und niedrigem Stromverbrauch, der von der CPU 104 verwendet wird, um auf Konfigurationsregister in der Beschleunigerschaltung 102 zuzugreifen. Bei der Interrupt-Schnittstelle kann es sich um einen 1-Bit-gesteuerten Interrupt handeln. Die Interrupt-Leitung kann aktiviert werden, wenn eine Aufgabe abgeschlossen ist oder wenn ein Fehler auftritt.
  • Die Beschleunigerschaltung 102 kann auch einen Speicherschnittstellenblock umfassen, der eine oder mehrere Busschnittstellen zur Verbindung mit dem Speicher verwendet. In mindestens einem Ausführungsbeispiel verwendet der Speicherschnittstellenblock die primäre Datenbusschnittstelle 110, die mit dem Systemspeicher 114 verbunden ist. Der Systemspeicher 114 kann DRAM umfassen. Die primäre Datenbusschnittstelle 110 kann gemeinsam mit der CPU und den Eingabe/Ausgabe-Peripheriegeräten (E/A) genutzt werden. In mindestens einem Ausführungsbeispiel handelt es sich bei der primären Datenbusschnittstelle 110 um eine Daten-Backbone-Schnittstelle (DBB), die die Beschleunigerschaltung 102 und andere Speicher-Subsysteme verbindet. Die DBB-Schnittstelle ist ein konfigurierbarer Datenbus, der verschiedene Adressgrößen, verschiedene Datengrößen und verschiedene Anforderungsgrößen angeben kann. In mindestens einem Ausführungsbeispiel verwendet die DBB-Schnittstelle ein Schnittstellenprotokoll, wie z. B. AXI (Advanced Extensible Interface) oder andere ähnliche Protokolle. In mindestens einem Ausführungsbeispiel verwendet der Speicherschnittstellenblock die sekundäre Datenbusschnittstelle 112 zur Verbindung mit dem sekundären Speicher 116, der der Beschleunigerschaltung 102 zugeordnet ist. Der Sekundärspeicher 116 kann DRAM umfassen. Der Sekundärspeicher 116 kann ein Videospeicher sein. Die Beschleunigerschaltung 102 kann auch eine Speicherschnittstelle umfassen, die mit einem der Beschleunigerschaltung 102 zugeordneten Speicher mit höherer Bandbreite verbunden ist. Dieser Speicher kann On-Chip-SRAM sein, um einen höheren Durchsatz und eine geringere Zugriffslatenz bereitzustellen.
  • Während des Inferenzierens beginnt ein typischer Ablauf beispielsweise damit, dass ein Verwaltungsprozessor (entweder ein Mikrocontroller oder eine CPU), der mit der Beschleunigerschaltung 102 gekoppelt ist, eine Konfiguration der Hardwareschicht und einen Aktivierungsbefehl sendet. Wenn Datenabhängigkeiten dies nicht ausschließen, können mehrere Hardwareschichten an verschiedene Engines gesendet und gleichzeitig aktiviert werden (z.B. wenn es eine weitere Schicht gibt, deren Eingaben nicht von der Ausgabe der vorherigen Schicht abhängen). In mindestens einem Ausführungsbeispiel kann jede Engine über einen doppelten Puffer für ihre Konfigurationsregister verfügen, so dass die Konfiguration einer zweiten Schicht zum Verarbeiten beginnen kann, wenn die aktive Schicht abgeschlossen ist. Sobald eine Hardware-Engine ihre aktive Aufgabe beendet hat, kann die Beschleunigerschaltung 102 den Verwaltungsprozessor unterbrechen, um den Abschluss zu melden, und der Verwaltungsprozessor kann den Prozess erneut beginnen. Diese Art von Befehl-Ausführung-Interrupt-Fluss wiederholt sich, bis die Inferenzierung des gesamten Netzwerks abgeschlossen ist. In mindestens einem Ausführungsbeispiel kann eine Interrupt-Schnittstelle den Abschluss eines Kopiervorgangs signalisieren. In einem anderen Ausführungsbeispiel kann eine Semaphor-Freigabe (Schreiben in ein Flag, das typischerweise im Systemspeicher liegt und von einem CPU-Thread abgefragt wird) verwendet werden, um der Software mitzuteilen, dass die Arbeitslast beendet ist.
  • Das Rechnersystem 100 von 1 repräsentiert ein kostenempfindlicheres System als ein Rechnersystem mit einem dedizierten Controller oder Koprozessor für die Verwaltung der Beschleunigerschaltung 102 nach Einheiten. Das Rechensystem 100 kann als Modell eines kleinen Systems betrachtet werden. Das Modell eines kleinen Systems kann für kostensensitive, vernetzte Geräte der Klasse Internet der Dinge (IoT), künstliche Intelligenz (KI) und automatisierungsorientierte Systeme mit genau definierten Aufgaben verwendet werden, bei denen Kosten, Fläche und Leistung die wichtigsten Faktoren sind. Einsparungen in Bezug auf Kosten, Fläche und Leistung können durch konfigurierbare Ressourcen der Beschleunigerschaltung 102 erzielt werden. Modelle neuronaler Netzwerke können vorkompiliert und in ihrer Leistung optimiert werden, so dass die Komplexität größerer Modelle reduziert werden kann. Die Verringerung der Lastkomplexität wiederum ermöglicht eine verkleinerte DLA-Implementierung, bei der die Modelle weniger Speicherplatz verbrauchen und die Systemsoftware weniger Zeit zum Laden und Verarbeiten benötigt. In mindestens einem Ausführungsbeispiel kann das Rechnersystem 100 jeweils eine Aufgabe ausführen. Alternativ kann das Rechnersystem 100 auch mehrere Aufgaben gleichzeitig ausführen. Beim Rechensystem 100 führen Kontext-Switches durch das Rechensystem 100 nicht dazu, dass die CPU 104 durch die Bedienung einer großen Anzahl von Interrupts von der Beschleunigerschaltung 102 übermäßig belastet wird. Dadurch entfällt die Notwendigkeit eines zusätzlichen Mikrocontrollers, und die CPU 104 führt die Speicherallokation und andere Operationen zur Verwaltung des Subsystems durch. Wie hier beschrieben, umfasst die Beschleunigerschaltung 102 eine Kopier-Engine 120, die ein Zurücksetzen durch nicht vertrauenswürdige Software während kryptografischer Operationen durch die Beschleunigerschaltung 102 verhindert. In mindestens einem Ausführungsbeispiel umfasst die Kopier-Engine 120 eine Zurücksetz-Handhabungslogik 122. Die Zurücksetz-Handhabungslogik 122 kann ein Zurücksetzsignal von nicht vertrauenswürdiger Software empfangen und das Zurücksetzsignal halten (um ein Zurücksetzen der Kopier-Engine 120 zu verhindern), bis alle Sicherheitsfehler behoben sind. Die Zurücksetz-Handhabungslogik 122 kann eine oder mehrere Operationen zulassen, die durchgeführt werden, um einen Kontext zu schützen, der mit Verschlüsselungs- oder Entschlüsselungsoperationen assoziiert ist, die von der Beschleunigerschaltung 102 durchgeführt werden, bevor das Zurücksetzen erlaubt wird. Bevor das Zurücksetzen durch die Zurücksetz-Handhabungslogik 122 zugelassen wird, kann beispielsweise partiell authentifizierter Text durch sichere Software entfernt werden, nachdem Authentifizierungsfehler aufgetreten sind. Ein weiteres Beispiel: Bevor das Zurücksetzen durch die Zurücksetz-Handhabungslogik 122 erlaubt wird, können IVs neu konfiguriert werden, nachdem IV-Zähler-Überlauffehler aufgetreten sind. Die Zurücksetz-Handhabungslogik 122 ermöglicht die Behandlung von Sicherheitsfehlern vor dem Zurücksetzen, wodurch das Fenster geschlossen wird, in dem die von der kryptografischen Hardware verwendeten Daten andernfalls potentiell für einen Angreifer zugänglich wären. Zusätzliche Details der Kopier-Engine 120 werden im Folgenden mit Bezug auf die 2-3 beschrieben.
  • 2 ist ein Blockdiagramm einer Beschleunigerschaltung 102 mit einer privaten Schnittstelle zwischen einer Kopier-Engine und einem sicheren Prozessor, gemäß zumindest einigen Ausführungsbeispielen. Die Beschleunigerschaltung 102 ist über einen PCI-Bus (Peripheral Component Interconnect) 202 mit der CPU 104 gekoppelt. Die Beschleunigerschaltung 102 kann über den PCI-Bus 202 mit einer oder mehreren PCI-Komponenten 204 gekoppelt sein. Die CPU 104 führt Systemsoftware 206 aus, z. B. ein Betriebssystem (OS), einen Ressourcenverwalter (RM) oder beides in einem Kernel-Bereich. Die CPU 104 führt auch eine oder mehrere Applikationen 208 in einem Benutzerraum aus. Die Beschleunigerschaltung 102 umfasst eine Kopier-Engine (CE) 120, einen sicheren Prozessor 210 und eine Interrupt-Meldelogik 212. In mindestens einem Ausführungsbeispiel kann die Interrupt-Meldelogik 212 ein Teil eines Interrupt-Controllers sein oder werden. Der Interrupt-Controller kann einen oder mehrere Interrupts von der Kopier-Engine 120 empfangen und den einen oder die mehreren Interrupts an die CPU 104 senden. In einigen Fällen sendet der Interrupt-Controller einen Interrupt-Controller an die CPU und die CPU muss auf Register im Interrupt-Controller zugreifen, um zu bestimmen, welche Komponente den Interrupt und/oder einen Typ von Interrupt ausgelöst hat. Das CE 120 umfasst eine kryptografische Hardware-Engine 222, die kryptografische Operationen durchführt. Das CE 120 behandelt die Systemsoftware 206, einschließlich des RM, als nicht vertrauenswürdig (hier auch als nicht vertrauenswürdige Software 206 bezeichnet). Das CE 120 kann Sicherheitsfehler unter Verwendung der Interrupt-Meldelogik 212 melden, behandelt aber auch die Interrupt-Meldelogik 212 als nicht vertrauenswürdig. Dementsprechend gibt es für die Meldung kritischer Sicherheitsfehler eine sichere Interrupt-Leitung 209 zum sicheren Prozessor 210. Der sichere Prozessor 210 kann ein dedizierter On-Chip-Sicherheitsprozessor (SEC2) sein. In einem anderen Ausführungsbeispiel kann der sichere Prozessor 210 ein GPU-Systemprozessor (GSP) sein. Der sichere Prozessor 210 führt sichere Software 214 aus, die die Sicherheitsfehler behandelt. Die sichere Software 214 kann ein sicheres RM umfassen. Die sichere Interrupt-Leitung 209 kann Teil einer privaten Schnittstelle zwischen der Kopier-Engine 120 und dem sicheren Prozessor 210 sein. Auf die sichere Interrupt-Leitung 209 kann von anderen Komponenten, wie der CPU 104 oder der PCI-Komponente 204, nicht zugegriffen werden. Die Kopier-Engine 120 kann einen Fehler detektieren, der mit einer Ver- oder Entschlüsselungsoperation durch die kryptografische Hardware-Engine 222 assoziiert ist, und einen Interrupt auf der sicheren Interrupt-Leitung 209 senden oder ausgeben. Dieser Interrupt wird von der sicheren Software 214 abgearbeitet. Die sichere Software 214 kann von einem Benutzer bescheinigt werden, bevor das vertrauliche Rechnen auf der Beschleunigerschaltung 102 beginnt. Die Kopier-Engine 120 kann den Interrupt auch auf einer Interrupt-Leitung 211 zwischen der Interrupt-Logik 212 und der Kopier-Engine 120 senden oder ausgeben. Die Interrupt-Meldelogik 212 kann den Interrupt an die CPU 104 über eine Schnittstelle 213 zwischen der Interrupt-Meldelogik 212 und der CPU 104 melden. Infolge des Interrupts kann die nicht vertrauenswürdige Software 206 (z.B. die nicht vertrauenswürdige RM) über eine Schnittstelle 215 zwischen der Kopier-Engine 120 und der CPU 104 ein Zurücksetzen (auch als Engine-Reset bezeichnet) an die Kopier-Engine 120 senden oder ausgeben. Die Zurücksetz-Handhabungslogik 122 der Kopier-Engine 120 bestätigt das Zurücksetzen der Engine durch die nicht vertrauenswürdige Software 206 erst dann, wenn alle kritischen Sicherheitsfehler im Kontext durch die sichere Software 214 behoben sind. Dies garantiert das Detektieren und Behandeln von kritischen Sicherheitsfehlern im CE-Kontext während kryptographischer Operationen durch sichere Software 214 vor dem Zurücksetzen. Die Kopier-Engine 120 stellt damit einen zuverlässigen Mechanismus zur Erkennung von Manipulationen an Software bereit und schränkt auch das Angriffsfenster ein, in dem nicht authentifizierter Text aufgedeckt oder IVs wiederverwendet werden können.
  • In mindestens einem Ausführungsbeispiel geht die Kopier-Engine 120, wenn sie ein Zurücksetzen von der nicht vertrauenswürdigen Software 206 empfängt, in einen angehaltenen Zustand über, in dem die Kopier-Engine 120 die Ausgabe neuer Anforderungen stoppt und darauf wartet, dass alle ausstehenden Bindungen, Flushes und Speicheranforderungen beantwortet werden, bevor sie eine Zurücksetzbestätigung an die nicht vertrauenswürdige Software 206 zurücksendet. Die Kopier-Engine 120 wartet in diesem angehaltenen Zustand auch, bis alle sicheren Interrupts von der sicheren Software 214 angesprochen wurden, bevor sie die Zurücksetzbestätigung an die nicht vertrauenswürdige Software 206 zurücksendet. Auf diese Weise können alle sensiblen Daten vor einem Angriff geschützt werden. Das Zeitfenster für Angriffe wird minimiert, und die kompromittierte Software oder Manipulation kann dem Benutzer garantiert gemeldet und mit hoher Priorität behandelt werden.
  • In mindestens einem Ausführungsbeispiel umfasst die Kopier-Engine 120 ein oder mehrere Register 224, auf die die CPU 104 (und optional die PCI-Komponente 204) zugreifen kann, und ein oder mehrere Register 226, auf die die CPU 104 oder die PCI-Komponente 204 nicht zugreifen können. In mindestens einem Ausführungsbeispiel umfassen das eine oder die mehreren Register 226 ein Steuerregister in einem PCI-Konfigurationsraum, auf das die CPU 104 (oder die PCI-Komponente 204) zugreifen kann. In mindestens einem Ausführungsbeispiel kann es sich bei dem einen oder den mehreren Registern 224 um Memory-Mapped-Input-Output-Register (MNΠO) handeln, die von Komponenten verwendet werden, die dem PCI-Bus 202 zugeordnet sind. In mindestens einem Ausführungsbeispiel kann die CPU 104 die Kopier-Engine 120 zurücksetzen, indem sie ein bestimmtes Bit in den MNΠO-Registern setzt. Wie hierin beschrieben, kann die Zurücksetz-Handhabungslogik 122 das Zurücksetzen der Kopier-Engine 120 verhindern, bis die Sicherheitsfehler durch den sicheren Prozessor 210 behandelt wurden. Auf das eine oder die mehreren Register 226 kann der sichere Prozessor 210 (z.B. SEC2 oder GSP) zugreifen. Insbesondere kann die Kopier-Engine 120 einen Fehler detektieren, der mit einer kryptografischen Operation assoziiert ist, und ein oder mehrere Interrupt-Statusbits in dem einen oder den mehreren Registern 226 setzen. Die Kopier-Engine 120 (z.B. die Zurücksetz-Handhabungslogik 122) kann das eine oder die mehreren Interrupt-Statusbits in dem einen oder den mehreren Registern 226 setzen, um den/die Interrupt(s) an den sicheren Prozessor 210 zu melden. In mindestens einem Ausführungsbeispiel kann das eine oder die mehreren Register 226 ein Interrupt-Statusregister umfassen. Der sichere Prozessor 210 kann als Antwort auf einen oder mehrere Interrupts, die von der Kopier-Engine 120 ausgegeben werden, eine oder mehrere Operationen durchführen, um einen Kontext einer kryptografischen Operation zu schützen und ein oder mehrere Interrupt-Statusbits im Interrupt-Statusregister zu löschen. In mindestens einem Ausführungsbeispiel kann die sichere Software 214 eine oder mehrere Operationen durchführen, um den Kontext zu schützen und die ein oder mehreren Interrupt-Statusbits im Interrupt-Statusregister der Kopier-Engine 120 zu löschen. Sobald das eine oder die mehreren Interrupt-Statusbits im Interrupt-Statusregister durch den sicheren Prozessor 210 gelöscht sind, kann die Zurücksetz-Handhabungslogik 122 die Zurücksetzbestätigung an die CPU 104 senden und sich selbst zurücksetzen. Auf diese Weise kann die Kopier-Engine 120 garantieren, dass das eine oder die mehreren Interrupts behandelt werden, bevor sie zurückgesetzt wird und eine Zurücksetzbestätigung an die CPU 104 sendet.
  • In mindestens einem Ausführungsbeispiel kann die sichere Software 214 den einen oder die mehreren Interrupts an die Applikation 208 über eine verschlüsselte Schnittstelle 217 zwischen dem sicheren Prozessor 210 und der CPU 104 melden. Dadurch kann sichergestellt werden, dass die Applikation 208 (d. h. der Benutzer) über die Sicherheitsfehler benachrichtigt wird, selbst wenn die von der Interrupt-Meldelogik 212 gemeldeten Interrupts von nicht vertrauenswürdiger Software 206 maskiert werden.
  • In mindestens einem Ausführungsbeispiel ist die kryptografische Hardware-Engine 222 eine Advanced Encryption Standard Galois Counter Mode (AES-GCM) Hardware-Engine, die die AES256-GCM-Verschlüsselung implementiert. AES-GCM ist ein authentifizierter Verschlüsselungsalgorithmus, der sowohl die Verschlüsselung als auch die Authentifizierung von Datenströmen durchführt. Hardware-Implementierungen für AES-GCM-Schaltungen sind teuer, verursacht durch die 128-Bit-Multiplikatoren, die pro 16 gleichzeitig zu verschlüsselnden Bytes erforderlich sind. AES-GCM ist eine sequentielle Operation, bei der die Daten nacheinander analysiert werden müssen, um die GHASH-Funktion zu berechnen. Ein einziger AES-Schlüssel K wird sowohl zur Verschlüsselung von Daten als auch zur Ableitung authentifizierter Daten verwendet. Die Komponente, die GCM zur Erzeugung eines Nachrichtenauthentifizierungscodes verwendet, heißt GHASH. Wenn mehrere Benutzer/Applikationen versuchen, die AES-GCM Hardware-Engine zu nutzen, werden die Operationen für einen Benutzer serialisiert und abgeschlossen, bevor die Operationen für einen anderen Benutzer serialisiert und abgeschlossen werden, da eine Statusverfolgung für einen Blockzähler, einen Initialisierungsvektor (IV), einen Schlüssel (KEY) und GHASH erforderlich ist. Da die AES-GCM Hardware-Engine gemeinsam genutzt werden kann, besteht die Möglichkeit, dass nicht vertrauenswürdige Software versucht, auf sensible Daten zuzugreifen oder sie aus dem Kontext der AES-GCM Hardware-Engine abzurufen. Wie oben beschrieben, kann kompromittierte Software einen Sicherheitsfehler veranlassen und die Kopier-Engine 120 zurücksetzen, um zu versuchen, sensible Daten in Verbindung mit den AES-GCM-Operationen zu erhalten. Die Zurücksetz-Handhabungslogik 122 kann verhindern, dass die kompromittierte Software die Kopier-Engine 120 zurücksetzt, bis die Sicherheitsfehler von vertrauenswürdiger Software behandelt werden, wie z. B. von sicherer Software 214 des sicheren Prozessors 210, wie oben beschrieben.
  • 3 ist ein Blockdiagramm einer Kopier-Engine 120 einer Beschleunigerschaltung, gemäß zumindest einigen Ausführungsbeispielen. Die Kopier-Engine 120 umfasst eine Hardware-Scheduler-Schaltung 302 (markiert mit ESCHED für Engine-Scheduler) und eine Direct-Memory-Access (DMA)-Schaltung 304. Die Hardware Scheduler-Schaltung 302 ist mit dem Sekundärspeicher 306 und der DMA-Schaltung 304 gekoppelt. Die DMA-Schaltung 304 ist mit einer Speicherverwaltungseinheit 330 (MMU) gekoppelt, die mit dem Systemspeicher verbunden ist (in 3 nicht gezeigt). Die MMU 330 kann Routing-Funktionen zwischen dem Systemspeicher und der Beschleunigerschaltung bereitstellen. Die MMU 330 kann einen Pfad für alle Engines des Beschleunigers, einschließlich der Kopier-Engine 120, bereitstellen, um auf einen beliebigen Ort im Speicher (z.B. Videospeicher, Systemspeicher usw.) zuzugreifen. Die MMU 330 kann Zugriffsprüfungen durchführen, um nur erlaubte Zugriffe über die Schnittstelle zuzulassen. Die MMU 330 kann illegale Zugriffe beschränken und melden. Die DMA-Schaltung 304 umfasst eine kryptografische Schaltung, die einen authentifizierten Verschlüsselungsalgorithmus implementiert, um abgerufene Daten aus dem sicheren Speicher zu verschlüsseln oder empfangene Daten zu entschlüsseln, die im sicheren Speicher abgelegt werden sollen. In mindestens einem Ausführungsbeispiel, wie in 3 gezeigt, umfasst die DMA-Schaltung 304 eine Logical-Compute-Engine (logische Kopier-Engine) (LCE) 308 und eine Physical-Copy-Engine (physikalische Kopier-Engine) (PCE) 310. Die DMA-Schaltung 304 kann mehrere PCEs umfassen, die an die LCE 308 gekoppelt sind. Die LCE 308 kann einen sicheren Speicher 312 umfassen, der eine Verschlüsselungs-IV, einen Blockzähler und einen HASH-Schlüssel für jeden Kanalschlüssel-Slot speichern kann. Jeder Kanalschlüsselsteckplatz, der einer Applikation zugewiesen werden kann, kann den Kontext für die Applikation in einem bestimmten Steckplatz im sicheren Speicher 312 speichern. Die LCE 308 kann auch eine sichere private Schnittstelle 314 umfassen, die Konfigurationsinformationen, Verschlüsselungs- und Entschlüsselungsschlüssel, einen IV-Zufallszahlengenerator und eine sichere SRAM-Programmierung von einem Sicherheits-Hub oder einem anderen Sicherheitsschaltkreis empfängt, der private Schlüssel verwaltet. In mindestens einem Ausführungsbeispiel werden die Ver- und Entschlüsselungsschlüssel und die IV durch einen Zufallszahlengenerator von einem Sicherheitsprozessor auf der GPU generiert. In anderen Ausführungsbeispielen kann die Kopier-Engine 120 auch mehrere LCEs umfassen.
  • In mindestens einem Ausführungsbeispiel, wie in 3 gezeigt, umfasst die PCE 310 eine Front-End-Schaltung 316, eine Lese-Pipeline 318, eine Schreib-Pipeline 320 und eine kryptografische Schaltung 322, die sichere Datenübertragungen für Applikationen bereitstellt, bei denen Vertraulichkeit erforderlich ist. In mindestens einem Ausführungsbeispiel ist die kryptografische Schaltung 322 eine AES-GCM Hardware-Engine, die die AES256-GCM-Chiffre implementiert. In mindestens einem Ausführungsbeispiel handelt es sich bei der kryptografischen Hardware-Engine 222 um eine AES-GCM-Schaltung. Alternativ kann die kryptografische Schaltung 322 auch andere sequentielle kryptografische Algorithmen implementieren, bei denen die zugrundeliegende kryptografische Hardware von mehreren Benutzern gemeinsam genutzt wird (z.B. mehrere Applikationen in einem bestimmten Zeitabschnitt). Beispielsweise kann die kryptografische Hardware von mehreren Nutzern in einer Cloud-Infrastruktur gemeinsam genutzt werden. Ein weiteres Beispiel: Die kryptografische Hardware kann in einer virtualisierten Umgebung verwendet werden, in der ein Hypervisor der zugrunde liegenden Hardware ermöglicht, mehrere virtuelle Gastmaschinen (VMs) zu unterstützen, indem sie ihre Ressourcen, einschließlich der Beschleunigerschaltung 102, virtuell gemeinsam nutzt. In einem anderen Ausführungsbeispiel umfasst die DMA-Schaltung 304 eine LCE 308 und eine erste PCE 310 sowie eine zweite PCE. Die erste PCE 310 ist mit der LCE 308 gekoppelt und umfasst die kryptografische Schaltung 322, die erste Lese-Pipeline 318 und die Schreib-Pipeline 320. Die zweite PCE ist mit der LCE 308 gekoppelt und umfasst eine zweite kryptografische Schaltung, eine zweite Lese-Pipeline, eine zweite Schreib-Pipeline und eine zweite Front-End-Schaltung. In mindestens einem Ausführungsbeispiel ist die zweite kryptografische Schaltung eine zweite AES-GCM-Schaltung. Zusätzliche PCEs können jeweils eine Front-End-Schaltung, eine Lese-Pipeline, eine Schreib-Pipeline und eine kryptografische Schaltung umfassen.
  • In mindestens einem Ausführungsbeispiel kann die Kopier-Engine 120 Daten in Verbindung mit einer Datenübertragung verschlüsseln. Um die Datenübertragung zu verschlüsseln, wird ein Kontext auf LCE 308 geladen (CTXT LOAD) mit einem gültigen SRAM-Index, der auf einen Steckplatz im sicheren Speicher 312 zeigt, der einer Applikation zugewiesen ist. Der im Steckplatz des sicheren Speichers 312 indizierte KEY wird in die kryptografische Schaltung 322 (AES Hardware-Engine) geladen. Eine erste verwendete IV ist SRAM.IV+1, die inkrementierte IV, die in LCE 308 gespeichert ist. Die PCE 310 generiert Speicheranforderungen (Lese-/Schreibvorgänge). Die PCE 310 liest den Datenklartext aus einem ersten Speicherbereich (compute protected region, CPR), verschlüsselt den Datenklartext mit dem KEY und IV und fügt ihn dem Authentication Tag (AT oder AuthTag) hinzu. Während des Verschlüsselungsvorgangs liest die PCE 310 aus dem geschützten Speicher (z.B. dem Videospeicher), verschlüsselt die Daten intern unter Verwendung der kryptografischen Schaltung 322 und schreibt die verschlüsselten Daten in den ungeschützten Bereich (z.B. den Systemspeicher oder den Videospeicher). In mindestens einem Ausführungsbeispiel schreibt die PCE 310 die verschlüsselten Daten in einen zweiten Bereich des Speichers (nicht rechengeschützter Bereich (NonCPR)). Am Ende einer Kopie (oder einer letzten in einer Zeitscheibe aufgeteilten Kopie) schreibt die PCE 310 das verwendete IV in den zweiten Speicherbereich (NonCPR) und schreibt das berechnete Authentifizierungskennzeichen in den zweiten Speicherbereich (NonCPR). Bei der Interaktion mit der MMU können die Anfragen einen Identifikator für den Bereich tragen. Der Identifikator der Region identifiziert, wo die Speicherregion CPR oder nicht rechengeschützte Region (NonCPR) sein muss. Die Kopier-Engine 120 kann mit der MMU interagieren, um die Adresse eines jeden Bereichs zu erhalten. Der Identifikator der Region wird von der Kopier-Engine 120 bei einer MMU-Übersetzungsanfrage angegeben, da die MMU die CPR- und NonCPR-Attribute von Speicherregionen verfolgt. Wenn der von der Kopier-Engine 120 angegebene Identifikator der Region nicht mit den Attributen des Zielspeicherorts übereinstimmt, würde MMU den Zugriff verhindern und einen Fehler (z.B. MMU_NACK) an die Kopier-Engine 120 zurückgeben. Die CPR ist ein erster Speicherbereich, der entschlüsselte Daten enthält. CPR kann eine Speicher-Sandbox sein, auf die nur ausgewählte Clients zugreifen können und die für böswillige Akteure unzugänglich ist. NonCPR ist jeder Speicherbereich außerhalb von CPR. Nicht-CPR ist nicht vertrauenswürdig, da böswillige Akteure auf ihn zugreifen können. Die Kopier-Engine 120 kann sicherstellen, dass die Datenbewegung von NonCPR zu CPR dem Pfad der Entschlüsselung folgen muss, d. h. NonCPR muss verschlüsselte Daten enthalten, die nur die Kopier-Engine 120 mit dem richtigen Schlüssel verstehen kann. Ebenso kann die Kopier-Engine 120 sicherstellen, dass jede Datenübertragung von CPR zu NonCPR den Pfad der Verschlüsselung durchläuft. Verschlüsselte Daten in NonCPR sind für böswillige Akteure zugänglich, können aber nicht manipuliert werden, da die böswilligen Akteure nicht über die kryptografischen Schlüssel verfügen, um die verschlüsselten Daten zu verstehen. Die Kopier-Engine 120 kann ein Authentifizierungs-Tag in NonCPR schreiben, so dass die Verwendung eine Beschädigung durch einen böswilligen Akteur detektieren kann, wenn sie entschlüsselt wird.
  • In mindestens einem Ausführungsbeispiel kann die Kopier-Engine 120 Daten in Verbindung mit einer Datenübertragung entschlüsseln. Um die Datenübertragung zu entschlüsseln, wird ein Kontext auf die LCE 308 geladen (CTX LOAD) mit einem gültigen SRAM-Index, der auf einen Steckplatz im sicheren Speicher 312 zeigt, der einer Applikation zugewiesen ist. Der im Steckplatz des sicheren Speichers 312 indizierte KEY wird in die kryptografische Schaltung 322 (AES Hardware-Engine) geladen. Ein erster verwendeter IV ist IB.IV+1, der IV, der in einer Hardware Scheduler-Schaltung verfolgt und inkrementiert und an die LCE 308 weitergeleitet wird. Die PCE 310 liest das erwartete Authentifizierungskennzeichen aus dem Speicher, liest verschlüsselte Daten aus dem zweiten Speicherbereich (NonCPR), entschlüsselt die verschlüsselten Daten mit KEY und IV und fügt sie dem Authentifizierungskennzeichen hinzu. Während des Entschlüsselungsvorgangs liest die PCE 310 aus dem ungeschützten Speicher (z.B. Systemspeicher oder Videospeicher), entschlüsselt die Daten intern unter Verwendung der kryptografischen Schaltung 322 und schreibt die entschlüsselten Daten in den geschützten Bereich (z.B. CPR). In mindestens einem Ausführungsbeispiel schreibt die PCE 310 Klartextdaten in den ersten Bereich des Speichers (CPR). Bei einem letzten Kopiensplit liest die PCE 310 das Authentifizierungskennzeichen von der in den Verfahren bereitgestellten Authentifizierungskennzeichenadresse und vergleicht das berechnete Authentifizierungskennzeichen mit dem bereitgestellten Authentifizierungskennzeichen. Wenn die Werte übereinstimmen, ist der Vorgang erfolgreich. Gibt es keine Übereinstimmung, löst die PCE 310 einen fatalen Interrupt aus, es erfolgt keine Semaphor-Freigabe, und eine Kanalwiederherstellung ist erforderlich. Die Kanalwiederherstellung (auch bekannt als Robust Channel Recovery oder RC Recovery) ist ein Mechanismus, der vom Ressourcenverwalter oder GPU PF-Treiber verwendet wird, um alle anstehenden Arbeiten an einer Engine als ungültig zu markieren, indem ein Fehler in jedem der Arbeitskanäle angezeigt wird. Die Engine wird anschließend zurückgesetzt. Kanalfehler werden vom Ressourcenverwalter (oder GPU-PF-Treiber) verwendet, um eine Software-Schicht (z.B. CUDA) wissen zu lassen, dass die Arbeit nicht abgeschlossen ist.
  • In mindestens einem Ausführungsbeispiel besteht der IV aus 96 Bits und setzt sich aus zwei Komponenten zusammen, die einen 64-Bit-Kanalzähler mit einem eindeutigen Identifikator pro Kanal und einen 32-Bit-Nachrichtenzähler umfassen, der bei Null beginnt und bei jedem Verschlüsselungs-/Entschlüsselungsstart des Kanals (SOC) inkrementiert wird. Eine 96-Bit-RNG-Maske ist eine Maske pro Schlüssel, die in Secure PRI gespeichert ist. Ein Kopier-IV (COPY IV) ist ein RNG-XOR [CHANNEL _CTR, ++MSG CTR]. Die Kopier-Engine detektiert, dass ein IV die maximale Anzahl von Kopien überschritten hat, indem sie feststellt, ob der in der COPY _IV-Konstruktion verwendete MESSAG_CTR+1-Wert Null ist. Die Kopier-Engine 120 verfolgt die in jeder Verschlüsselungskopie verwendete Verschlüsselungs-IV und führt Pre-Increment und Save-Restore aus dem SRAM durch. Die verschlüsselte IV wird an die kryptografische Hardware-Engine 222 weitergeleitet, nachdem sie mit dem RNG in den Verfahren zur Entschlüsselung der IV pro Kopie XOR-verknüpft wurde. Die im SRAM gespeicherte IV wird basierend auf dem Abschluss des Kopiervorgangs reflektiert. Die Kopier-Engine 120 kann mehrere verschlüsselte Kopien haben, die für die PCE sichtbar sind, und erhält zwei Zähler, die die IV umfassen, die bei der verschlüsselten Kopie gesendet werden sollte, und die zuletzt abgeschlossene Kopie. Bei einer Kontextsicherung (CTXT_SAVE) wird der IV der letzten abgeschlossenen Kopie im SRAM gespeichert. Der IV für die Entschlüsselung wird im Instanz-Block gespeichert und bei einer Entschlüsselungskopie über Decrypt IV-Verfahren an die Kopier-Engine 120 weitergegeben. Die Kopier-Engine 120 kann einen Überlauf detektieren und einen Interrupt auslösen, wenn MESSAGE _CTR = 0 ist. Die Kopier-Engine 120 kann die Entschlüsselungs-IV mit dem korrekten RNG XOR-verknüpfen, bevor sie von der LCE an die Front-End-Schaltung 316 weitergeleitet wird.
  • In mindestens einem Ausführungsbeispiel umfasst die Kopier-Engine 120 eine sichere private Schnittstelle 314. Auf die sichere private Schnittstelle 314 kann von sicherer Software zugegriffen werden, um eine sichere Konfiguration oder geheime Schlüssel bereitzustellen und den Interrupt-Status für die Verschlüsselung und Entschlüsselung abzufragen. Die Kopier-Engine 120 kann sich als Client mit einem sicheren Hub 324 verbinden, so dass ein dedizierter On-Chip-Sicherheitsprozessor (SEC2) 326 und ein GPU-Systemprozessor (GSP) 328 auf diese sichere private Schnittstelle 314 zugreifen können, jedoch kein BAR0-Zugriff möglich ist. Der GSP 328 kann verwendet werden, um GPU-Initialisierungs- und Verwaltungsaufgaben auszulagern. Der SEC2 326 verwaltet Verschlüsselungsschlüssel und andere sichere Informationen, die von der Beschleunigerschaltung 102 verwendet werden.
  • In mindestens einem Ausführungsbeispiel ist der sichere Speicher 312 ein sicheres SRAM mit N Einträgen (z.B. 512 Einträge), jeder mit einem gültigen Bit. Jeder Eintrag hat eine untere und obere 128-Bit-Komponente. Die untere Komponente kann einen ersten Verschlüsselungs-IV-Zähler, einen zweiten Verschlüsselungs-IV-Zähler, einen IV-Kanal-Identifikator, einen oder mehrere Schlüsselindizes, Vorkaufsinformationen und einen Blockzähler enthalten. Die höhere Komponente kann eine erste partielle Markierung zur Authentifizierung, eine zweite partielle Markierung zur Authentifizierung, eine dritte partielle Markierung zur Authentifizierung und eine vierte partielle Markierung zur Authentifizierung enthalten. Das sichere SRAM kann über die sichere private Schnittstelle 314 mittels Registern programmiert werden. Der SRAM kann Lese-, Schreib- und Invalidierungsfunktionen unterstützen. Der SRAM-Index kann als gültig markiert werden, wenn die unteren 128 Bits des 256-Bit-Eintrags von SEC2 326/GSP 328 programmiert werden. Beim Versuch, einen ungültigen SRAM-Eintrag zu lesen, wird in den Datenregistern 0x0 zurückgegeben. Bei einem schwerwiegenden Fehler kann nicht garantiert werden, dass der Zustand des SRAMs gültig ist. Die Kopier-Engine 120 kann den SRAM-Index bei einem schwerwiegenden Fehler automatisch ungültig machen, so dass die Software den SRAM-Index neu programmiert.
  • In mindestens einem Ausführungsbeispiel umfasst die DMA-Schaltung 304 drei Arten von Interrupt-Statusregistern, einschließlich regulärer Interrupt-Statusregister im PCI-Konfigurationsraum 258 und sicherer Interrupt-Statusregister 356. Auf den PCI-Konfigurationsraum 258 kann die CPU 104 (und andere PCI-Komponenten auf dem PCI-Bus 202) zugreifen. In mindestens einem Ausführungsbeispiel befinden sich die regulären Interrupt-Statusregister für die CPU im BAR0-Raum und sind für die CPU 104 zugänglich. Eine Interrupt-Leitung zur CPU (über den Interrupt-Controller GIN) wird ausgelöst, wenn dieses zu einer LCE gehörende Register ungleich Null ist. Die sicheren Interrupt-Statusregister 356 sind jedoch für die CPU 104 oder andere PCI-Komponenten am PCI-Bus 202 nicht zugreifbar. Die sicheren Interrupt-Statusregister 356 sind dem SEC2 326 und dem GSP 328 zugreifbar. Insbesondere können die sicheren Interrupt-Statusregister 356 erste sichere Interrupt-Statusregister für SEC2 326 umfassen, auf die nur SEC2 326 über die private Schnittstelle 324 des SECHUB-CE zugreifen kann. Eine Interrupt-Leitung zu SEC2 326 wird ausgelöst, wenn das erste sichere Interrupt-Statusregister, das zu einer beliebigen LCE gehört, ungleich Null ist. Die sicheren Interrupt-Statusregister 356 können ein zweites sicheres Interrupt-Statusregister für GSP 328 umfassen, auf das nur GSP 328 über die private SECHUB-CE-Schnittstelle 324 zugreifen kann. Eine Interrupt-Leitung zum GSP 328 wird ausgelöst, wenn das zweite sichere Interrupt-Statusregister, das zu einer beliebigen LCE gehört, ungleich Null ist. Die private SECHUB-CE-Schnittstelle 324 routet den Zugriff von SEC2 326 und GSP 328 auf die DMA-Schaltung 304 sicher. Während des Betriebs werden in mindestens einem Ausführungsbeispiel eine oder mehrere Interrupt-Leitungen zu SEC2 326 und GSP 328 aktiviert, wenn ein beliebiges Interrupt-Statusbit im Interrupt-Statusregister 356 gesetzt ist. Der SEC2 326 (oder GSP 328) kann das Interrupt-Statusregister 356 lesen, um den Fehler zu bestimmen, der den Interrupt veranlasst hat. Der SEC2 326 (oder GSP 328) kann eine oder mehrere Operationen durchführen, um sensible Daten aus dem Kontext zu entfernen, der mit einer kryptografischen Operation assoziiert ist, die von der kryptografischen Schaltung 322 durchgeführt wird. Wie hierin beschrieben, kann der DMA-Schaltkreis 304 ein externes Zurücksetzen 301 von nicht vertrauenswürdiger Software empfangen und das Zurücksetzen des DMA-Schaltkreises 304 verhindern, bis alle Interrupt-Statusbits im Interrupt-Statusregister 356 durch den SECHUB 324, SEC2 326 und/oder GSP 328 gelöscht sind. Sobald die Interrupt-Statusbits im Interrupt-Statusregister 356 gelöscht sind, was anzeigt, dass die Fehler vom SEC2 326 (oder SECHUB 324 oder GSP 328) behandelt wurden, kann die DMA-Schaltung 304 das externe Zurücksetzen 301 bestätigen und zurücksetzen.
  • 4 ist ein Blockdiagramm von Interrupt-Leitungen zwischen einer Kopier-Engine und einem sicheren Prozessor und einem GPU-Systemprozessor, gemäß zumindest einigen Ausführungsbeispielen. In mindestens einem Ausführungsbeispiel umfasst die Kopier-Engine 120 eine erste sichere Interrupt-Leitung 402, die mit SEC2 326 (markiert mit ce2sec_secure_intr) verbunden ist, und eine zweite sichere Interrupt-Leitung 404, die mit GSP 328 (markiert mit ce2gsp_secure_intr) verbunden ist. Jedes der Interrupt-Statusbits kann so konfiguriert werden, dass es entweder für SEC2 326 oder GSP 328 über ein Steuersignal 406 (INTR TARGET) gilt. In mindestens einem Ausführungsbeispiel teilen sich alle LCEs die Interrupt-Leitungen 402, 404. Die Interrupt-Leitung wird aktiviert (z.B. auf „high“), wenn eines der Interrupt-Statusbits, die mit einer der LCEs assoziiert sind, gesetzt ist. Software im SEC 326 oder GSP 328 kann die Interrupt-Statusregister lesen, um herauszufinden, welche LCE den Fehler hatte. Wie hierin beschrieben, können SEC2 326 und GSP 328 über eine sichere private Schnittstelle 408 zwischen dem SECHUB 324 und der Kopier-Engine 120 auf die Kopier-Engine 120 zugreifen. Die sichere private Schnittstelle 408 ist zwischen dem SECHUB 324 und der Kopier-Engine 120 geschaltet und kann nicht über den PCI-Konfigurationsbereich (BAR0) zugegriffen werden. Die Interrupt-Statusregister sind durch eine Privilege Level Mask (PLM) geschützt, die es nur SEC2 326 und GSP 328 erlaubt, die Interrupt-Statusbits zu löschen. PLM hat einen Bereich von numerischen Werten, wobei eine höhere Zahl eine höhere Berechtigung bedeutet. Mikrocodes, die auf SEC2 326 bzw. GSP 328 laufen (z.B. Mikrocontroller), können ebenfalls eine Sicherheitsstufe haben. Wenn ein Register PLM-geschützt ist, kann es von einem Mikrocode zugegriffen werden, dessen Privilegstufe dem PLM-Wert dieses Registers entspricht oder ihn übersteigt. Es kann eine zweite Prüfung namens source _id geben, die einen zweiten Filter anwendet. Der zweite Filter kann verwendet werden, um den Zugriff nur auf eine Teilmenge von Mikrocodes zu erlauben, die den PLM-Kriterien entsprechen. Wenn eines der Interrupt-Statusbits aktiviert wird, bleibt die LCE, wie hier beschrieben, so lange hängen, bis der Interrupt gelöscht wird, selbst wenn ein Zurücksetz-Bit im PCI-Konfigurationsbereich programmiert ist. In mindestens einem Ausführungsbeispiel können die Interrupt-Leitungen zu SEC2 326 und GSP 328 für die Fehlermeldung verwendet werden. In mindestens einem Ausführungsbeispiel sind die Interrupt-Leitungen stalling, pegelbasiert und werden immer dann aktiviert, wenn das sichere Interrupt-Statusregister nicht Null ist (d.h. wenn eines der Statusregisterbits auf 1 gesetzt ist). Die in 4 gezeigte Delta-Änderung bezieht sich auf 406 und auf das PLM, das in 326 und 328 bereitgestellt wird. Die Verbindung zwischen SECHUB 324 und SEC2 326 bzw. GSP 328 wird als DIO-Pfad bezeichnet.
  • In mindestens einem Ausführungsbeispiel kann der SEC2 326 als Proxy auf der Beschleunigerschaltung 102 verwendet werden, um eine sichere Sitzung zwischen einer virtuellen Maschine (VM) (z.B., oder einer anderen Applikation 208) aufzubauen, in der der SEC2 326 das Schlüsselaustauschprotokoll durchfuhren kann, um einen Speicherverschlüsselungsschlüssel zu erhalten. Die Kopier-Engine 120 kann sich als Client mit dem SECHUB 324 verbinden und der SEC2 326 kann den Verschlüsselungsschlüssel über die SECHUB-Schnittstelle in einen Keyslot programmieren. In einem anderen Ausführungsbeispiel kann der GSP 328 ein zentraler Sicherheitsprozessor auf der Beschleunigerschaltung 102 sein, so dass der GSP 328 die Entität ist, die für den Aufbau sicherer Sitzungen verantwortlich ist.
  • In mindestens einem Ausführungsbeispiel umfasst die Kopier-Engine 120 zwei separate Interrupt-Leitungen zu SEC2 326 und GSP 328. Zur Interrupt-Steuerung gibt es zwei Interrupt-Statusregister (eines für SEC2 326 und eines für GSP 328), um jeden Fehlertyp zu protokollieren, ein Interrupt-Freigaberegister, um jeden Fehlertyp in einem der beiden Statusregister zu maskieren, ein Interrupt-Zielregister zur einmaligen Programmierung des GSP/SEC2-Ziels für jeden Fehlertyp und zwei Interrupt-Privilegstufen-Maskenregister (eines mit nur GSP- und eines mit nur SEC2-Zugriff zur Quellenisolierung). In diesem Beispiel führt SEC2 326 vertrauenswürdigen Mikrocode aus und GSP 328 führt Code aus, dessen Status für böswillige Akteure (indirekt) sichtbar sein kann. Der böswillige Akteur für vertrauliches Rechnen könnte ein Systemadministrator sein. Daher wird dem GSP 328 ein Fehler gemeldet, da der Angriff über eine physische Verbindung durch eine physische Sonde erfolgt sein könnte, was der Administrator aus Gründen der Sicherheit des Rechenzentrums möglicherweise wissen möchte. Wenn der Angreifer jedoch auch Zugriff auf den GSP 328 hat, könnte er den Interrupt an den GSP 328 unterdrücken. Das sichere Interrupting des SEC2 326 löst dieses Problem. Selbst wenn der GSP 328 den Fehler zuerst sieht, kann er nicht gelöscht werden. Dies ist ein Mechanismus, der garantiert, dass der Tenant (Dateneigentümer) über einen Angriff informiert wird. Der Tenant kann dann entscheiden, ob er die Arbeit abbricht, auf einen sichereren Server wechselt oder basierend auf Service Level Agreements (SLAs) den Systemadministrator befragt. Weiterhin kann der GSP 328 alle Interrupts auf einer GPU verarbeiten. Das Allokieren einer separaten LCE für jeden Benutzer ermöglicht es dem Entwurf, separate SEC2 SW-Prozesse zum Verarbeiten der Fehler zu haben, wodurch eine Fehlerisolierung bereitgestellt wird. So kann ein Benutzer versuchen, einen anderen Benutzer auf derselben GPU anzugreifen, ohne zu wissen, ob der Angriff erfolgreich war. Das Verstecken des Ergebnisses eines versuchten Angriffs vor dem Angreifer ist ebenfalls eine Form des Sicherheitsschutzes.
  • 5 ist ein Flussdiagramm eines Verschlüsselungsvorgangs 500, bei dem ein Fehler detektiert wird, gemäß zumindest einigen Ausführungsbeispielen. Die Verschlüsselungsoperation 500 ist eine vereinfachte AES-GCM-Operation, die einen Fehler anzeigt, der auftritt, bevor die vollständige Datenübertragung abgeschlossen ist. Bei AES-GCM werden die Blöcke unter Verwendung eines Blockzählers (32'1) fortlaufend nummeriert. Der Wert des Blockzählers wird mit einer ersten IV (96'IV) kombiniert (Block 502) und mit einer AES-Blockchiffre verschlüsselt, um ein erstes Ergebnis zu erhalten (Block 504). Insbesondere werden die erste IV und ein erster Wert des ersten Blockzählers mit einer ersten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um das erste Ergebnis zu erhalten. Der Blockzähler wird mit dem IV (96'IV) inkrementiert (32'2) (Block 506) und mit einer AES-Blockchiffre verschlüsselt, um ein zweites Ergebnis zu erhalten (Block 508). Insbesondere werden die erste IV und ein zweiter Wert des ersten Blockzählers mit einer zweiten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um ein zweites Ergebnis zu erhalten. Das zweite Ergebnis und der erste Klartext 510 werden kombiniert (z.B. XOR'd) (Block 512), um den ersten Chiffretext 514 zu erhalten. Der erste Chiffretext 514 wird in Block 516 mit einem Nullwert 515 kombiniert, um einen ersten Wert 518 für den ersten berechneten Hash-Schlüssel zu erhalten. Der erste Wert 518 ist eine partielle Authentifizierungsmarkierung für die erste Datenübertragung.
  • Der Blockzähler wird mit dem IV (96'IV) inkrementiert (32'3) (Block 522) und mit einer AES-Blockchiffre verschlüsselt, um ein drittes Ergebnis zu erhalten (Block 524). Insbesondere werden die erste IV und ein dritter Wert des ersten Blockzählers mit einer zweiten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um ein drittes Ergebnis zu erhalten. Das dritte Ergebnis und der zweite Klartext 526 werden kombiniert (z.B. XOR'd) (Block 528), um den zweiten Chiffretext 530 zu erhalten. Der zweite Chiffretext 530 wird mit dem ersten Wert 518 für den ersten berechneten Hash-Schlüssel, der im sicheren Speicher 560 gespeichert ist, kombiniert (Block 532), um einen zweiten Wert 534 für den ersten berechneten Hash-Schlüssel zu erhalten. Der zweite Wert 534 ist eine partielle Authentifizierungsmarkierung für die erste Datenübertragung.
  • Am Ende der Datenübertragung wird der Blockzähler mit dem IV (96'IV) inkrementiert (32'N) (Block 537) und mit einer AES-Blockchiffre verschlüsselt, um ein viertes Ergebnis zu erhalten (Block 538). Insbesondere werden der erste IV und ein n-ter Wert des ersten Blockzählers mit einer N-ten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um das vierte Ergebnis zu erhalten. Das vierte Ergebnis und der N-te Klartext 540 werden kombiniert (z.B. XOR'd) (Block 542), um den N-ten Chiffretext 544 zu erhalten. Der N-te Chiffretext 544 wird mit einem N-ten Wert für den ersten berechneten Hash-Schlüssel kombiniert (Block 546), der im sicheren Speicher 560 gespeichert ist, um einen N-ten Wert 548 für den ersten berechneten Hash-Schlüssel zu erhalten. Da dies der letzte Block der Datenübertragung ist, wird der N-te Wert 548 mit einer Länge des Chiffriertextes kombiniert, um ein fünftes Ergebnis 552 zu erhalten. Das fünfte Ergebnis 552 wird mit dem ersten Ergebnis aus Block 504 kombiniert, um eine erste Authentifizierungsmarkierung 554 zu erhalten.
  • Wie in 5 gezeigt, kann ein Fehler 501 während des Verschlüsselungsvorgangs 500 detektiert werden. Wenn ein Fehler detektiert wird, können das partielle Authentifizierungs-Tag, der Klartext, die IVs oder andere sensible Daten für einen Angreifer offengelegt werden, wenn ein Zurücksetzen erfolgt, bevor die Fehler behandelt werden können. Unter Verwendung der oben beschriebenen Ausführungsbeispiele kann das Zurücksetzen erst erfolgen, wenn ein sicherer Prozessor ein oder mehrere Interrupt-Statusbits, die mit dem Fehler assoziiert sind, löschen kann 501. Das heißt, der sichere Prozessor kann sicherstellen, dass der Klartext nicht offengelegt wird oder dass die IVs vor dem Zurücksetzen von einem Angreifer neu konfiguriert oder wiederverwendet werden können.
  • 6 ist ein Flussdiagramm eines Entschlüsselungsvorgangs 600, bei dem ein Fehler detektiert wird, gemäß mindestens einem Ausführungsbeispiel. Die Entschlüsselungsoperation 600 ist eine vereinfachte AES-GCM-Operation, die einen Kontext-Switch zeigt, bevor die vollständige Datenübertragung abgeschlossen ist. Bei AES-GCM werden die Blöcke unter Verwendung eines Blockzählers (32'1) fortlaufend nummeriert. Der Wert des Blockzählers wird mit einer ersten IV (96'IV) kombiniert (Block 602) und mit einer AES-Blockchiffre verschlüsselt, um ein erstes Ergebnis zu erhalten (Block 604). Insbesondere werden die erste IV und ein erster Wert des ersten Blockzählers mit einer ersten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um das erste Ergebnis zu erhalten. Der Blockzähler wird mit dem IV (96'IV) inkrementiert (32'2) (Block 606) und mit einer AES-Blockchiffre verschlüsselt, um ein zweites Ergebnis zu erhalten (Block 608). Insbesondere werden die erste IV und ein zweiter Wert des ersten Blockzählers mit einer zweiten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um ein zweites Ergebnis zu erhalten. Das zweite Ergebnis und der erste Chiffretext 610 werden kombiniert (z.B. XOR'd) (Block 612), um den ersten Klartext 614 zu erhalten. Der erste Chiffretext 610 und ein Nullwert-Block 615 werden in Block 616 kombiniert, um einen ersten Wert 618 für den ersten berechneten Hash-Schlüssel zu erhalten. Der erste Wert 618 ist eine partielle Authentifizierungsmarkierung für die erste Datenübertragung.
  • Der Blockzähler wird mit dem IV (96'IV) inkrementiert (32'3) (Block 622) und mit einer AES-Blockchiffre verschlüsselt, um ein drittes Ergebnis zu erhalten (Block 624). Insbesondere werden die erste IV und ein dritter Wert des ersten Blockzählers mit einer zweiten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um ein drittes Ergebnis zu erhalten. Das dritte Ergebnis und der zweite Chiffretext 626 werden kombiniert (z.B. XOR'd) (Block 628), um den zweiten Klartext 630 zu erhalten. Der zweite Chiffriertext 626 wird mit dem ersten Wert 618 für den ersten berechneten Hash-Schlüssel kombiniert (Block 632), der im sicheren Speicher 660 gespeichert ist, um einen zweiten Wert 634 für den ersten berechneten Hash-Schlüssel zu erhalten. Der zweite Wert 634 ist eine partielle Authentifizierungsmarkierung für die erste Datenübertragung.
  • Am Ende der Datenübertragung wird der Blockzähler mit dem IV (96'IV) inkrementiert (32'N) (Block 637) und mit einer AES-Blockchiffre verschlüsselt, um ein viertes Ergebnis zu erhalten (Block 638). Insbesondere werden der erste IV und ein n-ter Wert des ersten Blockzählers mit einer N-ten Blockchiffre unter Verwendung des ersten Chiffrierschlüssels verschlüsselt, um das vierte Ergebnis zu erhalten. Das vierte Ergebnis und der N-te Chiffriertext 640 werden kombiniert (z.B. XOR'd) (Block 642), um den N-ten Klartext 644 zu erhalten. Der N-te Klartext 644 wird mit einem N-ten Wert für den ersten berechneten Hash-Schlüssel kombiniert (Block 646), der im sicheren Speicher 660 gespeichert ist, um einen N-ten Wert 648 für den ersten berechneten Hash-Schlüssel zu erhalten. Da dies der letzte Block der Datenübertragung ist, wird der N-te Wert 648 mit einer Chiffriertextlänge kombiniert, um ein fünftes Ergebnis 652 zu erhalten. Das fünfte Ergebnis 652 wird mit dem ersten Ergebnis aus Block 604 kombiniert, um ein erstes Authentifizierungskennzeichen 654 zu erhalten. Dieses Authentifizierungskennzeichen kann mit einem erwarteten Authentifizierungskennzeichen verglichen werden. Bei einer Übereinstimmung ist der Vorgang erfolgreich. Wenn es keine Übereinstimmung gibt, wird ein Fehler detektiert, wie hier beschrieben.
  • Wie in 6 gezeigt, kann während des Entschlüsselungsvorgangs 600 ein Fehler 601 detektiert werden. Wenn ein Fehler detektiert wird, können das partielle Authentifizierungs-Tag, der Klartext, die IVs oder andere sensible Daten einem Angreifer preisgegeben werden, wenn ein Zurücksetzen erfolgt, bevor die Fehler behandelt werden können. Unter Verwendung der oben beschriebenen Ausführungsbeispiele kann das Zurücksetzen erst erfolgen, wenn ein sicherer Prozessor ein oder mehrere Interrupt-Statusbits, die mit dem Fehler assoziiert sind, löschen kann 501. Das heißt, der sichere Prozessor kann sicherstellen, dass der Klartext nicht offengelegt wird oder dass die IVs vor dem Zurücksetzen von einem Angreifer neu konfiguriert oder wiederverwendet werden können.
  • 7 ist ein Flussdiagramm eines Verfahrens 700 zur Verhinderung eines Zurücksetzens durch nicht vertrauenswürdige Software während einer kryptografischen Operation, bis ein oder mehrere Interrupt-Statusbits gelöscht sind, gemäß zumindest einigen Ausführungsbeispielen. Das Verfahren 700 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware, Software, Firmware oder eine beliebige Kombination davon umfasst. In mindestens einem Ausführungsbeispiel wird das Verfahren 700 von der Beschleunigerschaltung 102 der 1, 2 oder 3 durchgeführt. In mindestens einem Ausführungsbeispiel wird das Verfahren 700 von der Kopier-Engine 120 der 1, 2 oder 3 durchgeführt.
  • Unter Bezugnahme auf 7 beginnt das Verfahren 700 mit einer Verarbeitungslogik, die einen Fehler detektiert, der mit einer Verschlüsselungs- oder Entschlüsselungsoperation durch eine kryptographische Hardware-Engine einer DMA-Engine assoziiert ist (Block 702). Die Verarbeitungslogik setzt ein oder mehrere Interrupt-Statusbits in einem Register, auf das ein sicherer Prozessor der Beschleunigerschaltung zugreift (Block 704). Die Verarbeitungslogik meldet einen oder mehrere Interrupts, die mit dem Fehler assoziiert sind, an eine mit der Beschleunigerschaltung gekoppelte CPU (Block 706). Die Verarbeitungslogik empfängt ein Zurücksetzsignal von nicht vertrauenswürdiger Software, die von der CPU ausgeführt wird (Block 708). Die Verarbeitungslogik hält das Zurücksetzsignal, bis die ein oder mehreren Interrupt-Statusbits durch den sicheren Prozessor gelöscht werden (Block 710). Die Verarbeitungslogik setzt die DMA-Engine als Antwort auf die Löschung des einen oder der mehreren Interrupt-Statusbits durch den sicheren Prozessor zurück (Block 712), und das Verfahren 700 endet.
  • In einem weiteren Ausführungsbeispiel führt die Verarbeitungslogik eine oder mehrere Operationen durch, um einen mit der Verschlüsselungs- oder Entschlüsselungsoperation assoziierten Kontext zu schützen, und löscht das eine oder die mehreren Interrupt-Statusbits in dem Register als Antwort auf die eine oder die mehreren Operationen.
  • In einem weiteren Ausführungsbeispiel detektiert die Verarbeitungslogik einen zweiten Fehler, der mit einer zweiten Verschlüsselungs- oder Entschlüsselungsoperation durch die kryptografische Hardware-Engine assoziiert ist. Die Verarbeitungslogik setzt ein oder mehrere Interrupt-Statusbits in einem zweiten Register, auf das ein GSP zugreift. Die Verarbeitungslogik meldet einen oder mehrere Interrupts, die mit dem zweiten Fehler assoziiert sind, an die CPU. Die Verarbeitungslogik empfängt ein zweites Zurücksetzsignal von nicht vertrauenswürdiger Software, die von der CPU ausgeführt wird. Die Verarbeitungslogik hält das zweite Zurücksetzsignal, bis die ein oder mehreren Interrupt-Statusbits im zweiten Register vom GSP gelöscht werden. Die Verarbeitungslogik setzt die DMA-Engine als Antwort auf die Löschung des einen oder der mehreren Interrupt-Statusbits durch den GSP zurück.
  • 8 ist ein Blockdiagramm eines Rechnersystems 800 mit einem Beschleuniger, der eine Kopier-Engine umfasst, die Fairness unter mehreren Benutzern des Rechnersystems garantiert, gemäß mindestens einem Ausführungsbeispiel. Das Rechnersystem 800 wird als ein Hauptsystem betrachtet, in dem ein Hauptsystemprozessor, CPU 104, Aufgaben mit hoher Interrupt-Frequenz an einen begleitenden Mikrocontroller 804 delegiert, der mit der Beschleunigerschaltung 102 gekoppelt ist. Das Rechnersystem 800 ähnelt dem Rechnersystem 100, wie an den ähnlichen Bezugsnummern zu erkennen ist, außer dass das Rechnersystem 800 den begleitenden Mikrocontroller 804 umfasst. Das Rechnersystem 800 kann als ein größeres System betrachtet werden, das durch das Hinzufügen eines dedizierten Steuer-Coprozessors gekennzeichnet ist und SRAM mit hoher Bandbreite umfassen kann, um die Beschleunigerschaltung 102 zu unterstützen.
  • In einigen Fällen wird das größere Modell in 8 verwendet, wenn eine höhere Leistung und Vielseitigkeit erforderlich ist. Leistungsorientierte Systeme können Inferenzieren auf vielen verschiedenen Netzwerk-Topologien durchführen; daher erhalten sie ein hohes Maß an Flexibilität. Außerdem können diese Systeme viele Aufgaben gleichzeitig durchführen, anstatt die Inferenzoperationen zu serialisieren, so dass die Inferenzoperationen nicht zu viel Rechenleistung auf der CPU 104 verbrauchen würden. Die Beschleunigerschaltung 102 kann eine Speicherschnittstelle umfassen, die an einen dedizierten SRAM mit hoher Bandbreite gekoppelt ist, um diese Anforderungen zu erfüllen. Das SRAM kann von der Beschleunigerschaltung 102 als Cache verwendet werden. Der SRAM kann auch von anderen Hochleistungskomponenten des Rechnersystems im Zusammenhang mit Computervision verwendet werden, um den Datenverkehr mit dem Hauptspeicher 114 (z.B. DRAM) weiter zu reduzieren. Die Beschleunigerschaltung 102 ermöglicht die Schnittstelle mit dem Mikrocontroller 804 (oder einem speziellen Steuer-Coprozessor), um die Interrupt-Belastung der CPU 104 zu begrenzen. In mindestens einem Ausführungsbeispiel kann der Mikrocontroller 804 ein RISC-V-basierter PicoRV32-Prozessor, ein ARM Cortex-M- oder Cortex-R-Prozessor oder ein anderes Mikrocontroller-Design sein. Unter Verwendung eines speziellen Coprozessors (Mikrocontroller 804) kann der Host-Prozessor (CPU 104) einige Aufgaben übernehmen, die mit der Verwaltung der Beschleunigerschaltung 102 assoziiert sind. So kann der Mikrocontroller 804 oder die CPU 104, obwohl die Hardware-Scheduler-Schaltung für die Planung und die feinkörnige Programmierung der Beschleunigerschaltung 102 zuständig ist, auch einige grobkörnige Aufgaben der Beschleunigerschaltung 102, die Verwaltung des Speicherzugriffs (IOMMU), die Allokation von Eingabedaten und Arrays mit festem Gewicht auf der Beschleunigerschaltung 102 sowie die Synchronisation zwischen anderen Systemkomponenten und Aufgaben, die auf der Beschleunigerschaltung 102 laufen, übernehmen.
  • Die hier offenbarten Techniken können in jeden Prozessor eingebaut werden, der zum Verarbeiten eines neuronalen Netzwerks verwendet werden kann, wie zum Beispiel eine zentrale Verarbeitungseinheit (CPU), eine GPU, eine Deep-Learning-Beschleunigerschaltung (DLA), eine Intelligenzverarbeitungseinheit (IPU), eine neuronale Verarbeitungseinheit (NPU), eine Tensor-Verarbeitungseinheit (TPU), ein Prozessor für ein neuronales Netzwerk (NNP), eine Datenverarbeitungseinheit (DPU), eine Vision-Verarbeitungseinheit (VPU), ein applikationsspezifischer integrierter Schaltkreis (ASIC), ein feldprogrammierbares Gate Array (FPGA) und dergleichen. Ein solcher Prozessor kann in einem Personal Computer (z.B. einem Laptop), in einem Datenzentrum, in einem Internet der Dinge (IoT)-Gerät, einem Handheld-Gerät (z.B. einem Smartphone), einem Fahrzeug, einem Roboter, einem sprachgesteuerten Gerät oder einem anderen Gerät, das Inferenzierung, Training oder eine andere Verarbeitung eines neuronalen Netzwerks durchführt, eingebaut sein. Ein solcher Prozessor kann in einem virtualisierten System eingesetzt werden, so dass ein Betriebssystem, das in einer virtuellen Maschine auf dem System ausgeführt wird, den Prozessor nutzen kann.
  • Als Beispiel kann ein Prozessor, der die hier offenbarten Techniken enthält, zum Verarbeiten eines oder mehrerer neuronaler Netzwerke in einer Maschine eingesetzt werden, um physische Objekte in der realen Welt zu identifizieren, zu klassifizieren, zu manipulieren, zu handhaben, zu operieren, zu modifizieren oder zu navigieren. Zum Beispiel kann ein solcher Prozessor in einem autonomen Fahrzeug (z.B. einem Auto, Motorrad, Hubschrauber, einer Drohne, einem Flugzeug, einem Boot, einem U-Boot, einem Lieferroboter usw.) eingesetzt werden, um das Fahrzeug durch die reale Welt zu bewegen. Darüber hinaus kann ein solcher Prozessor in einem Roboter in einer Fabrik eingesetzt werden, um Komponenten auszuwählen und zu einer Baugruppe zusammenzusetzen.
  • Ein Prozessor mit den hier offenbarten Techniken kann zum Beispiel eingesetzt werden, um ein oder mehrere neuronale Netzwerke zu verarbeiten, um ein oder mehrere Merkmale in einem Bild zu identifizieren oder ein Bild zu verändern, zu generieren oder zu komprimieren. Ein solcher Prozessor kann z.B. eingesetzt werden, um ein Bild zu verbessern, das unter Verwendung von Raster-, Raytracing- (z.B. unter Verwendung von NVIDIA RTX) und/oder anderen Rendering-Techniken gerendert wurde. In einem anderen Beispiel kann ein solcher Prozessor eingesetzt werden, um die Menge an Bilddaten zu reduzieren, die über ein Netzwerk (z.B. das Internet, ein mobiles Telekommunikationsnetzwerk, ein WIFI-Netzwerk sowie jedes andere drahtgebundene oder drahtlose Netzwerksystem) von einem Rendering-Gerät zu einem Anzeigegerät übertragen werden. Solche Übertragungen können verwendet werden, um Bilddaten von einem Server oder einem Datenzentrum in der Cloud zu einem Benutzergerät (z.B. einem PC, einer Videospielkonsole, einem Smartphone, anderen mobilen Geräten usw.) zu streamen, um Dienste zu verbessern, die Bilder streamen, wie NVIDIA GeForce Now (GFN), Google Stadia und dergleichen.
  • Beispielsweise kann ein Prozessor, der die hier offenbarten Techniken einsetzt, zum Verarbeiten eines oder mehrerer neuronaler Netzwerke für andere Typen von Applikationen eingesetzt werden, die sich ein neuronales Netzwerk zunutze machen können. Solche Applikationen können zum Beispiel das Übersetzen von Sprachen, das Identifizieren und Negieren von Geräuschen in Audiosignalen, das Identifizieren von Anomalien oder Defekten bei der Produktion von Waren und Dienstleistungen, die Überwachung von Lebewesen und nicht lebenden Dingen, die medizinische Diagnose, das Treffen von Entscheidungen und Ähnliches umfassen.
  • Andere Variationen sind im Sinne der vorliegenden Offenbarung. Während die offenbarten Techniken für verschiedene Modifikationen und alternative Konstruktionen anfällig sind, werden bestimmte Ausführungsbeispiele in den Zeichnungen gezeigt und oben im Detail beschrieben. Es sollte jedoch verstanden werden, dass es nicht die Absicht ist, die Offenbarung auf eine bestimmte Form oder bestimmte Formen zu beschränken, die offenbart sind, sondern im Gegenteil, die Absicht ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und den Umfang der Offenbarung fallen, wie in den beigefügten Ansprüchen definiert.
  • Die Verwendung der Begriffe „ein/eine“ und „der/die/das“ und ähnlicher Bezeichnungen im Zusammenhang mit der Beschreibung offenbarer Ausführungsbeispiele (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl die Einzahl als auch die Mehrzahl umfasst, sofern hierin nicht anders angegeben oder durch den Kontext eindeutig widerlegt, und nicht als Definition eines Begriffs. Die Begriffe „umfassend“, „mit“, „einschließlich“ und „enthaltend“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (im Sinne von „einschließlich, aber nicht beschränkt auf“). Der Begriff „verbunden“ ist, wenn er unverändert bleibt und sich auf physikalische Verbindungen bezieht, als teilweise oder ganz in ihm enthalten, an ihm angebracht oder mit ihm verbunden zu verstehen, auch wenn etwas dazwischen liegt. Die Erwähnung von Wertebereichen soll lediglich als kurzes Verfahren dienen, um sich individuell auf jeden einzelnen Wert zu beziehen, der in den Bereich fällt, sofern hier nicht anders angegeben. Jeder einzelne Wert wird in die Beschreibung aufgenommen, als ob er hier individuell aufgeführt wäre. In mindestens einem Ausführungsbeispiel ist die Verwendung des Begriffs „Satz“ (z.B. „ein Satz von Gegenständen“) oder „Teilsatz“, sofern nicht anders vermerkt oder durch den Kontext widerlegt, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente umfasst. Weiter ist der Begriff „Teilmenge“ eines entsprechenden Satzes, sofern nicht anders vermerkt oder durch den Kontext widerlegt, nicht notwendigerweise als eine echte Teilmenge des entsprechenden Satzes zu verstehen, sondern Teilmenge und entsprechender Satz können gleich sein.
  • Konjunktivische Ausdrücke, wie z. B. Sätze der Form „mindestens eines von A, B und C“ oder „mindestens eines von A, B und C“, werden, sofern nicht ausdrücklich angegeben oder anderweitig eindeutig durch den Kontext widersprochen, so verstanden, wie sie im Allgemeinen verwendet werden, um zu präsentieren, dass ein Element, ein Begriff usw., entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes von A und B und C sein kann. Zum Beispiel zeigen in einem anschaulichen Beispiel eines Satzes mit drei Mitgliedern die konjunktiven Ausdrücke „mindestens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen der folgenden Sätze {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Derartige konjunktivische Formulierungen sind also nicht generell so zu verstehen, dass bei bestimmten Ausführungsbeispielen mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden sein muss. Sofern nicht anders vermerkt oder durch den Kontext widerlegt, deutet der Begriff „Vielzahl“ auf einen Zustand der Mehrzahl hin (z.B. „eine Vielzahl von Gegenständen“ bedeutet mehrere Gegenstände). In mindestens einem Ausführungsbeispiel beträgt die Anzahl der Gegenstände in einer Vielzahl mindestens zwei, kann aber auch mehr sein, wenn dies ausdrücklich oder durch den Kontext angegeben wird. Ferner bedeutet der Ausdruck „basierend auf” sofern nicht anders angegeben oder aus dem Kontext ersichtlich, „mindestens teilweise basierend auf” und nicht „ausschließlich basierend auf“.
  • Die Operationen der hierin beschriebenen Verfahren können in jeder geeigneten Reihenfolge durchgeführt werden, sofern hierin nicht anders angegeben oder aus dem Kontext eindeutig widersprochen wird. In mindestens einem Ausführungsbeispiel wird ein Prozess wie die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) unter der Kontrolle eines oder mehrerer Rechnersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind und als Code (z.B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Applikationen) implementiert sind, die gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. In mindestens einem Ausführungsbeispiel ist der Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausgeführt werden können. In mindestens einem Ausführungsbeispiel handelt es sich bei einem computerlesbaren Speichermedium um ein nicht-transitorisches computerlesbares Speichermedium, das transitorische Signale (z.B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, jedoch nicht-transitorische Datenspeicherschaltungen (z.B. Puffer, Cache und Warteschlangen) innerhalb von Transceivern für transitorische Signale umfasst. In mindestens einer Ausführungsform ist Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen, computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen (oder ein anderer Speicher zum Speichern ausführbarer Anweisungen) gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren eines Rechnersystems ausgeführt werden (d.h. als Ergebnis der Ausführung), ein Rechnersystem veranlassen, die hierin beschriebenen Operationen durchzuführen. In mindestens einem Ausführungsbeispiel umfasst ein Satz nicht-transitorischer, computerlesbarer Speichermedien mehrere nicht-transitorische, computerlesbare Speichermedien, und auf einem oder mehreren individuellen nichttransitorischen Speichermedien mehrerer nicht-transitorischer, computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nicht-transitorische, computerlesbare Speichermedien gemeinsam den gesamten Code speichern. In mindestens einem Ausführungsbeispiel werden ausführbare Anweisungen so ausgeführt, dass verschiedene Anweisungen von verschiedenen Prozessoren ausgeführt werden - beispielsweise speichert ein nicht transitorisches computerlesbares Speichermedium Anweisungen und eine zentrale Verarbeitungseinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) und/oder eine Datenverarbeitungseinheit („DPU“) - möglicherweise in Verbindung mit einer GPU) - andere Anweisungen ausführt. In mindestens einem Ausführungsbeispiel verfügen verschiedene Komponenten eines Rechnersystems über separate Prozessoren, und verschiedene Prozessoren führen verschiedene Teilmengen von Anweisungen aus.
  • Dementsprechend sind in mindestens einem Ausführungsbeispiel Rechnersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Verarbeitungen von hierin beschriebenen Prozessen durchführen, und solche Rechnersysteme sind mit entsprechender Hardware und/oder Software konfiguriert, die die Durchführung von Verarbeitungen ermöglichen. Ferner ist ein Rechnersystem, das zumindest ein Ausführungsbeispiel der vorliegenden Offenbarung implementiert, ein einzelnes Gerät und in einer weiteren Ausführungsform ein verteiltes Rechnersystem, das mehrere Geräte umfasst, die unterschiedlich arbeiten, so dass das verteilte Rechnersystem die hierin beschriebenen Operationen durchführt und dass ein einzelnes Gerät nicht alle Operationen durchführt.
  • Die Verwendung von Ausführungsbeispielen oder beispielhaften Ausdrücken (z.B. „wie“), die hier bereitgestellt werden, dient lediglich der besseren Veranschaulichung von Ausführungsbeispielen der Offenbarung und stellt keine Einschränkung des Umfangs der Offenbarung dar, sofern nicht anders angegeben. Keine Formulierung in der Beschreibung sollte als Indikation für ein nicht beanspruchtes Element als wesentlich für die Durchführung der Offenbarung verstanden werden.
  • Alle hierin zitierten Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, werden hiermit durch Bezugnahme in demselben Umfang einbezogen, als ob jede Referenz individuell und spezifisch als durch Bezugnahme einbezogen angegeben und in ihrer Gesamtheit hierin erfasst wäre.
  • In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es sollte verstanden werden, dass diese Begriffe nicht als Synonyme füreinander zu verstehen sind. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch miteinander kooperieren oder interagieren.
  • Sofern nicht ausdrücklich etwas anderes angegeben ist, bezieht sich der Begriff „Verarbeitung“, „Berechnen“, „Berechnen“, „Bestimmen“ oder ähnliches in der gesamten Spezifikation auf Aktionen und/oder Prozesse eines Computers oder Rechnersystems oder eines ähnlichen elektronischen Rechengeräts, das Daten, die als physikalische, z. B. elektronische, Anzahlen in den Registern und/oder Speichern des Rechnersystems repräsentiert werden, manipuliert und/oder in andere Daten umwandelt, die in ähnlicher Weise als physikalische Anzahlen in den Speichern, Registern oder anderen Geräten des Rechnersystems zur Speicherung, Übertragung oder Anzeige von Informationen repräsentiert werden.
  • In ähnlicher Weise kann sich der Begriff „Prozessor“ auf ein Gerät oder einen Teil eines Geräts beziehen, das elektronische Daten aus Registern und/oder Speichern verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speichern gespeichert werden können. Als nicht einschränkende Beispiele kann ein „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hier verwendet, kann der Begriff „Software“-Prozesse beispielsweise Software- und/oder Hardware-Entitäten umfassen, die im Laufe der Zeit Arbeiten durchführen, wie Aufgaben, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einem Ausführungsbeispiel werden die Begriffe „System“ und „Verfahren“ hier austauschbar verwendet, insofern als ein System ein oder mehrere Verfahren umfassen kann und Verfahren als System betrachtet werden können.
  • In der vorliegenden Druckschrift kann auf das Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Rechnersystem oder eine computer-implementierte Maschine Bezug genommen werden. In mindestens einem Ausführungsbeispiel kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger und digitaler Daten auf vielfältige Weise erfolgen, beispielsweise durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Applikations-Programmierschnittstelle. In mindestens einem Ausführungsbeispiel können Prozesse zum Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle durchgeführt werden. In mindestens einem Ausführungsbeispiel können Prozesse zum Erhalten, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten durch die Übertragung von Daten über ein Netzwerk von der bereitstellenden Entität zur erfassenden Entität durchgeführt werden. In mindestens einem Ausführungsbeispiel kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen können Prozesse des Bereitstellens, Ausgebens, Übertragens, Sendens oder Präsentierens analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Programmierschnittstelle einer Applikation oder eines Interprozess-Kommunikationsmechanismus durchgeführt werden.
  • Obwohl die hierin enthaltenen Beschreibungen Ausführungsbeispiele der beschriebenen Techniken darstellen, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen in den Anwendungsbereich dieser Offenbarung fallen. Weiterhin können, obwohl oben zu Beschreibungszwecken spezifische Distributionen von Verantwortlichkeiten definiert sind, verschiedene Funktionen und Verantwortlichkeiten je nach den Umständen auf unterschiedliche Weise verteilt und aufgeteilt werden.
  • Weiterhin gilt, dass der Gegenstand, der in den beigefügten Ansprüchen beansprucht wird, nicht notwendigerweise auf bestimmte beschriebene Merkmale oder Handlungen beschränkt ist, auch wenn er in einer Sprache beschrieben wurde, die sich auf strukturelle Merkmale und/oder methodische Handlungen bezieht. Vielmehr sind die spezifischen Merkmale und Handlungen als beispielhafte Formen der Implementierung der Ansprüche offenbart.

Claims (20)

  1. Beschleunigerschaltung, umfassend: eine Direct-Memory-Access-Engine, DMA, die mit einer zentralen Verarbeitungseinheit, CPU, gekoppelt ist, wobei die DMA-Engine eine kryptographische Hardware-Engine umfasst; und einen sicheren Prozessor, der mit der DMA-Engine über eine private Schnittstelle und mit der CPU über eine verschlüsselte Schnittstelle gekoppelt ist, wobei die DMA Engine ausgebildet ist, zum: Detektieren eines Fehlers, der mit einer Verschlüsselungs- oder Entschlüsselungsoperation durch die kryptografische Hardware-Engine assoziiert ist; Setzen eines oder mehrerer Interrupt-Statusbits in einem ersten Register, auf das der sicheren Prozessor zugreifen kann; Melden eines oder mehrerer Interrupts, die mit dem Fehler assoziiert sind, an die CPU und den sicheren Prozessor; Empfangen eines Zurücksetzsignals nicht vertrauenswürdiger Software, die von der CPU ausgeführt wird; Halten des Zurücksetzsignals, bis das eine oder die mehreren Interrupt-Statusbits durch den sicheren Prozessor gelöscht sind; und Initiieren eines Zurücksetzens als Antwort auf das Löschen des einen oder der mehreren Interrupt-Statusbits durch den sicheren Prozessor.
  2. Beschleunigerschaltung nach Anspruch 1, weiter umfassend eine mit der DMA-Engine und der CPU gekoppelte Interrupt-Steuerung, wobei die Interrupt-Steuerung dazu dient, den einen oder die mehreren Interrupts von der DMA-Engine zu empfangen und den einen oder die mehreren Interrupts an die CPU zu senden.
  3. Beschleunigerschaltung nach Anspruch 1 oder 2, wobei der sichere Prozessor ausgebildet ist, zum: Durchführen einer oder mehrerer Operationen, um einen mit der Verschlüsselungs- oder Entschlüsselungsoperation assoziierten Kontext zu schützen; und Löschen des einen oder der mehreren Interrupt-Statusbits in dem ersten Register als Antwort auf die eine oder die mehreren Operationen.
  4. Beschleunigerschaltung nach Anspruch 3, wobei der sichere Prozessor weiter ausgebildet ist zum Ausführen vertrauenswürdiger Software, wobei die vertrauenswürdige Software den einen oder mehrere Interrupts an die nicht vertrauenswürdige Software sendet.
  5. Beschleunigerschaltung nach einem der vorhergehenden Ansprüche, wobei die kryptographische Hardware-Engine eine Advanced Encryption Standard Galois Counter Mode (AES-GCM) Hardware-Engine ist.
  6. Beschleunigerschaltung nach einem der vorangehenden Ansprüche, wobei die DMA-Engine Folgendes umfasst: das erste Register, auf das der sichere Prozessor zugreifen kann, wobei die CPU auf das erste Register nicht zugreifen kann; und ein zweites Register, auf das die CPU zugreifen kann, wobei das zweite Register ein Memory-Mapped-Input-Output (MMIO) ist.
  7. Beschleunigerschaltung nach einem der vorhergehenden Ansprüche, wobei die Beschleunigerschaltung eine Grafikverarbeitungseinheit (GPU), eine Deep-Learning-Beschleunigerschaltung (DLA), eine Intelligenzverarbeitungseinheit (IPU), eine neuronale Verarbeitungseinheit (NPU), eine Tensorverarbeitungseinheit (TPU), ein Prozessor für ein neuronales Netzwerk (NNP), eine Datenverarbeitungseinheit (DPU), eine Vision-Verarbeitungseinheit (VPU), eine applikationsspezifische integrierte Schaltung (ASIC) oder ein Field-Programmable Gate Array (FPGA) ist.
  8. Beschleunigerschaltung nach einem der vorhergehenden Ansprüche, wobei die Beschleunigerschaltung eine Grafikverarbeitungseinheit (GPU) ist, wobei die DMA-Engine ein zweites Register umfasst, auf das die CPU zugreifen kann, wobei die nicht vertrauenswürdige Software ein erster Ressourcenverwalter ist, wobei die DMA-Engine das Zurücksetzsignal durch den ersten Ressourcenverwalter empfängt, der ein Bit in dem zweiten Register setzt, wobei ein zweiter Ressourcenverwalter, der von dem sicheren Prozessor ausgeführt wird, die ein oder mehreren Interrupt-Statusbits in dem ersten Register löscht.
  9. Beschleunigerschaltung nach einem der vorhergehenden Ansprüche, wobei die Beschleunigerschaltung ein Steuerregister in einem Peripheral-Component-Interconnect-(PCI)-Konfigurationsraum umfasst, auf den die CPU zugreifen kann, wobei das erste Register für die CPU nicht zugänglich ist.
  10. Beschleunigerschaltung nach einem der vorhergehenden Ansprüche, wobei die DMA-Engine Folgendes umfasst: eine erste Interrupt-Leitung, die aktiviert wird, wenn ein Interrupt-Statusbit im ersten Register gesetzt wird; eine erste Logical-Compute-Engine (LCE); eine erste Physical-Compute-Engine (PCE), die mit der ersten LCE gekoppelt ist und die kryptographische Hardware-Engine umfasst; eine zweite PCE, die mit der ersten LCE gekoppelt ist und eine zweite kryptografische Hardware-Engine umfasst; und eine zweite LCE, wobei ein zweiter Ressourcenverwalter, der von dem sicheren Prozessor ausgeführt wird, das erste Register liest, um zu bestimmen, welche der ersten LCE oder der zweiten LCE den Fehler aufweist.
  11. Beschleunigerschaltung nach einem der vorhergehenden Ansprüche, wobei die Beschleunigerschaltung eine Grafikverarbeitungseinheit (GPU) ist, wobei die GPU die DMA-Engine, den sicheren Prozessor und einen GPU-Systemprozessor (GSP) umfasst, wobei der GSP über die private Schnittstelle mit der DMA-Engine gekoppelt ist, wobei die DMA-Engine weiter ausgebildet ist, zum: Detektieren eines zweiten Fehlers, der mit einer zweiten Verschlüsselungs- oder Entschlüsselungsoperation durch die kryptographische Hardware-Engine assoziiert ist; Setzen eines oder mehrerer Interrupt-Statusbits in einem zweiten Register, auf das der GSP zugreifen kann; Melden eines oder mehrerer Interrupts, die mit dem zweiten Fehler assoziiert sind, an die CPU; Empfangen eines zweiten Zurücksetzsignals von nicht vertrauenswürdiger Software, die von der CPU ausgeführt wird; Halten des zweiten Zurücksetzsignals, bis das eine oder die mehreren Interrupt-Statusbits im zweiten Register durch den GSP gelöscht sind; und Initiieren eines Zurücksetzens als Antwort auf das Löschen des einen oder der mehreren Interrupt-Statusbits durch den GSP.
  12. Beschleunigerschaltung nach Anspruch 11, die weiter umfassend einen sicheren Hub umfasst, der mit der DMA-Engine, dem sicheren Prozessor und dem GSP gekoppelt ist.
  13. Verfahren umfassend: Detektieren, durch eine Beschleunigerschaltung, eines Fehlers, der mit einer Verschlüsselungs- oder Entschlüsselungsoperation durch eine kryptographische Hardware-Engine einer Direct-Memory-Access (DMA)-Engine der Beschleunigerschaltung assoziiert ist; Setzen eines oder mehrerer Interrupt-Statusbits in einem Register, auf das ein sicherer Prozessor der Beschleunigerschaltung zugreifen kann; Melden eines oder mehrerer Interrupts, die mit dem Fehler assoziiert sind, an eine zentrale Verarbeitungseinheit (CPU), die mit der Beschleunigerschaltung gekoppelt ist; Empfangen eines Zurücksetzsignals von nicht vertrauenswürdiger Software, die von der CPU ausgeführt wird; Halten des Zurücksetzsignals, bis die ein oder mehreren Interrupt-Statusbits durch den sicheren Prozessor gelöscht sind; und Initiieren eines Zurücksetzens als Antwort auf das Löschen des einen oder der mehreren Interrupt-Statusbits durch den sicheren Prozessor.
  14. Verfahren nach Anspruch 13, weiter umfassend: Durchführen einer oder mehrerer Operationen, um einen mit der Verschlüsselungs- oder Entschlüsselungsoperation assoziierten Kontext zu schützen; und Löschen des einen oder der mehreren Interrupt-Statusbits in dem Register als Antwort auf die eine oder die mehreren Operationen.
  15. Verfahren nach Anspruch 13 oder 14, weiter umfassend: Detektieren eines zweiten Fehlers, der mit einer zweiten Verschlüsselungs- oder Entschlüsselungsoperation durch die kryptographische Hardware-Engine assoziiert ist; Setzen eines oder mehrerer Interrupt-Statusbits in einem zweiten Register, auf das ein GPU-Systemprozessor (GSP) zugreifen kann; Melden eines oder mehrerer Interrupts, die mit dem zweiten Fehler assoziiert sind, an die CPU; Empfangen eines zweiten Zurücksetzsignals von nicht vertrauenswürdiger Software, die von der CPU ausgeführt wird; Halten des zweiten Zurücksetzsignals, bis das eine oder die mehreren Interrupt-Statusbits in dem zweiten Register durch den GSP gelöscht sind; und Initiieren eines Zurücksetzens als Antwort auf das Löschen des einen oder der mehreren Interrupt-Statusbits durch den GSP.
  16. System, umfassend: eine zentrale Verarbeitungseinheit (CPU); und eine Grafikverarbeitungseinheit (GPU), die mit der CPU gekoppelt ist, wobei die GPU Folgendes umfasst: eine Direct-Memory-Access (DMA)-Schaltung, die eine Advanced Encryption Standard Galois Counter Mode (AES-GCM) Hardware-Engine umfasst; und einen Prozessor, der mit der DMA-Schaltung über eine private Schnittstelle und mit der CPU über eine verschlüsselte Schnittstelle gekoppelt ist, wobei die DMA-Schaltung ausgebildet ist, zum: Detektieren eines Fehlers, der mit einer Verschlüsselungs- oder Entschlüsselungsoperation durch die AES-GCM Hardware-Engine assoziiert ist; Setzen eines oder mehrerer Interrupt-Statusbits in einem ersten Register, auf das der Prozessor zugreifen kann; Melden eines oder mehrerer Interrupts, die mit dem Fehler assoziiert sind, an die CPU; Empfangen eines Zurücksetzsignals von nicht vertrauenswürdiger Software, die von der CPU ausgeführt wird; Halten des Zurücksetzsignals, bis das eine oder die mehreren Interrupt-Statusbits durch den Prozessor gelöscht sind; und Initiieren eines Zurücksetzens als Antwort auf die Löschung des einen oder der mehreren Interrupt-Statusbits durch den Prozessor.
  17. System nach Anspruch 16, wobei der Prozessor mindestens eins ist von einem sicheren Prozessor oder einem GPU-Systemprozessor.
  18. System nach Anspruch 16 oder 17, wobei der Prozessor ausgebildet ist, zum: Durchführen einer oder mehrerer Operationen, um einen mit der Verschlüsselungs- oder Entschlüsselungsoperation assoziierten Kontext zu schützen; und Löschen des einen oder der mehreren Interrupt-Statusbits im ersten Register als Antwort auf die eine oder die mehreren Operationen.
  19. System nach einem der Ansprüche 16 bis 18, wobei die DMA-Schaltung Folgendes umfasst: das erste Register, auf das der Prozessor zugreifen kann, wobei das erste Register für die CPU nicht zugänglich ist; und ein zweites Register, auf das die CPU zugreifen kann, wobei das zweite Register eine Memory-Mapped-Input-Output (MMIO) ist, wobei die nicht vertrauenswürdige Software ein erster Ressourcenverwalter ist, um das Zurücksetzsignal durch Setzen eines Bits in dem zweiten Register, das programmiert wird, zu senden, wobei ein zweiter Ressourcenverwalter, der von dem sicheren Prozessor ausgeführt wird, das eine oder mehrere Interrupt-Statusbits löscht.
  20. System nach einem der Ansprüche 16 bis 19, wobei die DMA-Schaltung ein zweites Register umfasst, auf das die CPU zugreifen kann, wobei die nicht vertrauenswürdige Software ein erster Ressourcenverwalter ist, wobei der erste Ressourcenverwalter das Zurücksetzsignal durch Setzen eines Bits in dem zweiten Register, das programmiert wird, sendet, und wobei ein zweiter Ressourcenverwalter, der von dem Prozessor ausgeführt wird, das eine oder die mehreren Interrupt-Statusbits löscht.
DE102023103971.7A 2022-02-22 2023-02-17 Schutz vor zurücksetzen durch nicht vertrauenswürdige software während kryptographischer operationen Pending DE102023103971A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/652,088 2022-02-22
US17/652,088 US12001592B2 (en) 2022-02-22 2022-02-22 Protecting against resets by untrusted software during cryptographic operations

Publications (1)

Publication Number Publication Date
DE102023103971A1 true DE102023103971A1 (de) 2023-08-24

Family

ID=87518846

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023103971.7A Pending DE102023103971A1 (de) 2022-02-22 2023-02-17 Schutz vor zurücksetzen durch nicht vertrauenswürdige software während kryptographischer operationen

Country Status (3)

Country Link
US (1) US12001592B2 (de)
CN (1) CN116680666A (de)
DE (1) DE102023103971A1 (de)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708273B1 (en) * 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6385727B1 (en) * 1998-09-25 2002-05-07 Hughes Electronics Corporation Apparatus for providing a secure processing environment
US9037895B2 (en) * 2010-10-13 2015-05-19 The Trustees Of Columbia University In The City Of New York System and methods for silencing hardware backdoors
US10838722B2 (en) * 2018-12-20 2020-11-17 Intel Corporation Restartable cache write-back and invalidation
US11347875B2 (en) * 2020-01-28 2022-05-31 Intel Corporation Cryptographic separation of memory on device with use in DMA protection
US20210117246A1 (en) * 2020-09-25 2021-04-22 Intel Corporation Disaggregated computing for distributed confidential computing environment

Also Published As

Publication number Publication date
US12001592B2 (en) 2024-06-04
CN116680666A (zh) 2023-09-01
US20230267235A1 (en) 2023-08-24

Similar Documents

Publication Publication Date Title
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102021207514A1 (de) Disaggregiertes berechnen für distribuierte vertrauliche rechenumgebung
DE69907776T2 (de) Verfahren und Vorrichtung zur Identifizierung gefährdeter Bauteile in einem System mit redundanten Bauteilen
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE69923802T2 (de) Konfiguration eines Satzes von Bänden mit einer einzigen Betriebsansicht
DE112011101321B4 (de) Abfragen von Leistungsdaten auf einem parallelenComputersystem, das Rechenknoten aufweist
DE102018129692A1 (de) Tiefgehendes Lernen anhand von Ausführungsverlaufsdaten zur Erkennung von Exploits
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102010044531B4 (de) Autonome Speicherarchitektur
DE112021002965T5 (de) Generierung von szenengraphen für unmarkierte daten
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112018002947T5 (de) Computersystem-software/firmware und prozessoreinheit mit einem sicherheitsmodul
DE102023100874A1 (de) Effiziente Synchronisationsbarrieren für mehrere Vorrichtungen durch Multicasting
DE102022121371A1 (de) Verhindern des unautorisierten übertragenen zugriffs durch adressensignierung
DE102020201347A1 (de) Technologien zum abgleichen von sicherheitsanforderungen von funktion-als-dienst in edge-clouds
DE102021123338A1 (de) Vorausschauende steuerung unter verwendung eines oder mehrerer neuralen netze
DE112017001757T5 (de) Verfahren und vorrichtung zum koordinieren und authentifizieren von anfragen nach daten
DE112022001272T5 (de) Mit post-quanten-kryptografie gesicherte ausführungsumgebungen für edge-einheiten
DE102023107060A1 (de) Vertrauliches computing unter verwendung von multi-instanziieren von parallelprozessoren
DE102023103971A1 (de) Schutz vor zurücksetzen durch nicht vertrauenswürdige software während kryptographischer operationen
DE102023105568A1 (de) Programmatisch gesteuertes daten-multicasting über mehrere rechen-engines

Legal Events

Date Code Title Description
R012 Request for examination validly filed