DE102019110501A1 - Fehlerkorrekturcode-speichersicherheit - Google Patents

Fehlerkorrekturcode-speichersicherheit Download PDF

Info

Publication number
DE102019110501A1
DE102019110501A1 DE102019110501.3A DE102019110501A DE102019110501A1 DE 102019110501 A1 DE102019110501 A1 DE 102019110501A1 DE 102019110501 A DE102019110501 A DE 102019110501A DE 102019110501 A1 DE102019110501 A1 DE 102019110501A1
Authority
DE
Germany
Prior art keywords
data
ecc
memory
area
icv
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
DE102019110501.3A
Other languages
English (en)
Inventor
Mikhail Grinchuk
Anatoli Bolotov
Rajat Agarwal
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102019110501A1 publication Critical patent/DE102019110501A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Abstract

Hierin werden ein System und Techniken für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit beschrieben. Eine Schreibanforderung, die Daten enthält, wird empfangen. Ein Integritätsprüfwert (ICV) wird für die Daten berechnet. Dann wird die Schreibanforderung durchgeführt, enthaltend, eine Repräsentation der Daten in einen Datenbereich im Speicher zu schreiben und den ICV in einen ECC-Bereich im Speicher zu schreiben. Hier ist der Datenbereich durch einen Host adressierbar und der ECC-Bereich korrespondiert mit dem Datenbereich über Hardware des Speichers.

Description

  • TECHNISCHES GEBIET
  • Hierin beschriebene Ausführungsformen betreffen allgemein Speichervorrichtungen und insbesondere Fehlerkorrekturcode- bzw. ECC-Speichersicherheit.
  • HINTERGRUND
  • Computersysteme sind zu einem Bestandteil des täglichen Lebens geworden. Da Computersysteme in mehr Vorrichtungen in einer größeren Anzahl von kritischen Rollen gefunden werden, ist Datenintegrität einschließlich von Sicherheit zu einer wichtigeren Problematik für Systemdesigner geworden. Sicherheitsbedrohungen versuchen allgemein, die Kontrolle über das System oder die darin gehaltenen Informationen zu übernehmen. Während Werkzeuge wie Verschlüsselung von Netzwerkverkehr wirksam gegenüber Sicherheitsbedrohungen sind, die ihren Ursprung außerhalb eines gegebenen Systems haben, attackieren einige Bedrohungen das Herz des Computersystems, indem sie versuchen, Informationen direkt aus den Prozessoren oder dem Betriebsspeicher des Computersystems (z. B. Speicher, der verwendet wird, einen gegenwärtigen Systemstatus zu halten, wie Direktzugriffspeicher (RAM) oder dergleichen) zu erlangen.
  • Die Anzahl von Hardwareangriffen (sowohl invasiv als auch nicht invasiv) nimmt zu, in der Hoffnung, Zugriff auf die große Menge sensitiver Daten in Computersystemen zu erlangen, die außerhalb der vertrauenswürdigen Zone eines Prozessors gehalten wird (z. B. im dynamischen RAM (DRAM)). Zum Bekämpfen dieser Bedrohungen werden sichere Architekturen und kryptographische Verfahren zum Schutz von Speicheroperationen implementiert, um zu verhindern, dass ein Eindringling die im Speicher gespeicherten Daten bösartig manipuliert oder Zugriff darauf erlangt. Die sicheren Architekturen verwenden im Allgemeinen drei kryptographische Grundelemente: Vertraulichkeit; Integrität; und Neuheit.
  • Vertraulichkeit gewährleistet die Privatsphäre von Daten durch Verschlüsselung von Daten, bevor sie in den Speicher geschrieben werden, und Entschlüsseln der Daten aus dem Speicher. Integrität gewährleistet, dass die gespeicherten Daten nicht modifiziert (z. B. korrumpiert oder verfälscht) wurden. Neuheit gewährleistet, dass Daten derart versioniert werden, dass alte Daten nicht wiederverwendet werden können (z. B. verhindert sie Wiederholungsangriffe, bei denen gültige, aber alte Daten von einem Angreifer verwendet werden).
  • Zusätzlich zu Sicherheit wurde Schutz gegen Datenkorruption, wie sie durch energetisierte Partikel verursacht werden kann, ebenfalls in Speichern verwendet. Speicher wird häufig als eine Kombination einer Steuerung und von Datenspeicherraum entworfen. Eine anfordernde Entität (z. B. Benutzer, Programm, Host usw.) sendet Lese- oder Schreibanforderungen an eine Steuerung, die dann die Daten in dem Speichermedium speichert. Operativ wird Speicher als eine Anordnung von adressierbaren Blöcken einer gegebenen Größe (z. B. 512 Bits) dargestellt. Lese- und Schreiboperationen beinhalten allgemein, dass eine oder mehrere Adressen der Steuerung übergeben werden, wobei die Steuerung dann jede Anforderung in eine oder mehrere Anforderungen an den Datenspeicherraum umsetzt. Als Teil dieser Umwandlung kann die Steuerung die Daten modifizieren, zum Beispiel durch Verschlüsseln der Daten oder Berechnen von Fehlerkorrekturcodes (ECCs).
  • Der Datenspeicherraum wird häufig als eine Anordnung von Speicherblöcken angesehen, mit grundlegenden Operationen, die Lesen und Schreiben eines gesamten Blocks auf einmal enthalten. ECC-Speicher enthält typischerweise zusätzlichen Raum zum Halten von ECCs, was in größeren Speicherblöcken für die grundlegenden Operationen resultiert. Zum Beispiel kann ein Speicherblock 512 Bits für die Daten und 64 oder 128 Bits für die ECC-Daten enthalten. Im Allgemeinen ist der Speicherraum derart konzipiert, dass der zusätzliche ECC-Bereich zusammen mit den Daten abgerufen wird (z. B. über eine parallele integrierte Schaltung (IC), die an die Speicherblockadresse gebunden ist, oder über größere Speicherblöcke usw.). Die ECC-Codes stellen im Allgemeinen Fehlerdetektion und möglicherweise Fehlerwiederherstellung bereit. In einigen Fällen führt die Steuerung die Fehlerdetektion oder -korrektur basierend auf den ECC-Codes als Bestandteil der Erfüllung einer Leseanforderung durch.
  • Figurenliste
  • In den Zeichnungen, die nicht notwendigerweise maßstabsgerecht gezeichnet sind, können gleiche Zahlen ähnliche Komponenten in verschiedenen Ansichten bezeichnen. Gleiche Zahlen mit verschiedenen Buchstaben-Suffixen können verschiedene Instanzen ähnlicher Komponenten repräsentieren. Die Zeichnungen veranschaulichen verschiedene in der vorliegenden Patentschrift diskutierten Ausführungsformen als Beispiele, aber nicht als Einschränkungen.
    • 1 zeigt ein Blockdiagramm eines Beispiels einer Umgebung, die ein System für ECC-Speichersicherheit gemäß einer Ausführungsform enthält.
    • Die 2A-2C zeigen die Anordnung von Daten und des ICV im Speicher gemäß mehreren Ausführungsformen.
    • 3 zeigt ein Beispiel eines Komponentenflusses zum Platzieren von ICV-Daten in einem ECC-Bereich des Speichers und Verlagern von ECC-Daten zu einem anderen Speicherabschnitt gemäß einer Ausführungsform.
    • 4 zeigt ein Beispiel eines Komponentenflusses zum Platzieren von ICV-Daten und ECC-Daten in einem ECC-Bereich des Speichers gemäß einer Ausführungsform.
    • 5 zeigt ein Beispiel eines Komponentenflusses zum Obfuskieren von Benutzerdaten und ECC-Daten, um den ICV über einen Datenbereich und einen ECC-Bereich des Speichers zu implementieren, gemäß einer Ausführungsform.
    • 6 zeigt ein Beispiel eines Komponentenflusses zum Deobfuskieren von Benutzerdaten und ECC-Daten aus einem ECC-Bereich des Speichers gemäß einer Ausführungsform.
    • Die 7A-7B zeigen eine Obfuskationsengine gemäß einer Ausführungsform.
    • 8 zeigt ein Ablaufdiagramm eines Beispiels eines Verfahrens für ECC-Speichersicherheit gemäß einer Ausführungsform.
    • 9 zeigt ein Blockdiagramm, das ein Beispiel einer Maschine darstellt, in der eine oder mehrere Ausführungsformen implementiert werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Im Allgemeinen ist, wenn Sicherheitstechniken auf ECC-Speicher angewandt werden, der Integritätsschutz eine separate und unabhängige Implementierung von Integritätsschutz. Zum Beispiel kann Integritätsschutz durch eine Hashfunktion h implementiert werden. Hier wird jedes Datenwort W von einem Integritätsprüfwert (ICV) begleitet, der von W und wahlweise von anderen Parametern wie eine Adresse A, ein Schlüssel K, eine Nonce N usw. abhängig ist. In diesem Beispiel ist der ICV das Ergebnis von h(W, A, K, N). ICVs sind im Allgemeinen kleiner als Daten (z. B. können ICVs 32 Bits oder 64 Bits betragen) und werden in die Wörter der gleichen Größe wie Datenwörter (z. B. 512 Bits) gruppiert, die in einem Datenbereich gespeichert werden, der an die Adresse des Datenworts gebunden ist (z. B. Zwischenspeicherzeile), zu dem sie gehören. Demzufolge ist ein ICV bezüglich eines an Adresse A gespeicherten Datenworts Teil eines Worts an einer Adresse A', die von A abhängig ist.
  • Im Allgemeinen entspricht ein authentifizierter Speicherzugriff dem nachstehenden Skript (einige Operationen können parallel durchgeführt werden):
Leseoperation an Adresse A:
     hole W = MEM [A]
           // einschließlich Fehlerkorrektur und
               Entschlüsselung
     berechne ICV = h(W, A, K, N)
     berechne A' basierend auf A
     hole W' = MEM [A ']
           // ebenfalls einschließlich Fehlerkorrektur und
               Entschlüsselung
      extrahiere STORED_ICV aus W'
           // Ort in W' ist von Adresse A abhängig
     wenn (ICV == STORED_ICV)
           gebe W zurück
           // Authentifizierung bestanden
           // und W ist das Ergebnis der
           //Leseoperation
      sonst
           berichte Authentifizierungsfehler
  • Ein Beispiel einer Schreiboperation ist wie folgt:
  • 
     Schreiboperation an Adresse A:
          schreibe Eingabedaten W in MEM[A]
               // einschließlich Berechnung von Paritätsbits
               // und Verschlüsselung
         berechne ICV = h(W, A, K, N)
         berechne A' basierend auf A
         hole W' = MEM [A ']
               // einschließlich Fehlerkorrektur und
               Entschlüsselung
          ersetze spezifischen Teil von W' durch ICV
               // Ort in W' ist von Adresse A abhängig
          schreibe W' in MEM[A']
               // einschließlich Berechnung von Paritätsbits
               // und Verschlüsselung
    Es ist zu beachten, dass jede Leseoperation zwei Speicherlesevorgänge (einen für die Daten und einen für den ICV) verwendet und jede Schreiboperation zwei Speicherschreibvorgänge (einen für die Daten und einen für den ICV) und einen Speicherlesevorgang (zum Abrufen der Zwischenspeicherzeile, in der der ICV gespeichert ist) verwendet.
  • Für ein geeignet gewähltes h schützt die vorstehende Technik gegen Spoofingangriffe - z. B. Ersetzen der Daten W an der Adresse A durch einen bösartigen Wert MW-, weil es berechnungstechnisch undurchführbar ist, Werte für MW zu finden, die h(W, A, K) == h(MW, A, K) befriedigen, wenn der Angreifer den Schlüssel K nicht kennt und die Funktion h eine kryptographische Einwegfunktion ist. Die beschriebene Technik schützt außerdem gegen Splicingangriffe - z. B. Ersetzen der Daten W an der Adresse A durch einen bösartig kopierten Wert MW von Adresse B - aus den vorstehend angeführten Gründen. Zum Schützen gegen Wiederholungsangriffe - Ersetzen der Daten W an der Adresse A durch bösartige Daten MW, die vorher an der Adresse A gespeichert wurden - können die ICV-Daten durch ICVs auf höherem Niveau geschützt werden, wobei das letzte Niveau in der Steuerung (z. B. in statischem RAM (SRAM) auf dem Chip) gehalten wird. Dies wird auch als ein Integritätsbaum (z. B. ein Merkle-Baum) bezeichnet.
  • Obwohl diese Techniken Sicherheitsrisiken wirksam entgegenwirken können, verschlechtern sie häufig die Speicherleistung und können einen großen Speicherungsmehraufwand beinhalten. Aufgrund dieser Leistungsprobleme wurde teilweise die Sicherheit von Speichersystemen reduziert und stattdessen für einen Ansatz „besser als nichts“ optiert, der heuristische Verfahren zum Detektieren von Datenänderungen oder zum Vermeiden von mehreren Leseoperationen des Speichers enthalten kann (um z. B. die Integrität von Daten zu gewährleisten).
  • Um diese Probleme anzugehen, werden die ECC-Fähigkeiten von Speicherhardware eingesetzt, um Integritätsprüfungen zu implementieren. Der ECC-Bereich von Speicher wird verwendet, ICV-Daten anstelle von oder zusätzlich zu ECC-Daten zu halten. Datenintegrität geht davon aus, dass aus dem Speicher gelesene Daten richtig und zuverlässig sind und nicht durch einen nicht autorisierten Dritten geändert wurden. Obwohl Integrität nicht das gleiche ist wie Fehlerdetektion und -korrektur (ECCs befassen sich mit Soft- oder Hard-Fehlern und ziehen keine bösartige Aktivität in Betracht), ist die Detektion von Datenänderung beiden Einrichtungen gemeinsam. Demgemäß bedeutet eine bestandene Integritätsprüfung ebenfalls, dass kein Fehler vorliegt (z. B. würde eine ECC-Prüfung ebenfalls bestanden werden). Da ICV-Prüfungen immer durchgeführt werden und Fehlerkorrektur nur durchgeführt wird, wenn eine ECC-Prüfung fehlschlägt, ist es wirksamer, den ECC-Bereich des ECC-Speichers zu verwenden, den ICV für ein Datenwort beim Lesen gleichzeitig abzurufen, weil das Abrufen des ECC in den meisten Fällen unnötig sein wird. In einem Beispiel kann der ECC verkürzt und zusammen mit dem ICV in dem ECC-Bereich gespeichert werden, oder der ECC kann in einem verschiedenen Datenbereich gespeichert werden (wie vorstehend unter Bezug auf traditionelle ICV-Implementierungen beschrieben). Diese Anordnungen resultieren in einer schnellen und effizienten Kombination von Integritätsprüfung und Fehlerkorrektur, die keine drastische Umgestaltung von Speichersteuerungen beinhaltet. Zusätzliche Einzelheiten und Beispiele werden nachstehend beschrieben.
  • 1 zeigt ein Blockdiagramm eines Beispiels einer Umgebung, die ein System 125 für ECC-Speichersicherheit gemäß einer Ausführungsform enthält. Das System 125 repräsentiert eine sichere oder vertrauenswürdige Zone eines Computersystems. Das System enthält einen Prozessor 120, einen Zwischenspeicher 115 (z. B. verwendet zum Beschleunigen des Prozessorzugriffs auf häufig verwendete Daten) und eine Speichersteuerung 110. Die Speichersteuerung 110 ist mit einem Speicher 105 verbunden.
  • Der Speicher 105 ist ein ECC-Speicher, der entworfen ist, Fehlerdetektion und -korrektur zu unterstützen, indem er dedizierte Hardware (z. B. Speicherraum, Bandbreite usw.) enthält, um das Abrufen von ECC-Daten zusammen mit Benutzerdaten zu ermöglichen. Dies kann über eine dedizierte IC an dem Speicher 105 zum Speichern von ECC-Daten, über physikalische Zwischenspeicherzeilen, die größer als eine durch den Prozessor 120 adressierbare Zwischenspeicherzeile sind, oder über mehrere andere Techniken (z. B. Striping von Speicheranordnung usw.) erreicht werden. Ein Datenbereich, wie hierin verwendet, ist durch Hostvorrichtungen adressierbar, und ein ECC-Bereich ist ein mit einem Datenbereich korrelierter (z. B. über die dedizierte Hardware) Abschnitt des Speichers 105. In einem Beispiel wird der ECC-Bereich gleichzeitig (z. B. ohne zusätzliche Anforderungen an den Speicher 105) mit seinem korrespondierenden Datenbereich abgerufen. In einem Beispiel ist der ECC-Bereich durch den Host nicht direkt adressierbar.
  • Die Umgebung erwägt bösartige Vorrichtungen 130, die über Software oder Hardware auf den Speicher 105 zugreifen können. Zum Verhindern des nicht autorisierten Zugriffs auf den Speicher 105 oder seine Manipulation durch die bösartigen Vorrichtungen 130 ist die Speichersteuerung 110 konfiguriert, ECC-Speichersicherheit zu implementieren. Zum Erreichen von ECC-Speichersicherheit ist die Speichersteuerung 110 angeordnet, eine Schreibanforderung wie von dem Prozessor 120 oder einer anderen Vorrichtung eines Hostsystems (z. B. ein anderes Hardwareteil über eine Direktspeicherzugriff- bzw. DMA-Schnittstelle) zu empfangen. Die Schreibanforderung kann von einem Benutzer, einem Programm usw. stammen. Die Schreibanforderung enthält Daten, die der Anfordernde im Speicher 105 speichern möchte. In einem Beispiel sind die Daten ein Datenwort oder eine Zwischenspeicherzeile des Speichers 105. In einem Beispiel beträgt die Zwischenspeicherzeile 512 Bits.
  • Die Speichersteuerung 110 ist angeordnet, einen ICV für die Daten der Anforderung zu berechnen. Jede ICV-Technik kann verwendet werden, einschließlich der vorstehend beschriebenen hashfunktionsbasierten Techniken. In einem Beispiel beträgt der ICV 32 Bits. In einem Beispiel beträgt der ICV 64 Bits. Im Allgemeinen ist die ICV-Größe unabhängig von der Größe der Daten und ist vorgeschrieben, groß genug zu sein, um Kollisionen zu vermeiden (z. B. wenn zwei verschiedene Eingabedatenworte im gleichen ICV-Wert resultieren).
  • Die Speichersteuerung 110 ist angeordnet, die Schreiboperation durchzuführen, die enthält, eine Repräsentation der Daten in einen Datenbereich des Speichers 105 zu schreiben und den ICV in einen ECC-Bereich des Speichers 105, der mit dem Datenbereich korrespondiert, zu schreiben. In einem Beispiel ist die Repräsentation der Daten eine verschlüsselt Form der Daten. Demgemäß führt die Speichersteuerung 110 eine Verschlüsselung der Daten durch oder ruft eine andere Vorrichtung auf, diese durchzuführen, bevor sie sie im Speicher 105 speichert. Es ist jedoch nicht erforderlich, dass die Daten verschlüsselt werden, um einen Nutzen aus der hierin beschriebenen ICV-Technik zu erhalten. Eine derartige Datenintegrität kann für Daten nützlich sind, die bekannt sein können, aber nicht in einer nicht autorisierten Weise geändert werden sollten, wie Operationsparameter und dergleichen.
  • In einem Beispiel ist die Speichersteuerung 110 angeordnet, ECC-Informationen (z. B. Paritätsbits, einen Reed-Solomon- bzw. RS-Code usw.) für die Daten zu berechnen. In einem Beispiel ist die Speichersteuerung 110 zum Abschließen der Schreibanforderung angeordnet, die ECC-Informationen in einen zweiten Datenbereich des Speichers zu schreiben. Hier werden die ECC-Daten in einem Datenbereich gespeichert sehr ähnlich wie ICV-Daten, die in traditionellen Ansätzen gespeichert wurden. Obwohl dies ein zusätzliches Lesen und Schreiben für Schreiboperationen beinhaltet, beinhaltet es gewöhnlich kein zusätzliches Lesen in Leseoperationen, weil die ICV-basierte Integritätsprüfung gewöhnlich bestanden werden wird, was angibt, dass in den Daten kein Fehler vorliegt und demgemäß die ECC-Daten nicht abgerufen werden müssen.
  • In einem Beispiel ist die Speichersteuerung 110 zum Berechnen der ECC-Informationen angeordnet, die Größe der ECC-Informationen zu beschränken, kleiner als der ECC-Bereich zu sein. In einem Beispiel sind die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC) anstelle eines RS-Codes, um diese Reduktion der Größe zu erreichen. Durch Reduzieren der Größe der ECC-Informationen können Bits im ECC-Bereich freigegeben werden, um den ICV unterzubringen. Demgemäß kann die Speichersteuerung 110 in einem Beispiel angeordnet sein, die ECC-Informationen zusammen mit dem ICV in den ECC-Bereich zu schreiben.
  • In einem Beispiel ist die Speichersteuerung 110 angeordnet, die Repräsentation der Daten und die ECC-Informationen in eine einzelne Entität, die der ICV ist, zu kombinieren (z. B. umzuwandeln). Diese einzelne Entität ICV kann dann über den Datenbereich und den ECC-Bereich geschrieben werden. Hier werden der Datenbereich und der ECC-Bereich durch die Speichersteuerung 110 als ein einzelner größerer Block angesehen. Der ICV wird durch die verwendete Technik in die Lage versetzt, die Repräsentation der Daten und die ECC-Informationen zu kombinieren. In einem Beispiel ist die Speichersteuerung 110 angeordnet, einen umkehrbaren und parametrisierten Fehlervermeidungs-Obfuskationsoperator (z. B. Funktion) anzuwenden (z. B. aufzurufen, zu nutzen usw.). In einem Beispiel ist ein Parameter des umkehrbaren parametrisierten Obfuskationsoperators mindestens eines eines Schlüssels oder einer Nonce. Im Allgemeinen wird der Schlüssel verwendet, die Obfuskation sicher zu halten, während die Nonce verwendet wird, der Obfuskation Versionierung (z. B. Neuheit) bereitzustellen. Der Begriff Obfuskation wird hier verwendet, um anzugeben, dass das Ergebnis unter Umständen nicht kryptographisch sicher ist, sondern vielmehr denjenigen, die versuchen, die Daten abzurufen oder zu manipulieren, eine erhöhte Belastung auferlegt.
  • Die Speichersteuerung 110 ist außerdem angeordnet, den ICV nach Leseoperationen zu lesen, um Integritätsprüfungen der Daten für jede Leseanforderung durchzuführen. Demgemäß ist die Speichersteuerung 110 angeordnet, eine Leseanforderung für den Datenbereich zu empfangen und den ICV zusammen mit der Repräsentation der Daten abzurufen. Wie vorstehend angeführt, erfolgt das Abrufen des ICV aus dem Speicher 105 automatisch, wenn der Speicher 105 ein ECC-Speicher ist. Die Speichersteuerung 110 ist angeordnet, den ICV auszuwerten, um zu bestimmen, dass die Repräsentation der Daten annehmbar ist. Dies ist die Integritätsprüfung. Wenn die Integritätsprüfung bestanden wird, ist bekannt, dass die Daten sowohl intakt als auch fehlerfrei sind. Die Speichersteuerung 110 ist angeordnet, die Daten - z. B. nach Entschlüsseln der Daten, wenn die Repräsentation der Daten vorher durch die Speichersteuerung 110 verschlüsselt wurde - als Reaktion auf die Bestimmung, dass die Repräsentation der Daten annehmbar ist, an einen Urheber der Leseanforderung zurückzugeben, ohne die ECC-Informationen auszuwerten. Wenn jedoch die Integritätsprüfung nicht bestanden wird, ist die Speichersteuerung 110 angeordnet, die ECC-Informationen abzurufen und zu versuchen, etwaige Fehler zu korrigieren. Nach der Fehlerkorrektur kann die Integritätsprüfung erneut ausgeführt werden. Wenn sie erneut fehlschlägt, kann die Speichersteuerung 110 dem Anfragenden signalisieren, dass sie fehlgeschlagen ist, oder einfach die Leseanforderung nicht abschließen (z. B. nichts zurückgeben, einen Lesefehler angeben usw.).
  • Die 2A-2B zeigen die Anordnung von Daten und ICV im Speicher gemäß mehreren Ausführungsformen. Wie dargestellt, ist jede Reihe (z. B. Reihe 205) eine Zwischenspeicherzeile im Speicher. Die Zwischenspeicherzeile 205 ist in einen Datenbereich (z. B. durch den Host adressierbarer oder direkt verwendbarer Speicherraum) und einen ECC-Bereich (z. B. Speicherraum, der konstruiert ist, mehrere Bits zusammen mit einem Datenbereich zurückzugeben) aufgeteilt. 2A zeigt ein Beispiel, in dem der gesamte ECC-Bereich für die Zwischenspeicherzeile 205 durch einen ICV für das korrespondierende Datenwort verwendet wird. Wie dargestellt, wird eine separate Zwischenspeicherzeile verwendet, mehrere Sätze von ECC-Informationen (z. B. ECC-Daten) zu speichern.
  • 2B zeigt ein Beispiel, in dem der ECC-Bereich der Zwischenspeicherzeile 205 sowohl den ICV als auch die ECC-Informationen für das Datenwort enthält. In diesem Beispiel werden die traditionellen ECC-Informationen komprimiert oder in der Größe eingeschränkt, um im ECC-Bereich Raum für den ICV zu schaffen.
  • 2C zeigt ein Beispiel, in dem das Datenwort mit den ECC-Informationen in einer Weise kombiniert wird, um den ICV zu produzieren. Dies wird durch Schattieren des ICV dargestellt, der eine Kombination der Daten und der ECC-Informationen ist. Der ICV wird dann über den Datenbereich und den ECC-Bereich geschrieben.
  • 3 zeigt ein Beispiel eines Komponentenflusses zum Platzieren von ICV-Daten in einen ECC-Bereich des Speichers und zum Verlagern von ECC-Daten in einen anderen Abschnitt des Speichers gemäß einer Ausführungsform. Dieses Beispiel nutzt die Tatsache, dass Speicherblöcke (z. B. die Blöcke im Speicher, auf die die Speichersteuerung zugreifen kann) größer sind als Benutzerblöcke (z. B. die Blöcke im Speicher, auf die der Host zugreifen kann). Die zusätzlichen Bits des Speicherblocks sind der ECC-Bereich und werden hier verwendet, den ICV anstelle der ECC-Informationen für den Benutzerblock (z. B. Datenwort) zu speichern. Außerdem wird der ECC (z. B. Paritätsbits) in diesem Beispiel in einem separaten Datenbereich (z. B. außerhalb des Speicherblocks) gespeichert, und darauf wird nur zugegriffen, wenn eine Integritätsprüfung unter Verwendung der ICV beim Lesen fehlschlägt. Da Lesevorgänge fast immer fehlerfrei sind, bietet dies gegenüber traditionellen Techniken einen beträchtlichen Leistungsvorteil. Im Fall eines Fehlers ist diese Technik jedoch nicht schlechter als traditionelle Techniken.
  • Hier ist eine Schreiboperation dargestellt. Die Verschlüsselungsparameter 305 werden mit einer Datenzeile 310 (z. B. Datenwort) und der Adresse 315 kombiniert, um die Datenzeile zu verschlüsseln und einen ICV zu erzeugen (Operation 320), was in einer verschlüsselten Repräsentation der Daten in einer Zwischenspeicherzeile 325 beziehungsweise dem ICV 330 resultiert, die jeweils in der Größe bemessen sind, einen Datenbereich und einen ECC-Bereich des Speichers einzunehmen. Die verschlüsselte Repräsentation der Daten 325 und der ICV 330 werden in den Speicher geschrieben (Operation 355).
  • Um die ECC-Informationen separat für die Datenzeile 310 zu speichern, wird ein Datenwort, das die korrespondierenden ECC-Informationen enthält, aus dem Speicher abgerufen (Operation 340). ECC-Informationen werden aus der Repräsentation der Daten 325 und dem ICV 330 erlangt (Operation 335) und in einen Abschnitt 350 des abgerufenen ECC-Datenworts 345, der mit der Adresse 315 korrespondiert, geschrieben. Das gesamte ECC-Datenwort 345 wird dann erneut in den Speicher geschrieben (Operation 360).
  • Eine Leseoperation kann vermeiden, das ECC-Informationen-Datenwort 345 abzurufen, wenn die Integritätsprüfung bestanden wird. Anderenfalls wird der Abschnitt 350 des ECC-Informationen-Datenworts 345 korrespondierend mit der Adresse 315 verwendet, Fehlerkorrektur durchzuführen. Obwohl vorstehend ein hashbasierter ICV diskutiert wird, können Nachrichtenauthentifizierungscodes (MACs) oder andere Integritätstechniken eingesetzt werden. Wiederholungsangriffe können auch über Integritätsbäume oder dergleichen vereitelt werden.
  • 4 zeigt ein Beispiel eines Komponentenflusses zum Platzieren von ICV-Daten und ECC-Informationen in einen ECC-Bereich des Speichers gemäß einer Ausführungsform. Zum Beispiel kann der ICV in dem ECC-Bereich zusammen mit ECC-Informationen gespeichert werden, wenn ein ICV zwischen 16 und 96 Bits und ein DDR5-Speichermodul gegeben sind, das 30 Bits pro Zwischenspeicherzeile aufweist, die freigesetzt werden können - zum Beispiel durch Deaktivieren von Lane Sparing und kritischem Chunk - um den ECC-Bereich zu vergrößern. Allgemein gilt, dass, je mehr Bits für den ICV verwendet werden, desto größer die Sicherheit ist. In einem Beispiel kann diese Technik mit der vorstehend beschriebenen Obfuskationstechnik (z. B. in Bezug auf die 5-7B) kombiniert werden.
  • Der dargestellte Komponentenfluss ist ein Schreibvorgang. Der Fluss beginnt mit Klartext 405 in einer Anforderung, die eine Adresse 410 enthält. Die Nonce 415 und der Schlüssel 420 sind wahlweise und können in einer Vielfalt von Weisen durch die Speichersteuerung bereitgestellt werden.
  • Der Klartext 405 kann verschlüsselt werden (Operation 430), um Chiffretext 460 zu erzeugen. Der Klartext 405 kann zusammen mit der Adresse 410, der Nonce 415 und dem Schlüssel 420 auch ein Parameter für einen Einweg-Hash 435 sein, um den ICV 445 zu produzieren, der in den ECC-Bereich 440 geschrieben wird. Der ICV 445 und der Chiffretext 406 können auch ECC-codiert werden (Operation 465) - wahlweise auch den im ECC-Bereich 450 gespeicherten Schlüssel 420 enthaltend -, um die Paritätsbits 455 zu produzieren. Diese Paritätsbits 455 (z. B. ECC-Informationen) werden dann in dem ECC-Bereich 440 gespeichert.
  • Wie vorstehend angeführt, können einige Bits der Zwischenspeicherzeile freigesetzt werden, indem Merkmale eines Speichers abgeschaltet werden. Außerdem können die Paritätsbits 455 beschränkt werden, zum Beispiel durch Verwenden eines RS-Codes mit schwächerer Fehlerkorrekturfähigkeit, der weniger Bits erfordert, oder Ersetzen der traditionellen RS-Codes durch effizientere Codes wie LDPC-Codes. Wieder gilt allgemein, dass, je mehr Bits der Zwischenspeicherzeile verfügbar gemacht werden (z. B. freigesetzt), der ICV desto größere Sicherheit bereitstellen kann.
  • 5 zeigt ein Beispiel eines Komponentenflusses zum Obfuskieren von Benutzerdaten und ECC-Daten, um den ICV über einen Datenbereich und einen ECC-Bereich des Speichers gemäß einer Ausführungsform zu implementieren. In diesem Beispiel wird eine Obfuskation nach ECC-Codierung durchgeführt. Die Obfuskation ermöglicht Integritäts- und Fehlerprüfung. Obfuskation, wie hierin verwendet, ist eine zufällig aussehende, umkehrbare Umwandlung von Daten, die die Anzahl von Fehlern erhält. Wenn Speicher gefälscht wurde (z. B. von einem anderen Ort kopiert), wird die Deobfuskationsumwandlung nicht mit der ursprünglichen Obfuskation übereinstimmen und wird ihr Ausgang nicht von Zufallsdaten unterscheidbar sein (z. B. aus der Perspektive eines ECC-Decodierers). Demgemäß wird der ECC-Decodierer fehlschlagen oder zu viele Fehler berichten, wenn die Integrität der Daten beeinträchtigt wird. Zusätzliche Einzelheiten eines Beispiels eines Obfuskationsoperators werden nachstehend unter Bezug auf die 7A und 7B beschrieben.
  • Der hier dargestellte Komponentenfluss beschreibt eine Schreiboperation. Parameter 505, wie die Adresse, ein Schlüssel und eine Nonce, werden mit der Klartextdatenzeile 510 kombiniert, um eine verschlüsselte Datenzeile 525 zu produzieren (Operation 515). Paritätsbits 540 werden aus der verschlüsselten Datenzeile 525 erzeugt (Operation 530) und in Bitpositionen korrespondierend mit einem ECC-Datenbereich platziert, während die verschlüsselte Datenzeile in Bitpositionen korrespondierend mit dem Datenbereich 535 platziert wird.
  • Die Parameter 505 können verwendet werden, Obfuskationsparameter zu erzeugen (Operation 520). Die Obfuskationsparameter werden mit den Datenbits 535 und den Paritätsbits 540 kombiniert, um eine Umwandlung 550 zu erzeugen (Operation 545). Die Umwandlung 550 wird dann unter Verwendung sowohl des Datenbereichs als auch des ECC-Bereichs einer Speicherraum-Zwischenspeicherzeile in den Speicher geschrieben (Operation 555).
  • 6 zeigt ein Beispiel eines Komponentenflusses zum Deobfuskieren von Benutzerdaten und ECC-Daten aus einem Datenbereich und einen ECC-Bereich des Speichers gemäß einer Ausführungsform. Rohdaten 650 (z. B. eine obfuskierte Version der Daten) werden aus dem Speicher abgerufen (Operation 655). Die Parameter 605 werden verwendet, Obfuskationsparameter zu erzeugen (Operation 620), die verwendet werden, die Rohdaten 650 zu deobfuskieren (Operation 645). Das Ergebnis enthält Datenbits 635 und Paritätsbits 640. Die Datenbit 635 und die Paritätsbits 640 werden auf Fehler geprüft (Operation 630) und verwendet, die verschlüsselte Datenzeile 625 zu produzieren. Die Parameter 605 können außerdem verwendet werden, die verschlüsselte Datenzeile 625 zu entschlüsseln (Operation 615), um eine Klartextdatenzeile 610 zu produzieren, die dann an den Anfordernden zurückgegeben werden kann.
  • Die 7A-7B zeigen eine Obfuskationsengine gemäß einer Ausführungsform. 7A zeigt einen Obfuskationsoperator 705. In diesem Fall ist der Obfuskationsparameter 705 als eine Umwandlung zwischen Dateneingabe und Datenausgabe umkehrbar. Dies bedeutet, dass, wenn Datenausgabe und die gleichen Parameter gegeben sind, die Dateneingabe durch den Obfuskationsparameter 705 wiederhergestellt wird. Demgemäß existiert ein Operator gP derart, dass X = gP(fP(X)) für alle X und P ist. Ferner sind der Obfuskationsoperator 705 (und korrespondierende umgekehrte Operatoren) fehlererhaltend. Dies bedeutet, dass ein Datenwort mit N Fehlern in ein verschiedenes Datenwort mit N Fehlern umgewandelt wird. Der Begriff „ein Fehler“ korrespondiert mit sowohl der physikalischen Struktur des Speichers als auch der in ECCs verwendeten. Demgemäß kann der Fehler ein Bitfehler, ein Bytefehler (z. B. Symbol) oder ein Fehler auf der Ebene von Speicherbanken unter anderen sein. Innerhalb dieser beiden Eigenschaften (z. B. umkehrbar und fehlererhaltend) kann jeder Obfuskationsoperator verwendet werden.
  • 7B zeigt eine Version des Obfuskationsoperators 705. In dem Fall werden Datenworte über eine Substitutionsoperation in N Chunks von jeweils M Bits aufgeteilt. Die Substitutionsoperation kann eine Eins-zu-Eins- (M, M)-Operation auf jeden der N Chunks anwenden. Hier basieren die Umwandlungen auf den Parametern P und können für verschiedene Chunks verschieden sein. Die Chunks werden dann einer Permutationsoperation unterzogen, die ebenfalls von den Parametern P abhängig ist. Die Klasse aller Operatoren mit der Form: Substitution, dann Permutation; ist gleich der Klasse aller Operatoren der Form: Permutation, dann Substitution. Für jede Menge von Werten der Parameter P können sich die korrespondierenden Operatoren dieser zwei Formen jedoch unterscheiden.
  • Im extremen Fall von 1-Bit-Chunks (wenn z. B. nur Bitfehler behandelt werden) kann die Substitutionsoperation eine einfache Maskierung werden, wie eine XOR-Operation von Daten mit einer Bitmaske basierend auf den Parametern P. Im Allgemeinen machen Ein- oder sogar Zwei-Bit-Chunks den Obfuskationsoperator linear, der durch bestimmte Angriffe verletzbar sein kann. Ein Beispiel eines derartigen Angriffs ist eine deterministische Erzeugung von Vektoren Y derart, dass Vektor X = gp(Y) die Fehlerkorrekturprozedur erfolgreich bestehen wird - es sei daran erinnert, dass gP die Umkehrung von fP ist, so dass X = gP(fP(X)) für alle X und P gilt.
  • Die Substitutionsoperation wirkt dem Versuch einer bösartigen Entität entgegen, Y = 0 zu setzen. Die Permutationsoperation kann 0 auf 0 abbilden. Die Substitutionsoperation funktioniert, eine deterministische Erzeugung eines ECC-Codeworts wie X = 0 zu verhindern. Eine XOR-Operation mit einer Maske kann bewirken, wie vorstehend angeführt, dass die Substitutions- und Permutationsoperation linear ist (z. B. Y = (X ⊕ A)M, wobei A, M, der Maskierungsvektor, die Permutationsmatrix von den Parametern P abhängen. Wenn ein Angreifer mehrere Muster von Y für die gleichen Parameter P kennt (z. B. durch Beobachten eines spezifischen Speicherorts, wenn derselbe Schlüssel in Gebrauch ist), kann der Angreifer neue Vektoren erzeugen. Wenn z. B. Y', Y" und Y''' derartige Beobachtungen sind, die mit drei verschiedenen Eingaben X', X" und X''' - die gültige ECC-Ausgaben sind - korrespondieren, wird Y = Y' ⊕ Y'' ⊕ Y''' mit X = X' ⊕ X'' ⊕ X''' korrespondieren und wird X ebenso eine gültige ECC-Ausgabe sein.
  • Die Permutationsoperation vereitelt Angriffe gegen besondere Paritätsbits in einem Datenwort X. Dies wird durch Umpositionieren der Chunks während der Permutationsoperation erreicht.
  • 8 zeigt ein Ablaufdiagramm eines Beispiels eines Verfahrens 800 für ECC-Speichersicherheit gemäß einer Ausführungsform. Die Operationen des Verfahrens 800 werden durch Hardware wie die vorstehend oder nachstehend beschriebene (z. B. Verarbeitungsschaltkreis) durchgeführt.
  • In Operation 805 wird eine Schreibanforderung empfangen. Hier enthält die Schreibanforderung Daten, die der Anfordernde (z. B. Benutzer, Programm, usw.) in den Speicher schreiben möchte.
  • In Operation 810 wird ein ICV für die Daten berechnet.
  • In Operation 815 wird die Schreibanforderung durchgeführt (z. B. werden die Daten in den Speicher geschrieben). Die Operationen 820 und 825 werden als Bestandteil der Durchführung der Schreibanforderung abgeschlossen.
  • In Operation 820 wird eine Repräsentation der Daten in einen Datenbereich im Speicher geschrieben. Hier sind die Daten durch einen Host adressierbar. In einem Beispiel ist der Datenbereich eine Zwischenspeicherzeile. In einem Beispiel ist die Repräsentation der Daten eine verschlüsselte Form der Daten.
  • In Operation 825 wird der ICV in einen ECC-Bereich im Speicher geschrieben. Der ECC-Bereich korrespondiert mit dem Datenbereich über Hardware des Speichers. In einem Beispiel wird der ECC-Bereich zusammen mit dem Datenbereich absichtlich durch den Speicher abgerufen.
  • In einem Beispiel enthält Durchführen der Schreibanforderung, ECC-Informationen für die Daten zu berechnen. In einem Beispiel enthält Durchführen der Schreibanforderung, die ECC-Informationen in einen zweiten Datenbereich in dem Speicher zu schreiben.
  • In einem Beispiel enthält Berechnen der ECC-Informationen, eine Größe der ECC-Informationen zu beschränken, kleiner als der ECC-Bereich zu sein. In einem Beispiel sind die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC). In einem Beispiel enthält Durchführen der Schreibanforderung, die ECC-Informationen in den ECC-Bereich zu schreiben.
  • In einem Beispiel enthält Durchführen der Schreibanforderung, die Repräsentation der Daten und die ECC-Informationen in eine einzelne Entität zu kombinieren, die der ICV ist. Der ICV wird dann über den Datenbereich und den ECC-Bereich geschrieben. In einem Beispiel enthält Kombinieren der Repräsentation der Daten und der ECC-Informationen, einen umkehrbaren parametrisierten Obfuskationsoperator anzuwenden, der fehlererhaltend ist. In einem Beispiel ist ein Parameter des umkehrbaren parametrisierten Obfuskationsoperators mindestens eines eines Schlüssels oder einer Nonce.
  • In einem Beispiel enthalten die Operationen des Verfahrens 800 ferner Empfangen einer Leseanforderung für den Datenbereich, Abrufen des ICV zusammen mit der Repräsentation der Daten, Auswerten des ICV, um zu bestimmen, dass die Repräsentation der Daten annehmbar ist, und Zurückgeben der Daten an einen Urheber der Leseanforderung ohne Auswerten der ECC-Informationen als Reaktion auf die Bestimmung, dass die Repräsentation der Daten annehmbar ist.
  • 9 zeigt ein Blockdiagramm einer beispielhaften Maschine 900, auf der eine beliebige eine oder mehrere der hierin diskutierten Techniken (z. B. Methodologien) durchgeführt werden können. Beispiele, wie hierin beschrieben, können Logik oder eine Anzahl von Komponenten oder Mechanismen in der Maschine 900 enthalten oder dadurch betrieben werden. Ein Schaltkreis (z. B. Verarbeitungsschaltkreis) ist eine Zusammenstellung von Schaltungen, implementiert in materiellen Entitäten der Maschine 900, die Hardware (z. B. einfache Schaltungen, Gatter, Logik usw.) enthalten. Die Mitgliedschaft in einem Schaltkreis kann im Verlauf der Zeit flexibel sein. Schaltkreise enthalten Mitglieder, die, allein oder in Kombination, im Betrieb spezifizierte Operationen durchführen können. In einem Beispiel kann Hardware des Schaltkreises unveränderlich konstruiert sein, eine spezifische Operation auszuführen (z. B. fest verdrahtet). In einem Beispiel kann die Hardware des Schaltkreises variabel verbundene physikalische Komponenten (z. B. Ausführungseinheiten, Transistoren, einfache Schaltungen usw.) enthalten, einschließlich eines maschinenlesbaren Mediums, das physikalisch (z. B. magnetisch, elektrisch, verlagerbare Platzierung von Partikeln invarianter Masse usw.) modifiziert wird, um Anweisungen der spezifischen Operation zu codieren. Durch Verbinden der physikalischen Komponenten werden die unterliegenden elektrischen Eigenschaften des Hardwarebestandteils verändert, zum Beispiel von einem Isolator zu einem Leiter oder umgekehrt. Die Anweisungen versetzen eingebettete Hardware (z. B. die Ausführungseinheiten oder einen Lademechanismus) in die Lage, Mitglieder des Schaltkreises in Hardware über die variablen Verbindungen zu erzeugen, um im Betrieb Abschnitte der spezifischen Operation auszuführen. Dementsprechend sind in einem Beispiel die maschinenlesbaren Medienelemente ein Teil des Schaltkreises oder sind an andere Komponenten des Schaltkreises kommunikativ gekoppelt, wenn die Vorrichtung in Betrieb ist. In einem Beispiel können beliebige der physikalischen Komponenten in mehr als einem Mitglied von mehr als einem Schaltkreis verwendet werden. Zum Beispiel können Ausführungseinheiten im Betrieb zu einem Zeitpunkt in einer ersten Schaltung eines ersten Schaltkreises verwendet werden und durch eine zweite Schaltung in dem ersten Schaltkreis oder durch eine dritte Schaltung in einem zweiten Schaltkreis zu einer anderen Zeit erneut verwendet werden. Zusätzliche Beispiele dieser Komponenten in Bezug auf die Maschine 900 folgen.
  • In alternativen Ausführungsformen kann die Maschine 900 als eine unabhängige Vorrichtung arbeiten oder kann mit anderen Maschinen verbunden (z. B. vernetzt) sein. In einer vernetzten Nutzung kann die Maschine 900 in der Eigenschaft einer Server-Maschine, einer Client-Maschine oder beider in Server-Client-Netzwerkumgebungen betrieben werden. In einem Beispiel kann die Maschine 900 als eine Peer-Maschine in einer Peer-to-Peer- (P2P) (oder anderen verteilten) Netzwerkumgebung fungieren. Die Maschine 900 kann ein PersonalComputer (PC), ein Tablet-PC, eine Settop-Box (STB), ein persönlicher digitaler Assistent (PDA), ein Mobiltelefon, eine Webanwendung, ein Netzwerk-Router, eine -Vermittlungseinrichtung oder eine -Brücke oder eine beliebige andere Maschine sein, die imstande ist, Anweisungen auszuführen (aufeinanderfolgend oder in anderer Weise), die spezifizieren, dass Maßnahmen durch die Maschine ergriffen werden. Ferner soll, während nur eine einzelne Maschine dargestellt wird, der Begriff „Maschine“ auch genommen werden, eine beliebige Zusammenstellung von Maschinen zu enthalten, die einzeln oder zusammen eine Menge (oder mehrere Mengen) von Anweisungen ausführen, um beliebige eine oder mehrere der hierin diskutierten Methodologien durchzuführen, wie Cloud-Computing, Software als ein Dienst (SaaS) oder andere Computerclusterkonfigurationen.
  • Die Maschine (z. B. Computersystem) 900 kann einen Hardwareprozessor 902 (z. B. eine zentrale Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU), einen Hardwareprozessorkern oder eine beliebige Kombination davon), einen Hauptspeicher 904, einen statischen Speicher (z. B. Speicher oder Speicherraum für Firmware, Mikrocode, eine Basis-Eingabe-Ausgabe (BIOS), eine vereinheitlichte erweiterbare Firmwareschnittstelle (UEFI) usw.) 906 und einen Massenspeicher 908 (z. B. Festplattenlaufwerk, Bandlaufwerk, Flash-Speicherraum oder andere Blockvorrichtungen) enthalten, von denen einige oder sämtliche über eine Verschaltung (z. B. Bus) 930 miteinander kommunizieren können. Die Maschine 900 kann ferner eine Anzeigeeinheit 910, eine alphanumerische Eingabevorrichtung 912 (z. B. eine Tastatur) und eine Benutzerschnittstellen- bzw. UI-Navigationsvorrichtung 914 (z. B. eine Maus) enthalten. In einem Beispiel können die Anzeigeeinheit 910, die Eingabevorrichtung 912 und die UI-Navigationsvorrichtung 914 eine Berührungsbildschirmanzeige sein. Die Maschine 900 kann zusätzlich eine Speichervorrichtung (z. B. Laufwerkeinheit) 908, eine Signalerzeugungsvorrichtung 918 (z. B. ein Lautsprecher), eine Netzwerkschnittstellenvorrichtung 920 und einen oder mehrere Sensoren 916 wie ein Sensor eines globalen Positionierungssystems (GPS), einen Kompass, einen Beschleunigungsmesser oder andere Sensoren enthalten. Die Maschine 900 kann eine Ausgabesteuerung 928 wie eine serielle (z. B. universeller serieller Bus (USB)), parallele oder andere drahtgebundene oder drahtlose (z. B. Infrarot (IR), Nahfeldkommunikation (NFC) usw.) Verbindung zum Kommunizieren mit oder Steuern einer oder mehrerer periphere Vorrichtungen (z. B. ein Drucker, Kartenleser usw.) enthalten.
  • Register des Prozessors 902, des Hauptspeichers 904, des statischen Speichers 906 oder des Massenspeichers 908 können ein maschinenlesbares Medium 922 sein oder dieses enthalten, auf dem ein oder mehrere Sätze von Datenstrukturen oder Anweisungen 924 (z. B. Software) gespeichert sind, die beliebige eine oder mehrere der hierin beschriebenen Techniken oder Funktionen verkörpern oder durch diese genutzt werden. Die Anweisungen 924 können außerdem vollständig oder mindestens teilweise in beliebigen Registern des Prozessors 902, des Hauptspeichers 904, des statischen Speichers 906 oder des Massenspeichers 908 während ihrer Ausführung durch die Maschine 900 residieren. In einem Beispiel können einer oder eine beliebige Kombination des Hardwareprozessors 902, des Hauptspeichers 904, des statischen Speichers 906 oder des Massenspeichers 908 das maschinenlesbare Medium 922 bilden. Während das maschinenlesbare Medium 922 als ein einzelnes Medium dargestellt ist, kann der Begriff „maschinenlesbares Medium“ ein einzelnes Medium oder mehrere Medien enthalten (z. B. eine zentralisierte oder verteilte Datenbank und/oder assoziierte Zwischenspeicher und Server), die konfiguriert sind, die eine oder mehreren Anweisungen 924 zu speichern.
  • Der Begriff „maschinenlesbares Medium“ kann jedes Medium enthalten, das imstande ist, Anweisungen zur Ausführung durch die Maschine 900 zu speichern, zu codieren oder zu tragen, und das bewirkt, dass die Maschine 900 beliebige eine oder mehrere der Techniken der vorliegenden Offenbarung durchführt, oder das imstande ist, Datenstrukturen zu speichern, zu codieren oder zu tragen, die von derartigen Anweisungen verwendet werden oder damit assoziiert sind. Nicht einschränkende Beispiele von maschinenlesbaren Medien können Festkörperspeicher, optische Medien, magnetische Medien und Signale (z. B. Funkfrequenzsignale, anderen photonenbasierte Signale, Schallsignal usw.) enthalten. In einem Beispiel umfasst ein nicht vergängliches maschinenlesbares Medium ein maschinenlesbares Medium mit einer Vielzahl von Partikeln mit invarianter (z. B. Ruhe-)Masse und die demgemäß Zusammensetzungen von Materie sind. Dementsprechend sind nicht vergängliche maschinenlesbare Medien maschinenlesbare Medien, die keine vergänglichen, sich ausbreitenden Signale enthalten. Spezifische Beispiele von nicht vergänglichen maschinenlesbaren Medien können enthalten: nichtflüchtiger Speicher wie Halbleiterspeichervorrichtungen (z. B. elektrisch programmierbarer Nur-Lese-Speicher (EPROM), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM)) und Flash-Speichervorrichtungen; magnetische Platten wie interne Festplatten und Wechselplatten; magnetooptische Platten; und CD-ROM- und DVD-ROM-Platten.
  • Die Anweisungen 924 können ferner über ein Kommunikationsnetzwerk 926 unter Verwendung eines Übertragungsmediums über die Netzwerkschnittstellenvorrichtung 920 unter Nutzung eines beliebigen einen einer Anzahl von Übertragungsprotokollen (z. B. Rahmenrelais, Internetprotokoll (IP), Übertragungssteuerprotokoll (TCP), Benutzerdatagrammprotokoll (UDP), Hypertexttransferprotokoll (HTTP) usw.) übertragen oder empfangen werden. Beispielhafte Kommunikationsnetzwerke können unter anderen ein Nahbereichsnetzwerk (LAN), ein Weitbereichsnetzwerk (WAN), ein Paketdatennetzwerk (z. B. das Internet), Mobiltelefonnetzwerke (z. B. zellulare Netzwerke), herkömmliche Telefonnetzwerke (POTS) und drahtlose Datennetzwerke (z. B. Familie der Standards 802.11 des Institute of Electrical and Electronics Engineers (IEEE), bekannt als Wi-Fi®, Familie der Standards IEEE 802.16, bekannt als WiMax®), Familie der Standards IEEE 802.15.4, Peer-to-Peer- bzw. P2P-Netzwerke enthalten. In einem Beispiel kann die Netzwerkschnittstellenvorrichtung 920 eine oder mehrere physikalische Buchsen (z. B. Ethernet-, Koaxial- oder Telefonbuchsen) oder eine oder mehrere Antennen zum Verbinden mit dem Kommunikationsnetzwerk 926 enthalten. In einem Beispiel kann die Netzwerkschnittstellenvorrichtung 920 eine Vielzahl von Antennen zum drahtlosen Kommunizieren unter Verwendung mindestens einer von Einfacheingang-Mehrfachausgang- bzw. SIMO-, Mehrfacheingang-Mehrfachausgang- bzw. MIMO- oder Mehrfacheingang-Einfachausgang- bzw. MISO-Techniken enthalten. Der Begriff „Übertragungsmedium“ soll so genommen werden, dass er jedes immaterielle Medium enthält, das imstande ist, Anweisungen zur Ausführung durch die Maschine 900 zu speichern, zu codieren oder zu tragen, und enthält digitale oder analoge Kommunikationssignale oder andere immaterielle Medien zur Erleichterung der Kommunikation derartiger Software. Ein Übertragungsmedium ist ein maschinenlesbares Medium.
  • Zusätzliche Anmerkungen und Beispiele
  • Beispiel 1 ist eine Speichersteuerung für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, die Speichersteuerung umfassend: ein maschinenlesbares Medium, das Anweisungen enthält; und einen Verarbeitungsschaltkreis, der, wenn er die Anweisungen ausführt, operiert zum: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Durchführen der Schreibanforderung, enthaltend: Schreiben einer Repräsentation der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host zugänglich ist; und Schreiben des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich korrespondiert, über Hardware des Speichers.
  • In Beispiel 2, der Gegenstand von Beispiel 1, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung ECC-Informationen für die Daten berechnet.
  • In Beispiel 3, der Gegenstand von Beispiel 2, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung die ECC-Informationen in einen zweiten Datenbereich in dem Speicher schreibt.
  • In Beispiel 4, der Gegenstand eines der Beispiele 2-3, wobei der Verarbeitungsschaltkreis zum Berechnen der ECC-Informationen eine Größe der ECC-Informationen beschränkt, kleiner als der ECC-Bereich zu sein.
  • In Beispiel 5, der Gegenstand von Beispiel 4, wobei die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC) sind.
  • In Beispiel 6, der Gegenstand eines der Beispiele 4-5, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung die ECC-Informationen in den ECC-Bereich schreibt.
  • In Beispiel 7, der Gegenstand eines der Beispiele 2-6, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung: die Repräsentation der Daten und die ECC-Informationen in eine einzelne Entität kombiniert, die der ICV ist; und den ICV über den Datenbereich und den ECC-Bereich schreibt.
  • In Beispiel 8, der Gegenstand von Beispiel 7, wobei der Verarbeitungsschaltkreis zum Kombinieren der Repräsentation der Daten und der ECC-Informationen einen umkehrbaren parametrisierten Obfuskationsoperator, der fehlererhaltend ist, anwendet.
  • In Beispiel 9, der Gegenstand von Beispiel 8, wobei ein Parameter des umkehrbaren parametrisierten Obfuskationsoperators mindestens eines eines Schlüssels oder einer Nonce ist.
  • In Beispiel 10, der Gegenstand eines der Beispiele 1-9, wobei die Repräsentation der Daten eine verschlüsselte Form der Daten ist.
  • In Beispiel 11, der Gegenstand eines der Beispiele 1-10, wobei der Datenbereich eine Zwischenspeicherzeile ist.
  • In Beispiel 12, der Gegenstand eines der Beispiele 1-11, wobei der ECC-Bereich zusammen mit dem Datenbereich durch den Speicher absichtlich abgerufen wird.
  • In Beispiel 13, der Gegenstand eines der Beispiele 1-12, wobei die Anweisungen bewirken, dass die Verarbeitungsschaltung Folgendes durchführt: Empfangen einer Leseanforderung für den Datenbereich; Abrufen des ICV zusammen mit der Repräsentation der Daten; Auswerten des ICV, um zu bestimmen, dass die Repräsentation der Daten annehmbar ist; und Zurückgeben der Daten an einen Urheber der Leseanforderung ohne Auswerten der ECC-Informationen als Reaktion auf die Bestimmung, dass die Repräsentation der Daten annehmbar ist.
  • Beispiel 14 ist ein Verfahren für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, das Verfahren umfassend: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Durchführen der Schreibanforderung, enthaltend: Schreiben einer Repräsentation der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host zugänglich ist; und Schreiben des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich über Hardware des Speichers korrespondiert.
  • In Beispiel 15, der Gegenstand von Beispiel 14, wobei Durchführen der Schreibanforderung enthält, ECC-Informationen für die Daten zu berechnen.
  • In Beispiel 16, der Gegenstand von Beispiel 15, wobei Durchführen der Schreibanforderung enthält, die ECC-Informationen in einen zweiten Datenbereich in dem Speicher zu schreiben.
  • In Beispiel 17, der Gegenstand eines der Beispiele 15-16, wobei Berechnen der ECC-Informationen enthält, eine Größe der ECC-Informationen zu beschränken, kleiner als der ECC-Bereich zu sein.
  • In Beispiel 18, der Gegenstand von Beispiel 17, wobei die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC) sind.
  • In Beispiel 19, der Gegenstand eines der Beispiele 17-18, wobei Durchführen der Schreibanforderung enthält, die ECC-Informationen in den ECC-Bereich zu schreiben.
  • In Beispiel 20, der Gegenstand eines der Beispiele 15-19, wobei Durchführen der Schreibanforderung enthält: Kombinieren der Repräsentation der Daten und der ECC-Informationen in eine einzelne Entität, die der ICV ist; und Schreiben des ICV über den Datenbereich und den ECC-Bereich.
  • In Beispiel 21, der Gegenstand von Beispiel 20, wobei Kombinieren der Repräsentation der Daten und der ECC-Informationen enthält, einen umkehrbaren parametrisierten Obfuskationsoperator, der fehlererhaltend ist, anzuwenden.
  • In Beispiel 22, der Gegenstand von Beispiel 21, wobei ein Parameter des umkehrbaren parametrisierten Obfuskationsoperators mindestens eines eines Schlüssels oder einer Nonce ist.
  • In Beispiel 23, der Gegenstand eines der Beispiele 14-22, wobei die Repräsentation der Daten eine verschlüsselte Form der Daten ist.
  • In Beispiel 24, der Gegenstand eines der Beispiele 14-23, wobei der Datenbereich eine Zwischenspeicherzeile ist.
  • In Beispiel 25, der Gegenstand eines der Beispiele 14-24, wobei der ECC-Bereich zusammen mit dem Datenbereich durch den Speicher absichtlich abgerufen wird.
  • In Beispiel 26, der Gegenstand eines der Beispiele 14-25, umfassend: Empfangen einer Leseanforderung für den Datenbereich; Abrufen des ICV zusammen mit der Repräsentation der Daten; Auswerten des ICV, um zu bestimmen, dass die Repräsentation der Daten annehmbar ist; und Zurückgeben der Daten an einen Urheber der Leseanforderung ohne Auswerten der ECC-Informationen als Reaktion auf die Bestimmung, dass die Repräsentation der Daten annehmbar ist.
  • Beispiel 27 ist ein Verfahren für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, das Verfahren umfassend: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Durchführen der Schreibanforderung, enthaltend: Schreiben der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host zugänglich ist; Schreiben des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich über Hardware des Speichers korrespondiert; und Schreiben von ECC-Daten für die Daten in einen ECC-Datenbereich, wobei der ECC-Datenbereich ein anderer Datenbereich ist, der mit dem Datenbereich korrespondiert und ECC-Daten hält.
  • Beispiel 28 ist ein Verfahren für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, das Verfahren umfassend: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Durchführen der Schreibanforderung, enthaltend: Schreiben der Daten in einen Datenpuffer, der mit einem Datenbereich im Speicher korrespondiert, wobei der Datenbereich durch einen Host adressierbar ist; Schreiben der ECC-Daten in einen ECC-Puffer, der mit einem ECC-Bereich im Speicher korrespondiert, wobei der ECC-Bereich mit dem Datenbereich über Hardware des Speichers korrespondiert; Durchführen einer Obfuskation an dem Datenpuffer und dem ECC-Puffer, um einen Integritätsprüfwert (ICV) zu erzeugen, wobei die Obfuskation umkehrbar ist; und Schreiben der Obfuskation in den Datenbereich und den ECC-Bereich.
  • Beispiel 29 ist ein Verfahren für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, das Verfahren umfassend: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Berechnen von ECC-Daten für die Daten; Durchführen der Schreibanforderung, enthaltend: Schreiben der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host adressierbar ist; und Schreiben sowohl der ECC-Daten als auch des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich über Hardware des Speichers korrespondiert.
  • Beispiel 30 ist mindestens ein maschinenlesbares Medium, das Anweisungen für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit enthält, wobei die Anweisungen, wenn sie durch eine Maschine ausgeführt werden, bewirken, dass die Maschine Operationen durchführt, umfassend: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Durchführen der Schreibanforderung, enthaltend: Schreiben einer Repräsentation der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host zugänglich ist; und Schreiben des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich über Hardware des Speichers korrespondiert.
  • In Beispiel 31, der Gegenstand von Beispiel 30, wobei Durchführen der Schreibanforderung enthält, ECC-Informationen für die Daten zu berechnen.
  • In Beispiel 32, der Gegenstand von Beispiel 31, wobei Durchführen der Schreibanforderung enthält, die ECC-Informationen in einen zweiten Datenbereich in dem Speicher zu schreiben.
  • In Beispiel 33, der Gegenstand eines der Beispiele 31-32, wobei Berechnen der ECC-Informationen enthält, eine Größe der ECC-Informationen zu beschränken, kleiner als der ECC-Bereich zu sein.
  • In Beispiel 34, der Gegenstand von Beispiel 33, wobei die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC) sind.
  • In Beispiel 35, der Gegenstand eines der Beispiele 33-34, wobei Durchführen der Schreibanforderung enthält, die ECC-Informationen in den ECC-Bereich zu schreiben.
  • In Beispiel 36, der Gegenstand eines der Beispiele 31-35, wobei Durchführen der Schreibanforderung enthält: Kombinieren der Repräsentation der Daten und der ECC-Informationen in eine einzelne Entität, die der ICV ist; und Schreiben des ICV über den Datenbereich und den ECC-Bereich.
  • In Beispiel 37, der Gegenstand von Beispiel 36, wobei Kombinieren der Repräsentation der Daten und der ECC-Informationen enthält, einen umkehrbaren parametrisierten Obfuskationsoperator, der fehlererhaltend ist, anzuwenden.
  • In Beispiel 38, der Gegenstand von Beispiel 37, wobei ein Parameter des umkehrbaren parametrisierten Obfuskationsoperators mindestens eines eines Schlüssels oder einer Nonce ist.
  • In Beispiel 39, der Gegenstand eines der Beispiele 30-38, wobei die Repräsentation der Daten eine verschlüsselte Form der Daten ist.
  • In Beispiel 40, der Gegenstand eines der Beispiele 30-39, wobei der Datenbereich eine Zwischenspeicherzeile ist.
  • In Beispiel 41, der Gegenstand eines der Beispiele 30-40, wobei der ECC-Bereich zusammen mit dem Datenbereich durch den Speicher absichtlich abgerufen wird.
  • In Beispiel 42, der Gegenstand eines der Beispiele 30-41, wobei die Operationen enthalten: Empfangen einer Leseanforderung für den Datenbereich; Abrufen des ICV zusammen mit der Repräsentation der Daten; Auswerten des ICV, um zu bestimmen, dass die Repräsentation der Daten annehmbar ist; und Zurückgeben der Daten an einen Urheber der Leseanforderung ohne Auswerten der ECC-Informationen als Reaktion auf die Bestimmung, dass die Repräsentation der Daten annehmbar ist.
  • Beispiel 43 ist ein System für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, das System umfassend: Mittel zum Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Mittel zum Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Mittel zum Durchführen der Schreibanforderung, enthaltend: Mittel zum Schreiben einer Repräsentation der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host zugänglich ist; und Mittel zum Schreiben des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich über Hardware des Speichers korrespondiert.
  • In Beispiel 44, der Gegenstand von Beispiel 43, wobei die Mittel zum Durchführen der Schreibanforderung Mittel zum Berechnen der ECC-Informationen für die Daten enthalten.
  • In Beispiel 45, der Gegenstand von Beispiel 44, wobei die Mittel zum Durchführen der Schreibanforderung Mittel zum Schreiben der ECC-Informationen in einen zweiten Datenbereich in dem Speicher enthalten.
  • In Beispiel 46, der Gegenstand eines der Beispiele 44-45, wobei die Mittel zum Berechnen der ECC-Informationen Mittel zum Beschränken einer Größe der ECC-Informationen, kleiner als der ECC-Bereich zu sein, enthalten.
  • In Beispiel 47, der Gegenstand von Beispiel 46, wobei die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC) sind.
  • In Beispiel 48, der Gegenstand eines der Beispiele 46-47, wobei die Mittel zum Durchführen der Schreibanforderung Mittel zum Schreiben der ECC-Informationen in den ECC-Bereich enthalten.
  • In Beispiel 49, der Gegenstand eines der Beispiele 44-48, wobei die Mittel zum Durchführen der Schreibanforderung enthalten: Mittel zum Kombinieren der Repräsentation der Daten und der ECC-Informationen in eine einzelne Entität, die der ICV ist; und Mittel zum Schreiben des ICV über den Datenbereich und den ECC-Bereich.
  • In Beispiel 50, der Gegenstand von Beispiel 49, wobei die Mittel zum Kombinieren der Repräsentation der Daten und der ECC-Informationen Mittel zum Anwenden eines umkehrbaren parametrisierten Obfuskationsoperators, der fehlererhaltend ist, enthalten.
  • In Beispiel 51, der Gegenstand von Beispiel 50, wobei ein Parameter des umkehrbaren parametrisierten Obfuskationsoperators mindestens eines eines Schlüssels oder einer Nonce ist.
  • In Beispiel 52, der Gegenstand eines der Beispiele 43-51, wobei die Repräsentation der Daten eine verschlüsselte Form der Daten ist.
  • In Beispiel 53, der Gegenstand eines der Beispiele 43-52, wobei der Datenbereich eine Zwischenspeicherzeile ist.
  • In Beispiel 54, der Gegenstand eines der Beispiele 43-53, wobei der ECC-Bereich zusammen mit dem Datenbereich durch den Speicher absichtlich abgerufen wird.
  • In Beispiel 55, der Gegenstand eines der Beispiele 43-54, umfassend: Mittel zum Empfangen einer Leseanforderung für den Datenbereich; Mittel zum Abrufen des ICV zusammen mit der Repräsentation der Daten; Mittel zum Auswerten des ICV, um zu bestimmen, dass die Repräsentation der Daten annehmbar ist; und Zurückgeben der Daten an einen Urheber der Leseanforderung ohne Auswerten der ECC-Informationen als Reaktion auf die Bestimmung, dass die Repräsentation der Daten annehmbar ist.
  • Beispiel 56 ist mindestens ein maschinenlesbares Medium, das Anweisungen enthält, die, wenn sie durch einen Verarbeitungsschaltkreis ausgeführt werden, bewirken, dass der Verarbeitungsschaltkreis Operationen zum Implementieren eines der Beispiele 1-55 durchführt.
  • Beispiel 57 ist ein Gerät, umfassend Mittel zum Implementieren eines der Beispiele 1-55.
  • Beispiel 58 ist ein System zum Implementieren eines der Beispiele 1-55.
  • Beispiel 59 ist ein Verfahren zum Implementieren eines der Beispiele 1-55.
  • Die vorstehende ausführliche Beschreibung enthält Bezugnahmen auf die beigefügten Zeichnungen, die einen Teil der ausführlichen Beschreibung bilden. Die Zeichnungen zeigen zur Veranschaulichung spezifische Ausführungsformen, die praktiziert werden können. Auf diese Ausführungsformen wird hierin auch als „Beispiele“ Bezug genommen. Derartige Beispiele können Elemente zusätzlich zu den dargestellten oder beschriebenen enthalten. Die gegenwärtigen Erfinder erwägen jedoch auch Beispiele, in denen nur diejenigen Beispiele, die dargestellt oder beschrieben sind, bereitgestellt sind. Überdies erwägen die gegenwärtigen Erfinder außerdem Beispiele unter Verwendung einer beliebigen Kombination oder Permutation von denjenigen Beispielen, die dargestellt oder beschrieben sind (oder eines oder mehrerer Aspekte davon), entweder unter Bezug auf ein besonderes Beispiel (oder einen oder mehrere Aspekte davon) oder unter Bezug auf andere Beispiele(oder einen oder mehrere Aspekte davon), die hierin dargestellt oder beschrieben sind.
  • Alle Veröffentlichungen, Patente und Patentschriften, auf die in diesem Dokument Bezug genommen wird, sind durch Literaturverweis hierin in ihrer Gesamtheit inkorporiert, als ob sie einzeln durch Literaturverweis inkorporiert wären. Im Fall von inkonsistenten Verwendungen zwischen diesem Dokument und jenen Dokumenten, die derart durch Literaturverweis inkorporiert sind, sollte die Verwendung in dem oder den inkorporierten Literaturverweisen als ergänzend zu der dieses Dokuments angesehen werden; für unvereinbare Inkonsistenzen hat die Verwendung in diesem Dokument Vorrang.
  • In diesem Dokument werden die Begriffe „ein“ oder „eine“, wie es in Patentschriften gängig ist, so verwendet, dass sie ein/eine/einen oder mehr als ein/eine/einen enthalten, unabhängig von anderen Fällen oder Verwendungen von „mindestens ein/eine/einen“ oder „ein/eine/einen oder mehrere“. In diesem Dokument wird der Begriff „oder“ verwendet, ein nicht ausschließliches oder zu enthalten, so dass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ enthält, wenn nicht anders angegeben. In den beigefügten Ansprüchen werden die Begriffe „enthaltend“ und „in dem“ als das Äquivalent in einfachem Deutsch der jeweiligen Begriffe „umfassend“ und „wobei“ verwendet. In den nachstehenden Ansprüchen sind die Begriffe „enthaltend“ und „umfassend“ außerdem offen, das heißt, dass ein System, eine Vorrichtung, ein Artikel oder ein Prozess, der/die/das Elemente zusätzlich zu denjenigen nach einem derartigen Begriff angeführten in einem Anspruch enthält, dennoch so betrachtet werden, dass sie in den Schutzumfang dieses Anspruchs fallen. In den nachstehenden Ansprüchen werden die Begriffe „erster“, „zweiter“ und „dritter“ usw. lediglich als Kennzeichnungen verwendet und sollen ihren Objekten keine numerischen Anforderungen auferlegen.
  • Die vorstehende Beschreibung soll veranschaulichend und nicht einschränkend sein. Zum Beispiel können die vorstehend beschriebenen Beispiele (oder ein oder mehrere Aspekte davon) in Kombination miteinander verwendet werden. Andere Ausführungsformen können verwendet werden, wie durch einen Durchschnittsfachmann im Fachgebiet nach Durchsicht der vorstehenden Beschreibung. Die „Zusammenfassung“ soll dem Leser gestatten, die Art der technischen Offenbarung schnell zu ermitteln, und wird mit dem Verständnis eingereicht, dass sie nicht verwendet werden wird, den Schutzumfang oder die Bedeutung der Ansprüche zu interpretieren oder einzuschränken. Außerdem können in der vorstehenden „Ausführlichen Beschreibung“ verschiedene Merkmale zusammen gruppiert worden sein, um die Offenbarung zu straffen. Dies sollte nicht so interpretiert werden, dass beabsichtigt wird, dass ein nicht beanspruchtes offenbartes Merkmal für einen Anspruch unverzichtbar ist. Vielmehr kann der erfinderische Gegenstand in weniger als allen Merkmalen einer besonderen offenbarten Ausführungsform liegen. Demgemäß sind die nachstehenden Ansprüche hiermit in die „Ausführliche Beschreibung“ inkorporiert, wobei jeder Anspruch als eine separate Ausführungsform für sich selbst steht. Der Schutzumfang der Ausführungsformen sollte unter Bezugnahme auf die beigefügten Ansprüche zusammen mit dem vollen Schutzumfang von Äquivalenten, zu denen derartige Ansprüche berechtigt sind, bestimmt werden.
  • Claims (25)

    1. Speichersteuerung für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, die Speichersteuerung umfassend: ein maschinenlesbares Medium, das Anweisungen enthält; und einen Verarbeitungsschaltkreis, der, wenn er die Anweisungen ausführt, operiert zum: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Durchführen der Schreibanforderung, enthaltend: Schreiben einer Repräsentation der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host zugänglich ist; und Schreiben des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich korrespondiert, über Hardware des Speichers.
    2. Speichersteuerung nach Anspruch 1, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung ECC-Informationen für die Daten berechnet.
    3. Speichersteuerung nach Anspruch 2, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung die ECC-Informationen in einen zweiten Datenbereich in dem Speicher schreibt.
    4. Speichersteuerung nach Anspruch 2, wobei der Verarbeitungsschaltkreis zum Berechnen der ECC-Informationen eine Größe der ECC-Informationen beschränkt, kleiner als der ECC-Bereich zu sein.
    5. Speichersteuerung nach Anspruch 4, wobei die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC) sind.
    6. Speichersteuerung nach Anspruch 4, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung die ECC-Informationen in den ECC-Bereich schreibt.
    7. Speichersteuerung nach Anspruch 2, wobei der Verarbeitungsschaltkreis zum Durchführen der Schreibanforderung: die Repräsentation der Daten und die ECC-Informationen in eine einzelne Entität kombiniert, die der ICV ist; und den ICV über den Datenbereich und den ECC-Bereich schreibt.
    8. Speichersteuerung nach Anspruch 7, wobei der Verarbeitungsschaltkreis zum Kombinieren der Repräsentation der Daten und der ECC-Informationen einen umkehrbaren parametrisierten Obfuskationsoperator, der fehlererhaltend ist, anwendet.
    9. Speichersteuerung nach Anspruch 1, wobei der Datenbereich eine Zwischenspeicherzeile ist.
    10. Speichersteuerung nach Anspruch 1, wobei der ECC-Bereich zusammen mit dem Datenbereich durch den Speicher absichtlich abgerufen wird.
    11. Verfahren für Fehlerkorrekturcode- bzw. ECC-Speichersicherheit, das Verfahren umfassend: Empfangen einer Schreibanforderung, wobei die Schreibanforderung Daten enthält; Berechnen eines Integritätsprüfwerts (ICV) für die Daten; Durchführen der Schreibanforderung, enthaltend: Schreiben einer Repräsentation der Daten in einen Datenbereich im Speicher, wobei der Datenbereich durch einen Host zugänglich ist; und Schreiben des ICV in einen ECC-Bereich im Speicher, wobei der ECC-Bereich mit dem Datenbereich über Hardware des Speichers korrespondiert.
    12. Verfahren nach Anspruch 11, wobei Durchführen der Schreibanforderung enthält, ECC-Informationen für die Daten zu berechnen.
    13. Verfahren nach Anspruch 12, wobei Durchführen der Schreibanforderung enthält, die ECC-Informationen in einen zweiten Datenbereich in dem Speicher zu schreiben.
    14. Verfahren nach Anspruch 12, wobei Berechnen der ECC-Informationen enthält, eine Größe der ECC-Informationen zu beschränken, kleiner als der ECC-Bereich zu sein.
    15. Verfahren nach Anspruch 14, wobei die ECC-Informationen ein Paritätsprüfcode niedriger Dichte (LDPC) sind.
    16. Verfahren nach Anspruch 14, wobei Durchführen der Schreibanforderung enthält, die ECC-Informationen in den ECC-Bereich zu schreiben.
    17. Verfahren nach Anspruch 12, wobei Durchführen der Schreibanforderung enthält: Kombinieren der Repräsentation der Daten und der ECC-Informationen in eine einzelne Entität, die der ICV ist; und Schreiben des ICV über den Datenbereich und den ECC-Bereich.
    18. Verfahren nach Anspruch 17, wobei Kombinieren der Repräsentation der Daten und der ECC-Informationen enthält, einen umkehrbaren parametrisierten Obfuskationsoperator, der fehlererhaltend ist, anzuwenden.
    19. Verfahren nach Anspruch 18, wobei ein Parameter des umkehrbaren parametrisierten Obfuskationsoperators mindestens eines eines Schlüssels oder einer Nonce ist.
    20. Verfahren nach Anspruch 11, wobei die Repräsentation der Daten eine verschlüsselte Form der Daten ist.
    21. Verfahren nach Anspruch 11, wobei der Datenbereich eine Zwischenspeicherzeile ist.
    22. Verfahren nach Anspruch 11, wobei der ECC-Bereich zusammen mit dem Datenbereich durch den Speicher absichtlich abgerufen wird.
    23. Verfahren nach Anspruch 11, umfassend: Empfangen einer Leseanforderung für den Datenbereich; Abrufen des ICV zusammen mit der Repräsentation der Daten; Auswerten des ICV, um zu bestimmen, dass die Repräsentation der Daten annehmbar ist; und Zurückgeben der Daten an einen Urheber der Leseanforderung ohne Auswerten der ECC-Informationen als Reaktion auf die Bestimmung, dass die Repräsentation der Daten annehmbar ist.
    24. System, umfassend Mittel zum Durchführen eines Verfahrens der Ansprüche 11 bis 23.
    25. Mindestens ein maschinenlesbares Medium, das Anweisungen enthält, wobei die Anweisungen, wenn sie durch einen Verarbeitungsschaltkreis ausgeführt werden, bewirken, dass der Verarbeitungsschaltkreis ein Verfahren der Ansprüche 11 bis 23 durchführt.
    DE102019110501.3A 2018-06-28 2019-04-23 Fehlerkorrekturcode-speichersicherheit Pending DE102019110501A1 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US16/022,447 US10725861B2 (en) 2018-06-28 2018-06-28 Error correction code memory security
    US16/022,447 2018-06-28

    Publications (1)

    Publication Number Publication Date
    DE102019110501A1 true DE102019110501A1 (de) 2020-01-02

    Family

    ID=65229601

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102019110501.3A Pending DE102019110501A1 (de) 2018-06-28 2019-04-23 Fehlerkorrekturcode-speichersicherheit

    Country Status (3)

    Country Link
    US (1) US10725861B2 (de)
    CN (1) CN110659153A (de)
    DE (1) DE102019110501A1 (de)

    Families Citing this family (5)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11093588B2 (en) * 2017-06-26 2021-08-17 Micron Technology, Inc. Memory system including data obfuscation
    KR20200092036A (ko) * 2019-01-24 2020-08-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
    US11036636B2 (en) * 2019-06-28 2021-06-15 Intel Corporation Providing improved efficiency for metadata usages
    CN111294059B (zh) * 2019-12-26 2023-06-30 成都海光集成电路设计有限公司 编码方法、译码方法、纠错方法及相关装置
    US11500711B1 (en) 2021-07-20 2022-11-15 Rockwell Collins, Inc. System and method for determining error occurrence in graphics memory of graphics processing unit

    Family Cites Families (7)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    AU662973B2 (en) * 1992-03-09 1995-09-21 Auspex Systems, Inc. High-performance non-volatile ram protected write cache accelerator system
    US7454668B1 (en) * 2005-09-23 2008-11-18 Emc Corporation Techniques for data signature and protection against lost writes
    US8296480B2 (en) * 2009-11-30 2012-10-23 Lsi Corporation Context execution in a media controller architecture
    US9798900B2 (en) 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection
    US10585809B2 (en) * 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
    US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
    US11269786B2 (en) * 2018-07-25 2022-03-08 Intel Corporation Memory data protection based on authenticated encryption

    Also Published As

    Publication number Publication date
    CN110659153A (zh) 2020-01-07
    US20190042362A1 (en) 2019-02-07
    US10725861B2 (en) 2020-07-28

    Similar Documents

    Publication Publication Date Title
    DE102019110501A1 (de) Fehlerkorrekturcode-speichersicherheit
    EP2899714B1 (de) Gesichertes Bereitstellen eines Schlüssels
    DE112018005628T5 (de) Datenbereinigungssystem für eine öffentliche Host-Plattform
    DE102019109088A1 (de) Schutz von schlüsseln und sensitiven daten gegen angriffe in einer mikroprozessorarchitektur
    DE112017000394T5 (de) Kryptografische asic enthaltend eine schaltungscodierte transformationsfunktion
    DE102018115491A1 (de) System, vorrichtung und verfahren zur seitengranularen, softwaregesteuerten speicherverschlüsselung mit mehreren schlüsseln
    DE112012002277B4 (de) Verknüpfen von Schlüssel-Steuerdaten bei Diensten allgemeiner kryptografischer Architektur
    DE102016002549A1 (de) Verfahren zur mehrschichtig geschützten Sicherung von (Anmelde-) Daten insbesondere Passwörtern
    DE102018101307A1 (de) Techniken für SGX-Enklaven-Fernauthentifizierung
    DE112016004435T5 (de) Hardware-gestützte einseitige kryptografie
    DE102019102229A1 (de) Techniken zum Erkennen und Korrigieren von Fehlern in Daten
    DE602004005025T2 (de) Instruktionen zur verarbeitung einer verschlusselten nachricht
    DE112013005431T5 (de) Sichere Schlüsselableitungs- und Kryptografielogik für integrierte Schaltungen
    DE102013200161A1 (de) Datenverschlüsselung/-Komprimierung auf der Grundlage einer Speicheradressübersetzung
    DE102014113430A1 (de) Verteilte Datenspeicherung mittels Berechtigungstoken
    DE102014113300A1 (de) Datenspeicherung im persistenten Speicher
    DE102013203126A1 (de) Transparentes Zugreifen auf verschlüsselte nicht-relationale Daten in Echtzeit
    DE202015009801U1 (de) Sicherheits-Plug-In für eine System-on-a-Chip-Plattform
    WO2014131539A1 (de) Erstellen eines abgeleiteten schlüssels aus einem kryptographischen schlüssel mittels einer physikalisch nicht klonbaren funktion
    DE112011105688T5 (de) Ent- und Verschlüsselung von Anwendungsdaten
    DE102008006759A1 (de) Prozessor-Anordnungen, Prozessor, Verfahren zum Betreiben einer Prozessor-Anordnung
    WO2019076574A1 (de) Bidirektionale verkettete blockchain-struktur
    DE102015010906A1 (de) Verfahren und Einrichtung zum Erzeugen von Inhaltsleere über Mülldaten, wenn Verschlüsselungsparameter geändert werden
    US20190042795A1 (en) Compressed integrity check counters in memory
    DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel