-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft allgemein Mikroprozessorsysteme und
insbesondere Mikroprozessorsysteme, die in einer vertrauenswürdigen
oder sicheren Umgebung arbeiten können.
-
Hintergrund der Erfindung
-
Die
wachsende Anzahl von Finanz- und privaten Transaktionen, die an
lokalen oder entfernten Mikrocomputern ausgeführt werden,
hat der Schaffung von „vertrauenswürdigen" oder „sicheren"
Mikroprozessor-Umgebungen Aufschwung verliehen. Das Problem, das
diese Umgebungen zu lösen versuchen, ist das des Verlusts
der Privatsphäre oder dass Daten korrumpiert oder missbraucht
werden. Nutzer wollen nicht, dass ihre privaten Daten veröffentlicht
werden. Auch wollen sie nicht, dass ihre Daten geändert
oder in unpassenden Transaktionen verwendet werden. Beispiele hierfür
sind unbeabsichtigte Freigabe von Krankenblättern oder
elektronischer Diebstahl von Geldern von einer Online-Bank oder
einem anderen Aufbewahrungsort. Ebenso wollen Content Provider digitale
Inhalte (im Allgemeinen zum Beispiel Musik-, andere Audio-, Video-
oder andere Arten von Daten) vor dem Kopieren ohne Genehmigung schützen.
-
Vorhandene
vertrauenswürdige Systeme können einen vollständigen
abgeschlossenen Satz von vertrauenswürdiger Software verwenden.
Dieses Verfahren ist zwar relativ einfach zu realisieren, hat aber
den Nachteil, dass eine gleichzeitige Verwendung von normaler, handelsüblicher
Betriebssystem- und Anwendungssoftware nicht möglich ist.
Dieser Nachteil begrenzt die Akzeptanz eines solchen vertrauenswürdigen
Systems.
-
Bei
anderen Lösungsansätzen müssen die Prozessoren
der Systeme über einen Bus miteinander verbunden werden.
-
Kurze Beschreibung der Zeichnungen
-
Die
vorliegende Erfindung wird in den Figuren der beigefügten
Zeichnungen beispielhaft und nicht beschränkend beschrieben,
und ähnliche Bezugssymbole bezeichnen ähnliche
Elemente.
-
1 ist
ein Diagramm einer beispielhaften Software-Umgebung, die in einem
Mikroprozessorsystem arbeitet.
-
2 ist
ein Diagramm bestimmter beispielhafter vertrauenswürdiger
oder sicherer Software-Module und einer beispielhaften Software-Umgebung
nach einer Ausführungsform der vorliegenden Erfindung.
-
3 ist
ein Diagramm einer beispielhaften vertrauenswürdigen oder
sicheren Software-Umgebung nach einer Ausführungsform der
vorliegenden Erfindung.
-
4 ist
ein Ablaufdiagramm mit Software- und anderen Prozessblöcken
nach einer Verfahrensausführungsform der vorliegenden Erfindung.
-
Detaillierte Beschreibung
-
Nachstehend
werden Verfahren zum Initiieren einer vertrauenswürdigen
oder sicheren Umgebung in einem Mikroprozessorsystem beschrieben. In
der nachstehenden Beschreibung werden zahlreiche spezielle Einzelheiten,
wie etwa Logik-Implementierungen, Softwaremodulzuweisung, Verschlüsselungsverfahren
und Bussignalisierungsverfahren, und Einzelheiten zum Betrieb beschrieben,
um ein besseres Verständnis der vorliegenden Erfindung
zu ermöglichen. Fachleuten dürfte jedoch klar
sein, dass die Erfindung auch ohne diese speziellen Einzelheiten
genutzt werden kann. In anderen Fällen sind Steuerstrukturen,
Gate-Level-Schaltkreise und komplette Software-Befehlsfolgen nicht
näher dargelegt worden, um das Verständnis der
Erfindung nicht zu erschweren. Fachleute dürften mit den
beigefügten Beschreibungen in der Lage sein, die entsprechende
Funktionalität ohne übermäßiges
Experimentieren zu realisieren. Die Erfindung wird in Form eines Mikroprozessorsystems
beschrieben. Die Erfindung kann jedoch auch in anderen Formen genutzt
werden, wie etwa in einem digitalen Signalprozessor, einem Minicomputer
oder einem Großrechner.
-
Kommen
wir nun zu 1. Hier ist ein Diagramm einer
beispielhaften Software-Umgebung gezeigt, die in einem Mikroprozessorsystem
arbeitet. Die in 1 gezeigte Software ist nicht
vertrauenswürdig. Beim Arbeiten auf einer hohen Privileg-Ebene
machen es die Größe und die ständige
Aktualisierung des Betriebssystems 150 sehr schwierig,
eine Vertrauensanalyse zeitnah durchzuführen. Ein großer
Teil des Betriebssystems sitzt im Privilegring null (0), der höchsten
Privileg-Ebene. Anwendungen 152, 154 und 156 haben
ein stark reduziertes Privileg und stehen normalerweise in dem Privilegring
drei (3). Das Vorhandensein verschiedener Privilegringe und die
Trennung des Betriebssystems 150 und der Anwendungen 152, 154 und 156 in
diese verschiedenen Privilegringe scheinen es aufgrund einer Entscheidung,
den von dem Betriebssystem 150 versorgten Einrichtungen
zu trauen, zu ermöglichen, dass die Software von 1 in
einem vertrauenswürdigen Modus arbeitet. In der Praxis
ist jedoch das Treffen einer solchen Vertrauensentscheidung oft
nicht realisierbar. Faktoren, die zu diesem Problem beitragen, sind
unter anderem die Größe (Anzahl von Code-Leitungen)
des Betriebssystems 150, der Umstand, dass das Betriebssystem 150 der
Empfänger von zahlreichen Updates (neue Code-Module und – Patches)
sein kann, und der Umstand, dass das Betriebssystem 150 auch
Code-Module, wie etwa Gerätetreiber, enthalten kann, die
von anderen Parteien als dem Entwickler des Betriebssystems geliefert werden.
Das Betriebssystem 150 kann ein häufiges Betriebssystem
wie Microsoft® Windows®,
Linux oder Solaris® sein oder es
kann ein anderes geeignetes bekanntes oder in anderer Weise erhältliches
Betriebssystem sein. Die speziellen Arten oder Bezeichnungen von
Anwendungen oder Betriebssystemen, die abgearbeitet werden oder
arbeiten, sind nicht entscheidend.
-
Kommen
wir nun zu 2. Hier ist ein Diagramm bestimmter
beispielhafter vertrauenswürdiger oder sicherer Software-Module
und einer beispielhaften Software-Umgebung 200 nach einer
Ausführungsform der vorliegenden Erfindung gezeigt. In
der Ausführungsform von 2 sind ein
Prozessor 202, ein Prozessor 212, ein Prozessor 222 und
optionale weitere Prozessoren (nicht dargestellt) als gesonderte
Hardware-Einheiten gezeigt. 2 zeigt
zwar drei Prozessoren, aber Ausführungsformen der Erfindung können
jede Anzahl von Prozessoren, unter anderem nur einen einzigen Prozessor,
haben.
-
Das
System 200 hat auch einen Chipsatz 240, der ein
Eingabe-/Ausgabe(E/A)-Steuergerät oder -Hub umfassen kann,
sowie ein anderes System oder eine andere Logik, wie nachstehend
dargelegt wird. Weitere Ausführungsformen können
andere Komponenten statt der oder zusätzlich zu den in 2 gezeigten
Komponenten enthalten, und die Anzahl von Prozessoren oder anderen
Komponenten kann verschieden sein, genauso wie ihre Anordnung zueinander.
-
Die
Prozessoren 202, 212 und 222 können einen
oder mehrere Ausführungskerne haben, wie etwa Kerne 203, 205, 213, 215, 223 und 225.
Bei einigen Ausführungsformen können die Prozessoren oder
Kerne durch einzelne Hardware-Ausführungsthreads ersetzt
werden, die auf einem oder mehreren physischen Prozessoren oder
Kernen laufen. Diese Threads besitzen viele der Attribute von weiteren physischen
Prozessoren. Um einen Oberbegriff für die Diskussion zu
haben, der ein Gemisch aus mehreren physischen Prozessoren und mehreren Threads
auf Prozessoren verwendet, kann der Ausdruck „logischer
Prozessor" verwendet werden, um entweder einen physischen Prozessor
oder einen Thread zu beschreiben, der in einem oder mehreren physischen
Prozessoren arbeitet. Daher kann ein Single-Thread-Prozessor als
logischer Prozessor angesehen werden, und Multi-Thread- oder Mehrkernprozessoren
können als mehrere logische Prozessoren angesehen werden.
-
Die
Prozessoren 202, 212 und 222 können auch
eine „Nicht-Kern"-Logik, wie etwa eine Nicht-Kern-Logik 201, 211 und 221,
haben, wobei „Nicht-Kern"-Logik eine Logik ist, die von
einem der Ausführungskerne getrennt ist. Eine Nicht-Kern-Logik
kann Register oder andere Speicherzellen umfassen, wie etwa Register 207, 217 und 227,
die zum Speichern von Informationen zu dem Prozessor verwendet werden
können, auf dem sie läuft. Diese Register oder
Speicherzellen können programmierbar oder hartkodiert sein,
und diese Informationen können die Anzahl von Kernen und/oder
logischen Prozessoren umfassen, die in dem entsprechenden Prozessor
enthalten sind. Die Register 207, 217 und 227 können
gemappte Register eines normalen Globalspeichers sein, die beim
Einschalt-Reset aktualisiert werden.
-
Die
Prozessoren 202, 212 und 222 können auch
bestimmte Spezialschaltkreise oder Logik-Elemente zum Unterstützen
von sicheren oder vertrauenswürdigen Operationen haben.
Zum Beispiel kann der Prozessor 202 eine Sichere-Eingabe-Logik (SENTER-Logik) 204 zum
Unterstützen der Ausführung von speziellen SENTER-Befehlen
haben, die vertrauenswürdige Operationen initiieren können. Der
Prozessor 202 kann auch eine Verbindungsnachrichtenlogik 206 zum
Unterstützen von speziellen Verbindungsnachrichten zwischen
Prozessoren und anderen Komponenten zur Unterstützung spezieller
SENTER-Operationen haben. Die Verwendung spezieller Verbindungsnachrichten
kann aus mehreren Gründen die Sicherheit oder Vertrauenswürdigkeit
des Systems erhöhen. Schaltkreiselemente, wie etwa die
Prozessoren 202, 212 und 222 oder der Chipsatz 204,
können diese Nachrichten nur ausgeben oder darauf antworten,
wenn sie die entsprechenden Logikelemente von Ausführungsformen
der vorliegenden Erfindung enthalten. Daher kann ein erfolgreicher
Austausch der speziellen Verbindungsnachrichten zur Gewährleistung
der richtigen Systemkonfiguration beitragen. Spezielle Verbindungsnachrichten
können auch Aktivitäten zulassen, die normalerweise
verboten sein dürften, wie etwa das Resetten eines Plattformkonfigurationsregisters 278. Die
Fähigkeit eines potentiell feindlichen nichtvertrauenswürdigen
Codes, bestimmte Verbindungstransaktionen auszuspionieren, kann
dadurch eingeschränkt werden, dass es ermöglicht
wird, dass spezielle Verbindungsnachrichten nur in Reaktion auf spezielle
Sicherheitsbefehle ausgegeben werden. Die SENTER-Logik 204,
die Verbindungsnachrichtenlogik 206 und jede andere Logik,
die in Ausführungsformen der Erfindung verwendet wird,
können unter Verwendung von bekannten Lösungen
implementiert werden, unter anderem Logikschaltungen, Mikrocodes
und Firmware.
-
Darüber
hinaus kann der Prozessor 202 einen sicheren Speicher 208 zum
Unterstützen von sicheren Initialisierungsoperationen haben.
Bei einer Ausführungsform kann der sichere Speicher 208 ein Primär-Cache
des Prozessors 202 sein, der möglicherweise in
einem speziellen Modus arbeitet. Bei alternativen Ausführungsformen
kann der sichere Speicher 208 ein spezieller Speicher sein.
Andere Prozessoren, wie etwa der Prozessor 212 und der Prozessor 222,
können auch eine SENTER-Logik 214, 224,
eine Busnachrichtenlogik 216, 226 und einen sicheren
Speicher 218, 228 haben.
-
Ein „Chipsatz"
kann als Gruppe von Schaltkreisen und Logiken definiert werden,
die Speicher- und/oder E/A-Operationen für einen oder mehrere angeschlossene
Prozessoren unterstützen. Einzelne Elemente eines Chipsatzes
können auf einem einzigen Chip oder einem Chip-Paar zusammengefasst werden
oder können auf mehrere Chips, unter anderem Prozessoren,
verteilt werden. Bei der Ausführungsform von 2 kann
der Chipsatz 240 einen Schaltkreis und eine Logik zum Unterstützen
von E/A-Operationen für die Prozessoren 202, 212 und 222 haben,
wobei jeder Prozessor einen Schaltkreis und eine Logik zum Unterstützen
von Speicher-Operationen hat. Alternativ kann der Chipsatz 240 auch einen
Schaltkreis und eine Logik zum Unterstützen von Speicher-Operationen
für die Prozessoren 202, 212 und 222 haben.
Die Funktionen des Chipsatzes 240 können bei alternativen
Ausführungsformen unter einer oder mehreren physischen
Vorrichtungen zugewiesen werden.
-
Der
Chipsatz 240 kann zusätzlich seine eigene Verbindungsnachrichtenlogik 242 zum
Unterstützen spezieller Verbindungsnachrichten in einem PTP-Netz 230 (PTP:
Point-to-Point) zur Unterstützung spezieller SENTER-Operationen
haben. Einige dieser speziellen Verbindungsnachrichten können das
Senden des Inhalts eines Schlüsselregisters 244 an
den Prozessor 202, 212 oder 222 beinhalten,
wodurch ein Prozessor einen speziellen „QUIESCE"-Indikator 246 (quiesce:
in den Ruhezustand setzen) setzen oder löschen kann, um
den Chipsatz 240 zu veranlassen, das System 200 in
den Ruhezustand zu versetzen oder aus dem Ruhezustand zu holen (wie nachstehend
beschrieben wird) oder wodurch ein spezielles „QUIESCED"-Flag 248 (quiesced:
im Ruhezustand) von einem Prozessor geprüft werden kann.
Eine weitere Funktion der Busnachrichtenlogik 242 kann
das Registrieren des Vorhandenseins oder der Beteiligung von Prozessoren
in/an dem System 200 in einem „EXISTS"-Register 270 sein.
-
Die
Prozessoren 202, 212 und 222 können miteinander,
mit dem Chipsatz 240 und mit anderen Komponenten oder Agenten über
das PTP-Interconnection-Netz 230 verbunden werden. Die
Prozessoren 202, 212 und 222 und der
Chipsatz 240 können Schnittstellen-Einheiten 209, 219, 229 bzw. 239 haben,
um eine Verbindung zu dem PTP-Netz 230 herzustellen und
Nachrichten an- und voneinander und an und von andere(n) Agenten
zu senden und zu empfangen, die in dem System 200 vorhanden
sind oder an diesem System beteiligt sind. Jede der Schnittstellen-Einheiten 209, 219, 229 und 239 kann eine
Anzahl von unidirektionalen und/oder bidirektionalen Ports für
die Kommunikation mit einer Anzahl von anderen Komponenten haben.
Die Kommunikation kann über das PTP-Netz 230 nach
einer mehrschichtigen Punkt-zu-Punkt-Verbindungsarchitektur erfolgen,
zum Beispiel wenn Pakete, die Signale enthalten, die Nachrichten
und/oder Daten darstellen, die mit einem oder allen der Elemente
Verbindungsschicht, Protokollschicht, Routing-Schicht, Transportschicht
und physische Schicht und mit einer anderen derartigen Schicht geframt
sind, von einem Agenten an einen anderen Agenten (Punkt-zu-Punkt,
direkt) gesendet werden. Daher kann jede der Schnittstellen-Einheiten 209, 219, 229 und 239 eine
Schaltung oder Logik zum Erzeugen von Signalen haben, die jeder
Schicht entsprechen. Die Pakete können auch redundante
oder andere Informationen zum Erkennen oder Korrigieren von Fehlern
enthalten.
-
Ein
Token 276, das ein oder mehrere Plattformkonfigurationsregister
(PCR) 278, 279 enthält, kann mit dem
Chipsatz 230 verbunden werden. Bei einer Ausführungsform
kann das Token 276 spezielle Sicherheitsmerkmale enthalten,
und es kann bei einer Ausführungsform das Vertrauenswürdige-Plattform-Modul
(TPM) 281 haben, das beschrieben ist in „Trusted
Compu ting Platform Alliance (TCPA) Main Specification" („Hauptspezifikation
der TCPA"), Version 1.1a, 01.12.2001, herausgegeben von der TCPA (erhältlich
bei www.trustedpc.com).
-
Zwei
Software-Komponenten, die in der System-Umgebung 200 identifiziert
werden, sind ein Modul eines Sichere-Virtuelle-Maschine-Monitor
(„Secure Virtual Machine Monitor”; SVMM) 282 und
ein Modul zur sicheren Initialisierung eines authentisierten Codes
(„Secure Initialization Authenticated Code"; SINIT-AC) 280.
Das Modul SVMM 282 kann auf einem Systemdatenträger
oder einem anderen Massenspeicher gespeichert werden und kann gegebenenfalls
zu/in andere(n) Speicherstellen verschoben oder kopiert werden.
Bei einer Ausführungsform kann der SVMM 282 vor
Beginn des sicheren Startprozesses zu/in eine(r) oder mehreren Speicherseiten
in dem System 200 verschoben oder kopiert werden. Nach
dem sicheren Eingabeprozess kann eine Virtuelle-Maschine-Umgebung
erzeugt werden, in der der SVMM 282 als der am stärksten
privilegierte Code in dem System arbeiten kann, und diese Umgebung
kann zum Zulassen oder Verwehren des direkten Zugriffs auf bestimmte
Systemressourcen durch das Betriebssystem oder Anwendungen in den
erzeugten virtuellen Maschinen verwendet werden.
-
Einige
der Aktionen, die für den sicheren Eingabeprozess erforderlich
sind, können über einfache Hardware-Implementierungen
hinausgehen und können stattdessen vorteilhaft ein Software-Modul
verwenden, dessen Abarbeitung absolut vertrauenswürdig
sein kann. Bei einer Ausführungsform können diese
Aktionen mit dem Sichere-Initialisierungs(SINIT)-Code ausgeführt
werden. Eine beispielhafte Aktion kann es erfordern, verschiedene
Steuergeräte, die entscheidende Teile der Systemkonfiguration
darstellen, zu prüfen, um zu gewährleisten, dass
die Konfiguration die richtige Instanziierung der sicheren Umgebung
unterstützt. Eine zweite beispielhafte Aktion kann es sein,
die Identität des Moduls SVMM 282 zu berechnen
und zu registrieren und ihm die Systemsteuerung zu übertragen.
Hier bedeutet „registrieren", einen Vertrauensmesswert
des SVMM 282 in einem Register oder einer anderen Speicherzelle, zum
Beispiel in dem PCR 278 oder in dem PCR 279, abzuspeichern.
Wenn diese zweite Aktion ausgeführt wird, kann die Vertrauenswürdigkeit
des SVMM 282 von einem potentiellen Nutzer des Systems
geprüft werden.
-
Der
SINIT-Code kann von dem Hersteller der Prozessoren oder der Chipsätze
erzeugt werden. Aus diesem Grund kann darauf vertraut werden, dass der
SINIT-Code den sicheren Start des Chipsatzes 240 unterstützt.
Um den SINIT-Code zu verteilen, besteht bei einer Ausführungsform
ein bekannter Verschlüsselungs-Hash aus dem vollständigen
SINIT-Code, wo durch ein Wert entsteht, der als Digest bekannt ist.
Bei einer Ausführungsform wird ein 160-Bit-Wert für
den Digest erzeugt. Der Digest kann dann mit einem privaten Schlüssel
verschlüsselt werden, der bei einer Ausführungsform
von dem Hersteller des Prozessors gehalten wird, um eine digitale
Signatur zu erzeugen. Wenn der SINIT-Code mit der entsprechenden
digitalen Signatur gebündelt wird, kann die Kombination
als authentisierter SINIT-Code (SINIT-AC) 280 bezeichnet
werden. Kopien des SINIT-AC 280 können später
validiert werden, wie nachstehend dargelegt wird.
-
Der
SINIT-Code 280 kann auf dem Systemdatenträger
oder in einem anderen Massenspeicher oder in einem Festmedium gespeichert
werden und kann gegebenenfalls zu/in anderen) Speicherstellen verschoben
oder kopiert werden. Bei einer Ausführungsform kann der
SI-NIT-AC 280 vor Beginn des sicheren Startprozesses zu/in
eine(r) oder mehrere(n) Speicherseiten des Systems 200 verschoben
oder kopiert werden, um eine speicherresidente Kopie des SINIT-AC
herzustellen.
-
Eine
privilegierte Software, die auf dem System 200 läuft,
wie etwa ein Betriebssystem, kann den sicheren Startprozess auf
einem Logikprozessor initiieren, der dann als initiierender Logikprozessor
(initiating logical processor; ILP) bezeichnet werden kann. In dem
vorliegenden Beispiel ist der Prozessor 202 der ILP, obwohl
jeder der Prozessoren in dem PTP-Netz 230 der ILP sein
könnte. Zu diesem Zeitpunkt kann weder die speicherresidente
Kopie des SI-NIT-AC 280 noch die speicherresidente Kopie
des SVMM 282 als vertrauenswürdig angesehen werden.
-
Der
ILP (der Prozessor 202) führt einen speziellen
Befehl aus, um den sicheren Startprozess zu initiieren. Dieser spezielle
Befehl kann als Sichere-Eingabe(SENTER)-Befehl bezeichnet werden
und kann von der SENTER-Logik 204 unterstützt
werden. Der SENTER-Befehl kann zunächst verifizieren, dass
jeder Logikprozessor in dem System 200 in dem Chipsatz 240 registriert
ist, zum Beispiel in dem EXISTS-Register 270. Jeder Prozessor
und andere Agent, der mit dem PTP-Netz 230 verbunden ist,
hat ein Register oder eine andere Speicherzelle, wie etwa die Register 207, 217 und 227,
um die Anzahl von Logikprozessoren anzugeben, die er hat. Diese Register
werden gelesen, um zu verifizieren, dass die Systemtopologie in
dem Chipsatz 240 exakt dargestellt ist.
-
Nach
dieser Verifikation schreibt der SENTER-Befehl an den QUIESCE-Indikator 246,
um den Chipsatz 240 zu veranlassen, das System 200 in
den Ruhezustand zu setzen. Der Chipsatz 240 beginnt eine
Handshake-Sequenz in dem PTP-Netz 230, um zu veranlassen,
dass alle Prozessoren und anderen Agenten in dem PTP-Netz 230 mit
Ausnahme eines Prozessors (des im Ruhezustand befindlichen Hauptprozessors)
in einen Ruhezustand gehen. Bei dieser Ausführungsform
ist der Prozessor 202 der Hauptprozessor im Ruhezustand
und gleichzeitig der ILP. Die Ruhezustandssequenz kann das Senden
eines „STOP_REQ"-Signals an jeden Nicht-Hauptprozessor
beinhalten, um sie veranlassen, ihre Ereignisverarbeitung zu beenden,
ihre Puffer zu leeren und ein „STOP_ACK"-Signal zurück
an den Chipsatz 240 zu senden, um ihr Eintreten in einen
Ruhezustand zu quittieren. Der Ruhezustand ist ein Zustand, in dem sie
keine Befehle ausführen und keine Transaktionen in dem
PTP-Netz 230 erzeugen. Nachdem der Chipsatz 240 ein
STOP ACK-Signal von jedem Agenten für jeden in dem Chipsatz 240 registrierten
Logikprozessor erhalten hat, kann das QUIESCED-Flag 248 gesetzt
werden.
-
Nachdem
das System in den Ruhezustand versetzt worden ist, kann/können
mit dem SENTER-Befehl das/die Sicherheitsmodul(e) abgearbeitet werden,
wie nachstehend beschrieben wird. Hierzu ist das PTP-Netz 230 noch
immer funktionsfähig, und der Prozessor im Ruhezustand
kann noch immer auf das TPM 281 zugreifen. Nachdem die
Abarbeitung des/der Sicherheitsmodul(e) beendet ist, kann der Prozessor
im Ruhezustand den QUIESCE-Indikator 246 löschen,
um den Chipsatz 240 zu veranlassen, das System 200 aus
dem Ruhezustand zu holen.
-
Um
das/die Sicherheitsmodul(e) abzuarbeiten, kann der ILP (der Prozessor 202)
zunächst eine Kopie des SINIT-AC 280 und des Schlüssels 284 in den
sicheren Speicher 208 verschieben, um den in dem SINIT-AC 280 enthaltenen
SINIT-Code zu authentisieren und anschließend abzuarbeiten.
Bei einer Ausführungsform kann dieser sichere Speicher 208 ein
Primär-Cache des ILP (des Prozessors 202) sein,
der möglicherweise in einem speziellen Modus arbeitet.
Der Schlüssel 284 stellt den öffentlichen Schlüssel
dar, der dem privaten Schlüssel entspricht, der zum Verschlüsseln
der in dem Modul SINIT-AC 280 enthaltenen digitalen Signatur
verwendet wird und zum Verifizieren der digitalen Signatur und somit zum
Authentisieren des SINIT-Codes dient. Bei einer Ausführungsform
kann der Schlüssel 284 bereits in dem Prozessor
gespeichert sein, möglicherweise als Teil der SENTER-Logik 204.
Bei einer anderen Ausführungsform kann der Schlüssel 284 in
einem Nur-Lese-Schlüsselregister 244 des Chipsatzes 240 gespeichert
werden, das von dem ILP gelesen wird. Bei einer weiteren Ausführungsform
kann entweder der Prozessor oder das Schlüsselregister 244 des Chipsatzes
einen Verschlüsselungs- Digest des Schlüssels 284 tatsächlich
halten, wobei der Schlüssel 284 selbst in dem
Modul SI-NIT-AC 280 enthalten ist. Bei dieser letzten Ausführungsform
liest der ILP den Digest aus dem Schlüsselregister 244,
berechnet einen äquivalenten Verschlüsselungs-Hash über den
in dem SINIT-AC 280 eingebetteten Schlüssel 284 und
vergleicht die beiden Digests, um zu gewährleisten, dass
der bereitgestellte Schlüssel 284 tatsächlich
vertrauenswürdig ist.
-
Eine
Kopie des SINIT-AC und eine Kopie eines öffentlichen Schlüssels
können dann in dem sicheren Speicher 208 vorliegen.
Der ILP kann nun die Kopie des SINIT-AC dadurch validieren, dass
er die in der Kopie des SINIT-AC enthaltene digitale Signatur unter
Verwendung der Kopie eines öffentlichen Schlüssels
entschlüsselt. Durch diese Entschlüsselung wird
eine Original-Kopie des Verschlüsselungs-Digests eines
Hashs erzeugt. Wenn ein neu berechneter Digest mit diesem Original-Digest übereinstimmt,
können die Kopie des SINIT-AC und der darin enthaltene
SINIT-Code als vertrauenswürdig angesehen werden.
-
Der
ILP kann nun die eindeutige Identität des Moduls SINIT-AC
dadurch registrieren, dass er den Verschlüsselungs-Digest-Wert
des Moduls SINIT-AC in ein Plattformkonfigurationsregister 272 in
dem Sicherheits-Token 276 schreibt, wie nachstehend dargelegt
wird. Die Ausführung des SENTER-Befehls durch den ILP kann
nun dadurch beendet werden, dass die Ausführungssteuerung
auf die in dem sicheren Speicher 208 des ILP gehaltene
vertrauenswürdige Kopie des SINIT-Codes übertragen
wird. Der vertrauenswürdige SINIT-Code kann dann seine Systemprüfung
und Konfigurationsaktionen durchführen und kann die speicherresidente
Kopie des SVMM entsprechend der vorstehenden Definition von „registrieren"
registrieren.
-
Die
Registrierung der speicherresidenten Kopie des SVMM kann auf verschiedene
Weise erfolgen. Bei einer Ausführungsform schreibt der
SENTER-Befehl, der in dem ILP ausgeführt wird, den berechneten
Digest des SINIT-AC in das PCR 278 in dem Sicherheits-Token 276.
Anschließend kann der vertrauenswürdige SINIT-Code
den berechneten Digest des Speicherresidenten SVMM in dieses PCR 278 oder
ein anderes PCR 279 in dem Sicherheits-Token 276 schreiben.
Wenn der SVMM-Digest in dieses PCR 278 geschrieben wird,
hasht das Sicherheits-Token 276 den Original-Inhalt (SINIT-Digest)
mit dem neuen Wert (SVMM-Digest) und schreibt das Ergebnis in das
PCR 278 zurück. Bei Ausführungsformen,
bei denen das erste (initiierende) Schreiben in das PCR 278 auf
den SENTER-Befehl beschränkt wird, kann der resultierende
Digest als Wurzel des Vertrauens für das System verwendet werden.
-
Wenn
der vertrauenswürdige SINIT-Code seine Abarbeitung beendet
hat und die Identität des SVMM in einem PCR registriert
hat, kann der SINIT-Code die ILP-Abarbeitungssteuerung auf den SVMM übertragen.
Bei einer typischen Ausführungsform können die
ersten SVMM-Befehle, die von dem ILP ausgeführt werden,
eine Selbstinitialisierungsroutine für dem SVMM darstellen.
Das System 200 kann dann unter der Überwachung
der Kopie des SVMM, der gerade abgearbeitet wird, in einem vertrauenswürdigen
Modus betrieben werden, wie nachstehend bei der Diskussion von 3 dargelegt
wird. Von diesem Punkt an arbeitet das gesamte System in einem vertrauenswürdigen
Modus, wie nachstehend bei der Diskussion von 3 dargelegt
wird.
-
Kommen
wir nun zu 3. Hier ist ein Diagramm einer
beispielhaften vertrauenswürdigen oder sicheren Software-Umgebung
nach einer Ausführungsform der vorliegenden Erfindung gezeigt.
In der Ausführungsform von 3 können
vertrauenswürdige und nichtvertrauenswürdige Software
gleichzeitig geladen werden und können gleichzeitig auf
einem einzigen Computersystem laufen. Ein SVMM 350 lässt
den direkten Zugriff auf Hardware-Ressourcen 380 von einem
oder mehreren nicht-vertrauenswürdigen Betriebssystemen 340 und
von nicht-vertrauenswürdigen Anwendungen 310 bis 330 aus
zu oder verhindert ihn selektiv. In diesem Zusammenhang bedeutet „nicht-vertrauenswürdig"
nicht unbedingt, dass sich das Betriebssystem oder Anwendungen absichtlich
falsch verhalten, sondern dass es die Größe und
die Vielfalt von interagierenden Codes unmöglich machen,
zuverlässig zu behaupten, dass sich die Software gerade
wie gewünscht verhält und dass es keine Viren
oder anderen fremden Codes gibt, die ihre Abarbeitung stören.
Bei einer typischen Ausführungsform könnte der
nichtvertrauenswürdige Code aus dem normalen Betriebssystem
und Anwendungen bestehen, die auf heutigen Personal Computern zu
finden sind.
-
Der
SVMM 350 lässt auch einen direkten Zugriff auf
die Hardware-Ressourcen 380 von einem oder mehreren vertrauenswürdigen
oder sicheren Kernels 360 und von einer oder mehreren vertrauenswürdigen
Anwendungen 37 aus zu oder verhindert ihn selektiv. Ein
solcher vertrauenswürdiger Kernel 360 und solche
vertrauenswürdigen Anwendungen 370 können
hinsichtlich der Größe und Funktionalität
begrenzt werden, um die Fähigkeit zur Durchführung
einer Vertrauensanalyse auf ihnen zu unterstützen. Die
vertrauenswürdige Anwendung 370 kann ein Software-Code,
ein Programm, eine Routine oder ein Routinensatz sein, der in einer
sicheren Umgebung abgearbeitet werden kann. Daher kann die vertrauenswürdige
Anwendung 370 eine Palette von Anwendungen oder Codesequenzen
sein oder kann eine relativ kleine Anwendung sein, wie etwa ein
Java-Applet.
-
Befehle
oder Operationen, die normalerweise von dem Betriebssystem 340 oder
dem Kernel 360 ausgeführt werden und den Systemressourcenschutz
oder Privilegien ändern könnten, können
von dem SVMM 350 erfasst werden und selektiv zugelassen,
teilweise zugelassen oder zurückgewiesen werden. Als Beispiel
werden bei einer typischen Ausführungsform Befehle, die
die Seitentabelle des Prozessors ändern, was normalerweise
von dem Betriebssystem 340 oder dem Kernel 360 durchgeführt
wird, stattdessen von dem SVMM 350 erfasst, was gewährleisten
würde, dass die Anforderung nicht versucht hat, Seitenprivilegien
außerhalb der Domain seiner virtuellen Maschine zu ändern.
-
Kommen
wir nun zu 4. Hier ist ein Ablaufdiagramm
mit Software- und anderen Prozessblöcken nach einer Ausführungsform
der vorliegenden Erfindung bei einem Verfahren 400 gezeigt.
-
Bei
einem Block 410 des Verfahrens 400 erstellt ein
Logikprozessor eine Kopie der Module SINIT-AC und SVMM, die für
den Zugriff mittels eines nachfolgenden SENTER-Befehls verfügbar
sind. In diesem Beispiel lädt ein ILP den SINIT-AC- und SVMM-Code
aus dem Massenspeicher in den physischen Speicher. Bei alternativen
Ausführungsformen kann das jeder Logikprozessor tun, nicht
nur der ILP. Ein Prozessor wird dadurch zum ILP, dass er den SENTER-Befehl
ausführt, wie in einem Block 412 angegeben.
-
In
einem Block 420 verifiziert der SENTER-Befehl, dass jeder
Logikprozessor in dem System 200 in dem Chipsatz 240 registriert
ist, zum Beispiel in dem EXISTS-Register 270. In einem
Block 422 schreibt der SENTER-Befehl an den QUIESCE-Indikator 246,
um den Chipsatz 240 zu veranlassen, das System 200 in
den Ruhezustand zu versetzen. In einem Block 424 sendet
der Chipsatz 240 „STOP_REQ"-Signale an jeden Nicht-Hauptprozessor,
um sie zu veranlassen, ihre Ereignisverarbeitung zu beenden, ihre
Puffer zu leeren und ein „STOP_ACK"-Signal zurück
an den Chipsatz 240 zu senden, um ihr Eintreten in einen
Ruhezustand zu quittieren. In einem Block 426 wird das QUIESCED-Flag 248 gesetzt,
um anzugeben, dass der Chipsatz 240 ein STOP_ACK-Signal
von jedem Agenten für jeden in dem Chipsatz 240 registrierten Logikprozessor
erhalten hat.
-
In
einem Block 430 verschiebt der ILP den öffentlichen
Schlüssel des Chipsatzes und die speicherresidente Kopie
des SINIT-AC in seinen sicheren Speicher zur sicheren Abarbeitung.
In einem Block 432 verwendet der ILP den Schlüssel
zum Validieren der in dem sicheren Speicher residenten Kopie des SINIT-AC
und arbeitet ihn dann ab. Bei der Abarbeitung des SINIT-AC können
Tests der Systemkonfiguration und der SVMM-Kopie durchgeführt
werden, dann wird die SVMM-Identität registriert, und schließlich
wird in einem Block 434 mit der Abarbeitung des SVMM begonnen.
In einem Block 436 löscht der Hauptprozessor im
Ruhezustand den QUIESCE-Indikator 246, um den Chipsatz 240 zu
veranlassen, das System 200 in einem Block 438 aus
dem Ruhezustand zu holen.
-
In
der vorstehenden Beschreibung ist die Erfindung unter Bezugnahme
auf spezielle beispielhafte Ausführungsformen der Erfindung
beschrieben worden. Es ist jedoch klar, dass verschiedene Modifikationen
und Änderungen daran vorgenommen werden können,
ohne von den allgemeinen Grundgedanken und dem allgemeinen Schutzumfang
der Erfindung abzuweichen, die in den beigefügten Ansprüchen
dargelegt sind. Die Beschreibung und die Zeichnungen sind daher
in einem erläuternden und nicht in einem beschränkenden
Sinn zu sehen.
-
Zusammenfassung
-
Es
werden Verfahren und eine Vorrichtung zum Initiieren von sicheren
Operationen in einem Mikroprozessorsystem beschrieben. Bei einer
Ausführungsform hat ein System einen Prozessor zum Ausführen
eines Sichere-Eingabe-Befehls und einen Chipsatz zum Veranlassen
des Systems, während der Ausführung des Sichere-Eingabe-Befehls
in einen Ruhezustand zu gehen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste
der vom Anmelder aufgeführten Dokumente wurde automatisiert
erzeugt und ist ausschließlich zur besseren Information
des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen
Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt
keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- - www.trustedpc.com [0021]