DE102018125786A1 - Encrypted system memory management - Google Patents

Encrypted system memory management Download PDF

Info

Publication number
DE102018125786A1
DE102018125786A1 DE102018125786.4A DE102018125786A DE102018125786A1 DE 102018125786 A1 DE102018125786 A1 DE 102018125786A1 DE 102018125786 A DE102018125786 A DE 102018125786A DE 102018125786 A1 DE102018125786 A1 DE 102018125786A1
Authority
DE
Germany
Prior art keywords
mac
system memory
data
block
memory
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
DE102018125786.4A
Other languages
German (de)
Inventor
Karanvir Grewal
Ioannis Schoinas
David Durham
Siddhartha Chhabra
Rajat Agarwal
Sergej Deutsch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/816,901 external-priority patent/US10594491B2/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018125786A1 publication Critical patent/DE102018125786A1/en
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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Bei einem Beispiel umfasst ein System zum Verwalten eines verschlüsselten Speichers einen Prozessor zum Speichern eines ersten MAC basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher. Der Prozessor kann auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, einen zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen Daten berechnen, bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt, und den zweiten MAC mit einem Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den aus dem Systemspeicher abgerufenen Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann der Prozessor die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln und die entschlüsselten Daten an einen Cache übertragen, wodurch Speicherfehler korrigiert werden.

Figure DE102018125786A1_0000
In one example, an encrypted memory management system includes a processor for storing a first MAC based on data stored in system memory in response to a write to system memory. The processor may also detect a read corresponding to the data stored in the system memory, calculate a second MAC based on the data retrieved from the system memory, determine that the second MAC does not match the first MAC, and the second MAC with a correction operation recalculating, wherein the correction process includes an XOR operation based on the data retrieved from the system memory and a replacement value for a system memory device. Further, the processor may decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC and transmit the decrypted data to a cache, thereby correcting memory errors.
Figure DE102018125786A1_0000

Description

Querverweis auf verwandte AnmeldungenCross-reference to related applications

Die vorliegende Anmeldung ist eine Teilfortsetzung der US-Patentanmeldung mit der Serien-Nr. 14/998,054, mit dem Titel „Memory Integrity with Error Detection and Correction“, eingereicht am 24. Dezember 2015, deren Inhalte durch Bezugnahme aufgenommen sind, als wenn sie hier vollständig dargelegt wären.The present application is a continuation-in-part of US patent application Ser. No. 14 / 998,054 entitled "Memory Integrity with Error Detection and Correction" filed on December 24, 2015, the contents of which are incorporated by reference as if fully set forth herein.

Technisches GebietTechnical area

Diese Offenbarung betrifft allgemein Verwalten von Daten, die in einem Speicher gespeichert sind, und insbesondere, aber nicht ausschließlich, Verwalten verschlüsselter Daten, die in einem Speicher gespeichert sind.This disclosure generally relates to managing data stored in a memory, and more particularly, but not exclusively, managing encrypted data stored in memory.

Hintergrundbackground

Rechenvorrichtungen können Daten auf eine hierarchische Weise speichern, wobei Daten zwischen einer größeren Speicherungsvorrichtung und kleineren Cache-Speichervorrichtungen übertragen werden. Bei manchen Beispielen können die Daten in einem verschlüsselten Format in Speicherungsvorrichtungen und nichtverschlüsselt in kleineren On-Chip-Cache-Vorrichtungen gespeichert werden. Bei manchen Beispielen können Fehlerkorrekturcode(ECC: Error Correction Code)-Speichertechniken verwendet werden, um Fehler in den Daten zu detektieren, die in Speichervorrichtungen gespeichert sind. Die ECC-Speichertechniken sind möglicherweise deterministisch und reversibel, aber nicht kryptografisch.Computers can store data in a hierarchical manner, transferring data between a larger storage device and smaller cache memory devices. In some examples, the data may be stored in an encrypted format in storage devices and non-encrypted in smaller on-chip cache devices. In some examples, Error Correction Code (ECC) memory techniques may be used to detect errors in the data stored in memory devices. The ECC storage techniques may be deterministic and reversible, but not cryptographic.

Figurenlistelist of figures

Die folgende ausführliche Beschreibung kann besser unter Bezugnahme auf die begleitenden Zeichnungen verstanden werden, die spezielle Beispiele für zahlreiche Merkmale des offenbarten Gegenstands enthalten.

  • 1 veranschaulicht ein Blockdiagramm einer Rechenvorrichtung, die verschlüsselte Daten verwalten kann;
  • 2 veranschaulicht ein Blockdiagramm eines Dual-In-Line-Speichermoduls;
  • 3 veranschaulicht ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten;
  • 4 veranschaulicht ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten;
  • 5A und 5B veranschaulichen Beispiele für Datenstrukturen zum Speichern verschlüsselter Daten;
  • 6 ist ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten basierend auf einem Entropieniveau der Daten;
  • 7 ist eine Beispiel-Pipeline zum Verwalten verschlüsselter Daten;
  • 8 ist ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten;
  • 9 ist ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten basierend auf einem Korrekturwert als ein zweiter MAC-Wert;
  • 10A und 10B sind Beispiele für Techniken zum Verwalten verschlüsselter Daten mit einem Blockkorrekturwert als ein zweiter MAC; und
  • 11 ist ein Beispiel für ein greifbares nichtflüchtiges computerlesbares Medium zum Verwalten verschlüsselter Daten.
The following detailed description may be better understood with reference to the accompanying drawings, which include specific examples of numerous features of the disclosed subject matter.
  • 1 Figure 12 illustrates a block diagram of a computing device that can manage encrypted data;
  • 2 illustrates a block diagram of a dual-in-line memory module;
  • 3 illustrates a process flow diagram for managing encrypted data;
  • 4 illustrates a process flow diagram for managing encrypted data;
  • 5A and 5B illustrate examples of data structures for storing encrypted data;
  • 6 FIG. 10 is a process flow diagram for managing encrypted data based on an entropy level of the data; FIG.
  • 7 is an example pipeline for managing encrypted data;
  • 8th is a process flow diagram for managing encrypted data;
  • 9 FIG. 10 is a process flow diagram for managing encrypted data based on a correction value as a second MAC value; FIG.
  • 10A and 10B Examples of techniques for managing encrypted data having a block correction value as a second MAC; and
  • 11 is an example of a tangible non-transitory computer-readable medium for managing encrypted data.

In manchen Fällen werden die selben Zahlen durch die Offenbarung und die Figuren hinweg verwendet, um auf gleiche Komponenten und Merkmale zu verweisen. Zahlen in den 100-Reihen verweisen auf Merkmale, die ursprünglich in 1 gefunden wurden; Zahlen in den 200-Reihen verweisen auf Merkmale, die ursprünglich in 2 gefunden wurden; und so weiter.In some cases, the same numbers are used throughout the disclosure and the drawings to refer to like components and features. Numbers in the 100 series refer to features originally in 1 were found; Numbers in the 200 series refer to features originally in 2 were found; and so on.

Beschreibung der Ausführungsformen Description of the embodiments

Fehlerkorrekturcode(ECC: Error Correcting Code)-Speicher kann das Verwenden zusätzlicher integrierter Schaltkreise oder Vorrichtungen oder Chips eines physischen Speichers beinhalten, um fehlerhafte Daten zu korrigieren, was die Systemkosten erhöhen kann. Außerdem sind ECC-Speichertechniken möglicherweise nicht kryptografisch. Hier beschriebene Techniken stellen kryptografisch sichere ECC-Verfahren bereit, während Fehlerkorrekturfähigkeiten beibehalten werden, um einen Speicher mit hoher Leistungsfähigkeit bereitzustellen, der zufällige Bitfehler, speicherbasierte Integrierter-Schaltkreis-Fehler und schädliche Gegner abschwächen kann. Ein speicherbasierter integrierter Schaltkreis, hier auch als eine Vorrichtung bezeichnet, kann einen beliebigen geeigneten Hardware- oder Logikchip zum Speichern einer vorbestimmten Anzahl an Bits in einer Speicherungsvorrichtung beinhalten. Die hier beschriebenen Techniken sind kryptografisch sicher und führen die Aufgabe von sowohl der Fehlerkorrektur als auch dem Bereitstellen einer Speicherintegrität, einschließlich Unterstützung für mehrere Verschlüsselungsschlüssel/MKTME (Multi-Key Total Memory Encryption), Wiederholungsvorbeugung und kryptografisch starker Datenbeschädigungsdetektion selbst durch einen physischen Gegner, durch. Außerdem erfordern die hier beschriebenen Techniken möglicherweise nicht die Verwendung von zusätzlichem ECC-Speicher und reduzieren dementsprechend Speicherkosten.Error Correcting Code (ECC) memory may include using additional integrated circuits or physical memory chips or chips to correct erroneous data, which may increase system cost. In addition, ECC storage techniques may not be cryptographic. Techniques described herein provide cryptographically secure ECC techniques while maintaining error correction capabilities to provide high performance memory that can mitigate random bit errors, memory-based integrated circuit errors, and harmful adversaries. A memory-based integrated circuit, also referred to herein as a device, may include any suitable hardware or logic chip for storing a predetermined number of bits in a memory device. The techniques described herein are cryptographically secure and perform the task of both error correction and memory integrity, including Multi-Key Total Memory Encryption (MKTME) support, repetition prevention, and cryptographically strong data corruption detection even by a physical adversary , In addition, the techniques described herein may not require the use of additional ECC memory and accordingly reduce memory costs.

Die hier beschriebenen Techniken beinhalten das Nutzen eines kryptografisch starken Nachrichtenauthentifizierungscodes (MAC: Message Authentication Code) oder HMAC (Hash Message Authentication Code), um ECC-Detektionsmechanismen mit einem statistischen Trial-and-Error-Ansatz zu ersetzen. Bei manchen Beispielen werden Vorrichtungskorrekturcodes entrollt, um eine Vorrichtung eines Speichers nach der anderen gegenüber dem sicheren Hash zu testen, was die Speichervorrichtung identifizieren kann, die Fehler enthält und deren Bits umgeklappt sind (bis zu einer vollständig fehlerhaften Vorrichtung). Entrollen, wie hier bezeichnet, kann Durchführen eines XOR-Vorgangs oder eines beliebigen anderen geeigneten Logikvorgangs an Daten, die in integrierten Schaltkreisen in einer Speichervorrichtung gespeichert sind, beinhalten. Bei manchen Beispielen kann Heuristik, wenn sie mit einer totalen Speicherverschlüsselung (Total Memory Encryption: TME/Multi-Key-TME) kombiniert wird, dabei helfen, potentiell fehlerhafte Klartextblöcke unter der Annahme zu identifizieren, dass ihre Entropie gegeben ist, weil Fehler, die den im Speicher gespeicherten Geheimcodetext verändern, bei Entschlüsselung zu zufälligen Klartexten führen. Alternativ dazu kann eine Kompression verwendet werden, um Detektionscodes (z. B. Reed-Solomon) innerhalb Daten-Cache-Lines zu verschlüsseln, um fehlerhafte Speicherstellen zu identifizieren/lokalisieren und die Kosten/Menge von physischem Speicher zu reduzieren, der zum Speichern dieser Codes benötigt wird.The techniques described herein involve the use of a cryptographically strong message authentication code (MAC) or hash message authentication code (HMAC) to replace ECC detection mechanisms with a statistical trial-and-error approach. In some examples, device correction codes are unrolled to test one device of memory at a time versus the secure hash, which can identify the memory device that contains errors and whose bits are flipped (up to a completely failed device). Unrolling, as referred to herein, may include performing an XOR operation or any other suitable logic operation on data stored in integrated circuits in a memory device. In some examples, heuristics, when combined with Total Memory Encryption (TME), can help identify potentially faulty plaintext blocks assuming their entropy is given, because errors that Change the secret code text stored in the memory, lead to random plain texts when decrypted. Alternatively, compression may be used to encrypt detection codes (eg, Reed-Solomon) within data cache lines, to identify / locate bad memory locations, and to reduce the cost / amount of physical memory used to store them Codes is needed.

Bei manchen Ausführungsformen kann eine Rechenvorrichtung einen ersten Nachrichtenauthentifizierungscode (MAC) basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichern. Ein MAC, wie hier bezeichnet, kann einen beliebigen geeigneten Nachrichtenauthentifizierungscode beinhalten, der eine kryptografische Hash-Funktion und einen geheimen kryptografischen Schlüssel involviert. Bei manchen Ausführungsformen kann die Rechenvorrichtung auch einen Lesevorgang, der den in dem Systemspeicher gespeicherten Daten entspricht, detektieren und einen zweiten MAC basierend auf den in dem Systemspeicher gespeicherten Daten berechnen. Die Rechenvorrichtung kann auch bestimmen, dass der zweite MAC nicht mit dem ersten gespeicherten MAC übereinstimmt und den zweiten MAC anschließend an einen Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den in dem Systemspeicher gespeicherten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann die Rechenvorrichtung die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln und die entschlüsselten Daten an einen Cache übertragen.In some embodiments, a computing device may store a first message authentication code (MAC) based on system data stored in system memory in response to a write to system memory. A MAC, as referred to herein, may include any suitable message authentication code involving a cryptographic hash function and a secret cryptographic key. In some embodiments, the computing device may also detect a read corresponding to the data stored in the system memory and calculate a second MAC based on the data stored in the system memory. The computing device may also determine that the second MAC does not match the first stored MAC and then recalculate the second MAC to a correction process, the correction process performing an XOR operation based on the data stored in the system memory and a system memory device replacement value includes. Further, the computing device may decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC and transmit the decrypted data to a cache.

Bei manchen Ausführungsformen kann eine Rechenvorrichtung auch einen verschlüsselten ersten Blockkorrekturwert basierend auf in einem Systemspeicher zu speichernden Klartextdaten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichern. Außerdem kann die Rechenvorrichtung einen Lesevorgang, der den in dem Systemspeicher gespeicherten Daten entspricht, detektieren und einen zweiten Blockkorrekturwert basierend auf den in dem Systemspeicher gespeicherten Daten berechnen, wobei der zweite Blockkorrekturwert basierend auf einem XOR-Vorgang berechnet wird, der den Klartext der in dem Systemspeicher gespeicherten verschlüsselten Daten umfasst. Bei manchen Ausführungsformen kann die Rechenvorrichtung bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten Blockkorrekturwert übereinstimmt, und den zweiten Blockkorrekturwert anschließend an einen Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf in dem Systemspeicher entschlüsselten Daten und einem Ersatzwert für Daten des Systemspeichers einer Vorrichtung umfasst. Des Weiteren kann die Rechenvorrichtung die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite Blockkorrekturwert mit dem ersten Blockkorrekturwert übereinstimmt, entschlüsseln und die entschlüsselten Daten an einen Cache übertragen.In some embodiments, a computing device may also store an encrypted first block correction value based on plaintext data to be stored in system memory in response to a write to system memory. In addition, the computing device may detect a read corresponding to the data stored in the system memory and calculate a second block correction value based on the data stored in the system memory, wherein the second block correction value is calculated based on an XOR operation that is the plaintext of the System memory includes stored encrypted data. In some embodiments, the computing device may determine that the second block correction value does not match a decrypted first block correction value and then recalculate the second block correction value to a correction operation, the correction process performing an XOR operation based on data decrypted in the system memory and a replacement value for the data System memory comprises a device. Furthermore, the computing device may store the data stored in the system memory in response to the Detecting that the recalculated second block correction value matches the first block correction value, decrypts, and transmits the decrypted data to a cache.

Die hier beschriebenen Techniken können eine Rekonstruktion von in dem Speicher gespeicherten Daten verhindern, um einen korrekten ECC-Code bereitzustellen und einen Speicherschutz gegenüber zufälligen Fehlern und Ausfällen vorzusehen. Außerdem ermöglichen die hier beschriebenen Techniken es, Versuche zum Beschädigen eines Speichers durch Injizieren von Daten von einem Pächter zu einem anderen Pächter in einem schlüsselübergreifenden Domänenangriff oder durch Umklappen physischer Bits in einem Rowhammer-Angriff oder anderes physisches Manipulieren einer Speichervorrichtung zu detektieren. Weil die hier beschriebenen Techniken kryptografisch für einen Gegner nicht deterministisch sind, ist keine deterministische Manipulation der Speicherdaten durch einen Gegner möglich, wie etwa zur Detektion.The techniques described herein may prevent reconstruction of data stored in the memory to provide correct ECC code and provide memory protection against random errors and failures. In addition, the techniques described herein make it possible to detect attempts to corrupt a memory by injecting data from one tenant to another tenant in a cross-domain domain attack or by flipping physical bits in a rowhammer attack or other physical manipulation of a storage device. Because the techniques described herein are cryptographically nondeterministic to an adversary, no deterministic manipulation of the memory data by an adversary is possible, such as for detection.

Eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“ des offenbarten Gegenstands bedeutet, dass ein(e) bestimmte(s) Merkmal, Struktur oder Charakteristik, das/die in Verbindung mit der Ausführungsform beschrieben ist, in wenigstens einer Ausführungsform des offenbarten Gegenstands enthalten ist. Dementsprechend kann die Phrase „bei einer Ausführungsform“ an verschiedenen Stellen durch die Beschreibung hinweg erscheinen, aber die Phrase verweist möglicherweise nicht notwendigerweise auf die gleiche Ausführungsform.Reference in the specification to "one embodiment" of the disclosed subject matter means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosed subject matter , Accordingly, the phrase "in one embodiment" may appear at different locations throughout the description, but the phrase may not necessarily refer to the same embodiment.

1 ist ein Blockdiagramm eines Beispiels für eine Host-Rechenvorrichtung, die verschlüsselte Daten verwalten kann. Die Host-Rechenvorrichtung 100 kann zum Beispiel unter anderem ein Mobiltelefon, ein Laptop-Computer, ein Desktop-Computer oder ein Tablet-Computer sein. Die Host-Rechenvorrichtung 100 kann einen Prozessor 102, der dazu eingerichtet ist, gespeicherte Befehle auszuführen, sowie eine Speichervorrichtung 104, die Befehle speichert, die durch den Prozessor 102 ausführbar sind, beinhalten. Der Prozessor 102 kann ein Einzelkernprozessor, ein Mehrfachkernprozessor, ein Rechen-Cluster oder eine beliebige Anzahl anderer Konfigurationen sein. Die Speichervorrichtung 104 kann Direktzugriffsspeicher, Nurlesespeicher, Flash-Speicher oder beliebige andere geeignete Speichersysteme beinhalten. Die Befehle, die durch den Prozessor 102 ausgeführt werden, können verwendet werden, um ein Verfahren zu implementieren, das verschlüsselte Bilddaten übertragen kann. 1 Fig. 10 is a block diagram of an example of a host computing device that can manage encrypted data. The host computing device 100 may be, for example, a mobile phone, a laptop computer, a desktop computer or a tablet computer. The host computing device 100 can be a processor 102 which is adapted to execute stored instructions and a memory device 104 that stores commands by the processor 102 executable include. The processor 102 may be a single-core processor, a multi-core processor, a compute cluster, or any number of other configurations. The storage device 104 may include random access memory, read only memory, flash memory, or any other suitable memory system. The commands by the processor 102 can be used to implement a method that can transmit encrypted image data.

Der Prozessor 102 kann auch durch die Systemzwischenverbindung 106 (z. B. PCI®, PCI-Express®, NuBus usw.) mit einer Anzeigeschnittstelle 108 verknüpft sein, die dazu ausgelegt ist, die Host-Rechenvorrichtung 100 mit einer Anzeigevorrichtung 110 zu verbinden. Die Anzeigevorrichtung 110 kann einen Anzeigebildschirm beinhalten, der eine eingebaute Komponente der Host-Rechenvorrichtung 100 ist. Die Anzeigevorrichtung 110 kann auch unter anderem einen Computermonitor, Fernseher oder Projektor beinhalten, der extern mit der Host-Rechenvorrichtung 100 verbunden ist. Die Anzeigevorrichtung 110 kann unter anderem Leuchtdioden (LEDs) und Mikro-LEDs beinhalten.The processor 102 can also through the system interconnect 106 (eg PCI®, PCI-Express®, NuBus, etc.) with a display interface 108 linked, which is adapted to the host computing device 100 with a display device 110 connect to. The display device 110 may include a display screen that includes a built-in component of the host computing device 100 is. The display device 110 may also include, but is not limited to, a computer monitor, television, or projector connected externally to the host computing device 100 connected is. The display device 110 may include light emitting diodes (LEDs) and micro LEDs, among others.

Außerdem kann eine Netzwerkschnittstellensteuerung (hier auch als eine NIC (Network Interface Controller) bezeichnet) 112 dazu eingerichtet sein, die Host-Rechenvorrichtung 100 durch die Systemzwischenverbindung 106 mit einem Netzwerk (nicht dargestellt) zu verbinden. Das Netzwerk (nicht dargestellt) kann unter anderem ein zellulares Netzwerk, ein Funknetzwerk, ein Wide-Area-Network (WAN), ein Local-Area-Network (LAN) oder das Internet sein.In addition, a network interface controller (also referred to herein as a NIC (Network Interface Controller)) may be used. 112 be configured to the host computing device 100 through the system interconnect 106 to connect to a network (not shown). The network (not shown) may be, inter alia, a cellular network, a wireless network, a wide area network (WAN), a local area network (LAN), or the Internet.

Der Prozessor 102 kann durch eine Systemzwischenverbindung 106 mit einer Eingabe/Ausgabe(E/A)-Vorrichtung-Schnittstelle 114 verbunden sein, die dazu eingerichtet ist, die Rechen-Host-Vorrichtung 100 mit einer oder mehreren E/A-Vorrichtungen 116 zu verbinden. Die E/A-Vorrichtungen 116 können zum Beispiel eine Tastatur und eine Zeigevorrichtung beinhalten, wobei die Zeigevorrichtung unter anderem ein Berührungsfeld oder einen Berührungsbildschirm beinhalten kann. Die E/A-Vorrichtungen 116 können eingebaute Komponenten der Host-Rechenvorrichtung 100 sein oder können Vorrichtungen sein, die extern mit der Host-Rechenvorrichtung 100 verbunden sind.The processor 102 can through a system interconnect 106 with an input / output (I / O) device interface 114 which is adapted to the rake host device 100 with one or more I / O devices 116 connect to. The I / O devices 116 For example, they may include a keyboard and a pointing device, wherein the pointing device may include, but is not limited to, a touch pad or a touch screen. The I / O devices 116 can be built-in components of the host computing device 100 his or her devices may be external to the host computing device 100 are connected.

Bei manchen Ausführungsformen kann der Prozessor 102 auch durch die Systemzwischenverbindung 106 mit einer beliebigen Speicherungsvorrichtung 118 verknüpft sein, die eine Festplatte, ein optisches Laufwerk, ein USB-Flash-Laufwerk, ein Solid-State-Laufwerk oder einen anderen nichtflüchtigen Speicher, ein Array aus Laufwerken oder beliebige Kombinationen davon beinhalten kann. Bei manchen Ausführungsformen kann die Speicherungsvorrichtung 118 beliebige geeignete Anwendungen und gespeicherte Daten beinhalten.In some embodiments, the processor 102 also through the system interconnect 106 with any storage device 118 which may include a hard disk, an optical drive, a USB flash drive, a solid state drive or other nonvolatile memory, an array of drives, or any combination thereof. In some embodiments, the storage device 118 include any suitable applications and stored data.

Bei manchen Ausführungsformen kann der Prozessor 102 eine beliebige geeignete Anzahl an Logikmodulen beinhalten, die durch eine Speichersteuerung 119 ausführbar sind. Bei manchen Beispielen ist die Speichersteuerung 119 (oder eine Speicherverwaltungseinheit) eine Logik auf dem Prozessor 102, die mit der externen Systemspeichervorrichtung 104 interagiert. Die Speichersteuerung 119 kann mit dem externen Speicher 104 für Lese/Schreib-Vorgänge interagieren, um Daten zu übertragen oder zu empfangen, um die MACs, Fehlerkorrekturcodes, Verschlüsselung/Entschlüsselung und dergleichen zu berechnen/zu verwalten. Bei manchen Beispielen kann ein MAC-Verwalter 120 einen ersten Nachrichtenauthentifizierungscode (MAC) basierend auf in dem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichern. Ein MAC, wie hier bezeichnet, kann einen beliebigen geeigneten Nachrichtenauthentifizierungscode beinhalten, der eine kryptografische Hash-Funktion und einen geheimen kryptografischen Schlüssel involviert. Bei manchen Ausführungsformen kann der MAC-Verwalter 120 auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, und einen zweiten MAC basierend auf den in dem Systemspeicher gespeicherten Daten berechnen. Der MAC-Verwalter 120 kann auch bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt, und den zweiten MAC anschließend an einen Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den in dem Systemspeicher gespeicherten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann ein Entschlüsselungsverwalter 122 die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln. Bei manchen Ausführungsformen kann ein Datensender 124 die entschlüsselten Daten an einen Cache 126, der sich auf einem Prozessor 102 befindet, oder einen beliebigen anderen geeigneten Cache oder eine beliebige andere geeignete Speichervorrichtung übertragen. Bei manchen Beispielen befindet sich der Cache 126 (oder eine Cache-Hierarchie) zwischen dem Prozessor 102 und der Speichersteuerung 119. Bei manchen Ausführungsformen können sich der Prozessor 102, der Cache 126 und die Speichersteuerung 119 auf demselben physischen Chip/Die oder Gehäuse befinden.In some embodiments, the processor 102 include any suitable number of logic modules provided by a memory controller 119 are executable. In some examples, the memory controller 119 (or a memory management unit) logic on the processor 102 Using the external system storage device 104 interacts. The memory controller 119 can with the external memory 104 for read / write operations to transmit or receive data to compute / manage the MACs, error correction codes, encryption / decryption and the like. In some examples, a MAC administrator may 120 store a first message authentication code (MAC) in system memory based on data stored in the system memory in response to a write. A MAC, as referred to herein, may include any suitable message authentication code involving a cryptographic hash function and a secret cryptographic key. In some embodiments, the MAC manager 120 also detect a read corresponding to the data stored in the system memory and calculate a second MAC based on the data stored in the system memory. The MAC administrator 120 may also determine that the second MAC does not match the first MAC, and then recalculate the second MAC to a correction process, the correction process including an XOR operation based on the data stored in the system memory and a system memory device replacement value. Furthermore, a decryption manager 122 decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC. In some embodiments, a data transmitter 124 the decrypted data to a cache 126 that is on a processor 102 or any other suitable cache or storage device. For some examples, the cache is located 126 (or a cache hierarchy) between the processor 102 and the memory controller 119 , In some embodiments, the processor may be 102 , the cache 126 and the memory controller 119 on the same physical chip / die or enclosure.

Alternativ dazu kann der MAC-Verwalter 120 bei manchen Ausführungsformen einen verschlüsselten ersten Korrekturwert basierend auf in dem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichern. Außerdem kann der MAC-Verwalter 120 auch einen Lesevorgang, der den in dem Systemspeicher gespeicherten Daten entspricht, detektieren und einen zweiten Blockkorrekturwert basierend auf den in dem Systemspeicher gespeicherten Daten berechnen, wobei der zweite Blockkorrekturwert, der basierend auf einem XOR-Vorgang berechnet wird, in dem Systemspeicher gespeicherte Klartextdaten umfasst. Bei manchen Ausführungsformen kann der MAC-Verwalter 120 bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten Blockkorrekturwert übereinstimmt, und den zweiten Blockkorrekturwert mit einem Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf in dem Systemspeicher gespeicherten entschlüsselten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann der Entschlüsselungsverwalter 122 die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite Blockkorrekturwert mit dem ersten Blockkorrekturwert übereinstimmt, entschlüsseln und kann der Datensender 124 die entschlüsselten Daten an den Cache übertragen.Alternatively, the MAC administrator 120 in some embodiments, storing an encrypted first correction value based on information stored in the system memory in the system memory in response to a write. In addition, the MAC administrator 120 also detect a read corresponding to the data stored in the system memory and calculate a second block correction value based on the data stored in the system memory, wherein the second block correction value calculated based on an XOR operation comprises plaintext data stored in the system memory. In some embodiments, the MAC manager 120 determining that the second block correction value does not match a decrypted first block correction value and recalculating the second block correction value with a correction process, the correction process comprising an XOR operation based on decrypted data stored in the system memory and a system memory device replacement value. Furthermore, the decryption manager 122 the data stored in the system memory is decrypted and the data transmitter is capable of decoding in response to detecting that the recalculated second block correction value matches the first block correction value 124 transfer the decrypted data to the cache.

Es versteht sich, dass das Blockdiagramm aus 1 nicht angeben soll, dass die Host-Rechenvorrichtung 100 alle der in 1 gezeigten Komponenten beinhalten soll. Stattdessen kann die Host-Rechenvorrichtung 100 weniger oder zusätzliche Komponenten, die in 1 nicht veranschaulicht sind (z. B. zusätzliche Speicherkomponenten, eingebettete Steuerungen, zusätzliche Module, zusätzliche Netzwerkschnittstellen usw.), beinhalten. Des Weiteren können beliebige der Funktionalitäten des MAC-Verwalters 120, des Entschlüsselungsverwalters 122 und des Datensenders 124 teilweise oder vollständig in Hardware und/oder in dem Prozessor 102 implementiert sein. Zum Beispiel kann die Funktionalität unter anderem mit einem anwendungsspezifischen integrierten Schaltkreis, einer in einer eingebetteten Steuerung implementierten Logik oder in einer in dem Prozessor 102 implementierten Logik implementiert sein. Bei manchen Ausführungsformen können die Funktionalitäten des MAC-Verwalters 120, des Entschlüsselungsverwalters 122 und des Datensenders 124 mit einer Logik implementiert sein, wobei die Logik, wie hier bezeichnet, eine beliebige geeignete Hardware (z. B. unter anderem einen Prozessor), Software (z. B. unter anderem eine Anwendung), Firmware oder eine beliebige geeignete Kombination von Hardware, Software und Firmware beinhalten kann.It is understood that the block diagram 1 should not specify that the host computing device 100 all in 1 should contain components shown. Instead, the host computing device 100 less or additional components in 1 not illustrated (eg, additional memory components, embedded controllers, additional modules, additional network interfaces, etc.). Furthermore, any of the functionalities of the MAC administrator 120 , the decryption manager 122 and the data sender 124 partially or completely in hardware and / or in the processor 102 be implemented. For example, the functionality may include, but is not limited to, an application specific integrated circuit, logic implemented in an embedded controller, or one in the processor 102 implemented logic implemented. In some embodiments, the functionalities of the MAC manager 120 , the decryption manager 122 and the data sender 124 implemented with logic, the logic as referred to herein including any suitable hardware (eg, but not limited to, a processor), software (e.g., an application among others), firmware, or any suitable combination of hardware, Software and firmware may include.

2 veranschaulicht ein Blockdiagramm eines Dual-In-Line-Speichermoduls (DIMM). In 2 kann das DIMM 200 unter anderem ein SIMM, SO-DIMM, NVDIMM, VLPDIMM, DDR-DIMM, DDR2-DIMM, DDR3-DIMM, DDR4-DIMM oder DDR5-DIMM sein. Das DIMM 200 kann eine beliebige Anzahl an Vorrichtungen oder integrierten Schaltkreisen oder Chips beinhalten. Zum Beispiel sind acht Vorrichtungen zum Speichern von Daten in zwei Speichergruppen 202 und 204 des DIMM 200 dargestellt. Bei manchen Beispielen kann sich eine fehlerbezogene Vorrichtung 206 nahe den Speichergruppen 202 und 204 befinden und kann die fehlerbezogene Vorrichtung 206 einen MAC-Wert speichern. Bei manchen Beispielen kann der DIMM 200 auch zusätzliche Vorrichtungen auf einer Rückseite (nicht dargestellt) des DIMM 200 beinhalten. Die Rückseite des DIMM 200 kann auch Speichergruppen und eine fehlerbezogene Vorrichtung zum Speichern eines Vorrichtungskorrekturwerts beinhalten. Die fehlerbezogene Vorrichtung 206 und die fehlerbezogene Vorrichtung auf der Rückseite des DIMM 200 können zusätzlichen Speicher zum Speichern von Detektion- und Korrekturcodes bereitstellen. 2 illustrates a block diagram of a dual-in-line memory module (DIMM). In 2 can the DIMM 200 These include SIMM, SO-DIMM, NVDIMM, VLPDIMM, DDR-DIMM, DDR2-DIMM, DDR3-DIMM, DDR4-DIMM or DDR5-DIMM. The DIMM 200 may include any number of devices or integrated circuits or chips. For example, there are eight devices for storing data in two memory groups 202 and 204 of the DIMM 200 shown. In some examples, an error-related device may become 206 near the storage groups 202 and 204 can and can be the fault-related device 206 save a MAC value. In some examples, the DIMM may 200 also additional devices on a back side (not shown) of the DIMM 200 include. The back of the DIMM 200 may also include storage groups and an error related device for storing a device correction value. The fault-related device 206 and the fault-related device on the back of the DIMM 200 may provide additional memory for storing detection and correction codes.

Es versteht sich, dass das Blockdiagramm aus 2 nicht angeben soll, dass das DIMM 200 alle der in 2 gezeigten Komponenten beinhalten soll. Stattdessen kann das DIMM 200 weniger oder zusätzliche Komponenten, die in 2 nicht veranschaulicht sind (z. B. zusätzliche Speicherkomponenten, eingebettete Steuerungen, zusätzliche Sensoren, zusätzliche Schnittstellen usw.), beinhalten.It is understood that the block diagram 2 should not specify that the DIMM 200 all in 2 should contain components shown. Instead, the DIMM can 200 less or additional components in 2 not illustrated (eg, additional memory components, embedded controllers, additional sensors, additional interfaces, etc.).

3 veranschaulicht ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten. Das in 3 veranschaulichte Verfahren 300 kann mit einer beliebigen geeigneten Rechenkomponente oder -vorrichtung, wie etwa der Rechenvorrichtung 100 aus 1, implementiert werden. 3 illustrates a process flow diagram for managing encrypted data. This in 3 illustrated method 300 may be with any suitable computing component or device, such as the computing device 100 out 1 to be implemented.

Bei Block 302 kann ein MAC-Verwalter 120 einen ersten MAC basierend auf Daten, die in dem Systemspeicher gespeichert sind, als Reaktion auf einen Schreibvorgang in den Systemspeicher berechnen und speichern. Zum Beispiel kann der MAC-Verwalter 120 einen Schreibvorgang in den Systemspeicher detektieren und unter anderem eine beliebige geeignete kryptografische MAC-Funktion mit einem zweiten Schlüssel verwenden, um einen MAC-Wert basierend auf den in dem Speicher gespeicherten Daten zu erzeugen. Bei manchen Ausführungsformen können die in dem Speicher gespeicherten Daten einen beliebigen geeigneten Geheimcodetext beinhalten, der mit einer beliebigen geeigneten Verschlüsselungstechnik verschlüsselt ist. Das Ergebnis des Logikvorgangs über Blöcke der Vorrichtungsdaten kann als ein Vorrichtungsdatenblockkorrekturwert gespeichert werden.At block 302 can be a MAC administrator 120 compute and store a first MAC based on data stored in system memory in response to a write to system memory. For example, the MAC administrator 120 detect a write to the system memory and, among other things, use any suitable cryptographic MAC function with a second key to generate a MAC based on the data stored in the memory. In some embodiments, the data stored in the memory may include any suitable secret code text encrypted using any suitable encryption technique. The result of the logic operation over blocks of the device data may be stored as a device data block correction value.

Bei Block 304 kann der MAC-Verwalter 120 einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht. Zum Beispiel kann der MAC-Verwalter 120 einen Versuch zum Ausführen eines Befehls basierend auf den in dem Systemspeicher gespeicherten verschlüsselten Daten detektieren.At block 304 can the MAC administrator 120 detect a read corresponding to the data stored in the system memory. For example, the MAC administrator 120 detect an attempt to execute a command based on the encrypted data stored in the system memory.

Bei Block 306 kann der MAC-Verwalter 120 einen zweiten MAC basierend auf den verschlüsselten Daten, die aus dem Systemspeicher abgerufen werden, berechnen. Der MAC-Verwalter 120 kann die gleiche MAC-Funktion, die bei dem Schreibvorgang verwendet wird, anwenden sowie den gleichen Schlüssel verwenden, um einen passenden MAC zu produzieren.At block 306 can the MAC administrator 120 calculate a second MAC based on the encrypted data retrieved from system memory. The MAC administrator 120 can use the same MAC function used in the write as well as use the same key to produce a matching MAC.

Bei Block 308 kann der MAC-Verwalter 120 bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt. Zum Beispiel kann der MAC-Verwalter 120 als Teil eines Schreibvorgangs detektieren, ob Bits von in dem Speicher gespeicherten Daten umgeklappt sind, seit die Daten in dem Speicher gespeichert wurden. Bei manchen Beispielen können die umgeklappten Bits in dem Speicher Daten repräsentieren, die durch einen schädlichen Versuch zum Manipulieren der in dem Speicher gespeicherten Daten beschädigt wurden.At block 308 can the MAC administrator 120 determine that the second MAC does not match the first MAC. For example, the MAC administrator 120 as part of a write operation, detect whether bits of data stored in the memory have flipped since the data was stored in the memory. In some examples, the flipped bits in the memory may represent data that has been corrupted by a malicious attempt to manipulate the data stored in the memory.

Bei Block 310 kann der MAC-Verwalter 120 den zweiten MAC mit einem Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den Vorrichtungsdatenblöcken, die aus dem Systemspeicher abgerufen werden, und einem Ersatzwert für einen ausgeschlossenen Vorrichtungsdatenblock des Systemspeichers umfasst. Bei einem Beispiel kann ein Ersatzwert (hier auch als ein entrollter Korrekturwert bezeichnet) fehlerhafte Daten reparieren, die in einer Vorrichtung eines Speichers gespeichert sind. Als ein vereinfachtes Beispiel kann eine hypothetische 16-Bit-Cache-Line aus vier integrierten 4-Bit-Schaltkreisen oder Vorrichtungsdatenblöcken und einem 4-Bit-MAC, wie etwa 1010 (Block1), 0100 (Block2), 1101 (Block3), 1011 (Block4) und 0010 (MAC) bestehen. Der MAC-Wert kann basierend auf einem codierten sicheren Hash-Vorgang aus Vorrichtungsdatenblöcken 1-4 berechnet werden. Der Korrekturwert kann eine Kombination der Vorrichtungen 1-4 basierend auf einem logischen XOR-Vorgang sein, was zu einem Wert von 1000 führt. Der MAC-Wert kann auch in dem XOR-Vorgang enthalten sein, der zu einem 1010-Vorrichtungsblockkorrekturwert (BC) führt. Bei manchen Beispielen kann der Korrekturwert verwendet werden, um beliebige der fehlenden Vorrichtungsdatenblöcke einschließlich der MAC-Vorrichtung mit XOR-Vorgängen unter der Annahme zu rekonstruieren, dass die anderen Vorrichtungen fehlerfrei sind. Zum Beispiel kann ein Substitutionsdatenblock für eine fehlerhafte Vorrichtung 1 basierend auf einem logischen XOR-Vorgang des Korrekturwertes, dem MAC-Wert und den Werten von Vorrichtungsdatenblöcken 2-4 berechnet werden. Zusätzlich kann der zweite MAC-Wert basierend auf einem codierten sicheren Hash-Vorgang berechnet werden, der den Ersatzkorrekturwert für die Vorrichtung 1 mit den Werten der Vorrichtungsdatenblöcke 2-4 und dem gespeicherten ersten MAC-Wert kombiniert. Dieser zweite berechnete MAC-Wert sollte mit dem ersten gespeicherten MAC-Wert übereinstimmen, falls die fehlerhaften Vorrichtungsdaten repariert wurden, indem sie mit dem Ersatzwert substituiert wurden. Der Ersatzwert sollte dann anstelle des fehlerhaften Vorrichtungsdatenblocks verwendet werden. Ansonsten wird der berechnete zweite MAC-Wert mit hoher Wahrscheinlichkeit nicht mit dem ersten gespeicherten MAC-Wert übereinstimmen.At block 310 can the MAC administrator 120 Recalculate the second MAC with a correction process, wherein the correction process includes an XOR operation based on the device data blocks retrieved from the system memory and a system memory excluded device data block substitute value. In one example, a substitute value (also referred to herein as an unrolled correction value) may repair erroneous data stored in a device of a memory. As a simplified example, a hypothetical 16-bit cache line may consist of four 4-bit integrated circuits or device data blocks and a 4-bit MAC such as 1010 (block1), 0100 (block2), 1101 (block3), 1011 (Block4) and 0010 (MAC). The MAC value may be based on a coded secure hash of device data blocks 1 - 4 be calculated. The correction value may be a combination of the devices 1 - 4 based on a logical XOR operation, resulting in a value of 1000. The MAC value may also be included in the XOR process resulting in a 1010 Device Block Correction Value (BC). In some examples, the correction value may be used to reconstruct any of the missing device data blocks, including the MAC device with XOR operations, assuming that the other devices are error free. For example, a substitution data block may be for a faulty device 1 based on a logical XOR operation of the correction value, the MAC value and the values of device data blocks 2 - 4 be calculated. In addition, the second MAC value may be calculated based on an encoded secure hash operation that represents the replacement correction value for the device 1 with the values of the device data blocks 2 - 4 and the stored first MAC value combined. This second calculated MAC value should match the first stored MAC value if the faulty device data has been repaired by using the Substitute value were substituted. The substitute value should then be used instead of the erroneous device data block. Otherwise, the calculated second MAC value will most likely not match the first stored MAC value.

