-
HINTERGRUND
-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich auf Speichersysteme und genauer auf Verfahren und Systeme für sichere Speicheroperationen.
-
Beschreibung der verwandten Technologie
-
Chipkarten besitzen Mikrochips mit eingebauten Mikroprozessoren, Kartenbetriebssystemen, Sicherheitsmodulen, Speichern usw. für bestimmte Verarbeitungsaufgaben. Chipkarten führen verschiedene Funktionen wie z.B. Operationen, Verschlüsselung und zweiseitige Kommunikation durch, wobei den Benutzern hohe Sicherheit und Transportfähigkeit bereitgestellt wird. Chipkarten sind weit verbreitet in Anwendungen zur Identifikation, Authentifizierung, Datenspeicherung usw.
-
Chipkarten, Terminals und Anwendungssoftware sind funktionell miteinander verbunden. In dieser Hinsicht wird die Chipkartenindustrie oft bei Finanzdienstleistungen, Fahrkarten, Gesundheitskarten sowie Mobilfunkdiensten benutzt. Es wird erwartet, dass die Verwendung von Chipkarten zunehmen wird mit dem Fortschritt des Internets und des elektronischen Handels angesichts der Mobilität und Sicherheit von Chipkarten, die Chipkarten besonders geeignet machen für den elektronischen Handel und Online-Dienste.
-
Sicherheit ist ein wichtiges Merkmal von Chipkarten. Daher ist die Sicherheits-Technologie für Chipkarten wesentlich für die Entwicklung. Sicherheitsfunktionen können für ein Chipbetriebssystem, ein Netzwerk, eine Anwendung, usw. implementiert werden. Sicherheitsprinzipien für Chipkarten beinhalten Vertraulichkeit, Nachweisbarkeit, Authentifizierung, Integrität und Verifizierung.
-
Darüber hinaus sind Anti-Hacker-Merkmale von Bedeutung. Bekannte physikalische Anti-Hacker-Technologien verwenden einen Lichtdetektor, einen Innenisolations-Entfernungs-Detektor und einen Aktivschild-Entfernungs-Detektor. Diese Technologien arbeiten derart, dass sie das Entfernen eines physikalischen Schildes eines Chips anzeigen, wodurch der Chip funktionsunfähig gemacht wird.
-
Jedoch sind diese Technologien anfällig für Hackerangriffe bei ausreichender Zeit und/oder Technologie. Daher besteht ein Bedürfnis nach verbesserten Sicherheitsmerkmalen.
-
US 2006/0288223 A1 offenbart ein System zur schnellen und einfachen Authentifizierung großer Computerprogramme. Das System arbeitet, indem es zunächst das Computerprogramm mit einer digitalen Signatur inkrementell versiegelt. Konkret wird das Computerprogramm in eine Reihe von Seiten unterteilt und für jede Seite ein Hash-Wert berechnet. Der Satz von Hash-Werten wird zu einem Hash-Wert-Array zusammengefasst, und das Hash-Wert-Array wird dann mit einer digitalen Signatur versiegelt. Das Computerprogramm wird dann zusammen mit dem Hashwert-Array und der digitalen Signatur verteilt. Um das Computerprogramm zu authentifizieren, prüft ein Empfänger zunächst die Authentizität des Hash-Wert-Arrays mit der digitalen Signatur und einem öffentlichen Schlüssel. Sobald das Hash-Wert-Array authentifiziert wurde, kann der Empfänger dann die Authentizität jeder Seite des Computerprogramms überprüfen, indem er einen Hash-Wert einer zu ladenden Seite berechnet und dann mit einem zugehörigen Hash-Wert im authentifizierten Hash-Wert-Array vergleicht. Stimmen die Hash-Werte nicht überein, so kann die Ausführung angehalten werden.
-
US 2008/0046737 A1 offenbart: Ein sicheres Speichersystem verbindet einen verschlüsselten ersten Datenwert, der in einem Speicher gespeichert ist, mit einem Zustand des Speichers, indem es zufällig eine Adresse in dem Speicher auswählt und einen zweiten Datenwert, der an der Adresse gespeichert ist, mit einem Hash-Wert des ersten Datenwertes mischt, um einen Split-Wert zu erzeugen. Die Adresse, der Split-Wert und der erste Datenwert werden verschlüsselt und im Speicher abgelegt. Um eine Manipulation des Speichers zu erkennen, wird die verschlüsselte Adresse entschlüsselt und der entsprechende Wert aus dem Speicher gelesen und zur Wiederherstellung eines Hash-Wertes aus dem entschlüsselten Split-Wert verwendet. Der zurückgewonnene Hash-Wert wird dann mit dem ursprünglichen Hash-Wert verglichen.
-
Zusammenfassung
-
Die vorliegende Erfindung ist definiert in dem unabhängigen Anspruch. Spezifische Ausführungsformen sind definiert in den abhängigen Ansprüchen.
-
Figurenliste
-
- 1 stellt ein Speichersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung dar.
- 2 ist ein Ablaufdiagramm, das ein Verfahren des Speicherns von Anweisungen durch das Speichersystem gemäß der vorliegenden Erfindung darstellt.
- 3 ist ein Ablaufdiagramm, das ein Verfahren des Verarbeitens einer Anweisung durch das Speichersystem gemäß der vorliegenden Erfindung veranschaulicht.
- 4 stellt die Programmschritte des Einfügens einer Vergleichs-PD-Anweisung dar.
- 5 veranschaulicht ein Speichersystem gemäß anderen Ausführungsformen der vorliegenden Erfindung.
- 6 ist ein Ablaufdiagramm, das ein Verfahren des Übertragens von Daten des Speichersystems gemäß der vorliegenden Erfindung darstellt.
- 7 veranschaulicht ein alternatives Speichersystem gemäß der vorliegenden Erfindung.
- 8 ist ein Ablaufdiagramm, das die Schritte des Verarbeitens einer Anweisung des in 7 dargestellten Speichersystems darstellt.
- 9 stellt eine Anweisung des Speichersystems gemäß der vorliegenden Erfindung dar.
- 10 stellt einen Anweisungssatz gemäß der vorliegenden Erfindung dar.
- 11 stellt ein Speichersystem gemäß noch weiterer Ausführungsformen der vorliegenden Erfindung dar.
- 12 stellt Schritte des Speicherns eines Anweisungssatzes des in 11 dargestellten Speichersystems dar.
- 13 ist ein Ablaufdiagramm, das Schritte des Verarbeitens einer Anweisung des Speichersystems gemäß der vorliegenden Erfindung darstellt.
- 14 ist ein Blockdiagramm einer Chipkarte, welche ein Speichersystem gemäß der vorliegenden Erfindung verwendet.
-
DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSBEISPIELEN
-
Ausführungsbeispiele der vorliegenden Erfindung werden nun im Folgenden genauer mit Bezug auf die begleitenden Zeichnungen beschrieben werden.
-
Ein Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung kann die Änderung einer Anweisung und von Daten erfassen, die von Sicherheitsattacken herrühren, um gegenüber einem herkömmlichen Speichersystem eine verbesserte Sicherheitsfunktion bereitzustellen. Ein Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung erfasst, ob eine abgeholte Anweisung geändert wurde während des Verarbeitens einer Anweisung und bestimmt, ob eine Reset-Operation durchgeführt wird, auf der Grundlage eines Erfassungsergebnisses. Somit kann ein Speichersystem vor Laser-gestützten Attacken (z.B. dem Verwenden von hochenergetischem Licht mit kurzer Wellenlänge zum Lesen eines Musters auf einer Chipkarte), Störungstyp-Attacken (z.B. Verletzen von Sicherheitsmaßnahmen durch Unterbrechen der Ausführung einer oder mehrerer Maschinenanweisungen) usw. geschützt werden.
-
Einige Ausführungsformen der vorliegenden Erfindung stellen ein Programmdaten-Vergleichsverfahren bereit. Wenn Programmdaten geändert werden oder eine Leistungsversorgungsstörung aufgrund eines Laserangriffs oder eines Störungsangriffes auftritt, werden die geänderten Programmdaten mit dem Programmdaten-Vergleichsverfahren erfasst. Die Programmdaten sind ein Anweisungswert.
-
1 stellt ein Speichersystem 100 gemäß einigen Ausführungsformen der vorliegenden Erfindung dar. Das Speichersystem 100 weist eine Zentraleinheit (CPU) 120, eine Schnittstelle 140 sowie eine Speicher-/Peripherieschaltung 160 auf. Das Speichersystem 100 ist derart ausgebildet, dass es eine Vergleichsanweisung aufweist, die verwendet wird zum Vergleichen eines Wertes einer Anweisung mit einem Wert des Fehlerprüfcodes (EDC) der Anweisung zum Bestimmen, ob der kompilierte Zustand einer Anweisung geändert wurde. Das heißt, das Speichersystem 100 bestimmt, ob eine Anweisung von Programmdaten geändert wurde seit die Programmdaten einschließlich der Anweisung kompiliert wurden und auf der Chipkarte gespeichert wurden.
-
Die CPU 120 steuert Operationen des Speichersystems 100. Die CPU 120 ist konfiguriert zum Verarbeiten einer Vergleichsanweisung. Die CPU 120 vergleicht einen Wert einer Anweisung mit dem Anweisungs-EDC-Wert. Diese Vergleichsoperation ist eine Prozedur des Verifizierens, ob ein EDC-Wert ein EDC-Wert einer Anweisung ist.
-
Wenn z.B. ein EDC-Wert definiert ist als ein invertierter Wert der Anweisung, vergleicht die CPU 120 den invertierten Wert der Anweisung mit einem EDC-Wert. Wenn der invertierte Wert der Anweisung gleich dem EDC-Wert ist, wird bestimmt, dass kein Hackerangriffsversuch auf die Anweisung gemacht wurde. Wenn andererseits der invertierte Wert der Anweisung nicht gleich dem EDC-Wert ist, wird bestimmt, dass ein Hackerangriffsversuch auf die Anweisung gemacht wurde. Wenn der Hackerangriffsversuch erfasst wird, kann die CPU 120 eine Verteidigungsmaßnahme durchführen, wie z.B. das Zurücksetzen oder Ausschalten aller Schaltungen des Speichersystems 100.
-
Die Schnittstelle 140 verbindet die CPU 120 und die Speicher-/Peripherieschaltung 160. Die Schnittstelle 140 überträgt Programmdaten PD an die CPU 120 durch einen 16-Bit-Bus während einer Anweisungsabrufoperation. Die Programmdaten PD sind eine Anweisung, die von einem Programmdatenbereich 162 der Speicher-/Peripherieschaltung 160 abgerufen wird. Die Schnittstelle 140 empfängt Schreibdaten WD von der CPU 120 durch den 16-Bit-Bus während einer Schreiboperation des Benutzerdatenbereichs 164 und überträgt diese Daten RD an die CPU 120 durch den 16-Bit-Bus während einer Leseoperation des Benutzerdatenbereichs 164.
-
Die Speicher-/Peripherieschaltung 160 ist ein Bereich zum Speichern von Daten und enthält den Programmdatenbereich 162 und den Benutzerdatenbereich 164. Der Programmdatenbereich 162 ist ein Bereich zum Speichern von Anweisungen für das Treiben des Speichersystems 100. Die Speicher-/Peripherieschaltung 160 überträgt die Programmdaten PD an die Schnittstelle 140 durch den 16-Bit-Bus während einer Anweisungsabrufoperation. Speicher-/Peripherieschaltung 160 empfängt die Schreibdaten WD durch den 16-Bit-Bus während einer Schreiboperation des Benutzerdatenbereichs 164 und überträgt die Lesedaten RD an die Schnittstelle 140 durch den 16-Bit-Bus während einer Leseoperation des Benutzerdatenbereichs 164.
-
Die Speicher-/Peripherieschaltung 160 enthält den Programmdatenbereich 162 und den Benutzerdatenbereich 164 zum Speichern von Daten, die erzeugt wurden während des Treibens der CPU 120. Die Speicher-/Peripherieschaltung 160 gemäß einer Ausführungsform der vorliegenden Erfindung ist eine Speichervorrichtung oder eine Schaltung, die Daten speichern kann. Die Speichervorrichtung kann eine flüchtige Speichervorrichtung (z.B. ein DRAM, ein SRAM usw.) oder eine nicht-flüchtige Speichervorrichtung (z.B. ein NAND-Flashspeicher, ein NOR-Flashspeicher, ein PRAM, ein FRAM, ein MRAM usw.) sein.
-
Der Programmdatenbereich 162 beinhaltet einen Sicherheitsanweisungssatz 163 mit einer Anweisung, einem EDC-Wert der Anweisung und einer Vergleichs-PD-Anweisung. Der Sicherheitsanweisungssatz 163 wird automatisch erzeugt, wenn programmierte Anweisungen kompiliert werden. Das heißt, eine Vergleichs-PD-Anweisung wird automatisch während einer Kompilierungsoperation eingefügt. Ein Benutzer kann eine solche Vergleichs-PD-Anweisung nicht verwenden.
-
Die Auswahl einer Kompilierungsmöglichkeit während der Systemherstellung erlaubt die Einstellung der automatischen Einfügung der Vergleichs-PD-Anweisung. Zum Beispiel kann für Anwendungen, die eine erhöhte Sicherheit erfordern, eine Kompilierungsvariante so ausgewählt werden, dass die Vergleichs-PD-Anweisung bei allen Anweisungen eingefügt wird. Andererseits kann bei einem geringeren Sicherheitsbedürfnis eine Kompilierungsmöglichkeit so ausgewählt werden, dass die Vergleichs-PD-Anweisung nur seltener bei Anweisungen eingefügt wird.
-
Während der Code-Kompilierungsoperation wird ein EDC-Wert einer Anweisung vor einer Vergleichs-PD-Anweisung automatisch eingefügt nach dem Einfügen der Vergleichs-PD-Anweisung. Ein invertierter Wert einer Anweisung kann verwendet werden als ein Fehlerprüfcodewert. Wie hier erwähnt, wird ein Sicherheitsanweisungssatz gebildet während der Codekompilierungsoperation. Der Sicherheitsanweisungssatz beinhaltet eine Anweisung, eine Vergleichs-PD-Anweisung und einen EDC-Codewert, z.B. einen invertierten Wert der Anweisung.
-
Während der Code-Kompilierungsoperation werden die Auswahl eines Ortes der Vergleichs-PD-Anweisung und eines Prozentsatzes der einzufügenden Vergleichs-PD-Anweisung gemacht. Dementsprechend fügt ein Kompilierer automatisch die Vergleichs-PD-Anweisung während der Code-Kompilierungs-Operation ein. Der Kompilierer bestimmt die Gesamtcodegröße, um die Vergleichs-PD-Anweisung gleichmäßig einzufügen.
-
2 ist ein Flussdiagramm, das ein Verfahren des Speicherns von Anweisungen durch das Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Ein Anweisungsspeicherverfahren wird mit Bezug auf die 1 und 2 weiter unten beschrieben werden.
-
Ein Benutzer programmiert in dem Speichersystem 100 auszuführende Anweisungen (S110). Im Folgenden werden programmierte Anweisungen als „Anweisungsprogramm“ bezeichnet. Ein Kompilierer fügt automatisch während des Kompilierens des Anweisungsprogramms eine Vergleichs-PD-Anweisung, die einer Anweisung entspricht, und einen EDC-Wert der Anweisung ein. Somit, wenn das Kompilieren des Anweisungsprogrammes abgeschlossen ist, werden die kompilierten Anweisungen in dem Programmdatenbereich 162 der Speicher-/Peripherieschaltung 160 gespeichert. In dem Programmdatenbereich 162 gemäß einer Ausführungsform der vorliegenden Erfindung gibt es eine Mehrzahl von Sicherheitsanweisungssätzen, die in der Lage sind, Datenänderungen einer Anweisung zu erfassen.
-
3 ist ein Ablaufdiagramm, das ein Verfahren des Verarbeitens einer Anweisung durch das Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Ein Anweisungsverarbeitungsverfahren wird nun beschrieben werden, wie es weiter unten mit Bezug auf die 1 und 3 dargelegt ist. Nach dem Einschalten überträgt die Zentraleinheit (CPU) 120 eine Anfangsadresse für das Abrufen von Anweisungen an die Speicher-/Peripherieschaltung 160 (S210). Die Speicher-/Peripherieschaltung 160 liest eine Anweisung, die der Anfangsadresse entspricht. Die ausgelesene Anweisung wird an die CPU 120 über die Schnittstelle 140 übertragen. Somit wird eine Anweisungsabrufoperation gestartet (S220). Die CPU 120 dekodiert eine abgerufene Anweisung und bestimmt, ob die dekodierte Anweisung eine Vergleichs-PD-Anweisung ist (S230).
-
Wenn die gegenwärtig abgerufene Anweisung nicht die Vergleichs-PD-Anweisung ist, wird sie in einem Register gespeichert (S240). Die CPU 120 führt eine Funktion gemäß der abgerufenen Anweisung durch (S250). Der Ablauf fährt fort mit dem Abruf der nächsten Anweisung (S230).
-
Wenn die gegenwärtig abgerufene Anweisung, die in einem Register der CPU gespeichert ist, eine Vergleichs-PD-Anweisung ist, ruft die CPU 120 die nächste Anweisung von dem Programmdatenbereich 162 ab (S260). Die abgerufene nächste Anweisung ist ein Fehlerprüfcode(EDC)-Wert der in dem Register gespeicherten Anweisung.
-
Die CPU 120 bestimmt, ob ein Wert der abgerufenen Anweisung gleich einem invertierten Wert der gespeicherten Anweisung ist (S270). Wenn der Wert der nächsten Anweisung gleich dem invertierten Wert der gespeicherten Anweisung ist, wird bestimmt, dass Daten der Anweisung nicht geändert wurden. Der Ablauf fährt mit dem Abruf der nächsten Anweisung fort (S220).
-
Wenn der Wert der abgerufenen Anweisung nicht gleich dem invertierten Wert der gespeicherten Anweisung ist, wird bestimmt, dass Daten der Anweisung geändert wurden. Das Speichersystem 100 führt eine Rücksetzoperation oder einen Fast-Interrupt-Request (FIQ) gemäß einer Anti-Hackerangriffs-Routine durch (S280).
-
4 stellt ein beispielhaftes Programm zum Einfügen einer Vergleichs-PD-Anweisung dar. Bezugnehmend auf 4 wird die Vergleichs-PD-Anweisung nach einer ersten Anweisung Instruction1, einer fünften Anweisung Instruction5, einer siebten Anweisung Instruction7, einer dreizehnten Anweisung Instruction13, einer zweiten Interrupt-Anweisung Instruction_interrupt2 und einer 31. Anweisung Instruction31. Ein EDC-Wert der jeweiligen Anweisungen wird eingefügt nach der eingefügten Vergleichs-PD-Anweisung.
-
Das Speichersystem 100 gemäß einer Ausführungsform der vorliegenden Erfindung ist derart konfiguriert, dass es einen normalen Betrieb durchführt außer in dem Fall einer Fehlfunktion, die auf einen Hackerangriff zurückzuführen ist während des Einfügens einer Vergleichs-PD-Anweisung. Eine Zentraleinheit (CPU) 120 ist mit Hardware zum Ausführen einer Vergleichs-PD-Anweisung ausgebildet. Ein Kompilierer ist derart programmiert, dass er eine Vergleichs-PD-Anweisung einfügt und einen Fehlerprüfcode(EDC)-Wert einer Anweisung nach dem Einfügen der Vergleichs-PD-Anweisung einfügt.
-
Das in 1 dargestellte Speichersystem 100 ist auf einem 16-Bit-Datenbus basierend ausgebildet. Jedoch sind die Ausführungsformen der vorliegenden Erfindung nicht darauf beschränkt. Das heißt, das Speichersystem 100 kann basierend auf einem 32-Bit-Datenbus oder einem höheren Bit-Datenbus ausgebildet sein.
-
Das Speichersystem 100 gemäß einer Ausführungsform der vorliegenden Erfindung enthält eine Vergleichs-PD-Anweisung zum Erfassen, ob Daten einer Anweisung geändert wurden. So wird die Vergleichs-PD-Anweisung derart verarbeitet, dass bestimmt wird, ob Daten der Anweisung geändert wurden.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung ist ein Schutzverfahren implementiert. Wenn eine Änderung eines Datenwertes oder eine Leistungsversorgungsstörung aufgrund eines Laserangriffs oder eines Störungsangriffes auftritt, kann der Laserangriff oder der Störungsangriff durch das Schutzverfahren erkannt werden.
-
5 veranschaulicht ein Speichersystem gemäß anderen Ausführungsformen der vorliegenden Erfindung. Mit Bezug auf 5 enthält ein Speichersystem 200 eine Zentraleinheit (CPU) 220, eine Schnittstelle 240 und eine Speicher-/Peripherieschaltung 260. Das Speichersystem 200 ist derart ausgebildet, dass es Fehlerprüfcodedaten WEDC und REDC überträgt unter Verwendung eines nicht benützten Busses während einer Halbwort-Zugriffsoperation oder einer Byte-Zugriffsoperation. Die CPU 220 und die Speicher-/Peripherieschaltung 260 sind konfiguriert zum Berechnen eines EDC-Wertes von Zugriffsdaten gemäß einem EDC-Algorithmus während der Halbwort-Zugriffsoperation oder der Byte-Zugriffsoperation.
-
Das Speichersystem 200 enthält einen 16-Bit-Datenbus. Das Speichersystem 200 führt einen 16-Bit-Zugriff, z.B. eine Wortzugriffsoperation durch. In bestimmten Fällen kann das Speichersystem 200 eine Halbwort-Zugriffsoperation oder eine Byte-Zugriffsoperation durchführen. Das Speichersystem 200 überträgt EDC-Daten unter Verwendung eines nicht benutzten 8-Bit-Buses während einer Halbwort-Zugriffsoperation oder einer Byte-Zugriffsoperation.
-
Ein Verfahren des Verhinderns von Hackerangriffen während einer Byte-Leseoperation wird nun im Detail beschrieben werden. Während der Byte-Leseoperation werden Lesedaten RD von der Speicher-/Peripherieschaltung 260 durch einen 8-Bit-Bus übertragen, während ein EDC-Wert der Lesedaten RD (im Folgenden als „REDC“ bezeichnet) durch einen nicht benutzten 8-Bit-Bus übertragen wird. Der Wert REDC ist ein EDC-Wert der Lesedaten RD, die von der Speicher-/Peripherieschaltung 260 übertragen wurden.
-
Die CPU 220 berechnet einen EDC-Wert, der von der Speicher-/Peripherieschaltung 260 übertragenen Lesedaten RD als Antwort auf ein Wort/Byte-Signal WBS. Das Wort/Byte-Signal WBS spezifiziert, ob die Operation eine WortZugriffsoperation oder eine Byte-Zugriffsoperation ist. Die CPU 220 bestimmt, ob der berechnete EDC-Wert (im Folgenden als „RDEDC“ bezeichnet) gleich dem übertragenen EDC-Wert REDC ist, um ein Angriffserfassungssignal ADS zu erzeugen.
-
Wenn der berechnete EDC-Wert RDEDC gleich dem übertragenen EDC-Wert REDC ist, wird bestimmt, dass es keinen Hackerangriff auf die Daten gibt. Wenn der berechnete EDC-Wert RDEDC nicht gleich dem übertragenen EDC-Wert REDC ist, wird bestimmt, dass es einen Hackerangriff auf die Daten gibt. Wenn bestimmt wird, dass es einen Hackerangriff gibt, wird das Speichersystem 200 zurückgesetzt oder geht in einen bestimmten Modus, so dass der Hackerangriff nicht fortschreitet.
-
Ein Verfahren des Verhinderns eines Hackerangriffs während einer Byte-Schreiboperation wird nun im Detail beschrieben werden. Während der Byte-Schreiboperation überträgt die CPU 220 Schreibdaten WD durch einen 8-Bit-Bus während ein EDC-Wert der Schreibdaten WD (im Folgenden auch als „WEDC“ bezeichnet) durch einen nicht benutzten 8-Bit-Bus übertragen wird. Der Wert WEDC ist ein EDC-Wert, der von der CPU 220 übertragenen Schreibdaten WD.
-
Die Speicher-/Peripherieschaltung 260 berechnet einen EDC-Wert der Schreibdaten WD als Antwort auf das Wort/Byte-Signal WBS. Die Speicher-/Peripherieschaltung 260 bestimmt, ob der berechnete EDC-Wert WDEDC gleich dem übertragenen EDC-Wert WEDC ist, um ein Angriffserfassungssignal ADS zu erzeugen.
-
Wenn der berechnete EDC-Wert WDEDC gleich dem übertragenen EDC-Wert WEDC ist, wird bestimmt, dass es keinen Hackerangriff auf die Daten gibt. Wenn der berechnete EDC-Wert WDEDC nicht gleich dem übertragenen EDC-Wert WEDC ist, wird bestimmt, dass es einen Hackerangriff auf die Daten gibt. Wenn bestimmt wird, dass es einen Hackerangriff gibt, wird das Speichersystem 200 zurückgesetzt oder geht in einen bestimmten Modus, so dass der Hackerangriff nicht fortschreitet.
-
6 ist ein Ablaufdiagramm, das ein Verfahren des Übertragens von Daten des Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Bezug nehmend auf die 5 und 6 wird nun ein Datenübertragungsverfahren im Detail beschrieben werden.
-
Ein Sender, die CPU 220 oder die Speicher-/Peripherieschaltung 260 überträgt Daten an einen Bus, der während dem Byte-Zugriff verwendet wird, und überträgt einen EDC-Wert der zu übertragenden Daten an einen nicht verwendeten Bus an einen Empfänger, die Speicher-/Peripherieschaltung 260 oder die CPU 220 (S310). Der Sender berechnet einen EDC-Wert relativ zu Daten während des Byte-Zugriffs. Der Empfänger berechnet den EDC-Wert von den übertragenen Daten (S320).
-
Der Empfänger bestimmt, ob der berechnete EDC-Wert gleich dem übertragenen EDC-Wert ist (S330). Wenn der berechnete EDC-Wert gleich dem übertragenen EDC-Wert ist, bestimmt der Empfänger, dass es keinen Hackerangriffsversuch auf die Daten gibt und die Datenübertragung ist abgeschlossen (S340). Wenn andererseits der berechnete EDC-Wert nicht gleich dem übertragenen EDC-Wert ist, bestimmt der Empfänger, dass es einen Hackerangriffsversuch auf die Daten gibt. An diesem Punkt wird das Speichersystem 200 zurückgesetzt oder geht in einen bestimmten Modus (S350).
-
Das in 5 dargestellte Speichersystem 200 ist auf der Grundlage eines 16-Bit-Datenbuses ausgebildet. Jedoch sind die Ausführungsformen der vorliegenden Erfindung nicht darauf beschränkt. Das heißt, das Speichersystem 200 kann auf der Grundlage eines 32-Bit- oder höheren Bit-Datenbusses ausgebildet sein.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung kann die Anzahl an Verarbeitungsbits selektiv sein. Zum Beispiel kann das Speichersystem mit 16 Bit oder 32 Bit verarbeitet werden. Im Falle eines ARM(Advanced RISC Machine)-Prozessors arbeitet ein ARM-Modus mit 16 Bit und ein Thumb-Modus arbeitet mit 32 Bit. In dem Fall eines solchen Speichersystems wird die Bitanzahl einer Anweisung selektiv gesteuert. Das Speichersystem kann derart konfiguriert sein, dass es einen EDC-Wert einer abzurufenden Anweisung zu einem unbenutzten Bus während des Abrufens der Anweisung überträgt.
-
7 veranschaulicht ein alternatives Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung. Bezug nehmend auf 7 kann ein Speichersystem 300 selektiv mit 16 Bit oder 32 Bit arbeiten. Das heißt, ein Verarbeitungsmodus des Speichersystems 300 weist einen 32-Bit-Modus und einen 16-Bit-Modus auf. In dem 16-Bit-Modus wird ein zu einer Anweisung gehörender EDC-Wert während des Abrufens einer 16-Bit-Anweisung durch einen nicht benutzten 16-Bit-Bus übertragen.
-
Ein Verfahren des Verhinderns eines Daten-Hackerangriffs während einer Anweisungsabrufoperation wird nun im Detail beschrieben werden. Während der Anweisungsabrufoperation wird eine Anweisung PD von einer Speicher-/Peripherieschaltung 360 durch einen 16-Bit-Bus übertragen, während ein EDC-Wert der Anweisung PD (im Folgenden als „PEDC“ bezeichnet) durch einen nicht benutzten 16-Bit-Bus übertragen wird. Der Wert PEDC ist ein EDC-Wert der Anweisung PD, der von der Speicher-/Peripherieschaltung 360 berechnet wird. Damit ist die Anweisungsabrufoperation durchgeführt.
-
Eine Zentraleinheit (CPU) 320 berechnet einen EDC-Wert der Anweisung PD, die von der Speicher-/Peripherieschaltung 360 abgerufen wird als Antwort auf ein Verarbeitungsmodustypsignal ATS. Das Signal ATS spezifiziert, ob das Speichersystem 300 in einem 32-Bit-Verarbeitungsmodus oder in einem 16-Bit-Verarbeitungsmodus ist. Die CPU 320 bestimmt, ob der berechnete EDC-Wert PDEDC gleich dem übertragenen EDC-Wert PEDC ist, um ein Angriffs-Erfassungssignal ADS zu erzeugen.
-
Wenn der berechnete EDC-Wert PDEDC gleich dem übertragenen EDC-Wert PEDC ist, wird bestimmt, dass es keinen Hackerangriff auf eine Anweisung gibt. Wenn andererseits der berechnete EDC-Wert PDEDC nicht gleich den übertragenen EDC-Wert ist, wird bestimmt, dass es einen Hackerangriff auf eine Anweisung gibt. Wenn bestimmt wird, dass es einen Hackerangriff gibt, wird das Speichersystem 300 zurückgesetzt oder geht in einen bestimmten Modus, so dass der Hackerangriff nicht fortgeführt wird.
-
8 ist ein Ablaufdiagramm, das die Schritte des Verarbeitens einer Anweisung des in 7 dargestellten Speichersystems 300 zeigt. Ein Anweisungsverarbeitungsverfahren wird nun im Detail mit Bezug auf die 7 und 8 beschrieben werden.
-
Wenn das Speichersystem 300 in einem 16-Bit-Verarbeitungsmodus hochgefahren wird, überträgt die CPU 320 eine Programmadresse über eine Schnittstelle 340 an die Speicher-/Peripherieschaltung 360 zum Abrufen einer Anweisung (S410). Die Speicher-/Peripherieschaltung 360 liest eine Anweisung, die der Programmadresse entspricht und überträgt die gelesene Anweisung an die CPU 320 durch einen 16-Bit-Bus. Die Speicher-/Peripherieschaltung 360 überträgt einen EDC-Wert der gelesenen Anweisung an die anderen 16-Bit-Busse. Damit ist eine Abrufoperation für eine Anweisung abgeschlossen (S420).
-
Die CPU 320 berechnet einen EDC-Wert der übertragenen Anweisung (S430). Die CPU 320 bestimmt, ob ein berechneter EDC-Wert gleich einem übertragenen EDC-Wert (S440) ist. Wenn der berechnete EDC-Wert gleich dem übertragenen EDC-Wert ist, wird bestimmt, dass es keinen Hackerangriff auf eine Anweisung gibt, und die Anweisung wird verarbeitet (S450). Danach geht der Ablauf zu S420 zum Abrufen der nächsten Anweisung. Wenn andererseits der berechnete EDC-Wert nicht gleich dem übertragenen EDC-Wert ist, wird bestimmt, dass es einen Hackerangriff auf eine Anweisung gibt. Somit wird das Speichersystem zurückgesetzt oder geht in einen bestimmten Modus (S460).
-
Die in 5 bis 8 dargestellten Speichersysteme verwenden einen nicht benutzten Bus als einen Übertragungspfad eines Fehlerprüfcodes (EDC). Als Folge davon besitzt das Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung eine verbesserte Sicherheitsmaßnahme gegen Hackerangriffsversuche.
-
Andere Ausführungsformen der vorliegenden Erfindung stellen ein EDC-Anweisungsschutzverfahren bereit. Wenn Datenänderung oder eine Anschaltstörung aufgrund eines Laserangriffs oder eines Störungsangriffs auftritt, wird der Angriff mittels des EDC-Anweisungsschutzverfahrens erkannt. Somit wird ein Speichersystem gemäß anderen Ausführungsformen der vorliegenden Erfindung derart implementiert, dass ein EDC-Wert für alle Anweisungen eingefügt wird.
-
9 veranschaulicht eine Anweisung des Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung. Mit Bezug auf 9 ist eine Größe eines Anweisungssatzes gleich N Bit. Der Anweisungssatz enthält einen M-Bit-EDC-Wert (wobei M gleich 1 oder mehr ist). Daher ist eine Größe einer Anweisung gleich N minus M (N-M) Bit.
-
Eine Zentraleinheit (CPU) besitzt einen Anweisungssatz der Größe N Bit gemäß einer verwendeten Bit-Größe der Anweisung die in 10 dargestellt ist. Da die wirklichen Anweisungen auf das N-M-Bit abgebildet sind, muss die Anzahl der Anweisungen abnehmen. Wenn Sicherheit oder ein Speichersystem wichtig ist, kann die Anzahl von Anweisungen niedriger Frequenz abnehmen.
-
11 stellt ein Speichersystem gemäß noch weiteren Ausführungsformen der vorliegenden Erfindung dar. Mit Bezug auf 11 enthält ein Speichersystem 400 eine Zentraleinheit 420, eine Schnittstelle 440 und eine Speicher-/Peripherieschaltung 460. Das Speichersystem 400 arbeitet mit einer N-Bit-Architektur. Ein in einem Programmdatenbereich 462 der Speicher-/Peripherieschaltung 360 gespeicherter Anweisungssatz besteht aus einer echten (N-M)-Bit-Anweisung und einem M-Bit-EDC-Wert. Die CPU 420 berechnet einen EDC-Wert einer echten (N-M)-Bit-Anweisung während einer Anweisungsabrufoperation zum Bestimmen, ob der berechnete EDC-Wert gleich einem M-Bit-EDC-Wert einer übertragenen Anweisung ist. Als Ergebnis der Bestimmung erkennt das Speichersystem 400, ob es einen Angriffsversuch auf eine Anweisung gibt.
-
Die CPU 420 ist konfiguriert zum Verarbeiten einer Anweisung mit einem EDC-Wert. Die CPU 420 ist hinsichtlich ihrer Hardware konfiguriert zum Dekodieren einer abgerufenen Anweisung, zum Berechnen eines EDC-Wertes einer übertragenen echten Anweisung und zum Vergleichen des berechneten EDC-Wertes mit dem übertragenen EDC-Wert.
-
12 veranschaulicht Schritte des Speicherns eines Anweisungssatzes des in 11 dargestellten Speichersystems 400. Mit Bezug auf 12 programmiert ein Benutzer eine echte (N-M)-Bit-Anweisung (S510). Ein Kompilierer hängt einen M-Bit-EDC-Wert, der der echten (N-M)-Bit-Anweisung entspricht, an eine echte Anweisung an, zum Erzeugen einer N-Bit-Anweisung während einer Kompilierungsoperation (S520). Somit wird ein Anweisungssatz erzeugt. Der Anweisungssatz 463 wird gespeichert in einem Programmdatenbereich 462 der Speicher-/Peripherieschaltung 460 (S530). Als Folge ist die Speicherung des Anweisungssatzes abgeschlossen.
-
13 ist ein Ablaufdiagramm, das die Schritte des Verarbeitens einer Anweisung des Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Eine Anweisungsverarbeitungsprozedur wird nun weiter unten mit Bezug auf die 11 und 13 beschrieben werden.
-
Wenn das Speichersystem 400 eingeschaltet wird, überträgt die CPU 420 eine Programmadresse an die Speicher-/Peripherieschaltung 460 zum Abrufen einer Anweisung (S610). Die Speicher-/Peripherieschaltung 460 liest eine Anweisung, die der Programmadresse entspricht, und überträgt die Anweisung an die CPU 420 durch einen N-Bit-Bus. Die übertragene Anweisung umfasst eine echte (N-M)-Bit-Anweisung und einen M-Bit-EDC-Wert. Damit ist das Abrufen einer Anweisung abgeschlossen (S620).
-
Die CPU 420 berechnet einen EDC-Wert der echten (N-M)-Bit-Anweisung der abgerufenen Anweisung (S630). Die CPU 420 bestimmt, ob der berechnete EDC-Wert gleich dem M-Bit-EDC-Wert ist (S640). Wenn der berechnete EDC-Wert gleich dem M-Bit-EDC-Wert ist, wird bestimmt, dass es keinen Angriffsversuch auf eine Anweisung gibt und die Anweisung wird verarbeitet (S650). Danach fährt der Ablauf mit dem Abruf der nächsten Anweisung fort (S620). Wenn der berechnete EDC-Wert nicht gleich dem M-Bit-EDC-Wert ist, wird bestimmt, dass es einen Angriffsversuch auf die Anweisung gibt. Dementsprechend wird das Speichersystem 400 zurückgesetzt oder geht in einen bestimmten Modus (S660) über.
-
Das oben beschriebene Speichersystem 400 muss keinen zusätzlichen Speicher zum Speicher eines Fehlerprüfcodes (EDC) verwenden. Daher kann das Speichersystem 400 eine Anweisungsabrufprozedur von der Speicher-/Peripherieschaltung 460 zu der CPU 420 schützen, ohne Anstieg der Größe eines Code-Speichers.
-
14 ist ein Blockdiagramm einer Chipkarte, die ein Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung verwendet. Mit Bezug auf 14 besitzt eine Chipkarte 10 einen Systembus 11, eine Zentraleinheit (CPU) 12, einen Festwertspeicher (ROM) 13, der ein Betriebssystem speichert, einen Direktzugriffsspeicher (RAM) 14, der während des Datenverarbeitens erzeugte Daten temporär speichert, eine Speicherschnittstelle 15, die eine für einen NAND-Flashspeicher 16 geeignete Schnittstelle darstellt, eine Sicherheitslogik 17, einen Angriffsdetektor 18, der einen Hackerangriff erkennt, und eine Rücksetzlogik 19, die eine Rücksetzoperation durchführt, wenn der Hackerangriff erkannt wird.
-
Die CPU ist mit einem Aufbau, wie er in den 1, 5, 7 und 11 dargestellt ist, organisiert. Genauso ist die Speicherschnittstelle 15 mit einem wie in den 1, 5, 7 und 11 dargestellten Aufbau organisiert, und ist der NAND-Flashspeicher 16 mit einem wie in den 1, 5, 7 und 11 dargestellten Aufbau organisiert.
-
Die Rücksetzlogik 19 führt eine Rücksetzoperation als Antwort auf ein Angriffserfassungssignal durch, das von den CPUs oder den Speicher-/Peripherieschaltungen erzeugt wird, die in den 1, 5, 7 und 11 dargestellt sind. Alternativ führt die Rücksetzlogik 19 eine Rücksetzoperation als Antwort auf ein Angriffserfassungssignal durch, das von dem Angriffsdetektor 18 erfasst wird.
-
Der Angriffsdetektor 18 kann einer von verschiedenen Angriffsdetektoren, wie z.B. ein Lichtdetektor, ein Innenisolationsentfernungsdetektor und ein Aktivschildentfernungsdetektor, sein. Der Angriffsdetektor 18 kann derart konfiguriert sein, dass er zu dem NAND-Flashspeicher 16 abgestrahltes Licht erfasst.
-
Das oben beschriebene Speichersystem enthält eine Schnittstelle zwischen einer CPU und einer Speicher-/Peripherieschaltung. Jedoch sind die Ausführungsformen der vorliegenden Erfindung nicht darauf beschränkt. Das heißt, ein Speichersystem gemäß einigen Ausführungsformen der vorliegenden Erfindung kann derart ausgebildet sein, dass eine Schnittstelle zwischen einer CPU und einer Speicher-/Peripherieschaltung nicht benötigt wird.
-
Das Speichersystem gemäß Ausführungsformen der vorliegenden Erfindung kann angewendet werden auf Karten, die Sicherheit erfordern, wie z.B. eine Multi-Media-Karte (MMC) oder eine sichere digitale Speicherkarte (SD).