-
Die
vorliegende Erfindung bezieht sich auf eine Vorrichtung zum Überprüfen einer
Fehlererkennungsfunktionalität
einer Speicherschaltung, insbesondere im Bereich von Chipkarten
oder Smartcards, die beispielsweise in sensiblen Bereichen eingesetzt werden
und daher Angriffen ausgesetzt sein können.
-
In
sensiblen, die Sicherheit betreffenden Bereichen werden vielfältige technische
Sicherungsmaßnahmen
zum Einsatz gebracht. Diese Sicherungsmaßnahmen ermöglichen es beispielsweise, Anwendern
auf bestimmte Computersystemen zuzugreifen, berechtigten Personen
Zutritt zu bestimmten, für
die Öffentlichkeit
gesperrten Bereichen zu gewähren,
oder auch auf gesicherte Informationen, wie etwa private Schlüssel im
Rahmen eines Public-Key-Kryptographie-Verfahrens, Bankdaten oder Kreditkarteninformationen
zuzugreifen. Der berechtigte Nutzer, also beispielsweise der berechtigte
Anwender eines Computersystems oder auch ein Zutrittsberechtigter
zu einem nichtöffentlichen
Bereich, erhält
häufig
eine Chipkarte mit einem Security-Controller, die den Anwender einem
Sicherheitssystem gegenüber
als autorisiert ausweist. Bei einem Security-Controller handelt
es sich um einen Mikrocontroller, der beispielsweise auf einer Chipkarte
zur Überwachung
von Sicherheitsfunktionen eingesetzt werden kann.
-
Solche
Sicherheitssysteme und Sicherheitsschaltungen, die beispielsweise
Chipkarten umfassen, werden schon auf Grund des Wertes der durch sie
geschützten
Güter,
Informationen und Privilegien Angriffen ausgesetzt, welche durch
verschiedene Gegenmaßnahmen
seitens der Sicherheitsschaltungen abgewehrt werden sollen. Die
Funktionalität
bzw. die Funktionstüchtigkeit
der Gegenmaßnahmen
wurden bisher durch sogenannte UmSLC-Module (UmSLC = user mode sensor life
control = Überwachung der
Sensorfunktionsfähigkeit
im Betriebsmodus) geprüft.
Neben entsprechenden Versorgungsschaltungen und Auswertungsschaltungen
waren die zentralen Komponenten der Gegenmaßnahmen bislang Sensoren, die
Angriffe erkennen sollten. Zu den Sensoren zählen so beispielsweise Spannungssensoren, Frequenzsensoren,
Temperatursensoren und Lichtsensoren. Um die Funktionalität der Gegenmaßnahmen,
also die Funktionalität
der verschiedenen Sensoren, ihrer Versorgungsschaltungen und der
zugehörigen
Auswerteschaltungen zu überprüfen, wurden die
Sensoren bzw. ihre zugehörigen
Komponenten durch das UmSLC-Modul
so verstellt bzw. stimuliert, dass ein Alarm ausgelöst wurde.
Der ausgelöste Alarm
wurde jedoch nicht als Angriff gewertet, mit anderen Worten wurde
dieser Alarm nicht wirksam geschaltet, sondern es wurde nur geprüft, ob er überhaupt
erzeugt wurde. Falls nun im Rahmen eines solchen Tests der Alarm
ausblieb, so wurde von dem UmSLC-Modul auf einen manipulativen Angriff
geschlossen, der den Sensor außer
Betrieb gesetzt hat. In einem solchen Fall kann das UmSLC-Modul
seinerseits ein Alarmsignal erzeugen und ausgeben, das dazu führen kann,
dass beispielsweise der Security-Controller einer Chipkarte bzw.
die CPU (CPU = central processing unit = Zentralprozessor) des Security-Controllers
angehalten wird, sensible Informationen vernichtet bzw. löscht oder
ein Reset (Zurücksetzen)
des Security-Controllers hervorruft.
-
Neue
Gegenmaßnahmen
fußen
nun nicht mehr bzw. nicht mehr ausschließlich auf analogen Sensoren,
die Veränderungen
der Umweltbedingungen bzw. der Betriebsbedingungen der betreffenden Sicherheitskomponenten
(beispielsweise eines Security-Controllers)
erkennen, sondern weisen auch logische Maßnahmen auf, die Veränderungen
von Informationen, die beispielsweise in dem Security-Controller
abgespeichert sind, erkennen sollen. Herkömmliche UmSLC-Module erfüllen daher
nicht mehr diese Anforderungen.
-
2 zeigt
ein Blockschaltbild einer möglichen
Lösung
einer Speicherschaltung 800 mit einer Fehlererkennungsfunktionali tät bzw. EDC-Funktionalität (EDC =
error detection code = fehlererkennender Code) bezeichnet wird.
Die Speicherschaltung 800 ist mit einem Bus 810 gekoppelt, über den
die Speicherschaltung 800 mit weiteren Komponenten eines
Security-Controllers,
der die Speicherschaltung 800 umfasst, kommunizieren kann. Über den Bus 810 können so
beispielsweise Datensignale, Steuersignale, Kontrollsignale, Statussignale
und Befehlssignale zwischen der Speicherschaltung 800 und
anderen Komponenten des Security-Controllers, beispielsweise einer
CPU, eines Ein-/Ausgabemoduls oder eines Kryptoprozessors, ausgetauscht
werden. Die Speicherschaltung 800 ist hierbei mit dem Bus 810 über eine
Speicher-Steuereinheit bzw. einen Memory-Controller 820 verbunden.
Der Memory-Controller 820 ist weiter über eine Mehrzahl von Zeilenauswahlleitungen 830,
die auch als Wortleitungen bzw. Word-Lines bezeichnet werden, und über eine
Mehrzahl von Spaltenauswahlleitungen 840, die auch als
Bitleitungen bzw. Ein-/Ausgangsleitungen bezeichnet werden, mit
einer Speichermatrix 850 verbunden. Der Memory-Controller 820 ist
darüber hinaus
mit einem EDC-Modul 860 über eine interne Datenleitung
und eine Fehlersignalleitung gekoppelt. Das EDC-Modul 860 ist
weiter mit einem EDC-Memory-Controller 870 gekoppelt.
Eine EDC-Speichermatrix 880 ist an den EDC-Memory-Controller 870 über eine
Mehrzahl von Wortleitungen 890 und eine Mehrzahl von Bitleitungen 900 verbunden.
-
Im
Folgenden wird die Funktionsweise der Speicherschaltung 800 am
Beispiel eines Lesezugriffs erläutert.
Erhält
die Speicherschaltung 800 bzw. der Memory-Controller 820 über den
Bus 810 den Befehl, eine bestimmte Speicheradresse auszulesen,
spricht der Memory-Controller 820 über einen Zeilenumsetzer und
einen Spaltenumsetzer, die der Memory-Controller 820 umfasst, über die
Mehrzahl von Wortleitungen 830 auf die Speichermatrix 850 zu und
liest über
die Mehrzahl von Bitleitungen 840 ein Datum aus, das in
der Speichermatrix 850 unter der bestimmten Adresse abgespeichert
ist. Daraufhin übermittelt
der Memory-Controller 820 über die interne Datenleitung
das Datum DA sowie die dem Datum DA zugrundeliegende Spei cheradresse
an das EDC-Modul 860. Das EDC-Modul 860 fordert
von dem EDC-Memory-Controller 870 eine entsprechende Prüfsumme bzw.
Checksumme bzw. Kontrollwert an, die beispielsweise unter der gleichen
Adresse in der EDC-Speichermatrix gespeichert ist. Zu diesem Zweck
steuert der EDC-Memory-Controller 870 über die Mehrzahl von Wortleitungen 890 die
EDC-Speichermatrix 880 an
und erhält über die
Mehrzahl von Bitleitungen 900 die dem Datum DA zugeordnete Checksumme,
die der EDC-Memory-Controller 870 dem EDC-Modul 860 übermittelt.
Das EDC-Modul 860 berechnet aus dem Datum DA ebenfalls
eine Checksumme und vergleicht diese mit der abgespeicherten Checksumme.
Erfüllen
die beiden Checksummen eine vorbestimmte Beziehung zueinander, stimmen
sie also beispielsweise überein,
so übermittelt
das EDC-Modul 860 über
die Fehlersignalleitung kein Fehlersignal FS. Erfüllen beide
Checksummen jedoch nicht die vorbestimmte Beziehung zueinander,
stimmen also beispielsweise nicht überein, so übermittelt das EDC-Modul 860 über die
Fehlersignalleitung ein Fehlersignal FS an den Memory-Controller 820,
der beispielsweise daraufhin das Fehlersignal FS über den
Bus 810 der CPU weiterleiten kann.
-
Als
Speicher können
sowohl Festwertspeicher, also beispielsweise ROM-Speicher (ROM = read-only
memory = Nur-Lese-Speicher),
wie auch Speicher, die lesende und schreibende Zugriffe ermöglichen,
eingesetzt werden. Beispiele für
letztgenannte Speicher stellen RAM-Speicher (RAM = random access
memory = Speicher mit wahlfreiem Zugriff), nichtflüchtige Speicher
(NVM = non-volatile memory), wie etwa Flash-Speicher oder EEPROM-Speicher
(EEPROM = electrically erasable programmable read-only memory =
elektrisch löschbarer
programmierbarer Nur-Lese-Speicher), oder auch Cache-Speicher dar.
Je nach verwendetem Speichertyp erfolgt die Kommunikation des Speichers
mit anderen Komponenten, wie beispielsweise der CPU, nicht notwendigerweise über einen
Bus, wie er in 2 gezeigt ist, sondern über eine
andere Datenverbindung.
-
Erlaubt
der Speichertyp einen schreibenden Zugriff auf die Speicherschaltung 800,
so verläuft
dieser ähnlich.
In diesem Fall steuert der Memory-Controller 820 die Mehrzahl
von Wortleitungen 830 und die Mehrzahl von Bitleitungen 840 so
an, dass das abzuspeichernde Datum an einer Speicherstelle, die einer
bestimmten Adresse zugeordnet ist, abgespeichert wird. Darüber hinaus übermittelt
der Memory-Controller 820 dem EDC-Modul 860 sowohl
das Datum DA wie auch die zugeordnete Adresse. Aus dem Datum berechnet
das EDC-Modul 860 eine Checksumme und weist den EDC-Memory-Controller 870 an,
unter der Adresse die Checksumme durch Ansteuerung der Mehrzahl
der Wortleitungen 890 und der Bitleitungen 900 in
der EDC-Speichermatrix 880 abzuspeichern.
-
Zur
Berechnung der Checksumme eines Datums können hierbei verschiedene Verfahren
bzw. Algorithmen zum Einsatz kommen. Häufig besteht die Checksumme
aus einem einfachen Paritätsbit,
oder einer CRC-Checksumme (CRC = cyclic redundancy check = zyklischer
Redundanztest) oder auch einem Hash-Wert, wie er beispielsweise
mit dem Algorithmus MD5, MD2 oder RIPEMD-160 berechnet werden kann.
-
Ein
Angreifer kann im Rahmen eines Angriffs auf die Speicherschaltung 800 nun
beispielsweise versuchen, durch einen physischen Angriff, etwa in Form
eines gezielten Rückätzens ausgewählter Gebiete
des Chips, der die Speicherschaltung 800 umfasst, und durch
Anlegen von elektrischen Spannungen oder Spannungspulsen an bestimmte
Bereiche des Chips, das EDC-Modul 860 und
damit auch die Fehlererkennungsfunktionalität zu stören. Hierdurch kann der Angreifer
den Inhalt der Speichermatrix 850 beispielsweise so manipulieren,
das diese Manipulation nicht mehr erkannt werden. Als Folge kann
beispielsweise ein Programmcode in den Speicher 800 geschrieben
werden, der einem Mikrocontroller, den der Chip ebenfalls umfasst,
dazu veranlasst, eigentlich geheime Daten preiszugeben. Die oben
beschriebenen Sensoren sind zwar grundsätzlich geeignet, einen entsprechenden
Angriff auf die Fehlerer kennungsfunktionalität der Speicherschaltung zu detektieren.
Diese Sensoren sind aber immer nur für einen bestimmten Satz von
Angriffen empfindlich.
-
Die
US 5,872,790 bezieht sich
auf einen Multibit-Fehlergenerator
für ECC-Speicher.
Der ECC-Speicher ist mit einer Fehlererkennungs- und Fehlerkorrektureinheit
verbunden, etwa einer Speichersteuerung oder eines Zentralprozessors
(CPU). Der Multibit-Fehlergenerator verwendet hierbei das Taktsignal
von einem Computersystem, bestimmt den Zeitpunkt, zu dem das Computersystem
als erstes versucht, nach einer Synchronisation mit dem Datenstrom
aus demselben zu lesen. Hieran anschließend wird in wenigstens ein
Bit des Datenstroms ein Fehler eingeführt, in dem das betreffende
Bit bzw. die betreffenden Bits invertiert werden. Die Synchronisation
wird hierbei auf eine Aktivierung durch einen mechanischen Schalter
hindurchgeführt,
wobei der Multibit-Fehlergenerator zusammen mit der Synchronisationsschaltung
als PAL-Schaltung (PAL = programmable array logic) ausgeführt ist.
-
Die
US 2005/0182997 A1 bezieht
sich auf ein Halbleiterbauelement mit einem Speicher und einem Verfahren
zum Testen eines Speichers, wobei der Test des Speichers auf Basis
eines Fehlerüberprüfungs- und
Fehlerkorrekturcodes durchgeführt wird.
Das Halbleiterbauelement beinhaltet so einen Datenspeicher und einen
Code-Speicher, sowie eine ECC-Schaltung und eine Testschaltung.
Die Testschaltung erzeugt hierbei Testmuster, die in den Datenspeicher
geschrieben werden. Die ECC Schaltung erzeugt zusätzlich Codeinformationen,
die die Fehlerüberprüfung und
Fehlerkorrektur ermöglichen und
speichert diese in den Code-Speicher. Die Testschaltung liest anschließend die
Daten aus dem Datenspeicher und dem Code-Speicher über die ECC-Schaltung,
die die ausgelesenen Daten aus den Datenspeicher auf Fehler überprüft und das
Resultat der Testschaltung übermittelt.
Die Testschaltung vergleicht ferner die aus dem Datenspeicher gelesenen
Daten mit den hineingeschriebenen Daten. Wird hierbei ein reproduzierbarer
Bitfeh ler unmittelbar nach dem Schreiben des Testmusters festgestellt,
wird dieser als anfänglicher
Fehler des Speichers gewertet.
-
Die
US 5,515,383 bezieht sich
auf ein eingebautes Selbsttestsystem und ein Verfahren zum Selbsttest
einer integrierten Schaltung. Eine integrierte Schaltung beinhaltet
einen Selbsttestgenerator, der pseudo-zufällige Testvektoren erzeugt,
die jeweils weniger Bits als ein normales Eingabesignal für die integrierte
Schaltung haben. Das normale Signal enthält Daten und Paritätsbits,
die einer Mehrzahl von Fehlererkennungs- und Korrekturschaltungen auf
der integrierten Schaltung zur Verfügung gestellt werden. Ausgewählte Bits
des pseudo-zufälligen Testvektors,
der von dem Selbsttestgenerator erzeugt wird, werden auf die gesamte
Anzahl der Bits der Daten und der Paritätssignale aufgeweitet und eine
Testsignatur wird bereitgestellt, nachdem ein vollständiger Satz
von Testvektoren von der Fehlererkennungs- und Korrekturschaltung
prozessiert wurde. Ein Signaturanalysator vergleicht die Testsignatur
mit einer vorbestimmten, erwarteten Signatur, um festzustellen,
ob ein Fehler in einer der Fehlererkennungs- und Korrekturschaltungen in der integrierten
Schaltung vorliegt. Der Selbsttest kann auf Befehl hin oder alternativ
quasi-gleichzeitig mit dem normalen Betriebsmodus ablaufen.
-
Die
US 2005/0086572 A1 bezieht
sich auf ein Halbleiterbauelement mit einer ECC-Schaltung. Ein Halbleiterbauelement
beinhaltet einen Speicher, der Daten speichert, eine ECC-Schaltung, die einen Bitfehler
in aus dem Speicher ausgelesenen Daten korrigiert und korrigierte
Daten erzeugt. Sie beinhaltet ferner eine eingebaute Selbsttestschaltung,
die die Korrektur der von der ECC-Schaltung ausgegebenen Daten überprüft, und
eine Pseudo-Fehlergeneratorschaltung, die einen Pseudofehler für wenigstens
ein Bit der aus dem Speicher ausgelesenen Daten erzeugt und dem
Pseudofehler an die ECC-Schaltung
in einem Testmodus bereitstellt.
-
Die
US 6,223,309 B1 bezieht
sich auf ein Verfahren und eine Vorrichtung für ECC-Logiktests. Eine Überprüfungsschaltung
beinhaltet eine erste Verzerrungsschaltung, die konfiguriert ist,
um ein vorherbestimmtes logisches Signal auszugeben. Die Überprüfungsschaltung
beinhaltet ferner einen Schalter, der zwischen die erste Verzerrungsschaltung
und eine erste Datenbitleitung eines Speicherbusses eines Computersystems
geschaltet ist. Der Speicherdatenbus enthält eine Mehrzahl von Datenbitleitungen
und eine Mehrzahl von Überprüfungsbitleitungen.
Das Computersystem beinhaltet eine Fehlerkorrekturschaltung (ECC),
die mit dem Speicherdatenbus gekoppelt ist. Die Überprüfungsschaltung ist konfiguriert,
um den Schalter während
eines Überprüfungszyklus
des Computersystems zu aktivieren. Auf diese Weise wird das vorbestimmte
logische Signal der ersten Datenbitleitung während des Überprüfungszyklus zugeführt. Die Überprüfungsschaltung ist
ausgebildet, um einen Testzustand den Datenbitleitungen und den Überprüfungsbitleitungen
des Speicherdatenbusses zuzuführen.
Der zugeführte Testzustand
zu den Überprüfungsbitleitungen
unterscheidet sich von dem Überprüfungsbitzustand,
der von der ECC-Einheit des Computersystems auf ein Empfangen des
Testzustands hin erzeugt würde.
-
Die
US 2003/0182611 A1 bezieht
sich auf ein Verfahren zur Überprüfung einer
Fehlerkorrekturcodefunktion eines Computersystems. Das Verfahren
enthält
das Einschalten der ECC Funktion und ein Schreiben von ersten Testdaten
in den ECC-Speicher.
Das ECC-Modul speichert ferner Überprüfungsdaten
ab, die den ersten Testdaten entsprechen. Dann wird die ECC-Funktion abgeschaltet
und die ersten Testdaten mit zweiten Testdaten überschrieben. Anschließend wird
die ECC-Funktion aktiviert, um zu versuchen, die ersten Testdaten
unter Ver wendung der zweiten Testdaten und der Überprüfungsdaten wieder herzustellen.
-
Ausgehend
von diesem Stand der Technik besteht die Aufgabe der vorliegenden
Erfindung darin, eine Vorrichtung und ein Verfahren zu schaffen, die
eine erhöhe
Sicherheit Angriffen auf eine Speicherschaltung gegenüber ermöglicht.
-
Diese
Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 oder Anspruch
11, ein Verfahren gemäß Anspruch
17 oder Anspruch 18 gelöst.
-
Der
vorliegenden Erfindung liegt die Erkenntnis zu Grunde, dass eine
erhöhte
Sicherheit Angriffen auf eine Speicherschaltung gegenüber dadurch
erreicht werden kann, dass während
des Betriebs die Fehlererkennungsfunktionalität der Speicherschaltung gegenüber dadurch
erreicht werden kann, dass während
des Betriebs die Fehlererkennungsfunktionalität der Speicherschaltung auf
ihre Wirksamkeit hin überprüft wird.
Hierdurch ergibt sich der Vorteil, dass im Rahmen eines Angriffs
eine Manipulation des Inhalts des Speichereinrichtung nicht dadurch verschleiert
werden kann, dass die Kontrollwerteinrichtung in ihrer Funktionalität so beeinträchtigt wird, dass
manipulierte Daten, die bei einer Überprüfung im Rahmen einer korrekten
Ausführung
der Fehlererkennungsfunktionalität
eigentlich als fehlerhaft erkannt werden müssten, als fehlerfrei erkannt
werden.
-
Zu
diesem Zweck forciert die erfindungsgemäße Vorrichtung einen oder mehrere
Fehler in der Speicherschaltung, in dem sie entweder diese so beeinflusst,
dass ein Datum bei einer Überprüfung ein Fehlersignal
der Kontrollwerteinrichtung hervorrufen müsste, oder in dem sie der Kontrollwerteinrichtung ein präpariertes
Datum mit dem zugeordneten Kontrollwert bereitstellt, das ebenfalls
bei einer Überprüfung zu
einem Fehlersignal führen
müsste.
Empfangt die erfindungsgemäße Vorrichtung
bzw. die Überwachungseinrichtung
das erwartete Fehlersignal nicht, wird von einer Manipulation bzw.
einem Angriff auf die Speicherschaltung ausgegangen. In diesem Fall gibt
die Überwachungseinrichtung
ihrerseits ein Alarmsignal aus, das einen erfolgten Angriff anderen Komponenten,
mit denen die erfindungsgemäße Vorrichtung
gekoppelt ist, gegenüber
anzeigt.
-
In
dem Ausführungsbeispiel
kann die Überwachungseinrichtung
den einem Datum zugeordneten Kontrollwert manipulieren, der Kontrollwerteinrichtung
das Datum in einem gegenüber
dem gespeicherten oder ausgelesenen Zustand veränderten Zustand bereitstellen
oder das Aufforderungssignal zum Auslesen eines Datums manipulieren.
Hierdurch ergibt sich der Vorteil, dass die erfindungsgemäße Vorrichtung über verschiedene
Möglichkeiten
zur Überprüfung der
Fehlererkennungsfunktionalität
verfügt, so
dass ein Angriff auf die Speicherschaltung einer Mehrzahl von Überprüfungen widerstehen
muss, um eine Chance auf eine erfolgreiche Durchführung zu haben.
-
Ein
weiterer Vorteil besteht darin, dass die Überprüfung während des Betriebs durchgeführt werden
kann. Die Überprüfung kann
hierbei durch das Vorliegen einer Auslösbedingung initiiert werden. Hierdurch
wird ein Angriff einem Angreifer erschwert, da er nicht nur zu bestimmten
Ereignissen, wie etwa einem Systemstart, mit einer Überprüfung der
Fehlererkennungsfunktionalität
rechnen muss, was einen weiteren Vorteil darstellt.
-
Darüber hinaus
zeigt das Ausführungsbeispiel,
dass die erfindungsgemäße Vorrichtung
nicht nur das Ausgeben eines Fehlersignals auf eine Beeinflussung
hin oder auf ein entsprechend präpariertes
Datum hin überwachen
kann, das also die erfindungsgemäße Vorrichtung
nicht nur die Kontrollwerteinrichtung dahingehend überwacht,
einen Fehler zu detektieren. Sie erlaubt es vielmehr auch, nach
einer erfolgreichen Fehlererkennung eine Überprüfung der Fehlererkennungsfunktionalität, ohne
dass ein Fehler vorliegt. Der Vorteil, der sich hieraus ergibt,
besteht darin, dass hierdurch ein möglicher Angriff auf Grund der
zugenommenen Komplexität
der Überprüfung erneut
erschwert wird, da nicht mehr bei jeder Überprüfung durch die Überwachungseinrichtung
ein Fehlersignal von derselben erwartet wird.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockschaltbild eines Ausführungsbeispiels
einer Speicherschaltung mit einer erfindungsgemäßen Vorrichtung zum Überprüfen einer Fehlererkennungsfunktionalität; und
-
2 eine
mögliche
Lösung
einer Speicherschaltung mit einer Fehlererkennungsfunktionalität.
-
Bezug
nehmend auf 1 wird nun ein Ausführungsbeispiel
einer Vorrichtung zum Überprüfen einer
Fehlererkennungsfunktionalität
einer Speicherschaltung beschrieben. Ähnliche oder gleiche Objekte,
die bereits in den einführenden
Abschnitten der vorliegenden Anmeldung erläutert wurden und in 2 gezeigt
sind, werden mit sich um 700 unterscheidende Bezugszeichen
bezeichnet.
-
1 zeigt
ein Blockschaltbild eines Ausführungsbeispiels
einer Speicherschaltung 100 mit einer erfindungsgemäßen Vorrichtung
zum Überprüfen einer
Fehlererkennungsfunktionalität
bzw. EDC-Funktion (EDC = error detecting code = fehlererkennender Code)
der Speicherschaltung 100, wie sie beispielsweise im Rahmen
eines Security-Controllers auf einer Chipkarte zum Einsatz kommen
kann. Die Speicherschaltung 100 ist mit einem Bus 110 gekoppelt, über den
die Speicherschaltung 100 mit anderen Komponenten eines
Security-Controllers, eines Mikrocontrollers, einer Chipkarte oder
einer Smartcard, also beispielsweise einer CPU (CPU = central processing
unit = Zentralprozessor), anderen Speicherschaltungen, einem Ein/Ausgabemodul,
einem (Pseudo-)Zufallszahlengenerator, einem Kryptoprozessor oder
anderen kryptographischen Komponenten oder elektronischen Komponenten
verbunden ist. Die Speicherschaltung 100 weist einen Memory-Controller 120,
der auch als Speicher-Steuereinheit bezeichnet wird und über eine
Mehrzahl von Wortleitungen 130, die auch als Zeilenauswahlleitungen
bzw. Word-Lines bezeichnet werden, und über eine Mehrzahl von Bitleitungen 140,
die auch als Spaltenauswahlleitungen, Ein/Ausgangsleitungen oder
Bit-Lines bezeichnet werden, mit einer Speichermatrix 150 gekoppelt.
-
Darüber hinaus
weist die Speicherschaltung 100 ebenfalls ein EDC-Modul 160 (EDC
= error detecting code = fehlererkennender Code) und einen EDC-Memory-Controller 170 auf,
die miteinander gekoppelt sind. Der EDC-Memory-Controller 170 ist
mit einer EDC-Speichermatrix 180 über eine Mehrzahl von Wortleitungen 190 und
einer Mehrzahl von Bitleitungen 200 verbunden. Die Mehrzahl
von Wortleitungen 190 werden häufig als auch Zeilenauswahlleitungen
bzw. Word-Lines, die Mehrzahl von Bitleitungen 200 häufig auch
als Spaltenauswahlleitungen, Ein/Ausgangsleitungen oder als Bit-Lines
bezeichnet. Die Funktionsweise der bisher bezeichneten Objekte und
Elemente der Speicherschaltung 100 unterscheiden sich von
den entsprechenden Objekten und Elementen der in 2 gezeigten
Speicherschaltung 800 nicht, weshalb für die Beschreibung der Funktionsweise
hiermit auf die einführenden
Abschnitte der vorliegenden Anmeldung verwiesen wird.
-
Die
Speicherschaltung 100 weist gegenüber der in 2 gezeigten
Speicherschaltung 800 jedoch weitere Elemente auf, deren
Anordnung und Funktionsweise im Folgenden beschrieben werden. Der
Memory-Controller 120 ist so beispielsweise über einen
Unterbrecher 210 mit dem Bus 110 gekoppelt. Der
Unterbrecher 210 ist seinerseits mit einem UmSLC-Modul 220 (UmSLC
= user mode sensor life control = Überwachung der Sensorfunktionsfähigkeit
im Betriebsmodus) verbunden. Ebenso wie im Fall der Speicherschaltung 800 aus 2 ist
auch der Memory-Controller 120 der in 1 gezeigten Speicherschaltung 100 mit
dem EDC-Modul 160 über
eine interne Datenleitung gekoppelt. Im Unterschied zu der in 2 gezeigten
Speicherschaltung 800 ist jedoch bei der Speicherschaltung 100 zwischen
den Memory-Controller 120 und das EDC-Modul 160 in
die interne Datenleitung ein Manipulator 230 geschaltet,
der mit dem UmSLC-Modul 220 ebenfalls verbunden ist. Ebenso
wie die Speicherschaltung 800 aus 2 ist auch
das EDC-Modul 160 über
eine Fehlersignalleitung mit dem Memory-Controller 120 verbunden.
Im Vergleich zu der Speicherschaltung 800 aus 2 ist
in die Fehlersignalleitung zwischen das EDC-Modul 160 und
den Memory-Controller 120 eine Weiche 240 geschaltet, die
ihrerseits wiederum mit dem UmSLC-Modul 220 verbunden ist.
-
Die
Speicherschaltung 100 weist darüber hinaus einen ebenfalls
mit dem UmSLC-Modul 220 verbundenen EDC-Manipulator 250 auf,
der zwischen das EDC-Modul 160 und den EDC-Memory-Controller 170 geschaltet
ist. Des weiteren weist die Speicherschaltung 100 einen
ersten Beeinflusser 260 und einen zweiten Beeinflusser 270 auf,
die beide mit dem UmSLC-Modul 220 gekoppelt sind. Der erste
Beeinflusser 260 ist hierbei in die Mehrzahl von Wortleitungen 130 zwischen
den Memory-Controller 120 und
die Speichermatrix 150 geschaltet, während der zweite Beeinflusser
in die Mehrzahl von Bitleitungen 140 zwischen den Memory-Controller 120 und die
Speichermatrix 150 geschaltet ist.
-
Die
Speicherschaltung 100 weist somit eine Speichereinrichtung 300 auf,
die den Memory-Controller 120, die Mehrzahl an Wortleitungen 130,
die Mehrzahl an Bitleitungen 140, die Speichermatrix 150,
den ersten Beeinflusser 260 und den zweiten Beeinflusser 270 umfasst.
Darüber
hinaus weist die Spei cherschaltung 100 eine Kontrollwerteinrichtung 310 auf,
die das EDC-Modul 160, den EDC-Manipulator 250,
den EDC-Memory-Controller 170,
die Mehrzahl an Wortleitungen 190, die Mehrzahl an Bitleitungen 200 und
die EDC-Speichermatrix 180 umfasst. Der EDC-Memory-Controller 170,
die Mehrzahl an Wortleitungen 190, die Mehrzahl an Bitleitungen 200 und
die EDC-Speichermatrix 100 bilden
hierbei eine Kontrollwertspeichereinrichtung 315. Eine Überwachungseinrichtung
bzw. eine Alarmeinheit 320 der Speicherschaltung 100 umfasst
den Manipulator 230, die Weiche 240, den Unterbrecher 210 und
das UmSLC-Modul 220.
-
Im
normalen Betriebsmodus (Normalbetriebsmodus), wenn also das UmSLC-Modul 220 die Fehlererkennungsfunktionalität der Speicherschaltung 100 nicht überprüft, werden
die gegenüber
der Speicherschaltung 800 in 2 zusätzlichen
Komponenten der Speicherschaltung 100 in einen neutralen,
die Funktionalität
der Speicherschaltung nicht modifizierenden Modus gebracht. Im Einzelnen
bedeutet dies, dass der Unterbrecher 210 den Memory-Controller 120 mit
dem Bus 110 verbindet. Ebenso verbindet die Weiche 240 die
Fehlersignalleitung zwischen dem Memory-Controller 120 und
dem EDC-Modul 160. Der Manipulator 230 lässt ein
Datum DA auf der internen Datenleitung zwischen dem Memory-Controller 120 und
dem EDC-Modul 160 ungehindert passieren. Die beiden Beeinflusser 260 und 270 belassen
die Wortleitungen 130 und die Bitleitungen 140 unverändert. Ebenso
verändert
der EDC-Manipulator 250 keine Signale, die zwischen dem
EDC-Modul 160 und dem EDC-Memory-Controller 170 ausgetauscht
werden. Im normalen Betriebsmodus zeigt somit die Speicherschaltung 100 das
bereits in den einführenden
Abschnitten der vorliegenden Anmeldung beschriebene Verhalten bzw. die
dort beschriebene Funktionsweise der Speicherschaltung 800,
auf die hiermit verwiesen wird.
-
Erhält der Memory-Controller 120 über den Bus 110 in
Form eines Lesebefehls hin, beispielsweise von der CPU, die Anweisung,
ein bestimmtes Datum aus einer vorbestimmten Adresse der Speichereinrichtung 300 auszulesen,
steuert der Memory-Controller 120 die
Wortleitungen 130 so an, dass die Speichermatrix 150 über die
Bitleitungen 140 das zugehörige Datum an den Memory-Controller 120 weiterleitet.
Das Datum DA wird zusammen mit der zugehörigen Adresse dann dem EDC-Modul 160 zur Verfügung gestellt,
das auf Basis des Datums DA eine Checksumme berechnet und den EDC-Memory-Controller 170 anweist,
durch eine entsprechende Ansteuerung der Wortleitungen 190 aus
der EDC-Speichermatrix über
die Bitleitungen 200 den der Adresse zugeordneten Checksummenwert
bzw. Kontrollwert auszulesen und diesen wiederum dem EDC-Modul 160 zur
Verfügung
zu stellen. Erfüllt
nun der berechnete Checksummenwert mit dem gespeicherten Checksummenwert
eine vorbestimmte Beziehung zueinander, stimmen sie also beispielsweise überein,
so wird über
die Fehlersignalleitung kein Fehlersignal FS dem Memory-Controller 120 zur
Verfügung
gestellt. Erfüllen
hingegen die beiden Checksummen die vorbestimmte Beziehung zueinander nicht,
weichen also beispielsweise voneinander ab, so wird über die
Fehlersignalleitung ein Fehlersignal FS dem Memory-Controller 120 zur
Verfügung
gestellt, der dann beispielsweise die CPU über eine entsprechende Rückmeldung über ein
Auftreten eines Fehlers informieren kann.
-
Durch
die zusätzlichen
Komponenten der Speicherschaltung 100 kann das in 1 gezeigte Ausführungsbeispiel
der vorliegenden Erfindung die Aufgabenstellung lösen, eine
neuartige, sogenannte UmSLC-Funktion für die Alarmeinheit 320 zur
Absicherung des Speichers bzw. der Speicherschaltung umzusetzen
und zu implementieren, so dass während
des Betriebs logische Gegenmaßnahmen
auf eine Erkennungsmöglichkeit
von Angriffen hin, also auf ihre Wirksamkeit getestet werden können. Wie bereits
erläutert
wurde, werden bei dem in 1 gezeigten Ausführungsbeispiel
die Speicher durch sogenannte fehlererkennende Codes (EDC = error
detection code), die auch als Prüfsummen,
Kontrollwerte oder Checksummen bezeichnet werden, nach dem Stand
der Technik gegen Fehler abgesichert. Als Checksummen bzw. Prüfwerte können beispielsweise
im Rahmen einer EDC-Speicherung von Daten ein einfaches Paritätsbit, eine
CRC-Prüfsumme (CRC
= cyclic redundancy check = zyklische Redundanzüberprüfung) oder ein Hash-Wert, wie
er beispielsweise mit Hilfe der Hash-Algorithmen MD2, MD4, MD5 oder
RIPEMD-160 berechnet werden kann, verwendet werden. Auch andere
Verfahren, mit deren Hilfe die Integrität von Daten DA überprüft werden
können,
können
als Checksumme bzw. Prüfwert herangezogen
werden. Darüber
hinaus stellt die in dem in 1 gezeigten
Ausführungsbeispiel
eine Speicherschaltung 100 gezeigte Aufteilung des eigentlichen
Datenspeichers mit der Speichermatrix 150 und dem EDC-Speicher
mit der EDC-Speichermatrix 180 keine
Einschränkung
an die allgemeine Ausführbarkeit
der vorliegenden Erfindung. Vielmehr können die Inhalte beider Speicher
auch physikalisch in ein und derselben Speichermatrix gespeichert
werden.
-
Wird
nun eine vorbestimmte Auslösebedingung
erfüllt,
so wechselt das UmSLC-Modul 220 von dem Normalbetriebsmodus
in einen Überprüfungsmodus
und leitet die Überprüfung der
Fehlererkennungsfunktionalität
der Speicherschaltung 100 ein. Bei dieser Auslösebedingung
kann es sich beispielsweise um das Verstreichen einer vorbestimmten
Zeitspanne oder das Erreichen einer vorbestimmten Systemzeit oder
das Eintreffen einer entsprechenden CPU-Anweisung handeln. Ebenso
ist eine zufällige Erfüllung der
Auslösebedingung
denkbar, wie sie beispielsweise durch einen (Pseudo-)Zufallszahlengenerator
und einen entsprechenden vorbestimmten Anteil des Zahlenbereichs
des (Pseudo-)Zufallszahlengenerators realisiert werden kann. Wichtig
ist in diesem Zusammenhang, dass es sich bei der Auslösebedingung
um eine intermittierend erfüllte
Bedingung handelt, die einen normalen schreibenden und lesenden
Zugriff auf die Speicherschaltung 100 ermöglicht,
und darüber
hinaus bei Erfüllen
der Auslösebedingung
das Einleiten der Überprüfung der
Fehlererkennungsfunktionalität
ermöglicht.
Ist die Auslösebedingung
erfüllt,
so forciert die neuartige UmSLC-Funktion des UmSLC-Moduls 220 nun
einen oder mehrere Fehler in dem Speicher, um die EDC-Funktion der
Speicherschaltung 100 zu überprüfen. Hierzu wird zunächst das
Fehlersignal FS des EDC-Moduls 160 (Alarmfunktion) durch
Ansteuern der Weiche 240 zu dem UmSLC-Modul 220,
das auch als UmSLC-Steuereinheit
bezeichnet wird, umgeleitet. Dann wird ein Fehler im Speicher simuliert. Die
UmSLC-Steuereinheit 220 muss dann eine Fehlermeldung, also
das Fehlersignal FS, vom EDC-Modul 160 erhalten.
Bleibt bei der Fehlererkennung durch den Einsatz fehlererkennender
Codes nun eine Fehlermeldung bzw. ein Fehlersignal aus, wird von
einer Manipulation bzw. einem Angriff auf den Speicher ausgegangen.
Sollte dieses nicht erfolgen, wird das UmSLC-Modul 220 seinerseits
ein Alarmsignal AL bzw. Alarm an einem Alarmsignalausgang erzeugen,
da in dem Fall von einer Manipulation bzw. einem Angriff auszugehen
ist. Das Alarmsignal (AL) signalisiert anderen Komponenten gegenüber, die beispielsweise
der Security-Controller aufweist, einen erfolgten Angriff.
-
In
einem „korrekten
Betriebsfall”,
bei dem die EDC-Funktionalität der Kontrollwerteinrichtung 310 korrekt
funktioniert, indem also das UmSLC-Modul 220 die EDC-Fehlermeldung in
Form des Fehlersignals FS erhält,
wird der Speicherfehler bzw. die Simulation des Speicherfehlerrs
wieder abgeschaltet und die Rücknahme
der EDC-Fehlermeldung, also des Fehlersignals FS, abgewartet. Die
EDC-Alarmleitung, also die Fehlersignalleitung, wird dann durch Ansteuern
der Weiche 240 wieder auf das ursprüngliche Alarmmodul, also im
vorliegenden Ausführungsbeispiel
den Memory-Controller 120, zurückgeschaltet. Die erfindungsgemäße Vorrichtung
ermöglicht
somit die Überprüfung der
Funktionalität
einer Fehlererkennungsschaltung für Speicher und damit die Möglichkeit
einer Angriffsdetektion für
Speicher. Mit anderen Worten löst
die erfindungsgemäße Vorrichtung
zur Überprüfung der
Fehlererkennungsfunktionalität
einer Speicherschaltung somit vorteilhaft die Überprüfung der Angriffsdetektoren
für Speicher und
stellt somit eine UmSLC (UmSLC = user mode sensor life control =
Steuereinheit für
die Überwachung
der Sensorfunktionsfähigkeit
im Betriebsmodus) für
Speicher dar.
-
Im
weiteren Verlauf der vorliegenden Anmeldung wird anhand des in 1 gezeigten
Ausführungsbeispiels
einer Speicherschaltung 100 die Erzeugung eines Fehlers
durch vier verschiedene Eingriffe in die Speicherschaltung 100 beispielhaft
beschrieben, wobei die Fehler im Falle einer korrekten Fehlererkennungsfunktionalität der Speicherschaltung 100 detektiert
werden. Hierbei unterscheiden sich die vier Methoden, mit denen
ein Fehler im Speicher der Speicherschaltung 100 simuliert
wird, von dem prinzipiellen Verfahren, das das UmSLC-Modul 220 ausführt, nur
in wenigen Punkten. Die Verwendung der neuartigen UmSLC bzw. der
erfindungsgemäßen Vorrichtung
zur Überprüfung der
Fehlererkennungsfunktionalität
einer Speicherschaltung im Rahmen einer Überprüfung der Angriffsdetektion
für Speicher
geschieht in mehreren Schritten:
- a. Das UmSLC-Modul 220 weist
den Unterbrecher 210 an, den Memory-Controller 120 von
dem Bus 110 zu trennen.
- b. Das UmSLC-Modul 220 weist die Weiche 240 an,
die Fehlersignalleitung so umzuleiten, dass das Fehlersignal FS
nicht mehr den Memory-Controller 120 erreicht, sondern
das UmSLC-Modul 220.
- c. Das UmSLC-Modul 220 aktiviert eine oder mehrere
Störungssimulationseinheiten,
was im weiteren Verlauf der vorliegenden Anmeldung näher erläutert wird.
Die Gruppe der Störungssimulationseinrichtungen
umfasst den Manipulator 230, den EDC-Manipulator 250,
den ersten Beeinflusser 260 und den zweiten Beeinflusser 270. Dieser
Schritt kann unter bestimmten, unten beschriebenen Umständen auch
entfallen.
- d. Das UmSLC-Modul 220 weist den Unterbrecher 210 an,
dem Memory-Controller 120 eine Datenanfrage zu senden,
wobei dem Memory-Controller 120 über den Unterbrecher 210 von dem
UmSLC-Modul 220 eine vorbestimmte oder von demselben bestimmte
Adresse übergeben wird.
Auf Grund der Datenanfrage liest der Memory-Controller 120 über die
Wortleitungen 130 und die Bitleitungen 140 aus
der Speichermatrix 150 ein Datum aus und stellt es zur
weiteren Verarbeitung auf der internen Datenleitung zur Verfügung. Auf
Grund des Eingreifens der Störungssimulationseinrichtungen,
die in Schritt c gegebenenfalls durch das UmSLC-Modul 220 aktiviert wurden, liefert
das EDC-Modul 160 im Falle einer korrekten Ausführung der
Fehlererkennungsfunktionalität über die
Fehlersignalleitung ein Fehlersignal FS, das durch das Umschalten
der Weiche 240 nicht dem Memory-Controller 120,
sondern dem UmSLC-Modul 220 zur Verfügung gestellt wird.
Der
Adresswert kann hierbei vorbestimmt sein oder auch von dem UmSLC-Modul 220 oder
von einer anderen Komponente, beispielsweise der CPU, bestimmt werden.
Denkbar ist es hier beispielsweise, dass das UmSLC-Modul 220 in
einer planvollen Reihenfolge oder in einer zufälligen Reihenfolge alle Speicherbereiche
oder auch nur Teile des Speicherbereichs der Speicherschaltung 100 überprüft. In dem
Fall, dass nur Teile des Speicherplatzes der Speicherschaltung 100 überprüft werden,
kann es sich beispielsweise um solche Speicherbereiche handeln,
in denen sensible Informationen, also beispielsweise private Schlüssel oder
andere Zugangsinformationen, gespeichert sind. Ebenso ist es denkbar,
dass je nach Art der simulierten Störung vorbestimmte oder aus
einem vorbestimmten Adressraum zufällig ausgewählte Adressen zur Durchführung der Überprüfung der
Fehlererkennungsfunktionalität herangezogen
werden. Weitere Einzelheiten hierzu werden auch weiter unten beschrieben.
- e. Empfängt
das UmSLC-Modul 220 das Fehlersignal FS nicht, so gibt
das UmSLC-Modul 220 an dem Alarmsignalausgang ein Alarmsignal
AL aus, woraufhin der Security-Controller,
auf dem die Speicherschaltung 100 implementiert ist, weitere, hier
nicht näher
bezeichnete Schritte ausführt.
- f. Ist an dem UmSLC-Modul 220 das Fehlersignal FS eingegangen,
so werden gegebenenfalls die aktivierten Störungssimulationseinrichtungen deaktiviert.
- g. Der Unterbrecher 210 wird von dem UmSLC-Modul 220 angewiesen,
an den Memory-Controller 120 das betreffende Datum erneut oder
auch ein anderes Datum auszulesen.
- h. Tritt bei der Überprüfung des
von dem Security-Controller 120 ausgelesenen
Datums DA durch das EDC-Modul 160 erneut
ein Fehler auf, der über
die Weiche 240 dem UmSLC-Modul 220 zur Verfügung gestellt
wird, löst
das UmSLC-Modul 220 einen Alarm aus, indem das UmSLC-Modul 220 an
dem Alarmsignalausgang ein Alarmsignal AL ausgibt.
- i. Detektiert das UmSLC-Modul 220 kein Fehlersignal
FS bzw. wird das bestehende Fehlersignal FS gelöscht, so wird die Speicherschaltung 100 in ihren
ursprünglichen
Zustand zurückversetzt.
Zu diesem Zweck wird die Weiche 240 wieder so angesteuert,
dass das Fehlersignal von dem EDC-Modul 160 zu dem Memory-Controller 120 gelangen
kann. Darüber
hinaus wird die Unterbrechung des Memory-Controllers 120 von dem Bus 110 durch
ein Zurücksetzen
des Unterbrechers 210 ebenfalls aufgehoben.
-
Mögliche Gegenmaßnahmen,
die beispielsweise die CPU oder auch der Memory-Controller 120 nach
dem Eintreffen des Alarmsignals AL, das das UmSLC-Modul 220 im
Falle einer Störung
der Fehlererkennungsfunktionalität
ausgibt, können
beispielsweise darin bestehen, dass sensible Daten gelöscht werden,
die CPU angehalten wird, ein Reset der Chipkarte bzw. des Security- Controllers, der
die Speicherschaltung 100 umfasst, ausgelöst wird
oder dass der Security-Controller oder Teile der Chipkarte gezielt
unbrauchbar gemacht werden, indem sie zerstört werden.
-
Im
weiteren Verlauf der vorliegenden Anmeldung werden nun vier verschiedene
Simulationen von Störungen
beschrieben, die mit Hilfe des in 1 gezeigten
Ausführungsbeispiels
einer Speicherschaltung 100 mit einer erfindungsgemäßen Vorrichtung
zum Überprüfen der
Fehlererkennungsfunktionalität
der Speicherschaltung 100 realisiert werden können. Hierbei
werden die in den Schritten c und f des oben angegebenen Ablaufs
der Überprüfungsroutine
die entsprechenden und erwähnten
Störungssimulationseinrichtungen
aktiviert bzw. deaktiviert. Hierbei nicht genannte Störungssimulationseinrichtungen
(siehe Punkt c.) können
entfallen, wenn eine Implementierung der anderen Möglichkeiten
zur Simulation von Störungen
im Rahmen der anderen Möglichkeiten
zur Überprüfung der
Fehlererkennungsfunktionalität
nicht beabsichtigt ist. Das in 1 gezeigte
Ausführungsbeispiel
ermöglicht
es so, mit Hilfe verschiedener Ansätze, Störungen im Rahmen der Überprüfung der
Fehlererkennungsfunktionalität
der Speicherschaltung 100 auszulösen.
-
Eine
erste Möglichkeit
zur Überprüfung der Fehlererkennungsfunktionalität der Speicherschaltung 100 besteht
nun darin, die EDC-Prüfwerte
bzw. Kontrollwerte, die auch als EDC-Referenzwerte bezeichnet werden, so
zu manipulieren, dass das EDC-Modul 160 bei der Durchführung der
Fehlererkennungsfunktionalität
ein Fehlersignal auf die Fehlersignalleitung ausgibt. Hierbei bestehen
im Prinzip zwei Möglichkeiten,
die EDC-Prüfwerte
zu manipulieren. Zum einen besteht die Möglichkeit, von vorneherein
zu den in der Speichermatrix 150 abgelegten Daten zum Teil
fehlerhafte EDC-Prüfwerte
in der EDC-Speichermatrix 180 abzulegen.
In diesem Fall ist eine Manipulation der EDC-Referenzwerte während des
Betriebs im Überprüfungsmodus
nicht notwendig und es kann eine Implementierung von Einrichtungen
aus der Gruppe der Störungssimulationseinrichtungen
entfallen. Andererseits besteht hierdurch nur die Möglichkeit,
im vorhinein entsprechend präparierte
Speicherzellen zur Überprüfung der
Fehlererkennungsfunktionalität
heranzuziehen.
-
Eine
Alternative, die es ermöglicht,
beliebige Speicherplätze
im Rahmen der Überprüfung der
Fehlererkennungsfunktionalität
heranzuziehen, besteht darin, durch entsprechendes Ansteuern des EDC-Manipulators 250 die
aus der EDC-Speichermatrix 180 ausgelesenen EDC-Prüfwerte zu
modifizieren. Zu diesem Zweck kann im Rahmen von Schritt c der oben
angegebenen Routine das UmSLC-Modul 220 den EDC-Manipulator 250 beispielsweise
so anzusteuern, dass dieser ein oder mehrere Bits der abgespeicherten
EDC-Prüfsumme
invertiert. Die Auswahl, welche Bits von dem EDC-Manipulator 250 invertiert
werden, kann vorbestimmt sein oder durch das UmSLC-Modul 220 erfolgen.
Alternativ ist es möglich,
nicht einzelne Bits des EDC-Referenzwerts von dem EDC-Manipulator 250 invertieren
zu lassen, sondern vielmehr dem EDC-Modul 160 von dem EDC-Manipulator 250 einen
vorbestimmten oder auch zufällig
bestimmten EDC-Prüfwert
zu übergeben.
-
Mit
anderen Worten besteht einerseits die Möglichkeit, gezielt EDC-falsche
Werte zu speichern oder auch die EDC-Prüfwerte
gezielt zu manipulieren. Im ersten Fall kann dies beispielsweise
dadurch realisiert werden, dass in einem ROM-Speicherbereich (ROM = read-only memory
= Nur-Lese-Speicher) absichtlich unkorrekte EDC-Referenzwerte abgelegt
werden, dass eine NVM-Programmierung mit absichtlich gestörten EDC-Referenzwerten durchgeführt wird
(NVM = non-volatile memory = nichtflüchtiger Speicher), dass eine
RAM-Belegung (RAM = random access memory = Speicher mit wahlfreiem
Zugriff) mit absichtlich falschen EDC-Referenzwerten oder beispielsweise
dass Cache-Eintragungen mit absichtlich falschen EDC- bzw. Parity-Werten
durchgeführt
werden. Im Rahmen eines Tests bzw. der Überprüfung der Fehlererkennungsfunktionalität werden diese
Speicherzellen versucht auszulesen. Auf Grund der genannten Vorbedingungen,
wie sie von dem UmSLC-Modul 220 auf Grund der oben beschriebenen Überprüfungsroutine
vorliegen, führen die
unkorrekten EDC-Referenzwerte dann nicht zu einem an Komponenten
außerhalb
der Speicherschaltung 100 weitergegebenen Fehlersignal,
also zu einem Alarm des Memory-Controllers 120,
sondern zu einem korrekten Testverhalten im Rahmen des von dem UmSLC-Moduls 220 durchgeführten Tests.
-
Eine
zweite Möglichkeit
bzw. ein zweites Ausführungsbeispiel
für die
Durchführung
der Überprüfung der
Fehlererkennungsfunktionalität
durch das UmSLC-Modul 220 besteht darin, dass Speicherleitungen,
beispielsweise die Wortleitungen 130 oder auch die Bitleitungen 140,
im Rahmen dieses Tests nicht korrekt geschaltet werden. Dieser Test kann
so ausgeführt
werden, dass beispielsweise eine oder mehrere der betreffenden Leitungen
der Mehrzahl von Bitleitungen 140 einen „Stuck-At-1”- oder einen „Stuck-At-0”-Fehler
aufweisen, also einen Fehler, bei dem einzelne Bits bzw. die zugehörigen Leitungen
unabhängig
von ihrem eigentlich beabsichtigten Wert auf einen logischen Signalwert
gelegt bzw. geklemmt werden, der einer logischen 1 oder einer logischen
0 entspricht. Auch dieser Fehler soll von dem EDC-Modul 160 erkannt
werden und über
die Weiche 240 an das UmSLC-Modul 220 weitergeleitet werden.
In dem in 1 gezeigten Ausführungsbeispiel
kann dieser Fehler dadurch hervorgerufen werden, dass in dem dritten
Schritt der oben beschriebenen Überprüfungsroutine
der zweite Beeinflusser 270, der in die Bitleitungen 140 geschaltet
ist, von dem UmSLC-Modul 220 angewiesen wird, eine oder mehrere
Leitungen der Mehrzahl von Bitleitungen 140 auf ein Potential
zu klemmen, das einer logischen 0 bzw. einer logischen 1 entspricht.
Sowohl die Auswahl der Bitleitungen 140 wie auch die Werte,
auf die die betreffenden Leitungen geklemmt werden, kann hierbei
vorbestimmt sein oder durch das UmSLC-Modul 220 erfolgen.
-
Ein
drittes Ausführungsbeispiel
der Fehlersimulation besteht darin, die Ansteuerleitungen, z. B. die
Adressleitungen bzw. die Wortleitungen 130, für diesen
Test nicht korrekt schalten zu lassen. Auch diese Fehlerquelle führt im Allgemeinen
zu falschen Auslesewerten der Speicherinhalte, welche von dem EDC-Modul 160 erkannt
und über
die Weiche 240 an das UmSLC-Modul 220 weitergeleitet werden
sollen. In dem in 1 gezeigten Ausführungsbeispiel
einer Speicherschaltung 100 kann dies beispielsweise dadurch
geschehen, dass das UmSLC-Modul 220 den ersten Beeinflusser 260 so
ansteuert, dass dieser die Wortleitungen 130 manipuliert.
Neben der bereits beschriebenen Möglichkeit, eine oder mehrere
Leitungen der Mehrzahl von Wortleitungen 130 auf einen logischen
Wert 0 oder einen logischen Wert 1 zu klemmen, kann der erste Beeinflusser 260 auch
die Wortleitungen 130 dadurch beeinflussen, dass dieser gezielt
einzelne Leitungen vertauscht oder zyklisch um einen vorbestimmten
Wert (beispielsweise um 1) verschiebt. Grundsätzlich besteht auch für die weiter oben
beschriebenen Fehlersimulationseinrichtungen, also insbesondere
für den
EDC-Manipulator 250 und
den zweiten Beeinflusser 270, die Möglichkeit, einzelne Bits oder
die Reihenfolge von Datenleitungen wie etwa der Bitleitungen 140 zu
vertauschen bzw. um einen vorbestimmten Wert, beispielsweise um
1, zyklisch zu verschieben.
-
Eine
vierte Möglichkeit
bzw. ein viertes Ausführungsbeispiel
zur Simulation eines Fehlers zur Überprüfung der Fehlererkennungsfunktionalität der Speicherschaltung 100 besteht
darin, dass die EDC-Schaltung bzw. die Kontrollwerteinrichtung 310 oder
die Alarmeinheit 320 entweder so umgeschaltet oder durch
Einführen
und Aktivieren des Manipulators 230 so beeinflusst wird,
dass die Daten DA, die in dem in 1 gezeigten
Ausführungsbeispiel
von dem Memory-Controller 120 an das EDC-Modul 160 ausgegeben
werden, dem EDC-Modul 160 „falsch” erscheinen. Diese Beeinflussung
bzw. Manipulation sollte von dem EDC-Modul 160 erkannt
werden und an das UmSLC-Modul 220 über die Weiche 240 weitergeleitet
werden. Diese Möglichkeit der
Fehlersimulation kann in dem in 1 gezeigten
Ausführungsbeispiel
einer Speicherschaltung 100 dadurch realisiert werden,
dass das UmSLC-Modul 220 den Manipulator 230 so
ansteuert, dass dieser das von dem Memory-Controller 120 ausgegebene
Datum DA so beeinflusst bzw. manipuliert, dass die anschließende Fehlererkennung
durch das EDC-Modul 160 fehlschlägt, so dass das EDC-Modul 160 das Fehlersignal
FS ausgibt. Hierbei besteht die Möglichkeit, dass der Manipulator 230 eine
vorbestimmte oder von dem UmSLC-Modul 220 bestimmte Auswahl
der Bits des Datums DA invertiert, auf einen logischen Wert 0 oder
einen logischen Wert 1 setzt oder auch eine Mischform dieser Möglichkeiten durchführt. Darüber hinaus
besteht ebenfalls die Möglichkeit,
gezielt einzelne Bits des Datums DA zu vertauschen oder auch eine
zyklische Verschiebung um einen vorbestimmten oder von dem UmSLC-Modul 220 vorgegebenen
Wert, beispielsweise um 1, vorzunehmen. Da bei dieser Fehlersimulation
nur ein Teil des Datenweges geprüft
wird, ist diese vierte Möglichkeit
bzw. diese Ausführung
jedoch im Vergleich zu den vorher beschriebenen Ausführungen nachteilig.
-
Auch
eine Kombination, also eine parallele Nutzung, oder eine sequenzielle
Nutzung der Möglichkeiten
der Fehlersimulation, also der vier oben beschriebenen Ausführungsbeispiele,
ist denkbar. Im Falle einer sequentiellen Anwendung verschiedener Fehlersimulationsquellen
müssen
nicht alle Schritte der oben beschriebenen Fehlerüberprüfungsroutine bei
jedem Durchgang ausgeführt
werden.
-
Wie
bereits oben erläutert
wurde, ist es darüber
hinaus nicht notwendig, alle Einrichtungen der Gruppe von Störungssimulationseinrichtungen
zu implementieren, wenn nicht alle Möglichkeiten zur Störungssimulation
implementiert werden sollen. Ist beispielsweise nur eine Implementierung
der ersten Möglichkeit
vorgesehen, ist im Falle einer Beschränkung auf im vorneherein manipulierte
Daten mit entsprechend fehlerhaften EDC-Prüfwerten eine Implementierung
der Störungssimulati onseinrichtungen nicht
notwendig. Im Falle einer ausschließlichen Implementierung der
ersten Möglichkeit
ohne die genannte Beschränkung
kann die Implementierung des Manipulators 230, des ersten
Beeinflussers 260 und des zweiten Beeinflussers 270 entfallen.
Im Falle einer ausschließlichen
Implementierung der zweiten Möglichkeit
oder einer ausschließlichen
Implementierung der dritten Möglichkeit
kann eine Integration des EDC-Manipulators 250 und des
Manipulators 230 entfallen. Darüber hinaus kann im Fall einer
ausschließlichen
Implementierung der zweiten Möglichkeit
der erste Beeinflusser 260 und im Fall einer ausschließlichen
Implementierung der dritten Möglichkeit
der zweite Beeinflusser 270 entfallen. Im Fall einer ausschließlichen
Implementierung der vierten Möglichkeit
kann eine Implementierung des ersten Beeinflussers 260,
des zweiten Beeinflussers 270 und des EDC-Manipulators 250 entfallen.
-
Auch
wenn in dem in 1 gezeigten Ausführungsbeispiel
einer Speicherschaltung 100 der eigentliche Speicher für die Daten
DA von dem Speicher, der die EDC-Referenzwerte bzw. Prüfwerte umfasst,
physikalisch getrennt ist, stellt dies keine Einschränkung der
vorliegenden Erfindung dar, sondern ist vielmehr zur Verdeutlichung
der verschiedenen Möglichkeiten
der Störungssimulationen
erfolgt. Es sind durchaus Ausführungsbeispiele
denkbar, bei denen die Prüfwerte
zusammen mit den Daten DA in der gleichen physikalischen Speichermatrix
gespeichert sind. Hierbei kann die Speicherung eines bestimmten
Datums und der zugehörigen
Prüfsumme bzw.
dem zugehörigen
EDC-Referenzwert, also der zugehörigen
Kontrollwerte je nach Auslegung des Speichers an der gleichen oder
einer unterschiedlichen logischen Adresse erfolgen.
-
Darüber hinaus
sollte ebenfalls angemerkt werden, dass die Erfindung nicht auf
wortorganisierte Speicher, wie dies das in 1 gezeigte
Ausführungsbeispiel
andeutet, beschränkt
ist. Vielmehr können
auch bitorganisierte Speicher sowohl zur Speicherung der EDC-Prüfwerte wie
auch der Daten verwendet werden.
-
Als
Speicher können
sowohl Festwertspeicher, also beispielsweise ROM-Speicher (ROM = read-only
memory), wie auch Speicher, die lesende und schreibende Zugriffe
ermöglichen,
eingesetzt werden. Beispiele für
letztgenannte Speicher stellen RAM-Speicher (RAM = random access
memory = Speicher mit wahlfreiem Zugriff), nichtflüchtige Speicher
(NVM = non-volatile memory), wie etwa Flash-Speicher oder EEPROM-Speicher
(EEPROM = electrically erasable programmable read only memory =
elektrisch löschbarer
programmierbarer Nur-Lese-Speicher), oder auch Cache-Speicher dar. Je
nach verwendetem Speichertyp erfolgt die Kommunikation des Speichers
mit anderen Komponenten, wie beispielsweise der CPU, nicht notwendigerweise über einen
Bus, wie er in 1 gezeigt ist, sondern über eine
andere Datenverbindung, so dass auch der in 1 gezeigte
Bus 110 keine Einschränkung
der vorliegenden Erfindung darstellt.
-
Abhängig von
den Gegebenheiten kann das erfindungsgemäße Verfahren zum Überprüfen einer Fehlererkennungsfunktionalität einer
Speicherschaltung in Hardware oder in Software implementiert werden.
Die Implementation kann auf einem digitalen Speichermedium, insbesondere
einer Diskette, einer CD oder einer DVD mit elektronisch auslesbaren Steuersignalen
erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken
können,
dass das erfindungsgemäße Verfahren
zum Überprüfen einer
Fehlererkennungsfunktionalität
einer Speicherschaltung ausgeführt
wird. Allgemein besteht die Erfindung somit auch in einem Computer-Programm-Produkt
mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur
Durchführung
des erfindungsgemäßen Verfahrens,
wenn das Computer-Programm-Produkt auf einem Rechner abläuft. In
anderen Worten ausgedrückt
kann die Erfindung somit als ein Computer-Programm mit einem Programmcode
zur Durchführung
des Verfahrens realisiert werden, wenn das Computer-Programm auf einem
Computer abläuft. Hierbei
ist unter einem Computer jegliche Form eines Prozessors zu verstehen,
der ausgelegt ist, um ein Programm oder einen Programmcode auszuführen, also
insbesondere auch Mikrocontroller auf einer Chipkarte, einer Smartcard
oder einer sonstigen integrierten Schaltung.
-
- 100
- Speicherschaltung
- 110
- Bus
- 120
- Memory-Controller
- 130
- Wortleitung
- 140
- Bitleitung
- 150
- Speichermatrix
- 160
- EDC-Modul
- 170
- EDC-Memory-Controller
- 180
- EDC-Speichermatrix
- 190
- Wortleitungen
- 200
- Bitleitungen
- 210
- Unterbrecher
- 220
- UmSLC-Modul
- 230
- Manipulator
- 240
- Weiche
- 250
- EDC-Manipulator
- 260
- erster
Beeinflusser
- 270
- zweiter
Beeinflusser
- 300
- Speichereinrichtung
- 310
- Kontrollwerteinrichtung
- 315
- Kontrollwertspeichereinrichtung
- 320
- Alarmeinheit
- 800
- Speicherschaltung
- 810
- Bus
- 820
- Memory-Controller
- 830
- Wortleitung
- 840
- Bitleitung
- 850
- Speichermatrix
- 860
- EDC-Modul
- 870
- EDC-Memory-Controller
- 880
- EDC-Speichermatrix
- 890
- Wortleitungen
- 900
- Bitleitungen