Bei Block 312 kann der Entschlüsselungsverwalter 122 die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln. Bei Block 314 kann der Datensender 124 die entschlüsselten Daten an einen Cache übertragen.At block 312 can the decryption manager 122 decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC. At block 314 can the data transmitter 124 transmit the decrypted data to a cache.

Bei manchen Ausführungsformen soll das Prozessflussdiagramm aus 3 nicht angeben, dass die Vorgänge des Verfahrens 300 in irgendeiner bestimmten Reihenfolge auszuführen sind oder dass alle der Vorgänge des Verfahrens 300 in jedem Fall enthalten sein sollen. Außerdem kann das Verfahren 300 eine beliebige geeignete Anzahl an zusätzlichen Vorgängen beinhalten. Zum Beispiel können die Techniken hier zum Korrigieren eines Blocks oder eines integrierten Schaltkreises einer beliebigen geeigneten Größe angewandt werden. Bei manchen Beispielen kann es eine Abwägung zwischen Blockkorrekturwertgröße und der Anzahl an Korrekturversuchen geben, die zum Korrigieren eines fehlerhaften Datenblocks verwendet werden. Wie unten gezeigt, kann die Cache-Line als ein Satz von N Vorrichtungsdatenblöcken B[0], ... B[N-1] der Größe S repräsentiert werden. Bei manchen Ausführungsformen kann eine beliebige geeignete kryptografisch sichere Hash- Funktion als eine MAC-Funktion, beispielsweise unter anderem ein SHA-3-basierter MAC, verwendet werden. Bei manchen Beispielen akzeptiert eine MAC-Funktion einen beliebigen geeigneten geheimen Schlüssel und eine Anzahl an Datenblöcken als Eingabe, wie durch Gleichung 1 unten veranschaulicht ist: M A C = S H A 3 ( S c h l ü s s e l , B [ 0 ] [ N 1 ] )

Figure DE102018125786A1_0001
In some embodiments, the process flow diagram is intended to be 3 do not specify that the procedures of the procedure 300 are to be executed in any particular order or that all of the procedures of the procedure 300 in any case should be included. In addition, the process can 300 include any suitable number of additional operations. For example, the techniques may be applied here to correct a block or integrated circuit of any suitable size. In some examples, there may be a trade-off between block correction value size and the number of correction attempts used to correct a defective data block. As shown below, the cache line may be represented as a set of N device data blocks B [0], ... B [N-1] of size S. In some embodiments, any suitable cryptographically secure hash function may be used as a MAC function, including, but not limited to, a SHA-3 based MAC. In some examples, a MAC function accepts any suitable secret key and a number of data blocks as input, as illustrated by equation 1 below: M A C = S H A 3 ( S c H l ü s s e l . B [ 0 ] ... [ N - 1 ] )
Figure DE102018125786A1_0001

Bei manchen Ausführungsformen kann der Schlüssel basierend auf Metadaten oder Schlüsselkennungen ausgewählt werden, die Teil einer Speicheradresse sind. Bei manchen Beispielen können alternative MAC-Funktionen die Speicheradresse der Daten-Line in einem Speicher als Teil der gehashten Daten beinhalten. Außerdem kann die MAC-Funktion bei manchen Beispielen mit einer beliebigen geeigneten alternativen kryptografisch sicheren Hash-Funktion, wie etwa unter anderem SHA-1 oder SHA-2, berechnet werden.In some embodiments, the key may be selected based on metadata or key identifiers that are part of a memory address. In some examples, alternative MAC functions may include the memory address of the data line in memory as part of the hashed data. In addition, in some examples, the MAC function may be provided with any suitable alternative cryptographically secure hash function, such as, but not limited to, SHA. 1 or SHA- 2 , be calculated.

Bei manchen Beispielen kann der Vorrichtungsblockkorrekturwert (BC) als ein XOR-Vorgang berechnet werden: B C = M A C B [ 0 ] B [ N 1 ]

Figure DE102018125786A1_0002
In some examples, the device block correction value (BC) may be calculated as an XOR operation: B C = M A C B [ 0 ] ... B [ N - 1 ]
Figure DE102018125786A1_0002

Bei manchen Beispielen sind Daten, die von einem Speicherlesevorgang zurückgegeben werden, B'[0] .... B' [N-1], was gleich B[0]...B[N-1] sein kann, falls es keinen Fehler gab. Falls ein MAC nicht übereinstimmt, kann ein Reparaturwert (RV) mit einem XOR-Vorgang berechnet werden, bei dem einer der Vorrichtungsdatenblöcke B'[i] aus dem Satz von B'[0] bis B'[N-1] aus der Gleichung ausgelassen wird: R V = B C M A C B ' [ 0 ] B ' [ N 1 ]

Figure DE102018125786A1_0003
In some examples, data returned from a memory read is B '[0]... B' [N-1], which may be B [0]... B [N-1] if it is there was no mistake. If a MAC does not match, a repair value (RV) may be calculated with an XOR operation in which one of the device data blocks B '[i] from the set of B' [0] to B '[N-1] is extracted from the equation is omitted: R V = B C M A C B ' [ 0 ] ... B ' [ N - 1 ]
Figure DE102018125786A1_0003

Wie oben besprochen, kann ein Versuch zum Reparieren jeder Vorrichtung und Verifizieren des MAC in einem Korrekturvorgang für alle Vorrichtungsdaten Folgendes beinhalten: M A C ' = S H A 3 ( S c h l ü s s e l , B ' [ 0 ] ( B ' [ i ] S u b s t i t u t R V ) B ' [ N 1 ] )

Figure DE102018125786A1_0004
As discussed above, an attempt to repair each device and verify the MAC in a correction process for all device data may include: M A C ' = S H A 3 ( S c H l ü s s e l . B ' [ 0 ] ... ( B ' [ i ] S u b s t i t u t R V ) ... B ' [ N - 1 ] )
Figure DE102018125786A1_0004

Bei manchen Beispielen kann die MAC-Funktion mit einer beliebigen geeigneten alternativen kryptografisch sicheren Hash-Funktion, wie etwa unter anderem SHA-1 oder SHA-2, berechnet werden. Falls MAC' mit dem MAC übereinstimmt, dann kann der reparierte Wert anstelle des fehlerhaften Vorrichtungsdatenblocks zurückgegeben werden. Ansonsten kann ein Rückgabefehler bereitgestellt werden.In some examples, the MAC function may be implemented with any suitable alternative cryptographically secure hash function, such as, but not limited to, SHA. 1 or SHA- 2 , be calculated. If MAC 'matches the MAC, then the repaired value may be returned instead of the failed device data block. Otherwise, a return error may be provided.

Alternativ dazu kann der Reparaturwert RV für jede Vorrichtung ohne XOR-Vorgänge hinsichtlich des Datenblocks dieser Vorrichtung mit Datenblöcken der anderen Vorrichtung berechnet werden. Bei diesem Beispiel kann der RV einen Vorrichtungsdatenblock während eines Reparaturversuches ersetzen. Bei manchen Beispielen gilt S=32 und N=16. Jedoch können S und N beliebige geeignete Werte sein. Bei einem Beispiel kann, falls S=1 und N=512 gilt, jedes Bit umgeklappt sein und kann der MAC anschließend an jedes Bitumklappen verifiziert werden. Bei diesem Beispiel wird der BC möglicherweise nicht gespeichert.Alternatively, the repair value RV for each device without XOR operations may be calculated in terms of the data block of this device with data blocks of the other device. In this example, the RV may replace a device data block during a repair attempt. In some examples, S = 32 and N = 16. However, S and N may be any suitable values. For an example For example, if S = 1 and N = 512, each bit can be flipped and the MAC can then be verified for each bit flip. In this example, the BC may not be saved.

4 veranschaulicht ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten. Das in 4 veranschaulichte Verfahren 400 kann mit einer beliebigen geeigneten Rechenkomponente oder - vorrichtung, wie etwa der Rechenvorrichtung 100 aus 1, implementiert werden. 4 illustrates a process flow diagram for managing encrypted data. This in 4 illustrated method 400 can with any suitable computing component or device, such as the computing device 100 out 1 to be implemented.

Bei Block 402 kann ein MAC-Verwalter 120 einen MAC berechnen. Bei manchen Beispielen wird der MAC als Reaktion auf einen Lesevorgang, wie oben besprochen, berechnet. Der MAC-Verwalter 120 kann den MAC mit einem codierten sicheren Hash-Vorgang basierend auf verschlüsselten Daten, die in einer beliebigen geeigneten Anzahl an integrierten Schaltkreisen oder Vorrichtungen gespeichert sind, die eine Cache-Line von Daten umfassen, berechnen.At block 402 can be a MAC administrator 120 calculate a MAC. In some examples, the MAC is calculated in response to a read as discussed above. The MAC administrator 120 may compute the MAC with a coded secure hash based on encrypted data stored in any suitable number of integrated circuits or devices that comprise a cache line of data.

Bei Block 404 kann der MAC-Verwalter 120 bestimmen, ob der berechnete MAC mit einem gespeicherten MAC übereinstimmt. Falls der berechnete MAC mit einem gespeicherten MAC übereinstimmt, fährt der Prozessfluss bei Block 406 fort, wo ein Fehler korrigiert wird (oder niemals existierte), Daten entschlüsselt werden und an eine Cache-Vorrichtung gesendet werden. Falls der berechnete MAC nicht mit einem gespeicherten MAC übereinstimmt, fährt der Prozessfluss bei Block 408 fort, wo jeder der integrierten Schaltkreise oder jede der Speichervorrichtungen getestet wird.At block 404 can the MAC administrator 120 determine if the computed MAC matches a stored MAC. If the calculated MAC matches a stored MAC, the process flow continues at block 406 where an error is corrected (or never existed), data is decrypted and sent to a cache device. If the calculated MAC does not match a stored MAC, the process flow moves to block 408 where each of the integrated circuits or each of the memory devices is tested.

Falls jeder der integrierten Schaltkreise oder jede der Vorrichtungen, die eine Cache-Line von Daten umfassen, getestet werden, aber der erste und zweite MAC niemals übereinstimmen, dann fährt der Prozess zu Block 410 fort, wo ein nicht korrigierbarer Fehler gemeldet wird. Falls nicht jeder der integrierten Schaltkreise oder jede der Vorrichtungen, die eine Cache-Line von Daten umfassen, getestet wurde, fährt der Prozessfluss bei Block 412 fort. Bei Block 412 kann der MAC-Verwalter 120 einen nächsten integrierten Schaltkreis oder einen nächsten Vorrichtungsdatenblock bei einer XOR-Berechnung überspringen und einen entrollten oder XOR-ausgeführten Reparaturwert (RV) substituieren, um einen MAC-Wert zu berechnen. Der Prozessfluss kehrt zu Block 402 zurück.If each of the integrated circuits or each of the devices that comprise a cache line of data are tested, but the first and second MACs never match, then the process moves to block 410 where an uncorrectable error is reported. If not each of the integrated circuits or each of the devices that comprise a cache line of data has been tested, the process flow continues at block 412 continued. At block 412 can the MAC administrator 120 skip a next integrated circuit or device data block in an XOR calculation and substitute an unrolled or XOR repair value (RV) to calculate a MAC value. The process flow returns to block 402 back.

Bei manchen Beispielen können die Techniken hier mit einer MAC-Größe einer beliebigen geeigneten Länge verwendet werden. Zum Beispiel können zwei zusätzliche integrierte Schaltkreise oder Speichervorrichtungen verwendet werden, um zwei 32-Bit-Werte zu speichern, falls der MAC-Wert 64 Bit aufweist. Die zwei 32-Bit-MAC-Werte können mit einem logischen Oder-Vorgang kombiniert werden. Bei manchen Ausführungsformen können zwei MAC-Werte als Reaktion auf einen Lesevorgang berechnet werden und können die Ergebnisse der zwei MAC-Werte verkettet werden, um einen 64-Bit-MAC-Wert zu erzeugen.In some examples, the techniques may be used here with a MAC size of any suitable length. For example, two additional integrated circuits or memory devices may be used to store two 32-bit values if the MAC value 64 Bit has. The two 32-bit MAC values can be combined with a logical OR operation. In some embodiments, two MAC values may be calculated in response to a read, and the results of the two MAC values may be concatenated to produce a 64-bit MAC value.

Bei manchen Ausführungsformen können die Techniken hier einen Versuch pro integriertem Schaltkreis oder Vorrichtung eines Speicher-DIMM, der/die eine Cache-Line von Daten umfasst, verwenden, um Einzelbitfehler oder Mehrfachbitfehler innerhalb einer einzigen Vorrichtung oder eines einzigen integrierten Schaltkreises zu korrigieren. Bei manchen Beispielen können die Techniken auch mehrere Einzelbitfehler über mehrere Vorrichtungen oder mehrere integrierte Schaltkreise korrigieren. Falls es zum Beispiel jeweils einen Bitfehler in zwei separaten Vorrichtungen gibt, kann der vollständig entrollte oder XOR-ausgeführte Korrekturwert zeigen, dass zwei Bits umgeklappt sind. Bei manchen Ausführungsformen kann der MAC getestet werden, indem die verschiedenen Kombinationen von Bits in jedem Vorrichtungsdatenblock umgeklappt werden. Zum Beispiel können für 8 DDR5-Vorrichtungen zwei Bitpositionen pro Vorrichtungsdatenblock über n Vorrichtungen umgeklappt werden. Entsprechend können vierundsechzig MAC-Tests identifizieren, dass beide der Vorrichtungen individuelle Einzelbitfehler enthalten.In some embodiments, the techniques herein may use one attempt per integrated circuit or device of a memory DIMM that includes a cache line of data to correct for single bit errors or multiple bit errors within a single device or integrated circuit. In some examples, the techniques may also correct for multiple single bit errors across multiple devices or multiple integrated circuits. For example, if there is one bit error in each of two separate devices, the fully unrolled or XORed correction value may indicate that two bits have flipped. In some embodiments, the MAC may be tested by flipping the various combinations of bits in each device data block. For example, for 8 DDR5 devices, two bit positions per device data block can be flipped over n devices. Similarly, sixty-four MAC tests can identify that both of the devices contain individual single-bit errors.

Bei manchen Beispielen ist, falls ein vollständig entrollter oder XOR-ausgeführter Korrekturwert eine große Anzahl an umgeklappten Bits aufweist, der Fehler dann wahrscheinlich ein vollständiges Vorrichtungsversagen. Vorrichtungsversagen können über eine Anzahl von Speicherlesevorgängen vorhanden sein, aber weniger Versuche zum Beheben verwenden. Zum Beispiel kann das Addieren von lediglich 22*8 zusätzlichen Takten für eine SHA3-Verschlüsselung der schlechteste Fall für DDR5-Speicher sein und diese Vorgänge können parallel durchgeführt werden. Bei manchen Beispielen dauert eine SHA3-Verschlüsselung weniger Taktzyklen als eine AES-XTS-Verschlüsselung, sodass eine Integrität keinerlei Leistungsfähigkeit-Overhead für Speicherlesevorgänge jenseits einer Verschlüsselung hinzufügt, wenn der MAC über den Geheimcodetext berechnet und parallel mit der Entschlüsselung auf einem Speicherlesevorgang errechnet wird.In some examples, if a fully unrolled or XORed correction value has a large number of flip bits, then the error is likely to be a complete device failure. Device failures can exist over a number of memory reads, but use fewer attempts to fix. For example, adding only 22 * 8 additional clocks for SHA3 encryption may be the worst case for DDR5 memory and these operations can be done in parallel. In some examples, SHA3 encryption takes less clock cycles than AES-XTS encryption, so integrity does not add any performance overhead to memory reads beyond encryption when the MAC is computed over the secret code text and computed in parallel with the decryption on a memory read.

Das Prozessflussdiagramm aus 4 soll nicht angeben, dass die Vorgänge des Verfahrens 400 in einer beliebigen bestimmten Reihenfolge auszuführen sind oder das alle der Vorgänge des Verfahrens 400 in jedem Fall enthalten sein sollen. Außerdem kann das Verfahren 400 eine beliebige geeignete Anzahl an zusätzlichen Vorgängen beinhalten.The process flow diagram 4 should not specify that the procedures of the procedure 400 be executed in any particular order or all of the procedures of the method 400 in any case should be included. In addition, the process can 400 include any suitable number of additional operations.

5A und 5B stellen Beispiele für Datenstrukturen zum Speichern verschlüsselter Daten dar. Bei manchen Beispielen kann jede Vorrichtung 502A eine beliebige geeignete Anzahl an Bits beinhalten. Zum Beispiel kann jede Vorrichtung 502A unter anderem einen 16-Bit-Wert, 32-Bit-Wert oder 64-Bit-Wert beinhalten. Bei manchen Ausführungsformen kann eine beliebige Anzahl an Vorrichtungen hinsichtlich der Größe gleich einem Verschlüsselungsschlüssel oder Verschlüsselungsblock sein. Zum Beispiel können Vorrichtungen 502A, 504A, 506A und 508A, falls ihre Größe 32 Bit beträgt, gleich einer Blockgröße von mit AES verschlüsselten Daten sein. Bei manchen Ausführungsformen wird ein Korrekturwert 510A erzeugt, indem ein Ergebnis eines XOR-Vorgangs basierend auf einem zuvor gespeicherten MAC-Wert 512A und verschlüsselten Datenwerten, die in Vorrichtungsdatenblöcken 502A, 504A, 506A, 508A und dergleichen gespeichert sind, berechnet wird und gleichermaßen der gesamte Rest der in 514A gezeigten Vorrichtungen zu der Cache-Line von Daten beiträgt. 5A and 5B Examples of data structures for storing encrypted data. In some examples, each device may 502A include any suitable number of bits. For example, any device 502A including a 16-bit value, 32-bit value or 64-bit value. In some embodiments, any number of devices may be equal in size to an encryption key or encryption block. For example, devices 502A . 504A . 506A and 508A if its size 32 Bit is equal to a block size of AES encrypted data. In some embodiments, a correction value 510A generated by a result of an XOR operation based on a previously stored MAC value 512A and encrypted data values stored in device data blocks 502A . 504A . 506A . 508A and the like are stored, and equally the entire remainder of the 514A shown contributes to the cache line of data.

In 5B können Vorrichtungsdatenblöcke 502B, 504B, 506B, 508B und 510B verschlüsselte Daten in einem Speicher speichern. Bei manchen Beispielen wird ein Ersatzwert 512B für den Vorrichtungsdatenblock 504B basierend auf einem XOR-Vorgang der Vorrichtungsdatenblöcke 502B, 506B, 508B und sämtlichen anderen als 510B gezeigten Vorrichtungsdatenblöcken, einem MAC 514B und einem Korrekturwert 516B erzeugt. Falls zum Beispiel der gespeicherte MAC 514B dabei versagt, den berechneten MAC 518B der Daten-Line (die kombinierten Vorrichtungsdatenblöcke) abzugleichen, kann der Ersatzwert 512B mit einem XOR-Vorgang (hier auch als Entrollen bezeichnet) basierend auf dem MAC-Wert 514B, dem Korrekturwert 516B und jedem der Vorrichtungsdatenblöcke ausschließlich des einen Vorrichtungsdatenblocks, der getestet wird, erzeugt werden. Zum Beispiel kann ein Vorrichtungsdatenblock 504B aus der XOR-Sequenz ausgeschlossen werden, um zu bestimmen, ob der Vorrichtungsdatenblock 504B fehlerhafte Bits beinhaltet, wenn der resultierende Ersatzwert anstelle des Vorrichtungsdatenblocks 504B verwendet wird und der neuberechnete zweite MAC mit dem gespeicherten ersten MAC übereinstimmt.In 5B can device data blocks 502B . 504B . 506B . 508B and 510B store encrypted data in a memory. In some examples, a substitute value 512B for the device data block 504B based on an XOR operation of the device data blocks 502B . 506B . 508B and all others as 510B shown device data blocks, a MAC 514B and a correction value 516B generated. For example, if the stored MAC 514B fails, the calculated MAC 518B the data line (the combined device data blocks), the substitute value 512B with an XOR operation (also referred to herein as unrolling) based on the MAC value 514B , the correction value 516B and each of the device data blocks excluding the one device data block being tested. For example, a device data block 504B be excluded from the XOR sequence to determine if the device data block 504B contains erroneous bits if the resulting substitute value is used instead of the device data block 504B is used and the recalculated second MAC matches the stored first MAC.

6 veranschaulicht ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten basierend auf einem Entropieniveau der Daten. Das in 6 veranschaulichte Verfahren 600 kann mit einer beliebigen geeigneten Rechenkomponente oder -vorrichtung, wie etwa der Rechenvorrichtung 102 aus 1, implementiert werden. Das Verfahren 600 kann eine Heuristik nutzen, um zu lokalisieren, welche Vorrichtung oder welcher Teil einer Speichervorrichtung wahrscheinlich versagte. Falls zum Beispiel ein entschlüsselter AES-Block einen zufälligen Klartext zeigt, hat wahrscheinlich einer der Vorrichtungsdatenblöcke, die zu diesem AES-Block beitragen, versagt. 6 FIG. 12 illustrates a process flow diagram for managing encrypted data based on an entropy level of the data. This in 6 illustrated method 600 may be with any suitable computing component or device, such as the computing device 102 out 1 to be implemented. The procedure 600 can use heuristics to locate which device or which part of a storage device is likely to fail. For example, if a decrypted AES block shows a random plaintext, then probably one of the device data blocks contributing to that AES block has failed.

Bei Block 602 kann der MAC-Verwalter 120 detektieren, dass ein berechneter MAC nicht mit einem gespeicherten MAC-Wert übereinstimmt. Bei Block 604 kann der MAC-Verwalter 120 eine Anzahl an Blöcken von Daten in einem gespeicherten Speicher entschlüsseln. Bei manchen Ausführungsformen ist die Anzahl an entschlüsselten Vorrichtungsdatenblöcken gleich einer Länge eines Verschlüsselungsschlüssels. Zum Beispiel können vier Vorrichtungsdatenblöcke, die jeweils zweiunddreißig Bit speichern, für einen Einhundertachtundzwanzig-Bit-Verschlüsselungsblock entschlüsselt werden. Bei manchen Beispielen entspricht eine Größe des Blocks einer Größe einer Eingabe oder Ausgabe eines Blockgeheimcodes. Zum Beispiel kann ein Blockgeheimcode, wie etwa AES128, einen 128-Bit-Schlüssel verwenden, um eine 128-Bit-Blockgröße von Daten zu verschlüsseln/entschlüsseln. Alternativ dazu kann ein Blockgeheimcode, wie etwa AES256, einen 256-Bit-Schlüssel verwenden, um den gleich großen Datenblock von 128 Bit zu verschlüsseln/entschlüsseln.At block 602 can the MAC administrator 120 detect that a calculated MAC does not match a stored MAC value. At block 604 can the MAC administrator 120 decrypt a number of blocks of data in a stored memory. In some embodiments, the number of decrypted device data blocks is equal to a length of an encryption key. For example, four device data blocks each storing thirty-two bits may be decrypted for a one hundred twenty-eight-bit encryption block. In some examples, a size of the block corresponds to a size of input or output of a block secret code. For example, a block secret code, such as AES128, may use a 128-bit key to encrypt / decrypt a 128-bit block size of data. Alternatively, a block secret code, such as AES256, may use a 256-bit key to encrypt / decrypt the equally sized 128-bit block of data.

Bei Block 606 kann der MAC-Verwalter 120 bestimmen, ob der Klartext des entschlüsselten Datenblocks eine Entropie aufweist, die unterhalb eines Schwellenwertes liegt. Falls zum Beispiel die Anzahl an 0-Bits und 1-Bits in dem Klartext näherungsweise gleich sind oder eine gleiche Verteilung aufweisen, liegt die Entropie aufgrund der zufälligen Natur der Daten oberhalb einer Schwelle. Entsprechend kann das Verfahren 600 Ignorieren von Klartextdaten mit einer niedrigen Entropie oder Auswählen der Blöcke mit der höchsten Entropie für Ersatztests zuerst beinhalten. Bei einem Beispiel wird ein entschlüsselter Block mit mehreren 8-Bits von Nullen in Byte-ausgerichteten Positionen möglicherweise nicht als zufällig oder fehlerhaft betrachtet, sodass jene Vorrichtungen, die den Block umfassen, aus dem Prozess des Identifizierens eines fehlerhaften Datenblocks mit Fehlern beseitigt werden können. Bei anderen Beispielen werden entschlüsselte Klartexte mit sich wiederholenden Werten oder Werten ähnlich anderen entschlüsselten Blöcken als eine niedrigere Entropie aufweisend betrachtet und können zuerst bei den Ersatzwerttests übersprungen werden, da sie unwahrscheinlich die Quelle der Speicherbeschädigung sind.At block 606 can the MAC administrator 120 determine whether the plaintext of the decrypted data block has an entropy that is below a threshold. For example, if the number of 0-bits and 1-bits in the plaintext are approximately equal or equal in distribution, the entropy is above a threshold due to the random nature of the data. Accordingly, the method 600 Ignore plain text data with a low entropy or select the highest entropy blocks for replacement tests first. In one example, a decrypted block having multiple 8-bits of zeros in byte aligned positions may not be considered random or faulty, so those devices that comprise the block may be eliminated from the process of identifying a faulty data block with errors. In other examples, decrypted plaintexts having repeating values or values similar to other decrypted blocks are considered to have lower entropy and may be skipped first in the replacement value tests because they are unlikely to be the source of memory corruption.

Falls der Klartext der entschlüsselten Daten eine Entropie aufweist, die oberhalb eines Schwellenwertes liegt, fährt der Prozessfluss bei Block 608 fort. Bei Block 608 kann der MAC-Verwalter 120 bestimmen, ob jeder Block von Daten korrigiert ist, indem der Vorrichtungsdatenblock mit einem Korrekturwert ersetzt wird, wie oben in Bezug auf 3 besprochen wurde. Falls der Klartext der entschlüsselten Daten eine Entropie unterhalb eines Schwellenwertes aufweist, fährt der Prozessfluss bei Block 610 fort, indem eine anschließende Anzahl an Blöcken von Daten getestet wird, bevor er zu Block 602 des Prozessflussdiagramms zurückkehrt. Der MAC-Verwalter kann auch den zweiten MAC neuberechnen, nachdem jeder Vorrichtungsdatenblock mit einem Ersatzwert für den entschlüsselten Block der höchsten Entropie substituiert wurde. If the plaintext of the decrypted data has an entropy that is above a threshold, the process flow moves to block 608 continued. At block 608 can the MAC administrator 120 determine if each block of data is corrected by replacing the device data block with a correction value as described above with respect to 3 was discussed. If the plaintext of the decrypted data has an entropy below a threshold, the process flow moves to block 610 Continue by testing a subsequent number of blocks of data before going to block 602 of the process flowchart returns. The MAC manager may also recalculate the second MAC after substituting each device data block with a replacement value for the decrypted block of highest entropy.

Bei manchen Ausführungsformen kann auch eine Kompression für Daten verwendet werden, um Reed-Solomon-Codes oder ähnliche ECC-Fehlerdetektionscodes innerhalb der Daten-Cache-Lines aufzunehmen. Falls diese Codes über mehrere Blöcke dupliziert werden, können sie auch verwendet werden, um die Bitfehlerstellen präzise zu identifizieren, ohne Trial-and-Error zu benötigen. Gleichermaßen kann die Kompression der Daten-Line ermöglichen, dass der MAC-Wert in dem Platz gespeichert wird, der durch eine Kompression freigegeben wird, wodurch der Bedarf an zusätzlichem Speicher, um die MAC- Werte zu halten, reduziert wird. Falls es ein Vorrichtungsversagen oder einen Haftfehler gibt, ist dies des Weiteren über mehrere Speicherlesewerte zu ausgerichteten Speicherstellen wahrscheinlich, die derselben Vorrichtung entsprechen. Dies bedeutet, dass mehrere angrenzende Lesewerte die gleiche Fehlerstelle erfahren werden. Dies wird dabei helfen, dass die Fehlerkorrektur sich auf die wahrscheinlichste Vorrichtung für ein Haftversagen konzentriert, wodurch wieder Trial-and-Error reduziert wird.In some embodiments, compression for data may also be used to capture Reed-Solomon codes or similar ECC error detection codes within the data cache lines. If these codes are duplicated over multiple blocks, they can also be used to precisely identify the bit error locations without requiring trial-and-error. Likewise, the compression of the data line may allow the MAC value to be stored in the space released by compression, thereby reducing the need for additional memory to hold the MAC values. Further, if there is a device failure or an adhesion failure, it is likely to have multiple memory readings to aligned memory locations corresponding to the same device. This means that several adjacent readings will experience the same point of failure. This will help to fix the error correction on the most likely device for adhesive failure, again reducing trial-and-error.

Das Prozessflussdiagramm aus 6 soll nicht angeben, dass die Vorgänge des Verfahrens 600 in irgendeiner bestimmten Reihenfolge auszuführen sind oder dass alle der Vorgänge des Verfahrens 600 in jedem Fall enthalten sein sollen. Außerdem kann das Verfahren 500 eine beliebige geeignete Anzahl an zusätzlichen Vorgängen beinhalten.The process flow diagram 6 should not specify that the procedures of the procedure 600 are to be executed in any particular order or that all of the procedures of the procedure 600 in any case should be included. In addition, the process can 500 include any suitable number of additional operations.

7 stellt eine Pipeline-Technik zum Berechnen eines MAC dar. Bei manchen Ausführungsformen kann eine Pipeline für MAC-Berechnungen für spekulativ reparierte Vorrichtungsdatenblöcke anstelle einer sequenziellen MAC-Berechnung für jeden Reparaturversuch verwendet werden. Zum Beispiel kann die Cache-Line bei einer Vollständige-Pipeline-Gestaltung (1 Stufe/Taktzyklus) bei jedem Taktzyklus i=0...15 mit „reparierter“ Vorrichtung i in die MAC-Erzeugung-Pipeline abgeschickt werden, sodass die MAC-Werte parallel berechnet werden. Bei einem Beispiel können unter Annahme einer SHA-3-Verschlüsselung-Pipeline mit einer Latenz von 22 Zyklen die Ergebnisse einer gesamten Latenz ein bester Fall von 22 Zyklen, ein schlechtester Fall von 47 Zyklen und ein durchschnittlicher Fall von 29 Zyklen sein. Bei manchen Beispielen kann eine SHA-3-Pipeline eine Partielle-Pipeline-Struktur aufweisen, um dem Durchsatz zu entsprechen, d. h. eine Cache-Line alle vier Zyklen zu akzeptieren. Bei manchen Ausführungsformen erfordert das Reparieren der Vorrichtung, die einen MAC-Wert speichert, keine Neuberechnung des MAC-Wertes über Cache-Line-Daten, weil die Daten in einem Reparaturversuch unverändert bleiben. Stattdessen kann der Prozess Durchführen von XOR-Vorgängen beinhalten, um einen „reparierten“ MAC zu erzeugen und zu versuchen, den reparierten MAC mit dem MAC abzugleichen, der über die gelesenen Rohdaten erzeugt wird. Bei manchen Beispielen kann dieser Reparaturversuch zuerst ausgeführt werden, bevor versucht wird, einen beliebigen Vorrichtungsdatenblock zu reparieren, was aufgrund einer MAC-Neuberechnung eine Latenz von wenigstens 22 Zyklen aufweisen kann. 7 FIG. 10 illustrates a pipelining technique for computing a MAC. In some embodiments, a MAC computation pipeline may be used for speculatively repaired device data blocks instead of a sequential MAC computation for each repair attempt. For example, the cache line in a full pipeline design ( 1 Stage / clock cycle) at each clock cycle i = 0 ... 15 with "fixed" device i are sent to the MAC generation pipeline, so that the MAC values are calculated in parallel. In one example, assuming a SHA 3 22-cycle latency pipeline, the results of total latency would be a best case of 22 cycles, a worst case of 47 cycles, and an average of 29 cycles. In some examples, a SHA-3 pipeline may have a partial pipeline structure to meet throughput, ie, accept a cache line every four cycles. In some embodiments, repairing the device storing a MAC value does not require recalculation of the MAC value over cache line data because the data remains unchanged in a repair attempt. Instead, the process may involve performing XOR operations to generate a "repaired" MAC and attempting to match the repaired MAC with the MAC generated from the read raw data. In some examples, this repair attempt may be performed first before attempting to repair any device data block, which may have a latency of at least 22 cycles due to a MAC recalculation.

Bei dem Beispiel 700 aus 7 besteht eine Vollständige-Pipeline-SHA-3-Engine aus 22 identischen verketteten Stufen, von denen jede einen Satz von Zustandsregistern und eine kombinatorische Logik für eine Keccak-Funktion aufweist. Die Eingabe kann an jede Stufe geliefert werden und die letzte Stufe stellt die Ausgabe bereit. Um die Ausnutzung dieser Pipeline zu erhöhen, kann eine Schleife der Pipeline-Stufen K 702 die Eingabe 702 einer beliebigen der Pipeline-Stufen durch die Eingänge in0...in21 704 zuführen. Die Ausgabe für bestimmte Eingangsdaten wird nach 22 Zyklen von dem entsprechenden Ausgang out0...out21 706 abgerufen.In example 700 off 7 For example, a complete pipeline SHA-3 engine consists of 22 identical concatenated stages, each having a set of state registers and combinational logic for a keccak function. The input can be delivered to each stage and the last stage provides the output. To increase the utilization of this pipeline, a loop of pipeline stages K 702 may input 702 pass any of the pipeline stages through the inputs in0 ... in21704. The output for certain input data is fetched after 22 cycles from the corresponding output out0 ... out21 706.

Diese Schleifengestaltung ermöglicht es, mehrere Eingang-Cache-Lines in dem gleichen Zyklus zu laden und sie parallel anstatt um einen Zyklus versetzt zu verarbeiten. Dies ist nützlich, wenn MACs berechnet werden, um einen Vorrichtungsdatenblock zu reparieren. Im besten Fall können, falls die Pipeline leer ist, die „reparierten“ Cache-Lines parallel geladen werden, um zu bestimmen, welche Vorrichtung fehlerhaft war, wodurch die Latenz reduziert wird. Bei manchen Beispielen können nichtverwendete Eingänge verwendet werden, um MACs für andere Datenantworten zu berechnen, die von dem Speicher ankommen. Dies verbessert die Latenz und den Durchsatz für speicherintensive Arbeitslasten mit häufigen DRAM-Fehlern. Ein Hardware-Arbiter kann verwendet werden, um die MAC-Berechnungen zu verfolgen, die in der Reihe sind, und um Eingabedaten in die angemessenen Stufen zu multiplexen. Dieser Ansatz kann auch auf eine Partielle-Pipeline-Gestaltung angewandt werden, in der jede Stufe mehrere Runden einer Keccak-Funktion auf den momentanen Zustand bis zu einem Transfer zu der nächsten Stufe anwendet. Jede dieser Stufen kann einen externen Eingang und Ausgang wie oben beschrieben aufweisen, um eine Nutzung jeder Stufe zu maximieren.This loop design allows multiple input cache lines to be loaded in the same cycle and processed in parallel rather than offset by one cycle. This is useful when calculating MACs to repair a device data block. At best, if the pipeline is empty, the "repaired" cache lines can be loaded in parallel to determine which device was faulty, thereby reducing latency. In some examples, unused inputs may be used to compute MACs for other data responses that arrive from the memory. This improves latency and throughput for memory-intensive workloads with frequent DRAM errors. A hardware arbiter can be used to keep track of the MAC calculations that are in-line and to multiplex input data into the appropriate stages. This approach can also be applied to a partial pipeline Design, in which each stage applies multiple rounds of a keccak function to the current state until a transfer to the next level. Each of these stages may have an external input and output as described above to maximize utilization of each stage.

8 veranschaulicht ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten. Das in 8 veranschaulichte Verfahren 800 kann mit einer beliebigen geeigneten Rechenkomponente oder -vorrichtung, wie etwa der Rechenvorrichtung 102 aus 1, implementiert werden. 8th illustrates a process flow diagram for managing encrypted data. This in 8th illustrated method 800 may be with any suitable computing component or device, such as the computing device 102 out 1 to be implemented.

Bei Block 802 kann der MAC-Verwalter 120 einen verschlüsselten ersten Blockkorrekturwert und einen ersten MAC-Wert basierend auf Daten, die in einem Systemspeicher gespeichert sind, als Reaktion auf einen Schreibvorgang in den Systemspeicher speichern. Der erste Blockkorrekturwert umfasst den XOR des Klartexts jedes Blocks von Daten in einer in den Speicher geschriebenen Daten-Line. Außerdem kann der MAC-Verwalter einen zusätzlichen MAC-Wert für die verschlüsselten Daten in der Daten-Line berechnen und den zusätzlichen MAC-Wert in dem Speicher speichern. Bei Block 804 kann der MAC-Verwalter 120 einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht.At block 802 can the MAC administrator 120 store an encrypted first block correction value and a first MAC value based on data stored in system memory in the system memory in response to a write. The first block correction value comprises the XOR of the plaintext of each block of data in a data line written in the memory. In addition, the MAC manager may calculate an additional MAC value for the encrypted data in the data line and store the additional MAC value in the memory. At block 804 can the MAC administrator 120 detect a read corresponding to the data stored in the system memory.

Bei Block 806 kann der MAC-Verwalter 120 einen zweiten Blockkorrekturwert basierend auf den in dem Systemspeicher gespeicherten Daten berechnen. Bei manchen Beispielen kann der zweite Blockkorrekturwert basierend auf einem XOR-Vorgang berechnet werden, der Klartextdaten oder entschlüsselte Daten jedes Blocks einer in dem Systemspeicher gespeicherten Daten-Line umfasst. Bei manchen Beispielen kann der zweite Blockkorrekturwert als Reaktion auf einen Lesevorgang erzeugt werden.At block 806 can the MAC administrator 120 calculate a second block correction value based on the data stored in the system memory. In some examples, the second block correction value may be calculated based on an XOR operation that includes plaintext data or decrypted data of each block of a data line stored in the system memory. In some examples, the second block correction value may be generated in response to a read.

Bei Block 808 kann der MAC-Verwalter 120 bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten gespeicherten Blockkorrekturwert übereinstimmt. In diesem Fall kann der MAC-Verwalter 120 den zusätzlichen gespeicherten MAC-Wert aus dem Speicher abrufen und einen zweiten MAC der in dem Speicher gespeicherten Daten-Line berechnen. Falls der gespeicherte MAC mit dem zweiten berechneten MAC übereinstimmt, dann wird bestimmt, dass sich der Blockkorrekturcode in einem Fehlerzustand befindet, und können die Daten entschlüsselt und an den Cache gesendet werden. Falls der gespeicherte MAC nicht mit dem zweiten berechneten MAC bei Block 810 übereinstimmt, kann der MAC-Verwalter 120 bei Block 812 den zweiten Blockkorrekturwert mit einem Korrekturvorgang neuberechnen. Bei manchen Ausführungsformen umfasst der Korrekturvorgang einen XOR-Vorgang basierend auf den in dem Systemspeicher gespeicherten entschlüsselten Datenblöcken und wird ein Ersatzwert für einen Vorrichtungsdatenblock oder einen integrierten Schaltkreis des Systemspeichers bestimmt, indem der Vorrichtungsdatenblock ausgelassen wird und der verbleibende Blockkorrekturwert anstelle des entschlüsselten Vorrichtungsdatenblockklartexts verwendet wird. Der Ersatzwert wird dann mit einem geheimen Schlüssel (der zum Verschlüsseln der Vorrichtungsdatenblöcke verwendet wird) verschlüsselt und der zweite MAC wird unter Verwendung der verbleibenden verschlüsselten Blöcke und des verschlüsselten Ersatzwertes neuberechnet.At block 808 can the MAC administrator 120 determine that the second block correction value does not match a decrypted first stored block correction value. In this case, the MAC administrator 120 retrieve the additional stored MAC value from the memory and calculate a second MAC of the data line stored in the memory. If the stored MAC matches the second calculated MAC, then it is determined that the block correction code is in an error state and the data can be decrypted and sent to the cache. If the stored MAC does not match the second calculated MAC at block 810 can match, the MAC administrator 120 at block 812 Recalculate the second block correction value with a correction operation. In some embodiments, the correction process includes an XOR operation based on the decrypted data blocks stored in the system memory and a replacement value for a device data block or integrated circuit of the system memory is determined by omitting the device data block and using the remaining block correction value instead of the decrypted device data block text. The substitute value is then encrypted with a secret key (used to encrypt the device data blocks) and the second MAC is recalculated using the remaining encrypted blocks and the encrypted substitute value.

Bei Block 814 kann der Entschlüsselungsverwalter 122 die in dem Systemspeicher gespeicherten Daten, die eine Cache-Line umfassen, als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC-Wert mit dem ersten gespeicherten MAC-Wert übereinstimmt, entschlüsseln. Bei Block 816 kann der Datensender 124 die entschlüsselten Daten an einen Cache übertragen.At block 814 can the decryption manager 122 decrypt the data stored in the system memory comprising a cache line in response to detecting that the recalculated second MAC value matches the first stored MAC value. At block 816 can the data transmitter 124 transmit the decrypted data to a cache.

Das Prozessflussdiagramm aus 8 soll nicht angeben, dass die Vorgänge des Verfahrens 800 in irgendeiner bestimmten Reihenfolge auszuführen sind oder dass alle der Vorgänge des Verfahrens 800 in jedem Fall enthalten sein sollen. Außerdem kann das Verfahren 800 eine beliebige geeignete Anzahl an zusätzlichen Vorgängen beinhalten. Bei dem Verfahren 800 kann der Blockkorrekturcode selbst sicher (auf eine nichtfälschbare Weise) detektieren, dass die Daten wenigstens einen Fehler aufweisen. Der zusätzliche MAC-Wert kann verwendet werden, um zu bestimmen, wann beliebige Fehler korrigiert oder behoben sind. Falls es keinen Fehler gibt, wird der zusätzliche gespeicherte MAC-Wert nicht abgerufen. Bei manchen Ausführungsformen kann der zusätzliche MAC-Wert an einer separaten Speicherstelle gespeichert werden, wodurch dementsprechend der Bedarf an zusätzlichen Vorrichtungen auf einer Speichervorrichtung, wie etwa einem DIMM, für den MAC entfernt wird. Manche Ausführungsformen können den zusätzlichen gespeicherten MAC-Wert vollständig beseitigen, indem die Entropie jedes entschlüsselten Blocks von Daten verwendet wird, um zu bestimmen, welche Vorrichtung/welcher Block sich in einem Fehlerzustand befindet, und der Ersatzwert anstelle des entschlüsselten Blocks von Daten mit der höchsten Entropie, wie in 6 veranschaulicht, verwendet wird. Gleichermaßen können Datenkompressionstechniken verwendet werden, damit ein MAC in einen Platz passt, der durch Kompression der Daten-Line freigegeben wird.The process flow diagram 8th should not specify that the procedures of the procedure 800 are to be executed in any particular order or that all of the procedures of the procedure 800 in any case should be included. In addition, the process can 800 include any suitable number of additional operations. In the process 800 For example, the block correction code itself may surely detect (in a non-falsible manner) that the data has at least one error. The additional MAC value can be used to determine when any errors are corrected or corrected. If there is no error, the additional stored MAC value will not be retrieved. In some embodiments, the additional MAC value may be stored in a separate memory location, accordingly removing the need for additional devices on a storage device, such as a DIMM, for the MAC. Some embodiments may completely eliminate the additional stored MAC value by using the entropy of each decrypted block of data to determine which device / block is in an error state and the substitute value instead of the decrypted block of highest data Entropy, as in 6 illustrates is used. Similarly, data compression techniques can be used to allow a MAC to fit into a space that is freed by compressing the data line.

9 ist ein Prozessflussdiagramm zum Verwalten verschlüsselter Daten. Bei manchen Ausführungsformen kann das Verfahren 900 Transformieren jedes Vorrichtungsdatenblocks vor dem Berechnen des Fehlerkorrekturcodes beinhalten. Eine Transformation ist das Verwenden eines Geheimcodes mit kleiner Blockgröße (z. B. unter anderem SIMON, SPECK, PRINCE), bei dem die Blockgröße mit der Vorrichtungsgröße übereinstimmt, um jede Vorrichtung einzeln mit einem geheimen Schlüssel zu verschlüsseln, bevor ein XOR-Vorgang jedes resultierenden Geheimcodetexts durchgeführt wird. Manche Ausführungsformen können einen Tweak beinhalten, zum Beispiel unter Verwendung von XTS (XEX-basierter Tweak-Codebuch-Modus mit Geheimcodetextstehlen) oder anderer Tweak-Modi, wobei der Tweak die Adresse des Vorrichtungsdatenblocks umfasst, um einen Speicher-Position/Stelle-abhängigen Geheimcodetext zu erschaffen. Welcher Schlüssel verwendet wird, um die Daten-Line zu verschlüsseln/entschlüsseln, kann auch durch zusätzliche Adressenbits oder andere cache-bare Metadaten ausgewählt werden, die angeben, welcher Schlüssel aus einem Satz von Schlüsseln zu verwenden ist. 9 is a process flow diagram for managing encrypted data. In some embodiments, the method 900 Transforming each device data block before calculating the error correction code. One transformation is to use a small block size secret code (eg, SIMON, SPECK, PRINCE, among others) in which the block size matches the device size to encrypt each device one at a time with a secret key before XORing each one resulting secret code text is performed. Some embodiments may include a tweak, for example, using XTS (XEX-based tweak codebook mode with secret code text steal) or other tweak modes, the tweak comprising the address of the device data block to provide memory location / location dependent secret code text to create. Which key is used to encrypt / decrypt the data line can also be selected by additional address bits or other cacheable metadata that indicates which key from a set of keys to use.

Entsprechend ist selbst der Korrekturcode sicher. Zum Beispiel kann eine Verschlüsselung jeder Vorrichtung mit einem Geheimcode mit einer kleinen Blockgröße als Eingabe in die XOR-Funktion verwendet werden, um den XOR-ausgeführten Korrekturcode zu berechnen. Ein Angreifer müsste diese geheime Funktionsausgabe kennen, um zu erreichen, dass alle Vorrichtungsdatenblöcke auf null entrollt werden. Daher arbeiten sowohl der MAC als auch die Korrekturcodes zusammen, wodurch die Sicherheit des Blocks verbessert wird.Accordingly, even the correction code is secure. For example, an encryption of any device having a secret code with a small block size may be used as input to the XOR function to compute the XOR-executed correction code. An attacker would need to know this secret function output to ensure that all device data blocks are unrolled to zero. Therefore, both the MAC and the correction codes work together, improving the security of the block.

Bei Block 902 kann der MAC-Verwalter 120 einen MAC berechnen, Daten entschlüsseln und einen Blockkorrekturwert als Reaktion auf einen Lesevorgang entschlüsseln. Bei manchen Beispielen wird der Blockkorrekturwert in einem verschlüsselten Format von einem vorherigen Schreibvorgang gespeichert. Bei manchen Ausführungsformen kann der MAC basierend auf den verschlüsselten Daten berechnet werden, die vor der Entschlüsselung in dem Speicher gespeichert wurden.At block 902 can the MAC administrator 120 calculate a MAC, decrypt data, and decrypt a block correction value in response to a read. In some examples, the block correction value is stored in an encrypted format from a previous write. In some embodiments, the MAC may be computed based on the encrypted data that was stored in memory prior to decryption.

Bei Block 904 kann der MAC-Verwalter 120 bestimmen, ob der entschlüsselte Blockkorrekturwert mit einem XOR-Ergebnis basierend auf den Klartextdaten oder entschlüsselten Daten übereinstimmt. Falls der Blockkorrekturwert mit den XOR-ausgeführten Klartextdatenblöcken übereinstimmt, fährt der Prozessfluss bei Block 906 fort und werden die entschlüsselten Daten an einen Cache gesendet. Falls der Blockkorrekturwert nicht mit den XOR-ausgeführten Klartextdatenblöcken übereinstimmt, fährt der Prozessfluss bei Block 908 fort.At block 904 can the MAC administrator 120 determine whether the decrypted block correction value matches an XOR result based on the plaintext data or decrypted data. If the block correction value matches the XOR plaintext data blocks, the process flow moves to block 906 and the decrypted data is sent to a cache. If the block correction value does not match the XOR plaintext data blocks, the process flow moves to block 908 continued.

Bei Block 908 kann der MAC-Verwalter 120 bestimmen, ob der berechnete MAC mit einem gespeicherten MAC übereinstimmt. Falls der berechnete MAC mit einem gespeicherten MAC übereinstimmt, fährt der Prozessfluss bei Block 906 fort, indem entschlüsselte Daten an eine Cache-Vorrichtung gesendet werden. Falls der berechnete MAC nicht mit einem gespeicherten MAC übereinstimmt, fährt der Prozessfluss zu Block 910 fort. Bei Block 910 kann der MAC-Verwalter 120 zu einem nächsten Vorrichtungsdatenblock in einer XOR-Berechnung überspringen, den entschlüsselten Blockkorrekturwert für einen entschlüsselten Vorrichtungsdatenblock substituieren, den Ersatzwert erneut verschlüsseln und einen MAC über die verbleibenden verschlüsselten Vorrichtungsdatenblöcke und den verschlüsselten Ersatzwert neuberechnen, bevor er zu Block 908 zurückkehrt. Daher muss, damit eine fehlerhafte Cache-Line den Integritätstest besteht, ein Angreifer nicht nur den MAC fälschen, sondern auch den Blockkorrekturwert fälschen, der unter Verwendung eines geheimen Schlüssels erzeugt wird. Daher wird dies effektiv eine Lösung mit zwei MACs, insbesondere wenn ein stärkerer (größerer) MAC benötigt wird, als er in den Vorrichtungsdatenblock des Fehlerdetektionscodes passen kann. Mit zunehmenden DRAM-Vorrichtungsdichten ist das obige Schema auch effektiv beim Reduzieren von ECC-Speicher-Kosten, weil der MAC separat in einem abgesonderten (z. B. durch Software zugewiesenen) Speicher oder als eine Tabellenstruktur in einem Speicher (Tabelle, die durch die Speicheradresse indiziert wird, die mit jedem Tabelleneintrag assoziiert ist) gespeichert werden kann. Der/die zusätzliche ECC-Chip/Vorrichtung auf dem DIMM für den ECC-Fehlerdetektionscode und/oder MAC kann daher beseitigt werden. Währenddessen kann der abgesonderte Speicher für den MAC verwendet werden, wenn die Vorrichtungskorrektur bei einer Übereinstimmung versagt. Der MAC wird verwendet, um zu bestimmen, welche der Korrekturwerte erfolgreich waren oder ob die Korrekturvorrichtung der versagende Teil war, weil der MAC mit dem nicht korrigierten Daten-Line-Wert übereinstimmt. Schließlich können Techniken, wie Kompression, verwendet werden, um den MAC innerhalb der Daten-Line (wenn komprimierbar) unter Verwendung von MAC-Nachschlagen nur für Daten-Cache-Lines, die nicht komprimieren, einzubetten. Dies kann ferner die Menge an benötigtem abgesonderten Speicher reduzieren und die Anzahl an Speichernachschlagevorgängen reduzieren, wenn Speicherfehler korrigiert werden.At block 908 can the MAC administrator 120 determine if the computed MAC matches a stored MAC. If the calculated MAC matches a stored MAC, the process flow continues at block 906 by sending decrypted data to a cache device. If the calculated MAC does not match a stored MAC, the process flow moves to block 910 continued. At block 910 can the MAC administrator 120 skip to a next device data block in an XOR calculation, substitute the decrypted block correction value for a decrypted device data block, re-encrypt the substitute value, and recalculate a MAC over the remaining encrypted device data blocks and the encrypted substitute value before going to block 908 returns. Therefore, in order for a bad cache line to pass the integrity test, an attacker not only has to fake the MAC but also falsify the block correction value that is generated using a secret key. Therefore, this effectively becomes a solution with two MACs, especially if a stronger (larger) MAC is needed than it can fit in the device data block of the error detection code. With increasing DRAM device densities, the above scheme is also effective in reducing ECC memory costs, because the MAC is stored separately in a separate (e.g., software assigned) memory or as a table structure in a memory (table represented by the Memory address indexed associated with each table entry) can be stored. The additional ECC chip / device on the DIMM for the ECC error detection code and / or MAC can therefore be eliminated. Meanwhile, the dedicated memory may be used for the MAC if the device correction fails at a match. The MAC is used to determine which of the correction values were successful or whether the correction device was the failing part because the MAC matches the uncorrected data line value. Finally, techniques such as compression can be used to embed the MAC within the data line (if compressible) using MAC lookup only for data cache lines that do not compress. This can also reduce the amount of dedicated memory needed and reduce the number of memory lookups when memory errors are corrected.

10A und 10B stellen Techniken zum Verwalten verschlüsselter Daten mit einem Blockkorrekturwert und einem zweiten MAC dar. In 10A können bei einem Speicherschreiben die verschlüsselten Daten 1002A verwendet werden, um einen MAC 1004A zu berechnen, der separat gespeichert ist. Außerdem kann eine entschlüsselte Version der Daten oder Klartextdaten 1006A mit einem XOR-Vorgang kombiniert werden, um einen XOR-ausgeführten Klartext 1008A zu erzeugen, der ein Korrekturwert 1010A ist. Der Korrekturwert 1010A kann in einem verschlüsselten Format 1012A als ein verschlüsselter Blockkorrekturwert gespeichert werden. 10A and 10B illustrate techniques for managing encrypted data with a block correction value and a second MAC 10A can in a memory write the encrypted data 1002A used to be a MAC 1004A to calculate, which is stored separately. also can be a decrypted version of the data or plain text data 1006A combined with an XOR operation to produce an XOR-executed plaintext 1008A to generate a correction value 1010A is. The correction value 1010A can be in an encrypted format 1012A stored as an encrypted block correction value.

In 10B werden bei einem Speicherlesen sämtliche Vorrichtungsdatenblöcke für eine Speicher-Line entschlüsselt. Klartext jedes Vorrichtungsblocks wird dann zusammen einem XOR-Vorgang unterzogen und mit dem entschlüsselten Blockkorrekturwert 1010B verglichen. Jede Vorrichtung von Daten 1002B kann entschlüsselt werden, bevor der Klartext 1004B einem XOR-Vorgang unterzogen wird, um einen XOR-ausgeführten Klartext 1006B zu erzeugen. Bei manchen Beispielen kann der verschlüsselte Blockkorrekturwert 1008B entschlüsselt werden, um einen entschlüsselten Blockkorrekturwert 1010B zu erzeugen, der mit dem XOR-ausgeführten Klartext 1006B verglichen wird. Bei manchen Beispielen kann, wenn der entschlüsselte Wert von 1010B und 1006B nicht übereinstimmt, der XOR-ausgeführte Klartext 1006B einem XOR-Vorgang mit dem entschlüsselten Blockkorrekturwert 1010B unterzogen werden, während eine Vorrichtung/ein Block auf einmal von der 1006B-Berechnung ausgelassen wird. Der resultierende Blockkorrekturwert wird dann verschlüsselt, um den Datenblockwert der ursprünglichen verschlüsselten fehlerhaften Vorrichtung zu produzieren. Dieser Wert wird dann für den Datenblock der ausgelassenen Vorrichtung substituiert und der MAC wird neuberechnet und mit dem separat gespeicherten MAC verglichen, bis der Datenblock der fehlerhafte Vorrichtung identifiziert und korrigiert ist. Bei manchen Beispielen sollte, selbst wenn der MAC besteht, der Blockkorrekturwert entrollen oder einen Nullwert als ein Ergebnis eines XOR-Vorgangs erzeugen, wenn die Blöcke/Vorrichtungen transformiert und einem XOR-Vorgang mit dem ursprünglichen Blockkorrekturwert unterzogen werden.In 10B In a memory read, all device data blocks for a memory line are decrypted. The plaintext of each device block is then XORed together with the decrypted block correction value 1010B compared. Every device of data 1002B can be decrypted before the plaintext 1004B an XOR operation to get an XOR-executed plaintext 1006B to create. In some examples, the encrypted block correction value 1008B be decrypted to a decrypted block correction value 1010B to generate that with the XOR-executed plaintext 1006B is compared. In some examples, if the decrypted value of 1010B and 1006B does not match the XOR-executed plaintext 1006B an XOR operation with the decrypted block correction value 1010B be subjected to one device / block at a time by the 1006B Calculation is omitted. The resulting block correction value is then encrypted to produce the data block value of the original encrypted failed device. This value is then substituted for the data block of the omitted device and the MAC is recalculated and compared with the separately stored MAC until the data block of the failed device is identified and corrected. In some examples, even if the MAC exists, the block correction value should unroll or generate a null value as a result of an XOR operation as the blocks / devices are transformed and subjected to an XOR operation with the original block correction value.

Bei manchen Ausführungsformen können hier beschriebene Techniken auch einen Replay-Schutz bereitstellen, selbst wenn mehrere Schlüssel (MKTME) verwendet wurden, um die Daten zu AES-XTS-verschlüsseln. Zum Beispiel kann der MAC-Verwalter 120 periodisch die MAC-Werte mit einem einzigartigen Schlüssel als neuem Schlüssel versehen, wobei der MAC unter Verwendung des MKTME-AES-XTS-Geheimcodetexts und eines einzigartigen MAC-Schlüssels neuberechnet wird. Das Versehen mit einem neuen Schlüssel kann mit einer Speicherauffrischung zusammenfallen, in der der Speicher gelesen wird, der MAC mit einem alten Schlüssel berechnet wird, mit dem alten gespeicherten MAC für die gleiche Speicher-Line verglichen wird und, falls diese Werte übereinstimmen, der MAC mit dem neuen Schlüssel neuberechnet wird, bevor der neue MAC zurück in den Speicher geschrieben wird. Bei manchen Beispielen können Techniken ein Konstrukt verwenden, wie etwa ICV, das gleich einem HMACrk(Ck)-XOR-AESk(Adresse) ist. Dieses Konstrukt ermöglicht es, einen Schlüssel rk für den HMAC aufzufrischen. Dies kombiniert den MAC über den Datengeheimcodetext (Ck) von einem bestimmten Domänenschlüssel (k) und einen schlüsselabhängigen Test unter Verwendung des Tweak (XTS-Tweak, der die Adresse verwendet) unabhängig.In some embodiments, techniques described herein may also provide replay protection even when multiple keys (MKTME) have been used to encrypt the data to AES XTS. For example, the MAC administrator 120 periodically provide the MAC values with a unique key as a new key, the MAC being recalculated using the MKTME AES XTS secret code text and a unique MAC key. The addition of a new key may coincide with a memory refresh in which the memory is read, the MAC is calculated with an old key, compared with the old stored MAC for the same memory line and, if these values match, the MAC is recalculated with the new key before the new MAC is written back to memory. In some examples, techniques may use a construct, such as ICV, which is equal to an HMACrk (Ck) XOR AESk (address). This construct makes it possible to refresh a key rk for the HMAC. This independently combines the MAC via the data secret code text (Ck) from a particular domain key (k) and a key-dependent test using the tweak (XTS tweak that uses the address).

Bei diesem Beispiel wird, falls ein Gegner oder nichtautorisierter Benutzer Inhalt von einer anderen Schlüsseldomäne für die gleiche Speicheradresse wiedereinspielt, der HMAC über den Geheimcodetext korrekt berechnen, aber der adressenbasierte Tweak, der den momentanen Schlüsseldomänenschlüssel k verwendet, wird bei einem Speicherlesen nicht übereinstimmen. Der MAC-Verwalter 120 kann den alten HMAC (unter Verwendung des vorherigen Auffrischungsschlüssels rk) über die Geheimcodetext-Daten-Cache-Line berechnen, einen XOR-Vorgang der Daten-Cache-Line-Inhalte von dem gespeicherten ICV durchführen und an ihm einen XOR-Vorgang mit dem neuen HMAC unter Verwendung des aufgefrischten Schlüssels durchführen.In this example, if an adversary or unauthorized user re-loads content from another key domain for the same memory address, the HMAC will correctly compute over the secret code text, but the address-based tweak using the current key domain key k will not match on a memory read. The MAC administrator 120 may compute the old HMAC (using the previous update key rk) via the secret code text data cache line, XOR the data cache line contents from the stored ICV, and perform an XOR operation on it with the new one Perform HMAC using the refreshed key.

Bei manchen Ausführungsformen kann der MAC-Verwalter 120 ein alternatives Konstrukt verwenden, um einen MAC mit einem neuen Schlüssel zu versehen. Zum Beispiel kann der MAC-Verwalter 120 das Konstrukt ICV verwenden, das gleich HMACrk(Ck)-XOR-HMACk(Adresse) ist. Dieses Konstrukt stellt eine Geheimcodetextfehlerdetektion bereit, ist über eine Schlüsseldomänenfehlerdetektion skalierbar und kann zum Begrenzen von Wiedereinspielen ohne zusätzliche MAC-Schlüssel auffrischen.In some embodiments, the MAC manager 120 use an alternative construct to provide a MAC with a new key. For example, the MAC administrator 120 use the construct ICV equal to HMACrk (Ck) -XOR-HMACk (address). This construct provides secret code text error detection, is scalable via key domain error detection, and can refresh to limit replay without additional MAC keys.

Bei einer anderen Ausführungsform kann der MAC-Verwalter 120 das Konstrukt ICV verwenden, das gleich ENCRYPTrk (SHA3(Ck, TWEAKk)) ist, um MAC-Werte mit neuen Schlüsseln zu versehen. Hier kann ENCRYPT ein Geheimcode mit kleinem Block (z. B. unter anderem SIMON) sein, der die gleiche Größe wie der abgeschnittene SHA3-HMAC (z. B. 32 Bit oder 64 Bit usw.) aufweist, wobei der HMAC mit dem Auffrischungsschlüssel rk verschlüsselt wird. Der HMAC enthält auch einen XTS-basierten Tweak (z. B. eine AESverschlüsselte Speicheradresse basierend auf dem Datenverschlüsselungsschlüssel) zusätzlich zu dem Geheimcodetext basierend auf dem Datenverschlüsselungsschlüssel k. Dies ermöglicht, dass der ICV sowohl domänenübergreifende Angriffe verhindert als auch an die Speicheradresse/-stelle gebunden ist, wo die Daten physisch gespeichert sind. Der Tweak-Vorgang kann der gleiche sein, wie er zum XTS-Verschlüsseln der Daten verwendet wird, um Ck zu produzieren, aber ein unterschiedlicher Tweak-Versatz kann ausschließlich für diesen Vorgang verwendet werden (z. B. basierend auf einem erweiterten Adressenwert, um einen zusätzlichen einzigartigen Tweak-Wert aus den Tweaks zu produzieren, die zum Verschlüsseln der Daten-Line verwendet werden). Gleichermaßen können andere kryptografische Schlüsselableitungstechniken anstelle des Tweak verwendet werden, um einen datenverschlüsselungsschlüsselabhängigen HMAC zu produzieren. Bei manchen Beispielen ist der auf dem Datenverschlüsselungsschlüssel k basierte TWEAKk effektiv eine Schlüsselableitungsfunktion, die bewirkt, dass der SHA3-Hash-Algorithmus einen MAC ausgibt, der dann abgeschnitten werden kann. Der Vorteil des Verwendens des Tweak mit dem Verschlüsselungsschlüssel besteht darin, dass er die Notwendigkeit beseitigt, separate Schlüssel zum Berechnen des MAC zu speichern. Stattdessen kann der Verschlüsselungsschlüssel durch eine Schlüsselableitungsfunktion wiederverwendet werden, die die Speicheradresse (mit Padding) für die verschlüsselte Daten-Line (Ck) unter Verwendung des Verschlüsselungsschlüssels k verschlüsselt. Gleichermaßen kann eine beliebige sichere Hash-Funktion anstelle von SHA3 verwendet werden und kann eine beliebige Schlüsselableitungsfunktion anstelle des TWEAK verwendet werden.In another embodiment, the MAC manager 120 use the construct ICV, which is equal to ENCRYPTrk (SHA3 (Ck, TWEAKk)), to add new keys to MAC values. Here, ENCRYPT may be a small-block secret code (eg, SIMON, among others) having the same size as the truncated SHA3-HMAC (eg, 32-bit or 64-bit, etc.) with the HMAC with the refresh key rk is encrypted. The HMAC also includes an XTS-based tweak (eg, an AES encrypted memory address based on the data encryption key) in addition to the secret code text based on the data encryption key k. This allows the ICV to both prevent cross-domain attacks and bind to the memory address / location where the data is physically stored. The tweak can be the same as it used to encrypt the XTS Data is used to produce Ck, but a different tweak offset can be used exclusively for this operation (eg, based on an extended address value to produce an additional unique tweak value from the tweaks that are used to encrypt the Data-line used). Likewise, other cryptographic key derivation techniques may be used in place of the tweak to produce a data encryption key dependent HMAC. In some examples, the TWEAKk based on the data encryption key k is effectively a key derivation function that causes the SHA3 hash algorithm to issue a MAC that can then be truncated. The advantage of using the tweak with the encryption key is that it eliminates the need to store separate keys for computing the MAC. Instead, the encryption key may be reused by a key derivation function that encrypts the memory address (padding) for the encrypted data line (Ck) using the encryption key k. Likewise, any secure hash function can be used instead of SHA3, and any key derivation function can be used instead of the TWEAK.

Ein Replay/Version-Baum kann auch mit diesem Konstrukt verwendet werden. Hier sind die eingebetteten MACs die ECC-Speicher-MACs, wie zuvor beschrieben. Der MAC des Replay-Baums kann einen Elternzählerwert für die Cache-Line beinhalten. Ein Wurzel-Zähler/Nonce (oder Zähler/Nonces für mehrere Speichergebiete) kann auch in der Hardware, auf dem Die, eingebettet sein. Die erste Ebene in dem Baum in dem Speicher enthält eine Cache-Line mit einem Satz von Zähler/Nonce-Werten und dem MAC in dem ECC-Speicher. Dieser MAC wird über sämtliche Zählerwerte, die die Cache-Line umfassen, und den assoziierten Wurzel-Zähler/Nonce berechnet, der auf dem Die gespeichert ist. Jeder Zähler/Nonce-Wert auf der Line ist ein Elternteil für die nächste Ebene des Baums. Die nächste Ebene des Baums ist eine Line mit Zähler/Nonce-Werten, wobei wieder der MAC in dem ECC-Speicher sämtliche Zähler/Nonce-Werte in der Line und einen einzigen Eltern-Nonce/Zähler von der vorherigen Line in dem Baum hasht. Die letzte Ebene/Blätter des Baums bestehen aus der Daten-Line und ihrem MAC in dem ECC-Speicher, wie zuvor beschrieben, wobei der eine Unterschied ist, dass der MAC auch über den Eltern-Zähler/Nonce-Wert gehasht wird. Auf diese Weise kann ein Replay verhindert werden, da jedes Mal, wenn Daten in den Speicher geschrieben werden, der Wurzelzähler und alle Zählerwerte in dem Zweig des Zähler/Nonce-Baums, die zu der aktualisierten Daten-Line führen, erhöht/aktualisiert werden und sämtliche betroffenen MACs in dem ECC-Speicher neuberechnet werden. Bei einem Speicherlesen werden die MACs für den Zweig des Baums verifiziert, der mit der gelesenen Daten-Line in Zusammenhang steht, indem überprüft wird, dass die Zähler/Nonce-Werte korrekt/nichtmodifiziert sind. Die MAC-Werte können mit einem anderen geheimen Schlüssel als dem Schlüssel, der zum Verschlüsseln der Daten-Lines verwendet wird, und dem MAC, der über den AES-XTS-Geheimcodetext der Daten-Line berechnet wird, berechnet werden, wodurch ermöglicht wird, dass unterschiedliche Daten mit unterschiedlichen Schlüsseln, wie etwa MKTME, verschlüsselt werden.A replay / version tree can also be used with this construct. Here, the embedded MACs are the ECC memory MACs, as previously described. The MAC of the replay tree may include a parent counter value for the cache line. A root counter / nonce (or counter / nonces for multiple memory areas) may also be embedded in the hardware on which the. The first level in the tree in memory contains a cache line with a set of counter / nonce values and the MAC in the ECC memory. This MAC is calculated over all counter values that comprise the cache line and the associated root counter / nonce stored on the die. Each counter / nonce value on the line is a parent for the next level of the tree. The next level of the tree is a line with counter / nonce values, again with the MAC in the ECC memory hashing all counter / nonce values in the line and a single parent nonce / counter from the previous line in the tree. The last level / leaves of the tree consist of the data line and its MAC in the ECC memory, as previously described, the one difference being that the MAC is also hashed over the parent counter / nonce value. In this way, replay can be prevented because each time data is written to memory, the root counter and all counter values in the branch of the counter / nonce tree leading to the updated data line are increased / updated and all affected MACs in the ECC memory are recalculated. In a memory read, the MACs for the branch of the tree associated with the read data line are verified by verifying that the counter / nonce values are correct / unmodified. The MAC values can be calculated with a different secret key than the key used to encrypt the data lines and the MAC calculated via the AES-XTS secret code text of the data line, thereby allowing that different data is encrypted with different keys, such as MKTME.

Bei manchen Ausführungsformen können die ECC-/Integritätswerte auch in separaten Speicherstellen gespeichert werden, so dass sie nicht das Hinzufügen von physischem/physischen ECC-Speicher/ECC-DIMMs erfordern. Zusätzliche Speicher-Lese/Schreib-Vorgänge werden verwendet werden, um die ECC-/Integritätswerte in diesem Fall aus den separaten Speicherstellen abzurufen. Zum Beispiel kann das ECC-Korrekturfeld erweitert werden, um sowohl einen Speicher zu korrigieren als auch ein HMAC zum Detektieren von Fehlern zu sein. Das Verwenden von Entropietests zum Validieren, welche Vorrichtung sich wahrscheinlich in einem Fehlerzustand befindet, beseitigt die Notwendigkeit, irgendwelche anderen Werte zu speichern, wodurch die Hälfte des ECC-Speicher-Overheads eingespart wird und Kosten reduziert werden.In some embodiments, the ECC / integrity values may also be stored in separate memory locations so that they do not require the addition of physical / physical ECC memory / ECC DIMMs. Additional memory read / write operations will be used to retrieve the ECC / integrity values from the separate memory locations in this case. For example, the ECC correction field may be extended to both correct a memory and to be an HMAC for detecting errors. Using entropy tests to validate which device is likely to be in an error state eliminates the need to store any other values, saving half of the ECC memory overhead and reducing costs.

11 veranschaulicht ein Blockdiagramm eines nichtflüchtigen computerlesbaren Mediums zum Verwalten verschlüsselter Daten. Auf das greifbare nichtflüchtige computerlesbare Medium 1100 kann durch einen Prozessor 1102 über eine Computerzwischenverbindung 1104 zugegriffen werden. Des Weiteren kann das greifbare nichtflüchtige computerlesbare Medium 1100 einen Code zum Anweisen des Prozessors 1102 dazu beinhalten, die Vorgänge des vorliegenden Verfahrens durchzuführen. 11 FIG. 12 illustrates a block diagram of a non-transitory computer-readable medium for managing encrypted data. FIG. The tangible nonvolatile computer-readable medium 1100 can through a processor 1102 via a computer interconnect 1104 be accessed. Furthermore, the tangible non-transitory computer-readable medium 1100 a code for instructing the processor 1102 to carry out the operations of the present method.

Die verschiedenen hier besprochenen Softwarekomponenten können auf dem greifbaren nichtflüchtigen computerlesbaren medium 1100 gespeichert werden, wie in 11 angegeben ist. Zum Beispiel kann ein MAC-Verwalter 1106 einen ersten Nachrichtenauthentifizierungscode (MAC) basierend auf in dem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichern. Bei manchen Ausführungsformen kann der MAC-Verwalter 1106 auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, und einen zweiten MAC basierend auf den in dem Systemspeicher gespeicherten Daten berechnen. Der MAC-Verwalter 1106 kann auch bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt, und den zweiten MAC mit einem Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den in dem Systemspeicher gespeicherten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann ein Entschlüsselungsverwalter 1108 die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln. Bei manchen Ausführungsformen kann ein Datensender 1110 die entschlüsselten Daten an einen Cache, der sich auf einem Prozessor 102 befindet, oder einen beliebigen anderen geeigneten Cache oder eine beliebige andere geeignete Speichervorrichtung übertragen.The various software components discussed herein may be stored on the tangible non-transitory computer-readable medium 1100, as in FIG 11 is specified. For example, a MAC administrator 1106 store a first message authentication code (MAC) in system memory based on data stored in the system memory in response to a write. In some embodiments, the MAC manager 1106 also detect a read corresponding to the data stored in the system memory and calculate a second MAC based on the data stored in the system memory. The MAC administrator 1106 may also determine that the second MAC does not match the first MAC, and the second MAC with a correction process recalculating, wherein the correction process comprises an XOR operation based on the data stored in the system memory and a replacement value for a system memory device. Furthermore, a decryption manager 1108 decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC. In some embodiments, a data transmitter 1110 the decrypted data to a cache residing on a processor 102 or any other suitable cache or storage device.

Alternativ dazu kann der MAC-Verwalter 1106 bei manchen Ausführungsformen einen verschlüsselten ersten Blockkorrekturwert basierend auf in dem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichern. Außerdem kann der MAC-Verwalter 1106 auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, und einen zweiten Blockkorrekturwert basierend auf den in dem Systemspeicher gespeicherten Daten berechnen, wobei der zweite Blockkorrekturwert, der basierend auf einem XOR-Vorgang berechnet wird, in dem Systemspeicher gespeicherte Klartextdaten umfasst. Bei manchen Ausführungsformen kann der MAC-Verwalter 1106 bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten Blockkorrekturwert übereinstimmt, und den zweiten Blockkorrekturwert mit einem Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf in dem Systemspeicher gespeicherten verschlüsselten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann der Entschlüsselungsverwalter 1108 die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite Blockkorrekturwert mit dem ersten Blockkorrekturwert übereinstimmt, entschlüsseln und kann der Datensender 1110 die entschlüsselten Daten an einen Cache übertragen.Alternatively, the MAC administrator 1106 in some embodiments, storing an encrypted first block correction value based on information stored in the system memory in the system memory in response to a write. In addition, the MAC administrator 1106 also detect a read corresponding to the data stored in the system memory and calculate a second block correction value based on the data stored in the system memory, wherein the second block correction value calculated based on an XOR operation includes plaintext data stored in the system memory. In some embodiments, the MAC manager 1106 determining that the second block correction value does not match a decrypted first block correction value and recalculating the second block correction value with a correction operation, the correction process comprising an XOR operation based on encrypted data stored in the system memory and a system memory device replacement value. Furthermore, the decryption manager 1108 the data stored in the system memory is decrypted and the data transmitter is capable of decoding in response to detecting that the recalculated second block correction value matches the first block correction value 1110 transmit the decrypted data to a cache.

Es versteht sich, dass eine beliebige geeignete Anzahl der in 11 gezeigten Softwarekomponenten in dem greifbaren, nichtflüchtigen computerlesbaren Medium 1100 enthalten sein kann. Des Weiteren kann eine beliebige Anzahl an in 11 nicht gezeigten zusätzlichen Softwarekomponenten innerhalb des greifbaren nichtflüchtigen computerlesbaren Mediums 1100 in Abhängigkeit von der speziellen Anwendung enthalten sein.It is understood that any suitable number of in 11 shown software components in the tangible, non-transitory computer-readable medium 1100 may be included. Furthermore, any number of in 11 not shown additional software components within the tangible non-transitory computer-readable medium 1100 be included depending on the particular application.

BEISPIEL 1EXAMPLE 1

Bei manchen Beispielen umfasst ein System zum Verwalten eines verschlüsselten Speichers einen Prozessor zum Speichern eines ersten Nachrichtenauthentifizierungscodes (MAC) basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher. Der Prozessor kann auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, einen zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen Daten berechnen und bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt. Des Weiteren kann der Prozessor auch den zweiten MAC anschließend an einen Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den aus dem Systemspeicher abgerufenen Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Außerdem kann der Prozessor die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln und die entschlüsselten Daten an einen Cache übertragen.In some examples, an encrypted memory management system includes a processor for storing a first message authentication code (MAC) based on data stored in system memory in response to a write to system memory. The processor may also detect a read corresponding to the data stored in the system memory, calculate a second MAC based on the data retrieved from the system memory, and determine that the second MAC does not match the first MAC. Further, the processor may also recalculate the second MAC subsequent to a correction process, wherein the correction process includes an XOR operation based on the data retrieved from the system memory and a replacement value for a system memory device. In addition, the processor may decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC and transmit the decrypted data to a cache.

Alternativ dazu oder zusätzlich umfasst der Korrekturvorgang Neuberechnen das zweiten MAC für mehrere Vorrichtungen des Systemspeichers. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, den XOR-Vorgang für jede der mehreren Vorrichtungen auszuführen, wobei der XOR-Vorgang auf dem Ersatzwert und den in jeder der mehreren Vorrichtungen ausschließlich einer Vorrichtung gespeicherten Daten basiert. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen nicht korrigierbaren Fehler als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC für jede Vorrichtung des Systemspeichers nicht mit dem ersten MAC übereinstimmt, zu erzeugen. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen Block der in dem Systemspeicher gespeicherten Daten zu entschlüsseln, wobei eine Größe des Blocks einer Größe einer Eingabe oder Ausgabe eines Blockgeheimcodes entspricht, zu bestimmen, dass eine Entropie eines Klartexts in dem entschlüsselten Block der Daten oberhalb eines Schwellenniveaus liegt, und den Korrekturbefehl auf jeder Vorrichtung in dem Systemspeicher, die einen Teil des Blocks der Daten speichert, durchzuführen. Alternativ dazu oder zusätzlich umfasst der Prozessor eine Logik zum Ausführen des Korrekturbefehls in einer parallelen Pipeline, wobei die parallele Pipeline Erzeugen des zweiten MAC mit dem Ersatzwert für jede Vorrichtung des Systemspeichers umfasst. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen Blockkorrekturwert zu erzeugen. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, den ersten MAC und den zweiten MAC als Reaktion auf ein Verstreichen einer vorbestimmten Zeitperiode mit einem neuen Schlüssel zu versehen.Alternatively, or in addition, the recalculate correction process includes the second MAC for a plurality of system memory devices. Alternatively, or in addition, the processor is configured to perform the XOR operation for each of the plurality of devices, wherein the XOR operation is based on the replacement value and the data stored in each of the plurality of device-only devices. Alternatively, or in addition, the processor is configured to generate an uncorrectable error in response to detecting that the recalculated second MAC for each device of the system memory does not match the first MAC. Alternatively, or in addition, the processor is configured to decrypt a block of the data stored in the system memory, wherein a size of the block corresponds to a size of an input or output of a block secret code, to determine that an entropy of a plaintext in the decrypted block of the data is above a threshold level, and to execute the correction command on each device in the system memory storing a portion of the block of data. Alternatively, or additionally, the processor includes logic to execute the correction instruction in a parallel pipeline, the parallel pipeline comprising generating the second MAC with the substitute value for each device of the system memory. Alternatively or additionally, the processor is configured to generate a block correction value. Alternatively, or in addition, the processor is configured to provide the first MAC and the second MAC with a new key in response to a lapse of a predetermined period of time.

BEISPIEL 2 EXAMPLE 2

Bei einer Ausführungsform umfasst ein System zum Verwalten verschlüsselter Daten einen Prozessor zum Speichern eines verschlüsselten ersten Blockkorrekturwerts basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher. Der Prozessor kann auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, und einen zweiten Blockkorrekturwert basierend auf den in dem Systemspeicher gespeicherten Daten berechnen, wobei der zweite Blockkorrekturwert, der basierend auf einem XOR-Vorgang berechnet wird, in dem Systemspeicher gespeicherte Klartextdaten umfasst. Außerdem kann der Prozessor bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten Blockkorrekturwert übereinstimmt, bestimmen, dass ein gespeicherter erster MAC-Wert nicht mit einem berechneten zweiten MAC übereinstimmt, und den zweiten Blockkorrekturwert mit einem Korrekturvorgang neuzuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf in dem Systemspeicher gespeicherten entschlüsselten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann der Prozessor die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten Blockkorrekturwert übereinstimmt, entschlüsseln und die entschlüsselten Daten an eine Cache-Vorrichtung übertragen.In one embodiment, a system for managing encrypted data includes a processor for storing an encrypted first block correction value based on data stored in system memory in response to a write to the system memory. The processor may also detect a read corresponding to the data stored in the system memory and calculate a second block correction value based on the data stored in the system memory, wherein the second block correction value calculated based on an XOR operation is stored in the system memory Plain text data includes. In addition, the processor may determine that the second block correction value does not match a decrypted first block correction value, determine that a stored first MAC value does not match a calculated second MAC, and recalculate the second block correction value with a correction operation, wherein the correction operation is an XOR. A process based on decrypted data stored in the system memory and a system memory device replacement value. Further, the processor may decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first block correction value and transmit the decrypted data to a cache device.

Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen ersten MAC basierend auf einem XOR-Vorgang zu erzeugen, der in dem Systemspeicher gespeicherte Geheimcodetextdaten umfasst. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, die in dem Systemspeicher gespeicherten Daten und den ersten Blockkorrekturwert zu entschlüsseln. Alternativ dazu oder zusätzlich umfasst das System eine einzige Vorrichtung in dem Systemspeicher zum Speichern des ersten Blockkorrekturwertes.Alternatively, or in addition, the processor is configured to generate a first MAC based on an XOR process that includes secret code text data stored in the system memory. Alternatively or additionally, the processor is configured to decrypt the data stored in the system memory and the first block correction value. Alternatively or additionally, the system includes a single device in the system memory for storing the first block correction value.

BEISPIEL 3EXAMPLE 3

Bei einem Beispiel umfasst ein Verfahren zum Verwalten eines verschlüsselten Speichers Speichern eines ersten Nachrichtenauthentifizierungscodes (MAC) basierend auf Daten, die in einem Systemspeicher gespeichert werden, als Reaktion auf einen Schreibvorgang in den Systemspeicher. Das Verfahren kann auch Detektieren eines Lesevorgangs, der den in dem Systemspeicher gespeicherten Daten entspricht, Berechnen eines zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen Daten und Bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt, beinhalten. Zusätzlich kann das Verfahren Neuberechnen des zweiten MAC anschließend an einen Korrekturvorgang beinhalten, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den Daten, die aus dem Systemspeicher abgerufen werden, und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann das Verfahren Entschlüsseln der in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, und Übertragen der entschlüsselten Daten an einen Cache beinhalten.In one example, a method for managing encrypted memory includes storing a first message authentication code (MAC) based on data stored in system memory in response to a write to system memory. The method may also include detecting a read corresponding to the data stored in the system memory, calculating a second MAC based on the data retrieved from the system memory, and determining that the second MAC does not match the first MAC. In addition, the method may include recalculating the second MAC subsequent to a correction process, the correction process including an XOR operation based on the data retrieved from the system memory and a system memory device replacement value. Furthermore, the method may include decrypting the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC and transmitting the decrypted data to a cache.

Alternativ dazu oder zusätzlich umfasst der Korrekturvorgang Neuberechnen des zweiten MAC für mehrere Vorrichtungen des Systemspeichers. Alternativ dazu oder zusätzlich beinhaltet das Verfahren Ausführen des XOR-Vorgangs für jede der mehreren Vorrichtungen, wobei der XOR-Vorgang auf dem Ersatzwert und den in jeder der mehreren Vorrichtungen ausschließlich einer Vorrichtung gespeicherten Daten basiert. Alternativ dazu oder zusätzlich beinhaltet das Verfahren Erzeugen eines nicht korrigierbaren Fehlers als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC für jede Vorrichtung des Systemspeichers nicht mit dem ersten MAC übereinstimmt. Alternativ dazu oder zusätzlich beinhaltet das Verfahren Entschlüsseln eines Blocks der in dem Systemspeicher gespeicherten Daten, wobei eine Größe des Blocks einer Größe einer Eingabe oder Ausgabe eines Blockgeheimcodes entspricht, Bestimmen, dass eine Entropie eines Klartexts in dem entschlüsselten Block der Daten oberhalb eines Schwellenniveaus liegt, und Durchführen des Korrekturbefehls auf jeder Vorrichtung in dem Systemspeicher, die einen Teil des Blocks der Daten speichert. Alternativ dazu oder zusätzlich beinhaltet das Verfahren Ausführen des Korrekturbefehls in einer parallelen Pipeline, wobei die parallele Pipeline Erzeugen des zweiten MAC mit dem Ersatzwert für jede Vorrichtung des Systemspeichers umfasst. Alternativ dazu oder zusätzlich beinhaltet das Verfahren Erzeugen eines Blockkorrekturwerts. Alternativ dazu oder zusätzlich beinhaltet das Verfahren Versehen des ersten MAC und des zweiten MAC mit einem neuen Schlüssel oder Neuverschlüsseln davon basierend auf einem neuen Schlüssel als Reaktion auf ein Verstreichen einer vorbestimmten Zeitperiode.Alternatively, or in addition, the correction process includes recalculating the second MAC for a plurality of system memory devices. Alternatively, or additionally, the method includes executing the XOR operation for each of the plurality of devices, wherein the XOR process is based on the substitute value and the data stored in each of the plurality of device-only devices. Alternatively, or additionally, the method includes generating an uncorrectable error in response to the detecting that the recalculated second MAC for each device of the system memory does not match the first MAC. Alternatively, or additionally, the method includes decrypting a block of the data stored in the system memory, wherein a size of the block corresponds to a size of an input or output of a block secret code, determining that an entropy of a plaintext in the decrypted block of the data is above a threshold level, and performing the correction command on each device in the system memory that stores a portion of the block of data. Alternatively, or additionally, the method includes executing the correction instruction in a parallel pipeline, the parallel pipeline comprising generating the second MAC with the substitute value for each device of the system memory. Alternatively, or additionally, the method includes generating a block correction value. Alternatively or additionally, the method includes providing the first MAC and the second MAC with a new key or re-encrypting it based on a new key in response to a lapse of a predetermined period of time.

BEISPIEL 4 EXAMPLE 4

Bei einer Ausführungsform umfasst ein Verfahren zum Verwalten verschlüsselter Daten Speichern eines verschlüsselten ersten Blockkorrekturwerts basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher. Das Verfahren kann auch Detektieren eines Lesevorgangs, der den in dem Systemspeicher gespeicherten Daten entspricht, und Berechnen eines zweiten Blockkorrekturwerts basierend auf den in dem Systemspeicher gespeicherten Daten beinhalten, wobei der zweite Blockkorrekturwert, der basierend auf einem XOR-Vorgang berechnet wird, in dem Systemspeicher gespeicherte Klartextdaten umfasst. Zusätzlich kann das Verfahren Bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten Blockkorrekturwert übereinstimmt, Bestimmen, dass ein gespeicherter erster MAC-Wert nicht mit einem berechneten zweiten MAC übereinstimmt, und Neuberechnen des zweiten Blockkorrekturwerts mit einem Korrekturvorgang beinhalten, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf in dem Systemspeicher gespeicherten entschlüsselten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann das Verfahren Entschlüsseln der in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten Blockkorrekturwert übereinstimmt, und Übertragen der entschlüsselten Daten an eine Cache-Vorrichtung beinhalten.In one embodiment, a method for managing encrypted data includes storing an encrypted first block correction value based on data stored in system memory in response to a write to the system memory. The method may also include detecting a read corresponding to the data stored in the system memory and calculating a second block correction value based on the data stored in the system memory, wherein the second block correction value calculated based on an XOR operation is in the system memory stored plaintext data. In addition, the method may determine that the second block correction value does not match a decrypted first block correction value, determine that a stored first MAC value does not match a calculated second MAC, and recalculate the second block correction value with a correction operation, wherein the correction process is an XOR Operation based on decrypted data stored in the system memory and a replacement value for a system memory device. Furthermore, the method may include decrypting the data stored in the system memory in response to detecting that the recalculated second MAC matches the first block correction value and transmitting the decrypted data to a cache device.

Alternativ dazu oder zusätzlich kann das Verfahren Erzeugen eines ersten MAC basierend auf einem XOR-Vorgang beinhalten, der in dem Systemspeicher gespeicherte Geheimcodetextdaten umfasst. Alternativ dazu oder zusätzlich kann das Verfahren Entschlüsseln der in dem Systemspeicher gespeicherten Daten und des ersten Blockkorrekturwerts beinhalten. Alternativ dazu oder zusätzlich kann das Verfahren Verwenden einer einzigen Vorrichtung in dem Systemspeicher zum Speichern des ersten Blockkorrekturwerts beinhalten.Alternatively, or in addition, the method may include generating a first MAC based on an XOR process that includes secret code text data stored in the system memory. Alternatively, or in addition, the method may include decrypting the data stored in the system memory and the first block correction value. Alternatively, or in addition, the method may include using a single device in the system memory to store the first block correction value.

BEISPIEL 5EXAMPLE 5

Bei einer Ausführungsform umfasst ein nichtflüchtiges computerlesbares Medium zum Verwalten eines verschlüsselten Speichers mehrere Befehle, die als Reaktion auf eine Ausführung durch einen Prozessor bewirken, dass der Prozessor einen ersten Nachrichtenauthentifizierungscode (MAC) basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichert. Der Prozessor kann auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, einen zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen Daten berechnen und bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt. Des Weiteren kann der Prozessor auch den zweiten MAC anschließend an einen Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den aus dem Systemspeicher abgerufenen Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Außerdem kann der Prozessor die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt, entschlüsseln und die entschlüsselten Daten an einen Cache übertragen.In one embodiment, a non-transitory computer readable medium for managing encrypted memory includes a plurality of instructions that, in response to execution by a processor, cause the processor to generate a first message authentication code (MAC) based on data stored in system memory in response to a write to the computer System memory stores. The processor may also detect a read corresponding to the data stored in the system memory, calculate a second MAC based on the data retrieved from the system memory, and determine that the second MAC does not match the first MAC. Further, the processor may also recalculate the second MAC subsequent to a correction process, wherein the correction process includes an XOR operation based on the data retrieved from the system memory and a replacement value for a system memory device. In addition, the processor may decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC and transmit the decrypted data to a cache.

Alternativ dazu oder zusätzlich umfasst der Korrekturvorgang Neuberechnen des zweiten MAC für mehrere Vorrichtungen des Systemspeichers. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, den XOR-Vorgang für jede der mehreren Vorrichtungen auszuführen, wobei der XOR-Vorgang auf dem Ersatzwert und den in jeder der mehreren Vorrichtungen ausschließlich einer Vorrichtung gespeicherten Daten basiert. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen nicht korrigierbaren Fehler als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC für jede Vorrichtung des Systemspeichers nicht mit dem ersten MAC übereinstimmt, zu erzeugen. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen Block der in dem Systemspeicher gespeicherten Daten zu entschlüsseln, wobei eine Größe des Blocks einer Größe einer Eingabe oder Ausgabe eines Blockgeheimcodes entspricht, zu bestimmen, dass eine Entropie eines Klartextes in dem entschlüsselten Block der Daten oberhalb eines Schwellenniveaus liegt, und den Korrekturbefehl auf jeder Vorrichtung in dem Systemspeicher, die einen Teil des Blocks der Daten speichert, durchzuführen. Alternativ dazu oder zusätzlich umfasst der Prozessor eine Logik zum Ausführen des Korrekturbefehls in einer parallelen Pipeline, wobei die parallele Pipeline Erzeugen des zweiten MAC mit dem Ersatzwert für jede Vorrichtung des Systemspeichers umfasst. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen Blockkorrekturwert zu erzeugen. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, den ersten MAC und den zweiten MAC als Reaktion auf ein Verstreichen einer vorbestimmten Zeitperiode mit einem neuen Schlüssel zu versehen.Alternatively, or in addition, the correction process includes recalculating the second MAC for a plurality of system memory devices. Alternatively, or in addition, the processor is configured to perform the XOR operation for each of the plurality of devices, wherein the XOR operation is based on the replacement value and the data stored in each of the plurality of device-only devices. Alternatively, or in addition, the processor is configured to generate an uncorrectable error in response to detecting that the recalculated second MAC for each device of the system memory does not match the first MAC. Alternatively, or in addition, the processor is configured to decrypt a block of the data stored in the system memory, wherein a size of the block corresponds to a size of an input or output of a block secret code, to determine that an entropy of a plaintext in the decrypted block of the data is above a threshold level, and to execute the correction command on each device in the system memory storing a portion of the block of data. Alternatively, or additionally, the processor includes logic to execute the correction instruction in a parallel pipeline, the parallel pipeline comprising generating the second MAC with the substitute value for each device of the system memory. Alternatively or additionally, the processor is configured to generate a block correction value. Alternatively, or in addition, the processor is configured to provide the first MAC and the second MAC with a new key in response to a lapse of a predetermined period of time.

BEISPIEL 6 EXAMPLE 6

Bei einer Ausführungsform umfasst ein nichtflüchtiges computerlesbares Medium zum Verwalten eines verschlüsselten Speichers mehrere Befehle, die als Reaktion auf eine Ausführung durch einen Prozessor bewirken, dass der Prozessor einen verschlüsselten ersten Blockkorrekturwert basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher speichert. Der Prozessor kann auch einen Lesevorgang detektieren, der den in dem Systemspeicher gespeicherten Daten entspricht, und einen zweiten Blockkorrekturwert basierend auf den in dem Systemspeicher gespeicherten Daten berechnen, wobei der zweite Blockkorrekturwert, der basierend auf einem XOR-Vorgang berechnet wird, in dem Systemspeicher gespeicherte Klartextdaten umfasst. Zusätzlich kann der Prozessor bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten Blockkorrekturwert übereinstimmt, bestimmen, dass ein gespeicherter erster MAC-Wert nicht mit einem berechneten zweiten MAC übereinstimmt, und den zweiten Blockkorrekturwert mit einem Korrekturvorgang neuberechnen, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf in dem Systemspeicher gespeicherten entschlüsselten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst. Des Weiteren kann der Prozessor die in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten Blockkorrekturwert übereinstimmt, entschlüsseln und die entschlüsselten Daten an eine Cache-Vorrichtung übertragen.In one embodiment, a non-transitory computer-readable medium for managing encrypted memory includes a plurality of instructions that cause the processor to store an encrypted first block correction value based on system-stored data in system memory in response to a write to system memory , The processor may also detect a read corresponding to the data stored in the system memory and calculate a second block correction value based on the data stored in the system memory, wherein the second block correction value calculated based on an XOR operation is stored in the system memory Plain text data includes. In addition, the processor may determine that the second block correction value does not match a decrypted first block correction value, determine that a stored first MAC value does not match a calculated second MAC, and recalculate the second block correction value with a correction operation, wherein the correction process is an XOR. A process based on decrypted data stored in the system memory and a system memory device replacement value. Further, the processor may decrypt the data stored in the system memory in response to detecting that the recalculated second MAC matches the first block correction value and transmit the decrypted data to a cache device.

Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, einen ersten MAC basierend auf einem XOR-Vorgang zu erzeugen, der in dem Systemspeicher gespeicherte Geheimcodetextdaten umfasst. Alternativ dazu oder zusätzlich ist der Prozessor dazu ausgelegt, die in dem Systemspeicher gespeicherten Daten und den ersten Blockkorrekturwert zu entschlüsseln. Alternativ dazu oder zusätzlich umfasst das System eine einzige Vorrichtung in dem Systemspeicher zum Speichern des ersten Blockkorrekturwerts.Alternatively, or in addition, the processor is configured to generate a first MAC based on an XOR process that includes secret code text data stored in the system memory. Alternatively or additionally, the processor is configured to decrypt the data stored in the system memory and the first block correction value. Alternatively or additionally, the system includes a single device in the system memory for storing the first block correction value.

Obwohl ein Ausführungsbeispiel des offenbarten Gegenstands unter Bezugnahme auf Block- und Flussdiagramme in 1-11 beschrieben ist, wird ein Durchschnittsfachmann sogleich erkennen, dass viele andere Verfahren zum Implementieren des offenbarten Gegenstands alternativ dazu verwendet werden können. Zum Beispiel kann die Reihenfolge einer Ausführung der Blöcke in Flussdiagrammen geändert werden und/oder können manche der Blöcke in beschriebenen Block-/Flussdiagrammen geändert, beseitigt oder kombiniert werden.Although one embodiment of the disclosed subject matter is described with reference to block and flow diagrams in FIG 1-11 One of ordinary skill in the art will readily recognize that many other methods for implementing the disclosed subject matter may alternatively be used. For example, the order of execution of the blocks in flowcharts may be changed and / or some of the blocks in described block / flow diagrams may be changed, eliminated or combined.

Bei der vorhergehenden Beschreibung wurden verschiedene Aspekte des offenbarten Gegenstands beschrieben. Zu Erklärungszwecken wurden spezielle Zahlen, Systeme und Konfigurationen dargelegt, um ein gründliches Verständnis des Gegenstands zu vermitteln. Jedoch ist es für einen Fachmann unter Zuhilfenahme dieser Offenbarung offensichtlich, dass der Gegenstand ohne diese speziellen Einzelheiten umgesetzt werden kann. In anderen Fällen wurden wohlbekannte Merkmale, Komponenten oder Module weggelassen, vereinfacht, kombiniert oder aufgeteilt, um den offenbarten Gegenstand nicht zu verschleiern.In the foregoing description, various aspects of the disclosed subject matter have been described. For purposes of explanation, specific numbers, systems, and configurations have been set forth in order to provide a thorough understanding of the subject matter. However, it will be apparent to those skilled in the art, with the aid of this disclosure, that the subject matter can be practiced without these specific details. In other instances, well-known features, components or modules have been omitted, simplified, combined or subdivided so as not to obscure the disclosed subject matter.

Verschiedene Ausführungsformen des offenbarten Gegenstands können in Hardware, Firmware, Software oder einer Kombination davon implementiert werden und können durch Bezugnahme auf oder in Verbindung mit Programmcode, wie etwa Befehlen, Funktionen, Prozeduren, Datenstrukturen, Logik, Anwendungsprogrammen, Gestaltungspräsentationen oder Formaten zur Simulation, Emulation und Fabrikation einer Gestaltung beschrieben werden, der, wenn auf ihn durch eine Maschine zugegriffen wird, dazu führt, dass die Maschine Aufgaben durchführt, abstrakte Datentypen oder Hardwarekontexte auf niedriger Ebene definiert oder ein Ergebnis produziert.Various embodiments of the disclosed subject matter may be implemented in hardware, firmware, software, or a combination thereof, and may be by reference to or in connection with program code, such as instructions, functions, procedures, data structures, logic, application programs, design presentations, or simulation, emulation and fabricating a design that, when accessed by a machine, causes the machine to perform tasks, define low-level abstract data types or hardware contexts, or produce a result.

Programmcode kann Hardware unter Verwendung einer Hardwarebeschreibungssprache oder einer anderen funktionalen Beschreibungssprache repräsentieren, die im Wesentlichen ein Modell davon bereitstellt, wie eine gestaltete Hardware erwartungsgemäß funktioniert. Programmcode kann Assembler- oder Maschinensprache oder Hardwaredefinitionssprachen sein oder Daten, die kompiliert und/oder interpretiert werden können. Des Weiteren ist es in der Technik üblich, von Software in einer Form oder einer anderen als eine Handlung vornehmend oder ein Ergebnis bewirkend zu sprechen. Solche Ausdrücke sind lediglich ein kurzschriftlicher Weg, eine Ausführung eines Programmcodes durch ein Verarbeitungssystem anzugeben, das bewirkt, dass ein Prozessor eine Handlung durchführt oder ein Ergebnis produziert.Program code may represent hardware using a hardware description language or other functional description language that essentially provides a model of how a designed hardware functions as expected. Program code may be assembly or machine language or hardware definition languages, or data that may be compiled and / or interpreted. Further, it is common in the art to speak of software in a form or other as an act or effect a result. Such terms are merely a shorthand way of indicating execution of program code by a processing system that causes a processor to perform an action or produce a result.

Programmcode kann in zum Beispiel flüchtigem und/oder nichtflüchtigem Speicher gespeichert werden, wie etwa Speicherungsvorrichtungen und/oder einem assoziierten maschinenlesbaren oder maschinenzugänglichen Medium, einschließlich eines Festkörperspeichers, Festplatten, Floppy-Disketten, einer optischen Speicherung, Bändern, Flash-Speicher, Speicher-Sticks, digitalen Video-Disks, digitalen Versatile-Discs (DVDs) usw., sowie exotischeren Medien, wie etwa einer maschinenzugänglichen biologischen Zustandsbewahrungsspeicherung. Ein maschinenlesbares Medium kann einen beliebigen greifbaren Mechanismus zum Speichern, Übertragen oder Empfangen von Informationen in einer Form beinhalten, die durch eine Maschine, wie etwa Antennen, optische Fasern, Kommunikationsschnittstellen usw., lesbar ist. Programmcode kann in der Form von Paketen, seriellen Daten, parallelen Daten usw. übertragen werden und kann in einem komprimierten oder verschlüsselten Format verwendet werden.Program code may be stored in, for example, volatile and / or nonvolatile memory, such as storage devices and / or an associated machine-readable or machine-accessible medium, including a solid state memory, hard disks, floppy disks, optical storage, tapes, flash memory, memory sticks , digital video discs, digital versatile discs (DVDs), etc., as well as more exotic media, such as machine-accessible biological condition preservation storage. A machine-readable medium may include any tangible mechanism for storing, transmitting, or receiving information in a form readable by a machine such as antennas, optical fibers, communication interfaces, and so on. Program code may be transmitted in the form of packets, serial data, parallel data, etc., and may be used in a compressed or encrypted format.

Programmcode kann in Programmen implementiert werden, die auf programmierbaren Maschinen, wie etwa mobilen oder stationären Computern, persönlichen digitalen Assistenten, Set-Top-Boxen, Mobiltelefonen und Pagern, und anderen elektronischen Vorrichtungen ausgeführt werden, die jeweils einen Prozessor, einen flüchtigen und/oder nichtflüchtigen Speicher, der durch den Prozessor lesbar ist, wenigstens eine Eingabevorrichtung und/oder eine oder mehrere Ausgabevorrichtungen beinhalten. Programmcode kann auf die Daten angewandt werden, die unter Verwendung der Eingabevorrichtung eingegeben werden, um die beschriebenen Ausführungsformen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf eine oder mehrere Ausgabevorrichtungen angewandt werden. Ein Durchschnittsfachmann versteht, dass Ausführungsformen des offenbarten Gegenstands mit verschiedenen Computersystemkonfigurationen umgesetzt werden können, einschließlich Mehrfachprozessor- oder Mehrfachkernprozessorsystemen, Minicomputern, Mainframe-Computern sowie allgegenwärtigen oder Miniaturcomputern oder -prozessoren, die in praktisch jeder Vorrichtung eingebettet sein können. Ausführungsformen des offenbarten Gegenstands können auch in verteilten Rechenumgebungen umgesetzt werden, bei denen Aufgaben durch ferne Verarbeitungsvorrichtungen durchgeführt werden können, die durch ein Kommunikationsnetz verknüpft sind.Program code may be implemented in programs executing on programmable machines, such as mobile or stationary computers, personal digital assistants, set-top boxes, cell phones and pagers, and other electronic devices, each having a processor, a volatile, and / or nonvolatile memory readable by the processor, including at least one input device and / or one or more output devices. Program code may be applied to the data input using the input device to perform the described embodiments and generate output information. The output information may be applied to one or more output devices. One of ordinary skill in the art will understand that embodiments of the disclosed subject matter may be implemented with various computer system configurations, including multiple processor or multi-core processor systems, minicomputers, mainframe computers, and ubiquitous or miniature computers or processors that may be embedded in virtually any device. Embodiments of the disclosed subject matter may also be practiced in distributed computing environments where tasks may be performed by remote processing devices that are linked by a communications network.

