DE10196005B4 - Einrichtung und Verfahren zur isolierten Ausführung von Isoliert-Befehlen - Google Patents

Einrichtung und Verfahren zur isolierten Ausführung von Isoliert-Befehlen Download PDF

Info

Publication number
DE10196005B4
DE10196005B4 DE10196005T DE10196005T DE10196005B4 DE 10196005 B4 DE10196005 B4 DE 10196005B4 DE 10196005 T DE10196005 T DE 10196005T DE 10196005 T DE10196005 T DE 10196005T DE 10196005 B4 DE10196005 B4 DE 10196005B4
Authority
DE
Germany
Prior art keywords
processor
isolated
command
iso
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE10196005T
Other languages
English (en)
Other versions
DE10196005T1 (de
Inventor
Carl M. Portland Ellison
Roger A. Beaverton Golliver
Howard C. Phoenix Herbert
Derrick C. San Mateo Lin
Francis X. Portland Mckeen
Gilbert Portland Neiger
Ken Woodinville Reneris
James A. Portland Sutton
Shreekant S. Portland Thakkar
Millind Palo Alto Mittal
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10196005T1 publication Critical patent/DE10196005T1/de
Application granted granted Critical
Publication of DE10196005B4 publication Critical patent/DE10196005B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Abstract

Einrichtung, aufweisend:
eine Ausführungseinheit (230) zum Ausführen eines Isoliert-Befehls (210) in einem Prozessor (110), der in einer Plattform (100) arbeitet, wobei der Prozessor (110) entweder in einem normalen Ausführungsmodus oder einem isolierten Ausführungsmodus konfiguriert ist; und
einen Parameterspeicher (240), der wenigstens einen Parameter zum Unterstützen der Ausführung des Isoliert-Befehls, wenn der Prozessor (110) in dem isolierten Ausführungsmodus konfiguriert ist, enthält,
wobei der Isoliert-Befehl ein Isoliert-Initialisiere(iso_init)-Befehl (212), ein Isoliert-Schließe(iso_close)-Befehl (214), ein Isoliert-Eintritt(iso_enter)-Befehl (216), ein Isoliert-Verlasse(iso_exit)-Befehl (218), ein Isoliert-Konfigurationslese(iso_config_read)-Befehl (222) oder ein Isoliert-Konfigurationsschreib(iso_config_write)-Befehl (224) ist.

Description

  • 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.

Claims (29)

  1. Einrichtung, aufweisend: eine Ausführungseinheit (230) zum Ausführen eines Isoliert-Befehls (210) in einem Prozessor (110), der in einer Plattform (100) arbeitet, wobei der Prozessor (110) entweder in einem normalen Ausführungsmodus oder einem isolierten Ausführungsmodus konfiguriert ist; und einen Parameterspeicher (240), der wenigstens einen Parameter zum Unterstützen der Ausführung des Isoliert-Befehls, wenn der Prozessor (110) in dem isolierten Ausführungsmodus konfiguriert ist, enthält, wobei der Isoliert-Befehl ein Isoliert-Initialisiere(iso_init)-Befehl (212), ein Isoliert-Schließe(iso_close)-Befehl (214), ein Isoliert-Eintritt(iso_enter)-Befehl (216), ein Isoliert-Verlasse(iso_exit)-Befehl (218), ein Isoliert-Konfigurationslese(iso_config_read)-Befehl (222) oder ein Isoliert-Konfigurationsschreib(iso_config_write)-Befehl (224) ist.
  2. Einrichtung nach Anspruch 1, wobei der wenigstens eine Parameter ein Isoliert-Merkmal-Wort (312), ein Ausführungsmodus-Wort (322), ein Logischer-Prozessor-Wert (332), eine Isoliert-Einstellung (340) einschließlich eines Maskenwerts (343) und eines Basiswerts (345), ein Rahmen, eine physikalische Austrittsadresse (362), eine physikalische Eintrittsadresse (372) oder eine physikalische Prozessor-Nub-Lader-Adresse (382) ist.
  3. Einrichtung nach Anspruch 2, wobei der Parameterspeicher (240) einen internen Speicher (232) und/oder einen externen Speicher (234) umfaßt.
  4. Einrichtung nach Anspruch 3, wobei der interne Speicher (232) ein Merkmalsregister (310) zum Speichern des Isoliert-Merkmal-Worts (312), ein Steuerregister (330) zum Speichern des Ausführungsmodus-Worts (322), ein Logisches-Prozessor-Register (330) zum Speichern eines Logischen-Prozessor-Werts (332), ein Maskenregister (342) zum Speichern des Maskenwerts (343), ein Basisregister (344) zum Speichern des Basiswerts (345), einen Rahmenregistersatz (350) zum Speichern des Rahmens, ein Austrittsrahmenregister (360) zum Speichern der Austrittsadresse (362), ein Eintrittsrahmenregister (370) zum Speichern der Eintrittsadresse (372) und ein Lader-Register (380) zum Speichern der Prozessor-Nub-Lader-Adresse (382) enthält.
  5. Einrichtung nach Anspruch 4, wobei der externe Speicher (234) einen Speicher-Controller-Hub(MCH)-Speicher (410) in einem MCH (130) und einen Eingabe/Ausgabe-Controller-Hub(ICH)-Speicher (450) in einem ICH (150) umfaßt.
  6. Einrichtung nach Anspruch 5, wobei das Ausführungsmodus-Wort (322) den Prozessor (110) in den isolierten Ausführungsmodus konfiguriert.
  7. Einrichtung nach Anspruch 6, wobei der iso_init-Befehl (212) dann, wenn er ausgeführt wird, den Prozessor (110) veranlaßt, einen isolierten Bereich (70) in einem Speicher (140) zu erzeugen, sofern der isolierte Bereich (70) noch nicht erzeugt worden ist, wobei der isolierte Bereich (70) durch den Basiswert (345) und den Maskenwert (343) definiert ist; einen Bereich des isolierten Bereichs in dem MCH-Speicher (410) zu setzen; einen Prozessor-Nub-Lader (52) in den isolierten Bereich (70) unter Verwendung der Prozessor-Nub-Lader-Adresse (382) in dem Lader-Register (380) zu kopieren; und den Prozessor-Nub-Lader auszuführen.
  8. Einrichtung nach Anspruch 7, wobei der iso_init-Befehl (212) dann, wenn er ausgeführt wird, den Prozessor (110) ferner veranlaßt, den isolierten Bereich (70) für die Plattform zu initialisieren; und einen Ort eines Prozessor-Nubs (18) zu gewinnen.
  9. Einrichtung nach Anspruch 8, wobei der iso_init-Befehl (212), der den Prozessor (110) veranlaßt, den Prozessor-Nub-Lader (52) auszuführen, den Prozessor (110) veranlaßt, den Prozessor-Nub (18) in den isolierten Bereich (70) zu kopieren; und eine Signatur des Prozessor-Nubs (18) unter Verwendung eines in dem Prozessor-Nub-Lader (52) enthaltenen öffentlichen Schlüssels zu überprüfen; und den Prozessor-Nub (18) auszuführen, sofern die Signatur verifiziert ist.
  10. Einrichtung nach Anspruch 6, wobei der iso_close-Befehl (214) dann, wenn er ausgeführt wird, den Prozessor (110) veranlaßt, die Isoliert-Einstellung in dem Prozessor (110) zurückzusetzen, sofern ein zugehöriger logischer Prozessor der letzte zurückgenommene ist; und die Isoliert-Einstellung in dem MCH (130) und dem ICH (150) zurückzusetzen, sofern der Prozessor der letzte zurückgenommene ist.
  11. Einrichtung nach Anspruch 6, wobei der iso_enter-Befehl (216) dann, wenn er ausgeführt wird, den Prozessor (110) veranlaßt, Inhalte des Rahmenregistersatzes (350) in einem Austrittsrahmen zu speichern, wobei auf den Austrittsrahmen durch die Austrittsadresse (362) in dem Austrittsrahmenregister (360) verwiesen wird; und einen Eintrittsrahmen in den Rahmenregistersatz (350) zu laden, wobei auf den Eintrittsrahmen durch die Eintrittsadresse (372) in dem Eintrittsrahmenregister (370) verwiesen wird.
  12. Einrichtung nach Anspruch 6, wobei der iso_exit-Befehl (218) dann, wenn er ausgeführt wird, den Prozessor (110) veranlaßt, einen Austrittsrahmen in den Rahmenregistersatz (350) zu laden, wobei auf den Austrittsrahmen durch die Austrittsadresse (362) in dem Austrittsrahmenregister (360) verwiesen wird.
  13. Einrichtung nach Anspruch 6, wobei der iso_config_read-Befehl (222) dann, wenn er ausgeführt wird, den Prozessor (110) veranlaßt, den Inhalt eines Konfigurationsspeichers, der dem Parameterspeicher entspricht, zurückzugeben.
  14. Einrichtung nach Anspruch 6, wobei der iso_config_write-Befehl (224) dann, wenn er ausgeführt wird, den Prozessor (110) veranlaßt, einen Inhalt eines Konfigurationsspeichers, der dem Parameterspeicher entspricht, zu schreiben.
  15. Verfahren, umfassend: Ausführen eines Isoliert-Befehls durch eine Ausführungseinheit in einem Prozessor, der in einer Plattform arbeitet, wobei der Prozessor in einem normalen Ausführungsmodus oder einem isolierten Ausführungsmodus konfiguriert ist; und Unterstützen der Ausführung des Isoliert-Befehls durch einen Parameterspeicher, der wenigstens einen Parameter enthält, wenn der Prozessor in dem isolierten Ausführungsmodus konfiguriert ist, wobei die Ausführung des Isoliert-Befehls die Ausführung eines Isoliert-Initialisiere(iso_init)-Befehls, eines Isoliert-Schließe(iso_close)-Befehls, eines Isoliert-Eintritts(iso_enter)-Befehls, eines Isoliert-Austritts(iso_exit)-Befehls, eines Isoliert-Konfigurationslese(iso_config_read)-Befehls oder eines Isoliert-Konfigurationsschreib(iso_config_write)-Befehls umfaßt.
  16. Verfahren nach Anspruch 15, wobei der wenigstens eine Parameter 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 ist.
  17. Verfahren nach Anspruch 16, wobei der Parameterspeicher ein interner Speicher oder ein externer Speicher ist.
  18. Verfahren nach Anspruch 17, wobei der interne Speicher ein Merkmalsregister zum Speichern des Isoliert-Merkmal-Worts, ein Steuerregister zum Speichern des Ausführungsmodus-Worts, ein Logisches-Prozessor-Register zum Speichern eines Logischen-Prozessor-Werts, ein Maskenregister zum Speichern des Maskenwerts, ein Basisregister zum Speichern des Basiswerts, einen Rahmenregistersatz zum Speichern des Rahmens, ein Austrittsrahmenregister zum Speichern der Austrittsadresse, ein Eintrittsrahmenregister zum Speichern der Eintrittsadresse und ein Lader-Register zum Speichern der Proezssor-Nub-Lader-Adresse enthält.
  19. Verfahren nach Anspruch 18, wobei der externe Speicher einen Speicher-Controller-Hub(MCH)-Speicher in einem MCH und einen Eingabe/Ausgabe-Controller-Hub(ICH)-Speicher in einem ICH einschließt.
  20. Verfahren nach Anspruch 19, wobei das Ausführungsmodus-Wort den Prozessor in den isolierten Ausführungsmodus konfiguriert.
  21. Verfahren nach Anspruch 20, wobei das Ausführen des iso_init-Befehls umfaßt: Erzeugen eines isolierten Bereichs in einem Speicher, sofern der isolierte Bereich noch nicht erzeugt worden ist, wobei der isolierte Bereich durch den Basiswert und den Maskenwert definiert wird; Setzen eines Bereichs des isolierten Bereichs in dem MCH-Speicher; Kopieren eines Prozessor-Nub-Laders in den isolierten Bereich unter Verwendung der Prozessor-Nub-Lader-Adresse in dem Lader-Register und Ausführen des Prozessor-Nub-Laders.
  22. Verfahren nach Anspruch 21, wobei das Ausführen des iso_init-Befehls ferner umfaßt: Initialisieren des isolierten Bereichs für die Plattform; und Gewinnen eines Orts eines Prozessor-Nubs.
  23. Verfahren nach Anspruch 22, wobei das Ausführen des Prozessor-Nub-Laders umfaßt: Kopieren des Prozessor-Nubs in den isolierten Bereich; Überprüfen einer Signatur des Prozessor-Nubs unter Verwendung eines öffentlichen Schlüssels, der in dem Prozessor-Nub-Lader enthalten ist; und Ausführen des Prozessor-Nubs, sofern die Signatur verifiziert ist.
  24. Verfahren nach Anspruch 20, wobei das Ausführen des iso_close-Befehls umfaßt: Rücksetzen der Isoliert-Einstellung in dem Prozessor, sofern ein zugehöriger logischer Prozessor der letzte zurückgenommene ist; und Rücksetzen der Isoliert-Einstellung in dem MCH und dem ICH, sofern der Prozessor der letzte zurückgenommene ist.
  25. Verfahren nach Anspruch 20, wobei das Ausführen des iso_enter-Befehls umfaßt: Speichern des Inhalts des Rahmenregistersatzes in einem Austrittsrahmen, wobei auf den Austrittsrahmen durch die Austrittsadresse in dem Austrittsrahmenregister verwiesen wird; und Laden eines Eintrittsrahmens in den Rahmenregistersatz, wobei auf den Eintrittsrahmen durch die Eintrittsadresse in dem Eintrittsrahmenregister verwiesen wird.
  26. Verfahren nach Anspruch 20, wobei das Ausführen des iso_exit-Befehls umfaßt: Laden eines Austrittsrahmens in den Rahmenregistersatz, wobei auf den Austrittsrahmen durch die Austrittsadresse in dem Austrittsrahmenregister verwiesen wird.
  27. Verfahren nach Anspruch 20, wobei das Ausführen des iso_config_read-Befehls umfaßt: Rückgeben des Inhalts eines Konfigurationsspeichers, der dem Parameterspeicher entspricht.
  28. Verfahren nach Anspruch 20, wobei das Ausführen des iso_config_write-Befehls umfaßt: Schreiben des Inhalts eines Konfigurationsspeichers, der dem Parameterspeicher entspricht.
  29. Einrichtung nach einem der Ansprüche 1–14, wobei die Einrichtung in dem Prozessor enthalten ist, wobei der Prozessor mit einem Chipsatz und mit einem mit dem Chipsatz gekoppelten Speicher, der einen isolierten Speicherbereich aufweist, gekoppelt ist und wobei der Prozessor, der Chipsatz und der Speicher Teil einer System-Plattform sind.
DE10196005T 2000-03-31 2001-03-23 Einrichtung und Verfahren zur isolierten Ausführung von Isoliert-Befehlen Expired - Lifetime DE10196005B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/541,477 US6507904B1 (en) 2000-03-31 2000-03-31 Executing isolated mode instructions in a secure system running in privilege rings
US09/541,477 2000-03-31
PCT/US2001/009371 WO2001075565A2 (en) 2000-03-31 2001-03-23 Isolated instructions for isolated execution

Publications (2)

Publication Number Publication Date
DE10196005T1 DE10196005T1 (de) 2003-03-13
DE10196005B4 true DE10196005B4 (de) 2011-01-05

Family

ID=24159746

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10196005T Expired - Lifetime DE10196005B4 (de) 2000-03-31 2001-03-23 Einrichtung und Verfahren zur isolierten Ausführung von Isoliert-Befehlen

Country Status (9)

Country Link
US (1) US6507904B1 (de)
JP (1) JP4719398B2 (de)
CN (1) CN1308783C (de)
AU (1) AU2001249395A1 (de)
DE (1) DE10196005B4 (de)
GB (1) GB2377795B (de)
HK (1) HK1050254B (de)
TW (1) TW583584B (de)
WO (1) WO2001075565A2 (de)

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US6957332B1 (en) * 2000-03-31 2005-10-18 Intel Corporation Managing a secure platform using a hierarchical executive architecture in isolated execution mode
US7013481B1 (en) * 2000-03-31 2006-03-14 Intel Corporation Attestation key memory device and bus
US6795905B1 (en) 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US6769058B1 (en) 2000-03-31 2004-07-27 Intel Corporation Resetting a processor in an isolated execution environment
US6934817B2 (en) * 2000-03-31 2005-08-23 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
US6633963B1 (en) 2000-03-31 2003-10-14 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
US7089418B1 (en) * 2000-03-31 2006-08-08 Intel Corporation Managing accesses in a processor for isolated execution
US7194634B2 (en) * 2000-03-31 2007-03-20 Intel Corporation Attestation key memory device and bus
US6754815B1 (en) 2000-03-31 2004-06-22 Intel Corporation Method and system for scrubbing an isolated area of memory after reset of a processor operating in isolated execution mode if a cleanup flag is set
US6760441B1 (en) 2000-03-31 2004-07-06 Intel Corporation Generating a key hieararchy for use in an isolated execution environment
US7013484B1 (en) * 2000-03-31 2006-03-14 Intel Corporation Managing a secure environment using a chipset in isolated execution mode
US6678825B1 (en) 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
US6976162B1 (en) 2000-06-28 2005-12-13 Intel Corporation Platform and method for establishing provable identities while maintaining privacy
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
AU2001271996A1 (en) * 2000-07-18 2002-01-30 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
US7793111B1 (en) * 2000-09-28 2010-09-07 Intel Corporation Mechanism to handle events in a machine with isolated execution
US7958376B2 (en) * 2000-11-02 2011-06-07 Ati Technologies Ulc Write once system and method for facilitating digital encrypted transmissions
US7178035B1 (en) * 2000-11-02 2007-02-13 Ati International, Srl Write once system and method for facilitating digital encrypted transmissions
US7779117B2 (en) 2002-05-31 2010-08-17 Aol Inc. Monitoring digital images
US7818808B1 (en) 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US6961941B1 (en) 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
US7620955B1 (en) 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
US6873988B2 (en) * 2001-07-06 2005-03-29 Check Point Software Technologies, Inc. System and methods providing anti-virus cooperative enforcement
US7024555B2 (en) 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
EP1450252B1 (de) * 2001-11-29 2010-08-18 Fujitsu Limited Zentrale verarbeitungseinrichtung, verfahren, und betriebsprogramm zur verwaltung von mehreren betriebsmoden
EP1331539B1 (de) * 2002-01-16 2016-09-28 Texas Instruments France Sicherer Modus für Prozessoren, die Speicherverwaltung und Unterbrechungen unterstützen
US7631196B2 (en) * 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
CN100339780C (zh) * 2002-04-18 2007-09-26 先进微装置公司 包括可通过安全通信路径连接中央处理器与安全服务处理器的安全执行模式的计算机系统
US7603551B2 (en) * 2003-04-18 2009-10-13 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
WO2003090074A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US6820177B2 (en) 2002-06-12 2004-11-16 Intel Corporation Protected configuration space in a protected environment
US7142674B2 (en) * 2002-06-18 2006-11-28 Intel Corporation Method of confirming a secure key exchange
US7165181B2 (en) * 2002-11-27 2007-01-16 Intel Corporation System and method for establishing trust without revealing identity
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7793286B2 (en) 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7900017B2 (en) 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US20040128345A1 (en) * 2002-12-27 2004-07-01 Robinson Scott H. Dynamic service registry
US7076802B2 (en) * 2002-12-31 2006-07-11 Intel Corporation Trusted system clock
US7334123B2 (en) * 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
US7415708B2 (en) * 2003-06-26 2008-08-19 Intel Corporation Virtual machine management using processor state information
US8104085B2 (en) * 2003-06-27 2012-01-24 Oracle America, Inc. Hybrid system implementing distinct and co-existing application execution environments and methods for implementing the same
US20050044292A1 (en) * 2003-08-19 2005-02-24 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US8122215B1 (en) 2003-09-15 2012-02-21 The Directv Group, Inc. Method and apparatus for verifying memory contents
US7739521B2 (en) * 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
US7610611B2 (en) * 2003-09-19 2009-10-27 Moran Douglas R Prioritized address decoder
US7681046B1 (en) 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US20050080934A1 (en) 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US7177967B2 (en) * 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7496958B2 (en) * 2003-10-29 2009-02-24 Qualcomm Incorporated System for selectively enabling operating modes of a device
US7636844B2 (en) * 2003-11-17 2009-12-22 Intel Corporation Method and system to provide a trusted channel within a computer system for a SIM device
US20050108534A1 (en) * 2003-11-19 2005-05-19 Bajikar Sundeep M. Providing services to an open platform implementing subscriber identity module (SIM) capabilities
US7694151B1 (en) 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US20050152539A1 (en) * 2004-01-12 2005-07-14 Brickell Ernie F. Method of protecting cryptographic operations from side channel attacks
US7802085B2 (en) 2004-02-18 2010-09-21 Intel Corporation Apparatus and method for distributing private keys to an entity with minimal secret, unique information
US20050216920A1 (en) * 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7620949B2 (en) * 2004-03-31 2009-11-17 Intel Corporation Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment
US7590867B2 (en) 2004-06-24 2009-09-15 Intel Corporation Method and apparatus for providing secure virtualization of a trusted platform module
US20050288056A1 (en) * 2004-06-29 2005-12-29 Bajikar Sundeep M System including a wireless wide area network (WWAN) module with an external identity module reader and approach for certifying the WWAN module
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
EP1628235A1 (de) * 2004-07-01 2006-02-22 Texas Instruments Incorporated Verfahren und System zur Integritätssicherstellung des Wechsels in einem sicheren Modus
US7484247B2 (en) 2004-08-07 2009-01-27 Allen F Rozman System and method for protecting a computer system from malicious software
US8640194B2 (en) * 2004-08-25 2014-01-28 Nec Corporation Information communication device and program execution environment control method
US7840962B2 (en) * 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8146078B2 (en) 2004-10-29 2012-03-27 Intel Corporation Timer offsetting mechanism in a virtual machine environment
US8924728B2 (en) * 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
CN101198934B (zh) 2005-06-17 2010-09-15 日本电气株式会社 信息处理设备和恢复方法
US20060294596A1 (en) * 2005-06-27 2006-12-28 Priya Govindarajan Methods, systems, and apparatus to detect unauthorized resource accesses
US7809957B2 (en) 2005-09-29 2010-10-05 Intel Corporation Trusted platform module for generating sealed data
US9573067B2 (en) * 2005-10-14 2017-02-21 Microsoft Technology Licensing, Llc Mass storage in gaming handhelds
US7496727B1 (en) 2005-12-06 2009-02-24 Transmeta Corporation Secure memory access system and method
US8959339B2 (en) * 2005-12-23 2015-02-17 Texas Instruments Incorporated Method and system for preventing unauthorized processor mode switches
US8694797B2 (en) 2006-02-14 2014-04-08 Lenovo (Sinapore) Pte Ltd Method for preventing malicious software from execution within a computer system
US8041958B2 (en) 2006-02-14 2011-10-18 Lenovo (Singapore) Pte. Ltd. Method for preventing malicious software from execution within a computer system
JP4575350B2 (ja) * 2006-02-14 2010-11-04 レノボ・シンガポール・プライベート・リミテッド コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US8973094B2 (en) 2006-05-26 2015-03-03 Intel Corporation Execution of a secured environment initialization instruction on a point-to-point interconnect system
WO2008010598A1 (fr) 2006-07-18 2008-01-24 Nec Corporation Dispositif de traitement de communication d'informations, terminal de communication d'informations, système de communication d'informations, procédé de commutation de fonction, et programme de commmutation de fonction
GB0710377D0 (en) * 2007-05-31 2007-07-11 Univ Reading The Processors
US9092212B2 (en) 2007-05-31 2015-07-28 James Arthur Dean Wallace Anderson Processors
US8739156B2 (en) * 2007-07-24 2014-05-27 Red Hat Israel, Ltd. Method for securing the execution of virtual machines
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US8775802B1 (en) 2009-10-23 2014-07-08 Secure Vector Computer security system and method
US10242182B2 (en) 2009-10-23 2019-03-26 Secure Vector, Llc Computer security system and method
US9454652B2 (en) 2009-10-23 2016-09-27 Secure Vector, Llc Computer security system and method
US8429429B1 (en) * 2009-10-23 2013-04-23 Secure Vector, Inc. Computer security system and method
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
EP2676220A4 (de) * 2011-02-17 2018-01-03 Taasera, Inc. System und verfahren zur bescheinigung von anwendungen
US8850588B2 (en) 2012-05-01 2014-09-30 Taasera, Inc. Systems and methods for providing mobile security based on dynamic attestation
US9027102B2 (en) 2012-05-11 2015-05-05 Sprint Communications Company L.P. Web server bypass of backend process on near field communications and secure element chips
US9282898B2 (en) 2012-06-25 2016-03-15 Sprint Communications Company L.P. End-to-end trusted communications infrastructure
US8649770B1 (en) 2012-07-02 2014-02-11 Sprint Communications Company, L.P. Extended trusted security zone radio modem
US8667607B2 (en) 2012-07-24 2014-03-04 Sprint Communications Company L.P. Trusted security zone access to peripheral devices
US9183412B2 (en) 2012-08-10 2015-11-10 Sprint Communications Company L.P. Systems and methods for provisioning and using multiple trusted security zones on an electronic device
US9215180B1 (en) 2012-08-25 2015-12-15 Sprint Communications Company L.P. File retrieval in real-time brokering of digital content
US9015068B1 (en) 2012-08-25 2015-04-21 Sprint Communications Company L.P. Framework for real-time brokering of digital content delivery
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
CN103793647B (zh) * 2012-10-29 2016-09-28 腾讯科技(深圳)有限公司 病毒文件处理系统及方法
US9161227B1 (en) 2013-02-07 2015-10-13 Sprint Communications Company L.P. Trusted signaling in long term evolution (LTE) 4G wireless communication
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US9613208B1 (en) 2013-03-13 2017-04-04 Sprint Communications Company L.P. Trusted security zone enhanced with trusted hardware drivers
US9191388B1 (en) 2013-03-15 2015-11-17 Sprint Communications Company L.P. Trusted security zone communication addressing on an electronic device
US9374363B1 (en) 2013-03-15 2016-06-21 Sprint Communications Company L.P. Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device
US9324016B1 (en) 2013-04-04 2016-04-26 Sprint Communications Company L.P. Digest of biographical information for an electronic device with static and dynamic portions
US9171243B1 (en) 2013-04-04 2015-10-27 Sprint Communications Company L.P. System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device
US9454723B1 (en) 2013-04-04 2016-09-27 Sprint Communications Company L.P. Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device
US9838869B1 (en) 2013-04-10 2017-12-05 Sprint Communications Company L.P. Delivering digital content to a mobile device via a digital rights clearing house
US9443088B1 (en) 2013-04-15 2016-09-13 Sprint Communications Company L.P. Protection for multimedia files pre-downloaded to a mobile device
US9560519B1 (en) 2013-06-06 2017-01-31 Sprint Communications Company L.P. Mobile communication device profound identity brokering framework
US9183606B1 (en) 2013-07-10 2015-11-10 Sprint Communications Company L.P. Trusted processing location within a graphics processing unit
US9208339B1 (en) 2013-08-12 2015-12-08 Sprint Communications Company L.P. Verifying Applications in Virtual Environments Using a Trusted Security Zone
US9185626B1 (en) 2013-10-29 2015-11-10 Sprint Communications Company L.P. Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning
US9191522B1 (en) 2013-11-08 2015-11-17 Sprint Communications Company L.P. Billing varied service based on tier
US9226145B1 (en) 2014-03-28 2015-12-29 Sprint Communications Company L.P. Verification of mobile device integrity during activation
US9230085B1 (en) * 2014-07-29 2016-01-05 Sprint Communications Company L.P. Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services
US9779232B1 (en) 2015-01-14 2017-10-03 Sprint Communications Company L.P. Trusted code generation and verification to prevent fraud from maleficent external devices that capture data
US9838868B1 (en) 2015-01-26 2017-12-05 Sprint Communications Company L.P. Mated universal serial bus (USB) wireless dongles configured with destination addresses
US9405515B1 (en) * 2015-02-04 2016-08-02 Rockwell Collins, Inc. Computing systems utilizing controlled dynamic libraries and isolated execution spaces
US9473945B1 (en) 2015-04-07 2016-10-18 Sprint Communications Company L.P. Infrastructure for secure short message transmission
US9578054B1 (en) * 2015-08-31 2017-02-21 Newman H-R Computer Design, LLC Hacking-resistant computer design
US9819679B1 (en) 2015-09-14 2017-11-14 Sprint Communications Company L.P. Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers
US10282719B1 (en) 2015-11-12 2019-05-07 Sprint Communications Company L.P. Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit
US9817992B1 (en) 2015-11-20 2017-11-14 Sprint Communications Company Lp. System and method for secure USIM wireless network access
WO2017120812A1 (en) * 2016-01-14 2017-07-20 Intel Corporation Secure communication channel for system management mode
CN108090347B (zh) * 2016-11-23 2022-01-14 阿里巴巴集团控股有限公司 一种数据处理方法和系统
US10499249B1 (en) 2017-07-11 2019-12-03 Sprint Communications Company L.P. Data link layer trust signaling in communication network
US10395722B2 (en) * 2017-09-29 2019-08-27 Intel Corporation Reading from a mode register having different read and write timing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
US5255379A (en) * 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4278837A (en) 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4366537A (en) 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4521852A (en) 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
US5075842A (en) 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
EP0600112A1 (de) 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
FR2703800B1 (fr) 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
US5684881A (en) 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5539828A (en) 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
US5473692A (en) 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5978481A (en) 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
JP3672634B2 (ja) * 1994-09-09 2005-07-20 株式会社ルネサステクノロジ データ処理装置
US6058478A (en) 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
US5615263A (en) * 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) * 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
US5717903A (en) * 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
US5657445A (en) 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US6175925B1 (en) 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US6205550B1 (en) 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6178509B1 (en) 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5937063A (en) 1996-09-30 1999-08-10 Intel Corporation Secure boot
US6148401A (en) 1997-02-05 2000-11-14 At&T Corp. System and method for providing assurance to a host that a piece of software possesses a particular property
EP0970411B1 (de) 1997-03-27 2002-05-15 BRITISH TELECOMMUNICATIONS public limited company Datenkopierschutz
JP2944563B2 (ja) * 1997-04-03 1999-09-06 甲府日本電気株式会社 パイプライン型情報処理装置
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6014745A (en) 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
DE19735948C1 (de) 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6219787B1 (en) 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6339826B2 (en) 1998-05-05 2002-01-15 International Business Machines Corp. Client-server system for maintaining a user desktop consistent with server application user access permissions
WO2000062232A1 (en) 1999-04-12 2000-10-19 Digital Media On Demand, Inc. (Dmod, Inc.) Secure electronic commerce system
AU2001243365A1 (en) 2000-03-02 2001-09-12 Alarity Corporation System and method for process protection
CA2341931C (en) 2000-03-24 2006-05-30 Contentguard Holdings, Inc. System and method for protection of digital works

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
US5255379A (en) * 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software

Also Published As

Publication number Publication date
AU2001249395A1 (en) 2001-10-15
GB0225052D0 (en) 2002-12-04
JP4719398B2 (ja) 2011-07-06
TW583584B (en) 2004-04-11
WO2001075565A2 (en) 2001-10-11
CN1423765A (zh) 2003-06-11
HK1050254B (zh) 2005-06-10
JP2004500666A (ja) 2004-01-08
DE10196005T1 (de) 2003-03-13
WO2001075565A3 (en) 2002-06-27
US6507904B1 (en) 2003-01-14
HK1050254A1 (en) 2003-06-13
GB2377795A (en) 2003-01-22
CN1308783C (zh) 2007-04-04
GB2377795B (en) 2004-12-01

Similar Documents

Publication Publication Date Title
DE10196005B4 (de) Einrichtung und Verfahren zur isolierten Ausführung von Isoliert-Befehlen
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
DE10196440B4 (de) Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung
DE10394383B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE10196006B4 (de) Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung
DE10196007B4 (de) Plattform und Verfahren zum Fernattestieren einer Plattform
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
US6633963B1 (en) Controlling access to multiple memory zones in an isolated execution environment
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
US6934817B2 (en) Controlling access to multiple memory zones in an isolated execution environment
US6678825B1 (en) Controlling access to multiple isolated memories in an isolated execution environment
DE112005002304B4 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE112004001605B4 (de) Computersystem, in welchem eine abgesicherte Ausführungsumgebung angewendet wird und in dem eine Speichersteuerung enthalten ist, die zum Löschen des Speichers ausgebildet ist
DE112004002259B4 (de) Zugriff auf private Daten zum Status einer datenverarbeitenden Maschine von einem öffentlich zugänglichen Speicher
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
US6957332B1 (en) Managing a secure platform using a hierarchical executive architecture in isolated execution mode
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
US7013484B1 (en) Managing a secure environment using a chipset in isolated execution mode
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112009000344T5 (de) Zugriffsrechte auf eine Speicher-Map
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102020128050A1 (de) Tdx-inseln mit in sich abgeschlossenem geltungsbereich, wodurch eine tdx-schlüsselkennungsskalierung ermöglicht wird
DE112004000626T5 (de) Verfahren und Gerät zur Schaffung einer Programmlauf- bzw. Ausführungsabschirmung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10196005

Country of ref document: DE

Date of ref document: 20030313

Kind code of ref document: P

R020 Patent grant now final

Effective date: 20110405

R071 Expiry of right