Title:
Secure memory interface for electronic system, has reader block generating final read data from initial read data, and mode selector activating or deactivating secure mode using memory access information from data processing unit
Kind Code:
A1


Abstract:
The device has a reader block generating final read data to be transferred to a data processing unit e.g. CPU, by separating a error detection code from initial read data transferred by a memory device e.g. flash memory device, when a secure mode is activated. A mode selector activates or deactivates a secure mode using memory access information from the data processing unit. The reader block generates the final read data from the initial read data without separating any error detection code when the secure mode is deactivated. Independent claims are also included for the following: (1) a method for accessing a memory device (2) an electronic system comprising a memory device.



Inventors:
Riou, Sebastien (Seongnam, Kyonggi, KR)
Application Number:
DE102009041882
Publication Date:
04/15/2010
Filing Date:
09/08/2009
Assignee:
Samsung Electronics Co., Ltd. (Suwon, Kyonggi, KR)
International Classes:



Attorney, Agent or Firm:
Patentanwälte Ruff, Wilhelm, Beier, Dauster & Partner (Stuttgart, 70174)
Claims:
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.

2. Sichere Speicherschnittstelle nach Anspruch 1, wobei der Leseblock die endgültigen Lesedaten aus den ursprünglichen Lesedaten ohne Abspalten eines Fehlerdetektionscodes erzeugt, wenn der sichere Modus deaktiviert ist.

3. Sichere Speicherschnittstelle nach Anspruch 1 oder 2, 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.

4. Sichere Speicherschnittstelle nach Anspruch 3, wobei der Leseblock und der Befehlsdekodierer in der Datenverarbeitungseinheit angeordnet sind, die eine CPU (Zentralverarbeitungseinheit) ist.

5. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 4, 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.

6. Sichere Speicherschnittstelle nach Anspruch 5, wobei der Adressendekodierer getrennt von der Datenverarbeitungseinheit vorgesehen ist, wobei die Datenverarbeitungseinheit eine CPU (Zentralverarbeitungseinheit) zum Erzeugen der Adressen des Speicherelements ist, auf das zuzugreifen ist.

7. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 6, 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.

8. Sichere Speicherschnittstelle nach Anspruch 7, wobei der Leseblock und das zugehörige Registerflag in der Datenverarbeitungseinheit vorgesehen sind, die eine CPU (Zentralverarbeitungseinheit) ist.

9. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 8, 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.

10. Sichere Speicherschnittstelle nach Anspruch 9, 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.

11. Sichere Speicherschnittstelle nach Anspruch 10, wobei die Speicherdatenbreite mit dem Speicherelement korrespondiert und das mindestens eine Datenbreitesteuersignal mit einer Verarbeitungsdatenbreite der Datenverarbeitungseinheit korrespondiert.

12. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 11, wobei die Datenverarbeitungseinheit eine CPU ist, die von dem Speicherelement durch einen Bus getrennt ist.

13. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 12, wobei die Datenverarbeitungseinheit und das Speicherelement als ein einzelner integrierter Schaltungschip gebildet sind.

14. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 12, wobei die Datenverarbeitungseinheit und das Speicherelement als zwei getrennte integrierte Schaltungschips gebildet sind.

15. Sichere Speicherschnittstelle nach einem der Ansprüche 1 bis 14, 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.

16. Sichere Speicherschnittstelle nach Anspruch 15, wobei der Schreibblock und der Leseblock mittels Hardwarelogikgattern implementiert sind, insbesondere innerhalb der CPU.

17. Sichere Speicherschnittstelle, umfassend:
– einen Schreibblock (114), der endgültige Schreibdaten, die in ein Speicherelement (102) zu schreiben sind, aus ursprünglichen Schreibdaten und einem Fehlerdetektionscode erzeugt, wenn ein sicherer Modus aktiviert ist, und
– einen Modusselektor (112) zum Aktivieren oder Deaktivieren des sicheren Modus unter Verwendung von Speicherzugriffsinformationen von einer Datenverarbeitungseinheit.

18. Sichere Speicherschnittstelle nach Anspruch 17, wobei der Schreibblock die endgültigen Schreibdaten aus den ursprünglichen Schreibdaten ohne den Fehlerdetektionscode erzeugt, wenn der sichere Modus deaktiviert ist.

19. Sichere Speicherschnittstelle nach Anspruch 17 oder 18, wobei die Speicherzugriffinformationen einen Befehlsnamen umfassen und der Modusselektor umfasst:
– einen Befehlsdekodierer (112), der den sicheren Modus aktiviert, wenn der Befehlsname einem sicheren Schreibbefehl entspricht, und der den sicheren Modus deaktiviert, wenn der Befehlsname einem herkömmlichen Schreibbefehl entspricht.

20. Sichere Speicherschnittstelle nach einem der Ansprüche 17 bis 19, wobei die Speicherzugriffsinformationen eine Adresse des Speicherelements umfassen, auf das zuzugreifen ist, und 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, eine nicht-sichere Adresse ist.

21. Sichere Speicherschnittstelle nach einem der Ansprüche 17 bis 20, wobei die Speicherzugriffsinformationen einen Registernamen umfassen und der Modusselektor umfasst:
– ein zugehöriges Registerflag, welches anzeigt, ob der Registername mit einer Aktivierung oder einer Deaktivierung des sicheren Modus korrespondiert.

22. Sichere Speicherschnittstelle nach einem der Ansprüche 17 bis 21, wobei der Schreibblock umfasst:
– einen Kodierer (204) zum Erzeugen des Fehlerdetektionscodes aus einer korrespondierenden Adresse und/oder den ursprünglichen Schreibdaten und
– einen Mischer (206) zum Erzeugen von gemischten Schreibdaten aus den ursprünglichen Schreibdaten und dem Fehlerdetektionscode, wenn der sichere Modus aktiviert ist, und aus den ursprünglichen Schreibdaten ohne den Fehlerdetektionscode, wenn der sichere Modus deaktiviert ist,
– wobei die gemischten Schreibdaten die endgültigen Schreibdaten bestimmen.

23. Sichere Speicherschnittstelle nach Anspruch 22, wobei der Schreibblock weiter umfasst:
– eine Zustandsmaschine (208) zum Erzeugen der endgültigen Schreibdaten, eines Schreibfreigabesignals und einer Speicheradresse des Speicherelements zum Speichern der endgültigen Schreibdaten aus den gemischten Schreibdaten und
– einen Breitenselektor (202) zum Steuern der Zustandsmaschine zum Erzeugen der endgültigen Schreibdaten mit einer Speicherdatenbreite, die von mindestens einem Datenbreitesteuersignal abhängt, das auch den Betrieb des Kodierers und des Mixers steuert,
– wobei das mindestens eine Datenbreitesteuersignal insbesondere mit einer Verarbeitungsdatenbreite der Datenverarbeitungseinheit korrespondiert.

24. Sichere Speicherschnittstelle nach einem der Ansprüche 17 bis 23, wobei die Datenverarbeitungseinheit eine CPU ist, die von dem Speicherelement über einen Bus getrennt ist.

25. Sichere Speicherschnittstelle nach einem der Ansprüche 17 bis 24, wobei die Datenverarbeitungseinheit und das Speicherelement als ein integrierter Schaltkreischip gefertigt sind.

26. Sichere Speicherschnittstelle nach einem der Ansprüche 17 bis 24, wobei die Datenverarbeitungseinheit und das Speicherelement als zwei getrennte integrierte Schaltkreischips gebildet sind.

27. 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, und
– Aktivieren oder Deaktivieren des sicheren Modus unter Verwendung von Speicherzugriffsinformationen von der Datenverarbeitungseinheit.

28. Verfahren nach Anspruch 27, weiter umfassend:
– Erzeugen der endgültigen Lesedaten aus den ursprünglichen Lesedaten ohne Abspalten eines Fehlerdetektionscodes, wenn der sichere Modus deaktiviert ist.

29. Verfahren nach Anspruch 27 oder 28, 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.

30. Verfahren nach einem der Ansprüche 27 bis 29, 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.

31. Verfahren nach einem der Ansprüche 27 bis 30, 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.

32. Verfahren nach einem der Ansprüche 27 bis 31, 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.

33. Verfahren nach Anspruch 32, 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.

34. Verfahren nach einem der Ansprüche 27 bis 33, wobei die Datenverarbeitungseinheit eine CPU ist, die von dem Speicherelement durch einen Bus getrennt ist.

35. Verfahren nach einem der Ansprüche 27 bis 34, wobei die Datenverarbeitungseinheit und das Speicherelement als ein integrierter Schaltkreischip gebildet sind.

36. Verfahren nach einem der Ansprüche 27 bis 34, wobei die Datenverarbeitungseinheit und das Speicherelement als zwei getrennte integrierte Schaltkreischips gebildet sind.

37. Verfahren nach einem der Ansprüche 27 bis 36, 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.

38. Verfahren zum sicheren Zugreifen auf ein Speicherelement (102), mit den Schritten:
– Erzeugen von endgültigen Schreibdaten, die in das Speicherelement zu schreiben sind, aus ursprünglichen Schreibdaten und Fehlerdetektionscode, wenn ein sicherer Modus aktiviert ist, und
– Aktivieren oder Deaktivieren des sicheren Modus unter Verwendung von Speicherzugriffsinformationen von einer Datenverarbeitungseinheit.

39. Verfahren nach Anspruch 38, weiter umfassend:
– Erzeugen der endgültigen Schreibdaten aus den ursprünglichen Schreibdaten ohne den Fehlerdetektionscode, wenn der sichere Modus deaktiviert ist.

40. Verfahren nach Anspruch 38 oder 39, wobei die Speicherzugriffsinformationen einen Befehlsnamen umfassen und das Verfahren weiter umfasst:
– Aktivieren des sicheren Modus, wenn der Befehlsname einem sicheren Schreibbefehl entspricht, und
– Deaktivieren des sicheren Modus, wenn der Befehlsname einem herkömmlichen Schreibbefehl entspricht.

41. Verfahren nach einem der Ansprüche 38 bis 40, wobei die Speicherzugriffsinformationen eine Adresse des Speicherelements umfassen, auf das 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.

42. Verfahren nach einem der Ansprüche 38 bis 41, wobei die Speicherzugriffsinformationen einen Registernamen umfassen und wobei ein zugehöriges Registerflag anzeigt, ob der Registername mit einem Aktivieren oder einem Deaktivieren des sicheren Modus korrespondiert.

43. Verfahren nach einem der Ansprüche 38 bis 42, weiter umfassend:
– Erzeugen des Fehlerdetektionscodes aus den ursprünglichen Schreibdaten und/oder einer korrespondierenden Adresse und
– Erzeugen gemischter Schreibdaten aus den ursprünglichen Schreibdaten und dem Fehlerdetektionscode, wenn der sichere Modus aktiviert ist, und aus den ursprünglich Schreibdaten ohne den Fehlerdetektionscode, wenn der sichere Modus deaktiviert ist,
– wobei die gemischten Schreibdaten die endgültigen Schreibdaten bestimmen.

44. Verfahren nach Anspruch 43 weiter umfassend:
– Erzeugen der endgültigen Schreibdaten, eines Schreibfreigabesignals und einer Speicheradresse des Speicherelements zum Speichern der endgültigen Schreibdaten aus den gemischten Daten und
– Erzeugen der endgültigen Schreibdaten mit einer Speicherdatenbreite, die von mindestens einem Datenbreitesteuersignal abhängt,
– wobei das mindestens eine Datenbreitesteuersignal mit einer Verarbeitungsdatenbreite der Datenverarbeitungseinheit korrespondiert.

45. Verfahren nach einem der Ansprüche 38 bis 44, wobei die Datenverarbeitungseinheit eine CPU ist, die von dem Speicherelement durch einen Bus getrennt ist.

46. Verfahren nach einem der Ansprüche 38 bis 45, wobei die Datenverarbeitungseinheit und das Speicherelement als ein integrierter Schaltkreischip gebildet sind.

47. Verfahren nach einem der Ansprüche 38 bis 45, wobei die Datenverarbeitungseinheit und das Speicherelement als zwei getrennte integrierte Schaltkreischips gebildet sind.

48. Verfahren zum Zugreifen auf ein Speicherelement (102), mit den Schritten:
– Erzeugen von Speicherzugriffsinformationen mit mindestens einem Adressenbit oder einem Registernamen, die einen Zugriffstyp auf das Speicherelement spezifizieren, und
– Zugreifen auf das Speicherelement gemäß dem Zugriffstyp, wie er durch die Speicherzugriffsinformationen spezifiziert ist.

49. Verfahren nach Anspruch 48, wobei der Zugriffstyp einen sicheren Zugriff und einen nicht-sicheren Zugriff umfasst.

50. Verfahren nach Anspruch 48 oder 49, wobei das mindestens eine Adressenbit, das durch die Datenverarbeitungseinheit erzeugt ist, den Zugriffstyp auf das Speicherelement bestimmt.

51. Verfahren nach einem der Ansprüche 48 bis 50, wobei der Registername, der durch die Datenverarbeitungseinheit erzeugt ist, den Zugriffstyp auf das Speicherelement bestimmt.

52. Elektronisches System, umfassend:
– ein Speicherelement (102),
– eine Datenverarbeitungseinheit zum Erzeugen von Speicherzugriffsinformationen, die mindestens ein Adressenbit oder einen Registernamen 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.

53. Elektronisches System nach Anspruch 52, wobei der Zugriffstyp einen sicheren Zugriff und einen nicht-sicheren Zugriff umfasst.

54. Elektronisches System nach Anspruch 52 oder 53, wobei das mindestens eine Adressenbit, das von der Datenverarbeitungseinheit erzeugt ist, den Zugriffstyp auf das Speicherelement bestimmt.

55. Elektronisches System nach einem der Ansprüche 52 bis 54, wobei der Registername, der durch die Datenverarbeitungseinheit erzeugt ist, den Zugriffstyp auf das Speicherelement bestimmt.

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.

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 dadurch, dass sie eine sichere Speicherschnittstelle mit den Merkmalen des Anspruchs 1 oder 17, ein Verfahren zum sicheren Zugreifen auf ein Speicherelement mit den Merkmalen des Anspruchs 27, 38 oder 48 und ein elektronisches System mit den Merkmalen des Anspruchs 52 zur Verfügung stellt.

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_16bitsAccess”-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 0×00 oder 0×FF), 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_16bitsAccess”-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:
write_8 R0 @ 0 × 100
secure_write_16 A8 @ 0 × 10A
read_8 R1 @ 0 × 102
secure_read_24 A8 @ 0 × 10A

Der beispielhafte Befehl ”write_8 R0 @ 0 × 100” 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 ”0 × 100”, um die Adresse des Speicherelements 102 anzuzeigen, auf das für die Schreiboperation zuzugreifen ist.

Der beispielhafte Befehl ”secure_write_16 A8 @ 0 × 10A” 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 ”0 × 10A”, um die Adresse des Speicherelements 102 anzuzeigen, auf das für die Schreiboperation zuzugreifen ist.

Der beispielhafte Befehl ”read_8 R1 @ 0 × 102” 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 ”0 × 102”, um die Adresse des Speicherelements 102 anzuzeigen, auf das für die Leseoperation zuzugreifen ist.

Der beispielhafte Befehl ”secure_read_24 A8 @ 0 × 10A” 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 ”0 × 10A”, 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.