Obwohl Vorgänge als ein sequenzieller Prozess beschrieben sein können, können manche der Vorgänge tatsächlich parallel, gleichzeitig und/oder in einer verteilten Umgebung und mit einem Programmcode, der lokal und/oder fern zum Zugriff durch Einzel- oder Mehrfachprozessormaschinen gespeichert ist, durchgeführt werden. Außerdem kann bei manchen Ausführungsformen die Reihenfolge von Vorgängen umsortiert werden, ohne von der Idee des offenbarten Gegenstands abzuweichen. Programmcode kann durch oder in Verbindung mit eingebetteten Steuerungen verwendet werden.Although operations may be described as a sequential process, some of the operations may in fact be performed in parallel, concurrently, and / or in a distributed environment and with program code stored locally and / or remotely for access by single or multiple processor machines. Additionally, in some embodiments, the order of operations may be resorted without departing from the idea of the disclosed subject matter. Program code can be used by or in conjunction with embedded controllers.

Obwohl der offenbarte Gegenstand unter Bezugnahme auf veranschaulichende Ausführungsformen beschrieben wurde, soll diese Beschreibung nicht in einem beschränkenden Sinn aufgefasst werden. Verschiedene Modifikationen der veranschaulichenden Ausführungsformen sowie andere Ausführungsformen des Gegenstands, die für einen Fachmann auf dem Gebiet, auf das sich der offenbarte Gegenstand bezieht, offensichtlich sind, werden als innerhalb des Schutzumfangs des offenbarten Gegenstands liegend betrachtet.Although the disclosed subject matter has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications of the illustrative embodiments as well as other embodiments of the subject that will be apparent to those skilled in the art to which the disclosed subject matter pertains are considered to be within the scope of the disclosed subject matter.

Claims (23)

System zum Verwalten eines verschlüsselten Speichers, das Folgendes umfasst: ein Mittel zum Speichern eines ersten Nachrichtenauthentifizierungscodes (MAC) basierend auf Daten, die in einem Systemspeicher gespeichert sind, als Reaktion auf einen Schreibvorgang in den Systemspeicher; ein Mittel zum Detektieren eines Lesevorgangs, der den in dem Systemspeicher gespeicherten Daten entspricht; ein Mittel zum Berechnen eines zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen Daten; ein Mittel zum Bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt; ein Mittel zum Neuberechnen des zweiten MAC anschließend an einen Korrekturvorgang, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den aus dem Systemspeicher abgerufenen Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst; ein Mittel zum Entschlüsseln der in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt; und ein Mittel zum Übertragen der entschlüsselten Daten an einen Cache.A system for managing an encrypted memory, comprising: means for storing a first message authentication code (MAC) based on data stored in system memory in response to a write to system memory; means for detecting a read corresponding to the data stored in the system memory; means for calculating a second MAC based on the data retrieved from the system memory; means for determining that the second MAC does not match the first MAC; a means for recalculating the second MAC subsequent to a correction operation, the correction process comprising an XOR operation based on the data retrieved from the system memory and a replacement value for a system memory device; means for decrypting the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC; and means for transmitting the decrypted data to a cache. System nach Anspruch 1, wobei der Korrekturvorgang ein Mittel zum Neuberechnen des zweiten MAC für mehrere Vorrichtungen des Systemspeichers umfasst.System after Claim 1 wherein the correction process comprises means for recalculating the second MAC for a plurality of system memory devices. System nach Anspruch 2, das ein Mittel zum Ausführen des XOR-Vorgangs für jede der mehreren Vorrichtungen umfasst, wobei der XOR-Vorgang auf dem Ersatzwert und den in jeder der mehreren Vorrichtungen ausschließlich einer Vorrichtung gespeicherten Daten basiert.System after Claim 2 comprising means for performing the XOR operation for each of the plurality of devices, wherein the XOR operation is based on the substitute value and the data stored in each of the plurality of device-only devices. System nach Anspruch 1 oder 2, das ein Mittel zum Erzeugen eines nicht korrigierbaren Fehlers als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC für jede Vorrichtung des Systemspeichers nicht mit dem ersten MAC übereinstimmt, umfasst. System after Claim 1 or 2 in that means for generating an uncorrectable error in response to detecting that the recalculated second MAC for each device of the system memory does not match the first MAC comprises. System nach Anspruch 1 oder 2, das Folgendes umfasst: ein Mittel zum Entschlüsseln eines Blocks der in dem Systemspeicher gespeicherten Daten, wobei eine Größe des Blocks einer Größe einer Eingabe oder Ausgabe eines Blockgeheimcodes entspricht; ein Mittel zum Bestimmen, dass eine Entropie eines Klartexts in dem entschlüsselten Block der Daten oberhalb eines Schwellenniveaus liegt; und ein Mittel zum Durchführen des Korrekturbefehls auf jeder Vorrichtung in dem Systemspeicher, die einen Teil des Blocks der Daten speichert.System after Claim 1 or 2 method comprising: means for decrypting a block of the data stored in the system memory, a size of the block corresponding to a size of an input or output of a block secret code; means for determining that entropy of a plaintext in the decrypted block of the data is above a threshold level; and means for performing the correction command on each device in the system memory storing a portion of the block of data. System nach Anspruch 1 oder 2, das ein Mittel zum Ausführen des Korrekturbefehls in einer parallelen Pipeline umfasst, wobei die parallele Pipeline Erzeugen des zweiten MAC mit dem Ersatzwert für jede Vorrichtung des Systemspeichers umfasst.System after Claim 1 or 2 comprising means for executing the correction instruction in a parallel pipeline, the parallel pipeline comprising generating the second MAC with the substitute value for each device of the system memory. System nach Anspruch 1 oder 2, das ein Mittel zum Erzeugen eines Blockkorrekturwerts umfasst.System after Claim 1 or 2 comprising means for generating a block correction value. System nach Anspruch 1, das ein Mittel zum Versehen des ersten MAC und des zweiten MAC als Reaktion auf ein Verstreichen einer vorbestimmten Zeitperiode mit einem neuen Schlüssel umfasst.System after Claim 1 comprising means for providing the first MAC and the second MAC in response to a lapse of a predetermined time period with a new key. System nach Anspruch 8, das ein Mittel zum Versehen des ersten MAC und des zweiten MAC mit einem neuen Schlüssel basierend auf einer Speicherauffrischrate umfasst, wobei das Versehen mit einem neuen Schlüssel Folgendes umfasst: ein Mittel zum Detektieren eines zweiten Lesevorgangs; ein Mittel zum Vergleichen des ersten MAC mit einem zuvor gespeicherten Schlüssel; ein Mittel zum Neuberechnen des ersten MAC mit einem neuen Schlüssel; und ein Mittel zum Speichern des ersten MAC, der mit dem neuen Schlüssel verschlüsselt ist, in dem Systemspeicher.System after Claim 8 comprising means for providing the first MAC and the second MAC with a new key based on a memory refresh rate, wherein the providing with a new key comprises: means for detecting a second read operation; means for comparing the first MAC with a previously stored key; means for recalculating the first MAC with a new key; and means for storing the first MAC encrypted with the new key in the system memory. System zum Verwalten verschlüsselter Daten, das Folgendes umfasst: einen Prozessor, der zu Folgendem ausgelegt ist: Speichern eines verschlüsselten ersten Blockkorrekturwerts basierend auf in einem Systemspeicher gespeicherten Daten als Reaktion auf einen Schreibvorgang in den Systemspeicher; Detektieren eines Lesevorgangs, der den Daten entspricht, die in dem Systemspeicher gespeichert sind; Berechnen eines zweiten Blockkorrekturwertes basierend auf den in dem Systemspeicher gespeicherten Daten, wobei der zweite Blockkorrekturwert, der basierend auf einem XOR-Vorgang berechnet wird, in dem Systemspeicher gespeicherte Klartextdaten umfasst; Bestimmen, dass der zweite Blockkorrekturwert nicht mit einem entschlüsselten ersten Blockkorrekturwert übereinstimmt; Bestimmen, dass ein gespeicherter erster MAC-Wert nicht mit einem berechneten zweiten MAC übereinstimmt; Neuberechnen des zweiten Blockkorrekturwerts mit einem Korrekturvorgang, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf in dem Systemspeicher gespeicherten entschlüsselten Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst; Entschlüsseln der in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC-Wert mit dem ersten Blockkorrekturwert übereinstimmt; und Übertragen der entschlüsselten Daten an eine Cache-Vorrichtung.An encrypted data management system comprising: a processor designed to: Storing an encrypted first block correction value based on data stored in a system memory in response to a write to the system memory; Detecting a read corresponding to the data stored in the system memory; Calculating a second block correction value based on the data stored in the system memory, the second block correction value calculated based on an XOR operation comprising plaintext data stored in the system memory; Determining that the second block correction value does not match a decrypted first block correction value; Determining that a stored first MAC value does not match a calculated second MAC; Recalculating the second block correction value with a correction operation, the correction process comprising an XOR operation based on decrypted data stored in the system memory and a system memory device replacement value; Decrypting the data stored in the system memory in response to detecting that the recalculated second MAC value matches the first block correction value; and Transmitting the decrypted data to a cache device. System nach Anspruch 10, wobei der Prozessor dazu ausgelegt ist, den ersten MAC basierend auf einem XOR-Vorgang zu erzeugen, der in dem Systemspeicher gespeicherte Geheimcodetextdaten umfasst.System after Claim 10 wherein the processor is configured to generate the first MAC based on an XOR process comprising secret code text data stored in the system memory. System nach Anspruch 10, wobei der Prozessor dazu ausgelegt ist, die in dem Systemspeicher gespeicherten Daten und den ersten Blockkorrekturwert zu entschlüsseln.System after Claim 10 wherein the processor is configured to decrypt the data stored in the system memory and the first block correction value. System nach Anspruch 10, 11 oder 12, wobei das System eine einzige Vorrichtung in dem Systemspeicher zum Speichern des ersten Blockkorrekturwertes umfasst.System after Claim 10 . 11 or 12 wherein the system comprises a single device in the system memory for storing the first block correction value. Verfahren zum Verwalten eines verschlüsselten Speichers, das Folgendes umfasst: Speichern eines ersten Nachrichtenauthentifizierungscodes (MAC) basierend auf Daten, die in einem Systemspeicher gespeichert sind, als Reaktion auf einen Schreibvorgang in den Systemspeicher; Detektieren eines Lesevorgangs, der den in dem Systemspeicher gespeicherten Daten entspricht; Berechnen eines zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen Daten; Bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt; Neuberechnen des zweiten MAC anschließend an einen Korrekturvorgang, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den aus dem Systemspeicher abgerufenen Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst; Entschlüsseln der in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt; und Übertragen der entschlüsselten Daten an einen Cache.A method of managing an encrypted memory, comprising: storing a first message authentication code (MAC) based on data stored in system memory in response to a write to the system memory; Detecting a read corresponding to the data stored in the system memory; Calculating a second MAC based on the data retrieved from the system memory; Determining that the second MAC does not match the first MAC; Recalculating the second MAC subsequent to a correction process, the correction process including an XOR operation based on the data retrieved from the system memory and a replacement value for a system memory device; Decrypting the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC; and transmitting the decrypted data to a cache. Verfahren nach Anspruch 14, wobei der Korrekturvorgang Neuberechnen des zweiten MAC für mehrere Vorrichtungen des Systemspeichers umfasst.Method according to Claim 14 wherein the correction process comprises recalculating the second MAC for a plurality of system memory devices. Verfahren nach Anspruch 15, das Ausführen des XOR-Vorgangs für jede der mehreren Vorrichtungen umfasst, wobei der XOR-Vorgang auf dem Ersatzwert und den in jeder der mehreren Vorrichtungen ausschließlich einer Vorrichtung gespeicherten Daten basiert.Method according to Claim 15 , which comprises performing the XOR operation on each of the plurality of devices, wherein the XOR operation is based on the substitute value and the data stored in each of the plurality of device-only devices. Verfahren nach Anspruch 14 oder 15, das Erzeugen eines nicht korrigierbaren Fehlers als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC für jede Vorrichtung des Systemspeichers nicht mit dem ersten MAC übereinstimmt, umfasst.Method according to Claim 14 or 15 , generating an uncorrectable error in response to detecting that the recalculated second MAC for each device of the system memory does not match the first MAC. Verfahren nach Anspruch 14 oder 15, das Folgendes umfasst: Entschlüsseln eines Blocks der in dem Systemspeicher gespeicherten Daten, wobei eine Größe des Blocks einer Größe einer Eingabe oder Ausgabe eines Blockgeheimcodes entspricht; Bestimmen, dass eine Entropie eines Klartexts in dem entschlüsselten Block der Daten oberhalb eines Schwellenniveaus liegt; und Durchführen des Korrekturbefehls auf jeder Vorrichtung in dem Systemspeicher, die einen Teil des Blocks der Daten speichert.Method according to Claim 14 or 15 method comprising: decrypting a block of the data stored in the system memory, wherein a size of the block corresponds to a size of an input or output of a block secret code; Determining that an entropy of a plaintext in the decrypted block of the data is above a threshold level; and performing the correction command on each device in the system memory that stores a portion of the block of data. Verfahren nach Anspruch 14 oder 15, das Versehen des ersten MAC und des zweiten MAC mit einem neuen Schlüssel oder erneutes Verschlüsseln davon basierend auf einem neuen Schlüssel als Reaktion auf ein Verstreichen einer vorbestimmten Zeitperiode umfasst.Method according to Claim 14 or 15 that comprises providing the first MAC and the second MAC with a new key or re-encrypting it based on a new key in response to a lapse of a predetermined period of time. Nichtflüchtiges computerlesbares Medium zum Verwalten eines verschlüsselten Speichers, das mehrere Befehle umfasst, die als Reaktion auf eine Ausführung durch einen Prozessor den Prozessor zu Folgendem veranlassen: Speichern eines ersten Nachrichtenauthentifizierungscodes (MAC) basierend auf Daten, die in einem Systemspeicher gespeichert sind, als Reaktion auf einen Schreibvorgang in den Systemspeicher; Detektieren eines Lesevorgangs, der den in dem Systemspeicher gespeicherten Daten entspricht; Berechnen eines zweiten MAC basierend auf den aus dem Systemspeicher abgerufenen Daten; Bestimmen, dass der zweite MAC nicht mit dem ersten MAC übereinstimmt; Neuberechnen des zweiten MAC anschließend an einen Korrekturvorgang, wobei der Korrekturvorgang einen XOR-Vorgang basierend auf den aus dem Systemspeicher abgerufenen Daten und einem Ersatzwert für eine Vorrichtung des Systemspeichers umfasst; Entschlüsseln der in dem Systemspeicher gespeicherten Daten als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC mit dem ersten MAC übereinstimmt; und Übertragen der entschlüsselten Daten an einen Cache.A non-transitory computer-readable medium for managing an encrypted memory that includes a plurality of instructions that, in response to execution by a processor, cause the processor to: Storing a first message authentication code (MAC) based on data stored in system memory in response to a write to system memory; Detecting a read corresponding to the data stored in the system memory; Calculating a second MAC based on the data retrieved from the system memory; Determining that the second MAC does not match the first MAC; Recalculating the second MAC subsequent to a correction process, the correction process including an XOR operation based on the data retrieved from the system memory and a replacement value for a system memory device; Decrypting the data stored in the system memory in response to detecting that the recalculated second MAC matches the first MAC; and Transmitting the decrypted data to a cache. Nichtflüchtiges computerlesbares Medium nach Anspruch 20, wobei der Korrekturvorgang Neuberechnen des zweiten MAC für mehrere Vorrichtungen des Systemspeichers umfasst.Non-volatile computer readable medium after Claim 20 wherein the correction process comprises recalculating the second MAC for a plurality of system memory devices. Nichtflüchtiges computerlesbares Medium nach Anspruch 21, wobei der Prozessor zum Ausführen des XOR-Vorgangs für jede der mehreren Vorrichtungen ausgelegt ist, wobei der XOR-Vorgang auf dem Ersatzwert und den in jeder der mehreren Vorrichtungen ausschließlich einer Vorrichtung gespeicherten Daten basiert.Non-volatile computer readable medium after Claim 21 wherein the processor is configured to perform the XOR operation for each of the plurality of devices, wherein the XOR operation is based on the substitute value and the data stored in each of the plurality of device-only devices. Nichtflüchtiges computerlesbares Medium nach Anspruch 20 oder 21, wobei der Prozessor zum Erzeugen eines nicht korrigierbaren Fehlers als Reaktion auf das Detektieren, dass der neuberechnete zweite MAC für jede Vorrichtung des Systemspeichers nicht mit dem ersten MAC übereinstimmt, ausgelegt ist.Non-volatile computer readable medium after Claim 20 or 21 wherein the processor is configured to generate an uncorrectable error in response to detecting that the recalculated second MAC for each device of the system memory does not match the first MAC.
DE102018125786.4A 2017-11-17 2018-10-17 Encrypted system memory management Pending DE102018125786A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/816,901 2017-11-17
US15/816,901 US10594491B2 (en) 2015-12-24 2017-11-17 Cryptographic system memory management

Publications (1)

Publication Number Publication Date
DE102018125786A1 true DE102018125786A1 (en) 2019-05-23

Family

ID=66336541

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018125786.4A Pending DE102018125786A1 (en) 2017-11-17 2018-10-17 Encrypted system memory management

Country Status (2)

Country Link
CN (1) CN109800103A (en)
DE (1) DE102018125786A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321469B2 (en) 2019-06-29 2022-05-03 Intel Corporation Microprocessor pipeline circuitry to support cryptographic computing
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019128528A1 (en) * 2019-10-22 2021-04-22 Infineon Technologies Ag DATA CRYPTOGRAPHY DEVICES AND STORAGE SYSTEMS

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321469B2 (en) 2019-06-29 2022-05-03 Intel Corporation Microprocessor pipeline circuitry to support cryptographic computing
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11416624B2 (en) 2019-06-29 2022-08-16 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11580234B2 (en) * 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11620391B2 (en) 2019-06-29 2023-04-04 Intel Corporation Data encryption based on immutable pointers
US11768946B2 (en) 2019-06-29 2023-09-26 Intel Corporation Low memory overhead heap management for memory tagging
US11829488B2 (en) 2019-06-29 2023-11-28 Intel Corporation Pointer based data encryption
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing

Also Published As

Publication number Publication date
CN109800103A (en) 2019-05-24

Similar Documents

Publication Publication Date Title
DE102018125786A1 (en) Encrypted system memory management
US20220094553A1 (en) Cryptographic system memory management
DE102019102229A1 (en) Techniques for detecting and correcting errors in data
DE102018115491A1 (en) SYSTEM, APPARATUS AND METHOD FOR SIDE GRANULAR, SOFTWARE CONTROLLED MEMORY ENCRYPTION WITH SEVERAL KEYS
US10802910B2 (en) System for identifying and correcting data errors
US10303622B2 (en) Data write to subset of memory devices
DE102019109088A1 (en) KEY AND SENSITIVE DATA PROTECTION AGAINST ATTACKS IN A MICROPROCESSOR ARCHITECTURE
DE112017000220T5 (en) Effective secure data section encrypted with a secret key
EP3259698B1 (en) Autonomously booting system with a security module
US20140281784A1 (en) Systems and Methods for Data Repair
DE102013213568A1 (en) Secure storage and signature
DE102018115267A1 (en) TECHNOLOGIES FOR MEMORY PLAYBACK PREVENTION USING COMPRESSING ENCRYPTION
US10725861B2 (en) Error correction code memory security
US20170220257A1 (en) Memory device write based on mapping
DE102019128528A1 (en) DATA CRYPTOGRAPHY DEVICES AND STORAGE SYSTEMS
DE102019110440A1 (en) Replay protection for storage based on key refresh
DE112017005005T5 (en) SYSTEMS, DEVICES, AND METHOD FOR PLATFORMS SAFETY
DE112021000648T5 (en) STORAGE DEVICE RESISTANT TO CYBER ATTACKS AND MALFUNCTIONS
DE102020134250A1 (en) System, apparatus and method for providing protection against silent data corruption in a connection
DE102019119831A1 (en) Encryption circuit for performing virtual encryption operations
DE102016102590A1 (en) DATA PROCESSING DEVICES AND METHOD FOR RECONSTRUCTING A PUF VALUE
DE102005031611B4 (en) Proof of a change in the data of a data record
DE102018105848B4 (en) CPU error correction during erasure code encoding
US11528126B2 (en) Interface for revision-limited memory
DE10316951A1 (en) Method for checking the data integrity of software in ECUs