DE102009041882B4 - Sichere Speicherschnittstelle, Verfahren zum sicheren Zugreifen auf ein Speicherelement und elektronisches System - Google Patents

Sichere Speicherschnittstelle, Verfahren zum sicheren Zugreifen auf ein Speicherelement und elektronisches System Download PDF

Info

Publication number
DE102009041882B4
DE102009041882B4 DE102009041882.2A DE102009041882A DE102009041882B4 DE 102009041882 B4 DE102009041882 B4 DE 102009041882B4 DE 102009041882 A DE102009041882 A DE 102009041882A DE 102009041882 B4 DE102009041882 B4 DE 102009041882B4
Authority
DE
Germany
Prior art keywords
data
secure
memory
memory element
address
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
DE102009041882.2A
Other languages
English (en)
Other versions
DE102009041882A1 (de
Inventor
Sebastien Riou
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020080096574A external-priority patent/KR101537018B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102009041882A1 publication Critical patent/DE102009041882A1/de
Application granted granted Critical
Publication of DE102009041882B4 publication Critical patent/DE102009041882B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Abstract

Sichere Speicherschnittstelle (108), umfassend:- einen Leseblock (116), der endgültige Lesedaten erzeugt, die an eine Datenverarbeitungseinheit zu übertragen sind, indem er Fehlerdetektionscode von ursprünglichen Lesedaten abspaltet, die von einem Speicherelement (102) übertragen sind, wenn ein sicherer Modus aktiviert ist, und- einen Modusselektor (112) zum Aktivieren oder Deaktivieren des sicheren Modus unter Verwendung von Speicherzugriffsinformationen von der Datenverarbeitungseinheit, wobei der Leseblock die endgültigen Lesedaten aus den ursprünglichen Lesedaten ohne Abspalten eines Fehlerdetektionscodes erzeugt, wenn der sichere Modus deaktiviert ist.

Description

  • Die vorliegende Erfindung betrifft eine sichere Speicherschnittstelle, ein Verfahren zum sicheren Zugreifen auf ein Speicherelement und ein elektronisches System.
  • Speicherelemente sind anfällig für Angriffe durch Fehlerinjektion, wie durch die Verwendung von Lasern oder Röntgenstrahlen. Zum Beispiel ermöglichen Laser und Röntgenstrahlen präzise Angriffe durch Modifizieren der Zustände von Bits im Speicherelement. Der Laser ist besonders geeignet zur Injektion von Fehlern in Register, Speicher mit wahlfreiem Zugriff (RAM), elektrisch löschbare und programmierbare Speicherelemente (EEP) und Flash-Speicherelemente. Eine solche Fehlerinjektion kann permanent oder temporär sein.
  • Außerdem können solche Fehlerinjektionsangriffe dazu verwendet werden, geheime Schlüssel aufzudecken oder Speicherinhalt auszugeben. Eine Detektion einer solchen Fehlerinjektion in das Speicherelement ist zur Vorbeugung eines Missbrauchs von im Speicherelement gespeicherten Informationen wünschenswert.
  • Im Stand der Technik kann ein Laserdetektor verwendet werden, um eine Laserquelle zu detektieren. Der Laserdetektor ist jedoch nicht dazu geeignet, Laserangriffe auf Speicherelemente zu detektieren.
  • Alternativ sind im Stand der Technik Speicherelemente so ausgebildet, dass sie die Speicherung von Fehlerdetektionscodes umfassen. In diesem Fall detektiert das Speicherelement Fehlerinjektionsangriffe im Speicherelement. Die Implementierung eines solchen Fehlerdetektionscodes im Speicherelement vergrößert jedoch die Siliciumfläche im Speicherelement. Außerdem kann der Fehlerdetektionscode eine Fehlerinjektion außerhalb des Speicherelements nicht detektieren, wenn die Zustände der Bits auf einem Bus außerhalb des Speicherelements verändert werden.
  • Ebenso kann im Stand der Technik das Speicherelement Hardwareredundanz mit redundanter Datenspeicherung zur Detektion einer Fehlerinjektion im Speicherelement umfassen. Eine solche Speicherredundanz führt jedoch zu einer Verdoppelung der Siliciumfläche, was zu einer besonders großen Siliciumfläche bei Speicherelementen mit hoher Kapazität führt. Außerdem kann eine Datenverifizierung mit Speicherredundanz zu einem langsameren Betrieb des Speicherelements führen.
  • Alternativ beinhaltet eine Datenverarbeitungseinheit, wie eine CPU (Zentralverarbeitungseinheit), die auf ein Speicherelement zugreift, Software zum Verifizieren der Datenintegrität. Jedoch ist eine solche Software, die ebenfalls in einem Speicherelement gespeichert ist, einer Fehlerinjektion ausgesetzt. Außerdem sind der Codeumfang und die Ausführungsdauer bei der Software in der CPU für eine solche zusätzliche Datenverifikationsfunktion erhöht.
  • Daher ist ein effizienter Mechanismus zur Detektion einer Fehlerinjektion im Speicherelement und außerhalb des Speicherelements, wie im Bus zu/von dem Speicherelement gewünscht.
  • US 5 978 953 A offenbart: Ein Computersystem enthält einen Prozessorbus mit Prozessordaten und Prozessorprüfbits zur Durchführung von Fehlererkennung und -korrektur der Prozessordaten. Eine CPU ist mit dem Prozessorbus verbunden. Ein Speicherteilsystem ist mit dem Prozessorbus verbunden und enthält Speicherprüfbits, Speicheradressbits und Speicherdatenbits sowie eine Fehlererkennungs- und -korrekturvorrichtung zum Erkennen eines Fehlers in den Speicheradressbits unter Verwendung der Speicherprüfbits und zum Erkennen eines Fehlers in den Speicherdatenbits unter Verwendung der Speicherprüfbits. Die Fehlererkennungs- und -korrekturvorrichtung erzeugt eine Syndromtabelle, die eine Vielzahl von Einträgen enthält, die korrigierbaren oder unkorrigierbaren Fehlern zugeordnet sind, wobei ein erkannter Mehrbitfehler in den Speicherdatenbits einem unkorrigierbaren Fehlereintrag zugeordnet wird und ein erkannter Fehler in den Speicheradressbits einem unkorrigierbaren Fehlereintrag zugeordnet wird. Eine Fehlererkennungsvorrichtung ist auch mit dem Prozessorbus verbunden, um einen Fehler in den Adressbits oder Datenbits unter Verwendung der Prozessorprüfbits zu erkennen.
  • US 2007/0204199 A1 offenbart: Eine Halbleiterspeichervorrichtung und ein Speichersystem, das dieselbe enthält, werden bereitgestellt. Die Halbleiterspeichervorrichtung kann einen ersten Speicherzellenfeldblock, der erste Daten erzeugt, einen zweiten Speicherzellenfeldblock, der zweite Daten erzeugt, und einen ersten und einen zweiten Fehlererkennungscodegenerator umfassen. Der erste Fehlererkennungscodegenerator kann einen ersten Fehlererkennungscode erzeugen und kann einen Teil der Bits des ersten Fehlererkennungscodes mit einem Teil der Bits eines zweiten Fehlererkennungscodes kombinieren, um ein erstes endgültiges Fehlererkennungssignal zu erzeugen. Der zweite Fehlererkennungscodegenerator kann den zweiten Fehlererkennungscode erzeugen und die verbleibenden Bits, die nicht zu dem Teil der Bits des zweiten Fehlererkennungscodes gehören, mit den verbleibenden Bits, die nicht zu dem Teil der Bits des ersten Fehlererkennungscodes gehören, kombinieren, um ein zweites endgültiges Fehlererkennungssignal zu erzeugen.
  • US 2002/0029315 A1 offenbart: Eine Speicherstruktur umfasst ein Speichermodul, das in Bänke niedriger Ordnung und Bänke hoher Ordnung unterteilt ist. Die Bänke niedriger Ordnung werden als konventioneller Speicher verwendet. Die Bänke höherer Ordnung werden je nach Datenführung entweder als konventioneller Speicher oder als ECC-Speicher verwendet. Zum Beispiel werden Daten von den Bänken hoher Ordnung durch einen primären Multiplexer zu einem Datenbus geleitet, wenn die Bänke höherer Ordnung als herkömmlicher Speicher verwendet werden. Werden die Bänke höherer Ordnung als Fehlerkorrektur (ECC)-Speicher verwendet, werden die Daten aus dem Hilfsteil über den primären Multiplexer zu einer Fehlerkorrekturschaltung geleitet. Ein sekundärer Multiplexer kombiniert ECC-Bits aus dem Hilfsteil des Moduls oder einem speziellen ECC-Speicher auf einer Hauptplatine. Der Hilfsteil ergänzt somit den integrierten ECC-Speicher, um einen effektiv größeren ECC-Speicher für fehlerintolerante Anwendungen, die eine Fehlerkorrektur erfordern, zu unterstützen.
  • Der Erfindung liegt die technische Aufgabe zugrunde, eine sichere Speicherschnittstelle, ein Verfahren zum sicheren Zugreifen auf ein Speicherelement und ein elektronisches System zum flexiblen Ansteuern eines sicheren und/oder herkömmlichen Zugriffs auf ein Speicherelement zur Verfügung zu stellen.
  • Die Erfindung löst diese Aufgabe durch die beiliegenden Ansprüche.
  • Dementsprechend ist ein allgemeiner Aspekt der vorliegenden Erfindung, dass eine sichere Speicherschnittstelle zur automatischen Detektion einer Fehlerinjektion betrieben wird.
  • Gemäß der Erfindung spezifiziert eine CPU flexibel Menge und Ort von Daten, die in einem Speicherelement mit sicherem Zugriff gespeichert sind. Eine Fehlerinjektion wird für die durch die CPU spezifizierten Daten unter Verwendung von Lese- und Schreibblöcken, die in der Hardware in der CPU implementiert sind, detektiert. Auf diese Weise ist eine Vergrößerung der Siliciumfläche für solche Lese- und Schreibblöcke für das Speicherelement beliebiger Kapazität unbedeutend. Außerdem wird eine Fehlerinjektion im Speicherelement oder am Bus zwischen dem Speicherelement und der CPU effektiv detektiert.
  • Vorteilhafte Ausführungsformen der Erfindung, wie sie unten ausführlich beschrieben werden, sind in den Zeichnungen gezeigt, in denen:
    • 1 ein Blockdiagramm eines elektronischen Systems mit einer sicheren Speicherschnittstelle gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 2 ein Blockdiagramm der sicheren Speicherschnittstelle von 1 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 3 ein Blockdiagramm eines Schreibblocks in der sicheren Speicherschnittstelle von 2 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 4 ein Schaltbild eines Breitenselektors im Schreibblock von 3 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 5 ein Blockdiagramm eines Kodierers zum Erzeugen eines Fehlerdetektionscodes im Schreibblock von 3 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 6 ein Blockdiagramm eines Leseblocks in der sicheren Speicherschnittstelle von 2 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 7 ein Blockdiagramm einer CPU mit einem Befehlsdekodierer als Modusselektor im Schreibblock und/oder Leseblock der 3 und 6 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 8 ein Blockdiagramm einer CPU mit einem Adressendekodierer als Modusselektor im Schreibblock und/oder Leseblock der 3 und 6 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 9 ein Blockdiagramm zeigt, das gemäß einer Ausführungsform der vorliegenden Erfindung eine Modifikation von 8 darstellt, wobei der Modusselektor außerhalb der CPU angeordnet ist,
    • 10 eine Verwendung von CPU-Adressenbits zum Anzeigen einer Aktivierung oder Deaktivierung des sicheren Modus gemäß einer Ausführungsform der vorliegenden Erfindung darstellt,
    • 11 ein Blockdiagramm einer CPU zeigt, die ein Flagregister als Modusselektor im Schreibblock und/oder Leseblock der 3 und 6 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 12 eine Tabelle zeigt, die eine Aktivierung oder Deaktivierung des sicheren Modus darstellt, wenn gemäß einer Ausführungsform der vorliegenden Erfindung ein Flagregister und ein Adressendekodierer als Modusselektor verwendet werden,
    • 13 eine Tabelle von Datenbreiten für die CPU und das Speicherelement mit Aktivierung und Deaktivierung des sicheren Modus gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 14 ein Flussdiagramm von Schritten beim Betrieb der sicheren Speicherschnittstelle von 2 und des Schreibblocks von 3 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 15 ein Flussdiagramm von Schritten beim Betrieb der sicheren Speicherschnittstelle von 2 und des Leseblocks von 6 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt,
    • 16A eine Tabelle von Eingaben in den Kodierer von 5 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt, und
    • 16B eine Tabelle von Ausgaben aus dem Kodierer von 5 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt.
  • Die hier angeführten Figuren sind zur deutlichen Darstellung gezeichnet und sind nicht notwendigerweise maßstabsgetreu gezeichnet. Elemente mit gleichen Bezugszeichen in den 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16A und 16B bezeichnen Elemente mit gleicher Struktur und/oder Funktion, sofern nichts anderes angegeben ist.
  • 1 zeigt ein Blockdiagramm eines elektronischen Systems 100 mit einem Speicherelement 102, einer Datenverarbeitungseinheit 104 und einem Bus 106. Das elektronische System 100 kann in einer beispielhaften Ausführungsform der vorliegenden Erfindung in Form von Komponenten einer Smartcard 110 verkörpert sein. Jedoch ist die vorliegende Erfindung nicht darauf beschränkt und die vorliegende Erfindung kann das elektronische System 100 in anderen Anwendungen verwenden. Die vorliegende Erfindung kann so ausgeführt sein, dass das Speicherelement 102 und die Datenverarbeitungseinheit 104 als ein Chip mit integrierter Schaltung gefertigt sind oder als zwei getrennte Chips mit integrierter Schaltung gefertigt sind.
  • Das Speicherelement 102 und die Datenverarbeitungseinheit 104 tauschen über den Bus 106 Signale aus. Die Datenverarbeitungseinheit 104 ist in einer beispielhaften Ausführungsform der vorliegenden Erfindung eine CPU (Zentralverarbeitungseinheit) mit einer sicheren Speicherschnittstelle 108 (d. h. eine Schnittstelleneinheit).
  • Mit Bezug zu den 1 und 2 umfasst eine sichere Speicherschnittstelle 108 einen Modusselektor 112, einen Schreibblock 114 und einen Leseblock 116. Der Schreibblock 114 empfängt eine Adresse (CPU-Adresse) und Daten (CPU-Daten) von der CPU 104 zum Schreiben dieser Daten in die angegebene Adresse des Speicherelements 102. Der Leseblock 116 empfängt eine Adresse (CPU-Adresse) von der CPU 104 zum Lesen von Daten aus der angegebenen Adresse des Speicherelements 102.
  • Der Modusselektor 112 aktiviert oder deaktiviert einen sicheren Betriebsmodus für den Schreibblock 114 und den Leseblock 116. In Abhängigkeit von der Aktivierung bzw. Deaktivierung des sicheren Modus durch den Modusselektor 112 arbeiten der Schreibblock 114 und der Leseblock 116 in einem sicheren Modus oder einem nicht-sicheren Modus. Der Modusselektor 112 erzeugt ein Freigabesignal des sicheren Modus SMI_Enable, das eine Aktivierung oder Deaktivierung des sicheren Modus anzeigt.
  • 3 zeigt ein Blockdiagramm des Schreibblocks 114 von 2 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Der Schreibblock 114 umfasst einen Breitenselektor 202, einen Kodierer 204, einen Mischer 206 und eine Speicherschreibzustandsmaschine FSM (Finite State Machine) 208.
  • Mit Bezug zu den 1, 2 und 3 aktiviert die CPU 104 eines der Registerbreitensignale Register_Width „24“, „16“ und „8“, das die Anzahl an Bits (d. h. CPU-Datenbreite oder allgemeiner eine Verarbeitungsdatenbreite) anzeigt, die von der CPU 104 mit dem Speicherelement 102 verarbeitet wird. Zum Beispiel erzeugt die CPU 104 8 Bits, 16 Bits oder 24 Bits Daten für das Speicherelement 102 gleichzeitig oder empfängt 8 Bits, 16 Bits oder 24 Bits Daten gleichzeitig vom Speicherelement 102.
  • 13 zeigt eine Tabelle von Datenbits, die im Speicherelement 102 belegt sind, in Abhängigkeit von der CPU-Datenbreite. In der ersten Spalte 902 ist die typische beispielhafte CPU-Datenbreite aufgelistet, wie 8 Bits, 16 Bits oder 24 Bits. In der zweiten Spalte 904 ist die zugehörige Anzahl an Bits aufgelistet, die für jede der CPU-Datenbreiten 8 Bits, 16 Bits und 24 Bits im Speicherelement 102 gespeichert ist, wenn der sichere Modus nicht aktiviert ist. In der dritten Spalte 906 ist die zugehörige Anzahl an Bits aufgelistet, die für jede der CPU-Datenbreiten 8 Bits, 16 Bits und 24 Bits im Speicherelement 102 gespeichert ist, wenn der sichere Modus aktiviert ist.
  • Wenn der sichere Modus nicht aktiviert ist, sind die 8 Bits Daten von der CPU 104 als 8 Bits im Speicherelement 102 gespeichert. Gleichermaßen sind, wenn der sichere Modus nicht aktiviert ist, die 16 Bits Daten von der CPU 104 als 16 Bits im Speicherelement 102 gespeichert. Ebenso sind, wenn der sichere Modus nicht aktiviert ist, die 24 Bits Daten von der CPU 104 als 32 Bits im Speicherelement 102 gespeichert, wobei die zusätzlichen 8 Bits auf vorgegebene Bits gesetzt sind.
  • Wenn der sichere Modus aktiviert ist, sind die 8 Bits Daten von der CPU 104 als 16 Bits im Speicherelement 102 gespeichert, wobei die zusätzlichen 8 Bits mit einem Fehlerdetektionscode erzeugt sind. Gleichermaßen sind, wenn der sichere Modus aktiviert ist, die 16 Bits Daten von der CPU 104 als 32 Bits im Speicherelement 102 gespeichert, wobei die zusätzlichen 16 Bits mit einem Fehlerdetektionscode erzeugt sind. Ebenso sind, wenn der sichere Modus aktiviert ist, die 24 Bits Daten von der CPU 104 als 32 Bits im Speicherelement 102 gespeichert, wobei die zusätzlichen 8 Bits mit einem Fehlerdetektionscode erzeugt sind.
  • Eine vierte Spalte 908 der Tabelle von 13 gibt die Vervielfachung (d. h. einen Größenzuwachsfaktor) von im Speicherelement 102 gespeicherten Bits (d. h. Speicherdatenbreite) zur Anzahl der von der CPU 104 erzeugten Anzahl an Bits (d. h. CPU-Datenbreite) für den sicheren Modus an, der aus dem deaktivierten sicheren Modus aktiviert wird. Das Vielfache der Anzahl an Bits, die im Speicherelement 102 gespeichert sind, zur Anzahl an Bits, die von der CPU 104 erzeugt sind, steigt auf das Zweifache, wenn die CPU-Datenbreite beim aktivierten sicheren Modus 8 Bits oder 16 Bits beträgt. Das Vielfache der Anzahl an Bits, die im Speicherelement 102 gespeichert sind, zur Anzahl an Bits, die von der CPU 104 erzeugt sind, bleibt „1“, wenn die CPU-Datenbreite auch beim aktivierten sicheren Modus 24 Bits beträgt.
  • Die fünfte Spalte 910 der Tabelle von 13 gibt die Sicherheitsebene an, die mit Aktivierung des sicheren Modus für die beispielhaften 8 Bits, 16 Bits und 24 Bits der CPU-Datenbreite erreicht wird. Die Sicherheitsebene (d. h. die Fähigkeit, eine Fehlerinjektion zu detektieren), die für die 8 Bits oder 16 Bits CPU-Datenbreite erreicht wird, ist sehr stark, weil die Anzahl an Bits nach Einführen des Fehlerdetektionscodes zum Speichern in das Speicherelement 102 um das Zweifache erhöht ist. Die Sicherheitsebene, die für die 24 Bits CPU-Datenbreite erreicht wird, ist stark, aber weniger stark als für die 8 Bits oder 16 Bits, weil nach Einführen des Fehlerdetektionscodes zum Speichern in das Speicherelement 102 die Anzahl an Bits für die 24 Bits um weniger als das Zweifache erhöht ist.
  • Mit Bezug zu den 3 und 13 aktiviert der Breitenselektor 202 eines der Datenbreitensignale „8“, „16“ und „32“ zum Steuern der Speicherschreib-FSM 208, so dass die Speicherdaten als 8 Bits, 16 Bits oder 32 Bits erzeugt werden. 4 zeigt ein Schaltbild des beispielhaften Breitenselektors 202, der eines der Speicherdatenbreitensignale „8“, „16“ und „32“ in Abhängigkeit davon aktiviert, welches der CPU-Datenbreitensignale „8“, „16“ und „24“ aktiviert ist, und in Abhängigkeit davon aktiviert, ob das Freigabesignal des sicheren Modus (SMI_Enable) aktiviert ist.
  • Mit Bezug zu 4 umfasst der Breitenselektor 202 einen Inverter 220 und erste, zweite, dritte und vierte UND-Gatter 222, 224, 226 bzw. 228. Der Breitenselektor 202 umfasst auch erste und zweite ODER-Gatter 232 bzw. 234. Das Freigabesignal des sicheren Modus (SMI_Enable) wird vom Inverter 220 und den UND-Gattern 222 und 226 eingegeben. Das „24“ CPU-Datenbreitensignal wird vom ODER-Gatter 232 eingegeben, das „16“ CPU-Datenbreitensignal wird von den UND-Gattern 222 und 224 eingegeben und das „8“ CPU-Datenbreitensignal wird von den UND-Gattern 226 und 228 eingegeben.
  • Der Inverter 220, die UND-Gatter 222, 224, 226 und 228 und die ODER-Gatter 232 und 234 sind, wie es in 4 dargestellt ist, so verbunden, dass das ODER-Gatter 232 das „32“ Speicherdatenbreitensignal ausgibt, das ODER-Gatter 234 das „16“ Speicherdatenbreitensignal ausgibt und das UND-Gatter 228 das „8“ Speicherdatenbreitensignal ausgibt. Mit Bezug zu den 4 und 13 wird eines der „8“, „16“ und „32“ Speicherdatenbreitensignale aktiviert, wenn ein zugehöriges der „8“, „16“ und „24“ CPU-Datenbreitensignale aktiviert ist und wenn der sichere Modus nicht aktiviert ist, wie es in der ersten und zweiten Spalte 902 und 904 von 13 dargestellt ist.
  • Alternativ wird eines der „16“ und „32“ Speicherdatenbreitensignale aktiviert, wenn ein zugehöriges der „8“, „16“ und „24“ CPU-Datenbreitensignale aktiviert ist und wenn der sichere Modus aktiviert ist, wie es in der ersten und dritten Spalte 902 und 906 von 13 dargestellt ist. Mit Bezug zu 3 werden die „8“, „16“ und „32“ Speicherdatenbreitensignale von der Speicherschreib-FSM 208 empfangen, so dass in Abhängigkeit davon, welches der „8“, „16“ und „32“ Speicherdatenbreitensignale aktiviert ist, die Speicherdaten als 8 Bits, 16 Bits oder 32 Bits erzeugt werden.
  • 5 zeigt ein Blockdiagramm des Kodierers 204 zum Erzeugen des Fehlerdetektionscodes (EDC), der verwendet wird, wenn der sichere Modus aktiviert ist. Der beispielhafte Kodierer 204 von 5 verwendet die von der CPU 104 erzeugten CPU-Daten zum Erzeugen des Fehlerdetektionscodes. Die vorliegende Erfindung kann jedoch auch mit einem Kodierer verwendet werden, der den Fehlerdetektionscode aus den CPU-Daten und der CPU-Adresse erzeugt, die von der CPU 104 erzeugt sind. In diesem Fall detektiert die sichere Speicherschnittstelle 110 eine Fehlerinjektion sowohl in den Daten und den Adressinformationen.
  • 16A zeigt eine Tabelle von Eingaben in den Kodierer 204 von 5 zur Aktivierung jedes der CPU-Datenbreitensignale „8“, „16“ und „24“ gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. 16B zeigt eine Tabelle von Ausgaben aus dem Kodierer 204 von 5 zur Aktivierung jedes der CPU-Datenbreitensignale „8“, „16“ und „24“ gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
  • Mit Bezug zum Beispiel von 5 umfasst der Kodierer 204 ein „E“ 8 Bits Eingangssignal 242, ein „Rh“ 8 Bits Eingangssignal 244 und ein „R1“ 8 Bits Eingangssignal 248. Außerdem umfasst der Kodierer 204 ein „EDC_out_H“ 8 Bits Ausgangssignal 258 und ein „EDC_out_L“ 8 Bits Ausgangssignal 260.
  • Mit Bezug zum Beispiel der 5, 16A und 16B, wenn die CPU-Datenbreite 8 Bits beträgt, enthält das „R1“ Eingangssignal 248 die CPU-Daten, während die „E“ und „Rh“ Eingangssignale 242 und 244 undefiniert sind (d. h. X in 16A). Ebenso ist in diesem Fall nur das EDC_out_L Ausgangssignal 260 gültig, während das EDC_out_H Ausgangssignal 258 undefiniert ist. Daher beinhaltet das EDC_out_L Ausgangssignal 260 den 8 Bits Fehlerdetektionscode (EDC), der vom Mischer 206 verwendet wird, wenn die CPU-Datenbreite 8 Bits beträgt.
  • Alternativ, wenn die CPU-Datenbreite 16 Bits beträgt, enthält das „R1“ Eingangssignal 248 das untere Byte der CPU-Daten, das „Rh“ Eingangssignal 244 enthält das hohe Byte der CPU-Daten und das „E“ Eingangssignal 242 ist auf null festgelegt. Ebenso sind in diesem Fall sowohl das EDC_out_L Ausgangssignal 260 als auch das EDC_out_H Ausgangssignal 258 gültig. Daher beinhalten das EDC_out_L Ausgangssignal 260 und das EDC_out_H Ausgangssignal 258 den 16 Bits Fehlerdetektionscode (EDC), der vom Mischer 206 verwendet wird, wenn die CPU-Datenbreite 16 Bits beträgt.
  • Wenn die CPU-Datenbreite 24 Bits beträgt, enthält das „R1“ Eingangssignal 248 das untere Byte der CPU-Daten, das „Rh“ Eingangssignal 244 enthält das mittlere Byte der CPU-Daten und das „E“ Eingangssignal 242 enthält das hohe Byte der CPU-Daten. Ebenso ist in diesem Fall nur das EDC_out_H Ausgangssignal 258 gültig, während das EDC_out_L Ausgangssignal 260 undefiniert ist. Daher beinhaltet das EDC_out_H Ausgangssignal 258 den 8 Bits Fehlerdetektionscode (EDC), der vom Mischer 206 verwendet wird, wenn die CPU-Datenbreite 24 Bits beträgt.
  • Der Kodierer 204 arbeitet auch mit einem 1 Bit Steuersignal „Ctrl_16bits_Access“ 246, das in einer beispielhaften Ausführungsform der vorliegenden Erfindung das „16“ CPU-Datenbreitensignal sein kann. Der Kodierer 204 umfasst auch ein vorgegebenes Datenregister 250, einen Kodierer für niedrige Bits 252, einen Kodierer für hohe Bits 256 und einen Multiplexer 254. Das „Ctrl_16bits_Access“-Signal 246 steuert den Multiplexer 254 an, so dass entweder eine Ausgabe des vorgegebenen Datenregisters 250 oder eine Ausgabe des Kodierers für niedrige Bits 252 ausgegeben wird.
  • Das „Ctrl_16bits_Access“-Signal 246 ist auf einen hohen logischen Zustand aktiviert, wenn die CPU 16 Bits Daten für die 16 Bits CPU-Datenbreite erzeugt. In diesem Fall wählt der Multiplexer 254 die Ausgabe des vorgegebenen Datenregisters 250, das ein vorgegebenes Bitmuster aufweist (wie beispielsweise 0x00 oder OxFF), das in den Kodierer für hohe Bits 256 einzugeben ist.
  • Anschließend verwendet der Kodierer für hohe Bits 256 das 8 Bits „Rh“ Eingangssignal 244, um das 8 Bits „EDC_out_H“ Ausgangssignal 258 zu erzeugen, während das „E“-Signal von der CPU 104 auf 0 gesetzt wird. Ebenso verwendet in diesem Fall der Kodierer für niedrige Bits 252 das 8 Bits „R1“ Eingangssignal 248, um das 8 Bits „EDC_out_L“ Ausgangssignal 260 zu erzeugen. Mit Bezug zu den 3 und 5 sind die gesamten 16 Bits des Fehlerdetektionscodes der „EDC_out_H“ und „EDC_out_L“ Ausgangssignale für den Mischer 206 verfügbar, wenn das „Ctrl_16bits Access“-Signal 246 für die 16 Bits CPU-Datenbreite aktiviert ist.
  • Das „Ctrl_16bits_Access“-Signal 246 wird auf einen niedrigen logischen Zustand deaktiviert, wenn die CPU 8 Bits oder 24 Bits Daten für die 8 Bits oder 24 Bits CPU Datenbreite erzeugt. In beiden Fällen verwendet der Kodierer für niedrige Bits 252 nur das „R1“ Eingangssignal 248, um das 8 Bits EDC-Ausgangssignal 260 „EDC_out_L“ zu erzeugen, das für den Mischer 206 und den Multiplexer 254 verfügbar ist. In beiden Fällen wählt der Multiplexer 254 die Ausgabe des Kodierers für niedrige Bits 252, die vom Kodierer für hohe Bits 256 einzugeben ist.
  • Der Kodierer für hohe Bits 256 verwendet das „Rh“ Eingangssignal 244, das „E“ Eingangssignal 242 und die Ausgabe des Kodierers für niedrige Bits 252, um das 8 Bits EDC-Ausgangssignal 258 „EDC_out_H“ zu erzeugen, das für den Mischer 206 verfügbar ist. Im Falle der 8 Bits CPU-Datenbreite ist nur das Ausgangssignal 260 „EDC_out_L“ gültig und wird vom Mischer 206 verwendet, der das Ausgangssignal 258 „EDC_out_H“ ignoriert. Im Falle der 24 Bits CPU-Datenbreite ist nur das Ausgangssignal 258 „EDC_out_H“ gültig und wird vom Mischer 206 verwendet, der das Ausgangssignal 260 „EDC_out_L“ ignoriert.
  • Mit Bezug zu den 2 und 3 arbeiten die sichere Speicherschnittstelle 108 und der Schreibblock 114 gemäß dem Flussdiagramm von 14, wenn die CPU 104 für eine Schreiboperation auf das Speicherelement 102 zugreift. Die CPU 104 erzeugt Schreibspeicherzugriffsinformationen, wie einen Schreibbefehl mit einem Schreibbefehlsnamen, einer CPU-Adresse, die eine Adresse des Speicherelements 102 angibt, auf das zuzugreifen ist, und CPU-Daten, die in das Speicherelement 102 einzuschreiben sind (Schritt S701 in 14). Die CPU-Adresse gibt den Ort des Speicherelements 102 zum Speichern der CPU-Daten an. Die CPU 104 kann einen zugehörigen Registernamen erzeugen, der solche CPU-Daten als Teil der Schreibspeicherzugriffsinformationen speichert.
  • Der Modusselektor 112 bestimmt, ob der sichere Modus von der CPU aktiviert ist, aus den Schreibspeicherzugriffsinformationen (Schritt S702 von 14). In einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt 7 den Modusselektor 112, der als Befehlsnamendekodierer implementiert ist. In diesem Fall spezifiziert die CPU 104 eine Aktivierung oder Deaktivierung des sicheren Modus für den Schreibbefehl mit dem zugehörigen Befehlsnamen.
  • Zum Beispiel beinhaltet der Schreibbefehl einen herkömmlichen Schreibbefehlsnamen zur Deaktivierung des sicheren Modus und beinhaltet einen sicheren Schreibbefehlsnamen zur Aktivierung des sicheren Modus. In diesem Fall dekodiert der Modusselektor 112 von 7 den Befehlsnamen zum Aktivieren oder Deaktivieren des Signals SMI_Enable gemäß dem Befehlsnamen. Für die Ausführungsform von 7 ist die CPU so ausgebildet, dass sie zusätzliche Befehlssätze ausführt, die zum Beispiel einen herkömmlichen Schreibbefehl, eine sicheren Schreibbefehl, einen herkömmlichen Lesebefehl und einen sicheren Lesebefehl beinhalten. Jeder der herkömmlichen Schreib- und Lesebefehlsnamen führt zu einer Deaktivierung des Signals SMI_Enable und jeder der sicheren Schreib- und Lesebefehlsnamen führt zu einer Aktivierung des Signals SMI_Enable.
  • In einer anderen Ausführungsform der vorliegenden Erfindung zeigt 8 den Modusselektor 112, der als Adressendekodierer 264 implementiert ist. In diesem Fall spezifiziert die CPU 104 eine Aktivierung oder Deaktivierung des sicheren Modus für den Schreibbefehl mit der vom Adressengenerator 262 in der CPU 104 erzeugten CPU-Adresse. Wie in einem Beispiel von 10 dargestellt ist, ist die Anzahl an CPU-Adressenbits ausreichend, um 16 Megabytes Speicherkapazität zu spezifizieren. Die tatsächliche Gesamtkapazität aller Speicherelemente in dem elektronischen System 100, wie in einer Smartcard, ist jedoch signifikant niedriger als die adressierbare Speicherkapazität.
  • Daher können einige Bits der von der CPU 104 erzeugten CPU-Adresse dazu verwendet werden, eine Aktivierung oder Deaktivierung des sicheren Modus zu spezifizieren, da solche Bits nicht zum Spezifizieren der Adressen des Speicherelements 102 benötigt werden. In diesem Fall dekodiert der Adressendekodierer 264 eine solche CPU-Adresse vom Adressengenerator 262, um das Signal SMI_Enable zur Aktivierung oder Deaktivierung des sicheren Modus zu aktivieren oder zu deaktivieren. Zum Beispiel umfasst der Adressendekodierer 264 einen Adressenfilter, der bestimmt, ob jede CPU-Adresse vom Adressengenerator 262 eine sichere Adresse zur Aktivierung des sicheren Modus ist oder eine nicht-sichere Adresse zur Deaktivierung des sicheren Modus ist.
  • 9 stellt eine alternative Ausführungsform der vorliegenden Erfindung dar, wobei ein Adressendekodierer 265 außerhalb der CPU 104 ausgebildet ist. Der Adressengenerator 262 von 9 funktioniert ähnlich wie der Adressengenerator 262 von 8. Der Modusselektor 112 mit dem Adressendekodierer 265 ist in 9 jedoch außerhalb der CPU 104 ausgebildet, um Modifikationen der CPU 104 des elektronischen Systems 100 zu minimieren.
  • In einer alternativen Ausführungsform der vorliegenden Erfindung stellt 11 den Modusselektor 112 so dar, dass er mit einem Flagregister 750 implementiert ist, das mit einer Mehrzahl von Datenregistern 760 der CPU 104 korrespondiert. Jedes der Mehrzahl von Datenregistern 760 speichert zugehörige CPU-Daten, die zwischen der CPU 104 und dem Speicherelement 102 zu verarbeiten sind. Wenn ein Schreib-/Lesebefehl erzeugt wird, spezifiziert die CPU 104 eine zugehörige Identifizierung des Registers, das die CPU-Daten enthält (d. h. einen zugehörigen Registernamen).
  • Das Flagregister 750 umfasst eine Mehrzahl von Registerflags, wobei jedes Registerflag für eine Aktivierung oder Deaktivierung eines zugehörigen der Mehrzahl von Registern 760 gesetzt ist. Zum Beispiel entspricht das Registerflag #1 einem Register #1, das Registerflag #2 entspricht einem Register #2, ... und so weiter. Der Modusselektor 112 von 11 umfasst einen Flagmultiplexer 752, der ein zugehöriges Registerflag für eines der Register 760 ausgibt, das vom Signal register_select ausgewählt ist, um die CPU-Daten durch einen Registermultiplexer 762 auszugeben.
  • In diesem Fall erzeugt die CPU 104 den Schreib-/Lesebefehl, der einen zugehörigen Registernamen beinhaltet, der mit den CPU-Daten korrespondiert. Das Signal register_select wird gemäß dem zugehörigen Registernamen zum Steuern der Multiplexer 752 und 762 erzeugt, so dass das entsprechende der Registerflags 750 und die CPU-Daten vom entsprechenden der Register 760 ausgegeben werden. Das ausgewählte Registerflag vom Flagmultiplexer 752 ist das Signal SMI_enable.
  • In der Ausführungsform von 11 ist jedes Flag in den Flagregistern 750 in der CPU 104 programmierbar. Die Ausführungsform von 11 ist besonders geeignet für Stapeloperationen der CPU 104, wobei das Flagregister 750 automatisch sicheren oder nicht-sicheren Zugriff auf das Speicherelement 102 für jeden Adressenverweis in einer Stapeloperation anzeigt.
  • 12 stellt eine alternative Ausführungsform der vorliegenden Erfindung dar, wobei der Modusselektor 112 den Adressendekodierer 264 oder 265 und das Flagregister 750 aufweist. In diesem Fall werden sowohl der Registername und die CPU-Adresse in den von der CPU 104 erzeugten Speicherzugriffsinformationen zum Bestimmen einer Aktivierung oder Deaktivierung des sicheren Modus gemäß der Tabelle von 12 verwendet.
  • Mit Bezug zu einer ersten Zeile 771 in der Tabelle von 12 zeigt das Flag für den Registernamen eine Deaktivierung des sicheren Modus an und die CPU-Adresse gibt eine Deaktivierung des sicheren Modus an. In diesem Fall ist das Signal SMI_enable zur Deaktivierung des sicheren Modus deaktiviert. Mit Bezug zu einer zweiten Zeile 772 in der Tabelle von 12 zeigt das Flag für den Registernamen eine Deaktivierung des sicheren Modus an, aber die CPU-Adresse zeigt eine Aktivierung des sicheren Modus an. In diesem Fall ist das Signal SMI_enable zur Aktivierung des sicheren Modus aktiviert.
  • Mit Bezug zu einer dritten Zeile 773 in der Tabelle von 12 zeigt das Flag für den Registernamen eine Aktivierung des sicheren Modus an, aber die CPU-Adresse zeigt eine Deaktivierung des sicheren Modus an. In diesem Fall ist das Signal SMI_enable zur Aktivierung des sicheren Modus aktiviert. Mit Bezug zu einer vierten Zeile 774 in der Tabelle von 12 zeigt das Flag für den Registernamen eine Aktivierung des sicheren Modus an und die CPU-Adresse zeigt eine Aktivierung des sicheren Modus an. In diesem Fall ist das Signal SMI_enable zur Aktivierung des sicheren Modus aktiviert. Auf diese Weise ist in 12 das Signal SMI_enable zur Aktivierung des sicheren Modus aktiviert, wenn der Registername und/oder die CPU-Adresse eine Aktivierung des sicheren Modus anzeigt.
  • Beispiele von Speicherzugriffsinformationen, die von der CPU 104 erzeugt sind, umfassen eine Reihe von Lese-/Schreibbefehlen, wie folgt:
    Figure DE102009041882B4_0001
  • Der beispielhafte Befehl „write_8 R0 @0x100“ umfasst den Befehlsnamen „write_8“, der ein herkömmliches Schreiben mit Deaktivierung des sicheren Modus und mit einer CPU-Datenbreite von 8 Bits anzeigt. Ein solcher Befehl beinhaltet auch den Registernamen „R0“ mit den in das Speicherelement 102 einzuschreibenden CPU-Daten und beinhaltet die CPU-Adresse „0x100“, um die Adresse des Speicherelements 102 anzuzeigen, auf das für die Schreiboperation zuzugreifen ist.
  • Der beispielhafte Befehl „secure_write_16 A8 @0x10A“ umfasst den Befehlsnamen „secure_write_16“, der ein sicheres Schreiben mit Aktivierung des sicheren Modus und mit einer CPU-Datenbreite von 16 Bits anzeigt. Ein solcher Befehl beinhaltet auch den Registernamen „A8“ mit den in das Speicherelement 102 einzuschreibenden CPU-Daten und beinhaltet die CPU-Adresse „0x10A“, um die Adresse des Speicherelements 102 anzuzeigen, auf das für die Schreiboperation zuzugreifen ist.
  • Der beispielhafte Befehl „read_8 R1 @0x102“ umfasst den Befehlsnamen „read_8“, der ein herkömmliches Lesen mit Deaktivierung des sicheren Modus und mit einer CPU-Datenbreite von 8 Bits anzeigt. Ein solcher Befehl beinhaltet auch den Registernamen „R1“, um die aus dem Speicherelement 102 gelesenen Daten zu empfangen, und beinhaltet die CPU-Adresse „0x102“, um die Adresse des Speicherelements 102 anzuzeigen, auf das für die Leseoperation zuzugreifen ist.
  • Der beispielhafte Befehl „secure_read_24 A8 @0x10A“ umfasst den Befehlsnamen „secure_read_24“, der ein sicheres Lesen mit Aktivierung des sicheren Modus und mit einer CPU-Datenbreite von 24 Bits anzeigt. Ein solcher Befehl beinhaltet auch den Registernamen „A8“, um die aus dem Speicherelement 102 gelesenen Daten zu empfangen, und beinhaltet die CPU-Adresse „0x10A“, um die Adresse des Speicherelements 102 anzuzeigen, auf das für die Leseoperation zuzugreifen ist.
  • Nochmals mit Bezug zu den 3 und 14, wenn der sichere Modus deaktiviert ist, wie es vom Signal SMI_enable angezeigt ist (Schritt S703 in 14), gibt der Mischer 206 die gemischten Daten einfach als CPU-Daten (d. h. ursprüngliche Schreibdaten) an die Speicherschreibzustandsmaschine FSM 208 aus (Schritt S704 von 14). Anschließend verschiebt die Speicherschreibzustandsmaschine FSM 208 die CPU-Daten (d. h. ursprünglichen Schreibdaten) als Speicherdaten und die CPU-Adresse als Speicheradresse zum Speicherelement 102 mit Aktivierung des Schreibfreigabesignals (Schritt S707 von 14). Auf diese Weise werden diese Speicherdaten in diese Speicheradresse des Speicherelements 102 geschrieben. Die Menge an in das Speicherelement 102 geschriebenen Speicherdaten hängt von der Ausgabe des Breitenselektors 202 ab, wie es oben mit Bezug zu den 4 und 13 beschrieben wurde.
  • Alternativ kann, wenn der sichere Modus aktiviert ist, wie es vom Signal SMI_enable angezeigt ist (Schritt S703 in 14), der Kodierer den Fehlerdetektionscode (EDC) unter Verwendung der CPU-Daten (d. h. ursprünglichen Schreibdaten) und/oder der zugehörigen CPU-Adresse von der CPU 104 erzeugen. Die Anzahl an Bits des Fehlerdetektionscodes (EDC) hängt von der CPU-Datenbreite ab (Schritt S705 von 14), wie es oben mit Bezug zu den 5, 16A und 16B beschrieben wurde.
  • Ein solcher Fehlerdetektionscode (EDC) wird vom Mischer 206 mit den CPU-Daten (d. h. ursprünglichen Schreibdaten) gemischt, um gemischte Schreibdaten zu erzeugen (Schritt S706 von 14), wobei eine Anzahl an Bits von der CPU-Datenbreite abhängt. Anschließend erzeugt die Speicherschreibzustandsmaschine FSM 208 die Speicherdaten (d. h. endgültigen Schreibdaten) und die Speicheradresse aus diesen gemischten Schreibdaten (Schritt S707 von 14). Die Anzahl an Bits der Speicherdaten hängt von den Speicherdatenbreitensignalen „8“, „16“ und „32“ vom Breitenselektor 202 ab, wie es oben mit Bezug zu den 4 und 13 beschrieben wurde. Das Speicherelement 102 empfängt und speichert diese Speicherdaten in diese Speicheradresse des Speicherelements 102. Auf diese Weise schließen die Speicherdaten, die in das Speicherelement 102 eingespeichert sind, wenn der sichere Modus aktiviert ist, den Fehlerdetektionscode (EDC) für eine sichere Schreiboperation in Schritt S707 von 14 ein.
  • 6 zeigt ein Blockdiagramm des Leseblocks 116 von 2 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Der Leseblock 116 umfasst einen Breitenselektor 252, einen Kodierer 254, einen Entmischer 256, eine Speicherlesezustandsmaschine FSM (Finite State Machine) 258 und einen Komparator 260. Gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung sind der Breitenselektor 252 und der Kodierer 254 im Leseblock 116 von 6 ähnlich wie der Breitenselektor 202 und der Kodierer 204 im Schreibblock 114 von 3 implementiert. Der Entmischer 256 im Leseblock 116 von 6 funktioniert umgekehrt wie der Mischer 206 im Schreibblock 114 von 3, um den Fehlerdetektionscode von den Daten abzuspalten.
  • Mit Bezug zu den 2 und 6 arbeiten die sichere Speicherschnittstelle 108 und die Komponenten 252, 254, 256, 258 und 260 des Leseblocks 116 weiter gemäß dem Flussdiagramm von 15, wenn die CPU 104 für eine Leseoperation auf das Speicherelement 102 zugreift. Die CPU 104 erzeugt Lesespeicherzugriffsinformationen, wie einen Lesebefehl, der einen Lesebefehlsnamen und eine CPU-Adresse beinhaltet, die eine Adresse des Speicherelements anzeigt, auf die zuzugreifen ist (Schritt S801 in 14). Die CPU-Adresse zeigt den Ort des Speicherelements 102, an dem zu lesen ist.
  • Der Modusselektor 112 bestimmt aus den Lesespeicherzugriffsinformationen, ob der sichere Modus von der CPU aktiviert ist (Schritt S802 von 15). Der Modusselektor 112 kann gemäß einer beliebigen der oben beschriebenen beispielhaften Ausführungsformen der 7, 8, 9, 10, 11 und 12 implementiert sein.
  • Außerdem verschiebt die Speicherlesezustandsmaschine FSM 258 die CPU-Adresse als Speicheradresse zum Speicherelement 102 mit Aktivierung des Lesefreigabesignals (Schritt S803 von 15). Anschließend überführt das Speicherelement 102 die Speicherdaten als ursprüngliche Lesedaten von dieser Speicheradresse des Speicherelements 102 zur Speicherlesezustandsmaschine FSM 258 (Schritt S804 von 15). Die Anzahl an Bits der ursprünglichen Lesedaten hängt von den Speicherdatenbreitensignalen „8“, „16“ und „32“ vom Breitenselektor 252 ab, wie es oben mit Bezug zu den 4 und 13 beschrieben wurde.
  • Wenn der sichere Modus deaktiviert ist, wie es vom Signal SMI_enable angezeigt ist (Schritt S805 in 15), erzeugt der Entmischer 256 die endgültigen Lesedaten (d. h. die CPU-Daten) aus den ursprünglichen Lesedaten, ohne einen Fehlerdetektionscode aus den ursprünglichen Lesedaten abzuspalten (Schritt S806 in 15). Die endgültigen Lesedaten (d. h. die CPU-Daten) werden zur CPU 104 übertragen, wobei die Anzahl an Bits der endgültigen Lesedaten mit einem aktivierten der CPU-Datenbreitensignale „8“, „16“ und „24“ korrespondiert.
  • Alternativ kann, wenn der sichere Modus aktiviert ist, wie es vom Signal SMI_enable angezeigt ist (Schritt S805 in 15), der Entmischer 256 die endgültigen Lesedaten (d. h. die CPU-Daten) aus den ursprünglichen Lesedaten dadurch erzeugen, dass ein Fehlerdetektionscode aus den ursprünglichen Lesedaten abgespaltet wird (Schritt S807 in 15). Anschließend erzeugt der Kodierer 254 einen erwarteten Fehlerdetektionscode (EDC) unter Verwendung der CPU-Adresse und/oder der endgültigen Lesedaten (Schritt S808 in 15). Danach erzeugt der Komparator 260 ein Fehlerdetektionssignal (SMI_Error) durch Vergleichen dieses erwarteten EDC vom Kodierer 254 mit dem errechneten EDC, der aus den ursprünglichen Lesedaten vom Entmischer 256 extrahiert ist (Schritt S809 von 15).
  • Wenn der erwartete EDC vom Kodierer 254 nicht im Wesentlichen gleich ist wie der errechnete EDC, der aus den ursprünglichen Lesedaten vom Entmischer 256 extrahiert ist, aktiviert der Komparator 260 das Signal SMI_Error, um die Detektion einer Fehlerinjektion in die ursprünglichen Lesedaten anzuzeigen, die von der Speicherlesezustandsmaschine FSM 258 empfangen worden sind. Das elektronische System 100 wird über eine solche Fehlerinjektion in die ursprünglichen Lesedaten informiert.
  • In einer Ausführungsform der vorliegenden Erfindung sind der Schreibblock 114 und der Leseblock 116 jeweils mit Hardwarelogikgattern in der CPU 104 implementiert. Diese zusätzlichen Hardwarelogikgatter nehmen eine relativ geringe Siliciumfläche der CPU 104 ein. Eine Fehlerinjektion wird für solche sichere Daten, die von der CPU 104 spezifiziert sind, unter Verwendung der Lese- und Schreibblöcke 114 und 116 detektiert, die in der Hardware der CPU 104 implementiert sind. Auf diese Weise ist eine Erweiterung der Siliciumfläche für solche Lese- und Schreibblöcke 114 und 116 selbst bei einem Speicherelement 102 mit hoher Kapazität unbedeutend.
  • Außerdem wird eine Fehlerinjektion im Speicherelement 102 oder am Bus 106 zwischen dem Speicherelement 102 und der CPU 104 effektiv detektiert. Darüber hinaus kann die CPU 104 die Menge und den Ort der sicheren Daten, die im Speicherelement 102 gespeichert sind, ungeachtet der Kapazität des Speicherelements 102 flexibel spezifizieren.
  • Die obigen Ausführungen sind nur Beispiele und sind nicht als Einschränkung zu verstehen. Daher dient jegliche Anzahl von Elementen, die hier dargestellt oder beschrieben sind, nur als Beispiel. Außerdem können die Komponenten des Schreibblocks 114 und des Leseblocks 116 einfach mit Hardwarelogikgattern implementiert sein, die hier in der Beschreibung dieser Komponenten gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung angegeben sind. Die vorliegende Erfindung kann jedoch auch mit solchen Komponenten des Schreibblocks 114 und des Leseblocks 116 realisiert sein, die mit einer Kombination aus Hardware und/oder Software implementiert sind.

Claims (29)

  1. Sichere Speicherschnittstelle (108), umfassend: - einen Leseblock (116), der endgültige Lesedaten erzeugt, die an eine Datenverarbeitungseinheit zu übertragen sind, indem er Fehlerdetektionscode von ursprünglichen Lesedaten abspaltet, die von einem Speicherelement (102) übertragen sind, wenn ein sicherer Modus aktiviert ist, und - einen Modusselektor (112) zum Aktivieren oder Deaktivieren des sicheren Modus unter Verwendung von Speicherzugriffsinformationen von der Datenverarbeitungseinheit, wobei der Leseblock die endgültigen Lesedaten aus den ursprünglichen Lesedaten ohne Abspalten eines Fehlerdetektionscodes erzeugt, wenn der sichere Modus deaktiviert ist.
  2. Sichere Speicherschnittstelle nach Anspruch 1, wobei die Speicherzugriffsinformationen einen Befehlsnamen umfassen und der Modusselektor umfasst: - einen Befehlsdekodierer (112), der den sicheren Modus aktiviert, wenn der Befehlsname einen sicheren Lesebefehl bezeichnet, und der den sicheren Modus deaktiviert, wenn der Befehlsname einen herkömmlichen Lesebefehl bezeichnet.
  3. Sichere Speicherschnittstelle nach Anspruch 2, wobei der Leseblock und der Befehlsdekodierer in der Datenverarbeitungseinheit angeordnet sind, die eine Zentralverarbeitungseinheit, CPU, ist.
  4. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 3, wobei die Speicherzugriffsinformationen eine Adresse des Speicherelements umfassen, auf das hinsichtlich der ursprünglichen Lesedaten zuzugreifen ist, und wobei der Modusselektor umfasst: - einen Adressendekodierer (264), der den sicheren Modus aktiviert, wenn die Adresse des Speicherelements, auf das zuzugreifen ist, eine sichere Adresse ist, und der den sicheren Modus deaktiviert, wenn die Adresse des Speicherelements, auf das zuzugreifen ist, keine sichere Adresse ist.
  5. Sichere Speicherschnittstelle nach Anspruch 4, wobei der Adressendekodierer getrennt von der Datenverarbeitungseinheit vorgesehen ist, wobei die Datenverarbeitungseinheit eine Zentralverarbeitungseinheit, CPU, zum Erzeugen der Adressen des Speicherelements ist, auf das zuzugreifen ist.
  6. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 5, wobei die Speicherzugriffsinformationen einen Registernamen umfassen und der Modusselektor umfasst: - ein zugehöriges Registerflag, welches anzeigt, ob der Registername einer Aktivierung oder einer Deaktivierung des sicheren Modus entspricht.
  7. Sichere Speicherschnittstelle nach Anspruch 6, wobei der Leseblock und das zugehörige Registerflag in der Datenverarbeitungseinheit vorgesehen sind, die eine Zentralverarbeitungseinheit CPU, ist.
  8. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 7, wobei der Leseblock umfasst: - einen Entmischer (256) zum Erzeugen der endgültigen Lesedaten durch Abspalten des Fehlerdetektionscodes aus den ursprünglichen Lesedaten, wenn der sichere Modus aktiviert ist, und zum Erzeugen der endgültigen Lesedaten aus den ursprünglichen Lesedaten ohne Abspalten eines Fehlerdetektionscodes, wenn der sichere Modus deaktiviert ist, - einen Kodierer (204) zum Erzeugen eines erwarteten Fehlerdetektionscodes aus einer zugehörigen Adresse und/oder den endgültigen Lesedaten und - einen Komparator (260) zum Erzeugen eines Fehlerdetektionssignals zum Vergleichen des Fehlerdetektionscodes, der aus den ursprünglichen Lesedaten abgespaltet ist, mit dem erwarteten Fehlerdetektionscode.
  9. Sichere Speicherschnittstelle nach Anspruch 8, wobei der Leseblock weiter umfasst: - eine Zustandsmaschine (208) zum Lesen der ursprünglichen Lesedaten aus dem Speicherelement durch Erzeugen einer Speicheradresse und eines Lesefreigabesignals aus den Speicherzugriffsinformationen und - einen Breitenselektor (202) zum Steuern der Zustandsmaschine zum Lesen der ursprünglichen Lesedaten mit einer Speicherdatenbreite, die von mindestens einem Datenbreitesteuersignal abhängt, das auch den Betrieb des Kodierers und des Entmischers steuert.
  10. Sichere Speicherschnittstelle nach Anspruch 9, wobei die Speicherdatenbreite mit dem Speicherelement korrespondiert und das mindestens eine Datenbreitesteuersignal mit einer Verarbeitungsdatenbreite der Datenverarbeitungseinheit korrespondiert.
  11. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 10, wobei die Datenverarbeitungseinheit eine CPU ist, die von dem Speicherelement durch einen Bus getrennt ist.
  12. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 11, wobei die Datenverarbeitungseinheit und das Speicherelement als ein einzelner integrierter Schaltungschip gebildet sind.
  13. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 11, wobei die Datenverarbeitungseinheit und das Speicherelement als zwei getrennte integrierte Schaltungschips gebildet sind.
  14. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 13, weiter umfassend: - einen Schreibblock (114), der endgültige Schreibdaten, die in das Speicherelement zu schreiben sind, aus ursprünglichen Schreibdaten und Fehlerdetektionscode erzeugt, wenn der sichere Modus aktiviert ist, - wobei der Schreibblock die endgültigen Schreibdaten aus den ursprünglichen Schreibdaten ohne den Fehlerdetektionscode erzeugt, wenn der sichere Modus deaktiviert ist.
  15. Sichere Speicherschnittstelle nach Anspruch 14, wobei der Schreibblock und der Leseblock mittels Hardwarelogikgattern implementiert sind, insbesondere innerhalb der CPU.
  16. Verfahren zum sicheren Zugreifen auf ein Speicherelement (102), mit den Schritten: - Erzeugen von endgültigen Lesedaten, die an eine Datenverarbeitungseinheit (104) zu übertragen sind, durch Abspalten eines Fehlerdetektionscodes aus ursprünglichen Lesedaten, die von dem Speicherelement übertragen werden, wenn ein sicherer Modus aktiviert ist, - Aktivieren oder Deaktivieren des sicheren Modus unter Verwendung von Speicherzugriffsinformationen von der Datenverarbeitungseinheit, und - Erzeugen der endgültigen Lesedaten aus den ursprünglichen Lesedaten ohne Abspalten eines Fehlerdetektionscodes, wenn der sichere Modus deaktiviert ist.
  17. Verfahren nach Anspruch 16, wobei die Speicherzugriffsinformationen einen Befehlsnamen umfassen und das Verfahren weiter umfasst: - Aktivieren des sicheren Modus, wenn der Befehlsname einem sicheren Lesebefehl entspricht, und - Deaktivieren des sicheren Modus, wenn der Befehlsname einem herkömmlichen Lesebefehl entspricht.
  18. Verfahren nach Anspruch 16 oder 17, wobei die Speicherzugriffsinformationen eine Adresse des Speicherelements umfassen, auf das hinsichtlich der ursprünglichen Lesedaten zuzugreifen ist, und wobei das Verfahren weiter umfasst: - Aktivieren des sicheren Modus, wenn die Adresse des Speicherelements, auf das zuzugreifen ist, eine sichere Adresse ist, und - Deaktivieren des sicheren Modus, wenn die Adresse des Speicherelements, auf das zuzugreifen ist, eine nicht-sichere Adresse ist.
  19. Verfahren nach einem der Ansprüche 16 bis 18, wobei die Speicherzugriffsinformationen einen Registernamen umfassen und ein zugehöriges Registerflag anzeigt, ob der Registername mit einer Aktivierung oder einer Deaktivierung des sicheren Modus korrespondiert.
  20. Verfahren nach einem der Ansprüche 16 bis 19, weiter umfassend: - Erzeugen eines erwarteten Fehlerdetektionscodes aus einer korrespondierenden Adresse und/oder den endgültigen Lesedaten und - Erzeugen eines Fehlerdetektionssignals durch Vergleichen des Fehlerdetektionscodes, der aus den ursprünglichen Lesedaten abgespaltet ist, mit dem erwarteten Fehlerdetektionscode.
  21. Verfahren nach Anspruch 20, weiter umfassend: - Lesen der ursprünglichen Lesedaten aus dem Speicherelement durch Erzeugen einer Speicheradresse und eines Lesefreigabesignals aus den Speicherzugriffsinformationen und - Steuern der Zustandsmaschine zum Lesen der ursprünglichen Lesedaten mit einer Speicherdatenbreite, die von mindestens einem Datenbreitesteuersignal abhängt, wobei das mindestens eine Datenbreitesteuersignal mit einer Verarbeitungsdatenbreite der Datenverarbeitungseinheit korrespondiert.
  22. Verfahren nach einem der Ansprüche 16 bis 21, wobei die Datenverarbeitungseinheit eine CPU ist, die von dem Speicherelement durch einen Bus getrennt ist.
  23. Verfahren nach einem der Ansprüche 16 bis 22, wobei die Datenverarbeitungseinheit und das Speicherelement als ein integrierter Schaltkreischip gebildet sind.
  24. Verfahren nach einem der Ansprüche 16 bis 22, wobei die Datenverarbeitungseinheit und das Speicherelement als zwei getrennte integrierte Schaltkreischips gebildet sind.
  25. Verfahren nach einem der Ansprüche 16 bis 24, weiter umfassend: - Erzeugen vom endgültigen Schreibdaten, die in das Speicherelement zu schreiben sind, aus ursprünglichen Schreibdaten und Fehlerdetektionscode, wenn der sichere Modus aktiviert ist, und - Erzeugen der endgültigen Schreibdaten aus den ursprünglichen Schreibdaten ohne den Fehlerdetektionscode, wenn der sichere Modus deaktiviert ist.
  26. Verfahren zum Zugreifen auf ein Speicherelement (102), mit den Schritten: - Erzeugen von Speicherzugriffsinformationen mit mindestens einem Adressenbit, die einen Zugriffstyp auf das Speicherelement spezifizieren, und - Zugreifen auf das Speicherelement gemäß dem Zugriffstyp, wie er durch die Speicherzugriffsinformationen spezifiziert ist, wobei das mindestens eine Adressenbit, das durch die Datenverarbeitungseinheit erzeugt ist, den Zugriffstyp auf das Speicherelement bestimmt.
  27. Verfahren nach Anspruch 26, wobei der Zugriffstyp einen sicheren Zugriff und einen nicht-sicheren Zugriff umfasst.
  28. Elektronisches System, umfassend: - ein Speicherelement (102), - eine Datenverarbeitungseinheit zum Erzeugen von Speicherzugriffsinformationen, die mindestens ein Adressenbit umfassen, die einen Zugriffstyp auf das Speicherelement spezifizieren, und - eine Schnittstelleneinheit (108) zum Zugreifen auf das Speicherelement gemäß dem Zugriffstyp, wie er durch die Speicherzugriffsinformationen spezifiziert ist, wobei das mindestens eine Adressenbit, das von der Datenverarbeitungseinheit erzeugt ist, den Zugriffstyp auf das Speicherelement bestimmt.
  29. Elektronisches System nach Anspruch 28, wobei der Zugriffstyp einen sicheren Zugriff und einen nicht-sicheren Zugriff umfasst.
DE102009041882.2A 2008-10-01 2009-09-08 Sichere Speicherschnittstelle, Verfahren zum sicheren Zugreifen auf ein Speicherelement und elektronisches System Active DE102009041882B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020080096574A KR101537018B1 (ko) 2008-10-01 2008-10-01 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드
KR10-2008-0096574 2008-10-01
US12/319,788 US8397042B2 (en) 2008-10-01 2009-01-12 Secure memory interface
US12/319,788 2009-01-12

Publications (2)

Publication Number Publication Date
DE102009041882A1 DE102009041882A1 (de) 2010-04-15
DE102009041882B4 true DE102009041882B4 (de) 2023-05-04

Family

ID=41821474

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009041882.2A Active DE102009041882B4 (de) 2008-10-01 2009-09-08 Sichere Speicherschnittstelle, Verfahren zum sicheren Zugreifen auf ein Speicherelement und elektronisches System

Country Status (1)

Country Link
DE (1) DE102009041882B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT510381B1 (de) * 2010-08-05 2017-03-15 Siemens Ag Oesterreich Speicherkontrollelement und zugehöriges konfigurationsverfahren

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978953A (en) 1996-12-19 1999-11-02 Compaq Computer Corporation error detection and correction
US20020029315A1 (en) 1999-07-22 2002-03-07 Williams Brett L. Reconfigurable memory with selectable error correction storage
US20070204199A1 (en) 2006-02-13 2007-08-30 Samsung Electronics Co., Ltd. Semiconductor memory device and memory system including the same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978953A (en) 1996-12-19 1999-11-02 Compaq Computer Corporation error detection and correction
US20020029315A1 (en) 1999-07-22 2002-03-07 Williams Brett L. Reconfigurable memory with selectable error correction storage
US20070204199A1 (en) 2006-02-13 2007-08-30 Samsung Electronics Co., Ltd. Semiconductor memory device and memory system including the same

Also Published As

Publication number Publication date
DE102009041882A1 (de) 2010-04-15

Similar Documents

Publication Publication Date Title
US20130212348A1 (en) Secure Memory Interface
DE102011108933B4 (de) Sichere Speicherung durch interne Betriebssicherstellung
DE3128740C2 (de)
DE102004039178B4 (de) Speichersteuerschaltung, Smartcard und Lesesteuerverfahren
DE102006048856B4 (de) Verfahren zum Betreiben einer IC-Halbleiterspeichervorrichtung und IC-Halbleiterspeichervorrichtung
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE3128729C2 (de) Halbleiter-Speichersystem
DE102005048255A1 (de) Integriertes Schaltungsbauelement und Betriebsverfahren
DE112009000612T5 (de) Multi-Betriebssystem-Booteinrichtung (OS), Multi-OS-Boot-Programm, Aufzeichnungsmedium und Multi-OS-Bootverfahren
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
DE102016109892B4 (de) Datenverarbeitungsvorrichtung und Verfahren zum Einsparen von Leistung in einer Datenverarbeitungsvorrichtung
DE102022101477A1 (de) Nichtflüchtige speichervorrichtungen, systeme und verfahren für einen schnellen, sicheren, stabilen systemboot
DE102006058875B4 (de) System und Verfahren zum Booten eines Systems
EP1262856B1 (de) Programmgesteuerte Einheit
DE102007058928A1 (de) Verfahren und Halbleiterspeicher mit einer Einrichtung zur Erkennung von Adressierungsfehlern
DE102008005863A1 (de) Verfahren zum Reparieren eines Halbleiterspeicherbauelements und Halbleiterspeicherbauelement
EP1913478B1 (de) Mikroprozessorsystem zur steuerung bzw. regelung von zumindest zum teil sicherheitskritischen prozessen
DE102022103555A1 (de) Auf leistungsverbrauch basierende bankumverteilung
DE102014002302B4 (de) System und Verfahren zum Bestimmen der operativen Robustheit eines Systems auf einem Chip
DE102009041882B4 (de) Sichere Speicherschnittstelle, Verfahren zum sicheren Zugreifen auf ein Speicherelement und elektronisches System
DE112007003117T5 (de) Neue Implementierung der Spaltenredundanz für einen Flash-Speicher mit einem hohen Schreibparallelismus
DE112019007230T5 (de) Multimodus-Geschützter-Speicher
DE602004003677T2 (de) Bootsteuersystem
DE112019000413T5 (de) Sicherheitserweiterung für Speichersteuerungen
DE102006036384A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KUHNEN & WACKER PATENT- UND RECHTSANWALTSBUERO, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final