DE10196006B4 - Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung - Google Patents

Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung Download PDF

Info

Publication number
DE10196006B4
DE10196006B4 DE10196006T DE10196006T DE10196006B4 DE 10196006 B4 DE10196006 B4 DE 10196006B4 DE 10196006 T DE10196006 T DE 10196006T DE 10196006 T DE10196006 T DE 10196006T DE 10196006 B4 DE10196006 B4 DE 10196006B4
Authority
DE
Germany
Prior art keywords
key
nub
processor
platform
isolated
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 - Fee Related
Application number
DE10196006T
Other languages
English (en)
Other versions
DE10196006T1 (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 Wilbraham 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 DE10196006T1 publication Critical patent/DE10196006T1/de
Application granted granted Critical
Publication of DE10196006B4 publication Critical patent/DE10196006B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/2101Auditing as a secondary aspect
    • 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 zum Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung einer geschützten Plattform (100), wobei die geschützte Plattform einen Prozessor aufweist, der entweder in einem normalen Ausführungsmodus oder in einem isolierten Ausführungsmodus konfiguriert ist, wobei die die Einrichtung aufweist:
einen Schlüsselspeicher (155) zum Speichern eines für die geschützte Plattform einzigartigen Anfangsschlüssels (310); und
einen Chiffreschlüsselerzeuger (200) in der geschützten Plattform (100), der eine Hierarchie von Schlüsseln (327, 337, 347, 357) auf der Grundlage des Anfangsschlüssels (310) erzeugt, wobei der Chiffreschlüsselerzeuger (200) einen Schlüsselgenerator (210) für eine Hash-Operation eines ID (228; 320, 330, 340, 350) eines geladenen Softwarecodes mit dem Anfangsschlüssel (310) oder einem Schlüssel (225; 325, 335, 345) von ladendem Softwarecode zum Erzeugen eines Schlüssels (230; 325, 335, 345, 355) des geladenen Softwarecodes und einen Schlüsselauswähler (220) zum Auswählen eines kleineren symmetrischen Chiffreschlüssels (240; 327, 337, 347, 357) auf der Grundlage des Schlüssels (230; 325, 335,...

Description

  • Die vorliegende Erfindung bezieht sich auf eine Einrichtung und ein Verfahren zum Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung einer geschützten Plattform sowie auf eine Plattform mit einer solchen Einrichtung.
  • Fortschritte bei Mikroprozessoren und in der Kommunikationstechnologie eröffneten 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 mit ständig wachsenden Raten in globalen Märkten ausgeführt. Während moderne Mikroprozessorsysteme Benutzern bequeme und effiziente Methoden zur Ausführung des Geschäfts, zur Kommunikation und für Transaktionen zur Verfügung stellen, sind sie unglücklicherweise auch für skrupellose Angriffe anfällig. Beispiele dieser Angriffe umfassen Viren, ein Eindringen, Sicherheitsverletzungen und Verfälschungen, um nur wenige zu nennen. Die Computersicherheit wird folglich zunehmend wichtiger, um die Integrität der Computersysteme zu schützen und das Vertrauen der Benutzer zu erhöhen.
  • Von skrupellosen Angriffen verursachte Gefahren können eine Reihe von Formen annehmen. Ein eingreifender, von der Ferne aus gestarteter Angriff durch Hacker kann den normalen Betrieb eines mit Tausenden oder gar Millionen von Nutzern verbundenen Systems stören. Ein Virusprogramm kann Befehlscode und/oder Daten einer Einzelbenutzerplattform zerstören.
  • Vorhandene Techniken zum Schutz gegen Angriffe haben eine Reihe von Nachteilen. Antivirenprogramme können nur nach bekannten Viren suchen und diese erfassen. Sicherheitskoprozessoren oder Smartcards, die kryptographische oder andere Sicherheitstechniken verwenden, haben Grenzen bei der Geschwindigkeit, Leistung, Speicherkapazität und Flexibilität. Darüber hinaus schafft eine Neuentwicklung von Betriebssystemen Softwarekompabilitätsprobleme und erfordert gewaltige Investitionen bei den Entwicklungsbemühungen.
  • Aus der EP 0 600 112 A1 ist eine Datenverarbeitungsanlage (eine Plattform) mit virtueller Speicheradressierung und schlüsselgesteuertem Zugriff bekannt. Datenabschnitte eines Speichers (z. B. Seiten) sind durch zugeordnete Speicherschlüssel gegen unberechtigten Zugriff geschützt, indem ein Zugriff nur bei Übereinstimmung eines Zugriffsschlüssels mit dem jeweiligen Speicherschlüssel erlaubt wird.
  • Aus der WO 98/44402 A1 ist ein Verfahren zum Verschlüsseln von Daten, welche über das Internet übertragen werden, bekannt, bei dem diese Verschlüsselung ein unberechtigtes Kopieren der Daten auf dem empfangenden Computersystem vermeiden soll.
  • Aufgabe der Erfindung ist es, Schlüssel zum Verschlüsseln von Daten derart bereitzustellen, dass ein unbefugtes Manipulieren der Schlüssel vermieden wird.
  • Diese Aufgabe wird durch eine Einrichtung mit den Merkmalen des Anspruchs 1 bzw. ein Verfahren mit den Merkmalen des Anspruchs 9 bzw. eine Plattform mit den Merkmalen des Anspruchs 18 gelöst.
  • Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Die Aufgabe und die Merkmale der vorliegenden Erfindung werden aus der vorliegenden detaillierten Beschreibung der vorliegenden Erfindung naher ersichtlich, in welcher:
  • 1A ein Schema ist, das ein Betriebssystem gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
  • 1B ist ein Schema, das die Zugreifbarkeit verschiedener Elemente in dem Betriebssystem und dem Prozessor gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
  • 1C ist ein Schema, das ein Computersystem veranschaulicht, in welchem ein Ausführungsbeispiel der Erfindung praktiziert werden kann.
  • 2 ist ein Schema, das einen Chiffreschlüsselerzeuger gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
  • 3 ist ein Schema, das einen Prozeß zum Erzeugen einer Schüsselhierarchie gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
  • 4 ist ein Schema, das ein System zum Sichern eines Anfangsschlüssels, um das Back-up und die Wiederherstellung von Daten zu ermöglichen, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
  • 5 ist ein Ablaufdiagramm, das den Prozeß zum Erzeugen einer Schüsselhierarchie gemäß einem Ausführungsbeispiel der Erfindung näher veranschaulicht.
  • In der folgenden Beschreibung wird eine bestimmte Terminologie verwendet, um bestimmte Merkmale der vorliegenden Erfindung zu diskutieren. Beispielsweise umfaßt eine "Plattform" eine Hardwareausrüstung und Software, die verschiedene Funktionen an gespeicherten Informationen ausführt. Beispiele einer Plattform umfassen beispielsweise einen Computer (zum Beispiel Desktop, Laptop, Hand-held, Server, Workstation, etc.) eine Desktop-Büroausrüstung (z. B. Drucker, Scanner, Faxgerät, etc.), einen drahtlosen Telefonhandapparat, eine Fernseh-Set-Top-Box und dergleichen. Ein "Softwaremodul" enthält Befehlscode, der, wenn er ausgeführt wird, eine bestimmte Funktion durchführt. Ein "nub" ("kleiner Klumpen") ist eine Serie von Codeanweisungen, möglicherweise eine Untermenge des Codes aus einem Softwaremodul. Eine "link" (Verbindung) wird allgemein als eines oder mehrere informationsübertragene Medien definiert (zum Beispiel Draht, Lichtleiter, Kabel, Bus oder drahtlose Signalisiertechnologie).
  • Darüber hinaus ist der Begriff "Informationen" als eines oder mehrere Bits von Daten, Adressen und/oder Steuersignalen definiert. Eine "Hash-Funktion" ist eine mathematische oder andere Funktion, die eine nicht-umkehrbare Konversion von Informationen in eine Darstellung fest vorgegebener Länge ausführt. Normalerweise ist diese als "Hash-Wert" oder "Digest" ("Auswahl") bezeichnete Darstellung von wesentlich geringerer Größe als die ursprünglichen Informationen.
  • Die vorliegende Erfindung ist ein Verfahren und eine Einrichtung zum Erzeugen einer Schüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung einer geschützten Plattform. Um Geheimnisse an bestimmtem Befehlscode, der in der isolierten Ausführung betrieben wird, zu binden, wird eine Schüsselhierarchie mit einer Reihe von symmetrischen Schlüsseln für eine symmetrische Standardchiffre benutzt. Die geschützte Plattform enthält einen Prozessor, der entweder in einem normalen Ausführungsmodus oder einem isolierten Ausführungsmodus konfiguriert ist. Ein Schlüsselspeicher speichert einen Anfangsschlüssel, der für die Plattform einzigartig ist. Ein Chiffreschlüsselerzeuger, der in der geschützten Plattform angeordnet ist, erzeugt die Hierarchie von Schlüsseln auf der Grundlage des Anfangsschlüssels. Der Chiffreschlüsselerzeuger erzeugt eine Reihe von symmetrischen Chiffreschlüsseln, um die Geheimnisse des geladenen Softwarecodes zu schützen.
  • 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 Abteilung der Hardware- und Softwarekomponenten, der so ausgebildet ist, daß er spezielle Aufgaben in dem Betriebssystem ausführt. Die Aufteilung 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. Der 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 geschützten 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 spe zieller 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 hardwarebezogene 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 Betriebssystem- Nub 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 Betriebssystem-Nub 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 eine Plattform 100 veranschaulicht, in welcher ein Ausführungsbeispiel der Erfindung ausgeführt werden kann. Die Plattform 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 nicht-flüchtigen Speicher oder System-Flash-Speicher 160, einen Zufallszahlengenerator 166, 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ß die Plattform 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-32TM 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-Geschützten-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 die Plattform 100 ein Einzelprozessorsystem, wie beispielsweise ein Desktop-Computer sein, welcher nur eine Hauptzentralverarbeitungseinheit, beispielsweise den Prozessor 110, aufweist. Bei anderen Ausführungsbeispielen kann die Plattform 100 mehrere Prozessoren, zum Beispiel die Prozessoren 110, 110a, 110b, etc. enthalten, wie es in 1C gezeigt ist. So kann die Plattform 100 ein Multi-Prozessor-Computersystem mit einer beliebigen Anzahl von Prozessoren sein. Beispielsweise kann die Multi-Prozessor-Plattform 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 der Multi-Prozessor-Plattform 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 Ein richtungen, 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 (DRAN) 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 (1B) 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. Die Plattform 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 einen Digest-Wert (z. B. Hash-Wert). Der Prozessor-Nub-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 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 speichert den Digest-Wert (z. B. Hash-Wert) der geladenen Softwaremodule. Insbesondere erwarten wir, daß der Digest-Speicher den Hash (oder den Zustand des zum Berechnen des Hash benötigten Werts) eines Prüfprotokolls (audit log) speichert. Das Prüfprotokoll enthält Prüfprotokolleinträge. Jeder Prüfprotokolleintrag enthält zumindest den kryptographischen Hash des geladenen Codes, wie beispielweise des Prozessor-Nubs 18, des Betriebssystem(OS)-Nubs 16 und irgendwelcher anderen kritischen Module (z. B. Ring-0-Module), die in den isolierten Bereich geladen werden. Insbesondere ist das Prüfprotokoll eine Auflistung von Daten, die darstellen, welche Informationen erfolgreich in den Systemspeicher 140 nach dem Einschalten der Plattform 100 geladen worden sind. Beispielsweise können die repräsentativen Daten Hash-Werte jedes in dem Systemspeicher 140 während der aktuellen Einschaltperiode der Plattform 100 geladenen Softwaremoduls sein. So kann das Prüfprotokoll als Fingerabdruck dienen, der die in die Plattform geladenen Informationen identifiziert (z. B. den Ring-0-Code, der die Konfiguration und Operation der isolierten Ausführung steuert), und wird verwendet, um den Zustand der aktuellen isolierten Ausführung zu attestieren oder nachzuweisen.
  • Der Speicher 155 des kryptographischen Schlüssels hält einen symmetrischen Verschlüsselungs/Entschlüsselung-Schlüssel, beispielweise einen Anfangsschlüssel (der detaillierter später erörtert werden soll). Der Anfangsschlüssel ist für die Plattform 100 einzigartig. Bei einem Ausführungsbeispiel wird der Anfangsschlüssel durch einen externen Hardware-Zufallszahlgenerator erzeugt und zum Zeitpunkt der Herstellung in die Schmelzsicherungen des Eingabe/Ausgabe-Controller-Hubs (ICH) 150 programmiert. Bei einem anderen Ausführungsbeispiel wird der Anfangsschlüssel durch die Plattform selbst erzeugt, wenn die Plattform 100 erstmalig eingeschaltet wird, wobei der interne Hardwarezufallszahlengenerator 166 der Plattform verwendet wird. In beiden Fällen wird der Anfangsschlüssel in dem geschützten nicht-flüchtigen Speicher der Speichereinheit 155 des kryptographischen Schlüs sels gespeichert. Jedoch ist es klar, daß der Anfangsschlüssel in geschützten nicht-flüchtigen Speichern in anderen Bereichen der Plattform gespeichert werden könnte.
  • Die kryptographische Hash-Einheit 157 enthält eine Logik, die eine Einweg-Hash-Funktion an eingegebenen Informationen durchführt. Der Begriff "Einweg-" zeigt an, daß es nicht ohne weiteres eine inverse Funktion gibt, um irgendeinen wahrnehmbaren Abschnitt der ursprünglichen Informationen aus dem Hash-Wert fester Länge wieder herzustellen. Beispiele einer Hash-Funktion umfassen die von der RSA Data Security aus Redwood City, Kalifornien, zur Verfügung gestellten MD5 oder einen sicheren Hash-Algorithmus (SHA-1), wie er in einer Veröffentlichung des Secure Hash Standard FIPS 180-1 mit dem Titel "Federal Information Processing Standards Publication" (17. April 1995) spezifiziert ist. Die kryptographische Hash-Einheit 157 kann verwendet werden, um Hashing-Funktionen auszuführen, um die Prozessor-Nub-Schlüssel, die OS-Nub-Schlüssel und die Applet-Schlüssel zu erzeugen. Diese Schlüssel werden detaillierter später erörtert.
  • 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.
  • 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 die isolierten Bereiche (in dem Systemspeicher 140), einschließlich der Überprüfung, des Ladens und der Protokollierung (logging) des Betriebssystem-Nubs 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 beliebige weitere magnetische oder optische Speichereinrichtungen umfassen. Die Massenspeichereinrichtung 170 stellt einen Mechanismus zum Lesen eines maschinenlesbaren Mediums zur Verfügung.
  • Die I/O-Geräte 175 können beliebige I/O-Einrichtung zum Durchführen von I/O-Funktionen einschließen. Beispiele der I/O-Geräte 175 sind Controller für Eingabeeinrichtungen (z. B. Tastatur, Maus, Trackball, Zeigergerät), Medienkarten (z. B. Audio-, Video- und Grafikkarten), Netzwerkkarten und irgendwelche anderen Peripheriesteuereinrichtungen.
  • Der Token-Bus 180 stellt eine Schnittstelle zwischen dem ICH 150 und verschiedenen Tokens in dem System zur Verfügung. Ein Token ist eine Einrichtung, die spezielle Eingabe/Ausgabe-Funktionen mit Sicherheitsfunktionalität zur Verfügung stellt. Ein Token weist Charakteristika auf, die ähnlich einer Smart-Card sind, einschließlich wenigstens eines Schlüsselpaars aus öffentlichem/privatem Schlüssel für reservierte Zwecke und der Fähigkeit zum Unterzeichnen von Daten mit dem privaten Schlüssel. 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-Cards). Die Token-Bus-Schnittstelle 159 in dem ICH 150 verbindet sich über den Token-Bus 180 zu dem ICH 150 und sichert, daß dann, wenn sie aufgefordert ist, den Zustand der isolierten Ausführung nachzuweisen, der zugehörige Token (z. B. der Mutterplatinen-Token 182, der Token 186) nur gültig isolierte Digest-Informationen unterzeichnet. Aus Gründen der Sicherheit sollte der Token mit dem Digest-Speicher verbunden sein.
  • 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 maschinenlesbaren 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.
  • ERZEUGUNG EINER SCHLÜSSELHIERARCHIE ZUR VERWENDUNG IN EINER ISOLIERTEN AUSFÜHRUNGSUMGEBUNG
  • Die vorliegende Erfindung ist ein Verfahren, eine Einrichtung und ein System zum Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung einer geschützten Plattform. Um Geheimnisse an einen bestimmten Code zu binden, der in einer isolierten Ausführung betrieben wird, wird eine Schlüsselhierarchie mit einer Reihe von symmetrischen Schlüsseln für eine symmetrische Standard-Chiffre benutzt.
  • 2 ist ein Schema, das einen Chiffreschlüsselerzeuger 200 gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Der Chiffreschlüsselerzeuger enthält einen Schlüsselgenerator 210 und einen Schlüsselauswähler 220. Softwarecode, der gegenwärtig in der isolierten Ausführungsumgebung aktiv ist (d. h. bereits in den isolierten Speicherbereich geladen ist), weist einen ihm zugeordneten Ladungssoftwarecodeschlüssel 225 auf. Der Ladungssoftwarecode, der gegenwärtig aktiv ist, wird verwendet, um den nachfolgenden Softwarecode zu laden. Softwarecode, der nachfolgend in die isolierte Ausführungsumgebung geladen wird, weist einen ihm zugeordneten ID-Wert auf, der als ID des geladenen Softwarecodes 228 bezeichnet ist. Der ID 228 kann der Hash-Wert des geladenen Softwarecodes sein. Jedoch könnte er auch ein anerkannter ID des geladenen Softwarecodes sein.
  • Bei dem Ausführungsbeispiel, bei dem der ID 228 ein anerkannter ID des geladenen Softwarecodes ist, kann der ID 228 an den aktiven ladenden Softwarecode mit Hilfe eines Zertifikats übermittelt werden, daß mit Hilfe eines Zertifikatüberprüfungswurzelschlüssels überprüft wird, der innerhalb des aktiven ladenden Softwarecodes gehalten wird. Bei einem Ausführungsbeispiel besteht das Zertifikat aus dem Zertifikatinhalt und einer digitalen Signatur über den Zertifikatinhalt. Der Zertifikatinhalt kann zumindest aus dem Hash des geladenen Softwarecodes und dem ID-Wert 228 bestehen. Ein Beispiel eines Zertifikats, das benutzt werden könnte, ist ein SPKI-Authorisierungszertifikat (siehe IETF RFC 2693, Internet Engineering Task Force Request for Comments 2693, "SPK1 Certificate Theory", Ellison et al., September 1999). Jedoch ist es Fachleuten klar, daß eine große Vielzahl verschiedener Zertifikatformate benutzt werden könnte.
  • Der Schlüssel 225 des ladenden Softwarecodes und der ID des geladenen Softwarecodes 228 werden als Eingaben dem Schlüsselgenerator 210 zur Verfügung gestellt. Der Schlüsselgenerator 210 erzeugt einen Schlüssel 230 für den geladenen Softwarecode. Der Schlüsselgenerator 210 erzeugt den Schlüssel 230 für den geladenen Softwarecode unter Benutzung einer Funktion, die die Eigenschaften eines kryptographischen Hash aufweist. So kann bei einem Ausführungsbeispiel eine Hashing-Funktion von dem Schlüsselgenerator 210 benutzt werden. Der Schlüsselgenerator erzeugt einen Hash-Wert des Schlüssels 225 des ladenden Softwarecodes und des IDs 228 des geladenen Softwarecodes, um den Schlüssel 230 des geladenen Softwarecodes zu erzeugen. Beispielsweise könnte ein HMAC, der auf SHA-1 basiert, benutzt werden (siehe IETF RFC 2104, Internet Engineering Task Force Request for Comments 2104, "HMAC: Keyed-Hashing for Message Authentication", Krawczyk et al., Februar 1997). Es ist jedoch klar, daß andere allgemein akzeptable kryptographische Hash-Funktionen ebensogut verwendet werden können. Darüber hinaus kann bei einem Ausführungsbeispiel die kryptographische Hash-Einheit 157 (1C) verwendet werden, um die Hashing-Funktion auszuführen. Außerdem ist es klar, daß eine breite Vielfalt anderer Arten von Einwegfunktionen verwendet werden kann, um den Schlüssel 230 des geladenen Softwarecodes zu erzeugen.
  • Im allgemeinen ist der Schlüssel 230 des geladenen Softwarecodes von der Größe eines Hash-Funktionsausgabewerts, aber er könnte von beliebiger Größe sein, vorausgesetzt, er weist zumindest ausreichende Bits auf, um kryptographisch sicher zu sein. Jedoch könnte der Schlüssel 230 für den geladenen Softwarecode nicht klein genug sein zur Verwendung in einem gewünschten symmetrischen Chiffre, wie beispielsweise Triple-DES (Data Encryption Standard) oder AES (der neue Advanced Encryption Standard, der von dem NIST (National Institute of Standards and Technology) ausgewählt worden ist). Folglich wendet der Schlüsselauswähler 220 eine Schlüsselauswahlfunktion an, um einen Schlüssel geeigneter Größe (z. B. 112, 168, 128 oder 256 Bits) aus dem größeren Schlüssel 230 des geladenen Softwarecodes auszuwählen, um einen symmetrischen Chiffreschlüssel 240 für den geladenen Softwarecode zu erzeugen.
  • Der Schlüsselgenerator 210 führt eine Erzeugungsfunktion aus, die mit G() bezeichnet wird, um einen zweiten Schlüssel (mit K2 bezeichnet) aus einem ersten Schlüssel (mit K1 bezeichnet) und einem ID zu erzeugen. Die Gleichung nimmt die Form K2 = G(ID, K1) an. Bei einem Ausführungsbeispiel ist der zweite Schlüssel K2, der erzeugt worden ist, der Schlüssel 230 des geladenen Softwarecodes. So erzeugt die Gleichung K2 = G(ID, K1) den Schlüssel 230 des geladenen Softwarecodes unter Verwendung der G()-Funktion, wobei der ID der ID 228 des geladenen Softwarecodes und K1 der Schlüssel 225 des ladenden Softwarecodes ist. Wie zuvor erörtert, kann die Erzeugungsfunktion G() eine kryptographische Hashing-Funktion sein. Auf die G()-Funktion wird im gesamten Rest des Patents Bezug genommen, um die Erzeugung von Schlüsseln zu beschreiben, wie beispielsweise den Prozessor-Nub-Schlüssel, dem OS-Nub-Schlüssel und Applet-Schlüssel, was später im Detail erörtert wird.
  • Der Schlüsselauswähler 220 führt eine Schlüsselauswahlfunktion S() aus, um einen dritten Schlüssel (der mit K3 bezeichnet ist) aus dem zweiten Schlüssel K2 zu erzeugen. Die Gleichung nimmt die Form K3 = S(K2) an. Die Schlüsselauswahlfunktion S() erzeugt K3, so daß K3 ein ausreichend klei ner symmetrischer Chiffreschlüssel ist, der in einem gewünschten symmetrischen Chiffre verwendet werden kann. Bei einem Ausführungsbeispiel ist der erzeugte dritte Schlüssel K3 der symmetrische Chiffreschlüssel 240 für den geladenen Softwarecode. Wie zuvor erörtert, legt der Schlüsselauswähler 220 die Schlüsselauswahlfunktion S() an, um einen symmetrischen Chiffreschlüssel 240 (K3) der geeigneten Größe (z. B. 112, 168, 128 oder 256 Bits) aus dem größeren Schlüssel 230 des geladenen Softwarecodes auszuwählen, um den symmetrischen Chiffreschlüssel 240 für den geladenen Softwarecode zu erzeugen. Auf die S()-Funktion wird im Rest des Patents Bezug genommen, um die Auswahl von Chiffreschlüsseln zu beschreiben, wie beispielsweise des Prozessor-Nub-Chiffreschlüssels, des OS-Nub-Chiffreschlüssels, und von Applet-Chiffreschlüsseln, was später detaillierter erörtert werden wird.
  • Jedes geladene Softwaremodul, das sich aktuell unter der Kontrolle der isolierten Ausführungsumgebung befindet, weist folglich wenigstens zwei Schlüssel auf, den Schlüssel 230 des geladenen Softwarecodes und den symmetrischen Chiffreschlüssel 240 für den geladenen Softwarecode. Wenn mehrere Verschlüsselungsalgorithmen von dem Softwaremodul benutzt werden, könnte der Softwaremodul mehrere symmetrische Chiffreschlüssel, die in ihrer Form dem symmetrischen Chiffreschlüssel 240 ähnlich sind, aufweisen. Wenn es nur einen aus dem Schlüssel 230 des geladenen Softwarecodes auszuwählenden Schlüssel gibt, kann diese Auswahl die Exklusiv-ODER-Verknüpfung eines oder mehrerer getrennter Segmente des längeren Schlüssels verwenden, wobei diese Segmente die Länge des gewünschten Schlüssels sind. Wenn mehrere kryptographische Schlüssel erzeugt werden sollen, könnte eine Funktion, wenn beispielsweise ein HMAC für S() unter Verwendung eines großen zufällig erzeugten Werts, der für den Algorithmus, für welchen der Schlüssel erzeugt wird, spezifisch ist, als Schlüssel verwendet werden.
  • Die Schlüsselhierarchie
  • 3 ist ein Schema, das einen Prozeß 300 zum Erzeugen einer Schlüsselhierarchie 301 gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Der Prozeß 300 erzeugt die Schlüsselhierarchie 301, welche eine Mehrzahl symmetrischer Schlüssel umfaßt, die von dem Chiffreschlüsselerzeuger 200, wie er zuvor erörtert wurde, erzeugt werden. Die Schlüssel werden benutzt, um Geheimnisse an speziellen Code, der in isolierter Ausführung arbeitet, zu binden.
  • Der isolierte Ausführungsbereich (z. B. isolierter Ausführungsring-0 15 und isolierter Ausführungsring-3 45, wie sie in den 1A und 1B gezeigt sind) ist in Schichten bestückt. Besonders relevant für die isolierte Ausführung und die nachfolgende Diskussion sind der Prozessor-Nub 18, der OS-Nub 16 und Applets 46 (die zuvor detailliert unter Bezugnahme auf die 1A und 1B der Architekturübersicht des Patents erörtert worden sind). Als erstes wird der Prozessor-Nub 18 geladen und übernimmt die Kontrolle über die isolierte Ausführungsumgebung. Der Prozeß 300 erzeugt zunächst einen Prozessor-Nub-Schlüssel (PNK) 325 mit dem Schlüsselgenerator 210. Der Schlüsselgenerator 210 verwendet den Anfangsschlüssel (IK; Initial Key) 310 und den Prozessor-Nub-ID (PNID) 320 als Eingaben. Der Schlüsselgenerator 210 führt eine Erzeugungsfunktion wie folgt durch: PNK = G(IK, PNID), wobei IK 310 der für die Plattform spezifische Anfangsschlüssel und der PNID 320 der ID des Prozessor-Nubs ist. Wie zuvor erörtert, kann die Erzeugungsfunktion G() eine kryptographische Hashing-Funktion sein. Der ID kann der Hash des Codes selbst oder irgendein zertifizierter ID-Wert sein, wie oben erörtert wurde. Jedoch muß dann, wenn er ein zertifizierter Wert ist, der Prozessor-Nub-Lader in der Lage sein, das Zertifikat, das diesen ID-Wert hält, zu validieren.
  • Als nächstes erzeugt der Prozeß 300 einen Prozessor-Nub-Chiffreschlüssel (PNCK) 327 unter Benutzung des Schlüsselauswählers 220. Der Schlüsselauswähler 220 führt eine Schlüsselauswahlfunktion wie folgt durch: PNCK = S(PNK), wobei PNK 325 der Prozessor-Nub-Schlüssel ist. Wie zuvor erörtert, erzeugt die Schlüsselauswahlfunktion S() einen Chiffreschlüssel, der klein genug ist, so daß er in einem gewünschten symmetrischen Chiffre benutzt werden kann. Beispielsweise wendet der Schlüsselauswähler 220 die Schlüsselauswahlfunktion S() an, um einen symmetrischen Schlüssel PNCK 327 der geeigneten Größe (z. B. 112, 168, 128 oder 256 Bits) aus dem PNK 325 auszuwählen. Der Prozessor-Nub 18 verwendet den PNCK 327, um seine Geheimnisse gegenüber dem OS-Nub 16, den Applets 46 und nicht-isolierten Ausführungscode zu schützen.
  • Bei einem Ausführungsbeispiel wird der Anfangsschlüssel (IK) 310 durch einen externen Hardware-Zufallszahlengenerator erzeugt und in Schmelzsicherungen des Eingabe/Ausgabe-Controller-Hub (ICH) 150 (1C) zum Zeitpunkt der Herstellung programmiert. Bei einem anderen Ausführungsbeispiel wird der IK 310 von der Plattform 100 selbst erzeugt, wenn die Plattform erstmalig eingeschaltet wird, unter Verwendung des internen Hardware-Zufallszahlengenerators 166 (1C) der Plattform und wird dann in dem nicht-flüchtigen Speicher des Kryptographischer-Schlüssel-Speichers 155 in dem ICH 150 (1C) gespeichert. Dieses Ausführungsbeispiel reduziert die Chance, daß der IK 310 während der Herstellung gefährdet wird. In beiden Fällen wird der IK 310 in dem geschützten nicht-flüchtigen Speicher des Kryptographischer-Schlüssel-Speichers 155 gespeichert. Es ist jedoch klar, daß der IK 310 in einem geschützten nicht-flüchtigen Speicher in anderen Bereichen der Plattform gespeichert werden könnte.
  • Wenn weitere Softwaremodule (z. B. der OS-Nub 16, Applets 46, etc.) in den isolierten Ausführungsbereich geladen werden, ersetzen die Schlüssel der neu geladenen Module die Schlüssel des Ladungsmoduls. Jedoch wird der IK 310 nicht ersetzt, sondern durch Setzen eines von Hardware setzbaren Flags unzugreifbar gemacht, was ein Lesen des Speicherplatzes verhindert. Das Flag wird ausschließlich durch die totale Reinitialisierung des isolierten Bereichs gelöscht. Erzeugte Schlüssel werden überschrieben und stehen somit nicht mehr zur Verfügung.
  • Wenn der Prozessor-Nub 18 erstmalig geladen wird, veranlaßt der Prozeß 300, daß der Prozessor-Nub-Schlüssel (PNK) 325 und der Prozessor-Nub-Chiffreschlüssel (PNCK) 327 erzeugt werden, wie zuvor erörtert wurde. Wenn der Prozessor-Nub irgendwelche Geheimnisse speichern muß, auf die nur er zugreifen kann, kann er den PNCK 327 als kryptographischen Schlüssel für diesen Zweck benutzen. Wenn der Prozessor-Nub entscheidet, daß der OS-Nub 16 geladen und die Kontrolle ihm übertragen wird, werden der OS-Nub-Schlüssel (OSNK) 335 und der OS-Nub-Chiffreschlüssel (OSNCK) 337 erzeugt, wobei der gleiche Prozeß 300 verwendet wird, wie er zuvor zum Erzeugen des PNK 325 und des PNCK 327 beschrieben worden ist. Darüber hinaus ersetzen der OSNK 335 und der OSNCK 337 den PNK 325 und den PNCK 327 in dem Kryptographischer-Schlüssel-Speicher. Der OSNCK 337 wird von dem OS-Nub verwendet, um dessen Geheimnisse gegenüber anderen OS-Nubs, Applets und nicht-isoliertem Ausführungscode zu schützen. Wenn es jetzt irgendwelche Geheimnisse gibt, die für eine zukünftige Verwendung durch den OS-Nub verfügbar gemacht werden sollen, können diese durch den OSNCK 337 verschlüsselt werden. Jedoch sind irgendwelche Geheimnisse, die unter dem PNCK 327 verschlüsselt worden sind, nicht für den OS-Nub oder irgendeine andere Software, die auf diese Plattform geladen werden soll, verfügbar.
  • Dieser Prozeß 300 kann aufeinanderfolgend für beliebige und sämtliche Ebenen der Softwarecodeladung wiederholt werden. 3 zeigt vier Ebenen oder Schichten für: den Prozessor-Nub, den OS-Nub, das Applet-1 und den Applet-1-Sub- Prozeß. Der Prozeß 300 erzeugt den Applet-1-Schlüssel (A1K) 345 und den Applet-1-Chiffreschlüssel (A1CK) 347 für das Applet-1 und den Applet-1-Sub-Prozeß-Schlüssel (A1SK) 355 und den Applet-1-Sub-Prozeß-Chiffreschlüssel (A1SCK) 357 für einen Applet-1-Sub-Prozeß unter Verwendung des gleichen Prozesses 300, wie er zuvor zum Erzeugen des Prozessor-Nub- und OS-Nub-Schlüssels beschrieben worden ist. Es ist klar, daß die Schlüsselhierarchie 301 und der Prozeß 300 nur Beispiele sind und daß andere Schlüsselhierarchien sowie Prozesse zum Erzeugen dieser Schlüsselhierarchien zum Schützen von Geheimnissen in einer isolierten Ausführungsumgebung möglich sind.
  • Ein anderes Ausführungsbeispiel für das Back-up und die Wiederherstellung von Daten
  • 4 ist ein Schema, das ein System 400 zum Sichern eines Anfangsschlüssels zum Ermöglichen eines Back-up und der Wiederherstellung von Daten gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
  • Wie oben beschrieben, ist der Anfangsschlüssel (IK) 310 für jede Plattform einzigartig und in diese Plattform eingeschlossen (d. h., er ist permanent in dem geschützten nicht-flüchtigen Speicher des Kryptographischer-Schlüssel-Speichers 155 (1C) gespeichert). Unglücklicherweise gibt es bei diesem Ausführungsbeispiel keine Möglichkeit, den IK 310 zu sichern oder wiederherzustellen. Ein anderes Ausführungsbeispiel der Erfindung gestattet, daß der IK 310 gesichert (backed-up) und wiederhergestellt wird, wie es in 4 gezeigt ist. Dies ist für einen Benutzer wünschenswert, der wertvolle Geheimnisse an die Plattform bindet und dann seine Hardware zu irgendeinem späteren Zeitpunkt aufzurüsten wünscht. Die Aufrüstung könnte geschehen, weil der Plattformbesitzer beschlossen hat, eine neuere, schnellere Hardware zu verwenden. Alternativ könnte die Aufrüstung ge schehen, da die Plattform plötzlich und katastrophal ausfällt und ersetzt werden muß.
  • Bei diesem Ausführungsbeispiel gibt es ein Schlüssel-gesichert-Flag 402 in einem nicht-flüchtigen Speicher, das immer dann gelöscht wird, wenn ein neuer Anfangsschlüssel (IK) 310 erzeugt wird (aber nicht, wenn er wiederhergestellt wird). Solange dieses Flag gelöscht ist, ist es dem Verschlüsseler 404 gestattet, den IK 310 zu verschlüsseln. Der Verschlüsseler 404 führt eine Verschlüsselungsfunktion zum Entschlüsseln des IK 310 unter Verwendung eines kryptographischen Schlüssels 420, der von dem Benutzer (vermutlich dem Plattformbesitzer) zur Verfügung gestellt wird, aus. Das verschlüsselte Ergebnis ist der gesicherte IK 410. Der gesicherte IK 410 kann durch jedermann gelesen werden. Insbesondere kann der gesicherte IK 410 durch normale Back-up-Werkzeuge gesichert werden. Wenn der gesicherte IK 410 erzeugt wird, wird das Schlüssel-gesichert-Flag 402 gesetzt, was jegliche zukünftige Sicherung des IK 310 verhindert.
  • Zu jedem beliebigen zukünftigen Zeitpunkt ist der Benutzer in der Lage, den richtigen kryptographischen Schlüssel 420 und einen früher gesicherten IK 410 einem Entschlüsseler 430 zur Verfügung zu stellen, der eine Entschlüsselungsfunktion durchführt, um den IK 310 zu überschreiben. Dies ermöglicht einem Plattformbesitzer, eine fehlerhafte Plattform einschließlich sämtlicher Geheimnisse, die in den isolierten Bereich der Plattform eingebunden wurden, zu ersetzen. Die Verschlüsselungs- und Entschlüsselungsfunktionen des Verschlüsselers 404 bzw. des Entschlüsselers 430 können allgemein akzeptable symmetrische kryptographische Funktionen sein, wie beispielsweise Triple-DES (Data Encryption Standard) oder AES (der neue Advanced Encryption Standard, der von dem NIST (National Institute of Standards and Technology) ausgewählt wurde).
  • 5 ist ein Ablaufdiagramm, das den Prozeß des Erzeugens einer Schlüsselhierarchie gemäß einem Ausführungsbeispiel der Erfindung näher veranschaulichen.
  • Bei START erzeugt der Prozeß 500 einen Anfangsschlüssel, der für die Plattform einzigartig ist (beispielsweise auf der Grundlage einer Zufallszahl) (Block 510). Dann speichert der Prozeß 500 den Anfangsschlüssel (Block 520). Als nächstes erzeugt der Prozeß 500 einen Prozessor-Nub-Schlüssel, indem er den Anfangsschlüssel mit dem ID des Prozessor-Nubs einer Hash-Operation unterzieht (Block 530). Der Prozeß 500 wählt dann einen kleineren Prozessor-Nub-Chiffreschlüssel auf der Grundlage des Prozessor-Nub-Schlüssels aus (Block 540). Bei Block 550 erzeugt der Prozeß 500 einen OS-Nub-Schlüssel, indem er den Prozessor-Nub-Schlüssel mit dem ID des OS-Nubs einer Hash-Operation unterzieht. Dann wählt der Prozeß 500 einen kleineren OS-Nub-Chiffreschlüssel auf der Grundlage des OS-Nub-Schlüssels aus (Block 560). Als nächstes erzeugt der Prozeß 500 einen Applet-Schlüssel, indem er den OS-Nub-Schlüssel mit dem ID des Applets einer Hash-Operation unterzieht (Block 570). Bei Block 580 wählt der Prozeß 500 einen kleineren Applet-Chiffreschlüssel auf der Grundlage des Applet-Schlüssels aus. Der Prozeß 500 wird dann beendet.
  • Während diese Erfindung unter Bezugnahme auf veranschaulichende Ausführungsbeispiele beschrieben wurde, soll diese Beschreibung nicht in einem einschränkenden Sinne ausgelegt werden.

Claims (18)

  1. Einrichtung zum Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung einer geschützten Plattform (100), wobei die geschützte Plattform einen Prozessor aufweist, der entweder in einem normalen Ausführungsmodus oder in einem isolierten Ausführungsmodus konfiguriert ist, wobei die die Einrichtung aufweist: einen Schlüsselspeicher (155) zum Speichern eines für die geschützte Plattform einzigartigen Anfangsschlüssels (310); und einen Chiffreschlüsselerzeuger (200) in der geschützten Plattform (100), der eine Hierarchie von Schlüsseln (327, 337, 347, 357) auf der Grundlage des Anfangsschlüssels (310) erzeugt, wobei der Chiffreschlüsselerzeuger (200) einen Schlüsselgenerator (210) für eine Hash-Operation eines ID (228; 320, 330, 340, 350) eines geladenen Softwarecodes mit dem Anfangsschlüssel (310) oder einem Schlüssel (225; 325, 335, 345) von ladendem Softwarecode zum Erzeugen eines Schlüssels (230; 325, 335, 345, 355) des geladenen Softwarecodes und einen Schlüsselauswähler (220) zum Auswählen eines kleineren symmetrischen Chiffreschlüssels (240; 327, 337, 347, 357) auf der Grundlage des Schlüssels (230; 325, 335, 345, 355) des geladenen Softwarecodes aufweist.
  2. Einrichtung nach Anspruch 1, wobei der Anfangsschlüssel (310) in durchtrennbaren Leitungsverbindungen eines Eingabe/Ausgabe-Steuer-Hubs (ICH) (150) programmiert ist.
  3. Einrichtung nach Anspruch 2, wobei der Anfangsschlüssel (310) auf einer Zufallszahl basiert.
  4. Einrichtung nach Anspruch 1, wobei der Anfangsschlüssel (310) von der Plattform (100) erzeugt wird, wenn die Plattform (100) erstmalig eingeschaltet wird.
  5. Einrichtung nach Anspruch 4, wobei der Anfangsschlüssel (310) auf einer von einem Zufallszahlengenerator (166) der Plattform (100) erzeugten Zufallszahl basiert.
  6. Einrichtung nach Anspruch 1, wobei der Schlüsselgenerator (210) einen Prozessor-Nub-Schlüssel (325) erzeugt, indem er den Anfangsschlüssel (310) mit einem Prozessor-Nub-ID (320) einer Hash-Operation unterzieht und der Schlüsselauswähler (220) einen kleineren Prozessor-Nub-Chiffreschlüssel (327) auf der Grundlage des Prozessor-Nub-Schlüssels (325) auswählt.
  7. Einrichtung nach Anspruch 6, wobei der Schlüsselgenerator (210) einen OS-Nub-Schlüssel (335) erzeugt, indem er den Prozessor-Nub-Schlüssel (325) mit einem OS-Nub-ID (330) einer Hash-Operation unterzieht und der Schlüsselauswähler (220) einen kleineren OS-Nub-Chiffreschlüssel (327) auf der Grundlage des OS-Nub-Schlüssels (335) auswählt.
  8. Einrichtung nach Anspruch 7, wobei der Schlüsselgenerator (210) einen Applet-Schlüssel (345) erzeugt, indem er den OS-Nub-Schlüssel (335) mit einem Applet-ID (340) einer Hash-Operation unterzieht und der Schlüsselauswähler (220) einen Applet-Chiffreschlüssel (347) auf der Grundlage des Applet-Schlüssels (345) auswählt.
  9. Verfahren zum Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung einer geschützten Plattform, wobei die geschützte Plattform einen Prozessor aufweist, der entweder in einem normalen Ausfüh rungsmodus oder einem isolierten Ausführungsmodus konfiguriert ist, wobei: ein Anfangsschlüssel gespeichert wird; eine Schlüsselhierarchie auf der Grundlage des Anfangsschlüssels in der geschützten Plattform erzeugt wird, indem jeweils ein ID eines geladenen Softwarecodes mit dem Anfangsschlüssel bzw. nachfolgend mit einem Schlüssel eines ladenden Softwarecodes einer Hash-Operation unterzogen wird, um den Schlüssel des geladenen Softwarecodes zu erzeugen, und dann ein kleinerer symmetrischer Chiffreschlüssel aus dem Schlüssel des geladenen Softwarecodes ausgewählt wird.
  10. Verfahren nach Anspruch 9, wobei der Anfangsschlüssel für die Plattform einzigartig ist.
  11. Verfahren nach Anspruch 10, wobei das Speichern des Anfangsschlüssels das Programmieren des Anfangsschlüssels in Schmelzelemente eines Eingabe/Ausgabe-Steuer-Hubs (ICH) umfaßt.
  12. Verfahren nach Anspruch 11, wobei der Anfangsschlüssel auf einer Zufallszahl basiert.
  13. Verfahren nach Anspruch 10, wobei der Anfangsschlüssel unter Benutzung der Plattform erzeugt wird, wenn die Plattform erstmalig eingeschaltet wird.
  14. Verfahren nach Anspruch 13, wobei das Erzeugen des Anfangsschlüssels umfaßt: Erzeugen einer Zufallszahl mit einem Zufallszahlengenerator der Plattform; Erzeugen des Anfangsschlüssels auf der Grundlage der Zufallszahl; und Speichern des Anfangsschlüssels in dem Schlüsselspeicher.
  15. Verfahren nach Anspruch 9, wobei ein Prozessor-Nub-Schlüssel erzeugt wird, indem der Anfangsschlüssel mit einem Prozessor-Nub-ID einer Hash-Operation unterzogen wird; und ein kleinerer Prozessor-Nub-Chiffreschlüssel aus dem Prozessor-Nub-Schlüssel ausgewählt wird.
  16. Verfahren nach Anspruch 15, wobei ein OS-Nub-Schlüssel erzeugt wird, indem der Prozessor-Nub-Schlüssel mit einem OS-Nub-ID einer Hash-Operation unterzogen wird; und ein kleinerer OS-Nub-Chiffreschlüssel aus dem OS-Nub-Schlüssel ausgewählt wird.
  17. Verfahren nach Anspruch 16, wobei ein Applet-Schlüssel erzeugt wird, indem der OS-Nub-Schlüssel mit einem Applet-ID einer Hash-Operation unterzogen wird; und ein kleinerer Applet-Chiffreschlüssel aus dem Applet-Schlüssel ausgewählt wird.
  18. Geschützte Plattform (100), aufweisend: einen Chipsatz (130, 150); einen mit dem Chipsatz (130, 150) gekoppelten Speicher (140), der einen isolierten Speicherbereich (70) aufweist; einen mit dem Chipsatz (130, 150) und dem Speicher (140) gekoppelten Prozessor (110), wobei der Prozessor einen normalen Ausführungsmodus und einen isolierten Ausführungsmodus aufweist, wobei der Prozessor (110) auf den isolierten Speicherbereich (70) zugreift, wenn sich der Prozessor (110) in dem isolierten Ausführungsmodus befindet; und eine Einrichtung nach einem der Ansprüche 1 bis 8.
DE10196006T 2000-03-31 2001-03-14 Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung Expired - Fee Related DE10196006B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/539,348 US6760441B1 (en) 2000-03-31 2000-03-31 Generating a key hieararchy for use in an isolated execution environment
US09/539,348 2000-03-31
PCT/US2001/008365 WO2001075563A2 (en) 2000-03-31 2001-03-14 Generating a key hierarchy for use in an isolated execution environment

Publications (2)

Publication Number Publication Date
DE10196006T1 DE10196006T1 (de) 2003-04-03
DE10196006B4 true DE10196006B4 (de) 2008-07-24

Family

ID=24150840

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10196006T Expired - Fee Related DE10196006B4 (de) 2000-03-31 2001-03-14 Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung

Country Status (9)

Country Link
US (1) US6760441B1 (de)
JP (1) JP4822646B2 (de)
CN (1) CN100386707C (de)
AU (1) AU2001243683A1 (de)
DE (1) DE10196006B4 (de)
GB (1) GB2378794B (de)
HK (1) HK1049721A1 (de)
TW (1) TW563030B (de)
WO (1) WO2001075563A2 (de)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9213836B2 (en) 2000-05-28 2015-12-15 Barhon Mayer, Batya System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US20030159070A1 (en) * 2001-05-28 2003-08-21 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
US20020025045A1 (en) * 2000-07-26 2002-02-28 Raike William Michael Encryption processing for streaming media
US7281010B2 (en) * 2000-11-15 2007-10-09 Lenovo (Singapore) Pte. Ltd. Trusted computing platform with dual key trees to support multiple public/private key systems
US8479293B2 (en) * 2000-11-30 2013-07-02 Access Co., Ltd. Security technique for an open computing platform system
US7215781B2 (en) * 2000-12-22 2007-05-08 Intel Corporation Creation and distribution of a secret value between two devices
JP2003174443A (ja) * 2001-12-07 2003-06-20 Sony Corp 情報処理装置および方法、プログラム格納媒体、並びにプログラム
US7349538B2 (en) * 2002-03-21 2008-03-25 Ntt Docomo Inc. Hierarchical identity-based encryption and signature schemes
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7545931B2 (en) * 2002-04-12 2009-06-09 Microsoft Corporation Protection of application secrets
US7533270B2 (en) * 2002-04-15 2009-05-12 Ntt Docomo, Inc. Signature schemes using bilinear mappings
WO2004021638A1 (en) * 2002-08-28 2004-03-11 Docomo Communications Laboratories Usa, Inc. Certificate-based encryption and public key infrastructure
US6961852B2 (en) 2003-06-19 2005-11-01 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US8139770B2 (en) 2003-12-23 2012-03-20 Wells Fargo Bank, N.A. Cryptographic key backup and escrow system
US7752322B2 (en) * 2004-03-19 2010-07-06 Sony Corporation System for ubiquitous network presence and access without cookies
US7712135B2 (en) 2004-08-05 2010-05-04 Savant Protection, Inc. Pre-emptive anti-virus protection of computing systems
US20060078790A1 (en) * 2004-10-05 2006-04-13 Polyplus Battery Company Solid electrolytes based on lithium hafnium phosphate for active metal anode protection
US20060133607A1 (en) * 2004-12-22 2006-06-22 Seagate Technology Llc Apparatus and method for generating a secret key
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US8295492B2 (en) 2005-06-27 2012-10-23 Wells Fargo Bank, N.A. Automated key management system
JP4328748B2 (ja) * 2005-08-23 2009-09-09 株式会社エヌ・ティ・ティ・ドコモ 鍵更新方法、鍵隔離型暗号システム及び端末装置
US20080244275A1 (en) * 2007-03-30 2008-10-02 Motorola, Inc. Instruction Transform for the Prevention and Propagation of Unauthorized Code Injection
US9258385B2 (en) * 2007-09-25 2016-02-09 Infineon Technologies Ag Method for loading a program module into a network device and network with network devices
US8160247B2 (en) * 2007-09-27 2012-04-17 Adobe Systems Incorporated Providing local storage service to applications that run in an application execution environment
US20090119215A1 (en) * 2007-11-07 2009-05-07 Microsoft Corporation Secure e-payments
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
CN101739756B (zh) * 2008-11-10 2012-01-11 中兴通讯股份有限公司 一种智能卡密钥的生成方法
US20120066501A1 (en) * 2009-03-17 2012-03-15 Chuyu Xiong Multi-factor and multi-channel id authentication and transaction control
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
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
US8479286B2 (en) * 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US20120054501A1 (en) * 2010-08-25 2012-03-01 Toshiba Tec Kabushiki Kaisha Image processing apparatus
US20120069995A1 (en) * 2010-09-22 2012-03-22 Seagate Technology Llc Controller chip with zeroizable root key
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
KR20140043068A (ko) * 2011-02-17 2014-04-08 타세라, 아이엔씨. 애플리케이션 증명을 위한 시스템 및 방법
US8990948B2 (en) 2012-05-01 2015-03-24 Taasera, Inc. Systems and methods for orchestrating runtime operational integrity
DE102012220767A1 (de) * 2012-11-14 2014-05-28 Siemens Aktiengesellschaft Verfahren und Vorrichtungen zum Installieren von Gebäudesteuerungssoftware
EP2735992B1 (de) * 2012-11-22 2018-03-28 Nxp B.V. Software-Identifizierung
TWI633458B (zh) * 2014-02-25 2018-08-21 美商凱為公司 用於對受保護的硬體資源的軟體啟用接入的半導體和電腦
FR3018371B1 (fr) * 2014-03-10 2016-05-06 Commissariat Energie Atomique Procede et systeme de chiffrement/dechiffrement de donnees a cle distante et verification prealable de jeton
US9489508B2 (en) 2014-11-13 2016-11-08 Seagate Technology Llc Device functionality access control using unique device credentials
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
GB2553376A (en) * 2016-09-06 2018-03-07 Trustonic Ltd Future constraints for hierarchical chain of trust
US11115205B2 (en) 2016-09-29 2021-09-07 Nokia Technologies Oy Method and apparatus for trusted computing
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
CN108021812B (zh) * 2016-10-28 2020-08-18 深圳市中兴微电子技术有限公司 一种芯片的安全启动方法及装置
US11438155B2 (en) * 2017-01-24 2022-09-06 Microsoft Technology Licensing, Llc Key vault enclave
EP3809625A4 (de) 2018-10-09 2021-09-08 Huawei Technologies Co., Ltd. Chip, verfahren zur erzeugung eines privaten schlüssels und verfahren zur vertrauenswürdigen verifizierung

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0600112A1 (de) * 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
WO1998044402A1 (en) * 1997-03-27 1998-10-08 British Telecommunications Public Limited Company Copy protection of data

Family Cites Families (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4162536A (en) 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4276594A (en) 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
JPS5576447A (en) 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4307214A (en) 1979-12-12 1981-12-22 Phillips Petroleum Company SC2 activation of supported chromium oxide catalysts
US4319323A (en) 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
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
JPS59111561A (ja) 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
US4759064A (en) 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
FR2592510B1 (fr) 1985-12-31 1988-02-12 Bull Cp8 Procede et appareil pour certifier des services obtenus a l'aide d'un support portatif tel qu'une carte a memoire
FR2601535B1 (fr) 1986-07-11 1988-10-21 Bull Cp8 Procede pour certifier l'authenticite d'une donnee echangee entre deux dispositifs connectes en local ou a distance par une ligne de transmission
FR2601525B1 (fr) 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
FR2601476B1 (fr) 1986-07-11 1988-10-21 Bull Cp8 Procede pour authentifier une donnee d'habilitation externe par un objet portatif tel qu'une carte a memoire
FR2618002B1 (fr) 1987-07-10 1991-07-05 Schlumberger Ind Sa Procede et systeme d'authentification de cartes a memoire electronique
US5007082A (en) 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US5079737A (en) 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5434999A (en) 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
FR2640798B1 (fr) 1988-12-20 1993-01-08 Bull Cp8 Dispositif de traitement de donnees comportant une memoire non volatile electriquement effacable et reprogrammable
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
JPH0617217B2 (ja) 1989-02-28 1994-03-09 水澤化学工業株式会社 非晶質シリカ・アルミナ系球状粒子及びその製法
US5442645A (en) 1989-06-06 1995-08-15 Bull Cp8 Method for checking the integrity of a program or data, and apparatus for implementing this method
JP2590267B2 (ja) 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
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
CA2010591C (en) 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
CA2027799A1 (en) 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
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
EP0473913A3 (en) 1990-09-04 1992-12-16 International Business Machines Corporation Method and apparatus for providing a service pool of virtual machines for a plurality of vm users
US5317705A (en) 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5437033A (en) 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
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
US5453003A (en) 1991-01-09 1995-09-26 Pfefferle; William C. Catalytic method
JPH04348434A (ja) 1991-05-27 1992-12-03 Hitachi Ltd 仮想計算機システム
US5319760A (en) 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5522075A (en) 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5455909A (en) 1991-07-05 1995-10-03 Chips And Technologies Inc. Microprocessor with operation capture facility
US5274834A (en) * 1991-08-30 1993-12-28 Intel Corporation Transparent system interrupts with integrated extended memory addressing
JPH06236284A (ja) 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5486529A (en) 1992-04-16 1996-01-23 Zeneca Limited Certain pyridyl ketones for treating diseases involving leukocyte elastase
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
US5796835A (en) 1992-10-27 1998-08-18 Bull Cp8 Method and system for writing information in a data carrier making it possible to later certify the originality of this information
JP2765411B2 (ja) 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
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.
FR2704341B1 (fr) 1993-04-22 1995-06-02 Bull Cp8 Dispositif de protection des clés d'une carte à puce.
JPH06348867A (ja) 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
FR2706210B1 (fr) 1993-06-08 1995-07-21 Bull Cp8 Procédé d'authentification d'un objet portatif par un terminal hors ligne, objet portatif et terminal correspondants.
US5459869A (en) 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
FR2717286B1 (fr) 1994-03-09 1996-04-05 Bull Cp8 Procédé et dispositif pour authentifier un support de données destiné à permettre une transaction ou l'accès à un service ou à un lieu, et support correspondant.
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
JPH0855023A (ja) * 1994-07-25 1996-02-27 Motorola Inc データ処理システムおよびその方法
US5978481A (en) 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
US6058478A (en) 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
FR2725537B1 (fr) 1994-10-11 1996-11-22 Bull Cp8 Procede de chargement d'une zone memoire protegee d'un dispositif de traitement de l'information et dispositif associe
US5903752A (en) 1994-10-13 1999-05-11 Intel Corporation Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US5606617A (en) 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US6269392B1 (en) 1994-11-15 2001-07-31 Christian Cotichini Method and apparatus to monitor and locate an electronic device using a secured intelligent agent
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
FR2731536B1 (fr) 1995-03-10 1997-04-18 Schlumberger Ind Sa Procede d'inscription securisee d'informations dans un support portable
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
JP3451595B2 (ja) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5737760A (en) 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3693721B2 (ja) 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
IL116708A (en) 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
WO1997025798A1 (en) 1996-01-11 1997-07-17 Mrj, Inc. System for controlling access and distribution of digital property
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
JPH09259104A (ja) * 1996-03-21 1997-10-03 Vlsi Technol Inc 保護された内部オペレーティングシステムを有する二重目的の保全アーキテキチャ
US5978892A (en) 1996-05-03 1999-11-02 Digital Equipment Corporation Virtual memory allocation in a virtual address space having an inaccessible gap
US6178509B1 (en) 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US6205550B1 (en) 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6175925B1 (en) 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
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
US6055637A (en) 1996-09-27 2000-04-25 Electronic Data Systems Corporation System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential
US5937063A (en) 1996-09-30 1999-08-10 Intel Corporation Secure boot
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
DE69733986T2 (de) * 1996-10-31 2006-01-26 Matsushita Electric Industrial Co., Ltd., Kadoma Vorrichtung zur verschlüsselten Kommunikation mit beschränkten Schaden bei Bekanntwerden eines Geheimschlüssels
JPH10134008A (ja) 1996-11-05 1998-05-22 Mitsubishi Electric Corp 半導体装置およびコンピュータシステム
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
DE19649292A1 (de) * 1996-11-28 1998-06-04 Deutsche Telekom Ag Verfahren zum Sichern eines durch eine Schlüsselhierarchie geschützten Systems
US5901225A (en) 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5818939A (en) 1996-12-18 1998-10-06 Intel Corporation Optimized security functionality in an electronic system
US6412035B1 (en) 1997-02-03 2002-06-25 Real Time, Inc. Apparatus and method for decreasing the response times of interrupt service routines
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6272637B1 (en) 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6557104B2 (en) * 1997-05-02 2003-04-29 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6128387A (en) * 1997-05-19 2000-10-03 Industrial Technology Research Institute Method and system for using a non-inversible transform and dynamic keys to protect firmware
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
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)
US6212635B1 (en) 1997-07-18 2001-04-03 David C. Reardon Network security system allowing access and modification to a security subsystem after initial installation when a master token is in place
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
US6148379A (en) 1997-09-19 2000-11-14 Silicon Graphics, Inc. System, method and computer program product for page sharing between fault-isolated cells in a distributed shared memory system
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US5970147A (en) 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
US6061794A (en) 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6357004B1 (en) 1997-09-30 2002-03-12 Intel Corporation System and method for ensuring integrity throughout post-processing
US6085296A (en) 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6219787B1 (en) 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6308270B1 (en) 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
ATE296519T1 (de) * 1998-03-16 2005-06-15 Intertrust Tech Corp Streaming-media-abspielgerät mit fortdauernde kontrolle und schutz von medieninhalt
US6192455B1 (en) 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6374286B1 (en) 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
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
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
FR2778998B1 (fr) 1998-05-20 2000-06-30 Schlumberger Ind Sa Procede d'authentification d'un code personnel d'un utilisateur d'une carte a circuit integre
JPH11346214A (ja) * 1998-06-02 1999-12-14 Nec Corp 同報配信システム
US6421702B1 (en) 1998-06-09 2002-07-16 Advanced Micro Devices, Inc. Interrupt driven isochronous task scheduler system
US6505279B1 (en) 1998-08-14 2003-01-07 Silicon Storage Technology, Inc. Microcontroller system having security circuitry to selectively lock portions of a program memory address space
US6339815B1 (en) 1998-08-14 2002-01-15 Silicon Storage Technology, Inc. Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space
JP2000076139A (ja) 1998-08-28 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> 携帯型情報記憶媒体
US6363485B1 (en) 1998-09-09 2002-03-26 Entrust Technologies Limited Multi-factor biometric authenticating device and method
US6463535B1 (en) 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform
US6230248B1 (en) 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6445797B1 (en) * 1998-12-16 2002-09-03 Secure Choice Llc Method and system for performing secure electronic digital streaming
US6463537B1 (en) 1999-01-04 2002-10-08 Codex Technologies, Inc. Modified computer motherboard security and identification system
EP1030237A1 (de) 1999-02-15 2000-08-23 Hewlett-Packard Company Vertrautes Hardware-Gerät in einem Rechner
US6272533B1 (en) 1999-02-16 2001-08-07 Hendrik A. Browne Secure computer system and method of providing secure access to a computer system including a stand alone switch operable to inhibit data corruption on a storage device
CA2368858A1 (en) * 1999-04-12 2000-10-19 Digital Media On Demand, Inc. Secure electronic commerce system
US6389537B1 (en) 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US6735313B1 (en) * 1999-05-07 2004-05-11 Lucent Technologies Inc. Cryptographic method and apparatus for restricting access to transmitted programming content using hash functions and program identifiers
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6633981B1 (en) 1999-06-18 2003-10-14 Intel Corporation Electronic system and method for controlling access through user authentication
US6158546A (en) 1999-06-25 2000-12-12 Tenneco Automotive Inc. Straight through muffler with conically-ended output passage
US6301646B1 (en) 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
JP2001148344A (ja) 1999-09-09 2001-05-29 Nikon Corp 露光装置、エネルギ源の出力制御方法、該方法を用いるレーザ装置、及びデバイス製造方法
US6535988B1 (en) 1999-09-29 2003-03-18 Intel Corporation System for detecting over-clocking uses a reference signal thereafter preventing over-clocking by reducing clock rate
US6374317B1 (en) 1999-10-07 2002-04-16 Intel Corporation Method and apparatus for initializing a computer interface
US6292874B1 (en) 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
AU2001251701A1 (en) 2000-02-25 2001-09-03 Identix Incorporated Secure transaction system
WO2001065366A1 (en) 2000-03-02 2001-09-07 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
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6633963B1 (en) 2000-03-31 2003-10-14 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
US6795905B1 (en) 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0600112A1 (de) * 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
WO1998044402A1 (en) * 1997-03-27 1998-10-08 British Telecommunications Public Limited Company Copy protection of data

Also Published As

Publication number Publication date
HK1049721A1 (en) 2003-05-23
US6760441B1 (en) 2004-07-06
DE10196006T1 (de) 2003-04-03
WO2001075563A2 (en) 2001-10-11
GB2378794A (en) 2003-02-19
CN100386707C (zh) 2008-05-07
JP4822646B2 (ja) 2011-11-24
JP2003529984A (ja) 2003-10-07
WO2001075563A3 (en) 2002-05-23
GB0225043D0 (en) 2002-12-04
AU2001243683A1 (en) 2001-10-15
TW563030B (en) 2003-11-21
CN1421000A (zh) 2003-05-28
GB2378794B (en) 2004-07-28

Similar Documents

Publication Publication Date Title
DE10196006B4 (de) Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
DE69725833T2 (de) Gesicherte zweiteilige Benutzer-Authentifizierung in einem Rechnernetz
DE112005003340B4 (de) Mechanismus zum Bestimmen der Vertrauenswürdigkeit von Außerbandverwaltungsagenten
DE60214640T2 (de) Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen
DE10196007B4 (de) Plattform und Verfahren zum Fernattestieren einer Plattform
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE102008011925B4 (de) Sicheres Initialisieren von Computersystemen
DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE60124845T2 (de) Mikroprozessor mit Programm- und Datenschutzfunktion in einer Multitasking Umgebung
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102008006759B4 (de) Prozessor-Anordnung und Verfahren zum Betreiben der Prozessor-Anordnung ohne Verringerung der Gesamtsicherheit
DE112008003855B4 (de) System und Verfahren zum Bereitstellen von sicherem Zugriff auf einen Systemspeicher
DE69727198T2 (de) Durchführen digitaler Unterschriften für Datenströme und Archive
CA2496664C (en) Encrypting operating system
DE102009013384B4 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
DE112009005466T5 (de) Verfahren und Vorrichtung zum Bereitstellen einer sicheren Anwendungsausführung
DE10196440B4 (de) Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung
DE112009004491T5 (de) System und Verfahren zum sicheren Speichern von Daten in einem elektronischen Gerät
CN110637301B (zh) 减少虚拟机中敏感数据的泄密
DE112009002502T5 (de) Multilayer inhalte-schützender Mikrocontoller
CN109918919A (zh) 认证变量的管理
DE112007001321T5 (de) Ausführung eines Sichere-Umgebungs-Initialisierungsbefehls in einem Punkt-zu-Punkt-Verbindungssystem
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE10292364T5 (de) Sichere Maschinenplattform, die mit Betriebssystemen und awendungsspezifischen Steuerprogrammen eine Schnittstelle bildet

Legal Events

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

Ref document number: 10196006

Country of ref document: DE

Date of ref document: 20030403

Kind code of ref document: P

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee