DE102009055390B4 - Vorrichtung und Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich - Google Patents

Vorrichtung und Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich Download PDF

Info

Publication number
DE102009055390B4
DE102009055390B4 DE102009055390.8A DE102009055390A DE102009055390B4 DE 102009055390 B4 DE102009055390 B4 DE 102009055390B4 DE 102009055390 A DE102009055390 A DE 102009055390A DE 102009055390 B4 DE102009055390 B4 DE 102009055390B4
Authority
DE
Germany
Prior art keywords
data
stored
memory area
error
detection value
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.)
Active
Application number
DE102009055390.8A
Other languages
English (en)
Other versions
DE102009055390A1 (de
Inventor
Steffen Sonnekalb
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102009055390A1 publication Critical patent/DE102009055390A1/de
Application granted granted Critical
Publication of DE102009055390B4 publication Critical patent/DE102009055390B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • 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

Abstract

Vorrichtung (30) zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich (31), wobei die Daten, die zu speichern sind, einen Datenblock (32) und einen zugeordneten Fehlererfassungswert (33) umfassen, wobei die Vorrichtung (30) folgende Merkmale umfasst:eine Datenlesevorrichtung (35), die konfiguriert ist, um eine Datenänderungsleseoperation durchzuführen, um gespeicherte Daten von dem vorbestimmten Speicherbereich (31) zu lesen, wobei die gespeicherten Daten einen gespeicherten Datenblock (32) und einen zugeordneten gespeicherten Fehlererfassungswert (33) umfassen;einen Speichermanipulator (36), der konfiguriert ist, um während der Datenänderungsleseoperation nach dem Lesen der gespeicherten Daten zumindest entweder den gespeicherten Datenblock (32) oder den zugeordneten gespeicherten Fehlererfassungswert (33) in dem vorbestimmten Speicherbereich (31) zu manipulieren; undeine Datenschreibvorrichtung (37), die konfiguriert ist, um nach dem Manipulieren die Daten, die zu speichern sind, in den vorbestimmten Speicherbereich (31) zu schreiben,wobei der Speichermanipulator (36) konfiguriert ist, um künstlich Fehler durch das Manipulieren der gespeicherten Daten in dem vorbestimmten Speicherbereich (31) einzuführen, so dass die Manipulation nicht durch Anlegen eines dem Fehlererfassungswert (33) zugrundeliegenden Fehlerkorrekturschemas an die manipulierten Daten in dem vorbestimmten Speicherbereich (31) korrigiert werden kann, so dass die Manipulation erfasst, aber nicht korrigiert werden kann, wenn die Daten, die zu speichern sind, nicht in den vorbestimmten Speicherbereich (31) geschrieben werden, nachdem der vorbestimmte Speicherbereich (31) manipuliert wurde.

Description

  • Ausführungsbeispiele beziehen sich auf eine Vorrichtung und ein Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich, die beispielsweise angewendet werden können zum Erfassen von kryptographischen Angriffen.
  • In kryptographischen Systemen können sogenannte Seitenkanalangriffe durchgeführt werden, um kryptographische Informationen von dem Kryptosystem zu erhalten. Beispielsweise ist Fehleranalyse ein Typ von verschiedenen möglichen Seitenkanalangriffen auf dem Gebiet der Kryptographie. Das Prinzip hier ist es, Fehler in kryptographische Implementierungen einzubringen, um interne Zustände von einem Prozessor oder einem zugeordneten Speicher zu offenbaren.
  • Beispielsweise kann eine Smart Card, die einen eingebetteten Prozessor enthält, hoher Temperatur, ungestützter Versorgungsspannung oder ungestütztem Versorgungsstrom, übermäßig hoher Übertaktung, starken elektrischen oder magnetischen Feldern oder sogar Ionisierungsstrahlung ausgesetzt werden, um den Betrieb einer zentralen Verarbeitungseinheit (CPU; CPU = Central Processing Unit) oder zugeordneter Peripheriegeräte zu beeinflussen, wie z.B. eines Hauptspeichers (z.B. eines Direktzugriffsspeichers, RAM). Hier können aufgrund eines solchen Angriffs Schreiboperationen zum Zurückschreiben von Daten in den Hauptspeicher verfälscht werden, so dass z.B. Daten in die falschen Speicheradressen zurückgeschrieben werden.
  • Aus der US 2006/0 015 754 A1 ist sind Verfahren und Vorrichtungen bekannt, um dynamisch einen Sicherheitsversionsparameter, der verwendet wird, um sichere Daten zu verschlüsseln, zu aktualisieren.
  • Aus der US 2003/0 012 372 A1 sind Systeme und Verfahren zum gemeinsamen Durchführen von Verschlüsselung und Fehlerkorrekturcodierung bekannt.
  • Somit ist es wünschenswert, ein Konzept zum Erfassen von solchen falschen Speicherschreiboperationen zu schaffen, die möglicherweise durch böswillige Seitenkanalangriffe verursacht werden.
  • Es ist die Aufgabe der vorliegenden Erfindung, Vorrichtungen und Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich sowie ein Computerprogramm mit verbesserten Charakteristika zu schaffen.
  • Die Aufgabe wird gelöst durch die Merkmale der unabhängigen Ansprüche. Weiterbildungen finden sich in den abhängigen Ansprüchen.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf beiliegende Zeichnungen näher erläutert. Es zeigen:
    • 1 ein schematisches Flussdiagramm eines Verfahrens für ein destruktives Lesen von Daten eines vorbestimmten Speicherbereichs um eine Schreiboperation zu sichern, gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
    • 2 ein Flussdiagramm zum Erfassen eines Angriffs basierend auf einem Ausführungsbeispiel der vorliegenden Erfindung; und
    • 3 ein schematisches Blockdiagramm einer Vorrichtung zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich, gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • Die folgende Beschreibung umfasst spezifische Einzelheiten, wie z.B. bestimmte Ausführungsbeispiele, Prozeduren, Techniken usw. zu Erklärungs- aber nicht Begrenzungszwecken. Es ist für einen Fachmann auf diesem Gebiet klar, dass neben diesen spezifischen Einzelheiten andere Ausführungsbeispiele verwendet werden können. Beispielsweise kann die Technologie auch bei jedem Speichersystemtyp verwendet werden, obwohl die folgende Beschreibung durchgeführt wird unter Verwendung von nicht begrenzenden beispielhaften Anwendungen bei cache-basierten Speichersystemen. In einigen Fällen werden detaillierte Beschreibungen gut bekannter Verfahren, Schnittstellen, Schaltungen und Vorrichtungen ausgelassen, um die Beschreibung nicht mit unnötigen Einzelheiten zu belasten. Darüber hinaus sind bei einigen der Figuren einzelne Blöcke gezeigt. Fachleute auf diesem Gebiet werden erkennen, dass die Funktionen dieser Blöcke unter Verwendung einzelner Hardwareschaltungen implementiert werden können, die Softwareprogramme und Daten verwenden, in Verbindung mit einem geeignet programmierten Digitalmikroprozessor oder einem Universalcomputer, der anwendungsspezifische integrierte Schaltungsanordnung (ASIC; ASIC = application specific integrated circuitry) und/oder einen oder mehrere Digitalsignalprozessoren (DSPs) verwendet.
  • Viele der heutigen Speichertechnologien haben das Problem, dass sporadisch einzelne Bitfehler auftreten können. Dies ist unvermeidbar. Das Problem ist jedoch allgemein begrenzt auf einzelne weit verstreute Bits. Mehrbitfehler in einer begrenzten Datenregion treten auf, sie treten jedoch so selten auf, dass sie im Allgemeinen kein Zuverlässigkeitsproblem darstellen. Die Zuverlässigkeit vieler Speicherprodukte leidet jedoch unter den einzelnen Fehlern oder Einbitfehlern. Aus diesem Grund sind Daten, die in den Speicherelementen gespeichert sind, mit Redundanzinformationen versehen, die es ermöglichen, dass diese Fehler erkannt und, falls möglich, korrigiert werden.
  • Dies kann erreicht werden durch Hinzufügen eines Fehlercodes pro Speicherblock, wobei ein Speicherblock in einzelne Speicherblöcke organisiert ist und jeder Speicherblock ein oder mehrere Datenwörter umfasst (z.B. ein Datenwort = 1 Byte). Eine Mehrzahl von Datenwörtern, die in einem Speicherblock gespeichert sind, soll in der Folge als ein Datenblock bezeichnet werden, d.h. ein Datenblock umfasst eine Mehrzahl von Datenwörtern.
  • Sowohl Fehlererfassungscodes (EDC; EDC = error-detecting codes) als auch Fehlerkorrekturcodes (ECC; ECC = error-correcting codes) können als Fehlercodes verwendet werden. Falls ein sehr kleiner Speicherblock als Grundeinheit gewählt wird, ist der Aufwand des Codes, d.h. insbesondere der Speicherplatz, der zum Speichern eines Fehlererfassungs- oder -korrekturwerts erforderlich ist, der einem Datenblock zugeordnet ist, im Vergleich zu der Größe des Speichers oder Datenblocks sehr groß. Falls jedoch eine größere Blockeinheit oder Größe des darunterliegenden Speicherblocks gewählt wird, wird der zusätzliche Aufwand für den Fehlercode oder den Fehlererfassungswert erträglich, ein Speicherzugriff wird jedoch sehr langsam und energieintensiv werden aufgrund der Erfordernis, den gesamten Block zu lesen, selbst wenn nur ein einzelnes Byte des Blocks gefordert ist. Zum Prüfen der Richtigkeit eines Datenworts, z.B. eines einzelnen Bytes eines Datenblocks, muss der gesamte Datenblock, der in einem Speicherblock gespeichert ist, von dem Speicherblock ausgelesen werden. Dies liegt daran, dass auf einen größeren Speicher typischerweise nur auf einer Speicherblockbasis zugegriffen werden kann. Falls beispielsweise ein Datenblock eine Nettodatenblockgröße von 16 Bytes oder 128 Bits aufweist, die Unterwörter oder Datenwörter umfassen, die jeweils vier Bytes umfassen, müssen die gesamten 16 Bytes gelesen werden, um auf ein einzelnes Byte zuzugreifen. Dies erzeugt einen Zeitverlust von zumindest drei oder vier Takten zum Lesen der drei Datenwörtern, die dieses einzelne Byte nicht umfassen.
  • Die Möglichkeit zum Kompensieren des Problems des langsamen Zugriffs im Falle eines größeren Speicherblocks ist das Installieren und Verwenden eines Cache-Speichers zwischen dem Hauptspeicher und dem Prozessor. Der Cache ist ein kleinerer schneller Speicher, der Kopien der Daten von den am häufigsten verwendeten Hauptspeicherstellen speichern kann. Wenn die CPU von einem Speicherbereich in dem Hauptspeicher lesen oder in denselben schreiben muss, prüft sie zunächst, ob eine Kopie dieses Speicherbereichs bereits in dem Cache ist. Falls dies der Fall ist, kann die CPU unmittelbar von dem Cache lesen oder in denselben schreiben, was sehr viel schneller ist als Lesen von oder Schreiben in den Hauptspeicher.
  • Im Fall eines Cache-Fehlzugriffs, d.h. in dem Fall, dass sich Daten eines gewünschten Speicherblocks nicht bereits in dem Cache-Speicher befinden, werden Daten des Speicherblocks, der einen Datenblock und einen zugeordneten Fehlererfassungs- oder -korrekturwert umfasst, von dem Hauptspeicher in den Cache gelesen. Fehlererfassung und/oder -korrektur kann basierend auf dem Datenblock und dem zugeordneten Fehlererfassungs/Korrekturwert durchgeführt werden.
  • Sobald dieselben in dem Cache sind, kann die CPU die gewünschten Daten verarbeiten oder manipulieren, bevor der resultierende Datenblock von dem Cache in den Hauptspeicher zurückgeschrieben wird. Während oder vor der Speicherschreiboperation wird ein neuer Fehlererfassungs- oder Fehlerkorrekturcode für den resultierenden Datenblock bestimmt. Danach werden die resultierenden Daten zurück in den Hauptspeicher geschrieben.
  • Aufgrund eines fehlerverursachenden Angriffs kann ein Problem entstehen, da die resultierenden Daten nicht zu der Adresse des ursprünglichen Speicherblocks zurückgeschrieben werden, sondern zu einer falschen Speicheradresse des Hauptspeichers. In diesem Fall ist der ursprüngliche Datenblock nach wie vor an der Adresse des ursprünglichen Speicherblocks verfügbar und somit kann der ursprüngliche Datenblock an der ursprünglichen Speicheradresse zu einem späteren Zeitpunkt gelesen werden, ohne zu realisieren, dass diese ursprünglichen Daten eigentlich bereits hätten modifiziert werden sollen. Dies liegt daran, dass der zugeordnete Fehlererfassungs/Korrekturwert (z.B. eine Prüfsumme) ebenfalls nach wie vor korrekt ist.
  • Ein Flussdiagramm eines Verfahrens 10 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung, das das oben erwähnte Problem lösen kann, ist in 1 schematisch gezeigt.
  • Das Verfahren 10 dient zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmen Speicherbereich, wobei die Daten, die zu speichern sind, einen Datenblock und einen zugeordneten Fehlererfassungs- oder -korrekturwert umfassen. Wie es oben erklärt wurde, kann der vorbestimmte Speicherbereich ein Speicherblock sein, der in einem Hauptspeicher angeordnet ist, wie z.B. ein Direktzugriffsspeicher (RAM).
  • In einem ersten Schritt 12 werden Daten, die in dem vorbestimmten Speicherbereich gespeichert sind, von dem vorbestimmten Speicherbereich gelesen, z.B. über einen Speicherbus. Die gespeicherten Daten umfassen dabei einen gespeicherten Datenblock und einen Fehlererfassungs- oder -korrekturwert, der dem gespeicherten Datenblock zugeordnet ist. Dieser Fehlererfassungs/Korrekturwert kann beispielsweise ein Paritätswert, eine Prüfsumme oder ein anderer Wert sein, der Redundanzinformationen von bekannten Fehlerkorrekturcodes umfasst, auf deren Basis eine begrenzte Menge an Fehlern in dem Datenblock erfasst und/oder korrigiert werden kann.
  • Nach dem Lesen 12 der gespeicherten Daten wird in einem Schritt 14 zumindest entweder der gespeicherte Datenblock oder der zugeordnete gespeicherte Fehlererfassungswert in dem vorbestimmten Speicherbereich manipuliert. Es wird nachfolgend beschrieben, wie der vorbestimmte Speicherbereich manipuliert werden kann. Anders ausgedrückt, der Inhalt des Speicherblocks, von dem der ursprüngliche Datenblock und der zugeordnete Fehlererfassungs/Korrekturwert in Schritt 12 gelesen wurden, wird geändert.
  • Ferner werden nach der Manipulation in Schritt 14 die Daten, die zu speichern sind, in Schritt 16 in den vorbestimmten Speicherbereich geschrieben. Daher ergeben sich die Daten, die zu speichern sind, von dem ursprünglichen Datenblock, der von dem vorbestimmten Speicherbereich gelesen wird, wobei zumindest einzelne Datenwörter des ursprünglichen Datenblocks in der Zwischenzeit verarbeitet und geändert worden sein können, z.B. durch eine CPU.
  • Gemäß einigen Ausführungsbeispielen wird das Manipulieren 14 des vorbestimmten Speicherbereichs durchgeführt, so dass die Manipulation nicht korrigiert werden kann durch Anlegen eines Fehlerkorrekturschemas an die manipulierten Daten in dem vorbestimmten Speicherbereich. Das heißt der Inhalt des ursprünglichen Speicherbereichs wird in einem solchen Ausmaß geändert, dass durch diese Änderung künstlich eingeführte Fehler nicht durch ein angewendetes Fehlerkorrekturschema korrigiert werden können. Dies stellt sicher, dass eine verfälschte Schreiboperation (Schritt 16) auf jeden Fall erfasst werden kann zu einem späteren Zeitpunkt, wenn auf den ursprünglichen Speicherblock oder Daten, die in demselben gespeichert sind, zugegriffen wird.
  • Falls aufgrund einer verfälschten Schreiboperation die Daten, die zu speichern sind, d.h. die Daten, die sich von dem ursprünglichen Datenblock ergeben, nicht in den vorbestimmten Speicherbereich geschrieben werden, nachdem der vorbestimmte Speicher manipuliert wurde (Schritt 14) werden die darin gespeicherten manipulierten Daten nicht überschrieben. Da der Inhalt des ursprünglichen vorbestimmten Speicherbereichs geändert wurde, so dass der Datenblock und der Fehlererfassungs/Korrekturwert, die darin gespeichert sind, nicht zueinander passen in Bezug auf ein darunterliegendes Fehlerkorrekturschema, kann die systematische (und beträchtliche) Manipulation des ursprünglichen vorbestimmten Speicherbereichs erfasst werden, aber nicht korrigiert werden, wenn die manipulierten Daten zu einem späteren Zeitpunkt von dem vorbestimmten Speicherbereich gelesen werden. Die Manipulation in Schritt 14 muss so beträchtlich sein, dass der Fall eines Einzelbitfehlers (oder dergleichen) ausgeschlossen werden kann. Deshalb müssen durch die Manipulation genug Fehler eingeführt werden, so dass der Fehlercode nicht mehr in der Lage ist, sie zu korrigieren.
  • Auf diese Weise kann ein böswilliger Seitenkanalangriff, der zu einer falschen Schreib- oder Rückschreiboperation führt, zuverlässig erfasst werden und angemessene Gegenmaßnahmen können eingeleitet werden.
  • Die Manipulation 14 des vorbestimmten Speicherbereichs kann auf vielfältige Weise durchgeführt werden. Beispielsweise können die darin gespeicherten Daten zufällig manipuliert werden oder können manipuliert werden gemäß einem spezifischen Manipulationsschema, das angepasst sein kann, um zu einem definitiven Ausfall des darunterliegenden Fehlerkorrekturmechanismus zu führen, d.h. die Manipulation 14 sollte einen Fehlervektor in die Daten einführen, die in dem Speicherblock gespeichert sind, der durch das Fehlerkorrekturschema später nicht korrigiert werden kann. Eine effiziente Möglichkeit zum Einführen eines solchen Fehlervektors kann das Löschen oder Entfernen des gespeicherten Datenblocks und/oder des zugeordneten gespeicherten Fehlererfassungswerts von dem vorbestimmten Speicherbereich, d.h. dem Speicherblock, sein.
  • Wie es oben erwähnt wurde, kann der vorbestimmte Speicherbereich ein fehlercodegeschützter Speicherbereich sein, beispielsweise ein RAM, der mit einem Cache-Speicher gekoppelt ist. In diesem Fall umfasst das Lesen 12 das Lesen der gespeicherten Daten von dem fehlercodegeschützten Speicherbereich in den Cache-Speicher. Gleichartig dazu umfasst das Schreiben 16 das Schreiben der Daten, die zu speichern sind, von dem Cache-Speicher in den fehlercodegeschützten Speicherbereich.
  • Um ein vorher falsches Schreiben 16 oder eine solche Schreiboperation zu erfassen, z.B. aufgrund eines Angriffszenarios, umfasst des Lesen 12 das Durchführen einer Fehleridentifikation und/oder Fehlerkorrektur des gelesenen Datenblocks basierend auf dem Lesefehlererfassungs/Korrekturwert, wobei beide von dem vorbestimmten Speicherblock gelesen werden. Zu diesem Zweck können verschiedene Fehlerkorrekturalgorithmen angelegt werden. Falls ein identifizierter Fehler des Datenblocks, der von dem vordefinierten Speicherbereich gelesen wird, nicht durch einen geeigneten Fehlerkorrekturmechanismus korrigiert werden kann, folgt dem Lesen 12 das Signalisieren eines vorhergehenden fehlerhaften Schreibens 16. In diesem Fall kann ein potentieller kryptographischer Angriff signalisiert werden und geeignete Gegenmaßnahmen, wie z.B. eine Systemabschaltung können eingeleitet werden. Dies wird nun mit Bezugnahme auf 2 näher dargestellt.
  • 2 zeigt beispielhaft ein Verfahren 20, das weitere Schritte umfasst nach dem Lesen 12 der gespeicherten Daten von dem vorbestimmten Speicherbereich. Nachdem die Daten beispielsweise von einem Hauptspeicher in einen Cache-Speicher gelesen werden, wird ein Fehleridentifikations- und/oder Korrekturschritt 24 durchgeführt unter Verwendung der gelesenen Daten. Schritt 24 kann daher direkt in dem Hauptspeicher selbst durchgeführt werden, in dem die Daten gespeichert sind. Gleichartig dazu kann Schritt 24 auch außerhalb des Hauptspeichers durchgeführt werden, z.B. einem Cache-Speicher oder einer angehängten CPU unter Verwendung angemessener Programmanweisungen.
  • In einem weiteren Schritt 25 wird bestimmt, ob der Datenblock und der zugeordnete Fehlererfassungs/Korrekturwert, die von dem vorbestimmten Speichererbereich abgerufen werden, fehlerfrei sind oder eine Fehlerkorrektur ermöglichen. Falls dies der Fall ist, kann der fehlerfreie oder fehlerkorrigierte Datenblock für weitere Verarbeitung innerhalb des Cache-Speichers oder durch die CPU verwendet werden (Schritt 26). Nachdem der Datenblock verarbeitet oder geändert wurde, kann der geänderte Datenblock erneut fehlergeschützt werden und zurückgeschrieben werden in den ursprünglichen vorbestimmten Speicherbereich. Es ist jedoch anzumerken, dass gemäß Ausführungsbeispielen der vorliegenden Erfindung der Inhalt des vorbestimmten Speicherblocks modifiziert wurde (Schritt 14) zwischen der Leseoperation 12 und der Schreiboperation 16.
  • Falls jedoch Schritt 25 anzeigt, dass eine Fehlerkorrektur der Daten, die von dem vorbestimmten Speicherbereich gelesen werden, basierend auf einem darunterliegenden Fehlerkorrekturschema nicht möglich ist, kann ein Alarmsignal ausgegeben oder eine Angriffsgegenmaßnahme eingeleitet werden (Schritt 28).
  • Mit Bezugnahme auf 3 ist ein schematisches Blockdiagramm einer Vorrichtung 30 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung gezeigt, zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich 31.
  • In dem vorbestimmten Speicherbereich 31, der ein adressierbarer Speicherblock oder eine Einheit eines Hauptspeichers 34 sein kann, wie z.B. eines RAM, sind ein Datenblock 32 und ein zugeordneter Fehlererfassungswert 33 gespeichert.
  • Die Vorrichtung 30 umfasst eine Datenlesevorrichtung 35, die konfiguriert ist, um die gespeicherten Daten 32, 33 von dem vorbestimmten Speicherbereich 31 zu lesen. Ferner umfasst die Vorrichtung 30 einen Speichermanipulator 36, der konfiguriert ist, um nach dem Lesen der gespeicherten Daten 32, 33 zumindest entweder den gespeicherten Datenblock 32 oder den zugeordneten gespeicherten Fehlererfassungswert 33 in dem vorbestimmten Speicherbereich 31 zu manipulieren. Außerdem ist eine Datenschreibvorrichtung 37 vorgesehen, um nach dem Manipulieren die Daten, die zu speichern sind, in den vorbestimmten Speicherbereich 31 zu schreiben.
  • Gemäß einigen Ausführungsbeispielen kann die Vorrichtung 30 ferner einen Datenmanipulator 38 umfassen, der konfiguriert ist, um nach dem Lesen und vor dem Schreiben zumindest einen Teil des gelesenen Datenblocks 32 zu manipulieren, um den Datenblock zu erhalten, der zu speichern ist. Der Datenmanipulator kann beispielsweise eine Verarbeitungseinheit (CPU) sein, zum Verarbeiten und Ändern von Daten, die in dem Hauptspeicher 34 gespeichert sind, gemäß Programmanweisungen.
  • Wie es oben erwähnt wurde, kann die Datenlesevorrichtung 35 konfiguriert sein, um eine Fehleridentifikation und/oder -korrektur der gelesenen Daten 32, 33 durchzuführen, nach dem Zuführen der Lesedaten in einen geeigneten Fehlererfassungsmechanismus. Die Datenlesevorrichtung 35 kann auch konfiguriert sein, um eine vorhergehende fehlerhafte Schreiboperation durch die Datenschreibvorrichtung 37 zu signalisieren, falls ein identifizierter Fehler des Datenblocks 32, der von dem vordefinierten Speicherbereich 31 gelesen wird, nicht durch den Fehlerkorrekturmechanismus korrigiert werden kann. In diesem Fall wird ein Alarm signalisiert und/oder eine geeignete Angriffsgegenmaßnahme kann eingeleitet werden.
  • Die Datenlesevorrichtung 35, der Speichermanipulator 36 und die Datenschreibvorrichtung 37 können aufeinander abgestimmt oder aneinander angepasst sein, was durch die gestrichelten Pfeile in 3 angezeigt ist. Dies bedeutet, dass der folgende Zeitplan durchgeführt werden muss:
    1. 1. Lesen von dem vorbestimmte Speicherbereich 31;
    2. 2. Manipulieren, z.B. Löschen, des vorbestimmten Speicherbereichs 31, und
    3. 3. Schreiben von Daten, die zu speichern sind, in den vorbestimmten Speicherbereich 31 oder, im Falle eines Angriffs, in eine andere Stelle.
  • Die einzelnen Blöcke der Vorrichtung 30 können als Hardware implementiert sein. Sie können zwischen unterschiedlichen Komponenten eines Rechen- oder Speichersystems verteilt sein. Das heißt, obwohl dies nicht explizit gezeigt ist, die verschiedenen Blöcke können zwischen einem Hauptspeicher 34 und einem Cache-Speicher und/oder einer CPU verteilt sein. Zumindest der Speichermanipulator 36 kann in dem Hauptspeicher 35 selbst implementiert sein. D.h. die Manipulation oder Änderung des vorbestimmten Speicherbereichs wird durch den Hauptspeicher 34 selbst ausgeführt, z.B. unter Verwendung einer eingebetteten Steuerung, während oder nach der Leseoperation 12. Aus diesem Grund kann eine geeignete Speichermanipulations- oder Löschschaltung in den Hauptspeicher 34 implementiert sein.
  • Außerdem können auch die Datenlesevorrichtung 35 und/oder die Datenschreibvorrichtung 37 in den Hauptspeicher 34 integriert sein als Teil einer I/O- (Eingabe/Ausgabe-) Schnittstelle. Gemäß anderen Ausführungsbeispielen können die Lesevorrichtung 35 und die Schreibvorrichtung 37 Teil eines Speichers oder einer Cache-Steuerung sein.
  • Der Datenmanipulator 38 kann realisiert werden durch eine CPU oder einen Mikrocontroller zum Verarbeiten und Handhaben der Daten, die in dem Hauptspeicher 34 gespeichert sind, wie es oben erwähnt wurde.
  • Zusammenfassend liefern Ausführungsbeispiele ein Konzept zum Ermöglichen eines hohen Schutzes von Speicherschreiboperationen für fehlercodegeschützte Daten. Dies kann erreicht werden durch Implementieren einer Datenänderungsleseoperation vor einer Schreiboperation ohne weitere komplexe Maßnahmen zu erfordern. Vor jeder Schreiboperation werden Daten von einem vordefinierten Speicherbereich gelesen und eine Fehlercodeuntersuchung wird durchgeführt. Genau nach der Leseoperation werden die gelesenen Daten modifiziert oder sogar gelöscht. Diese Modifikationsoperation kann durch den Speicher selbst durchgeführt werden während oder nach der tatsächlichen Leseoperation. Nachfolgend können die gelesenen Daten (die z.B. durch eine CPU zu verarbeiten sind) nicht ein zweites Mal von dem vordefinierten Speicherbereich gelesen werden, ohne dass in der Zwischenzeit eine erfolgreiche Schreiboperation stattgefunden hat, d.h. zwischen den zwei Leseoperationen, die auf den gleichen Speicherbereich zugreifen. Eine Schreiboperation wird als erfolgreich angesehen, falls die vorher gelesenen und geänderten Daten korrekt in den vordefinierten Speicherbereich zurückgeschrieben werden. Im Fall einer falschen Schreiboperation, d.h. einer Schreiboperation, die die gelesenen und geänderten Daten zu einer falschen Speicheradresse zurück schreibt, existiert jedoch kein gültiges Fehlercodewort mehr für die ursprünglich gelesenen Daten an dem vordefinierten Speicherbereich (da die gespeicherten Daten modifiziert/gelöscht wurden). Somit kann sichergestellt werden, dass eine verfälschte Schreiboperation erfasst werden kann während eines späteren Zugriffs auf die absichtlich beschädigten Daten, die in dem vorbestimmten Speicherbereich gespeichert sind.
  • Ausführungsbeispiele sind besonders geeignet für Systeme, die Datenzugriff über einen Cache-Speicher durchführen. Dies macht insbesondere Sinn für fehlergeschützte Hauptspeicher, da eine fehlerwortgeschützte Speichereinheit wesentlich größer ist als die kleinste schreibbare Dateneinheit (beispielsweise ein Byte). In diesem Fall muss ein Speicherbereich oder eine Speichereinheit, die überschrieben werden soll, zu dem Cache übertragen werden (durch die Leseoperation 12). Da einige Ausführungsbeispiele die Daten, die von dem Hauptspeicherbereich gelesen werden, ungültig machen, muss sichergestellt werden, dass die zwischengespeicherten Daten zurück in den Hauptspeicher geschrieben werden, wenn dieselben von dem Cache zu verschieben sind, unabhängig davon, ob sie wirklich überschrieben wurden oder nicht. Für RAM-Hauptspeicher ist dies kein wesentlicher Nachteil, da auf RAM, auf den während des Schreibens zugegriffen wird, normalerweise ebenfalls innerhalb einer eher kurzen Zeitperiode zugegriffen wird durch Schreiben (unter der Bedingung einer vernünftigen Cache-Trefferrate). Somit können Ausführungsbeispiele äußerst effizient sein in einem Cache-System und können einen hervorragenden Schutz gegen fehlerhaftes Speicherschreiben, z.B. aufgrund von Seitenkanalangriffen, bereitstellen.
  • Im Prinzip kann die vorliegende Erfindung selbstverständlich auch für jeden Speichertyp angewendet werden, der Lese- und Schreibzugriff ermöglicht.
  • Ausführungsbeispiele können besonders vorteilhaft bei Speichersystemen angewendet werden, die einen Hauptspeicher umfassen, wie z.B. einen flashbasierten Speicher oder einen RAM-Typ-Speicher in Verbindung mit einem schnelleren Cache-Speicher.
  • Abhängig von den Umständen kann das erfindungsgemäße Verfahren zum Schreiben von Daten entweder in Hardware oder Software implementiert werden. Die Implementierung kann auf einem digitalen Speichermedium sein, insbesondere auf einer Platte, CD oder DVD mit Steuersignalen, die elektronisch ausgelesen werden können, die mit einem programmierbaren Computersystem zusammenarbeiten können, so dass das erfindungsgemäße Verfahren zum Schreiben von Daten ausgeführt wird. Allgemein ist die Erfindung somit auch ein Computerprogrammprodukt mit einem Programmcode, der auf einem maschinenlesbaren Träger gespeichert ist zum Durchführen von einem der erfindungsgemäßen Verfahren, wenn das Computerprogrammprodukt auf einem Computer läuft. Anders ausgedrückt, die Erfindung kann somit auch realisiert werden als ein Computerprogramm mit einem Programmcode zum Durchführen von einem der Verfahren, wenn das Computerprogramm auf einem Computer läuft.

Claims (16)

  1. Vorrichtung (30) zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich (31), wobei die Daten, die zu speichern sind, einen Datenblock (32) und einen zugeordneten Fehlererfassungswert (33) umfassen, wobei die Vorrichtung (30) folgende Merkmale umfasst: eine Datenlesevorrichtung (35), die konfiguriert ist, um eine Datenänderungsleseoperation durchzuführen, um gespeicherte Daten von dem vorbestimmten Speicherbereich (31) zu lesen, wobei die gespeicherten Daten einen gespeicherten Datenblock (32) und einen zugeordneten gespeicherten Fehlererfassungswert (33) umfassen; einen Speichermanipulator (36), der konfiguriert ist, um während der Datenänderungsleseoperation nach dem Lesen der gespeicherten Daten zumindest entweder den gespeicherten Datenblock (32) oder den zugeordneten gespeicherten Fehlererfassungswert (33) in dem vorbestimmten Speicherbereich (31) zu manipulieren; und eine Datenschreibvorrichtung (37), die konfiguriert ist, um nach dem Manipulieren die Daten, die zu speichern sind, in den vorbestimmten Speicherbereich (31) zu schreiben, wobei der Speichermanipulator (36) konfiguriert ist, um künstlich Fehler durch das Manipulieren der gespeicherten Daten in dem vorbestimmten Speicherbereich (31) einzuführen, so dass die Manipulation nicht durch Anlegen eines dem Fehlererfassungswert (33) zugrundeliegenden Fehlerkorrekturschemas an die manipulierten Daten in dem vorbestimmten Speicherbereich (31) korrigiert werden kann, so dass die Manipulation erfasst, aber nicht korrigiert werden kann, wenn die Daten, die zu speichern sind, nicht in den vorbestimmten Speicherbereich (31) geschrieben werden, nachdem der vorbestimmte Speicherbereich (31) manipuliert wurde.
  2. Vorrichtung (30) gemäß Anspruch 1, bei der der Speichermanipulator (36) konfiguriert ist, um den gespeicherten Datenblock (32) und/oder den zugeordneten gespeicherten Fehlererfassungswert (33) von dem vorbestimmten Speicherbereich (31) zu löschen.
  3. Vorrichtung (30) gemäß einem der Ansprüche 1 oder 2, bei der der vorbestimmte Speicherbereich (31) ein fehlercodegeschützter Speicherbereich (31) ist, der mit einem Cache-Speicher gekoppelt ist, wobei die Datenlesevorrichtung (35) konfiguriert ist, um die gespeicherten Daten von dem fehlercodegeschützten Speicherbereich (31) in den Cache-Speicher zu lesen, und bei dem die Datenschreibvorrichtung (37) konfiguriert ist, um die Daten, die zu speichern sind, von dem Cache-Speicher in den fehlercodegeschützten Speicherbereich (31) zu schreiben.
  4. Vorrichtung (30) gemäß einem der Ansprüche 1 bis 3, bei der die Datenlesevorrichtung (35) konfiguriert ist, um eine Fehleridentifikation und/oder Fehlerkorrektur des gespeicherten Datenblocks (32) basierend auf dem gespeicherten Fehlererfassungswert (33) durchzuführen.
  5. Vorrichtung (30) gemäß Anspruch 4, bei der die Datenschreibvorrichtung (37) konfiguriert ist, um einen Fehlerschutzmechanismus an den Datenblock (32) anzulegen, der zu speichern ist, was den Fehlererfassungswert (33) ergibt.
  6. Vorrichtung (30) gemäß Anspruch 4 oder 5, bei der die Datenlesevorrichtung (35) konfiguriert ist, um ein vorhergehendes fehlerhaftes Schreiben zu signalisieren, falls ein identifizierter Fehler des gespeicherten Datenblocks (32) nicht durch einen geeigneten Fehlerkorrekturmechanismus korrigiert werden kann.
  7. Vorrichtung (30) gemäß einem der Ansprüche 1 bis 6, bei der die Vorrichtung (30) ferner einen Datenmanipulator umfasst, der konfiguriert ist, um nach dem Lesen und vor dem Schreiben zumindest einen Teil des gelesenen Datenblocks (32) zu manipulieren, um den Datenblock (32) zu erhalten, der zu speichern ist.
  8. Vorrichtung (30) zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich (31), wobei die Daten, die zu speichern sind, einen Datenblock (32) und einen zugeordneten Fehlererfassungswert (33) umfassen, wobei die Vorrichtung (30) folgende Merkmale umfasst: eine Datenlesevorrichtung (35), die konfiguriert ist, um eine Datenänderungsleseoperation durchzuführen, um gespeicherte Daten von dem vorbestimmten Speicherbereich (31) zu lesen, wobei die gespeicherten Daten einen gespeicherten Datenblock (32) und einen zugeordneten gespeicherten Fehlererfassungswert (33) umfassen; einen Speichermanipulator (36), der konfiguriert ist, um während der Datenänderungsleseoperation nach dem Lesen der gespeicherten Daten den gespeicherten Datenblock (32) und/oder den zugeordneten gespeicherten Fehlererfassungswert (33) von dem vorbestimmten Speicherbereich (31) zu löschen; und eine Datenschreibvorrichtung (37), die konfiguriert ist, um nach dem Löschen die Daten, die zu speichern sind, in den vorbestimmten Speicherbereich (31) zu schreiben, wobei durch das Löschen ein künstlicher Fehler in dem vorbestimmten Speicherbereich (31) eingeführt wird, der nicht durch Anlegen eines dem Fehlererfassungswert (33) zugrundeliegenden Fehlerkorrekturschemas korrigiert werden kann, so dass er erfasst, aber nicht korrigiert werden kann, wenn die Daten, die zu speichern sind, nicht in den vorbestimmten Speicherbereich (31) geschrieben werden, nachdem der künstliche Fehler in den vorbestimmten Speicherbereich (31) eingeführt.
  9. Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich (31), wobei die Daten, die zu speichern sind, einen Datenblock (32) und einen zugeordneten Speichererfassungswert umfassen, wobei das Verfahren folgende Schritte umfasst: Durchführen einer Datenänderungsleseoperation, um gespeicherte Daten von dem vorbestimmten Speicherbereich (31) zu lesen (12), wobei die gespeicherten Daten einen gespeicherten Datenblock (32) und einen zugeordneten gespeicherten Fehlererfassungswert (33) umfassen; Manipulieren (14), während der Datenänderungsleseoperation und nach dem Lesen der gespeicherten Daten, zumindest entweder des gespeicherten Datenblocks (32) oder des zugeordneten gespeicherten Fehlererfassungswerts (33) in dem vorbestimmten Speicherbereich (31); und Schreiben (16), nach dem Manipulieren, der Daten, die zu speichern sind, in den vorbestimmten Speicherbereich (31), wobei durch das Manipulieren (14) künstlich Fehler der gespeicherten Daten in dem vorbestimmten Speicherbereich (31) eingeführt werden, so dass die Manipulation nicht korrigiert werden kann durch Anlegen eines dem Fehlererfassungswert (33) zugrundeliegenden Fehlerkorrekturschemas an die manipulierten Daten in dem vorbestimmten Speicherbereich (31), so dass die Manipulation erfasst, aber nicht korrigiert werden kann, wenn die Daten, die zu speichern sind, nicht in den vorbestimmten Speicherbereich (31) geschrieben werden, nachdem der vorbestimmte Speicherbereich (31) manipuliert wurde.
  10. Verfahren gemäß Anspruch 9, bei dem das Manipulieren das Löschen des gespeicherten Datenblocks (32) und/oder des zugeordneten gespeicherten Fehlererfassungswerts (33) von dem vorbestimmten Speicherbereich (31) umfasst.
  11. Verfahren gemäß einem der Ansprüche 9 oder 10, bei dem der vorbestimmte Speicherbereich (31) ein fehlercodegeschützter Speicherbereich ist, der mit einem Cache-Speicher gekoppelt ist, wobei das Lesen das Lesen der gespeicherten Daten von dem fehlercodegeschützten Speicherbereich in den Cache-Speicher umfasst, und wobei das Schreiben das Schreiben der Daten, die zu speichern sind, von dem Cache-Speicher in den fehlercodegeschützten Speicherbereich umfasst.
  12. Verfahren gemäß einem der Ansprüche 9 bis 11, bei dem das Lesen das Durchführen (24) einer Fehleridentifikation und/oder Fehlerkorrektur des gespeicherten Datenblocks (32) basierend auf dem gespeicherten Fehlererfassungswert (33) umfasst.
  13. Verfahren gemäß Anspruch 12, bei dem das Schreiben das Anlegen eines Fehlerschutzmechanismus an den Datenblock (32) umfasst, der zu speichern ist, was den Fehlererfassungswert (33) ergibt.
  14. Verfahren gemäß Anspruch 12 oder 13, bei dem dem Lesen das Signalisieren eines vorhergehenden fehlerhaften Schreibens folgt, falls ein identifizierter Fehler des gespeicherten Datenblocks (32) nicht durch einen geeigneten Fehlerkorrekturmechanismus korrigiert werden kann.
  15. Verfahren gemäß einem der Ansprüche 9 bis 15, bei dem das Verfahren ferner nach dem Lesen und vor dem Schreiben das Manipulieren von zumindest einem Teil des gelesenen Datenblocks (32) umfasst, um den Datenblock (32) zu erhalten, der zu speichern ist.
  16. Computerprogramm, das einen Programmcode zum Durchführen eines Verfahrens zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich (31) umfasst, wobei die Daten, die zu speichern sind, einen Datenblock (32) und einen zugeordneten Fehlererfassungswert (33) umfassen, wobei das Verfahren folgende Schritte umfasst: Durchführen einer Datenänderungsleseoperation, um gespeicherte Daten von dem vorbestimmten Speicherbereich (31) zu lesen, wobei die gespeicherten Daten einen gespeicherten Datenblock (32) und einen zugeordneten gespeicherten Fehlererfassungswert (33) umfassen; Manipulieren (14), während der Datenänderungsleseoperation und nach dem Lesen der gespeicherten Daten, zumindest entweder des gespeicherten Datenblocks (32) oder des zugeordneten gespeicherten Fehlererfassungswerts (33) in dem vorbestimmten Speicherbereich (31); und Schreiben (16), nach dem Manipulieren, der Daten, die zu speichern sind, in den vorbestimmten Speicherbereich (31), wobei durch das Manipulieren (14) künstlich Fehler der gespeicherten Daten in dem vorbestimmten Speicherbereich (31) eingeführt werden, so dass die Manipulation nicht korrigiert werden kann durch Anlegen eines dem Fehlererfassungswert (33) zugrundeliegenden Fehlerkorrekturschemas an die manipulierten Daten in dem vorbestimmten Speicherbereich (31), so dass die Manipulation erfasst, aber nicht korrigiert werden kann, wenn die Daten, die zu speichern sind, nicht in den vorbestimmten Speicherbereich (31) geschrieben werden, nachdem der vorbestimmte Speicherbereich (31) manipuliert wurde.
DE102009055390.8A 2009-01-09 2009-12-29 Vorrichtung und Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich Active DE102009055390B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/351,151 US8612777B2 (en) 2009-01-09 2009-01-09 Apparatus and method for writing data to be stored to a predetermined memory area
US12/351,151 2009-01-09

Publications (2)

Publication Number Publication Date
DE102009055390A1 DE102009055390A1 (de) 2010-07-15
DE102009055390B4 true DE102009055390B4 (de) 2022-04-28

Family

ID=42243753

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009055390.8A Active DE102009055390B4 (de) 2009-01-09 2009-12-29 Vorrichtung und Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich

Country Status (2)

Country Link
US (1) US8612777B2 (de)
DE (1) DE102009055390B4 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112083891B (zh) * 2020-09-22 2022-12-06 深圳芯邦科技股份有限公司 一种存储器中数据块的检测方法及相关设备
DE102021102777A1 (de) * 2021-02-05 2022-08-11 Infineon Technologies Ag Verarbeitung von in einem speicher gespeicherter daten

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030012372A1 (en) 2001-04-25 2003-01-16 Cheng Siu Lung System and method for joint encryption and error-correcting coding
US20060015754A1 (en) 2004-07-15 2006-01-19 International Business Machines Corporation E-fuses for storing security version data

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805799A (en) * 1995-12-01 1998-09-08 Quantum Corporation Data integrity and cross-check code with logical block address
US7092523B2 (en) * 1999-01-11 2006-08-15 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors
US6308256B1 (en) * 1999-08-18 2001-10-23 Sun Microsystems, Inc. Secure execution of program instructions provided by network interactions with processor
JP2002132456A (ja) * 2000-10-20 2002-05-10 Sony Corp 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
JP2002261751A (ja) * 2001-03-02 2002-09-13 Hitachi Ltd 暗号処理方法
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
US7194633B2 (en) * 2001-11-14 2007-03-20 International Business Machines Corporation Device and method with reduced information leakage
DE102005001953A1 (de) * 2005-01-14 2006-07-27 Infineon Technologies Ag Verfahren und Schaltungsanordnung zur Überprüfung eines Datensatzes mit mehreren Datenworten
DE102005028221B4 (de) * 2005-06-17 2007-10-11 Infineon Technologies Ag Vorrichtung und Verfahren zum Schutz der Integrität von Daten
EP1748374A1 (de) * 2005-07-08 2007-01-31 STMicroelectronics SA Verfahren und Vorrichtung zum Schutz eines Speichers gegen Angriffe mittels Fehlerinjektion

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030012372A1 (en) 2001-04-25 2003-01-16 Cheng Siu Lung System and method for joint encryption and error-correcting coding
US20060015754A1 (en) 2004-07-15 2006-01-19 International Business Machines Corporation E-fuses for storing security version data

Also Published As

Publication number Publication date
DE102009055390A1 (de) 2010-07-15
US8612777B2 (en) 2013-12-17
US20100180181A1 (en) 2010-07-15

Similar Documents

Publication Publication Date Title
DE602004003275T2 (de) Nichtflüchtiger Speicher mit Seiten-Kopierfunktion und entsprechendes Verfahren
DE102006036070B4 (de) Ladungsfallenspeichervorrichtung und Verfahren für deren Herstellung und Betrieb
EP1883906A1 (de) Tragbarer datenträger mit sicherer datenverarbeitung
DE102015209502A1 (de) Markierungsprogrammierung in nichtflüchtigen Speichern
DE102005061367A1 (de) IC-Chipkarte und Verfahren zur Detektion von Datenmanipulation
DE102015210651B4 (de) Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
DE102006009214B4 (de) Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers
DE102009055390B4 (de) Vorrichtung und Verfahren zum Schreiben von Daten, die zu speichern sind, in einen vorbestimmten Speicherbereich
EP1611517B1 (de) Programmgesteuerte einheit
DE10315726A1 (de) Programmgesteuerte Einheit
DE102017124313A1 (de) Speicheranordnung und verfahren zum verifizieren eines speicherzugriffs
EP1636700A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
EP1611515B1 (de) Programmgesteuerte einheit
DE10254659A1 (de) Schaltungsanordnung mit nicht-flüchtigem Speichermodul und Verfahren zum Erfassen von Lichtattacken auf das nicht-flüchtige Speichermodul
DE102017124805B4 (de) Speicheranordnung und verfahren zum zwischenspeichern von speicherinhalten
DE102013100820A1 (de) Verfahren zum sicheren Löschen eines nichtflüchtigen Halbleiter-Massenspeichers, Computersystem sowie Computerprogrammprodukt
DE102013108073A1 (de) Datenverarbeitungsanordnung und verfahren zur datenverarbeitung
EP2595061B1 (de) Verfahren zum Schutz gegen Schadcode
DE102009033211A1 (de) Chipkarte mit Überwachung der Integrität auf Softwarebasis
DE102018123921A1 (de) Techniken zum Verhindern von Speicherkorruption
DE102018112816A1 (de) Adresscodierter Zugriff auf Speicher
EP0011136A1 (de) Schaltungsanordnung zum Integritätsschutz für einen Lese-/Schreib-Steuerspeicher
DE102022111126A1 (de) Datenverarbeitungsvorrichtung und verfahren zum prüfen der integrität eines speichers
DE102017116280B4 (de) Speicheranordnung
DE102021201580A1 (de) Speichervorrichtung und Verfahren zum Ändern von Speicherzellen einer Speichervorrichtung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative