-
Diese
Erfindung bezieht sich auf eine Einrichtung in einem Prozessor,
die eine Befehls-Ausführungseinheit
und einen Parameterspeicher enthält,
wobei der Prozessor in einer Plattform arbeitet und in mehreren
Ausführungsmodi
konfigurierbar ist. Ferner bezieht sich die Erfindung auf ein Verfahren zum
Ausführen
eines Befehls durch eine Ausführungseinheit
in einem Prozessor, der in einer Plattform arbeitet, wobei der Prozessor
in verschiedene Ausführungsmodi
konfigurierbar ist.
-
Fortschritte
bei Mikroprozessoren und in der Kommunikationstechnologie eröffnen viele
Möglichkeiten
für Anwendungen,
die über
die herkömmlichen Wege,
Geschäfte
auszuführen,
hinausgehen. Elektronischer Handel (E-Commerce) und Business-to-Business(B2B)-Transaktionen
werden jetzt populär
und erreichen die globalen Märkte
bei einer schnellen Rate. Während
moderne Mikroprozessorsysteme den Benutzern bequeme und effiziente
Verfahren der Ausführung
von Geschäften,
der Kommunikation und von Transaktionen zur Verfügung stellen, sind sie unglücklicherweise
außerdem
für skrupellose
Angriffe anfällig.
Beispiele dieser Angriffe umfassen Viren, ein Eindringen, Sicherheitsverletzungen
und Verfälschungen,
um nur einige wenige zu nennen. Die Computersicherheit wird folglich
zunehmend wichtig, um die Integrität der Computersysteme zu schützen und
das Vertrauen der Benutzer zu erhöhen.
-
Gefahren,
die durch skrupellose Angriffe verursacht sind, können eine
Reihe von Formen annehmen. Angriffe können von der Ferne aus ausgeführt werden,
ohne physikalische Zugriffe zu erfordern. Ein eingreifender, aus
der Ferne gestarteter Angriff durch Hacker kann den normalen Betrieb
eines Systems stören,
das mit Tausenden oder gar Millionen von Benutzern verbunden ist.
Ein Virusprogramm kann Befehlscode und/oder Daten einer Einzelbenutzerplattform
zerstören.
-
Vorhandene
Techniken zum Schützen
gegen Angriffe weisen eine Reihe von Nachteilen auf. Antivirenprogramme
können
nur nach bekannten Viren suchen und diese erfassen. Die meisten
Antivirenprogramme verwenden eine schwache Vorgehensweise, bei welche
eine Datei oder ein Programm als gut angesehen wird, solange es
sich nicht als schlecht erwiesen hat. Für viele Sicherheitsanwendungen
kann es sein, daß diese
schwache Vorgehensweise nicht ausreichend ist. Darüber hinaus werden
die meisten Antivirenprogramme lokal dort verwendet, wo sie sich
in der Plattform aufhalten. Dies könnte in einer Gruppenarbeitsumgebung
nicht geeignet sein. Sicherheitskoprozessoren oder Smart-Cards,
die kryptographische oder andere Sicherheitstechniken verwenden,
haben Grenzen hinsichtlich der Geschwindigkeit, Leistungsfähigkeit, Speicherkapazität und Flexibilität. Eine
Neuentwicklung von Betriebssystemen erzeugt Softwarekompatiblitätsprobleme
und verursacht enorme Investitionen bei den Entwicklungsbemühungen.
-
Die
US 5,459,869 A beschreibt,
daß es
Protected-Mode-Gerätetreibern
und residenten Programmen ermöglicht
wird, aus einer MS/PC-DOS-Umgebung geladen und ausgeführt zu werden.
Eine Basis-Low-Level-Software (VMM), die eine Protected-Mode-Umgebung
des Betriebssystems zur Verfügung
stellt, wird durch einen modifizierten VMM ersetzt. Der modifizierte
VMM kann das Vorhandensein von Fähigkeiten
erfassen, Selektoren aus einer Globalen Deskriptor-Tabelle zuweisen,
Selektor-Parameter, wie Basis und Limit, setzen, die Interrupt-Deskriptor-Tabelle
abfangen (trap), Adressen erlangen und weiterleiten und bei Initialisierung V86-Modus-Code
in geschützten
Code umschalten.
-
Die
US 5,255,379 A beschreibt
einen Übergang
(Transitioning) aus einem Betrieb in einem virtuellen 8086-Modus
in einen Betrieb in einem geschützten
Modus. Dabei speichert der Prozessor sämtliche den virtuellen Prozessor
betreffenden Informationen zum Zeitpunkt des Versuchs des Übergangs
in den geschützten
Modus, bildet den dem virtuellen Prozessor zugeteilten Speicher
auf den Speicherraum ab, der beim Abarbeiten eines Prozesses im
reellen Modus verwendet wird, richtet einen Dummy-Stack ein, um
für einen
Betrieb während
des Übergangs
in den geschützten
Modus zu sorgen, bewegt einen Übergangs-Prozeß in den
reellen Speicherraum, verschiebt sämtliche Registerwerte zu Werten
für den
reellen Speicherraum und reaktiviert schließlich den Übergang zum geschützten Modus.
-
Die
US 5,022,077 A schreibt
das Schützen eines
Bereichs im BIOS eines PC. Der geschützte Bereich enthält einen
Master-Boot-Datensatz und ein BIOS-Abbild. In Erwiderung eines Reset
wird der Zugriff auf den geschützten
Bereich auf den Master-Boot-Datensatz eingeschränkt, welcher in den RAM geladen
wird. Der Master-Boot-Datensatz lädt dann das BIOS in den RAM.
-
Aufgabe
der Erfindung ist es, eine Einrichtung in einem Prozessor bzw. ein
von einer solchen Einrichtung ausgeführtes Verfahren der eingangs
genannten Art zu schaffen, die bzw. das es ermöglicht, die Sicherheit eines
den Prozessor enthaltenden Computersystems gegenüber den eingangs genannten
Angriffen zu erhöhen,
insbesondere sensitive Software enthaltende Speicherbereiche besser
gegen Angriffe abzuschotten.
-
Diese
Aufgabe wird erfindungsgemäß durch eine
Einrichtung mit den Merkmalen des Anspruchs 1 bzw. durch ein Verfahren
mit den Merkmalen des Anspruchs 15 gelöst. Vorteilhafte und/oder bevorzugte
Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Die
Erfindung wird nachfolgend anhand bevorzugter Ausführungsformen
beschrieben. In den Zeichnungen zeigen:
-
1A ein
Schema, das eine logische Betriebsarchitektur gemäß einem
Ausführungsbeispiel der
Erfindung veranschaulicht;
-
1B ein
Schema, das die Zugreifbarkeit verschiedener Elemente in dem Betriebssystem
und dem Prozessor gemäß einem
Ausführungsbeispiel der
Erfindung veranschaulicht;
-
1C ein
Schema, das ein Computersystem veranschaulicht, in welchem die Erfindung
ausgeführt
werden kann;
-
2 ein
Schema, das eine Architektur für Isoliert-Befehle gemäß der Erfindung
veranschaulicht;
-
3 ein
Schema, das einen internen Speicher gemäß einem Ausführungsbeispiel
der Erfindung veranschaulicht;
-
4 ein
Schema, das einen externen Speicher gemäß einem Ausführungsbeispiel
der Erfindung veranschaulicht;
-
5 ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
des iso_init-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht;
-
6a ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
der Erzeugungsfunktion in dem iso_init-Befehl gemäß einem
Ausführungsbeispiel der
Erfindung veranschaulicht;
-
6b ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
der Prozessor-Nub-Lader-Funktion in dem iso_init-Befehl gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht;
-
7 ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
des iso_close-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht;
-
8a ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
des iso_enter-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht;
-
8b ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
des iso_exit-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht;
-
9a ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
des iso_config_read-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht; und
-
9b ein
Ablaufdiagramm, das einen Prozeß zum
Ausführen
des iso_config_write-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
der Erfindung wird eine Technik zur Verfügung gestellt, um Isoliert-Befehle
auszuführen. Eine
Ausführungseinheit
eines Prozessors führt
einen Isoliert-Befehl aus. Der Prozessor ist entweder in einem normalen
oder einem isolierten Ausführungsmodus
konfiguriert. Ein Parameterspeicher enthält Parameter zum Unterstützen der
Ausführung
des Isoliert-Befehls, wenn der Prozessor in dem isolierten Ausführungsmodus
konfiguriert ist. Der Isoliert-Befehl ist ein Isoliert-Initialisiere(iso_finit)-Befehl,
ein Isoliert-Schließe(iso_close)-Befehl,
ein Isoliert-Eintritt(iso_enter)-Befehl,
ein Isoliert-Verlasse(iso_exit)-Befehl, ein Isoliert-Konfigurationslese(iso_config_read)-Befehl
oder ein Isoliert-Konfigurationsschreib(iso_config_write)-Befehl.
-
Bei
den beschriebenen Ausführungsbeispielen
ist der Parameter ein Isoliert-Merkmal-Wort, ein Ausführungsmodus-Wort,
ein logischer Prozessor-Wert, ein Isoliert-Einstellung einschließlich eines Maskenwerts
und eines Basiswerts, eine physikalische Austrittsadresse, eine
physikalische Eintrittsadresse oder eine physikalische Prozessor-Nub-Lader-Adresse. Der Parameterspeicher
ist ein interner Speicher oder ein externer Speicher. Der interne Speicher
umfaßt
ein Steuerregister zum Speichern des Ausführungsmodus-Worts, ein Logischer-Prozessor-Register,
ein Maskenregister zum Speichern des Maskenwerts, ein Basisregister
zum Speichern des Basiswerts, einen Rahmenregistersatz, ein Austrittsrahmenregister
zum Speichern der Austrittsadresse, ein Eintrittsrahmenregister
zum Speichern der Eintrittsadresse und ein Lader-Register zum Speichern
der Prozessor-Nub-Lader-Adresse. Der externe Speicher umfaßt einen
Speicher-Controller-Hub(MCH)-Speicher und Eingabe/Ausgabe-Controller-Hub(ICH)-Speicher.
Das Ausführungsmodus-Wort
konfiguriert den Prozessor in den isolierten Ausführungsmodus.
-
Der
iso_init-Befehl veranlaßt,
wenn er ausgeführt
wird, den Prozessor, einen von dem Basiswert und dem Maskenwert
definierten isolierten Bereich in einem Speicher zu erzeugen, sofern
der isolierte Bereich noch nicht erzeugt worden ist, einen Bereich
des isolierten Bereichs in dem MCH-Register zu setzen, einen Prozessor-Nub-Lader
unter Verwendung der Prozessor-Nub-Lader-Adresse in dem Lader-Register
in den isolierten Bereich zu kopieren und den Prozessor-Nub-Lader
auszuführen.
Der iso_init-Befehl veranlaßt
ferner, wenn er ausgeführt wird,
den Prozessor, den isolierten Bereich für die Plattform zu initialisieren
und einen Ort eines Prozessor-Nubs zu gewinnen. Der iso_init-Befehl
veranlaßt den
Prozessor, den Prozessor-Nub-Lader auszuführen, veranlaßt den Prozessor,
den Prozessor-Nub in den isolierten Bereich zu kopieren, überprüft eine
Signatur des Prozessor-Nubs unter Verwendung eines öffentlichen
Schlüssels,
der in dem Prozessor-Nub-Lader enthalten ist, und führt den
Prozessor-Nub aus, wenn die Signatur überprüft ist. Der iso_init-Befehl
sichert folglich, daß der
Zustand der Umgebung oder Plattform bei Erzeugen des isolierten
Bereichs sauber ist.
-
Der
iso_enter-Befehl veranlaßt,
wenn er ausgeführt
wird, den Prozessor, Inhalte des Rahmenregistersatzes in einem Austrittsrahmens
zu speichern, wobei auf den Austrittsrahmen durch die Austrittsadresse
in dem Austrittsrahmenregister verwiesen wird, und einen Eintrittsrahmen
in den Rahmenregistersatz zu laden, wobei auf den Eintrittsrahmen
durch die Eintrittsadresse in dem Eintrittsrahmenregister verwiesen
wird. Der iso_exit-Befehl veranlaßt, wenn er ausgeführt wird,
den Prozessor, einen Austrittsrahmen in den Rahmenregistersatz zu
laden. Auf den Austrittsrahmen wird durch die Austrittsadresse in den
Austrittsrahmenregister verwiesen. Der iso_close-Befehl veranlaßt, wenn
er ausgeführt
wird, den Prozessor, die Isoliert-Einstellung in dem Prozessor zurückzusetzen,
wenn ein zugehöriger
logischer Prozessor der letzte zurückzunehmende ist, und setzt
die Isoliert-Einstellung in dem MCH und dem ICH zurück, wenn
der Prozessor der letzte zurückzunehmende
ist. Der iso_config_read-Befehl veranlaßt, wenn er ausgeführt wird,
den Prozessor, den Inhalt eines Konfigurationsspeichers, der dem Parameterspeicher
entspricht, zurückzugeben.
Der iso_config_write-Befehl veranlaßt, wenn er ausgeführt wird,
den Prozessor, den Inhalt eines Konfigurationsspeichers, der dem
Parameterspeicher entspricht, zu speichern.
-
Die
folgenden Befehle sind unteilbar, nicht-unterbrechbar, um die Integrität der Umgebung und/oder
der Plattform zu sichern: iso_enter, iso_exit, iso_close, iso_config_read,
iso_config_write. Der iso_enter-Befehl veranlaßt, wenn er ausgeführt wird, den
Prozessor, Inhalte des Rahmenregistersatzes in einem Austrittsrahmen
zu speichern, wobei auf den Austrittsrahmen durch die Austrittsadresse
in dem Austrittsrahmenregister verwiesen wird, und einen Eintrittsrahmen
in den Rahmenregistersatz zu laden, wobei auf den Eintrittsrahmen
durch die Eintrittsadresse in dem Eintrittsrahmenregister verwiesen wird.
Der iso_exit-Befehl veranlaßt,
wenn er ausgeführt
wird, den Prozessor, einen Austrittsrahmen in den Rahmenregistersatz
zu laden. Auf den Austrittsrahmen wird durch die Austrittsadresse
in den Austrittsrahmenregister verwiesen. Der iso_close-Befehl veranlaßt, wenn
er ausgeführt
wird, den Prozessor, die Isoliert-Einstellung in dem Prozessor zurückzusetzen,
wenn ein zugehöriger
logischer Prozessor der letzte zurückzunehmende ist, und setzt
die Isoliert-Einstellung in dem MCH und dem ICH zurück, wenn
der Prozessor der letzte zurückzunehmende ist.
Der iso_config_read-Befehl veranlaßt, wenn er ausgeführt wird,
den Prozessor, den Inhalt eines Konfigurationsspeichers, der dem
Parameterspeicher entspricht, zurückzugeben. Der iso_config_write-Befehl
veranlaßt,
wenn er ausgeführt
wird, den Prozessor, den Inhalt eines Konfigurationsspeichers, der
dem Parameterspeicher entspricht, zu speichern.
-
ARCHITEKTURÜBERBLICK
-
Ein
Prinzip zum Bereitstellen einer Sicherheit in einem Computersystem
oder einer Plattform ist das Konzept einer Architektur der isolierten
Ausführung.
Die Isolierte-Ausführung-Architektur umfaßt logische
und physikalische Definitionen von Hardware- und Softwarekomponenten,
die direkt oder indirekt mit einem Betriebssystems des Computersystems oder
der Plattform interagieren. Ein Betriebssystem und der Prozessor
können
verschiedene Ebenen der Hierarchie aufweisen, die als Ringe bezeichnet
werden und verschiedenen Betriebsmodi entsprechen. Ein Ring ist
eine logische Unterteilung von Hardware- und Softwarekomponenten,
der so ausgebildet ist, daß er
spezielle Aufgaben in dem Betriebssystem ausführt. Die Unterteilung basiert
typischerweise auf dem Grad oder dem Niveau der Privilegierung,
nämlich
der Fähigkeit, Änderungen
an der Plattform vorzunehmen. Beispielsweise ist ein Ring-0 der
innerste Ring, der sich auf dem höchsten Niveau der Hierarchie
befindet. Ring-0 umfaßt
die kritischsten, privilegierten Komponenten. Darüber hinaus
können
Module in Ring-0 auch auf weniger privilegierte Daten zugreifen,
aber nicht umgekehrt. Ring-3 ist der äußerste Ring, der das niedrigste
Niveau der Hierarchie darstellt. Ring-3 umfaßt typischerweise die Benutzer- oder Anwendungsebene
und weist die geringste Privilegierung auf. Ring-1 und Ring-2 stellen
dazwischenliegende Ringe mit abnehmenden Pivilegierungsniveaus dar.
-
1A ist
ein Schema, das eine logische Betriebsarchitektur 50 gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht. Die logische Betriebsarchitektur 50 ist
eine Abstraktion der Komponenten eines Betriebssystems und des Prozessors.
Die logische Betriebsarchitektur 50 enthält einen
Ring-0 10, Ring-1 20, Ring-2 30, Ring-3 40 und einen
Prozessor-Nub-Lader 52. Der Prozessor-Nub-Lader 52 ist
eine Instanz eines Prozessor-Exekutive(PE)-Behandlers. Der PE-Behandler wird verwendet,
um eine Prozessor-Exekutive (PE) zu behandeln und/oder zu verwalten,
wie es später erörtert wird.
Die logische Betriebsarchitektur 50 weist zwei Betriebsmodi
auf: einen normalen Ausführungsmodus
und einen isolierten Ausführungsmodus.
Jeder Ring der logischen Betriebsarchitektur 50 kann in
beiden Modi betrieben werden. Der Prozessor-Nub-Lader 52 arbeitet
nur in dem isolierten Ausführungsmodus.
-
Ring-0 10 enthält zwei
Abschnitte: einen Normale-Ausführung-Ring-0 11 und
einen Isolierte-Ausführung-Ring-0 15.
Der Normale-Ausführung-Ring-0 11 enthält Softwaremodule,
die für
das Betriebssystem kritisch sind, üblicherweise als Kernel bezeichnet.
Diese Softwaremodule umfassen das primäre Betriebssystem (z. B. Kernel) 12,
Softwaretreiber 13 und Hardwaretreiber 14. Der
Isolierte-Ausführung-Ring-0 15 enthält einen
Betriebssystem(OS)-Nub 16 und einen Prozessor-Nub 18.
Der OS-Nub 16 und der Prozessor-Nub 18 sind Instanzen einer
OS-Exekutive (OSE)
bzw. einer Prozessor-Exekutive (PE). Die OSE und die PE sind Teil
der Exekutiveentitäten,
die in einer sicheren Umgebung arbeiten, die einem isolierten Bereich
und dem isolierten Ausführungsmodus
zugeordnet ist. Der Prozessor-Nub-Lader 52 ist ein geschützter Bootstrap-Lader-Code,
der in einem Chipsatz in dem System gehalten wird und für das Laden
des Prozessor-Nubs 18 aus dem Prozessor oder dem Chipsatz in
einen isolierten Bereich verantwortlich ist, wie später erörtert werden
wird.
-
In ähnlicher
Weise umfassen Ring-1 20, Ring-2 30 und Ring-3 40 einen
Ring-1 21, Ring-2 32, Ring-3 41 für normale
Ausführung
und einen Ring-1 25, Ring-2 35 und Ring-3 45 für isolierte
Ausführung. Insbesondere
enthält
der Normale-Ausführung-Ring-3
N Anwendungen 421 bis 42N, und der Isolierte-Ausführung-Ring-3
enthält
K Applets 461 bis 46K.
-
Ein
Konzept der Architektur iolierter Ausführung ist die Schaffung eines
isolierten Gebiets in dem Systemspeicher, das als isolierter Bereich
bezeichnet wird und das sowohl durch den Prozessor als auch den
Chipsatz in dem Computersystem gestützt ist. Der isolierte Bereich
kann sich auch im Cache-Speicher befinden und durch eine Übersetzungsnachschlagepuffer(TLB)-Zugriffsüberprüfung geschützt sein.
Darüber
hinaus kann das isolierte Gebiet in mehrere isolierte Speicherbereiche
unterteilt sein, wie erörtert
wird. Ein Zugriff auf dieses isolierte Gebiet ist nur über einen
Frontseitenbus (FSB) des Prozessors unter Verwendung spezieller
Buszyklen (z. B. Speicherlese- und Schreibzyklen), die als isolierte
Lese- und Schreibzyklen bezeichnet werden, gestattet. Die speziellen
Buszyklen werden auch für
ein Snooping verwendet. Die isolierten Lese- und Schreibzyklen werden
durch den in einem isolierten Ausführungsmodus ausführenden
Prozessor ausgegeben. Der isolierte Ausführungsmodus wird unter Verwendung
eines privilegierten Befehls in den Prozessor, kombiniert mit dem
Prozessor-Nub-Lader 52, initialisiert. Der Prozessor-Nub-Lader 52 überprüft und lädt ein Ring-0-Nub-Softwaremodul
(z. B. Prozessor-Nub 18) in den isolierten Bereich. Der
Prozessor-Nub 18 stellt hardware-bezogene Dienste für die isolierte Ausführung zur
Verfügung.
-
Eine
Aufgabe des Prozessor-Nubs 18 besteht darin, den Ring-0-OS-Nub 16 in
den isolierten Bereich zu laden und diesen zu überprüfen und die Wurzel der Schüsselhierarchie,
die einzigartig für eine
Kombination der Plattform, des Prozessor-Nubs 18 und des
Betriebssystem-Nubs 16 ist, zu erzeugen. Der Prozessor-Nub 18 schafft
eine anfängliche
Einricht-Verwaltung niedriger Ebene des isolierten Bereichs einschließlich einer Überprüfung, eines
Ladens und eines Protokollierens (Logging) des Betriebssystem-Nubs 16 und
die Verwaltung eines symmetrischen Schlüssels, der verwendet wird,
um die Geheimnisse des Betriebssystem-Nubs zu schützen. Der
Prozessor-Nub 18 kann darüber hinaus Anwendungsprogrammierschnittstellen(API)-Abstraktionen an
Sicherheitsdienste niedriger Ebene, die durch andere Hardware zur
Verfügung
gestellt werden, zur Verfügung
stellen.
-
Der
Betriebssystem-Nub 16 stellt Verbindungen (Links) zu Diensten
in dem primären
OS 12 (z. B. den ungeschützten Segmenten des Betriebssystems)
zur Verfügung,
schafft eine Seitenverwaltung in dem isolierten Bereich und ist
dafür verantwortlich, die
Ring-3-Anwendungsmodule 45 einschließlich der Applets 461 bis 46K in
die in dem isolierten Bereich zugeteilten geschützten Seiten zu laden. Der
Betriebssystemhub 16 kann darüber hinaus Ring-0-Unterstützungsmodule
laden.
-
Der
Betriebssystem-Nub 16 kann auswählen, daß er ein Paging der Daten zwischen
dem isolierten Bereich und dem gewöhnlichen (d. h. nicht isolierten)
Speicher unterstützt.
Wenn dies der Fall ist, dann ist der Betriebssystem-Nub 16 außerdem für eine Verschlüsselung
und ein Hashing der Seiten des isolierten Bereichs verantwortlich,
bevor die Seite in den gewöhnlichen
Speicher geräumt
wird, und für eine Überprüfung des
Seiteninhalts bei der Wiederherstellung der Seite. Die Isolierter-Modus-Applets 461 bis 46K und
ihre Daten sind verfälschungssicher und überwachungsresistent
gegenüber
sämtlichen Softwareangriffen
von anderen Applets sowie aus Anwendungen (z. B. 461 bis 46N) aus dem nicht-isolierten Raum, von dynamischen Verbindungsbibliotheken
(DLLs), Treibern und selbst gegenüber dem primären Betriebssystem 12.
Nur der Prozessor-Nub 18 oder der Betriebssystemhub 16 können in
die Ausführung
des Applets eingreifen oder diese überwachen.
-
1B ist
ein Schema, das die Zugreifbarkeit der verschiedenen Elemente in
dem Betriebssystem 10 und dem Prozessor gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht. Zu Veranschaulichungszwecken sind
nur Elemente des Rings-0 10 und des Rings-3 40 gezeigt.
Die verschiedenen Elemente in der logischen Betriebsarchitektur 50 greifen
auf einen zugreifbaren physikalischen Speicher 60 in Übereinstimmung
mit ihrer Ringhierarchie und dem Ausführungsmodus zu.
-
Der
zugreifbare physikalische Speicher 60 enthält einen
isolierten Bereich 70 und einen nicht-isolierten Bereich 80.
Der isolierte Bereich 70 enthält Applet-Seiten 72 und
Nub-Seiten 74.
Der nicht-isolierte Bereich 80 enthält Anwendungsseiten 82 und
Betriebssystemseiten 84. Der isolierte Bereich 70 ist
nur für
Elemente des Betriebssystems und des Prozessors, die in dem isolierten
Ausführungsmodus
arbeiten, zugreifbar. Der nicht-isolierte Bereich 80 ist
für sämtliche
Elemente des Ring-0-Betriebssystems und des Prozessors zugreifbar.
-
Der
Normale-Ausführung-Ring-0 11 enthält das primäre OS 12,
die Softwaretreiber 13 und Hardwaretreiber 14 und
kann sowohl auf die OS-Seiten 84 als auch die Anwendungsseiten 82 zugreifen.
Der Normale-Ausführung-Ring-3,
der die Anwendungen 421 bis 42N enthält, kann nur auf die Anwendungsseiten 82 zugreifen.
Jedoch können
weder der Ring-0 11 noch der Ring-3 41 der normalen
Ausführung
auf den isolierten Bereich 70 zugreifen.
-
Der
Isolierte-Ausführung-Ring-0 15 einschließlich des
OS-Nubs 16 und des Prozessor-Nubs 18 kann sowohl
auf den isolierten Bereich 70 einschließlich der Applet-Seiten 72 und
der Nub-Seiten 74 als auch auf den nicht-isolierten Bereich 80 einschließlich der
Anwendungsseiten 82 und der OS-Seiten 84 zugreifen.
Der Isolierte-Ausführung-Ring-3 45,
einschließlich
der Applets 461 bis 46K, kann nur auf die Anwendungsseiten 82 und
die Applet-Seiten 72 zugreifen. Die Applets 461 bis 46K, halten
sich in dem isolierten Bereich 70 auf.
-
1C ist
ein Schema, das ein Computersystem 100 veranschaulicht,
in welcher ein Ausführungsbeispiel
der Erfindung ausgeführt
werden kann. Das Computersystem 100 enthält einen
Prozessor 110, einen Host-Bus 120, einen Speicher-Controller-Hub
(MCH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Controller-Hub
(ICH) 150, einen nichtflüchtigen Speicher oder System-Flash-Speicher 160,
eine Massenspeichereinrichtung 170, Eingabe/Ausgabe-Geräte 175,
einen Token-Bus 180, ein Mutterplatinen(MB)-Token 182, einen
Leser 184 und ein Token 186. Der MCH 130 kann
in einen Chipsatz integriert sein, der eine vielfache Funktionalität, wie beispielsweise
den isolierten Ausführungsmodus,
eine Host-Zu-Peripherie-Schnittstelle,
eine Speichersteuereinrichtung integriert. In ähnlicher Weise kann der ICH 150 ebenfalls in
einen Chipsatz gemeinsam mit dem oder getrennt von dem MCH 130 integriert
sein, um I/O-Funktionen auszuführen.
Aus Gründen
der Klarheit sind nicht sämtliche
Peripheriebusse gezeigt. Es ist beabsichtigt, daß das System 100 darüber hinaus
Peripheriebusse, wie beispielsweise einen Peripheriekomponentenverbindungsbus
(PCI-Bus), einen beschleunigten Graphikport (AGP), einen Industriestandardarchitektur(ISA)-Bus und einen universellen
seriellen Bus (USB), etc., enthält.
-
Der
Prozessor 110 repräsentiert
eine zentrale Verarbeitungseinheit einer beliebigen Architektur, wie
beispielsweise einer Komplexer-Befehlssatz-Computer(CISC)-Architektur,
Reduzierter-Befehlssatz-Computer(RISC)-Architektur, Sehr-Langes-Befehlswort(VLIW)-Architektur
oder einer Hybrid-Architektur.
Bei einer Ausführungsform
ist der Prozessor 110 mit einem Prozessor einer Intel-Architektur
(IA), wie beispielsweise einem Prozessor der PentiumTM-Serie
mit IA-32 und IA-64TM kompatibel. Der Prozessor 110 schließt einen
normalen Ausführungsmodus
und eine Isolierte-Ausführung-Schaltung 115 ein.
Der normale Ausführungsmodus 112 ist der
Modus, in welchem der Prozessor 110 in einer nicht sicheren
Umgebung oder einer normalen Umgebung ohne die von dem isolierten
Ausführungsmodus
zur Verfügung
gestellten Sicherheitsmerkmale betrieben wird. Die Isolierte-Ausführung-Schaltung 115 stellt
einen Mechanismus zur Verfügung,
der es dem Prozessor 110 ermöglicht, in einem isolierten Ausführungsmodus
zu arbeiten. Die Isolierte-Ausführung-Schaltung 115 schafft
die Hardware- und Software-Unterstützung für den isolierten Ausführungsmodus.
Diese Unterstützung
umfaßt
eine Konfiguration für
eine isolierte Ausführung,
das Definieren eines isolierten Bereichs, das Definieren (z. B.
Dekodieren und Ausführung)
isolierter Befehle, das Erzeugen Isolierter-Zugriff-Buszyklen und das Erzeugen Isolierter-Modus-Interrupts.
-
Bei
einem Ausführungsbeispiel
kann das Computersystem 100 ein Einzelprozessorsystem, wie
beispielsweise ein Desktop-Computer sein, welcher nur eine Hauptzentralverarbeitungseinheit,
beispielsweise den Prozessor 110, aufweist. Bei anderen
Ausführungsbeispielen
kann das Computersystem 100 mehrere Prozessoren, zum Beispiel
die Prozessoren 110, 110a, 110b, etc.
enthalten, wie es in 1C gezeigt ist. So kann das
Computersystem 100 ein Multi-Prozessor-Computersystem mit
einer beliebigen Anzahl von Prozessoren sein. Beispielsweise kann
das Multi-Prozessor-Computersystem 100 als Teil einer Server-
oder Workstation-Umgebung arbeiten. Die grundlegende Beschreibung
und die Betriebsweise des Prozessors 110 werden detailliert
nachfolgend erörtert.
Für Fachleute
ist es klar, daß diese
grundlegende Beschreibung und Betriebsweise des Prozessors 110 auch
für die
anderen Prozessoren 110a und 110b, die in 1C gezeigt
sind, sowie für
eine beliebige Anzahl weiterer Prozessoren, die in dem Multi-Prozessor-Computersystem 100 in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung benutzt werden können, gilt.
-
Der
Prozessor 110 kann darüber
hinaus mehrere logische Prozessoren aufweisen. Ein logischer Prozessor,
der manchmal als Thread bezeichnet wird, ist eine Funktionseinheit
in einem physikalischen Prozessor mit einem Architekturzustand und gemäß irgendeiner
Aufteilungsvorgehensweise zugeteilten physikalischen Ressourcen.
Im Kontext der vorliegenden Erfindung sollen die Begriffe ”Thread” und ”logischer
Prozessor” dieselbe
Bedeutung haben. Ein Multi-Threaded-Prozessor ist ein Prozessor mit
mehreren Threads oder mehreren logischen Prozessoren. Eine Multi-Prozessor-System,
(zum Beispiel das die Prozessoren 110a und 110b aufweisende
System), kann mehrere mehrfädige
(multi-threaded) Prozessoren aufweisen.
-
Der
Host-Bus 120 stellt Schnittstellensignale zur Verfügung, um
es dem Prozessor 110 oder den Prozessoren 110, 110a und 110b zu
ermöglichen,
mit anderen Prozessoren oder Einrichtungen, beispielsweise dem MCH 130,
zu kommunizieren. Zusätzlich zum
normalen Modus stellt der Host-Bus 120 einen Bus-Modus
des isolierten Zugriffs mit zugehörigen Schnittstellensignalen
für Speicherlese-
und -schreibzyklen zur Verfügung,
wenn der Prozessor 110 im isolierten Ausführungsmodus
konfiguriert ist. Der Busmodus des isolierten Zugriffs wird bei
Speicherzugriffen angelegt, die initiiert werden, während sich
der Prozessor 110 im isolierten Ausführungsmodus befindet. Der Isolierter-Zugriff-Busmodus
wird außerdem
bei Befehls-Vorabruf- und Cache-Rückschreib-Zyklen angelegt,
wenn die Adresse innerhalb des Adreßbereichs des isolierten Bereichs
liegt und der Prozessor 110 in dem isolierten Ausführungsmodus
initialisiert ist. Der Prozessor 110 antwortet auf Snoop-Zyklen
zu einer cache-gespeicherten Adresse in dem Adreßbereich des isolierten Bereichs,
wenn der Isolierte-Zugriff-Busmodus angelegt und der Prozessor 110 in
den isolierten Ausführungsmodus
initialisiert ist.
-
Der
MCH 130 stellt eine Steuerung und Konfiguration des Speichers
und der Eingabe/Ausgabe-Einrichtungen, wie beispielweise des Systemspeichers 140 und
des ICH 150, zur Verfügung.
Der MCH 130 stellt Schnittstellenschaltungen zur Verfügung, um
das Anlegen isolierten Zugriffs bei Speicherreferenzbuszyklen, einschließlich isolierter
Speicherlese- und
-Schreibzyklen, zu erkennen und diese zu bedienen.
-
Zusätzlich weist
der MCH 130 Speicherbereichsregister (z. B. Basis- und
Längenregister)
auf, um den isolierten Bereich in dem Systemspeicher 140 darzustellen.
Sobald er konfiguriert ist, bricht der MCH 130 jegliche
Zugriffe auf einen isolierten Bereich ab, bei denen kein Isolierter-Zugriff-Busmodus angelegt
ist.
-
Der
Systemspeicher 140 speichert Systemcode und Daten. Der
Systemspeicher 140 ist typischerweise mit dynamischem Speicher
mit wahlfreiem Zugriff (DRAM) oder statischem Speicher mit wahlfreiem
Zugriff (SRAM) implementiert. Der Systemspeicher 140 enthält den zugreifbaren
physikalischen Speicher 60, der in 1B gezeigt
ist. Der zugreifbare physikalische Speicher enthält ein geladenes Betriebssystem 142,
den isolierten Bereich 70 (1B) und
einen isolierten Steuer- und Statusraum 148. Das geladene
Betriebssystem 142 ist der Teil des Betriebssystems, der
in den Systemspeicher 142 geladen wird. Das geladene OS 142 wird
typischerweise aus einer Massenspeichereinrichtung über irgendeinen
Anfangsladecode in einem Anfangsladespeicher, wie beispielsweise
einem Boot-Nur-Lese-Speicher (ROM) geladen. Der isolierte Bereich 70,
wie er in 1B gezeigt ist, ist derjenige
Speicherbereich, der von dem Prozessor 110 definiert wird,
wenn er in dem isolierten Ausführungsmodus
arbeitet. Der Zugriff auf den isolierten Bereich ist eingeschränkt und
wird von dem Prozessor 110 und/oder dem MCH 130 oder
einem anderen Chipsatz durchgesetzt, der die Isolierter-Bereich-Funktionalitäten integriert.
Der isolierte Steuer- und Statusraum 148 ist ein dem Eingabe/Ausgabe(I/O) ähnlicher
unabhängiger
Adreßraum,
der in dem Prozessor 110 und/oder dem MCH 130 definiert
wird. Der isolierte Steuer- und Statusraum 148 enthält hauptsächlich die
Steuer- und Statusregister der isolierten Ausführung. Der isolierte Steuer-
und Statusraum 148 überlappt
keinen vorhandenen Adreßraum,
und es wird auf ihn unter Verwendung der isolierten Buszyklen zugegriffen.
Der Systemspeicher 140 kann darüber hinaus weitere Programme
und Daten enthalten, welche nicht gezeigt sind.
-
Der
ICH 150 repräsentiert
einen bekannten Einzelpunkt in dem System, der die Funktionalität der isolierten
Ausführung
aufweist. Aus Gründen
der Klarheit ist nur ein ICH 150 gezeigt. Das System 100 kann
viele ICHS enthalten, die ähnlich
dem ICH 150 sind. Wenn es mehrere ICHs gibt, wird ein bestimmter
ICH ausgewählt,
um die Konfiguration und den Status des isolierten Bereichs zu kontrollieren.
Bei einem Ausführungsbeispiel
wird diese Auswahl durch ein externes Strapping-Pin ausgeführt. Wie
es Fachleuten bekannt ist, können
auch andere Verfahren der Auswahl verwendet werden, einschließlich der Verwendung
programmierbarer Konfigurationsregister. Der ICH 150 weist
eine Reihe von Funktionalitäten
auf, die so ausgebildet sind, daß sie zusätzlich zu den herkömmlichen
I/O-Funktionen den isolierten Ausführungsmodus unterstützen. Insbesondere
enthält
der ICH 150 eine Isolierter-Buszyklus-Schnittstelle 152,
den Prozessor-Nub-Lader 52 (der
in 1A gezeigt ist), einen Digest-Speicher 154,
einen Speicher 155 für
einen kryptographischen Schlüssel,
eine kryptographische Hash-Einheit 157, einen Isolierte-Ausführung-Logikverarbeitungs-Manager 156 und
eine Token-Bus-Schnittstelle 159.
-
Die
Isolierter-Buszyklus-Schnittstelle 152 enthält Schaltungen
zum Bilden einer Schnittstelle zu den Isolierter-Buszyklus-Signalen,
um isolierte Buszyklen, wie beispielsweise die isolierten Lese-
und Schreibbuszyklen zu erkennen und zu bedienen. Der Prozessor-Nub-Lader 52,
wie er in 1A gezeigt ist, umfaßt einen
Prozessor-Nub-Lader-Code
und dessen Digest-Wert (z. B. Hash-Wert). Der Prozessorhub-Lader 52 wird
durch Ausführung
eines geeigneten Isoliert-Befehls (zum Beispiel iso_init) aufgerufen
und in den isolierten Bereich 70 übertragen. Aus dem isolierten
Bereich 80 kopiert der Prozessor-Nub-Lader 52 den
Prozessor-Nub 18 aus dem System-Flash-Speicher (z. B. den
Prozessor-Nub-Code 18 in dem nicht-flüchtigen Speicher 160)
in den isolierten Bereich 70, überprüft und protokolliert seine
Integrität
und verwaltet einen symmetrischen Schlüssel, der verwendet wird, um
die Geheimnisse des Prozessor-Nubs zu schützen. Bei einem Ausführungsbeispiel
ist der Prozessor-Nub-Lader 52 im Nur-Lese-Speicher (ROM) implementiert. Aus
Sicherheitsgründen
ist der Prozessor-Nub-Lader 52 unveränderbar, verfälschungssicher
und nicht-austauschbar. Der Digest-Speicher 154, üblicherweise
in RAM implementiert, speichert die Digest-Werte (z. B. Hash-Werte) des geladenen
Prozessor-Nubs 18, des Betriebssystem(OS)-Nubs 16 und
irgendwelcher anderen kritischen Module (z. B. Ring-0-Module), die
in den isolierten Ausführungsbereich
geladen sind. Der Speicher 155 des kryptographischen Schlüssels hält einen
symmetrischen Verschlüsselungs/Entschlüsselung-Schlüssel, der
für die
Plattform des Systems 100 einzigartig ist. Bei einem Ausführungsbeispiel
enthält
Kryptographischer-Schlüssel-Speicher 155 interne
Schmelzsicherungen, die bei der Herstellung programmiert werden.
Alternativ kann der Kryptographischer-Schlüssel-Speicher 155 auch mit einem
Zufallszahlengenerator und einer Blankverdrahtung (strap) eines
Pins erzeugt werden. Der Isolierte-Ausführung-Logikverarbeitungsmanager 156 verwaltet
die Operation der logischen Prozessoren, die im isolierten Ausführungsmodus
arbeiten. Bei einem Ausführungsbeispiel
enthält
der Isolierte-Ausführung-Logikverarbeitungsmananger 156 ein
Logischer-Prozessor-Zählregister,
das die Anzahl der logischen Prozessoren verfolgt, die an dem isolierten
Ausführungsmodus
teilnehmen. Die Token-Bus-Schnittstelle 159 bildet eine Schnittstelle
zu dem Token-Bus 180. Eine Kombination des Prozessor-Nub-Lader-Digests,
des Prozessor-Nub-Digests,
des Betriebssystem-Nub-Digests und optional zusätzlicher Digests stellt den
Gesamtdigest der isolierten Ausführung
dar, der als Isoliert-Digest bezeichnet wird. Der Isoliert-Digest
ist ein Fingerabdruck, der den Ring-0-Befehlscode identifiziert, der die Konfiguration
und Operation der isolierten Ausführung steuert. Der Isoliert-Digest
wird verwendet, um den Zustand der aktuellen isolierten Ausführung zu
attestieren oder nachzuweisen.
-
Der
nicht-flüchtige
Speicher 160 speichert nicht-flüchtige Informationen. Typischerweise
ist der nicht-flüchtige
Speicher 160 in Flash-Speicher implementiert. Der nichtflüchtige Speicher 160 enthält den Prozessor-Nub 18.
Der Prozessor-Nub 18 stellt das anfängliche Einricht-Management
auf niedrige Ebene für
den isolierten Bereich 70 (in dem Systemspeicher 140),
einschließlich
der Überprüfung, des
Ladens und der Protokollierung (logging) des Betriebssystemhubs 16,
und die Verwaltung des symmetrischen Schlüssels, der zum Schützen der
Geheimnisse des Betriebssystem-Nubs verwendet wird, zur Verfügung. Der
Prozessor-Nub 18 kann darüber hinaus Anwendungsprogrammierschnittstellen(API)-Abstraktionen an
Low-Level-Sicherheitsdienste zur Verfügung stellen, die von weiterer
Hardware bereitgestellt werden. Der Prozessor-Nub 18 kann
außerdem durch
den ursprünglichen
Ausrüstungshersteller (OEM)
oder Betriebssystemanbieter (OSV) über eine Boot-Diskette verteilt
werden.
-
Die
Massenspeichereinrichtung 170 speichert Archivinformationen,
wie beispielsweise Code (z. B. Prozessor-Nub 18), Programme,
Dateien, Daten, Anwendungen (z. B. Anwendungen 421 bis 42N), Applets (z. B. Applets 461 bis 46K)
und Betriebssysteme. Die Massenspeichereinrichtung 170 kann
eine Compact-Disk(CD)-ROM 172, Disketten 174 und
ein Festplattenlaufwerk 176 sowie andere weitere magnetische
oder optische Speichereinrichtungen umfassen. Die Massenspeichereinrichtung 170 stellt
einen Mechanismus zum Lesen eines maschinenlesbaren Mediums zur
Verfügung.
Wenn sie in Software implementiert sind, sind die Elemente der vorliegenden
Erfindung Codesegmente zum Ausführen
der erforderlichen Aufgaben. Die Programm- oder Codesegmente können in
einem prozessor-lesbaren Medium, wie beispielsweise einem prozessor-lesbaren Medium,
gespeichert sein oder durch ein in einer Trägerwelle enthaltenes Computerdatensignal
oder ein durch einen Träger
moduliertes Signal über
ein Übertragungsmedium übertragen
werden. Das ”prozessor-lesbare
Medium” schließt irgendein
Medium ein, das Informationen speichern oder übertragen kann. Beispiele prozessor-lesbarer
Medien sind elektronische Schaltungen, Halbleiterspeicherbauelemente, ein
ROM, ein Flash-Speicher, ein löschbarer
und programmierbarer ROM (EPROM), eine Diskette, eine CD-ROM, eine
optische Platte, eine Festplatte, ein Lichtleitermedium, eine Hochfrequenz(HF)-Verbindung,
etc. Das Computerdatensignal kann irgendein Signal einschließen, das über ein Übertragungsmedium
weitergeleitet werden kann, wie beispielsweise über elektronische Netzwerkkanäle, Lichtleiter,
Luft, elektromagnetische, HF-Verbindungen, etc. Die Codesegmente
können
heruntergeladen werden über
Computernetzwerke, wie beispielsweise das Internet, ein Intranet,
etc.
-
Die
I/O-Geräte 175 können beliebige
I/O-Geräte
zum Ausführen
von I/O-Funktionen umfassen. Beispiele der I/O-Geräte 175 umfassen
einen Controller für
Eingabeeinrichtungen (z. B. Tastatur, Maus, Trackball, Zeigereinrichtung),
Medienkarten (z. B. Audio-, Video-, Grafikkarten), eine Netzwerkkarte und
irgendwelche anderen Peripheriegerätsteuereinrichtungen.
-
Der
Token-Bus 180 schafft eine Schnittstelle zwischen dem ICH 150 und
verschiedenen Tokens in dem System. Ein Token ist eine Einrichtung,
die spezielle Eingabe/Ausgabe-Funktionen
mit Sicherheitsfunktionalitäten
ausführt.
Ein Token hat Eigenschaften, die ähnlich einer Smart-Card sind,
einschließlich wenigstens
eines öffentlichen/privaten
Schlüsselpaars
für reservierte
Zwecke und der Fähigkeit,
Daten mit dem privaten Schlüssel
zu signieren. Beispiele des mit dem Token-Bus 180 verbundenen
Tokens umfassen ein Mutterplatinen-Token 182, einen Token-Leser 184 und
weitere transportable Tokens 186 (z. B. Smart-Card). Die
Token-Bus-Schnittstelle 159 in
dem ICH 150 koppelt den Token-Bus 180 mit dem ICH 150 und
sichert, daß dann,
wenn der Nachweis des Zustands der isolierten Ausführung angewiesen wird,
das zugehörige
Token (z. B. das Mutterplatinen-Token 182, das Token 186)
nur gültig
isolierte Digest-Informationen signiert. Aus Gründen der Sicherheit sollte
das Token mit dem Digest-Speicher verbunden sein.
-
ISOLIERT-BEFEHLE
-
2 ist
ein Schema, das einen Teil der Isolierte-Ausführung-Schaltung 115,
die in 1C gezeigt ist, gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht. Die Isolierte-Ausführung-Schaltung 115 enthält eine
Ausführungseinheit 230 und
einen Parameterspeicher 240.
-
Die
Ausführungseinheit 230 führt einen
Isoliert-Befehl in dem Prozessor 110, der in 1C gezeigt
ist, aus. Wie oben erörtert,
arbeitet der Prozessor 110 in einer Plattform, die den
MCH, den Systemspeicher 140, den ICH 150 und den
Token-Bus 180 enthält,
wie es in 1C gezeigt ist. Darüber hinaus ist
der Prozessor 110 in einem normalen Ausführungsmodus
oder einem isolierten Ausführungsmodus
konfiguriert. Die Ausführungseinheit 230 kann
einen Decodierer zum Decodieren des Isoliert-Befehls, Unterausführungseinheiten
zum Ausführen
der Aufgaben in dem decodierten Befehl, eine arithmetisch-logische
Einheit (ALU) zum Ausführen
arithmetischer und logischer Funktionen und zugehörige Register
enthalten. Die Ausführungseinheit 230 empfängt einen
Isoliert-Befehl 210.
-
Der
Isoliert-Befehl 210 kann auch ein Makrobefehl sein, welcher
eine Reihe von Mikrobefehlen umfaßt, oder ein Befehl einer Assemblersprache.
Der Isoliert-Befehl 210 kann auch ein Befehl einer höheren Programmiersprache
oder eine Funktion, Unterroutine, ein Unterprogramm in einer höheren Sprache
sein. Im Nachfolgenden bezieht sich der Begriff ”Befehl” auf eine abstrakte Konzeption
einer Aufgabe oder ein Funktion, die von dem Prozessor 110 (1C)
ausgeführt
wird. Diese Aufgabe oder Funktion kann durch eine einzelne Operation,
eine Reihe von Mikrooperationen, eine Mikrocoderoutine, einen Makrobefehl,
eine Assemblersprachroutine oder -funktion, eine Anweisung einer
höheren
Sprache, eine Unterroutine oder ein Unterprogramm oder eine Funktion
einer höheren
Sprache oder eine spezielle Hardwareschaltung ausgeführt werden.
-
Der
Isoliert-Befehl 210 schließt eine Reihe von Befehlen
ein. Bei einem Ausführungsbeispiel umfassen
diese Befehle einen Isoliert-Initialisiere(iso_init)-Befehl 212,
einen Isoliert-Schließe(iso_close)-Befehl 214,
einen Isoliert-Eintritt(iso_enter)-Befehl 216,
einen Isoliert-Austritt(iso_exit)-Befehl 218,
einen Isoliert-Konfigurationslese(iso_config_read)-Befehl 222 und
einen Isoliert-Konfigurationsschreib(iso_config_write)-Befehl 224.
Der iso_init-Befehl 212 kann auch als Isoliert-Erzeuge(iso_create)-Befehl
bezeichnet werden.
-
Der
Parameterspeicher 240 enthält wenigstens einen Parameter
zum Unterstützen
der Ausführung
des Isoliert-Befehls 210,
wenn der Prozessor 110 in dem isolierten Ausführungsmodus
konfiguriert ist. Der Parameterspeicher 240 schließt einen
internen Speicher 232 und einen externen Speicher 234 ein.
Der interne Speicher 232 ist im Inneren des Prozessors 110 und
der externe Speicher 234 ist außerhalb des Prozessors 110.
Der Parameter ist ein Isoliert-Merkmal-Wort,
ein Ausführungsmodus-Wort,
ein Logischer-Prozessor-Wert,
eine Isoliert-Einstellung einschließlich eines Maskenwerts und
eines Basiswerts, ein Rahmen, eine physikalische Austrittsadresse,
eine physikalische Eintrittsadresse oder eine physikalische Prozessor-Nub-Lader-Adresse.
-
3 ist
ein Schema, das den internen Speicher 232, der in 2 gezeigt
ist, gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht. Der interne Speicher 232 enthält ein Merkmalsregister 310,
ein Prozessorsteuerregister 320, ein Logischer-Prozessor-Register 330,
ein Isoliert-Einstellungs-Register 340,
einen Rahmenregistersatz 350, ein Austrittsrahmenregister 360,
ein Eintrittsrahmenregister 370 und ein Lader-Register 380.
-
Das
Merkmalsregister 310 speichert das Isoliert-Merkmal-Wort. Das Isoliert-Merkmal-Wort
zeigt die Isoliert-Befehle an, die in dem Prozessor 110 vorhanden
sind, und welche Merkmale der Isoliert-Befehle vorhanden sind. Beispiele
der Merkmale können
den Typ des Isoliert-Befehls, eine Zufallszahl und einen Zufallszahlenstatus
einschließen.
Das Prozessorsteuerregister 320 speichert ein Ausführungsmodus-Wort 322.
Das Ausführungsmodus-Wort 322 speichert
ein Bit um anzuzeigen, ob der Prozessor in dem isolierten Ausführungsmodus
konfiguriert ist. Bei einem Ausführungsbeispiel
wird auf das Ausführungsmodus-Wort
nur durch diejenigen Befehle zugegriffen, die die Steuerung zu oder
aus dem isolierten Ausführungsmodus übertragen.
Beispiele dieser Befehle umfassen die Befehle iso_init, iso_enter
und iso_exit.
-
Das
Logischer-Prozessor-Register 330 speichert einen Logischer-Prozessor-Wert 332.
Der Logischer-Prozessor-Wert 332 zeigt die Nummer des logischen
Prozessors an, der in den isolierten Ausführungsmodus eintrat. Ein physikalischer
Prozessor kann eine Reihe logischer Prozessoren aufweisen, wobei
jeder logische Prozessor einem logischen Prozessor entspricht. Anfänglich ist
der Logischer-Prozessor-Wert 332 gleich Null. Wenn ein
logischer Prozessor in den isolierten Ausführungsmodus eintritt, wird
der Logischer-Prozessor-Wert 322 um Eins inkrementiert.
Wenn ein logischer Prozessor den isolierten Ausführungsmodus verläßt, wird
der Logischer-Prozessor-Wert
um Eins dekrementiert. Der Logischer-Prozessor-Wert 322 hat einen
Maximalwert, um die Anzahl der logischen Prozessoren in dem isolierten
Ausführungsmodus
zu begrenzen. Wenn ein logischer Prozessor austritt und der Logischer-Prozessor-Wert 332 auf
Null dekrementiert ist, so weiß der
logische Prozessor, daß er
der letzte logische Prozessor ist, der aus dem isolierten Ausführungsmodus
zurückgezogen
wird.
-
Der
Rahmenregistersatz 350 speichert eine Anzahl von Werten,
die einem Rahmen entsprechen. Ein Rahmen enthält eine Reihe von Registerwerten, die
gesichert oder wiederhergestellt werden müssen, wenn es ein Verlassen
eines oder einen Eintritt in einen isolierten Ausführungsmodus
gibt.
-
Typischerweise
sind diese Rahmenwerte diejenigen Werte, die erforderlich sind,
um den Zustand des Prozessors zu verfolgen. Bei einem Ausführungsbeispiel
ist der Prozessor vom Pentium-Typ. Die Rahmeninformationen enthalten
die Werte des Steuerregisters 3 (CR3), Steuerregisters 4 (CR4),
die Interrupt-Deskriptor-Task-Register(IDTR)-Basis, die IDTR-Grenze, den Globales-Deskriptor-Task-Register(GDTR)-Basiswert, den GDTR-Grenzwert,
den Task-Register(TR)-Wert, den erweiterten Befehlszeiger (EIP),
den Codesegment(CS)-Wert,
den CS-Deskriptor, die erweiterten Flags (EFLAGS), den erweiterten
Stapelzeiger (ESP), den Stapelsegment(SS)-Wert und den SS-Deskriptor.
Ein einem Austritt aus einem oder einem Eintritt in einen isolierten
Ausführungsmodus
entsprechender Rahmen wird als Austrittsrahmen bzw. Eintrittsrahmen
bezeichnet.
-
Das
Austrittsrahmenregister 360 speichert eine Austrittsadresse 362.
Die Austrittsadresse 362 ist die physikalische Adresse
des Austrittsrahmens. Das Eintrittsrahmenregister 370 speichert
eine Eintrittsadresse 372. Die Eintrittsadresse 372 ist
die physikalische Adresse des Eintrittsrahmens. Das Lader-Register 380 speichert
eine Prozessor-Nub-Lader-Adresse 382. Die Prozessor-Nub-Lader-Adresse 382 ist
die physikalische Adresse des Prozessor-Nub-Laders 52.
-
4 ist
ein Schema, das den externen Speicher 234, der in 2 gezeigt
ist, gemäß einem Ausführungsbeispiel
der Erfindung veranschaulicht. Der externe Speicher 234 umfaßt den MCH-Speicher 410 und
den ICH-Speicher 450.
-
Der
MCH-Speicher 410 befindet sich in dem MCH und ist Teil
der in 1C gezeigten Isolierter-Bereich-Steuerung 135.
Der MCH-Speicher 410 enthält ein MCH-Logischer-Prozessor-Register 420, ein
MCH-Maskenregister 430 und ein MCH-Basisregister 440.
Das MCH-Logischer-Prozessor-Register 420 speichert einen
MCH-Logischer-Prozessor-Wert 422. Der MCH-Logischer-Prozessor-Wert 422 zeigt die
Anzahl der logischen Prozessoren an, die konfiguriert sind, um den
isolierten Bereich 70 in dem Systemspeicher 140,
wie er in 1C gezeigt ist, zu verwenden.
Das MCH-Maskenregister 430 und -Basisregister 440 speichern
den MCH-Maskenwert 432 bzw. den MCH-Basiswert 442.
Der MCH-Maskenwert 432 und der MCH-Basiswert 442 werden
verwendet, um den isolierten Bereich 70 zu definieren.
-
Der
ICH-Speicher 450 befindet sich in dem ICH, der in 1C gezeigt
ist. Der ICH-Speicher 450 enthält ein ICH-Logischer-Prozessor-Register 460, ein
ICH-Maskenregister 470 und ein ICH-Basisregister 480.
Das ICH-Logischer-Prozessor-Register 460 speichert
einen ICH-Logischer-Prozessor-Wert 462. Der ICH-Logischer-Prozessor-Wert 462 zeigt
die Anzahl der logischen Prozessoren an, die so konfiguriert sind,
daß sie
den isolierten Bereich 70 in dem Systemspeicher 140,
wie er in 1C gezeigt ist, verwenden. Das
ICH-Maskenregister 470 und das ICH-Basisregister 480 speichern
einen ICH-Maskenwert 472 bzw.
einen ICH-Basiswert 482. Der ICH-Maskenwert 472 und
der ICH-Basiswert 482 werden verwendet, um den isolierten
Bereich 70 zu definieren. Der ICH-Logischer-Prozessor-Wert 462 bezieht
sich auf sämtliche
logischen Prozessoren in dem Register einschließlich den in separaten unterschiedlichen
physikalischen Prozessoren. Der MCH-Logischer-Prozessor-Wert 422 bezieht
sich jedoch nur auf die logischen Prozessoren in dem physikalischen
Prozessor, mit dem der zugehörige
MCH direkt gekoppelt ist.
-
5 ist
ein Ablaufdiagramm, das einen Prozeß 500 zum Ausführen des
iso_init-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
START bereitet sich der Prozeß 500 auf die
Initialisierung vor (Block 510). Diese Vorbereitung kann
eine Überprüfung des
geschützten
Nicht-Paging-Modus, eine Überprüfung der
Gültigkeit
der Masken- und Basiswerte des isolierten Bereichs einschließen. Dann
bestimmt der Prozeß 500,
ob der isolierte Bereich erzeugt worden ist (Block 520). Wenn
dies der Fall ist, geht der Prozeß 500 zum Block 540.
Anderenfalls erzeugt der Prozeß 500 einen
isolierten Bereich (Block 530). Der Prozeß des Erzeugens
wird in 6A beschrieben.
-
Der
Prozeß 500 setzt
dann den Bereich(range) in den MCH-Registern und den Prozessorregistern
(Block 540). Dies schließt eine Aktualisierung der
Prozessormasken- und Basisregister und der MCH-Masken- und -basisregister
ein. Als nächstes kopiert
der Prozessor 500 den Prozessor-Nub-Lader aus dem ICH in
den isolierten Bereich unter Verwendung der Prozessor-Nub-Lader-Adresse
in dem Lader-Register (Block 550).
-
Dann
initialisiert der Prozeß 500 den
isolierten Bereich für
die Plattform (Block 560). Dann gewinnt der Prozeß 500 einen
Ort oder eine physikalische Adresse des Prozessor-Nubs (Block 570).
Als nächstes überträgt der Prozessor 500 die
Kontrolle an den Prozessor-Nub-Lader, indem er den Prozessor-Nub-Lader-Code
ausführt
(Block 580). Der Prozeß 500 ist
dann beendet.
-
6A ist
ein Ablaufdiagramm, das den Prozeß 530 zum Ausführen der
Erzeugungsfunktion in dem iso_init-Befehl gemäß einem Ausführungsbeispiel
der Erfindung veranschaulichen.
-
Bei
START bestimmt der Prozeß 530,
ob die Größe des Prozessor-Nub-Laders
kleiner als oder gleich dem Bereich des isolierten Bereichs ist,
wie er durch den Maskenwert definiert ist (Block 610).
Wenn nicht, dann ist der isolierte Bereich nicht groß genug, um
den vollständigen
Prozessorhub-Lader zu speichern, so daß der Prozeß 530 eine Fehlschlag-
oder Fehlerbedingung erzeugt (Block 615). Anderenfalls konfiguriert
der Prozeß 530 den
Prozessor in den isolierten Ausführungsmodus,
indem er das/die richtige(n) Bit(s) in dem Ausführungsmodus-Wort setzt (Block 620).
-
Dann
bestimmt der Prozeß 530,
ob der Prozessor der erste Prozessor ist, der den isolierten Bereich
erzeugen soll (Block 625). Wenn dies nicht der Fall ist,
bestimmt der Prozessor 530, ob der Prozessor-Nub initialisiert
worden ist (Block 630). Wenn der Prozessor-Nub nicht initialisiert worden
ist, erzeugt der Prozeß 530 eine
Fehlschlag- oder Fehlerbedingung (Block 635). Wenn der
Prozessor-Nub richtig initialisiert worden ist, liest der Prozeß 530 globale
Prozessoreinstellungen einschließlich der Masken- und Basiswerte
(Block 640). Dann initialisiert der Prozeß 530 die
Prozessoreinstellungen, indem er die globalen Einstellungen in die
Prozessoreinstellungen überträgt (Block 645).
Der Prozessor 530 ist dann beendet oder kehrt zum Hauptprozeß zurück.
-
Sofern
der Prozessor der erste Prozessor ist, der den isolierten Bereich
erzeugen soll, bestimmt der Prozeß 530, ob der Modus
auf die Initialisierung wartet (Block 650). Dies kann erreicht
werden, indem ein Statuswert aus dem ICH gelesen wird. Wenn der Status
anzeigt, daß der
Modus nicht auf die Initialisierung wartet, erzeugt der Prozeß 530 eine
Fehlschlag- oder Fehlerbedingung (Block 655). Anderenfalls
bestimmt der Prozeß 530,
ob es bereits einen isolierten Bereich gibt (Block 660).
Wenn es bereits einen isolierten Bereich gibt, geht der Prozeß 530 zum
Block 670. Wenn es keinen isolierten Bereich gibt, sichert der
Prozeß 530 die
Einstellungen (zum Beispiel Basis- und Maskenwerte) in dem ICH (Block 665).
Dann gewinnt der Prozeß 530 die
Einstellungen (z. B. Basis- und Maskenwert) aus dem ICH (Block 670).
Der Prozeß 530 ist
dann beendet oder gibt zum Hauptprozeß zurück.
-
6B ist
ein Ablaufdiagramm, das den Prozeß 580 zum Ausführen der
Prozessor-Nub-Lader-Funktion in dem iso_init-Befehl gemäß einem Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
START kopiert der Prozessor 580 den Prozessor-Nub in den
isolierten Bereich unter Verwendung der physikalischen Prozessor-Nub-Adresse
in dem Prozessor-Nub-Lader (Block 675). Dann überprüft der Prozessor 580 die
Signatur des Prozessor-Nubs unter Verwendung eines öffentlichen Schlüssels in
dem Prozessor-Nub-Lader (680). Als nächstes bestimmt der Prozessor 580,
ob die Signatur verifiziert ist (Block 685). Wenn Sie nicht
verifiziert ist, erzeugt der Prozeß 580 eine Fehlschlag-
oder Fehlerbedingung (Block 690). Anderenfalls führt der Prozeß 580 den
Prozessor-Nub aus (Block 695). Der Prozeß 580 ist
dann beendet oder gibt zum Hauptprozeß zurück.
-
7 ist
ein Ablaufdiagramm, das einen Prozeß 700 zum Ausführen des
iso_close-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
START bereitet sich der Prozeß 700 auf das
Schließen
vor (Block 710). Die Vorbereitung kann die Gewinnung des
Austrittsrahmens und das Sichern der aktuellen IDTR-Grenze einschließen. Dann
setzt der Prozeß 700 den
isolierten Ausführungsmodus,
indem er das Isolierter-Ausführungsmodus-Wort
konfiguriert (Block 720). Als nächstes beseitigt der Prozeß 700 den
logischen Prozessor des Prozessors, indem er den Zeiger auf den
Eintrittsrahmens des Prozessors löscht (Block 730).
-
Dann
bestimmt der Prozessor 700, ob dies der letzte logische
Prozessor ist, der aus dem isolierten Ausführungsmodus zurückgenommen
werden soll (Block 740). Wenn dies nicht der Fall ist,
geht der Prozeß 700 zum
Block 760. Anderenfalls setzt der Prozeß 700 die Isolierte-Einstellung-Werte (zum Beispiel
Basis- und Maskenwert) des Prozessors zurück (Block 750). Dann
bestimmt der Prozeß 700,
ob dies der letzte aus dem isolierten Ausführungsmodus zurückzunehmende
Prozessor ist (Block 760). Wenn nicht, geht der Prozeß 700 zum
Block 780. Anderenfalls setzt der Prozeß 700 die Isoliert-Einstellungen
in dem MCH und ICH zurück
(Block 770). Dann löscht der
Prozeß 700 den
isolierten Ausführungsmodus, indem
er das Ausführungsmodus-Wort
schreibt (Block 780). Der Prozeß 700 ist dann beendet.
-
8A ist
ein Ablaufdiagramm, das einen Prozeß 800 zum Ausführen des
iso_enter-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
START bereitet sich der Prozeß 800 für den Eintritt
vor (Block 810). Die Vorbereitung kann die Überprüfung der Rahmenadresse
und das Sichern der aktuellen Steuerregister und der IDTR-Grenze
einschließen.
Dann setzt der Prozeß 800 den
isolierten Ausführungsmodus,
indem er das Ausführungsmodus-Wort
konfiguriert (820). Als nächstes speichert der Prozeß 800 die
Inhalte des Rahmenregistersatzes in einen Austrittsrahmen (Block, 830).
Auf den Austrittsrahmen wird durch eine Austrittsadresse in dem
Austrittsrahmenregister verwiesen. Dann lädt der Prozeß 800 einen
Eintrittsrahmen in den Rahmenregistersatz (Block 840).
Auf den Eintrittsrahmen wird durch die Eintrittsadresse in dem Eintrittsrahmenregister
verweisen. Dann ist der Prozeß 800 beendet.
-
8B ist
ein Ablaufdiagramm, das einen Prozeß 850 zum Ausführen des
iso_exit-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
START bereitet sich der Prozeß 850 für den Austritt
bzw. das Verlassen vor (Block 860). Die Vorbereitung kann
die Überprüfung der
Rahmenadresse und das Löschen
der IDTR-Grenze
einschließen,
um eine richtige Abfertigung (dispatch) an den korrekten Behandler
zu sichern, wenn es eine Maschinenüberprüfung gibt, bevor der Rahmen
zurückgespeichert
oder wiederhergestellt wird. Dann lädt der Prozeß 850 einen
Austrittsrahmen in den Rahmenregistersatz (Block 870).
Auf den Austrittsrahmen wird durch die Austrittsadresse in dem Austrittsrahmenregister
verwiesen. Dann ist der Prozeß 850 beendet.
-
9A ist
ein Ablaufdiagramm, das einen Prozeß 900 zum Ausführen des
iso_config_read-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
START bereitet sich der Prozeß 900 auf das
Lesen des Konfigurationsspeichers vor (Block 910). Die
Vorbereitung kann eine Überprüfung der Adresse
des Konfigurationsspeichers einschließen. Dann gibt der Prozeß 900 den
Inhalt des Konfigurationsspeichers, der dem Parameterspeicher entspricht,
zurück
(920). Dann ist der Prozeß 900 beendet.
-
9B ist
ein Ablaufdiagramm, das einen Prozeß 950 zum Ausführen des
iso_config-Write-Befehls gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
START bereitet sich der Prozeß 950 auf das
Schreiben in den Konfigurationsspeicher vor (Block 960).
Die Vorbereitung kann eine Überprüfung der
Adresse des Konfigurationsspeichers einschließen. Dann schreibt der Prozessor 950 den
Inhalt des Konfigurationsspeicher, der dem Parameterspeicher entspricht
(Block 970). Dann ist der Prozeß 950 beendet.
-
Während diese
Erfindung unter Bezugnahme auf veranschaulichende Ausführungsbeispiele beschrieben
worden ist, soll diese Beschreibung nicht in einem einschränkenden
Sinne ausgelegt werden. Verschiedene Modifikationen der veranschaulichten
Ausführungsbeispiele
sowie weitere Ausführungsbeispiele
der Erfindung, welche Fachleuten, an welche sich die Erfindung richtet,
klar werden, werden als im Geist und Umfang der Erfindung liegend
angesehen.