-
Die vorliegende Erfindung betrifft ein Verfahren zur Durchführung einer abgesicherten Startsequenz einer Recheneinheit sowie eine Recheneinheit zu dessen Durchführung.
-
Hintergrund der Erfindung
-
Steuergeräte von Kraftfahrzeugen oder anderen Maschinen können mit einem Sicherheitsmodul, etwa einem sogenannten Hardware-Sicherheits-Modul (HSM), ausgestattet sein, das Funktionen bereitstellt, um die Funktion des Steuergeräts, insbesondere die Ausführung von Anwendungsprogrammen bzw. Computerprogrammen durch das Steuergerät, kryptographisch abzusichern. Beispielsweise kann die Authentizität von Anwendungsprogrammen vor ihrer Ausführung geprüft werden, oder das HSM kann Verschlüsselungen und/oder Entschlüsselungen von Daten durchführen, etwa von Daten, die vom Steuergerät an eine andere Recheneinheit gesendet werden oder von einer anderen Recheneinheit empfangen werden. Typischerweise ist das HSM zusammen mit einem Hauptprozessor des Steuergeräts in einem Mikrochip integriert, um eine hohe Verarbeitungsgeschwindigkeit zu gewährleisten.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zur Durchführung einer abgesicherten Startsequenz einer Recheneinheit sowie eine Recheneinheit zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen.
-
Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Die Erfindung bedient sich der Maßnahme, mit Start der Recheneinheit ein Sicherheitsmodul und eine Speicherschutzeinheit zu starten und einen Schreibschutz und/oder einen Leseschutz und/oder einen Ausführungsschutz für einen Lade-Speicherbereich eines Speichers, in dem ein Ladeprogramm gespeichert ist, zu aktivieren. Anschließend wird die Integrität des Lade-Speicherbereichs durch das Sicherheitsmodul geprüft und, wenn die Integrität des Lade-Speicherbereichs bestätigt wird, wird die Speicherschutzeinheit durch das Sicherheitsmodul konfiguriert, den Leseschutz und/oder den Ausführungsschutz für den Lade-Speicherbereich zu deaktivieren, und es wird die Ausführung des Ladeprogramms in einem Host gestartet. Dadurch, dass die Schutzfunktionen während der Integritätsprüfung aktiviert sind, wird die Lücke für Angriffe, die dadurch entsteht, dass der Zeitpunkt des Starts des Ladeprogramms unterschiedlich vom Zeitpunkt der Integritätsprüfung des Lade-Speicherbereichs ist, geschlossen bzw. zumindest verkleinert.
-
Der Host, der wenigstens eine Speicher, das Sicherheitsmodul und die Speicherschutzeinheit sind in der Recheneinheit umfasst. Der Host weist einen Hostprozessor auf. Die Speicherschutzeinheit ist durch das Sicherheitsmodul konfigurierbar und ist dazu eingerichtet, für wenigstens einen konfigurierbaren Bereich des wenigstens einen Speichers entsprechend einer jeweiligen Konfiguration wahlweise den Schreibschutz und/oder den Leseschutz und/oder den Ausführungsschutz für Zugriffe durch den Host zu implementieren. Da die Speicherschutzeinheit durch das Sicherheitsmodul konfigurierbar ist, ist es möglich, den Speicherschutz dynamisch für verschiedene Speicherbereiche, in denen sich zu jeweiligen Zeitpunkt zu validierende Daten befinden, zu aktivieren. Bevorzugt ist die Speicherschutzeinheit nicht durch den Host konfigurierbar. Dies ist vorteilhaft, da so verhindert wird, dass ein manipuliertes, bereits ausgeführtes Computerprogramm die Schutzfunktionen umgeht, z.B. um ein weiteres manipuliertes Computerprogramm zur Ausführung zu bringen.
-
„Leseschutz“ heißt, dass die in dem Speicherbereich gespeicherten Daten vom Host nicht gelesen werden können. „Schreibschutz“ heißt, dass der Host keine neuen Daten in den Speicherbereich schreiben kann bzw. die Daten im Speicherbereich nicht ändern kann. „Ausführungsschutz“ heißt, dass, wenn die Daten im Speicherbereich ein Computerprogramm sind, der Host dieses Computerprogramm nicht ausführen kann. In der vorliegenden Anmeldung ist der Ausführungsschutz typischerweise mit einem Leseschutz verbunden. Ein Ausführungsschutz ohne Leseschutz hieße, dass die Daten vom Host nicht als Maschinenbefehle (opcode) interpretiert werden, dass also die Speicherschutzeinheit verhindert, dass die Daten in eine Befehlsdekodiereinheit des Hostprozessors geladen werden. Ein Lesen an sich, d.h. Laden in generische Datenregister des Hostprozessors (d.h. außerhalb der Befehlsdekodiereinheit), wäre in diesem Fall möglich.
-
Das Sicherheitsmodul ist insbesondere ein Hardware-Sicherheits-Modul (HSM), d.h. im Wesentlichen durch Hardwareelemente implementiert (also nicht als im Host ausgeführtes Softwaremodul). Das Sicherheitsmodul stellt kryptographische Funktionen bereit, die von dem Host genutzt werden können, um sicherheitskritische Funktionen abzusichern, etwa die Kommunikation mehrerer Steuergeräte untereinander oder die (Integritäts-)Prüfung, ob Programmcode manipuliert wurde. Dazu verwaltet das Sicherheitsmodul insbesondere geheime Passwörter (Kennwörter) und/oder kryptographische Schlüssel und implementiert kryptographische Verfahren bevorzugt in Hardware. Diese Schlüssel werden vom Sicherheitsmodul in einem dafür vorgesehenen Bereich des Hostspeichers gespeichert und/oder in einem Sicherheitsmodul-Speicher gespeichert, d.h. einem eigenen Speicher des Sicherheitsmoduls. Das Sicherheitsmodul umfasst einen Prozessor (der vom Hostprozessor verschieden ist) und kann vom Host gesondert ausgeführt sein oder mit dem Host bzw. Hostprozessor und dem Speicher in einem Chip integriert sein (Sicherheitsmodul und Host sind dann sozusagen durch verschiedene Prozessorkerne auf dem Chip gebildet bzw. abgebildet). Das Sicherheitsmodul ist dazu eingerichtet, die Integrität von Speicherbereichen zu prüfen.
-
Bei der Integritätsprüfung wird insbesondere eine Funktion, d.h. eine Prüfwertfunktion bzw. kryptographische Hashfunktion, auf die Daten im zu prüfenden Speicherbereich angewendet und der erhaltene aktuelle Prüfiniert mit einem Referenz-Prüfiniert verglichen. Sind diese gleich, wird davon ausgegangen (im Sinne der Integritätsprüfung bzw. der Hashfunktion), dass die Daten unverändert sind, die Integrität wird also bestätigt. Sind diese nicht gleich, wird davon ausgegangen, dass die Daten verändert sind bzw. manipuliert wurden, die Integrität wird also nicht bestätigt. Referenz-Prüfwerte können z.B. in einem nichtflüchtigen Sicherheitsmodul-Speicher gespeichert sein. Referenz-Prüfwerte können vom Sicherheitsmodul verwaltet bzw. gespeichert werden. Geeignete Hashfunktionen sind z.B. Hashfunktionen gemäß SHA-1 oder SHA-2, d.h. SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256, die etwa aus dem Dokument FIPS PUB 180-4 (http://dx.doi.org/10.6028/NIST.FIPS.180-4) des NIST (National Institute of Standards and Technology) oder auch aus RFC 6234 bekannt sind. Die Länge der Hashwerte ist bei SHA-1 160 Bit, bei Hashfunktionen der SHA-2-Familie 224, 256, 384 bzw. 512 Bit. Ebenso ist auch die Verwendung von MD5 (Message-Digest Algorithm 5, RFC1321), Länge 128 Bit, oder SHA-3 (FIPS PUB 202, http://dx.doi.org/10.6028/NIST.FIPS.202), Länge je nach Version 224, 256, 384, 512 Bit oder beliebig, möglich.
-
Es können auch Nachrichtenauthentifizierungscodes (MAC: Message Authentication Code) zur Integritätsprüfung genutzt werden. Etwa HMAC (hash-based message authentication code; Hash-basierter Nachrichtenauthentifizierungscode) entsprechend RFC2104 bzw. FIPS PUB 198 (http://csrc.nist.gov/publications/fips/fips 198-1/FI PS-198-1_final. pdf). HMAC umfasst das mehrmalige Anwenden einer Hashfunktion, insbesondere eine der vorstehend genannten kryptographischen Hashfunktionen. Allgemeiner kann auch ein anderer Nachrichtenauthentifizierungscode (MAC) verwendet werden, in dessen Abbildung ein Schlüssel (z.B. vom Sicherheitsmodul gespeichert) und eine Nachricht (Daten im Speicherbereich) eingehen. Die HMAC-Abbildung bzw. die MAC-Abbildung eines Schlüssels und einer Nachricht auf einen Authentifizierungscode (Prüfwert) stellen entsprechend Prüfwertfunktionen dar. Weitere Beispiele für Nachrichtenauthentifizierungscodes neben HMAC sind CMAC (Cipher-Based Message Authentication Code), GMAC (Galois Message Authentication Code) oder SipHash.
-
Bevorzugt werden mit Start der Recheneinheit der Schreibschutz und/oder der Leseschutz und/oder der Ausführungsschutz für einen Systemkern-Speicherbereich des Speichers, in dem ein Systemkernprogramm gespeichert ist, aktiviert, wobei durch das Ladeprogramm eine Prüfung der Integrität des einen Systemkern-Speicherbereichs durch das Sicherheitsmodul veranlasst wird und wobei, wenn die Integrität des Systemkern-Speicherbereichs bestätigt wird, die Speicherschutzeinheit durch das Sicherheitsmodul konfiguriert wird, den Leseschutz und/oder den Ausführungsschutz für den Systemkern-Speicherbereich zu deaktivieren, und die Ausführung des Systemkernprogramms im Host gestartet wird (wenn die Integrität des Systemkern-Speicherbereichs bestätigt wird).
-
Das Systemkernprogramm (z.B. ein Betriebssystem) ist ein Computerprogramm, das grundlegende Funktionen implementiert, die die Verwaltung und Ausführung von Anwendungsprogrammen betreffen. Beispiele für solche Funktionen sind: den Start und das Beenden von Anwendungsprogrammen zu veranlassen, den Anwendungsprogrammen Hardwareressourcen (Rechenzeit, Speicherplatz in einem flüchtigen Speicher, ...) zuzuteilen, oder Schnittstellen zu Kommunikation mit externen Geräten (andere Recheneinheiten, Sensoren, gesteuerte Komponenten) zu implementieren. Weitergehend, insbesondere für den Fall, dass lediglich ein Anwendungsprogramm vorgesehen ist, kann das Systemkernprogramm selbst ein Anwendungsprogramm sein bzw. ein Anwendungsprogramm einschließen.
-
Bevorzugt werden mit Start der Recheneinheit der Schreibschutz und/oder der Leseschutz und/oder der Ausführungsschutz für wenigstens einen Anwendungs-Speicherbereich des Speichers, in dem wenigstens ein Anwendungsprogramm gespeichert ist, aktiviert, wobei durch das Ladeprogramm oder gegebenenfalls das Systemkernprogramm eine Prüfung der Integrität des wenigstens einen Anwendungs-Speicherbereichs durch das Sicherheitsmodul veranlasst wird, und wobei, wenn die Integrität des wenigstens einen Anwendungs-Speicherbereichs bestätigt wird, die Speicherschutzeinheit durch das Sicherheitsmodul konfiguriert wird, den Leseschutz und/oder den Ausführungsschutz für den wenigstens einen Anwendungs-Speicherbereich zu deaktivieren, und die Ausführung des wenigstens einen Anwendungsprogramms im Host gestartet wird (wenn die Integrität des Anwendungs-Speicherbereichs bestätigt wird).
-
Anwendungsprogramme sind Computerprogramme, die die eigentliche Funktionalität der Recheneinheit implementieren. Im Falle eines Steuergeräts sind dies z.B. Steuerungsfunktionen, wobei Anwendungsprogramme Daten von Sensoren oder gesteuerten Komponenten empfangen und/oder Steuersignale für gesteuerte Komponenten erzeugen. Es kann lediglich ein Anwendungsprogramm vorhanden sein oder es können mehrere Anwendungsprogramme vorhanden sein. Im Falle mehrerer Anwendungsprogramme können die vorstehend genannten Schritte für jedes einzelne der Anwendungsprogramme durchgeführt werden. Vorzugsweise werden die Integritätsprüfung und der Start on Anwendungsprogrammen durch das Systemkernprogramm veranlasst. Es kann prinzipiell auch vorgesehen sein, dass die Integritätsprüfung und der Start von Anwendungsprogrammen durch das Ladeprogramm veranlasst wird, insbesondere, wenn lediglich ein einzelnes Anwendungsprogramm vorgesehen ist.
-
Bevorzugt ist die Speicherschutzeinheit dazu eingerichtet, bei Start eine Standardkonfiguration zu implementieren, in welcher der Schreibschutz und/oder der Leseschutz und/oder der Ausführungsschutz für den Lade-Speicherbereich aktiviert sind. Alternativ, ebenso bevorzugt, wird bei Start des Sicherheitsmoduls die Speicherschutzeinheit durch das Sicherheitsmodul konfiguriert, den Schreibschutz und/oder den Leseschutz und/oder den Ausführungsschutz für den Lade-Speicherbereich zu aktivieren. Vorzugsweise sind in der Standardkonfiguration weiterhin der Schreibschutz und/oder der Leseschutz und/oder der Ausführungsschutz für den Systemkern-Speicherbereich aktiviert. Alternativ, ebenso vorzugsweise, wird bei Start des Sicherheitsmoduls, die Speicherschutzeinheit durch das Sicherheitsmodul konfiguriert, den Schreibschutz und/oder den Leseschutz und/oder den Ausführungsschutz für den Systemkern-Speicherbereich zu aktivieren. Vorzugsweise sind in der Standardkonfiguration weiterhin der Schreibschutz und/oder der Leseschutz und/oder der Ausführungsschutz für den wenigstens einen Anwendungs-Speicherbereich aktiviert. Alternativ, ebenso vorzugsweise, wird bei Start des Sicherheitsmoduls, die Speicherschutzeinheit durch das Sicherheitsmodul konfiguriert, den Schreibschutz und/oder den Leseschutz und/oder den Ausführungsschutz für den wenigstens einen Anwendungs-Speicherbereich zu aktivieren.
-
Diese Ausgestaltungen betreffen Möglichkeiten, die anfängliche Aktivierung der Schutzfunktionen für die jeweiligen Speicherbereiche (Lade-Speicherbereich, Systemkern-Speicherbereich, Anwendungs-Speicherbereich) effektiv zu implementieren. Insbesondere so, dass keine zwischenzeitlichen Zeiträume vor Integritätsprüfung des jeweiligen Speicherbereichs auftreten, in denen die Schutzfunktionen nicht aktiviert sind.
-
Bevorzugt konfiguriert, wenn die Integrität des Lade-Speicherbereichs nicht bestätigt wird, das Sicherheitsmodul die Speicherschutzeinheit nicht, den Leseschutz und/oder den Ausführungsschutz für den Lade-Speicherbereich zu deaktivieren, und weiter bevorzugt wird eine Fehlermeldung erzeugt und/oder gespeichert. Bevorzugt konfiguriert, wenn die Integrität des Systemkern-Speicherbereichs nicht bestätigt wird, das Sicherheitsmodul die Speicherschutzeinheit nicht, den Leseschutz und/oder den Ausführungsschutz für den Systemkern-Speicherbereich zu deaktivieren, und weiter bevorzugt wird eine Fehlermeldung erzeugt und/oder gespeichert. Bevorzugt konfiguriert, wenn die Integrität des wenigstens einen Anwendungs-Speicherbereichs nicht bestätigt wird, das Sicherheitsmodul die Speicherschutzeinheit nicht, den Leseschutz und/oder den Ausführungsschutz für den wenigstens einen Anwendungs-Speicherbereich zu deaktivieren, und weiter bevorzugt wird eine Fehlermeldung erzeugt und/oder gespeichert.
-
Diese Ausgestaltungen, die den Fall betreffen, dass die Integrität eines der Speicherbereich nicht bestätigt wird, sind vorteilhaft, da so die Ausführung der jeweiligen Computerprogramme durch den Host effektiv verhindert werden kann. Die Fehlermeldung ermöglicht es die potentielle Manipulation zu erkennen und dient der Fehleranalyse, z.B. welches Computerprogramm betroffen ist.
-
Bevorzugt wird, wenn eine Anfrage von einer Programmiereinheit zur Neuprogrammierung des Ladeprogramms und/oder des Systemkernprogramms und/oder des wenigstens einen Anwendungsprogramms empfangen wird, durch das Sicherheitsmodul die Authentizität der Programmiereinheit geprüft und, wenn die Authentizität bestätigt wird, konfiguriert das Sicherheitsmodul die Speicherschutzeinheit, den Schreibschutz für den Lade-Speicherbereich und/oder den Systemkern-Speicherbereich und/oder den wenigstens einen Anwendungs-Speicherbereich zu deaktivieren. Durch diese Ausgestaltung wird eine Aktualisierung der Computerprogramme ermöglicht.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs oder einer anderen Maschine, weist einen Host mit einem Hostprozessor einen Speicher, ein Sicherheitsmodul und eine durch das Sicherheitsmodul konfigurierbare Speicherschutzeinheit auf, die dazu eingerichtet ist, für wenigstens einen konfigurierbaren Bereich des wenigstens einen Speichers entsprechend einer jeweiligen Konfiguration wahlweise eines oder mehreres von einem Schreibschutz, einem Leseschutz und einem Ausführungsschutz zu implementieren. Die Recheneinheit ist dazu eingerichtet, alle Verfahrensschritte eines erfindungsgemäßen durchzuführen.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
- 1 zeigt beispielhaft eine Recheneinheit, in der das Verfahren zur Durchführung einer abgesicherten Startsequenz implementiert werden kann.
- 2 illustriert den Ablauf des Verfahrens zur Durchführung einer abgesicherten Startsequenz einer Recheneinheit gemäß einer bevorzugten Ausführungsform.
-
Ausführungsform(en) der Erfindung
-
1 zeigt beispielhaft eine Recheneinheit 2, in der das Verfahren zur Validierung von Daten implementiert werden kann. Die Recheneinheit 2, z.B. ein Steuergerät eines Kraftfahrzeugs oder einer anderen Maschine, umfasst einen Host 4, ein Sicherheitsmodul 6, eine Speicherschutzeinheit 8, einen nichtflüchtigen Speicher 10 und optional einen flüchtigen Speicher 11.
-
Der Host 4 umfasst einen Hostprozessor 12 mit einem oder mehreren Prozessorkernen und optional einen flüchtigen Arbeitsspeicher 14 (RAM: Random Access Memory). Neben den gezeigten Elementen kann der Host selbstverständlich noch weitere Elemente umfassen, insbesondere Schnittstellen zur Datenkommunikation mit anderen Elementen der Recheneinheit und/oder Elementen außerhalb der Recheneinheit (etwa Sensoren oder gesteuerte Komponenten eines von der Recheneinheit gesteuerten Kraftfahrzeugs oder einer von der Recheneinheit gesteuerten Maschine). Der Host implementiert, durch Ausführen entsprechender Computerprogramme (Anwendungsprogramme), die eigentlichen Funktionalitäten der Recheneinheit 2, z.B. die Steuerungsfunktionalität im Falle eines Steuergeräts.
-
Im nichtflüchtigen Speicher 10 (z.B. ein Flashspeicher) können Computerprogramme und für die Ausführung benötigte Daten gespeichert sein bzw. werden. Der optionale flüchtige Speicher 11 (z.B. RAM-Speicher) kann vorgesehen sein, um einen Datenaustausch zwischen Host und Sicherheitsmodul zu ermöglichen, ist also ein gemeinsam genutzter flüchtiger Speicher. Der Host 4 ist, wie durch eine Linie angedeutet, zur Datenkommunikation mit dem nichtflüchtigen Speicher 10 und gegebenenfalls dem flüchtigen Speicher 11 verbunden. Der Speicher 10 und gegebenenfalls der flüchtige Speicher 11 kann als Hostspeicher angesehen werden, auf den der Host abhängig von durch die Speicherschutzeinheit 8 implementierten Schutzfunktionen (siehe weiter unten) zugreifen kann. Die Verbindungen zur Datenkommunikation und auch zum Sicherheitsmodul sind hier im Einzelnen nicht explizit dargestellt, sondern nur allgemein durch Linien angedeutet. Die Verbindungen können z.B. mittels eines Busses und/oder Punkt-zu-Punkt-Verbindungen realisiert sein.
-
Das Sicherheitsmodul 6, insbesondere ein Hardware-Sicherheits-Modul (HSM), dient als Vertrauensanker der Recheneinheit 2. Das Sicherheitsmodul 6 umfasst beispielhaft einen oder mehrere Prozessorkerne 22, einen flüchtigen Sicherheitsmodul-Speicher 22 (z.B. RAM-Speicher) und einen nichtflüchtigen Sicherheitsmodul-Speicher 24. Im nichtflüchtigen Sicherheitsmodul-Speicher 24 können kryptographische Daten, z.B. kryptographische Schlüssel bzw. Kennworte, gespeichert sein. Auch können dort Computerprogramme gespeichert sein, die Sicherheitsmodul-Funktionalitäten implementieren. Statt oder zusätzlich zum nichtflüchtigen Sicherheitsmodul-Speicher 24 kann auch ein geschützter Speicherbereich (d.h. ein Speicherbereich auf den der Host nicht zugreifen kann) im nichtflüchtigen Speicher 10 vorgesehen sein, in dem kryptographische Daten bzw. Computerprogramme des Sicherheitsmoduls gespeichert sein können. Im Prinzip ist es auch möglich, dass der eine oder die mehreren Prozessorkerne 22 die Sicherheitsmodul-Funktionalitäten ohne Ausführung von Computerprogrammen (Software) implementieren, z.B. als Zustandsmaschine. Außerdem kann das Sicherheitsmodul 6 weitere Hardwareelemente 26 umfassen (nur eines beispielhaft dargestellt), die spezifische sicherheitsrelevante oder kryptographische Funktionalitäten implementieren, z.B. Fehlerkorrekturverfahren (ECC: Error Correcting Code), Zufallszahlengeneratoren (RNG: Random Number Generator), Hashverfahren, asymmetrische kryptographische Verfahren (etwa RSA: Rivest-Shamir-Adleman) oder symmetrische kryptographische Verfahren (etwa AES: Advanced Encryption Standard). Weiter sind Schnittstellen zur Datenkommunikation mit dem Host 4, dem nichtflüchtigen Speicher 10, gegebenenfalls dem flüchtigen Speicher 11 und der Speicherschutzeinheit 8 vorgesehen (im Einzelnen nicht dargestellt).
-
Die Speicherschutzeinheit 8 ist konfigurierbar, z.B. mittels Konfigurationsregistern 28. Von der Speicherschutzeinheit 8 implementierte Speicherschutzfunktionen sind also nicht statisch sondern dynamisch. Die Recheneinheit 2 ist so eingerichtet, dass die Konfiguration der Speicherschutzeinheit 8 nur durch das Sicherheitsmodul 6 erfolgen kann, z.B. durch Schreiben einer Konfiguration in die Konfigurationsregister 28. Der Host 2 kann die Speicherschutzeinheit 8 nicht konfigurieren bzw. allgemeiner nicht auf Funktionalitäten der Speicherschutzeinheit 8 zugreifen. Es kann vorgesehen sein, dass die Speicherschutzeinheit 8 bei Start bzw. Initialisierung eine Standardkonfiguration einnimmt, d.h. dass bei Start Speicherschutzfunktionen entsprechend einer vorbestimmten Standardkonfiguration implementiert werden. Da die Konfigurationsregister typischerweise flüchtige Speicherzellen sind, wird dadurch verhindert, dass nach einem Neustart ein unbestimmter Speicherschutz besteht.
-
Ein Speicherschutz kann für spezifizierte (konfigurierbare) Speicherbereiche gesetzt werden, z. B. Speicherbereiche, die sich von einer Anfangsadresse bis zu einer Endadresse erstrecken. Mögliche Schutzfunktionen sind: Leseschutz (r), Schreibschutz (w) und Ausführungsschutz (x). Ein entsprechender Eintrag in den Konfigurationsregistern 28 könnte etwa wie folgt aussehen: (Anfangsadresse, Endadresse, r, w, x), wobei Anfangsadresse und Endadresse den Speicherbereich anzeigen und r, w, x Bits sind, die anzeigen, ob der entsprechende Zugriff erlaubt ist oder nicht. Versucht der Host 4 auf den nichtflüchtigen Speicher 10 (oder gegebenenfalls den flüchtigen Speicher 11) zuzugreifen, wird von der Speicherschutzeinheit 8 geprüft, ob der entsprechende Zugriff erlaubt ist (z.B. anhand der Konfigurationsregister 28). Wenn der Zugriff nicht erlaubt ist, wird der Zugriff unterbunden, insbesondere von der Speicherschutzeinheit 8. Weiterhin kann ein Fehler (Ausnahmefehler, Exception) angezeigt werden und eine entsprechende Fehlerbehandlungsroutine, etwa im Sicherheitsmodul, aufgerufen werden. In der vorbestimmten Standardkonfiguration sind zweckmäßigerweise Leseschutz und/oder Schreibschutz und/oder Ausführungsschutz für alle Speicherbereiche oder für bestimmte Speicherbereiche aktiviert.
-
Das Sicherheitsmodul 6 kann unabhängig vom Speicherschutz auf den nichtflüchtigen Speicher 10 (und gegebenenfalls den flüchtigen Speicher 11) zugreifen. Der Speicherschutz betrifft also nur Zugriffe des Hosts auf den nichtflüchtigen Speicher 10 (und gegebenenfalls den flüchtigen Speicher 11), d.h. der Leseschutz, der Schreibschutz bzw. der Ausführungsschutz werden für den Host implementiert.
-
2 illustriert den Ablauf des Verfahrens zur Durchführung einer abgesicherten Startsequenz einer Recheneinheit gemäß einer bevorzugten Ausführungsform. Die Figur ist in vier Spalten geteilt, wobei jede Spalte jeweils ein Element der Recheneinheit betrifft und in diesem Element durchgeführte Verfahrensschritte bzw. den jeweiligen Zustand des Elements anzeigt. Im Einzelnen sind eine Spalte 40 für den Host, eine Spalte 50 für das Sicherheitsmodul, eine Spalte 60 für die Speicherschutzeinheit und eine Spalte 70 für den nichtflüchtigen Speicher vorgesehen.
-
In der Spalte 70 für den nichtflüchtigen Speicher sind jeweils drei Speicherbereiche des Speichers dargestellt (im Allgemeinen kann der Speicher selbstverständlich noch weitere als die dargestellten drei Speicherbereiche aufweisen, es ist also ein Teil des Speichers dargestellt). Dargestellt sind ein Lade-Speicherbereich 72, ein Systemkern-Speicherbereich 74 und ein Anwendungs-Speicherbereich 76. Es ist jeweils angedeutet, ob oder ob nicht Speicherschutzfunktionen für die einzelnen Speicherbereiche aktiviert sind, wobei ein Speicherbereich mit Schraffur ein Speicherbereich mit aktivierten Speicherschutzfunktionen ist und ein Speicherbereich ohne Schraffur ein Speicherbereich mit (zumindest teilweise) deaktivierten Speicherschutzfunktionen ist. Im Lade-Speicherbereich 72 ist ein Ladeprogramm, im Systemkern-Speicherbereich 74 ist ein Systemkernprogramm und im Anwendungs-Speicherbereich 76 ist ein Anwendungsprogramm gespeichert.
-
Mit Start der Recheneinheit wird in Schritt 100 das Sicherheitsmodul gestartet und ebenso wird in Schritt 105 die Speicherschutzeinheit gestartet. Weiter wird der Host gestartet, ohne dass dieser zunächst ein Computerprogramm ausführt (nicht dargestellt). Mit Start der Recheneinheit werden Speicherschutzfunktionen für die drei dargestellten Speicherbereiche aktiviert, dies sind der Lese- und/oder der Schreib- und/oder der Ausführungsschutz. Hierzu kann die Speicherschutzeinheit eingerichtet sein, mit Start diese Speicherschutzfunktionen automatisch zu implementieren, insbesondere mittels einer entsprechenden vorbestimmten Standardkonfiguration, die bei Start automatisch implementiert wird. Alternativ oder zusätzlich kann das Sicherheitsmodul eingerichtet sein, mit Start die Speicherschutzeinheit so zu konfigurieren, dass der Lese- und/oder der Schreib- und/oder der Ausführungsschutz aktiviert werden.
-
In Schritt 110 führt das Sicherheitsmodul eine Integritätsprüfung des Lade-Speicherbereichs 72 durch. Wenn die Integrität des Lade-Speicherbereichs 72 nicht bestätigt wird, wenn also eine potentielle Manipulation erkannt wird, werden die Speicherschutzfunktionen bevorzugt beibehalten (nicht dargestellt). Weiterhin kann eine entsprechende Fehlermeldung erzeugt und/oder gespeichert werden (etwa im nichtflüchtigen Sicherheitsmodul-Speicher). Zusätzlich könnte hier die Recheneinheit ausgeschaltet werden.
-
Wenn die Integrität des Lade-Speicherbereichs 72 bestätigt wird, konfiguriert (durch einen Pfeil angedeutet) das Sicherheitsmodul in Schritt 120 die Speicherschutzeinheit, die Speicherschutzfunktionen für den Lade-Speicherbereich 72 zumindest teilweise aufzuheben (Schritt 125). Insbesondere wird die Speicherschutzeinheit konfiguriert, den Leseschutz und/oder den Ausführungsschutz für den Lade-Speicherbereichs 72 zu deaktivieren. Der Schreibschutz bleibt vorzugsweise aktiviert. In den beiden anderen Speicherbereichen 74, 76 bleiben die Speicherschutzfunktionen aktiviert.
-
In Schritt 130 wird mit der Ausführung des Ladeprogramms durch den Host begonnen. Es kann beispielsweise eine Nachricht vom Sicherheitsmodul an den Host gesendet werden, die anzeigt, dass die Ausführung möglich ist, bzw. den Start des Ladeprogramms veranlasst.
-
In Schritt 140 veranlasst der Host bzw. das in diesem ausgeführte Ladeprogramm das Sicherheitsmodul, die Integrität des Systemkern-Speicherbereichs 74 zu prüfen (etwa mittels einer entsprechenden Anfrage).
-
In Schritt 150 führt das Sicherheitsmodul eine Integritätsprüfung des Systemkern-Speicherbereichs 74 durch. Wenn die Integrität des Systemkern-Speicherbereichs 74 nicht bestätigt wird, werden die Speicherschutzfunktionen bevorzugt beibehalten (nicht dargestellt). Weiterhin kann eine entsprechende Fehlermeldung erzeugt und/oder gespeichert werden (etwa im nichtflüchtigen Sicherheitsmodul-Speicher). Zusätzlich könnte auch hier die Recheneinheit ausgeschaltet werden.
-
Wenn die Integrität des Systemkern-Speicherbereichs 74 bestätigt wird, konfiguriert das Sicherheitsmodul in Schritt 160 die Speicherschutzeinheit, die Speicherschutzfunktionen für den Systemkern-Speicherbereich 74 zumindest teilweise aufzuheben (Schritt 165). Insbesondere wird die Speicherschutzeinheit konfiguriert, den Leseschutz und/oder den Ausführungsschutz für den Systemkern-Speicherbereich 74 zu deaktivieren. Der Schreibschutz bleibt vorzugsweise aktiviert. Für den Anwendungs-Speicherbereich 76 bleiben die Speicherschutzfunktionen aktiviert.
-
In Schritt 170 wird mit der Ausführung des Systemkernprogramms durch den Host begonnen. Es kann beispielsweise eine Nachricht vom Sicherheitsmodul an den Host gesendet werden, die anzeigt, dass die Ausführung möglich ist, bzw. den Start des Systemkernprogramms veranlasst. Das Systemkernprogramm kann als Verwaltungsprogramm (z.B. Betriebssystem) angesehen werden, das die Ausführung einer oder mehrerer Anwendungsprogramme veranlasst. Das im Anwendungs-Speicherbereich 76 gespeicherte Anwendungsprogramm ist beispielsweise eines dieser (im Allgemeinen mehreren) Anwendungsprogramme.
-
In Schritt 180 veranlasst der Host bzw. das in diesem ausgeführte Systemkernprogramm das Sicherheitsmodul, die Integrität des Anwendungs-Speicherbereichs 76 zu prüfen (etwa mittels einer entsprechenden Anfrage).
-
In Schritt 190 führt das Sicherheitsmodul eine Integritätsprüfung des Anwendungs-Speicherbereichs 76 durch. Wenn die Integrität des Anwendungs-Speicherbereichs 76 nicht bestätigt wird, werden die Speicherschutzfunktionen bevorzugt beibehalten (nicht dargestellt). Weiterhin kann eine entsprechende Fehlermeldung erzeugt und/oder gespeichert werden (etwa im nichtflüchtigen Sicherheitsmodul-Speicher). Die Fehlermeldung kann insbesondere an den Host bzw. das Systemkernprogramm übermittelt werden, welches beispielsweis entsprechende Fehlerbehandlungsroutinen implementieren kann.
-
Wenn die Integrität des Anwendungs-Speicherbereichs 76 bestätigt wird, konfiguriert das Sicherheitsmodul in Schritt 200 die Speicherschutzeinheit, die Speicherschutzfunktionen für den Anwendungs-Speicherbereich 76 zumindest teilweise aufzuheben (Schritt 205). Insbesondere wird die Speicherschutzeinheit konfiguriert, den Leseschutz und/oder den Ausführungsschutz für den Anwendungs-Speicherbereich 76 zu deaktivieren. Der Schreibschutz bleibt vorzugsweise aktiviert. Falls weitere Anwendungs-Speicherbereiche für weitere Anwendungsprogramme vorhanden sind, bleiben die Speicherschutzfunktionen in diesen aktiviert.
-
In Schritt 210 wird mit der Ausführung des Anwendungsprogramms durch den Host begonnen. Es kann beispielsweise eine Nachricht vom Sicherheitsmodul an den Host gesendet werden, die anzeigt, dass die Ausführung möglich ist, bzw. den Start des Anwendungsprogramms veranlasst. Sind weitere Anwendungsprogramme vorhanden, die gestartet werden sollen, werden die Schritte 180 bis 210 entsprechend wiederholt, wobei die Integritätsprüfung und gegebenenfalls die Deaktivierung der Speicherschutzfunktionen statt für den dargestellten Anwendungs-Speicherbereich 76 für die Anwendungs-Speicherbereiche, in den die jeweiligen Anwendungsprogramme gespeichert sind, durchgeführt werden.