DE102015114233B4 - Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors - Google Patents

Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors Download PDF

Info

Publication number
DE102015114233B4
DE102015114233B4 DE102015114233.3A DE102015114233A DE102015114233B4 DE 102015114233 B4 DE102015114233 B4 DE 102015114233B4 DE 102015114233 A DE102015114233 A DE 102015114233A DE 102015114233 B4 DE102015114233 B4 DE 102015114233B4
Authority
DE
Germany
Prior art keywords
activation signal
memory area
write activation
word
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102015114233.3A
Other languages
English (en)
Other versions
DE102015114233A1 (de
Inventor
Benedikt DRIESSEN
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
Priority to DE102015114233.3A priority Critical patent/DE102015114233B4/de
Publication of DE102015114233A1 publication Critical patent/DE102015114233A1/de
Application granted granted Critical
Publication of DE102015114233B4 publication Critical patent/DE102015114233B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Gemäß einem Ausführungsbeispiel wird eine Datenverarbeitungsvorrichtung bereitgestellt, die aufweist: eine Kodierungseinrichtung, die eingerichtet ist, einen Datenvektor zu kodieren, ein erstes Teilwort des Codeworts einem ersten Speicherbereich zuzuführen und ein zweites Teilwort des Codeworts einem zweiten Speicherbereich zuzuführen, eine erste und eine zweite Schreibaktivierungssignalquelle, die dem ersten bzw. dem zweiten Speicherbereich ein erstes bzw. ein zweites Schreibaktivierungssignal zuführt, eine Ausleseeinrichtung, die das erste Teilwort und das zweite Teilwort aus den Speicherbereichen ausliest und eine Überprüfungseinrichtung, die überprüft, ob das erste ausgelesene Teilwort und das zweite ausgelesene Teilwort ein gültiges Codewort des Codes bilden und ein Fehlersignal auszugeben, falls nicht.

Description

  • Ausführungsbeispiele betreffen allgemein Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors.
  • Sicherheitsrelevante Datenverarbeitungssysteme wie ein Mikroprozessor oder ein Mikrocontroller, die beispielsweise auf einer Chipkarte vorgesehen sind, sollen typischerweise gegen Angriffe geschützt werden. Insbesondere sollen beispielsweise Manipulationen von erzeugten Daten und von Befehlen (und damit einer Programmausführung) durch die Injektion von Fehlern durch einen Angreifer vermieden werden. Um zu hohe zusätzliche Kosten hinsichtlich Chipflächenbedarf und Energieverbrauch zu vermeiden, sind effiziente Herangehensweisen wünschenswert, die einen Schutz gegen solche Angriffe ermöglichen.
  • DE 10 2013 205 542 A1 offenbart eine Vorrichtung zur Verarbeitung von Daten, wobei die Vorrichtung eine Eingangsschnittstelle zum Empfang von Eingangsdaten aufweist und eine Verarbeitungseinheit zur Verarbeitung von Daten, dadurch gekennzeichnet, dass eine Kodiereinheit vorgesehen ist, die dazu ausgebildet ist, an der Eingangsschnittstelle als Eingangsdaten erhaltene Datenworte zu kodieren, um kodierte Datenworte zu erhalten, wobei für kodierte Datenworte die kodierten Datenworte und/oder ihre Verarbeitung durch die Vorrichtung charakterisierende Messwerte in Abhängigkeit mindestens einer physikalischen Größe der Vorrichtung ermittelbar sind, wobei die Kodiereinheit dazu ausgebildet ist, die Datenworte so zu kodieren, dass ein vorgebbarer Anteil aller Messwerte, vorzugsweise mindestens etwa 50% aller Messwerte, einen Unterschied zu einem Vorgabewert aufweist, der kleiner oder gleich einem vorgebbaren Schwellwert ist, und dass die Verarbeitungseinheit dazu ausgebildet ist, die kodierten Datenworte zu verarbeiten.
  • DE 103 60 998 B4 offenbart einen Chip, der eine Verarbeitungseinrichtung zur Durchführung einer vorbestimmten Operation, eine Einrichtung zum Bereitstellen des Takts, mit dem die Verarbeitungseinrichtung getaktet wird, einen Zähler zum, basierend auf dem Takt, De- oder Inkrementieren eines Zählerwerts, eine Einrichtung zum, abhängig vom Zählerwert, Signalisieren, dass die vorbestimmte Operation zu unterbinden ist, und eine Einrichtung zum nichtflüchtigen Speichern des Zählerwerts aufweist.
  • Eine Datenverarbeitungsvorrichtung gemäß Anspruch 1, eine Chipkarte gemäß Anspruch 16 und ein Verfahren zum Speichern eines Datenvektors gemäß Anspruch 17 werden bereitgestellt. Weitere Ausführungsbeispiele sind in den abhängigen Ansprüchen beschrieben.
  • Gemäß einer Ausführungsform wird eine Datenverarbeitungsvorrichtung bereitgestellt aufweisend eine Kodierungseinrichtung, die eingerichtet ist, einen Datenvektor zu einem Codewort eines Codes zu kodieren, ein erstes Teilwort des Codeworts einem ersten Speicherbereich zuzuführen und ein zweites Teilwort des Codeworts einem zweiten Speicherbereich zuzuführen, eine erste Schreibaktivierungssignalquelle, die eingerichtet ist, zum Speichern des ersten Teilworts in dem ersten Speicherbereich dem ersten Speicherbereich ein erstes Schreibaktivierungssignal zuzuführen, eine zweite Schreibaktivierungssignalquelle, die eingerichtet ist, zum Speichern des zweiten Teilworts in dem zweiten Speicherbereich dem zweiten Speicherbereich ein zweites Schreibaktivierungssignal zuzuführen, eine Ausleseeinrichtung, die eingerichtet ist, das erste Teilwort aus dem ersten Speicherbereich auszulesen und des zweite Teilwort aus dem zweiten Speicherbereich auszulesen und eine Überprüfungseinrichtung, die eingerichtet ist, zu überprüfen, ob das erste ausgelesene Teilwort und das zweite ausgelesene Teilwort ein gültiges Codewort des Codes bilden und ein Fehlersignal auszugeben, falls das erste ausgelesene Teilwort und das zweite ausgelesene Teilwort kein gültiges Codewort des Codes bilden.
  • Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
    • 1 zeigt eine Chipkarte.
    • 2 zeigt eine Datenverarbeitungsvorrichtung gemäß einer Ausführungsform.
    • 3 zeigt ein Ablaufdiagramm, das ein Verfahren zum Speichern eines Datenvektors veranschaulicht.
    • 4 zeigt Speicheranordnung gemäß einer Ausführungsform mit einer Aufteilung eines Registers in Registerbereiche, die von unterschiedlichen CPUs angesteuert werden.
    • 5 zeigt eine Speicheranordnung gemäß einer Ausführungsform mit einer Aufteilung eines Arbeitsspeichers in Speicherbereiche, die von unterschiedlichen CPUs angesteuert werden.
    • 6 zeigt eine Speicheranordnung gemäß einer weiteren Ausführungsform mit einer Aufteilung eines Registers in Registerbereiche, die von unterschiedlichen CPUs angesteuert werden.
    • 7 zeigt eine Speicheranordnung gemäß einer weiteren Ausführungsform mit einer Aufteilung eines Registers in Registerbereiche, die von unterschiedlichen CPUs angesteuert werden.
  • Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen. Im Rahmen dieser Beschreibung werden die Begriffe „verbunden“, „angeschlossen“ sowie „gekoppelt“ verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung.
  • 1 zeigt eine Chipkarte 100.
  • Die Chipkarte 100 weist einen Träger 101 auf, auf dem ein Chipkartenmodul 102 angeordnet ist. Das Chipkartenmodul 102 ist beispielsweise ein Chip, der verschiedene Datenverarbeitungskomponenten, wie beispielsweise einen Arbeitsspeicher 103 (z.B. ein RAM (Random Access Memory), einen Prozessor 104 (auch bezeichnet als CPU für Central Processing Unit) und ein oder mehrere Register 105 aufweist. Der Prozessor 104 ist über Steuerleitungen 106 mit den Registern 105 und dem Arbeitsspeicher 103 verbunden. Der Prozessor 104 kann den Registern 105 und dem Arbeitsspeicher 103 über die Steuerleitungen Steuersignale wie beispielsweise Schreibaktivierungssignale zuführen, die bewirken, dass ein Register 105 oder der Arbeitsspeicher 103 an dem Register 105 bzw. an dem Arbeitsspeicher 103 anliegende, beispielsweise von dem Register 105 über Datenleitungen 107 zugeführte Daten, übernimmt.
  • Der Prozessor 103 und andere, über Datenleitungen 108 (wie beispielsweise über einen Datenbus) angeschlossene weitere Komponenten 109, wie beispielsweise eine Eingabe/Ausgabe-Schnittstelle, können Daten aus den Registern und dem Arbeitsspeicher lesen.
  • Das Chipkartenmodul 102 führt beispielsweise Operationen durch, die sicher sein sollen, d.h. die Operationen und/oder deren Ergebnisse, wie beispielsweise eine Schlüsselberechnungen, sollen vor Dritten geheim gehalten werden und sollen vor Manipulationen geschützt werden. In diesem Sinne soll das Chipkartenmodul 102 sicher gegen Angriffe sein.
  • Mikrokontroller wie das Chipkartenmodul 102 können mittels Redundanz gegen die gezielte Injektion von Fehlern geschützt werden. Dabei wird beispielsweise die CPU 104 mehrfach ausgeführt (d.h. es sind mehrere CPUs 104 vorgesehen), um damit Rechenfehler detektieren zu können. Um den Transport von Daten zu schützen, können diese mit einem Code versehen werden, der Manipulationen detektieren kann.
  • In dem Fall, dass Daten, beispielsweise bei der Ausführung eines Computerprogramms durch den Prozessor 104, über mehrere Takte hinweg transportiert werden (beispielsweise zwischen dem Prozessor 104 und einer weiteren Komponente 109) und für den Transport in Registern 105 oder dem Arbeitsspeicher 103 zwischengespeichert werden, könnte ein Angreifer versuchen, dass, wenn ein neues Datum transportiert werden soll, stattdessen ein altes Datum geliefert wird. Angriffspunkt hierfür wären die Steuerleitungen 106 von einem in dem Pfad, den die Daten durchlaufen (z.B. zwischen Prozessor 104 und der weiteren Komponente 109) liegenden Register 105 oder Arbeitsspeicher 103. Wenn, beispielsweise nach der Unterbrechung des Takts, der einem Register 105 zugeführt wird, das Register 105 keine neuen Werte von der Datenquelle (z.B. dem Prozessor 104) übernimmt, gibt es nur seinen bereits vorliegenden Wert an die Datensenke (z.B. eine weitere Komponente 109) weiter. Ist der alte Wert in sich konsistent (d.h. korrekt kodiert), so kann der Angreifer die Ausführung des Computerprogramms manipulieren werden, ohne dass es vom Computerprogramm bemerkt wird.
  • Ein Ziel für einen solchen Angriff wären z.B. Schleifenzähler, die ein Angreifer für eine gewisse Dauer immer wieder auf einen bestimmten Wert zurücksetzen könnte, wodurch die Programmausführung stark beeinflusst werden kann.
  • Gemäß einer Ausführungsform wird zur Abwehr solcher Angriffe die Ansteuerung (oder auch die Prüfung) der Steuerlogik eines Speichers (z.B. eines Registers 105 oder des Arbeitsspeichers 103) auf mehrere Prozessoren 104 aufgeteilt. Dies wird im Folgenden genauer erläutert.
  • 2 zeigt eine Datenverarbeitungsvorrichtung 200 gemäß einer Ausführungsform.
  • Die Datenverarbeitungsvorrichtung 200 weist eine Kodierungseinrichtung 201 auf, die eingerichtet ist, einen Datenvektor (in anderen Worten ein Datenwort) zu einem Codewort eines Codes zu kodieren, ein erstes Teilwort 202 des Codeworts einem ersten Speicherbereich 203 zuzuführen und ein zweites Teilwort 204 des Codeworts einem zweiten Speicherbereich 205 zuzuführen.
  • Die Datenverarbeitungsvorrichtung 200 weist ferner eine erste Schreibaktivierungssignalquelle 206, die eingerichtet ist, zum Speichern des ersten Teilworts 202 in dem ersten Speicherbereich 203 dem ersten Speicherbereich 203 ein erstes Schreibaktivierungssignal 207 zuzuführen, sowie eine zweite Schreibaktivierungssignalquelle 208 auf, die eingerichtet ist, zum Speichern des zweiten Teilworts 204 in dem zweiten Speicherbereich 205 dem zweiten Speicherbereich 205 ein zweites Schreibaktivierungssignal 209 zuzuführen.
  • Die Datenverarbeitungsvorrichtung 200 weist ferner eine Ausleseeinrichtung 210 auf, die eingerichtet ist, das erste Teilwort aus dem ersten Speicherbereich 203 auszulesen und des zweite Teilwort aus dem zweiten Speicherbereich 205 auszulesen und weist eine Überprüfungseinrichtung 211 auf, die eingerichtet ist, zu überprüfen, ob das erste ausgelesene Teilwort 212 und das zweite ausgelesene Teilwort 213 ein gültiges Codewort des Codes bilden (ggf. zusammen mit ein oder mehreren weiteren Teilworten, die in ein oder mehreren weiteren Speicherbereichen gespeichert wurden) und ein Fehlersignal 213 auszugeben, falls das erste ausgelesene Teilwort 211 und das zweite ausgelesene Teilwort 212 kein gültiges Codewort des Codes bilden.
  • In anderen Worten wird ein zu speichernder Datenvektor kodiert und das durch das Kodieren erzeugte Codewort in zwei (oder mehr) Teile aufgeteilt, die in unterschiedlichen Speicherbereichen, die von unterschiedlichen Einheiten (z.B. CPUs) angesteuert werden, gespeichert. Beim Auslesen werden die Speicherbereiche ausgelesen, die ausgelesenen Teilworte gemäß der Aufteilung des erzeugten Codeworts zusammengefügt (z.B. aneinandergehängt) und das entstandene (möglicherweise gegenüber dem gespeicherten Codewort geänderte) Datenwort wird überprüft, um festzustellen, ob es gültiges Codewort ist.
  • Für ein zu speicherndes Datenwort wird beispielsweise mittels eines linearen Codes (z.B. eines Simplex-Codes, eines Hamming-Codes oder eines Reed-Muller-Codes) ein Codewort erzeugt, wobei eine gewisse Redundanz eingeführt wird. Beispielsweise wird für ein Datenwort mit einer gewissen Länge ein Redundanzteil erzeugt, dessen Länge von der gewünschten Detektionswahrscheinlichkeit von Angriffen gewählt wird. Das Codewort (z.B. bestehend aus zu speicherndem Datenwort und Redundanzteil) wird in zwei Teilworte aufgeteilt und jedes Teilwort wird in einem Speicherbereich gespeichert. Die Überprüfungseinrichtung kann beispielsweise für das aus dem ersten ausgelesene Teilwort und aus dem zweiten ausgelesene Teilwort (und ggf. weiteren Teilworten) gebildete Datenwort mittels Multiplikation mit einer Kontrollmatrix gemäß dem Code überprüfen, ob es ein Codewort gemäß dem Code ist. Ist es kein Codewort, wird ein Alarmsignal ausgegeben, das beispielsweise bewirkt, dass die Datenverarbeitungsvorrichtung zurückgesetzt wird oder Komponenten der Datenverarbeitungsvorrichtung deaktiviert werden.
  • Ein Codewort kann auch in mehr als zwei Teilworte aufgeteilt werden. Entsprechend können mehr als zwei Speicherbereiche mit jeweils einer Schreibaktivierungssignalquelle vorgesehen sein.
  • In anderen Worten werden Angriffe, die auf der Unterbrechung Steuerleitungen (d.h. Schreibaktivierungsleitungen) basieren, beispielsweise auf der Unterbrechung eines Taktsignals oder der Unterdrückung eines Write-Enable-Signals, durch eine geeignete Redundanz der Schreibaktivierungssignale (z.B. Taktsignal oder Write-Enable-Signal) verhindert. In dem Fall, dass CPUs die Quellen der Schreibaktivierungssignale sind, ergibt sich die Stufe der Redundanz aus der Zahl der vorhandenen CPUs. So könnten beispielsweise so viele Registerbereiche oder Speicherbereiche vorgesehen werden, wie CPUs vorhanden sind. Gemäß einer Ausführungsform wird ein Register oder Arbeitsspeicher in mehrere, unabhängig steuerbare und adressierbare Bereiche aufgeteilt. Um eine Schreiboperation vollständig zu unterdrücken, muss ein Angreifer alle parallelen Schreibaktivierungssignale angreifen. Kann ein Angreifer nur eine Teilmenge der Signale unterdrücken, so kann er damit nur einen Fehler in den betroffenen Bereichen erwirken und erzeugt damit einen Fehler im gespeicherten Datenwort, der der XOR-Differenz zwischen dem neuen (zu speichernden) Codewort und dem alten (zuvor gespeicherten) Codewort in den betroffenen Bereichen entspricht. Abhängig von dem verwendeten Code (z.B. abhängig von seiner Hamming-Distanz) und der Anzahl und Verteilung der Fehler wird ein derart gestörtes Datenwort bei einer Überprüfung mit einer gewissen Wahrscheinlichkeit als inkorrekt detektiert.
  • Einem Registerbereich können auch mehrere CPUs zugeordnet werden. Beispielsweise wird ein Register (oder ein Arbeitsspeicher) in mehrere, unabhängig adressierbare Bereiche aufgeteilt und jedem Registerbereich werden zwei CPUs zugeordnet. Damit entspricht die Zahl der Registerbereiche der Hälfte der Anzahl von CPUs und die CPUs werden zu Paaren zusammengefasst und bei jedem Paar steuert eine CPU einen zugehörigen Registerbereich (mittels eines Schreibaktivierungssignals) an und die andere CPU des Paars prüft, ob dem Registerbereich das Steuersignal so zugeführt wurde, wie sie es auch selbst generiert. Zu diesem Zweck werden die Steuersignale zum Register hin- und dann wieder zurückgeführt.
  • Hierbei kann das Routing der zu einem Registerbereich hinführenden Steuerleitung und der zugehörigen Rückleitung berücksichtigt werden. Liegen Steuerleitung und Rückleitung direkt nebeneinander, so kann ein Angreifer z.B. mittels eines Lasers beide Leitungen gleichzeitig attackieren. Gemäß einer Ausführungsform werden aus diesem Grund die Steuersignale komplementär übertragen, d.h. vor der Rückleitung vom Registerbereich zur zweiten CPU des CPU-Paares wird das Steuersignal invertiert. Unter der Annahme, dass ein Laser die Transition von 0 auf 1 unter anderen Umständen erwirkt als eine Transition von 1 auf 0, kann der Angreifer so nicht direkt beide Leitungen gleichzeitig beeinflussen.
  • Somit muss ein Angreifer zum Unterdrücken einer Schreiboperation auf einen Registerbereich zwei Einzelangriffe durchführen, damit dieser durch das Vergleichen der Steuersignale (durch die zweite CPU des CPU-Paares) nicht auffällt. Selbst wenn dem Angreifer dies gelingt, so kann durch das Schützen des zu speichernden Datenworts durch Kodieren wie mit Bezug auf 2 beschrieben eine erfolgreiche Attacke auf einen Speicherbereich detektiert werden. Manipuliert beispielsweise ein Angreifer die Steuersignale von nur einem CPU-Paar, d.h. für einen Registerbereich, und unterdrückt so das Speichern eines Teilworts in dem Registerbereich, so werden die ein oder mehreren andere Teilworte des (kodierten) Datenworts weiterhin geschrieben. Mittels eines fehlerdetektierender Code kann erkannt werden, dass das gespeicherte Wort in sich inkonsistent ist (d.h. es liegt eine Mischung aus einem altem und einem neuem Codewort vor). Somit müsste ein Angreifer so viele Einzelleitungen angreifen, wie CPUs vorhanden sind.
  • Die Komponenten der Datenverarbeitungsvorrichtung (z.B. Kodierungseinrichtung, Schreibaktivierungssignalquellen, Ausleseeinrichtung, Überprüfungseinrichtung etc.) können durch ein oder mehrere Schaltungen realisiert sein. In einer Ausführungsform ist eine Schaltung als jegliche Einheit zu verstehen, die eine Logik implementiert, und die sowohl Hardware, Software, Firmware oder eine Kombination daraus sein kann. Somit kann eine Schaltung in einer Ausführungsform ein hart-verdrahteter Logik-Schaltkreis oder ein programmierbarer Logik-Schaltkreis sein, wie beispielsweise ein programmierbarer Prozessor, z.B. ein Mikroprozessor. Unter einer Schaltung kann auch ein Prozessor zu verstehen sein, der Software ausführt.
  • Die Datenverarbeitungsvorrichtung führt beispielsweise ein Verfahren zum Speichern eines Datenvektors auf, wie es in 3 veranschaulicht ist.
  • 3 zeigt ein Ablaufdiagramm 300.
  • In 301 wird ein Datenvektor zu einem Codewort eines Codes kodiert.
  • In 302 wird ein erstes Teilwort des Codeworts einem ersten Speicherbereich zugeführt.
  • In 303 wird ein zweites Teilwort des Codeworts einem zweiten Speicherbereich zugeführt.
  • In 304 wird zum Speichern des ersten Teilworts in dem ersten Speicherbereich ein erstes Schreibaktivierungssignal dem ersten Speicherbereich zugeführt.
  • In 305 wird zum Speichern des zweiten Teilworts in dem zweiten Speicherbereich ein zweites Schreibaktivierungssignal dem zweiten Speicherbereich zugeführt.
  • In 306 wird das erste Teilwort aus dem ersten Speicherbereich ausgelesen und das zweite Teilwort aus dem zweiten Speicherbereich ausgelesen.
  • In 307 wird überprüft, ob das erste ausgelesene Teilwort und das zweite ausgelesene Teilwort ein gültiges Codewort des Codes bilden.
  • In 308 wird ein Fehlersignal ausgegeben, falls das erste ausgelesene Teilwort und das zweite ausgelesene Teilwort kein gültiges Codewort des Codes bilden.
  • Im Folgenden werden verschiedene Ausführungsformen angegeben.
  • Ausführungsform 1 ist eine Datenverarbeitungsvorrichtung, wie sie in 2 dargestellt ist.
  • Ausführungsform 2 ist eine Datenverarbeitungsvorrichtung gemäß Ausführungsform 1, aufweisend einen Speicher, der den ersten Speicherbereich und den zweiten Speicherbereich aufweist, wobei der erste Speicherbereich eingerichtet ist, als Reaktion auf das erste Schreibaktivierungssignal ein dem ersten Speicherbereich zugeführtes Datenwort zu speichern und wobei der zweite Speicherbereich eingerichtet ist, als Reaktion auf das zweite Schreibaktivierungssignal ein dem ersten Speicherbereich zugeführtes Datenwort zu speichern.
  • Ausführungsform 3 ist eine Datenverarbeitungsvorrichtung gemäß Ausführungsform 2, wobei der Speicher ein Register oder ein Arbeitsspeicher ist.
  • Ausführungsform 4 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 3, wobei das erste Schreibaktivierungssignal und das zweite Schreibaktivierungssignal ein Taktsignal oder ein Write-Enable-Signal sind.
  • Ausführungsform 5 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 4, wobei das erste Schreibaktivierungssignal und das zweite Schreibaktivierungssignal dasselbe Signal ist.
  • Ausführungsform 6 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 4, wobei das erste Schreibaktivierungssignal und das zweite Schreibaktivierungssignal unterschiedliche Signale sind.
  • Ausführungsform 7 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 6, wobei der erste Speicherbereich mehrere erste Speicherelemente aufweist, wobei jedes erste Speicherelement eingerichtet ist, ein dem Speicherelement zugeführtes Datenbit in Reaktion auf das erste Schreibaktivierungssignal zu speichern, und wobei der zweite Speicherbereich mehrere zweite Speicherelemente aufweist, wobei jedes zweite Speicherelement eingerichtet ist, ein dem Speicherelement zugeführtes Datenbit in Reaktion auf das zweite Schreibaktivierungssignal zu speichern.
  • Ausführungsform 8 ist eine Datenverarbeitungsvorrichtung gemäß Ausführungsform 7, wobei die erste Schreibaktivierungssignalquelle eingerichtet ist, das erste Schreibaktivierungssignal den ersten Speicherelementen zuzuführen und wobei die zweite Schreibaktivierungssignalquelle eingerichtet ist, das zweite Schreibaktivierungssignal den zweiten Speicherelementen zuzuführen.
  • Ausführungsform 9 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 8, wobei die Kodierungseinrichtung eingerichtet ist, das durch Kodieren des Datenvektors erzeugte Codewort in mindestens das erste Teilwort und das zweite Teilwort aufzuteilen.
  • Ausführungsform 10 ist eine Datenverarbeitungsvorrichtung gemäß Ausführungsform 9, wobei die Überprüfungseinrichtung eingerichtet ist, das erste ausgelesene Teilwort und das zweite ausgelesene Teilwort gemäß der Aufteilung des erzeugten Codeworts zu einem Datenwort zusammenzufügen und zu überprüfen, ob das Datenwort ein gültiges Codewort des Codes ist.
  • Ausführungsform 11 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 10, wobei die erste Schreibaktivierungssignalquelle eine erste CPU ist und die zweite Schreibaktivierungssignalquelle eine zweite CPU ist.
  • Ausführungsform 12 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 11, aufweisend eine erste Schreibaktivierungssignalkontrolleinrichtung, die eingerichtet ist, zu überprüfen, ob die erste Schreibaktivierungssignalquelle dem ersten Speicherbereich das erste Schreibaktivierungssignal zuführt und ein Fehlersignal auszugeben, falls die erste Schreibaktivierungssignalquelle dem ersten Speicherbereich das erste Schreibaktivierungssignal nicht zuführt.
  • Ausführungsform 13 ist eine Datenverarbeitungsvorrichtung gemäß Ausführungsform 12, wobei die erste Schreibaktivierungssignalkontrolleinrichtung eingerichtet ist, das erste Schreibaktivierungssignal selbst zu erzeugen und zu überprüfen, ob dem ersten Speicherbereich das erste Schreibaktivierungssignal von der ersten Schreibaktivierungssignalquelle zugeführt wird.
  • Ausführungsform 14 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 13, aufweisend eine zweite Schreibaktivierungssignalkontrolleinrichtung, die eingerichtet ist, zu überprüfen, ob die zweite Schreibaktivierungssignalquelle dem ersten Speicherbereich das zweite Schreibaktivierungssignal zuführt und ein Fehlersignal auszugeben, falls die zweite Schreibaktivierungssignalquelle dem zweite Speicherbereich das zweite Schreibaktivierungssignal nicht zuführt.
  • Ausführungsform 15 ist eine Datenverarbeitungsvorrichtung gemäß Ausführungsform 14, wobei die zweite Schreibaktivierungssignalkontrolleinrichtung eingerichtet ist, das zweite Schreibaktivierungssignal selbst zu erzeugen und zu überprüfen, ob dem zweiten Speicherbereich das zweite Schreibaktivierungssignal von der zweiten Schreibaktivierungssignalquelle zugeführt wird.
  • Ausführungsform 16 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 15, wobei der Code ein linearer Code ist.
  • Ausführungsform 17 ist eine Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis 16, wobei die Kodierungseinrichtung eingerichtet ist, den Datenvektor in drei oder mehr Teilworte aufzuteilen und jedes Teilwort des Codeworts einem jeweiligen Speicherbereich von drei oder mehr Speicherbereichen zuzuführen, die Datenverarbeitungsvorrichtung drei oder mehr Schreibaktivierungssignalquellen aufweist, wobei jede Schreibaktivierungssignalquelle eingerichtet ist, zum Speichern des jeweiligen Teilworts in einem jeweiligen Speicherbereich der Speicherbereiche dem Speicherbereich ein jeweiliges Schreibaktivierungssignal zuzuführen, die Ausleseeinrichtung eingerichtet ist, die Teilworte aus den Speicherbereichen auszulesen und die Überprüfungseinrichtung eingerichtet ist, zu überprüfen, ob die ausgelesenen Teilworte ein gültiges Codewort des Codes bilden und ein Fehlersignal auszugeben, falls die ausgelesenen Teilworte kein gültiges Codewort des Codes bilden.
  • Ausführungsform 18 ist eine Chipkarte mit einer Datenverarbeitungsvorrichtung gemäß einer der Ausführungsformen 1 bis Ausführungsform 17.
  • Ausführungsform 19 ist ein Verfahren zum Speichern eines Datenvektors, wie es in 3 dargestellt ist.
  • Es sollte beachtet werden, dass jede beschriebene Ausführungsform mit jeder anderen beschriebenen Ausführungsform kombiniert werden kann.
  • Im Folgenden werden Ausführungsformen in größerem Detail beschrieben.
  • 4 zeigt Speicheranordnung 400 gemäß einer Ausführungsform mit einer Aufteilung eines Registers in Registerbereiche, die von unterschiedlichen CPUs angesteuert werden.
  • Die Speicheranordnung 400 weist vier CPUs 401 auf, die beispielsweise dem Prozessor 104 entsprechen (d.h. es sind vier CPUs anstatt eines Prozessors vorgesehen) und weist ein 8-bit Register 402 auf, das beispielsweise dem Register 105 entspricht.
  • Jede CPU 401 erzeugt das gleiche Steuersignal ctrl, z.B. ein Set-Signal oder ein Taktsignal für acht Flip-Flops des Register 402 und steuert ein Viertel des Registers 402 an, z.B. zwei Flip-Flops des Registers 402. In anderen Worten wird das Register 402 in mehrere Speicherbereiche unterteilt, entsprechend der Speicherbereiche 203 und 205.
  • Ist ein Datenwort zu speichern, so wird dieses Datenwort (z.B. von einer der CPUs 401) zu einem 8-Bit-Codewort mit der binären Darstellung d0 d1 d2 d3 d4 d5 d6 d7 kodiert und jedem Flip-Flop des Registers 402 wird ein Bit zugeführt. Beim Auslesen des Registers 201 wird überprüft (z.B. von einer Überprüfungseinrichtung entsprechend der Überprüfungseinrichtung 211, die auch durch eine CPU 401 realisiert sein kann), ob die ausgelesenen Bits ein Codewort bilden. Ist dies nicht der Fall, wird das so interpretiert, dass das Steuersignal ctrl von mindestens einer CPU 401 dem entsprechenden Viertel (d.h. Registerbereich) des Registers 402 nicht korrekt zugeführt wurde und es wird ein Fehlersignal ausgegeben.
  • 5 zeigt eine Speicheranordnung 500 gemäß einer Ausführungsform mit einer Aufteilung eines Arbeitsspeichers in Speicherbereiche, die von unterschiedlichen CPUs angesteuert werden.
  • Ähnlich wie bei der Speicheranordnung 400 weist die Speicheranordnung 500 vier CPUs 501 auf, die beispielsweise dem Prozessor 104 entsprechen und weist einen Arbeitsspeicher (RAM) 502 auf der beispielsweise dem Arbeitsspeicher 103 entspricht und das parallele Speichern von 8 Bits ermöglicht.
  • Der Arbeitsspeicher 502 ist in vier Speicherbereiche 503 aufgeteilt (analog zu den Speicherbereichen 203 und 205) und jede CPU 501 erzeugt das gleiche Steuersignal ctrl und führt es einem der Speicherbereiche 503 über einen jeweiligen Steuerpfad 504 (d.h. eine jeweilige Steuerleitung) zu.
  • Ist ein Datenwort zu speichern, so wird dieses Datenwort (z.B. von einer der CPUs 501) zu einem 8-Bit-Codewort mit der binären Darstellung d0 d1 d2 d3 d4 d5 d6 d7 kodiert und jeweils zwei Datenbit werden über jeweilige Dateneingangspfade 505 (d.h. Datenleitungen) einem Speicherbereich 503 zugeführt, wobei jeder Dateneingangspfad 505 mittels eines jeweiligen UND-Gatters mit dem Steuersignal „gegatet“ (d.h. UND-verknüpft) wird. Das Steuersignal ist in diesem Beispiel entsprechend ein Write-Enable-Signal.
  • Im Folgenden werden mit Bezug auf 6 und 7 Erweiterungen erläutert, die für die Anwendung auf ein Register dargestellt sind, analog aber auch auf einen Arbeitsspeicher angewendet werden können (analog der Anwendung der Vorgehensweise aus 4 auf einen Arbeitsspeicher, wie in 5 gezeigt).
  • 6 zeigt eine Speicheranordnung 600 gemäß einer weiteren Ausführungsform mit einer Aufteilung eines Registers in Registerbereiche, die von unterschiedlichen CPUs angesteuert werden.
  • Die Speicheranordnung 600 weist vier CPUs 601, 602 auf, die beispielsweise dem Prozessor 104 entsprechen und weist ein 8-bit Register 603 auf, das beispielsweise dem Register 105 entspricht und in diesem Beispiel in zwei Registerbereiche 604 geteilt ist.
  • Jeweils zwei CPUs 601, 602 sind zu einem Paar (CPU0 und CPU1 sowie CPU 2 und CPU3) zusammengefasst. Jedes CPU-Paar ist einem Registerbereich 604 zugeordnet und jeweils die erste CPU 601 jedes CPU-Paars erzeugt das Steuersignal ctrl und führt es dem zugeordneten Registerpaar zu.
  • Das Steuersignal wird mittels eines jeweiligen ersten Inverters 605 invertiert und einem Vergleicher 606 zugeführt, dem von der zweiten CPU 602 über einen jeweiligen zweiten Inverter 607 ebenfalls das Steuersignal zugeführt wird. Stimmen die beiden invertierten Versionen des Steuersignals nicht überein, so gibt der Vergleicher 606 ein Fehlersignal oder Alarmsignal aus.
  • In anderen Worten wird mittels der zweiten CPU 602 das zurückgeführte Steuersignal und das von der zweiten CPU 602 selbst generierte Steuersignal auf Konsistenz geprüft und bei einer Abweichung ein Alarmsignal erzeugt.
  • Ein Angreifer muss somit mindestens zwei Leitungspaare (jeweils hinführende und rückführende Steuersignalleitung) angreifen. Das Invertieren durch die Inverter 605, 606 erhöht den Schutz gegen Laserangriffe: Liegen irgendwo zwischen CPUs 601, 602 und Register 603 alle Steuersignalleitungen direkt nebeneinander (bedingt durch automatisches Routing), so kann ein einzelner Laserspot alle Steuersignalleitungen gleichzeitig beeinflussen. Durch das Invertieren muss ein Angreifer aber nun unterschiedliche Transitionen für die hinführende Leitung und die rückführende Leitung (z.B. 0->1 für CPU0 und CPU2, 1->0 für CPU1 und CPU3) bewirken, was nicht mit einem einfachen Angriff möglich ist.
  • Analog zu dem mit Bezug auf 4 beschriebenen Beispiel wird ein Codewort in dem Register 604 gespeichert und beim Auslesen des Datenworts aus dem Register geprüft, ob es ein gültiges Codewort ist.
  • 7 zeigt eine Speicheranordnung 700 gemäß einer weiteren Ausführungsform mit einer Aufteilung eines Registers in Registerbereiche, die von unterschiedlichen CPUs angesteuert werden.
  • Die Speicheranordnung 700 weist vier CPUs 701, 702 auf, die beispielsweise dem Prozessor 104 entsprechen und weist ein 64-bit Register 703 auf, das beispielsweise dem Register 105 entspricht und in diesem Beispiel in zwei 32-Bit-Registerbereiche 704 geteilt ist.
  • Zum Speichern eines Datenworts wird das Datenwort in ein Codewort mit einem 32-bit Datenanteil (d0..d31), der gleich dem zu speichernden Datenwort ist, und einen 32-Bit Redundanzanteil (r0..r31) kodiert. Der verwendete Code ist somit ein [64,32,D] Code (wobei D die Hamming-Distanz des Codes ist).
  • Analog zu dem Beispiel von 6 wird jeder Registerbereich 704 von einem CPU-Paar angesteuert. In diesem Beispiel ist jedoch kein Rückkanal für das Steuersignal zur zweiten CPU 702 des Paars vorgesehen und auch auf das Invertieren wird verzichtet.
  • Stattdessen führen alle CPUs 701, 702 das gleiche Steuersignal dem Register 703 zu und für jeden Registerbereich 704 ist ein Vergleicher 705 vorgesehen, der den Zustand der von der ersten CPU 701 kommenden Steuersignalleitung mit dem Zustand der von der zweiten CPU 702 kommenden Steuersignalleitung vergleicht und bei Abweichung ein Alarmsignal ausgibt.
  • Bei Aufteilung des Registers 703 in mehr als zwei Registerbereiche kann gewährleistet werden, dass Fehlermuster, die durch den Ausfall eines CPU-Paares (d.h. nicht korrektes Schreiben für einen Registerbereich) im Codewort entstehen, immer erkannt werden. Dazu können Permutationen 706 auf die zu speichernden Bits des Codeworts angewandt werden. Die Aufgabe der Permutationen 706 ist eine Sortierung der Bits eines Codeworts so vorzunehmen, dass Fehler in einem der Registerbereiche kein korrektes Codewort erzeugen können. Die Permutationen 706 werden beim Schreiben des Registers 703 durchlaufen, beim Auslesen werden sie entsprechend invertiert. Die Permutationen 706 werden abhängig von der konkreten Matrix gewählt, die zur Prüfung des ausgelesenen Datenworts verwendet wird. Wie in den obigen Beispielen wird für ein ausgelesenes Datenwort überprüft, ob es ein gültiges Codewort ist und, falls dies nicht so ist, ein Alarmsignal ausgegeben.
  • Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.

Claims (17)

  1. Datenverarbeitungsvorrichtung (200) aufweisend: eine Kodierungseinrichtung (201), die eingerichtet ist, einen Datenvektor zu einem Codewort eines Codes zu kodieren, das durch Kodieren des Datenvektors erzeugte Codewort in mindestens ein erstes Teilwort (202) und ein zweites Teilwort (204) aufzuteilen, das erste Teilwort (202) des Codeworts einem ersten Speicherbereich (203) zuzuführen und das zweite Teilwort (204) des Codeworts einem zweiten Speicherbereich (205) zuzuführen; eine erste Schreibaktivierungssignalquelle (206), die eingerichtet ist, zum Speichern des ersten Teilworts (202) in dem ersten Speicherbereich (203) dem ersten Speicherbereich (203) ein erstes Schreibaktivierungssignal (207) zuzuführen; eine zweite Schreibaktivierungssignalquelle (208), die von der ersten Schreibaktivierungssignalquelle (206) verschieden ist und eingerichtet ist, zum Speichern des zweiten Teilworts (204) in dem zweiten Speicherbereich (205) dem zweiten Speicherbereich (205) ein zweites Schreibaktivierungssignal (209) zuzuführen; eine Ausleseeinrichtung, die eingerichtet ist, das erste Teilwort (202) aus dem ersten Speicherbereich (203) auszulesen und das zweite Teilwort (204) aus dem zweiten Speicherbereich (205) auszulesen; und eine Überprüfungseinrichtung, die eingerichtet ist, das erste ausgelesene Teilwort und das zweite ausgelesene Teilwort gemäß der Aufteilung des erzeugten Codeworts zu einem Datenwort zusammenzufügen, zu überprüfen, ob das Datenwort ein gültiges Codewort des Codes ist, und ein Fehlersignal auszugeben, falls das Datenwort kein gültiges Codewort des Codes bildet.
  2. Datenverarbeitungsvorrichtung (200) gemäß Anspruch 1, aufweisend einen Speicher, der den ersten Speicherbereich (203) und den zweiten Speicherbereich (205) aufweist, wobei der erste Speicherbereich (203) eingerichtet ist, als Reaktion auf das erste Schreibaktivierungssignal (207) ein dem ersten Speicherbereich (203) zugeführtes Datenwort zu speichern und wobei der zweite Speicherbereich (205) eingerichtet ist, als Reaktion auf das zweite Schreibaktivierungssignal (209) ein dem zweiten Speicherbereich (205) zugeführtes Datenwort zu speichern.
  3. Datenverarbeitungsvorrichtung (200) gemäß Anspruch 2, wobei der Speicher ein Register oder ein Arbeitsspeicher ist.
  4. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 3, wobei das erste Schreibaktivierungssignal (207) und das zweite Schreibaktivierungssignal (209) ein Taktsignal oder ein Write-Enable-Signal sind.
  5. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 4, wobei das erste Schreibaktivierungssignal (207) und das zweite Schreibaktivierungssignal (209) dasselbe Signal ist.
  6. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 4, wobei das erste Schreibaktivierungssignal (207) und das zweite Schreibaktivierungssignal (209) unterschiedliche Signale sind.
  7. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 6, wobei der erste Speicherbereich (203) mehrere erste Speicherelemente aufweist, wobei jedes erste Speicherelement eingerichtet ist, ein dem Speicherelement zugeführtes Datenbit in Reaktion auf das erste Schreibaktivierungssignal (207) zu speichern, und wobei der zweite Speicherbereich (205) mehrere zweite Speicherelemente aufweist, wobei jedes zweite Speicherelement eingerichtet ist, ein dem Speicherelement zugeführtes Datenbit in Reaktion auf das zweite Schreibaktivierungssignal (209) zu speichern.
  8. Datenverarbeitungsvorrichtung (200) gemäß Anspruch 7, wobei die erste Schreibaktivierungssignalquelle eingerichtet ist, das erste Schreibaktivierungssignal (207) den ersten Speicherelementen zuzuführen und wobei die zweite Schreibaktivierungssignalquelle eingerichtet ist, das zweite Schreibaktivierungssignal (209) den zweiten Speicherelementen zuzuführen.
  9. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 8, wobei die erste Schreibaktivierungssignalquelle (206) eine erste CPU ist und die zweite Schreibaktivierungssignalquelle (208) eine zweite CPU ist.
  10. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 9, aufweisend eine erste Schreibaktivierungssignalkontrolleinrichtung, die eingerichtet ist, zu überprüfen, ob die erste Schreibaktivierungssignalquelle (206) dem ersten Speicherbereich (203) das erste Schreibaktivierungssignal (207) zuführt und ein Fehlersignal auszugeben, falls die erste Schreibaktivierungssignalquelle (206) dem ersten Speicherbereich (203) das erste Schreibaktivierungssignal (207) nicht zuführt.
  11. Datenverarbeitungsvorrichtung (200) gemäß Anspruch10, wobei die erste Schreibaktivierungssignalkontrolleinrichtung eingerichtet ist, das erste Schreibaktivierungssignal (207) selbst zu erzeugen und zu überprüfen, ob dem ersten Speicherbereich (203) das erste Schreibaktivierungssignal (207) von der ersten Schreibaktivierungssignalquelle (206) zugeführt wird.
  12. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 11, aufweisend eine zweite Schreibaktivierungssignalkontrolleinrichtung, die eingerichtet ist, zu überprüfen, ob die zweite Schreibaktivierungssignalquelle (208) dem zweiten Speicherbereich (205) das zweite Schreibaktivierungssignal (209) zuführt und ein Fehlersignal auszugeben, falls die zweite Schreibaktivierungssignalquelle (208) dem zweiten Speicherbereich (205) das zweite Schreibaktivierungssignal (209) nicht zuführt.
  13. Datenverarbeitungsvorrichtung (200) gemäß Anspruch 12, wobei die zweite Schreibaktivierungssignalkontrolleinrichtung eingerichtet ist, das zweite Schreibaktivierungssignal (209) selbst zu erzeugen und zu überprüfen, ob dem zweiten Speicherbereich (205) das zweite Schreibaktivierungssignal (209) von der zweiten Schreibaktivierungssignalquelle (208) zugeführt wird.
  14. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 13, wobei der Code ein linearer Code ist.
  15. Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 14, wobei die Kodierungseinrichtung (201) eingerichtet ist, den Datenvektor in drei oder mehr Teilworte aufzuteilen und jedes Teilwort des Codeworts einem jeweiligen Speicherbereich von drei oder mehr Speicherbereichen zuzuführen, die Datenverarbeitungsvorrichtung drei oder mehr Schreibaktivierungssignalquellen aufweist, wobei jede Schreibaktivierungssignalquelle eingerichtet ist, zum Speichern des jeweiligen Teilworts in einem jeweiligen Speicherbereich der Speicherbereiche dem Speicherbereich ein jeweiliges Schreibaktivierungssignal zuzuführen, die Ausleseeinrichtung eingerichtet ist, die Teilworte aus den Speicherbereichen auszulesen und die Überprüfungseinrichtung eingerichtet ist, zu überprüfen, ob die ausgelesenen Teilworte ein gültiges Codewort des Codes bilden und ein Fehlersignal auszugeben, falls die ausgelesenen Teilworte kein gültiges Codewort des Codes bilden.
  16. Chipkarte mit einer Datenverarbeitungsvorrichtung (200) gemäß einem der Ansprüche 1 bis 15.
  17. Verfahren zum Speichern eines Datenvektors aufweisend: Kodieren eines Datenvektors zu einem Codewort eines Codes (301); Aufteilen des erzeugten Codeworts in mindestens ein erstes Teilwort und ein zweites Teilwort; Zuführen eines ersten Teilworts des Codeworts zu einem ersten Speicherbereich (302); Zuführen eines zweiten Teilworts des Codeworts zu einem zweiten Speicherbereich (303); Zuführen eines ersten Schreibaktivierungssignals einer ersten Schreibaktivierungssignalquelle zu dem ersten Speicherbereich zum Speichern des ersten Teilworts in dem ersten Speicherbereich (304); Zuführen eines zweiten Schreibaktivierungssignals einer zweiten Schreibaktivierungssignalquelle, die von der ersten Schreibaktivierungssignalquelle verschieden ist, zu dem zweiten Speicherbereich zum Speichern des zweiten Teilworts in dem zweiten Speicherbereich (305); Auslesen des ersten Teilworts aus dem ersten Speicherbereich und des zweiten Teilworts aus dem zweiten Speicherbereich (306); Zusammenfügen des ersten ausgelesenen Teilworts und des zweiten ausgelesenen Teilworts gemäß der Aufteilung des erzeugten Codeworts zu einem Datenwort; Überprüfen, ob das Datenwort ein gültiges Codewort des Codes bildet; und Ausgeben eines Fehlersignals, falls das Datenwort kein gültiges Codewort des Codes bildet.
DE102015114233.3A 2015-08-27 2015-08-27 Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors Active DE102015114233B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102015114233.3A DE102015114233B4 (de) 2015-08-27 2015-08-27 Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015114233.3A DE102015114233B4 (de) 2015-08-27 2015-08-27 Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors

Publications (2)

Publication Number Publication Date
DE102015114233A1 DE102015114233A1 (de) 2017-03-02
DE102015114233B4 true DE102015114233B4 (de) 2024-10-24

Family

ID=58010786

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015114233.3A Active DE102015114233B4 (de) 2015-08-27 2015-08-27 Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors

Country Status (1)

Country Link
DE (1) DE102015114233B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119557236B (zh) * 2024-03-14 2025-12-02 厦门大学 一种基于块选择的非易失性内存写干扰缓解方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10360998B4 (de) 2003-12-23 2008-09-04 Infineon Technologies Ag Schutz von Chips gegen Attacken
DE102013205542A1 (de) 2013-03-28 2014-10-02 Robert Bosch Gmbh Vorrichtung und Verfahren zur Verarbeitung von Daten

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10360998B4 (de) 2003-12-23 2008-09-04 Infineon Technologies Ag Schutz von Chips gegen Attacken
DE102013205542A1 (de) 2013-03-28 2014-10-02 Robert Bosch Gmbh Vorrichtung und Verfahren zur Verarbeitung von Daten

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
FIENUP, M.: Computer Organization (810:041), Fall 2008, Lecture Notes, Lecture 13, Register File Implementation. University of Northern Iowa, 2008. URL: http://www.cs.uni.edu/~fienup/cs041f08/lectures/lec13_reg_file.pdf [abgerufen am 11.03.2024]Aufgerufen über: http://www.cs.uni.edu/~fienup/cs041f08/ *

Also Published As

Publication number Publication date
DE102015114233A1 (de) 2017-03-02

Similar Documents

Publication Publication Date Title
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE102013215055B4 (de) Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE2619159C2 (de) Fehlererkennungs- und Korrektureinrichtung
DE69221045T2 (de) Verfahren und Gerät zur programmierbaren Speicherssteuerung mit Fehlerregelung und Prüffunktionen
DE3128740C2 (de)
DE2806024A1 (de) Speichersystem mit fehlerfeststell- und korrekturmoeglichkeit
DE2928488A1 (de) Speicher-subsystem
DE2328869A1 (de) Verfahren zur pruefung eines digitalen speichersystems sowie zur durchfuehrung dieses verfahrens dienendes selbstpruefendes digitales speichersystem
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE2225841B2 (de) Verfahren und Anordnung zur systematischen Fehlerprüfung eines monolithischen Halbleiterspeichers
DE2157829C2 (de) Anordnung zum Erkennen und Korrigieren von Fehlern in Binärdatenmustern
DE69904618T2 (de) Detektionstechnik von speicherabschnittfehlern und einzel-, doppel und triplebitfehlern
DE102018105090A1 (de) Sichere Rücksetztechniken für Mikrocontrollersysteme in sicherheitsbezogenen Anwendungen
DE4406094C2 (de) Vorrichtung zum Betrieb einer Steuerungsanwendung
DE102006003146B4 (de) Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks
DE102015114233B4 (de) Datenverarbeitungsvorrichtungen und Verfahren zum Speichern eines Datenvektors
DE69033371T2 (de) Statusregister für einen Mikroprozessor
DE102022111126A1 (de) Datenverarbeitungsvorrichtung und verfahren zum prüfen der integrität eines speichers
DE102007040721A1 (de) Datenverarbeitungsanordnung, Verfahren zur Datenverarbeitung, Computerprogrammelement und Überprüfungsanordnung für einen Speicher
DE112019000488T5 (de) Speichervorrichtung, Speicheradressdecoder, System und zugehöriges Verfahren zur Erfassung eines Speicherangriffs
DE102013108073A1 (de) Datenverarbeitungsanordnung und verfahren zur datenverarbeitung
EP1444700A2 (de) Speichertest
DE102014114157B4 (de) Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
DE102006035610B4 (de) Speicherzugriffssteuerung und Verfahren zur Speicherzugriffssteuerung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
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