DE10292364T5 - Sichere Maschinenplattform, die mit Betriebssystemen und awendungsspezifischen Steuerprogrammen eine Schnittstelle bildet - Google Patents

Sichere Maschinenplattform, die mit Betriebssystemen und awendungsspezifischen Steuerprogrammen eine Schnittstelle bildet Download PDF

Info

Publication number
DE10292364T5
DE10292364T5 DE10292364T DE10292364T DE10292364T5 DE 10292364 T5 DE10292364 T5 DE 10292364T5 DE 10292364 T DE10292364 T DE 10292364T DE 10292364 T DE10292364 T DE 10292364T DE 10292364 T5 DE10292364 T5 DE 10292364T5
Authority
DE
Germany
Prior art keywords
services
privileged
hardware
security
software
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.)
Ceased
Application number
DE10292364T
Other languages
English (en)
Inventor
William S. Centennial Worley Jr.
John S. Fort Collins Worley
Daniel J. Fort Collins Magenheimer
Tom Fort Collins Christian
Bret Fort Collins McKee
Robert Fort Collins Gardner
Chris D. Fort Collins Hyser
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10292364T5 publication Critical patent/DE10292364T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • G06F21/575Secure boot

Abstract

Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle, wobei die Hardware eine Anzahl von Privilegpegeln, nicht-privilegierten Anweisungen, nicht-privilegierten Registern, privilegierten Anweisungen und privilegierten Registern bereitstellt, wobei die Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle folgende Merkmale aufweist:
nicht-privilegierte Instruktionen und nichtprivilegierte Register, die durch die Hardware-Anweisungssatz-Architektur bereitgestellt werden; und
einen Satz von aufrufbaren Softwarediensten, die, wenn sie aufgerufen werden, auf einem Privilegpegel, die privilegierter als die Privilegpegel der aufrufenden Programme ist, ausgeführt werden können und die für eine Betriebssteuerung der Hardwarebetriebsmittel ohne Preisgabe privilegierter Anweisungen und privilegierter Register der Hardware und ohne Simulieren privilegierter Anweisungen und privilegierter Register sorgen.

Description

  • QUERVERWEIS
  • Diese Anwendung beansprucht das Einreichdatum der mitanhängigen Provisional Applications Nr. 60/296,958, 60/296,957 und 60/297,175, die alle am B. Juni 2001 eingereicht wurden.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf Computerarchitektur, Betriebssysteme, Computersystemsicherheit und insbesondere auf eine sichere Maschine und eine sichere Maschinenschnittstelle, die sichere Speicherverwaltung, abfertigbare Objektabfertigung, Ausnahmenhandhabung, Unterbrechungshandhabung, Fehlerbeseitigung und Leistungsfähigkeitsüberwachung, kryptographische Dienste und sichere Depotdienste für Betriebssysteme und anwendungsspezifische Steuerprogramme liefert.
  • HINTERGRUND DER ERFINDUNG
  • Die Computersicherheit ist in akademischen, staatlichen und kommerziellen Rechenorganisationen zu einem stark untersuchten und entscheidenden Gebiet der Forschung geworden. Obwohl Hersteller und Benutzer von Computersystemen seit vielen Jahren versuchen, sichere Computersysteme zu schaffen, um einen Zugriff auf gespeicherte Daten, Verarbeitungsressourcen bzw. -betriebsmittel und andere Rechnerressourcen in einem Computersystem zu steuern, waren die beträchtlichen Bemühungen von Computerherstellern und -benutzern bisher nicht erfolgreich darin, sichere Compu systeme zu erzeugen. Viele notorische Computersystemsicherheitsverletzungen wurden in den vergangenen Jahren weit publiziert, einschließlich dem Gelddiebstahl von Geldausgabeautomaten und Computersystemen in Finanzinstitutionen, die Beschaffung von streng vertraulichen und geheimen Dokumenten und Informationen von Regierungs-, Handels- und Privatcomputersystemen, eine Anzahl von äußerst aufwendigen und schädlichen Computerviren, die über E-Mail und andere Internet-bezogene Dienste ausgebreitet wurden, und viele andere schwere Sicherheitsverletzungen.
  • Computersicherheitsprobleme bei kommerziellen Computersystemen wurden bis zum heutigen Zeitpunkt überwiegend auf reaktive Weise adressiert. Im allgemeinen werden Sicherheitsprobleme nach der Herstellung neuer kommerzieller Computersysteme erkannt, die potentielle Sicherheitsverletzungen enthalten, und werden durch ziemliche Ad-Hoc-, Nachentwurfs-Methodiken adressiert. Sicherheitstechniken entwickeln sich im allgemeinen als Folge der Entwicklung der darunterliegenden Rechentechnologien und Ressourcen. Obwohl bei bestehenden Systemen verschiedene Sicherheitsprobleme erkannt und ausgebessert werden können, bleiben viele zusätzliche potentielle Sicherheitsprobleme oft unerkannt und für eine spätere Entdeckung durch unaufmerksame und unbeabsichtigte Fehler verfügbar, oder, was häufiger ist, durch systematisches Testen der Computersystemsicherheitsmerkmale durch böswillige Benutzer und Recheneinheiten.
  • Die Erfindung, die nachfolgend erörtert wird, bezieht sich auf Betriebssysteme und Betriebssystem- und Computersystemsicherheit. Um diese Diskussion zu ermöglichen, und um eine weitere Hintergrunddiskussion zu ermöglichen, wird zunächst nachfolgend eine genaue Übersicht von Computerhardwarearchitektur und Betriebssystemen geliefert.
  • 1 ist ein Blockdiagramm, das Hardware-, Betriebssystem- und Anwendungsprogrammschichten in einem allgemeinen Computersystem zeigt. Ein Computersystem 100 kann so gese hen werden, dass es eine Hardwareschicht 102, eine Betriebssystemschicht 104 und eine Anwendungsprogrammierschicht 106 umfaßt. Computersysteme sind relativ komplex, mit vielen zusätzlichen Komponenten, Unterschichten und Logikentitätwechselbeziehungen, aber die in 1 gezeigte Drei-Schicht-Hierarchie stellt eine logische Ansicht von Computersystemen dar, die üblicherweise in der Computersoftware- und Hardwareindustrie verwendet werden.
  • Die Hardwareschicht 102 umfaßt die physikalischen Komponenten eines Computersystems. Diese physikalischen Komponenten umfassen für viele Computersysteme einen Prozessor 108, Speicherspeicherungskomponenten 110, 112 und 114, interne Busse und Signalleitungen 116 bis 119, Busverbindungsgeräte 120 und 122 und verschiedene Mikroprozessor-basierte Peripherieschnittstellenkarten 124 bis 129. Der Prozessor 108 ist eine Anweisungsausführungsvorrichtung, die einen Strom von Anweisungen ausführt, die durch den Prozessor von den internen Speicherkomponenten 110, 112 und 114 erhalten werden. Der Prozessor enthält eine kleine Anzahl von Speicherspeicherungskomponenten, die als Register 130 bezeichnet werden, auf die schnell zugegriffen werden kann, und moderne Prozessoren können auch eine relativ kleine Menge an gespeicherten Anweisungen umfassen. Im allgemeinen werden Daten und Anweisungen von der Nur-Lese-Speicher- („ROM" _ read-only memory) Komponente 110 gelesen, und über interne Busse 116 und 117 und die Busverbindungsvorrichtung 120 von den Speicherkomponenten 112 und 114 gelesen und auf dieselben geschrieben. Eine sehr viel größere Datenspeicherkapazität befindet sich in Peripheriedatenspeichervorrichtungen, wie z. B. Plattenlaufwerken, CD-ROM-Laufwerken, DVD-Laufwerken und anderen solchen Komponenten, auf die durch den Prozessor über interne Busse 116, 118 und 119, Verbindungsvorrichtungen 120 und 122 und eine oder mehrere der Peripherievorrichtungsverbindungskarten 124 bis 129 zugegriffen wird. Beispielsweise können sich die gespeicherten Anweisungen eines großen Programms auf einem Plattenlaufwerk für die Wiedergewinnung und Speicherung in internen Speicherkomponenten 112 und 114 befinden, auf einer Nach-Bedarf-Basis während der Ausführung des Programms. Komplexere Computer können mehrere Prozessoren umfassen, mit entsprechend komplexeren internen Busverbindungen und zusätzlichen Komponenten.
  • Die Betriebssystemschicht 104 ist eine logische Schicht, die verschiedene Softwareroutinen umfaßt, die auf dem Prozessor 108 oder einem oder mehreren eines Satzes von Prozessoren ausgeführt werden, und die die physikalischen Komponenten des Computersystems verwalten. Ein Computerbetriebssystem wird allgemein als die Softwareschicht des niedrigsten Pegels in einem Computersystem angesehen, und dient dazu, eine Kombinierte-Hardware/Softwareumgebung zu erzeugen, bei der Benutzerprogramme, einschließlich Anwendungsprogramme, laufen können, und die die interaktive Verwendung von Computersystemdiensten durch Benutzer durch verschiedene Eingabe/Ausgabe- („I/O" = Input/output) Geräte unterstützt.
  • Betriebssystemroutinen laufen bei einem traditionellen Computersystem bei einer höheren Priorität als Benutzerpegelanwendungsprogramme, dieselben koordinieren die gleichzeitige Ausführung vieler Anwendungsprogramme und liefern jedem Anwendungsprogramm eine Laufzeitumgebung, die eine Prozessorzeit, zumindest einen Speicherbereich, der durch einen Adreßraum adressiert wird, der dem Anwendungsprogramm geliefert wird, und eine Vielzahl von Dateneingabe- und Ausgabediensten umfaßt, einschließlich einem Zugriff auf Speicherkomponenten, Peripheriegeräte, Kommunikationsmedien und andere interne und externe Vorrichtungen.
  • Jedes aktuell laufende Programm wird in dem Kontext eines Prozesses ausgeführt, einer logischen Entität, die durch verschiedene Zustandsvariablen und Datenstrukturen definiert wird, die durch das Betriebssystem verwaltet werden. Eine wichtige interne Datenstruktur, die durch das Betriebssystem verwaltet wird, ist eine oder mehrere Prozeß- Warteschlangen 132, die für jeden aktuell aktiven Prozeß einen Prozeßsteuerblock oder eine ähnliche Datenstruktur enthalten, die Daten speichert, die den Zustand des aktuell aktiven Prozesses definieren, der durch das Betriebssystem verwaltet wird. Das Betriebssystem 104 gibt jedem gleichzeitig ablaufenden Programm die Illusion, daß das Programm die Computerhardware 102 auf eine fortlaufende Weise verwendet, obwohl das Betriebssystem 104 in der Realität zu jedem bestimmten Moment nur höchstens ein Programm pro Prozessor bearbeitet, wobei die Ausführung zwischen den verschiedenen aktuelle aktiven Programmen schnell geschaltet wird, der Kontext eines Programms vor dem Neustarten der Ausführung des Programms wieder hergestellt wird, und der Kontext eines Programms im Speicher gespeichert wird, während das Programm im Leerlauf (inaktiv) ist, um es einem anderen Programm zu ermöglichen, zu laufen. Das Betriebssystem 104 liefert außerdem für Ausführungsprogramme etwas verallgemeinerte logische Schnittstellen, durch die die ausführenden Programme auf viele Typen von entfernten und lokalen Rechenressourcen zugreifen und dieselben verwenden können, einschließlich physikalischem Speicher, Massenspeichervorrichtungen, Kommunikationsnetzwerke, I/O-Geräte und andere Ressourcen.
  • Die Anwendungsprogrammier- und Benutzerschnittstellenschicht 106 ist die für den Benutzer sichtbare Schicht des Computersystems. Ein Anwendungsprogramm umfaßt einen Satz von gespeicherten Anweisungen und Daten 134 in einem Speicherbereich, die in einem Adreßraum adressiert werden, der durch das Betriebssystem dem Prozeß zur Verfügung gestellt wird, der das Anwendungsprogramm ausführt, und Ressourcen 136 bis 142, auf die durch das Anwendungsprogramm durch die Betriebssystemschnittstelle zugegriffen wird, die es dem Anwendungsprogramm ermöglichen, Daten auf externe Vorrichtungen und Datenbankverwaltungssysteme zu speichern und von denselben wiederzugewinnen, Systeminformationen zu erhalten, wie z. B. die Werte eines internen Takts und Systemkonfigurationsinformationen, und auf zusätzliche Dienste zuzugreifen. Der Speicherbereich und die Ressourcen sind in Hardwarespeicher-, Datenspeicherungs-, Kommunikations- und anderen Komponenten implementiert, und sind in 1 in der Anwendungsprogrammier- und Benutzerschnittstellenschicht 106 in einem logischen Sinn gezeigt.
  • Bei früheren Computersystemen gab es keine Betriebssysteme. 2 ist ein Blockdiagramm, das ein frühes Computersystem darstellt. Ein einzelnes Anwendungsprogramm 202 läuft direkt auf der Computersystemhardware 204, bildet eine Schnittstelle mit der Hardware über eine einfache Hardwareschnittstelle 206, die die Maschinenanweisungen und Register umfaßt, die durch die Hardware geliefert werden. Ein Anwendungsprogramm wird als ein Papierband oder Stapel von gelochten Karten in die Maschine geladen, zusammen mit einem Satz von Papierbändern oder gelochten Karten, die verschiedene Rechnerbibliotheken und I/0-Bibliotheken codieren, die Routinen liefern, die von dem Anwendungsprogramm bei der Laufzeit benötigt werden. Bei früheren Maschinen wird ein Anwendungsprogramm geladen und bis zum Abschluß ausgeführt. Die Abwicklung der Anwendungsprogrammausführung wird durch menschliche Systemverwalter ausgeführt, wobei die Papierbänder oder gelochten Karten, die Anwendungsprogramme codieren, physikalisch in Regalen oder Ablagen abgelegt werden, und gemäß den Prioritäten, die den Anwendungsprogrammen zugewiesen sind, von der Zuerst-Hinein-Zuerst-Ausgeführt-Reihenfolge manuell neu geordnet werden.
  • Betriebssysteme entstanden aus einem Wunsch, die Systemverwaltung im Zusammenhang mit dem Laden und Ausführen von Anwendungsprogrammen zu automatisieren, und aus einem Bedarf, eine gleichzeitige Verwendung und interaktive Verwendung von Computersystemen für eine Anzahl von Benutzern bereitzustellen. Betriebssysteme wurden für Großcomputersysteme entwickelt, wie z. B. die IBM System/360-Reihe. 3 ist ein Blockdiagramm, das die logische Position eines Betriebssystems in einem frühen Großcomputer darstellt. Der privilegierteste Teil eines Betriebssystems, der normaler weise als Kernel bzw. Betriebskern 302 bezeichnet wird, bildet eine Schnittstelle mit der Computerhardware 304 durch eine Hardwareschnittstelle, die nicht-privilegierte und privilegierte Anweisungen und Register und Hardwareunterbrechungsmechanismen umfaßt. Die Register und Anweisungen werden in privilegierte und nicht-privilegierte Sätze partitioniert, um eine bestimmte Maschinenfunktionalität für das Betriebssystem zu reservieren, und um Anwendungsprogramme höherer Ebene daran zu hindern, auf diese Funktionalität zuzugreifen. Beispielsweise sind Register, die an der Einstellung der Ausführungspriorität eines laufenden Programms beteiligt sind, im allgemeinen privilegiert, ein Anwendungsprogramm daran zu hindern, die Abwicklung und Prioritätensetzung von Anwendungsprogrammen des Betriebssystems zu durchkreuzen oder zu verfälschen. Das Betriebssystem hat vollen Zugriff sowohl auf privilegierte als auch nicht-privilegierte Anweisungen und Register und auf Hardwareunterbrechungsmechanismen, aber gibt nur nichtprivilegierte Anweisungen und Register für Anwendungsprogramme über die Betriebssystemschnittstelle 308 preis. Zusätzlich zu den nicht-privilegierten Anweisungen liefert die Betriebssystemschnittstelle viele unterschiedliche Betriebssystemdienstroutinen. Wenn ein Anwendungsprogramm 310 beispielsweise auf einer Betriebssystemschnittstelle läuft, muß dasselbe nicht zusammen mit I/0-Bibliotheken verpackt werden, wie in dem Fall von frühen Computersystemen, die keine Betriebssysteme hatten, sondern kann über I/O-Dienstroutinen, die durch das Betriebssystem 302 geliefert werden, auf I/0-Geräte zugreifen.
  • Bei modernen Personalcomputer- („PC"-) Systemen besetzt das Betriebssystem eine ungefähr äquivalente logische Position innerhalb des Systems. 4 ist ein Blockdiagramm der Anwendungs-, Betriebssystem- und Hardwareschichten eines modernen PC. Die Schnittstelle 403 zwischen der PC-Hardware 404 und dem Betriebssystem 406 umfaßt jedoch eine neue Firmwaredienstschnittstelle, die optional teilweise einem Anwendungsprogramm preisgegeben werden kann. Die Firmware schnittstelle umfaßt verschiedene Firmwareroutinen, die eine Steuerung über Hardwaremerkmale liefern, einschließlich Anzeigemerkmale.
  • In modernen Betriebssystemen werden Hardwareprivilegpegel verwendet, um Ressourcen zwischen dem Betriebssystem und anderen Routinen und Programmen zu partitionieren. 5A-D stellen die fundamentalen Privilegpegelmechanismen und – merkmale in einem allgemeinen Computerhardwaresystem dar. Zu jeder bestimmten Zeitperiode ist ein ausführendes Programm einem aktuellen Privilegpegel zugeordnet. Der Privilegpegel wird in einem Bitfeld 502 in einem Prozessorstatusregister 504 beibehalten. Das Prozessorstatusregister steuert und reflektiert den fundamentalen Zustand des Prozessors. Viele aktuelle Computersysteme verwenden nur zwei Privilegpegel, privilegiert und nicht-privilegiert, und benötigen daher nur ein einziges Bit in dem Privilegpegelbitfeld zum Steuern des aktuellen Privilegpegels. Moderne Computersysteme und auch einige frühere Systeme verwenden mehr als zwei Privilegpegel. Im allgemeinen ermöglichen n Bit in dem Privilegpegelbitfeld 2n diskrete Privilegpegel, die von dem Privilegpegel 0, der normalerweise der privilegierteste der Privilegpegel ist, zu dem Privilegpegel 2n–1 reichen. Ressourcen in dem Computersystem werden im allgemeinen in Sätze von Ressourcen aufgeteilt, die nur für Prozesse zugreifbar sind, die auf einem oder mehreren Privilegpegeln ausführen. Beispielsweise, wie es in 5B gezeigt ist, partitionieren viele allgemeine Maschinenarchitekturen den Anweisungssatz 506 in einen Satz von nicht-privilegierten Anweisungen 508 und privilegierten Anweisungen 510. Die nicht-privilegierten Anweisungen sind für Prozesse zugreifbar, die auf jedem Privilegpegel laufen, während die Privilegpegel nur für Prozesse zugreifbar sind, die auf dem Privilegpegel 0 laufen. Im allgemeinen-laufen die Betriebssystemkernelroutinen auf dem Privilegpegel 0, und, falls korrekt aufgebaut, können exklusiv den privilegierten Anweisungssatz verwenden, um die Ausführung von Anwendungspegelprozeßerzeugung, -ausführung und -abwicklung zu verwal ten. Außerdem, wie es in 5C gezeigt ist, ist der gesamte Hardwareregistersatz 512 in einen nichtprivilegierten Registersatz 514 und einen privilegierten Registersatz 516 partitioniert, wobei nicht-privilegierte Register für Prozesse zugreifbar sind, die auf jedem Privilegpegel laufen, während die privilegierten Register nur für Prozesse zugreifbar sind, die auf dem Privilegpegel 0 laufen. Das Prozessorstatusregister 504 ist beispielsweise ein privilegiertes Register, um einen Nicht-Kernel-Code daran zu hindern, zu versuchen, den aktuellen Privilegpegel zu befördern und auf Ressourcen zuzugreifen, die für einen Nicht-Kernel-Code unzugreifbar sein sollen.
  • Der Speicher kann auch bezüglich Privilegpegeln partitioniert werden, wie es in 5D gezeigt ist. Im allgemeinen ist der Speicher 518 in Seiten partitioniert (z. B. Speicherseite 520). Eine Speicherseite ist eine Grundeinheit von Speicher bezüglich der I/O-Operationen, der Virtueller-Speicher-Zu-Physikalischer-Speicher-Abbildung, und anderen Typen von Betriebssystemaktivitäten. Bei vielen Systemen kann jede Speicherseite einer Anzeige von einem oder mehreren Privilegpegeln zugeordnet sein, wie z. B. die Privilegpegelanzeige 522, die der Seite 520 zugeordnet ist. Diese Anzeigen können direkt eingebaut sein, als Etiketten in den Speicherseiten, oder können sich in Hilfsdatenstrukturen befinden, die die Speicherseiten beschreiben oder auf dieselben Bezug nehmen. Obwohl Anweisungssätze und -register häufig in nur zwei unterschiedliche Privilegpegel-basierte Partitionierungen partitioniert sind, wie es oben erörtert wurde, kann das Partitionieren von Speicherseiten bezüglich des Privilegpegels komplexer sein. Beispielsweise kann eine Seite für Prozesse zugreifbar gemacht werden, die auf den Privilegpegeln 0 bis 2 ausgeführt werden, ein anderer kann zugreifbar gemacht werden für Prozesse, die auf allen 2" Privilegpegeln ausgeführt werden, und andere können nur für Prozesse zugreifbar gemacht werden, die an einem Privilegpegel 0 ausgeführt werden.
  • Das Partitionieren von Ressourcen ist eine fundamentale Technik, die im Entwurf von zuverlässigen und sicheren Betriebssystemen verwendet wird, aber allein nicht ausreichend ist. Es gibt viele Aspekte von Sicherheit und Zuverlässigkeit, die nicht allein durch eine Hardwarepegel-Privilegbasierte Partitionierung adressiert werden können. 6 stellt ein Beispiel einer Sicherheits- und Zuverlässigkeitsverletzung dar, die bei vielen modernen Computersystemen besteht. Eine vereinfachte Blockdiagrammdarstellung 602 eines Computersystems ist in 6 gezeigt. Normalerweise liefert ein Betriebssystemverkäufer die Betriebssystemschicht 604, die auf der Hardwareschicht 606 laufen soll, die durch einen Hardwareverkäufer geliefert wird. Bei vielen modernen Computersystemen können dritte Verkäufer Peripherie-Hardware-I/0-Geräte liefern, die durch den Hardwareverkäufer oder durch Computersystembesitzer in der Computersystemhardware eingebaut werden. Diese Peripheriehardwaregeräte benötigen Schnittstellen-Softwareroutinen, die als I/0-Treiber bekannt sind, die installiert werden, um in oder in Verbindung mit dem Betriebssystem zu laufen. Beispielsweise befindet sich in 6 der I/0-Treiber 608 in der Betriebssystemschicht 604. Im allgemeinen muß der I/0-Treiber 608 auf dem höchsten Privilegpegel laufen, um eine Schnittstelle mit privilegierten Registerund Speicherressourcen zu bilden, die für Anwendungspegelprogramme nicht zugreifbar sein sollen. Beispielsweise ist in 6 ein Abschnitt 610 der Speicherressourcen für die Maschine gezeigt. Ein Bereich in dem Speicher 612 ist für einen Zugriff durch Anwendungspegelprogramme beabsichtigt. Ein anderer Bereich des Speichers 604 ist für einen Zugriff nur durch Betriebssystemroutinen beabsichtigt. Dieser Bereich kann beispielsweise gespeicherte kryptographische Schlüsselinformationen 616 umfassen. Ein weiterer Bereich in dem Speicher 618 ist für die Verwendung durch den I/O-Treiber 608 und das Betriebssystem beabsichtigt, der I/O-Puffer enthält, die der I/O-Treiber und das Betriebssystem verwenden, um Daten auszutauschen.
  • Falls der I/O-Treiber korrekt geschrieben ist und keinen böswilligen Code enthält, lesen die I/O-Treiberroutinen nur von dem I/O-Pufferbereich 618 des Speichers und schreiben auf denselben, und können weder das Betriebssystem noch die Anwendungsroutinen durch Speicheroperationen stören. weder der Hardwareverkäufer noch der Betriebssystemverkäufer haben jedoch eine Kontrolle über die Inhalte des I/O-Treibers. Sie können ein Authentifizierungsverfahren verwenden, um zu bestimmen, daß der I/O-Treiber von einem bestimmten dritten Verkäufer empfangen wurde. Sie können sogar den I/O-Treiber testen, bevor derselbe installiert wird. Einige dritte Verkäufer machen keinen Quellcode für ihre I/O-Treiber für eine Untersuchung verfügbar, wodurch das Ausmaß begrenzt wird, bis zu dem der I/O-Treiber durch die Betriebssystem- und Hardwareverkäufer unabhängig verifiziert werden kann. Es ist möglich, daß der I/O-Treiber entweder einen Trojanisches-Pferd-Code umfaßt, der zu böswilligen Zwecken eingefügt wurde, oder Programmfehler (Bugs) enthalten kann. In jedem Fall kann der I/O-Treiber versuchen, auf Abschnitte des Speichers außerhalb des I/O-Pufferbereichs 618 zuzugreifen, auf den der I/O-Treiber ursprünglich beschränkt sein sollte. Bei vielen aktuellen Computersystemen kann nichts den I/O-Treiber daran hindern, jeden Speicherbereich innerhalb des Systems zu lesen und zu beschreiben, weil der I/O-Treiber im allgemeinen auf dem Kernel-Pegel-Privileg ausführt. Sobald ein falsches oder böswilliges Programm damit beginnt, auf dem Kernel-Pegel-Privileg zu laufen, kann das Programm den vollen Satz von Ressourcen verwenden, der für das Betriebssystem verfügbar ist. In dem aktuellen Fall kann beispielsweise eine Trojanisches-Pferd-Routine in dem I/O-Treiber eine Ausführung während der I/O-Treiber-Operation beginnen, auf die kryptographischen Schlüssel 616 zugreifen, die in dem Speicher gespeichert sind, der für das Betriebssystem 614 zugewiesen ist, und können andere Betriebssystemroutinen und Hardwareressourcen verwenden, um die kryptographischen Schlüssel zu einer entfernten Entität zu exportieren.
  • Das in 6 dargestellte Problem ist nur eines einer beinahe unbegrenzten Anzahl von Sicherheitsproblemen, die sich bei aktuellen Computersystemen ergeben können. Für viele identifizierte Probleme können verschiedene Maßnahmen entworfen und neu in das Betriebssystem eingepaßt werden, in einem Versuch, die Systemempfindlichkeiten im Zusammenhang mit dem Problem zu schließen oder zu verkleinern. Solche Maßnahmen sind im allgemeinen jedoch spezifisch nur für ein oder eine kleine Anzahl von Problemen, und eine große Anzahl von zusätzlichen Verletzlichkeiten bleiben unerfaßt und potentielle Quellen von zukünftigen Sicherheitsproblemen. Manchmal sind die versuchten Lösungen unvollständig oder falsch. Bei bestimmten Fällen sind die versuchten Lösungen selbst die Quelle zusätzlicher Probleme. Bis zum heutigen Tag wurden keine vollständig sicheren kommerziellen Allzweck- Computersysteme hergestellt, trotz der Erkenntnis, dass es wünschenswert ist, sichere Systeme zu erzeugen. Obwohl die allgemeine Vorstellung von Computersystemsicherheit Entwurfs- und Entwicklungsbemühungen in der Tat seit vielen Jahren motiviert hat, ist ein klares und umfassendes Verständnis der Computersicherheit und rationaler Lösungsansätze zum Lösen computersicherheitsbezogener Themen nach wie vor schwer zu definieren. Entwerfer, Hersteller, Entwickler und Benutzer von Computersystemen haben somit einen Bedarf an einem umfassenden Verständnis von Computersicherheit, sicheren Computersystemen und Computersicherheitsmethoden erkannt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ein Ausführungsbeispiel der vorliegenden Erfindung schafft eine Kombinierte-Hardware-und-Software-Sicherheitsplattform, und eine Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle, mit der Betriebssysteme und anwendungsspezifische Steuerprogramme in einem Computersystem eine Schnittstelle bilden. Dieses Ausführungsbeispiel der vorliegenden Erfindung verwendet eine Hardwareplattform, die zumindest vier Privilegpegel, nicht-privilegierte Anweisungen, nicht-privilegierte Register, privilegierte Anweisungen, privilegierte Register und Firmwareschnittstellen liefert. Die Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle verbirgt die privilegierten Anweisungen, privilegierten Register und Firmwareschnittstellen von Betriebssystemen und anwendungsspezifischen Steuerprogrammen, wobei den Betriebssystemen und den anwendungsspezifischen Steuerprogrammen die nichtprivilegierten Anweisungen und nicht-privilegierten Register geliefert werden, die durch die Hardwareplattform geliefert werden, und auch ein Satz von aufrufbaren Softwarediensten. Die aufrufbaren Softwaredienste liefern einen Satz von Sicherheitsplattformverwaltungsdiensten für eine Betriebssteuerung von Hardwareressourcen, die weder privilegierte Anweisungen und privilegierte Register der Hardware preisgeben noch privilegierte Anweisungen und privilegierte Register simulieren. Die aufrufbaren Dienste liefern außerdem einen Satz von Sicherheitsverwaltungsdiensten, die auch als Sicherheitsdepot bezeichnet werden, die intern erzeugte geheime Daten verwenden, wobei jeder Sicherheitsverwaltungsdienst interne geheime Daten verwaltet, ohne die internen geheimen Daten einer Rechnereinheit außer dem Sicherheitsverwaltungsdienst selbst preiszugeben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm, das Hardware-, Betriebssystem- und Anwendungsprogrammschichten in einem allgemeinen Computersystem zeigt.
  • 2 ist ein Blockdiagramm, das ein frühes Computersystem zeigt.
  • 3 ist ein Blockdiagramm, das die logische Position eines Betriebssystems in einem frühen Großcomputer zeigt.
  • 4 ist ein Blockdiagramm der Anwendungs-, Betriebssystem- und Hardwareschichten eines modernen PC.
  • 5A-D stellen die fundamentalen Privilegpegelmechanismen und Merkmale in einem allgemeinen Computerhardwaresystem dar.
  • 6 stellt ein Beispiel einer Sicherheits- und Zuverlässigkeitsverletzung dar, die bei vielen modernen Computersystemen vorliegt.
  • 7 ist ein Blockdiagramm, das die Register in einem Typ von modernem Prozessor zeigt.
  • 8 stellt den virtuellen Adreßraum dar, der durch eine moderne Computerarchitektur geliefert wird.
  • 9 stellt die Übersetzung einer virtuellen Speicheradresse in eine physikalische Speicheradresse über Informationen dar, die in Regionsregistern, Schutzschlüsselregistern und einem Übersetzungs-Seitengriff-Pufferspeicher (TLB = Translation Lookaside Buffer) gespeichert sind;
  • 10 zeigt die Datenstrukturen, die durch eine Betriebssystemroutine verwendet werden, um eine Speicherseite in einem physikalischen Speicher zu finden, der einer virtuellen Speicheradresse entspricht.
  • 11 zeigt die Zugriffsrechtecodierung, die in einem TLB-Eintrag verwendet wird.
  • 12 stellt den Unterbrechungsmechanismus dar.
  • 13 stellt einen CPL-Beförderungsmechanismus dar, der es Anwendungspegelroutinen erlaubt, Routinen eines höheren Privilegpegels aufzurufen.
  • 14 stellt eine Schichtenbildung eines Betriebssystems direkt auf einer IA-64-Prozessorbasis-Maschine dar.
  • 15 ist ein Blockdiagramm, das die SP-Schnittstellen in einem Computersystem darstellt, das eine Kombinierte-Hardware-und-Software-Sicherheitsplattform umfaßt, und ein oder mehrere Betriebssysteme und anwendungsspezifische Steuerprogramme .
  • 16 stellt die zweite Speicherpartitionierungsfunktionalität dar, die von der SP benötigt wird und durch moderne Prozessorarchitekturen geliefert wird, wie z. B. der Intel® IA-64-Prozessor-Architektur.
  • 17 ist ein Blockdiagramm der Funktionalität, die durch die Softwareschichten der SP geliefert wird.
  • 18 ist ein Blockdiagramm von Hardwarekomponenten eines Systems, das sich auf den sicheren Boot-Prozeß bezieht.
  • 19 ist ein Flußsteuerdiagramm für einen sicheren Boot-Prozeß, „secure Boot", der ein Ausführungsbeispiel der Sicherer-Boot-Prozeßkomponente der SP darstellt.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich. auf Computersysteme und Computerbetriebssysteme. Genauer gesagt bezieht sich ein Ausführungsbeispiel der vorliegenden Erfindung auf eine Kombinierte-Hardware-und-Software-Sicherheitsplattform und eine Kombinierte-Hardware-und-Software-Sicherheitsplatt formschnittstelle, die eine sichere Grundlage liefert, auf der ein oder mehrere Betriebssysteme geschichtet werden können, um sichere Computersysteme zu erzeugen. Die Kombinierte-Hardware-und-Softwareplattform und die Kombinierte-Hardware-und-Softwareplattformschnittstelle stellen einen Entwicklungsschritt bei den Maschinen/Betriebssystemschnittstellen dar. Wie es oben mit Bezugnahme auf 2 bis 4 erörtert wurde, entwickelte sich die Maschinen/Betriebssystemschnittstelle aus einem Satz von Anweisungen und Registern, wie es in 2 dargestellt ist, zu einem Satz von nicht-privilegierten Anweisungen und Registern, einem Satz von privilegierten Anweisungen und Registern, Hardwareunterbrechungsmechanismen und einem Satz von Firmware-implementierten Diensten, wie es in 5 dargestellt ist. Ein Ausführungsbeispiel der vorliegenden Erfindung ist eine Sicherheitsplattform und eine Sicherheitsplattform/Betriebssystemschnittstelle, die einen Satz von nicht-privilegierten Anweisungen und Registern und einen Satz von Sicherheitsplattformdiensten liefert, die aufrufbare Routinen umfassen, die eine Unterstützung liefern für Speicherverwaltung, abfertigbare Objektabfertigung, Ausnahmehandhabung, Unterbrechungshandhabung, Fehlerbeseitigung und Leistungsfähigkeitsüberwachung, kryptographische Dienste, Sicherheitsdatendepotdienste, Domain-Steuerdienste, logische und physikalische Prozessorsteuerdienste, Inter- und Intra-Domain-Kommunikationsdienste, Plattformtaktikverwaltungsdienste, Aufruferauthentifizierungsdienste und andere Dienste. Eine andere Sicht dieses Ausführungsbeispiels der vorliegenden Erfindung; ist, daß die Hardware und die darüber liegende Sicherheitsplattformsoftware zusammen einen neuen Maschinentyp darstellen, genauso wie die Firmware und die Hardware in dem in 4 dargestellten System einen neuen und anderen Maschinentyp bezüglich der in 2 und 3 dargestellten früheren Systeme darstellen. Diese neue Maschine liefert sichere Grundfunktionalitäten, auf denen sichere Betriebssysteme und sichere Systeme aufgebaut werden können. Anstatt sich einfach auf Hardwareprivilegpegel zu verlassen, kann ein Betriebs system eine gesamte Reihe von Grundfunktionalitäten verwenden, die auf einem höheren Privilegpegel ausgeführt werden als das Betriebssystem, und die vor dem Betriebssystem sicher bleiben.
  • Um die Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle zu beschreiben, werden in den drei folgenden Unterabschnitten Erörterungen der Sicherheit, einer beispielhaften Hardwareplattform, die für die Verwendung in der Kombinierte-Hardware-und-Software-Sicherheitsplattform geeignet ist, und eine allgemeine Diskussion von Kryptographie präsentiert. Dann wird in einem vierten Unterabschnitt und in den Anhängen A und B, die folgen, eine detaillierte Beschreibung der Kombinierte-Hardware-und-Softwaresicherheitsplattformschnittstelle gegeben, die ein Ausführungsbeispiel der vorliegenden Erfindung darstellen, und dasselbe wird näher erörtert.
  • Computersicherheit
  • Es gibt viele verschiedene Möglichkeiten zum Definieren von Computersicherheit. Ziemlich häufig stellen Sicherheitsprobleme und Sicherheitsmängel, die sich bei Computersystemen ergeben, gesamte Klassen von Problemen dar, die anfänglich von Systementwicklern nicht als Sicherheitsprobleme erkannt wurden. Das richtige und umfassende Definieren des Begriffs „Computersicherheit" kann einen wichtigen und sogar wesentlichen Schritt beim Entwickeln eines sicheren Computersystems darstellen. Ein Schritt bei dem Entwurf der Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle, die ein Ausführungsbeispiel der vorliegenden Erfindung darstellt, ist die Erkenntnis, daß ein sicheres Computersystem zumindest die folgenden neuen Charakteristika und Eigenschaften umfaßt:
  • Verfügbarkeit
  • Ein verfügbares System ist ein System, dem vertraut werden kann, und auf das man sich verlassen kann, das dasselbe jedesmal, wenn ein Endnutzer einen Systemdienst aufruft, korrekt funktioniert und anspricht. Die Verfügbarkeit kann teilweise durch Einbauen redundanter Konfigurationen von zuverlässigen Hardwarekomponenten in einem System und durch Erfassen und/oder Kompensieren einer falschen Operation entweder einer Hardware- oder Softwarekomponente adressiert werden. Die Verfügbarkeit kann jedoch auch sehr stark erleichtert werden durch Ausdehnen der Klasse der erfaßbaren Fehler und durch Beschränken der Schäden, die sich aus dem Auftreten von Fehlern ergeben.
  • Vertraulichkeit
  • Informationen, die in einem Computersystem gespeichert sind, über ein Netzwerk übertragen werden oder sich in einer Archivspeicherung befinden, müssen nur für autorisierte Parteien verständlich sein. Vertraulichkeit kann stark erleichtert werden durch Spezifizieren kryptographischer Schlüssel (Ciphers) und Protokolle, die verwendet werden können, um sicherzustellen, daß die Verständlichkeit von Daten und Systeminformationen über die Verschlüsselung von Dateidaten, seitenweises Speichern von Daten, Kommunikation zwischen lokalen Systemkomponenten und Kommunikation über das Internet lediglich auf autorisierte Parteien beschränkt werden kann.
  • Authentifizierung
  • Die Identitäten von Personen, Servern, Klienten, Geräten, Druckteilsystemen, Speicherteilsystemen und anderen Hardware- und Softwarekomponenten, die Daten erzeugen und auf Daten zugreifen, müssen korrekt sichergestellt werden, be vor diesen Entitäten Dienste zur Verfügung gestellt werden. Die Authentifizierung kann stark erleichtert werden durch Spezifizieren der kryptographischen Einrichtungen und Protokolle, durch die alle solche Identitäten authentifiziert werden können.
  • Zugriffssteuerung
  • Zugriff auf Informationen, die in einem Computersystem gespeichert sind, oder sich in einer Archivspeicherung befinden, darf nur erlaubt werden, wenn derselbe richtig autorisiert ist. Eine Zugriffssteuerung kann erleichtert werden durch Liefern eines Bereichs von Zugriffssteuerschemata.
  • Nicht-Ablehnung
  • Bei E-Commerce-Transaktionen sollte weder die sendende Partei noch die empfangende Partei von Nachrichten in der Lage sein, das Vorliegen und die Übertragung von Nachrichten zu verleugnen, die eine Transaktion spezifizieren und bewirken. Beispielsweise müssen Einrichtungen vorgesehen sein, um sicherzustellen, daß eine Partei, die eine Nachricht sendet, die einen Versand von Geräten (Widgets) bestellt, später nicht behaupten kann, daß die Geräte nie bestellt wurden. Eine Nicht-Ablehnung wird erleichtert durch Identifizieren kryptographischer Mechanismen und Protokolle, wie z. B. digitaler Signaturen, die verwendet werden können, um sicherzustellen, daß die Parteien einer Transaktion rechenschaftspflichtig sind.
  • Taktiksteuerung
  • Besitzer und Administratoren müssen ausgestattet sein, um Systeme unter ihren Steuertaktiken zu definieren, die das Verhalten der Sicherheitselemente dieser Systeme regeln.
  • Schutz digitaler Rechte
  • Sichere Systeme müssen digitalen Inhalt schützen, insbesondere digitale Bilder von einer unbefugten Vervielfältigung schützen. Beispiele umfassen Währung, MPEG-Privatunterhaltungsinhalt, qualitativ hochwertige Kunstbilder und gedruckte Materialien für eine beschränkte Verteilung.
  • Geheimhaltung
  • Die Eigenschaft der Geheimhaltung hängt von den vorhergehenden Eigenschaften ab, benötigt aber zusätzliche Fähigkeiten zum Verwalten und Steuern von Informationen, die Identitäten von Personen und Gruppen zugeordnet sind. Informationen, die für eine Einzelperson vertraulich sind, müssen vor einem unberechtigten Zugriff geschützt werden. Selbst wenn ein Zugriff genehmigt ist, sollten die Identitäten von Einzelpersonen in einigen Fällen, nicht offenbart werden. Merkmale eines Systems, die eine Geheimhaltung sicherstellen, umfassen: (1) rechtmäßiges Sammeln von Informationen über Einzelpersonen auf rechtmäßige Weise, die für den Zweck der Sammlung relevant sind und nicht darüber hinausgehen; (2) Beibehaltung genauer und aktueller Informationen über Einzelpersonen; (3) Verarbeiten von Informationen über eine Einzelperson gerecht und gesetzesmäßig, durch Erhalten der Zustimmung einer Einzelperson für die Aufbewahrung, Verwendung oder Übertragung von Informationen an Dritte; (4) Einzelpersonen sollten berechtigt sein, auf Informationen über sich zuzugreifen, einschließlich des Rechtes, solche Informationen zu berichtigen oder zu löschen; (5) Einzelpersonen müssen mitgeteilt bekommen, welche persönlichen Informationen gesammelt werden sollen, deren beabsichtigte Verwendung, die verantwortliche Stelle und die Wahlmöglichkeiten die die Einzelperson bezüglich der Ver- wendung der Informationen hat; (6) Einzelpersonen muß die Möglichkeit gegeben werden, die Auswahlmöglichkeiten zum Handhaben ihrer persönlichen Informationen auszuwählen und/oder zu aktualisieren; und (7) es müssen Einrichtungen bereitgestellt werden, um einer Überwachungs- oder Durchsetzungsstelle nachzuweisen, daß private Informationen korrekt und gesetzesmäßig gehandhabt wurden.
  • Datenintegrität
  • Daten in der Verwahrung eines Computersystems sind ein wertvolles und kritisches Informationsvermögen. Ein sicheres System muß sicherstellen, daß Datenvermögen nicht verloren gehen oder beschädigt werden, und keiner unbefugten Verfälschung, Löschung, Fälschung, Permutation oder anderen Formen von Eingreifen unterworfen werden. Eine Kombination aus gut entworfenen Datei- und Datenbanksystemen, systematischen Sicherungs- und Wiederherstellungsprozeduren und kryptographischem Schutz für die Integrität und Vertraulichkeit der Daten selbst werden benötigt, um diese Eigenschaft sicherzustellen.
  • Eine moderne Computerarchitektur
  • Prozessoren, die aufgebaut sind, um mit der Intel® IA-64-Computerarchitektur übereinzustimmen, stellen eine fundamentale Hardwareschnittstelle einer Reihe von modernen Computerhardwareplattformen dar, die für die Kombination mit einer Sicherheitsplattformsoftwareschicht geeignet sind, um die Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle zu erzeugen, die ein Ausführungsbeispiel der vorliegenden Erfindung darstellt. 7 ist ein Blockdiagramm, das die Register in einem modernen Prozessor zeigt. Die Register halten Werte, die den Ausführungszustand des Prozessors definieren, und wenn dieselben im Speicher gespeichert sind, erfassen sie den Zustand eines ausführenden Prozesses vor dem Anhalten der Ausführung des Prozesses. Das Wiederherstellen bestimmter Register, die in dem Speicher gespeichert sind, ermöglicht die Wiederaufnahme der Ausführung eines unterbrochenen Prozesses. Der in 7 gezeigte Registersatz ist relativ komplex, und nachfolgend werden nur bestimmte der wichtigeren Register beschrieben.
  • Ein wichtiges Register ist das Prozeßstatusregister („PSR") 702. Das PSR ist ein 64-Bit-Register, das Steuerinformationen für den aktuell ausführenden Prozeß enthält. Das PSR umfaßt viele Bitfelder, einschließlich einem 2-Bit-Feld, das den aktuellen Privilegpegel („CPL" = current privilege level) enthält, an dem der aktuell ausführende Prozeß ausführt. Es gibt vier Privilegpegel: 0, 1, 2 und 3. Der höchste Privilegpegel ist der Privilegpegel 0. Der niedrigste Privilegpegel ist der Privilegpegel 3. Nur Prozessen, die bei dem Privilegpegel 0 ausgeführt werden, wird es erlaubt, auf bestimmte Maschinenressourcen zuzugreifen und dieselben zu manipulieren, einschließlich dem Teilsatz von Registern, der als der „Systemregistersatz" bekannt ist, der in 7 in dem unteren Rechteck 704 gezeigt ist. Diese Systemregister umfassen einen Satz von Regionregistern 706, einen Satz von Schutzschlüsselregistern 708, Datenund Anweisungsübersetzungs-Seitengriff-Puffer-Register 710, einen Satz von Fehlerbeseitigungsunterbrechungspunktregistern (Debug-Unterbrechungspunktregistern) 712, einen Satz von Leistungsfähigkeitsüberwachungskonfigurationsregistern 714 und einen Satz von Steuerregistern 716. Ein Steuerregister, das Unterbrechungsprozessorstatusregister („IPSR"= interruption processor status register) 718 speichert die Werte des PSR für den aktuellsten unterbrochenen Prozeß. Das Unterbrechungsstatusregister („ISR" = Interruption Status register) 720 enthält eine Anzahl von Feldern, die die Art der Unterbrechung anzeigen, die als letztes aufgetreten ist. Andere Steuerregister speichern Informationen, die sich auf andere Ereignisse beziehen, wie z. B. virtuelle Speicheradreßübersetzungsinformationen, die sich auf einen virtuellen Adressenübersetzungsfehler beziehen, Zeiger zu dem letzten erfolgreich ausgeführten Anweisungsbündel und andere solche Informationen. Sätze von externen Steuerunterbrechungsregistern 722 werden teilweise verwendet, um Unterbrechungsvektoren zu setzen.
  • Die in 7 gezeigten Register in der oberen rechteckigen Region 724 sind als der „Anwendungsregistersatz" bekannt. Diese Register umfassen einen Satz von allgemeinen Registern 726, von denen 16 bankmäßig zusammengesetzt werden, um unmittelbare Register für einen Unterbrechungshandhabungscode zu liefern. Zumindest 96 allgemeine Register 730 bilden einen Allgemein-Registerstapel, von dem Abschnitte automatisch gespeichert und von einem Hintergrundspeicher wiedergewonnen werden können, um Verbindungen zwischen aufrufenden und aufgerufenen Softwareroutinen zu ermöglichen. Der Anwendungsregistersatz umfaßt außerdem Gleitkommaregister 732, Prädikatregister 734, Zweigregister 736, einen Anweisungszeiger 738, einen Aktueller-Rahmen-Markierer 740, eine Benutzermaske 742, Leistungsfähigkeitsüberwachungsdatenregister 744, Prozessoridentifizierer 746, eine Fortschritt-Lade-Adreßtabelle 748 und einen Satz von spezifischen Anwendungsregistern 750.
  • Die IA-64-Architektur liefert ein 2-Bit-Privilegpegelfeld in dem Prozessorstatusregister, und liefert wiederum vier Privilegpegel: PLO – der privilegierteste, Kernel-Privilegpegel; PL1 – der nächstprivilegierte Privilegpegel; PL2 – der nächstprivilegierte Pegel; und PL3 – der Anwendungspegel-Privilegpegel.
  • Der Speicher und die Virtuelle-Adresse-Übersetzungsarchitektur der IA-64-Computerarchitektur wird nachfolgend mit Bezugnahme auf 8-11 beschrieben. Der virtuelle Adreßraum, der in der Intel-IA-64-Computerarchitektur definiert ist, umfaßt 224 Regionen, wie z. B. die in 8 gezeigten Regionen 802-807, die in 8 gezeigt sind, die jeweils 261 Bytes enthalten, die durch aufeinanderfolgende virtuelle Speicheradressen zusammenhän gend adressiert werden. Somit kann der virtuelle Speicheradreßraum so angesehen werden, dass er einen gesamten Adreßraum von 285 Bytes an Speicher umspannt. Eine virtuelle Speicheradresse 808 von 85-Byte kann somit so angesehen werden, daß dieselbe ein 24-Bit-Regionfeld 810 und ein 61-Bit-Adreßfeld 812 umfaßt.
  • Im allgemeinen werden virtuelle Speicheradressen jedoch als 64-Bit-Mengen codiert. 9 stellt die Übersetzung einer virtuellen 64-Bit-Speicheradresse in eine physikalische Speicheradresse dar, über Informationen, die in Regionsregistern, Schutzschlüsselregistern und einem Übersetzungs-Seitengriff-Puffer („TLB") gespeichert sind. Bei der Intel® IA-64-Architektur sind virtuelle Adressen 64-Bit-Computerwörter, die in 9 durch eine 64-Bit-Größe 902 dargestellt sind, die in drei Felder 904-906 partitioniert ist. Die ersten beiden Felder 904 und 905 weisen Größen auf, die von der Größe einer Speicherseite abhängen, die in einem Bereich von Speicherseitengrößen eingestellt werden kann. Das erste Feld 904 wird als der „Versatz" (offset) bezeichnet. Der Versatz ist eine Ganzzahl, die 1 Byte in einer Speicherseite kennzeichnet. Falls eine Speicherseite beispielsweise 4096 Bytes enthält, muß der Versatz 12 Bits enthalten, um die Werte bis 0 bis 4095 in dem Binärzahlensystem darzustellen. Das zweite Feld 905 enthält eine virtuelle Seitenadresse. Die virtuelle Seitenadresse bezeichnet eine Speicherseite in einem virtuellen Adreßraum, der auf physikalischen Speicher abgebildet wird, und ferner durch Speicherseiten gesichert wird, die auf. Massenspeichervorrichtungen, wie z. B. Platten, gespeichert sind. Das dritte Feld 906 ist ein 3-Bit-Feld, das ein Regionsregister kennzeichnet, das den Identifizierer einer Region von virtuellem Speicher enthält, in dem die virtuelle Speicherseite, die durch die virtuelle Seitenadresse 905 spezifiziert wird, enthalten ist.
  • Die Übersetzung der virtuellen Speicheradresse 902 zu einer physikalischen Speicheradresse 908, die den gleichen Ver satz 910 umfaßt wie den Versatz 904 in der virtuellen Speicheradresse, und auch eine physikalische Seitennummer 912, die auf einer Seite in der physikalischen Speicherkomponente des Computersystems Bezug nimmt, wird durch den Prozessor ausgeführt, zeitweise in Kombination mit Kernel- und Betriebssystemroutinen. Falls eine Übersetzung von einer virtuellen Speicheradresse zu einer physikalischen Speicheradresse in dem TLB 914 enthalten ist, kann die Virtuelle-Speicher-Adresse-Zu-Physikalische-Speicher-Adresse-Übersetzung vollständig durch den Prozessor ausgeführt werden, ohne ein Eingreifen des Betriebssystems. Der Prozessor verwendet das Regionsregisterselektorfeld 906, um ein Register 916 in einem Satz von Regionsregistern 918 auszuwählen. Das ausgewählte Regionsregister 916 enthält einen 24-Bit-Regionsidentifizierer. Der Prozessor verwendet den Regionsidentifizierer, der in dem ausgewählten Regionsregister enthalten ist, und die virtuelle Seitenadresse 905 zusammen in einer Hardwarefunktion, um einen TLB-Eintrag 920 auszuwählen, der einen Regionsidentifizierer und ein Speicheradresse enthält, die mit dem Regionsidentifizierer, der in dem ausgewählten Regionsregister 916 enthalten ist, und der virtuellen Seitenadresse 905 übereinstimmen. Jeder TLB-Eintrag, wie z. B. der TLB-Eintrag 922, enthält Felder, die einen Regionsidentifizierer 924, einen Schutzschlüssel, der der Speicherseite zugeordnet ist, die durch den TLB-Eintrag 926 beschrieben wird, eine virtuelle Seitenadresse 928, Privileg- und Zugriffsmodusfelder, die zusammen ein Zugriffsrechtefeld 930 bilden, und eine physikalische Seitenspeicheradresse 932 umfassen.
  • Falls in dem TLB ein Eintrag gefunden werden kann, der den Regionsidentifizierer enthält, der in dem Regionsregister enthalten ist, das durch das Regionsregisterselektorfeld der virtuellen Speicheradresse spezifiziert ist, und der die virtuelle Seitenadresse enthält, die in der virtuellen Speicheradresse spezifiziert ist, dann bestimmt der Prozessor, ob die virtuelle Speicherseite, die durch die virtuelle Speicheradresse beschrieben wurde, durch den derzeit ausführenden Prozeß zugegriffen werden kann. Der derzeit ausführende Prozeß kann auf die Speicherseite zugreifen, falls es die Speicherrechte in dem TLB-Eintrag erlauben, daß durch den aktuell ausführenden Prozeß auf die Speicherseite zugegriffen wird, und wenn der Schutzschlüssel in dem TLB-Eintrag in dem Schutzschlüsselregister 934 gefunden werden kann, im Zusammenhang mit einem Zugriffsmodus, der es dem aktuell ausführenden Prozeß erlaubt, auf die Speicherseite zuzugreifen. Die Zugriffsrechte, die in einem TLB-Eintrag enthalten sind, umfassen ein 3-Bit-Zugriffsmodusfeld, das eines einer Kombination aus Lesen(R), Schreiben- (W) und Ausführen- (X) Privilegien darstellt, und ein 2-Bit-Privilegpegelfeld, das den Privilegpegel spezifiziert, der von einem Zugriffsprozeß benötigt wird. Jedes Schutzschlüsselregister enthält einen 24-Bit-Schutzschlüssel, der einem Zugriffsmodusfeld zugeordnet ist, das erlaubte Lesen- Schreiben- und Ausführen-Zugriffsmoden spezifiziert, und ein gültiges Bit, das anzeigt, ob das Schutzschlüsselregister aktuell gültig ist oder nicht. Um somit auf eine Speicherseite, die durch einen TLB-Eintrag beschrieben ist, zuzugreifen, muß der Zugriffsprozeß auf die Seite in einer Weise zugreifen, die mit dem Zugriffsmodus kompatibel ist, der einem gültigen Schutzschlüssel in den Schutzschlüsselregistern zugeordnet ist, und der Speicherseite in dem TLB-Eintrag zugeordnet ist, und muß auf einem Privilegpegel ausgeführt werden, der mit dem Privilegpegel kompatibel ist, der der Speicherseite in dem TBL-Eintrag zugeordnet ist.
  • Falls in dem TLB kein Eintrag mit einem Regionsidentifizierer und einer virtuellen Seitenadresse, die gleich der virtuellen Seitenadresse in der virtuellen Speicheradresse, und einem Regionsidentifizierer sind, der durch das Regionsregisterausfallfeld einer virtuellen Speicheradresse ausgewählt wurde, gefunden wird, dann tritt ein TLB-Fehlschlag auf, und die Hardware versucht, den richtigen TLB-Eintrag von einer aufgebauten Abbildungsteuertabelle zu finden, die als VHPT bezeichnet wird und sich in dem Ker nelspeicher befindet. Falls die Hardware nicht in der Lage ist, den korrekten TLB-Eintrag von der Abbildungssteuertabelle zu finden, tritt ein TLB-Fehler auf, und eine Kerneloder Betriebssystem-Routine wird aufgerufen, um die spezifizierte Speicherseite in dem physikalischen Speicher zu finden, oder falls notwendig, die spezifizierte Speicherseite von einer externen Vorrichtung in den physikalischen Speicher zu laden, und dann die richtige Übersetzung als einen Eintrag in die VHPT und den TLB einzufügen. Falls auf den Versuch hin, eine virtuelle Speicheradresse in eine physikalische Speicheradresse zu übersetzen, der Prozeß in den Schutzschlüsselregistern 934 keinen gültigen Schutzschlüssel findet, oder falls der versuchte Zugriff durch den aktuell ausführenden Prozeß nicht mit dem Zugriffsmodus in dem TLB-Eintrag oder den Lesen/Schreiben/Ausführen-Bits in dem Schutzschlüssel in dem Schutzschlüsselregister kompatibel ist, oder der Privilegpegel, auf dem der aktuelle ausführende Prozeß ausgeführt wird, geringer ist als der Privilegpegel, der durch den TLB-Eintrag benötigt wird, dann tritt ein Fehler auf, der durch eine Kernelroutine gehandhabt wird, die die Ausführung zu einer Betriebssystemroutine abfertigt.
  • 10 zeigt eine Form einer Datenstruktur, die durch eine Betriebssystemroutine verwendet wird, um eine Speicherseite in einem physikalischen Speicher zu finden, die einer virtuellen Speicheradresse entspricht. Die virtuelle Speicheradresse 902 ist in 10 mit den gleichen Feldern und Bezugszeichen wie in 9 gezeigt. Die Betriebssystemroutine verwendet das Regionselektorfeld 906 und die virtuelle Seitenadresse 905, um einen Eintrag 1002 in einer virtuellen Seitentabelle 1004 auszuwählen. Der Virtuelle-Seitentabelleneintrag 1002 umfaßt eine physikalische Seitenadresse 1006, die auf eine Seite 10.08 in einem physikalischen Speicher verweist. Der Versatz 904 der virtuellen Speicheradresse wird verwendet, um die geeignete Byteposition 1010 in der virtuellen Speicherseite 1008 auszuwählen. Die Virtuelle-Seitentabelle 1002 umfaßt ein Bitfeld 1012, das anzeigt, ob die physikalische Adresse gültig ist oder nicht. Falls die physikalische Adresse nicht gültig ist, wählt das Betriebssystem eine Speicherseite in einem physikalischen Speicher aus, die die Speicherseite enthalten soll, und gewinnt den Inhalt der Speicherseite von einer externen Speichervorrichtung wieder, wie z. B. einem Plattenlaufwerk 1014. Der Virtuelle-Seitentabelleneintrag 1002 enthält zusätzliche Felder, von denen die Informationen, die für einen TLB-Eintrag benötigt werden, wiedergewonnen werden können. Sobald das Betriebssystem die virtuelle Speicheradresse erfolgreich in eine physikalische Speicheradresse abbildet, wird dieses Abbilden in den Virtuelle-Seitentabelleneintrag eingegeben, und, als ein TLB-Eintrag formatiert, in den TLB eingefügt.
  • 11 zeigt die Zugriffsrechtecodierung, die in einem TLB-Eintrag verwendet wird. Die Zugriffsrechte umfassen ein 3-Bit-TLB.ar Modusfeld 1102, das Lesen, Schreiben, Ausführen und Kombinationszugriffsrechte spezifiziert, und ein 2-Bit-TLB.pl Privilegpegelfeld 1104, das den Privilegpegel spezifiziert, der einer Speicherseite zugeordnet ist. In 11 sind die Zugriffsrechte für jeden möglichen Wert, der in den Feldern TLB.ar und TLB.pl enthalten ist, gezeigt. Es ist anzumerken, daß die Zugriffsrechte von den Privilegpegeln abhängen, bei denen ein aktueller Prozeß ausgeführt wird. Somit kann beispielsweise auf eine Speicherseite zugegriffen werden, die mit einem TLB-Eintrag mit TLB.ar = 0 und TLB.pl = 3 spezifiziert ist, zum Lesen durch Routinen, die auf jedem Privilegpegel laufen, was in 11 durch den Buchstaben „R" in der Spalte gezeigt ist, die jedem Privilegpegel 1106-1109 entspricht, während auf eine Speicherseite, die durch einen TLB-Eintrag beschrieben ist, mit TLB.ar = 0 und TLB.pl = 0 zugegriffen werden kann durch Lesen von nur einem Prozeß, der auf dem Privilegpegel 0 läuft, wie es in 11 durch den Buchstaben „R" 1110 unter der Spalte angezeigt ist, die dem Privilegpegel 0 entspricht. Die in 11 beschriebenen Zugriffsrechte verschachteln sich durch einen Privilegpegel gemäß der vorhe rigen Erörterung mit Bezugnahme auf 4. Im allgemeinen kann ein Prozeß, der auf einem speziellen Privilegpegel läuft, auf eine Speicherseite zugreifen, die diesem Privilegpegel und allen niedrigeren Privilegpegeln zugeordnet ist. Unter Verwendung nur der Zugriffsrechte, die in einem TLB-Eintrag enthalten sind, ist es nicht möglich, eine Speicherregion zu erzeugen, die für einen Prozeß zugreifbar ist, der bei Pegel 3 läuft und Kernelroutinen, die bei Pegel 0 laufen, aber nicht zugreifbar ist für eine Betriebssystemroutine, die auf dem Privilegpegel 2 läuft. Jede Speicherseite, die für eine Routine zugreifbar ist, die auf dem Privilegpegel 3 läuft, ist auch zugreifbar für eine Betriebssystemroutine, die auf dem Privilegpegel 2 läuft.
  • Weil Computerressourcen gemäß Privilegpegeln partitioniert sind, greifen Prozesse im allgemeinen auf Anweisungen und Daten von Speicherseiten zu, die dem Privilegpegel des ausführenden Prozesses oder einem niedrigeren Privilegpegel zugeordnet sind, wobei der Privilegpegel 0 als der höchste Privilegpegel angesehen wird. Ein ausführender Prozeß kann durch eine Hardware-erzeugte Unterbrechung unterbrochen werden, in diesem Fall wird durch die Hardware automatisch eine Unterbrechungshandhabungsroutine aufgerufen, um auf dem Privilegpegel 0 ausgeführt zu werden. Sobald die Unterbrechung teilweise oder vollständig gehandhabt ist, kann die Unterbrechungshandhabungsroutine eine Rückkehr-von-Unterbrechung-Anweisung (RFI-Anweisung; „rfi" = return from interrupt) ausführen, um die Ausführung zu dem Punkt der vorher ausführenden Routine zurückzukehren, an dem die Unterbrechung aufgetreten ist, wodurch der CPL zurück zu dem CPL verringert wird, an dem die vorher ausführende Routine vor der Unterbrechung ausgeführt hat.
  • Der Unterbrechungsprozeß ist in 12 dargestellt. In 12 führt ein Prozeß, der einen Anwendungsprozeß ausführt, Anweisungen von einer Speicherseite 1202 aus, die dem niedrigen Privilegpegel eines Anwendungsprogrammprozesses zugeordnet ist. Die Ausführung von Anweisungen von der Speicherseite ist durch die dunklen oder ausgefüllten gebogenen Pfeile 1204-1206 dargestellt. Die Ausführung der Unterbrechungshandhabungsroutine an dem Privilegpegel 0 ist in 12 durch den hellen oder geöffneten gebogenen Pfeil 1208 dargestellt. Anfangs führt der Anwendungsprogrammprozeß nacheinander Anweisungen aus, die an den Speicherpositionen 1210, 1215 gespeichert sind. Während der Ausführung der Anweisung, die in der Speicherposition 1215 gespeichert ist, tritt eine Maschinenunterbrechung auf, die die Privilegpegel-O-Unterbrechungshandhabungseinrichtung aufruft, die dann damit beginnt, eine Anweisung auszuführen, die an einer Speicherposition 1216 in einer Speicherseite 1218 gespeichert ist, die dem Privilegpegel 0 zugeordnet ist. Die Unterbrechungshandhabungseinrichtung führt eine Anzahl von Anweisungen aus, bevor sie schließlich eine rfi-Anweisung ausführt, der an der Speicherposition 1220 gespeichert wird, wodurch bewirkt wird, daß der CPL zu dem niedrigen Privilegpegel zurückversetzt wird, auf dem der Anwendungsprogrammprozeß vor dem Auftreten der Unterbrechung ausgeführt hat, und die Steuerung an das Anwendungsprogramm zurückgegeben wird, wie es durch den dunklen oder ausgefüllten Pfeil 1205 angezeigt ist. Das Anwendungsprogramm nimmt dann das Ausführen wieder auf, wie es durch den dunklen oder ausgefüllten Pfeil 1206 angezeigt ist. Für bestimmte Typen von Unterbrechungen kann die Privilegpegel-0-Unterbrechungshandhabungseinrichtung vollständig in dem Zusammenhang des unterbrochenen Prozesses ausgeführt werden. Um komplexere Unterbrechungen handzuhaben, kann das Betriebssystem Kontextinformationen, die dem Anwendungsprogrammprozeß zugeordnet sind, in dem PCB speichern, der diesem Prozeß zugeordnet ist, und einen neuen Kontext vorbereiten, in dem die Unterbrechungshandhabungseinrichtung ausgeführt werden kann, wodurch der Anwendungsprogrammkontext wieder hergestellt wird, wenn der Anwendungsprogrammprozeß nach der Handhabung der Unterbrechung wiederhergestellt wird.
  • Es gibt Fälle, bei denen ein Anwendungsprogrammprozeß eine Betriebssystemsubroutine aufrufen muß oder eine Funktion, die auf einem Privilegpegel läuft, der höher ist als der des Anwendungsprogrammprozesses. Weil nur durch eine Privilegpegel-O-Routine auf das PSR zugegriffen werden kann, und dasselbe geändert werden kann, kann ein Anwendungsprogramm, das auf einem niedrigeren Privilegpegel ausgeführt wird, den CPL nicht direkt modifizieren. Eine Möglichkeit, einen solchen Aufruf zu bewirken, ist es, eine „Unterbrechungs"-Anweisung auszuführen, die einen codierten Parameter enthält. Diese Anweisung bewirkt eine Unterbrechung zu dem Privilegpegel 0, und der Parameter, der in der Unterbrechungsanweisung codiert ist, kann decodiert werden, um eine Steuerung an die gewünschte Privilegpegel-0-Funktion zu senden. Die IA-64-Computerarchitektur liefert jedoch einen schnelleren Mechanismus, durch den ein Anwendungsprogrammprozeß einen Privilegpegel-0-Prozeß aufrufen kann. 13 stellt den CPL-Beförderungsmechanismus dar, der es Anwendungspegelroutinen erlaubt, Routinen eines höheren Privilegpegels aufzurufen. 13 verwendet die gleichen Darstellungsübereinkünfte, wie sie in 12 verwendet werden. Das ausführende Anwendungsprogramm, das durch den ausgefüllten Pfeil 1302 dargestellt wird, führt eine Aufrufanweisung aus, die in der Speicherposition 1304 gespeichert ist, um eine Routine „A" eines höheren Privilegpegels aufzurufen. Die Routine eines höheren Privilegpegels ist in einer Speicherseite 1306 gespeichert, die dem höheren Privilegpegel zugeordnet ist. Die Routine des höheren Privilegpegels führt anfangs eine epc-Anweisung aus, die an der Speicherposition 1308 gespeichert ist, was den CPL zu dem CPL befördert, der der Speicherseite zugeordnet ist, die die Anweisung umfaßt. Die aufgerufene Routine kann dann auf dem höheren Privilegpegel ausgeführt werden, wobei die Ausführung mit einer br.ret-Anweisung 1310 beendet wird, die die Ausführung zu dem Anwendungspegelprogramm zurückgibt und den CPL automatisch zu dem CPL zurückversetzt, an dem das Anwendungspegelprogramm vor dem Subroutinenaufruf ausgeführt wurde. Es ist anzumerken, daß dieser Mecha nismus keine Einrichtung für ein Anwendungsprogramm liefert, den CPL zu befördern und einen unbefugten Zugriff auf geschützte Computerressourcen auszuführen. Speicherseiten können nur durch Anweisungen, die auf dem Privilegpegel 0 ausgeführt werden, Privilegpegeln zugeordnet werden. Somit müssen Routinen, die die epc CPL-Beförderungsanweisung verwenden, anfangs durch Privilegpegel-0-Routinen eingesetzt werden. Somit kann ein Betriebssystem den epc Mechanismus verwenden, um sicher Betriebssystemeintragspunkte zu erzeugen, die von Routinen eines niedrigeren Privilegpegels aufgerufen werden können.
  • Kryptographie
  • Es gibt sechs Grundtypen von kryptographischen Techniken: (1) Symmetrischer- (Geheimer-) Schlüssel-Verschlüsselung; (2) Asymmetrischer- (Öffentlicher-/Privater) Schlüssel-Verschlüsselung; (3) Einweghashfunktionen; (4) Nachrichtenauthentifizierungscodes; (5) digitale Signaturen; und (6) Zufallszahlgeneratoren.
  • Verschlüsselung/Entschlüsselung
  • Symmetrischer- und Asymmetrischer-Schlüssel-Verschlüsselung werden beide verwendet, um Daten so vollständig zu verwürfeln, daß ein Angreifer, der nicht den korrekten Schlüssel hat, nicht in der Lage ist, den Inhalt oder die Bedeutung der ursprünglichen, nicht-verwürfelten Daten zu bestimmen. Die Daten selbst können jede Form von digitalisierten Informationen sein, einschließlich Buchstaben oder Zahlen jeder Sprache, spezielle Symbole für Wörter oder Interpunktion oder Steuerung, oder Video- und Audiobilder.
  • Der Prozeß des Verwürfelns der Daten wird als „Verschlüsseln" (encrypting) oder „Chiffrieren" (enciphering) der Daten bezeichnet. Die umgekehrte Operation, die Daten zurück zu ihrer ursprünglichen Form zu entschlüsseln, wird als „Entschlüsseln" oder „Dechiffrieren" der Daten bezeichnet. Die ursprünglichen, nicht-verwürfelten Daten werden als „Klartext" bezeichnet. Die verwürfelten Daten werden als „Schlüsseltext" (ciphertext) bezeichnet. Es gibt viele verschiedene Algorithmen zum Verschlüsseln und Entschlüsseln. Verschlüsselungs- und Entschlüsselungsalgorithmen nehmen im allgemeinen zwei Eingabeargumente, und erzeugen als Ausgabe die verschlüsselten bzw. die entschlüsselten Daten. Das erste Eingabeargument sind die Daten, die verschlüsselt oder entschlüsselt werden sollen. Das zweite Eingabeargument wird als „Schlüssel" bezeichnet. Die beste Praxis scheint es zu sein, wenn das Geheimnis eines Verschlüsselungs- und Entschlüsselungsschemas lediglich in dem Schlüssel enthalten ist. Die Verschlüsselung und Entschlüsselung können kurz wie folgt beschrieben werden:
    • Schlüsseltext = Verschlüsseln (Klartext, Verschlüsselungsschlüssel)
    • Klartext = Entschlüsseln (Schlüsseltext, Entschlüsselungsschlüssel)
  • Symmetrischer-Schlüssel-Verschlüsselung
  • Für eine Symmetrischer-Schlüssel-Verschlüsselung verwenden sowohl der Sender als auch der Empfänger verschlüsselter Nachrichten den gleichen geheimen Schlüssel. Falls der geheime Schlüssel beispielsweise das Wort „Apfelsoße" wäre, wären die Gleichungen:
    • Schlüsseltext = Verschlüsseln (Klartext „Apfelsoße")
    • Klartext = Entschlüsseln (Schlüsseltext „Apfelsoße")
  • Die Schlüssel, die normalerweise verwendet werden, sind lange zufällig angeordnete Bitzeichenfolgen. Die Längen der Schlüssel werden durch den spezifischen symmetrischen Schlüssel bestimmt. Die binären Werte von Schlüsseln werden erzeugt durch Prozesse, die aufgebaut werden, um sicherzustellen, daß die Werte ausreichend unvorhersagbar sind.
  • Symmetrische Schlüssel (cipher) sind von zwei Grundtypen: (1) Blockschlüssel; und (2) Stromschlüssel. Ein Blockschlüssel verschlüsselt oder entschlüsselt einen einzigen Block mit fester Größe zu einem Zeitpunkt. Die Größe eines Blocks wird durch den spezifischen Blockschlüssel definiert. Ein Stromschlüssel erzeugt eine Sequenz von binären Werten, die mit dem Klartext zum Verschlüsseln oder mit dem Schlüsseltext zum Entschlüsseln in einer Entweder/Oder-Verknüpfung/XOR-Verknüpfung) verbunden werden. Die Größe jedes binären Werts, der durch einen Stromschlüssel erzeugt wird, wird durch den spezifischen Stromschlüssel definiert.
  • Die Symmetrischer-Schlüssel-Verschlüsselung wird bei hoher Geschwindigkeit ausgeführt. Was die Sicherheit und Leistungsfähigkeit anbetrifft, stehen symmetrische Schlüssel an sehr hoher Stelle. Für jeden vertraulichen Datenaustausch mit hoher Menge ist die Symmetrischer-Schlüsselkryptographie aufgrund ihrer hohen Leistungsfähigkeit die bevorzugte Wahl. Das große Problem bei der Verwendung symmetrischer Kryptographie ist die Verteilung und Verwaltung geheimer Schlüssel, das treffenderweise als „Schlüsselverteilungsproblem" bezeichnet wird.
  • Das Schlüsselverteilungsproblem, d. h, die Definition eines Prozesses zum sicheren Verteilen einmaliger geheimer Schlüssel durch ein Netzwerk an jedes Paar von Personen oder Programmen, die im Vertrauen kommunizieren müssen, ist sehr komplex. Komplette Systeme wurden allein dafür aufgebaut, um diese Funktion durchzuführen. Ein entwickeltes System ordnet ganze Server lediglich der Aufgabe zu, vertrauenswürdige Dritte für die Verteilung von geheimen Schlüsseln zu sein.
  • Asymmetrischer-Schlüssel-Verschlüsselun
  • Für die Asymmetrischer-Schlüssel-Verschlüsselung ist der Schlüssel, der zum Verschlüsseln von Daten verwendet wird, ein anderer Schlüssel als derjenige, der zum Entschlüsseln von Daten verwendet wird. Anders als die Symmetrischer-Schlüssel-Verschlüsselung, die den gleichen geheimen Schlüssel sowohl für die Verschlüsselung als auch die Entschlüsselung verwendet, verwendet die asymmetrische Schlüsselverschlüsselung zwei unterschiedliche Schlüssel. Der Vorteil der Asymmetrischer-Schlüssel-Verschlüsselung ist, daß nur einer der Schlüssel geheim gehalten werden muß. Der andere Schlüssel kann weit verbreitet sein, d. h. er kann öffentlich gemacht werden. Aus diesem Grund wird die Asymmetrischer-Schlüssel-Verschlüsselung gerne auch als „Öffentlicher-/Privater-" Schlüssel-Verschlüsselung bezeichnet. Asymmetrische Schlüssel verringern die Probleme der Schlüsselverteilung sehr stark. Symbolisch:
    • Schlüsseltext = Verschlüsseln (Klartext, öffentlicher Schlüssel)
    • Klartext = Entschlüsseln (Schlüsseltext, privater Schlüssel)
  • Der am häufigsten verwendete asymmetrische Schlüssel wird als „RSA" bezeichnet, ein Akronym, das aus den ersten Buchstaben der Nachnamen der Erfinder besteht. Die RSA arbeitet auf sehr großen Ganzzahlmodulo, dem Produkt aus zwei geheimen Primzahlen. Die öffentlichen und privaten RSA-Schlüssel sind jeweils Paare von solchen großen Ganzzahlen. Um heutzutage ein hohes Maß an Sicherheit sicherzustellen, werden 1024- bis 2048-Bit-Ganzzahlen verwendet, obwohl einige Anwendungen weiterhin 512-Bit-Ganzzahlen verwenden. Die kryptographische Stärke der RSA leitet sich von der Schwierigkeit bei der Herstellung des Produkts zu zwei geheimen Primzahlen ab.
  • In einer jüngeren Arbeit hat sich herausgestellt, daß finite Gruppen von Punkten, die auf einer „elliptischen Kurve" liegen, eine eventuelle stärkere Basis für asymmetrische Kryptographie bereitstellen als die RSA. Die Sicherheit der Schemata, die auf elliptischen Kurven basieren, leitet sich von der Schwierigkeit beim Lösen des diskreten Protokollproblems über elliptischen Kurven ab. (Für Einzelheiten siehe: Blake, Seroussi, Smart, Elliptic Curves in Cryptography, Cambridge Univ. Press, 1999.) Die für die Berechnungen notwendigen Schlüssel sind kürzer als jene, die für die RSA notwendig sind. Der Elliptische-Kurve-Schlüssel, der stärkenmäßig einem 1024-Bit-RSA-Schlüssel entspricht, würde beispielsweise weniger als 200 Bits in der Länge aufweisen. Die Berechnungen sind jedoch komplexer als jene für die RSA. Der Hauptnachteil der asymmetrischen Verschlüsselung ist, daß sie rechnerisch viel intensiver ist. Anders ausgedrückt, die asymmetrische Verschlüsselung ist beträchtlich langsamer als die symmetrische Verschlüsselung. Aufgrund der relativen Stärken und Schwächen der symmetrischen und asymmetrischen Kryptographie gehört es üblicherweise zur Praxis, eine Asymmetrischer-Schlüsselkryptographie zur Schlüsselverteilung und eine Symmetrischer-Schlüsselkryptographie für die Masse der übertragenen Daten zu verwenden.
  • Einweg-Hashfunktionen
  • Einweg-Hashfunktionen sind Algorithmen, die einen willkürlichen Eingabebitstrom in ein Ergebnis einer festen Größe umwandeln. Sie werden als „Einweg" bezeichnet, weil, obgleich es unkompliziert ist, die Hashfunktion auszuführen, es nachweislich unmöglich ist, das Inverse der Hashfunktion zu berechnen, d. h. den Eingabebitstrom angesichts nur einer Hashfunktionsausgabe einer festen Größe zu berechnen.
  • Ferner sind sichere Hashfunktionen so konzipiert, so daß, in dem möglichen Ausmaß, der Wert von jedem Bit der Ausgabe der Funktion durch den Wert von jedem Bit der Eingabe beeinträchtigt wird und daß es für einen gegebenen Hashausgabewert eine untragbar schwierige Aufgabe ist, einen anderen Eingabebitstrom zu finden, der die identische Hashfunktionsausgabe erzeugen würde. Diese Eigenschaften von sicheren Hashfunktionen erlauben es, den Hashausgabewert in angemessener Weise als eine identifizierende „Signatur" oder „Auszug" (Digest) für den Eingabebitstrom zu verwenden. Die Hashfunktionsausgaben sind wichtige digitale Fingerabdrücke des Eingabebitstroms.
  • Sichere Hashfunktionen arbeiten typischerweise in zwei Phasen. Zuerst wird der Eingabebitstrom einer willkürlichen Länge in einer spezifischen Weise zu einem Vielfachen einer feststehenden Blockgröße aufgefüllt. Üblicherweise erscheint die Bitlänge des gesamten Eingabebitstroms als der finale 64-Bit-Wert im letzten 64-Bit-Doppelwort des finalen Auffüllblocks. Zweitens wird die aufgefüllte Eingabe bei einem Block zu einem Zeitpunkt durch die Hashfunktion unter Verwendung von Ausgabewerten von jedem Block als Anfangseingabewerte zur Verarbeitung des nächsten Blocks verarbeitet. Das kombinierte Ergebnis nach der Verarbeitung des finalen Blocks ist die Ausgabe der Hashfunktion. Symbolisch bedeutet dies:
  • Nachricht-Auszug = Hashfunktion (Auffüllfunktion [Nachrichteingabebits])
  • Die Hashfunktionen sind eines der vielseitigsten und am häufigsten verwendeten kryptographischen Werkzeuge. Sie werden in nahezu jedem Internetprotokoll verwendet. Immer wenn die logische Notwendigkeit besteht eine Zahl von Elementen zuzuordnen, ist es übliche Praxis, die Byte-Zeichenfolgen, die die Elemente darstellen, miteinander zu verketten und das Gesamtergebnis einer Hash-Codierung zu unterziehen. Dies erzeugt einen digitalen Fingerabdruck, der jedes Element sowie die gesamte, geordnete Zuordnung reflektiert. Die Hashwerte von Dokumenten, Datenstrukturen und Codebildern sind für digitale Signaturen von großer Bedeutung.
  • Nachrichtenauthentifizierungscodes
  • Nachrichtenauthentifizierungscodes („MACs" = Message Authentication Codes) sind konzipiert, um die Authentifizierung und Integrität von Nachrichten und Daten zu schützen, und nicht um ihre Vertraulichkeit zu schützen. Ein MAC ist ein Wert, der einer Nachricht oder Daten angehängt wird, der es einem ermöglicht, sicherzustellen, daß der Inhalt der Nachricht oder der Daten in keiner Weise modifiziert worden ist.
  • Die MACs verwenden, wie die Symmetrischer-Schlüssel-Verschlüsselung, einen geheimen Schlüssel. Wenn es nicht von Bedeutung ist, den Inhalt der Nachricht zu schützen, sondern nur ihre Integrität sicherzustellen, wird der geheime Schlüssel verwendet, um einen MAC zu berechnen, der dann an die Nachricht angehängt wird. Eine beliebige Partei, die den geheimen Schlüssel kennt, kann den MAC von der erhaltenen Nachricht erneut berechnen und vergleicht den neu berechneten Wert mit dem MAC, der an die empfangene Nachricht angehängt wurde. Wenn die neu berechneten und übertragenen Werte übereinstimmen, ist die Nachricht korrekt übertragen worden.
  • MACs werden in einem sicheren IP („IPSec") verwendet, um sicherzustellen, daß die Paketinhalte während der Übertragung nicht modifiziert worden sind. Sie werden auch bei Übertragungsprotokollen zwischen Banken verwendet, um Nachrichten zu authentifizieren. Die MACs können auch an Daten angehängt werden, die in Dateien oder Datenbanken gespeichert sind. In allen Fällen kann eine beliebige Person, die den geheimen Schlüssel kennt, verifizieren, daß die Daten, mit denen der MAC berechnet wurde, nicht geändert worden sind. Die Berechnungen von MACs nutzen die Symmetrischer- Schlüssel-Verschlüsselung über den Daten oder manchmal über sicheren Hashoperationen von Daten.
  • Digitale Signaturen
  • Geht es um das Bereistellen einer Garantie der Integrität von gespeicherten oder übertragenen Daten, funktionieren digitale Signaturen ähnlich wie MACs. Jedoch unterscheiden sich digitale Signaturen von den MACs im Hinblick auf die Geheimnisse, die verwendet werden, und die Verteilung von diesen Geheimnissen.
  • Für die MRCs ist ein nicht-leerer Satz von Personen, die den geheimen Schlüssel kennen, der zum Berechnen des MACs verwendet wird, vorhanden. Eine beliebige der Personen in dem Satz kann einen MAC, der mit dem geheimen Schlüssel berechnet wird, verifizieren. Gleichzeitig kann eine beliebige dieser Personen auch einen MAC für unterschiedliche Nachrichten oder Daten berechnen oder kann einen MAC für eine geänderte Nachricht oder Daten fälschen. Alle die Personen, die das Geheimnis kennen, müssen einander vertrauen, sowohl um den geheimen Schlüssel geheim zu halten als auch um den geheimen Schlüssel in korrekter Weise zu verwenden.
  • MACS funktionieren gut, wenn es lediglich ein einziges Individuum gibt, das das Geheimnis für sich behält. Diese Person kann das Geheimnis verwenden, um seine oder ihre Daten zu schützen und um seine Integrität sicherzustellen. MACs funktionieren auch für Sätze von zwei Personen gut. Diese Leute vertrauen einander, daß sie das Geheimnis nicht offenbaren und können Nachrichten hin und zurück senden, und wissen, daß die Integrität von jeder Nachricht nicht gefährdet worden ist. Diese Modelle sind in vielen wichtigen Situationen passend.
  • Digitale Signaturen sind ein Integritätsschutzmechanismus, wo nur eine einzige Partei vorhanden ist, die die Signatur konstruieren kann, aber schließlich kann dann jeder die Signatur verifizieren. Bei diesem Modell wird eine spezifizierte Partei, der alleinige Besitzer des Freigabegeheimnisses, für die Berechnung und das Anhängen des Signatur an diese Daten verantwortlich. Dies wird als „Signieren" der Daten bezeichnet. Nachdem die Daten signiert worden sind, kann eine beliebige Person verifizieren, daß die spezifizierte Partei, genauer der spezifizierte Geheimschlüssel tatsächlich die Signatur errechnete. Dieses Modell paßt für viele wichtige Situationen in Gewerbe und Praxis.
  • Digitale Signaturen werden durch Verwendung einer beachtlichen Eigenschaft der Asymmetrischer-Schlüssel-Kryptographie berechnet. Digitale Signaturen funktionieren nämlich auch umgekehrt. In dem vorhergehenden Abschnitt über die Asymmetrischer-Schlüssel-Kryptographie schrieben wir symbolisch:
    • Schlüsseltext = Verschlüsseln (Klartext, öffentlicher Schlüssel)
    • Klartext = Entschlüsseln (Schlüsseltext, privater Schlüssel)
  • Jedoch stellt sich heraus, daß die Schlüssel in der umgekehrten Reihenfolge verwendet werden können, nämlich:
    • Schlüsseltext = Verschlüsseln (Klartext, privater Schlüssel)
    • Klartext = Entschlüsseln (Schlüsseltext, öffentlicher Schlüssel)
  • Im ersten Fall nimmt der Eigentümer des geheimen Schlüssels die Entschlüsselung vor und eine beliebige Person kann die Verschlüsselung vornehmen. In letzterem Fall nimmt der Besitzer des Geheimnisses die Verschlüsselung vor und eine beliebige Person kann die Entschlüsselung vornehmen. Der letztere Fall wird für digitale Signaturen verwendet.
  • Die digitalen Signaturen können an sich verwendet werden oder in Kombination mit einer Verschlüsselung, die zum Schützen einer Vertraulichkeit entworfen worden ist. Häufig ist es nicht wichtig, daß die Dateninhalte vertraulich sind, jedoch ist es von besonderer Bedeutung, daß die Daten exakt sind. Die digitalen Signaturen werden nicht durch Verschlüsseln aller Daten mit dem Privatschlüssel berechnet, sondern vielmehr durch Verwendung eines privaten Schlüssels zum Verschlüsseln eines sicheren Hashes der Daten berechnet. Im Endeffekt nimmt man zuerst einen digitalen Fingerabdruck der Daten und verschlüsselt dann den digitalen Fingerabdruck mit dem privaten Schlüssel. Symbolisch bedeutet dies:
    Digitale Signatur = Verschlüsseln (Hashfunktion (Nachrichteneingabebits), privater Schlüssel)
    Digitaler Fingerabdruck = Entschlüsseln (Digitale Signatur, öffentlicher Schlüssel)
  • Die digitalen Signaturen werden in zwei Schritten verifiziert. Zuerst wird der digitale Fingerabdruck der Dateninhalte unter Verwendung der Hashfunktion neu berechnet. Dann wird die angehängte digitale Signatur unter Verwendung des öffentlichen Schlüssels entschlüsselt. Wenn der neu berechnete digitale Fingerabdruck und die entschlüsselte digitale Signatur übereinstimmen, ist die Signatur verifiziert worden.
  • Zufallszahlengeneratoren
  • Zufallszahlen werden in allen kryptographischen Algorithmen und Protokollen verwendet. Sie werden für Schlüssel, Herausforderungswerte, Einmalverfügungen, Vor-Hashanhänge für Passwörter, etc. verwendet. Hardwarevorrichtungen, die auf einer gewissen Form einer physischen Willkürlichkeit basieren, treten langsam in Erscheinung. Das Problem mit solchen Hardwarevorrichtungen ist natürlich das Testen derselben, um sicherzustellen, daß sie korrekt arbeiten. Eine Rechnereinrichtung existiert zum Berechnen von Zahlen, die ausreichend unvorhersehbar sind, so daß sie anstelle von wahren Zufallszahlen verwendet werden können. Solche Zahlen werden als Pseudozufallszahlen („PRNs" = Pseudo-Random Numbers) bezeichnet. Einige der Pseudozufallszahlenerzeugungsverfahren verwenden Werte basierend auf physischen Messungen von Zufallsereignissen in einem Computersystem, wie z. B. Typraten, willkürliche Mausbewegungen, Ankunftszeiten von Platten-I/0-Unterbrechungen etc. Andere basieren auf einer symmetrischen Kryptographie oder der Schwierigkeit von harten mathematischen Problemen, wie dem Factoring-Problem. Pseudozufallszahlengeneratoren PRNGs (PRNG = Pseudo random number generators) die Werte erzeugen, die ausreichend unvorhersehbar sind, werden als kryptographisch starke Pseudozufallszahlgeneratoren (CSPRNGs = Cryptographically Strong Pseudo Random Number Generators) bezeichnet.
  • Das Ausführungsbeispiel eines Sicherheitsplattformkernels der vorliegenden Erfindung
  • 14 stellt ein Schichten eines Betriebssystems direkt auf einer IA-64-Prozessor-basierten Maschine dar. Das Betriebssystem 1402 verwendet bei diesem direkten Schichtungslösungsansatz die IA-64-Architektur-spezifizierte Schnittstelle 1404, die durch die IA-64-Prozessor-basierte Maschine 1406 als die Rechenressourcen zum Verwalten und zum Absenden der Anwendungsprogramme über Betriebssystemdienste bereitgestellt wird. Die IA-64-Architektur spezifizierte Schnittstelle 1404 weist nicht-privilegierte und privilegierte Anweisungen und Register, Hardwareunterbrechungsmechanismen und Firmwareschnittstellen auf. Durch Verwenden einer direkten Schichtung des Betriebssystems auf die IA-64-Hardwareschnittstelle können jedoch viele Sicherheitsprobleme und Unzulänglichkeiten, die bei den aktuellen Betriebssystemen inhärent sind, nicht ohne weiteres unter Verwendung von Merkmalen der IA-64-Architektur angegangen werden. Als ein Beispiel sollten I/0-Treiber weiterhin in dem Betriebssystem beinhaltet und auf dem PLO ausgeführt werden, würde das Problem, das in 6 dargestellt ist, weiterhin eine potentielle Anfälligkeit für das Computersystem darstellen. Die Betriebssysteme sind relativ große Programme und in der Praxis ist es unmöglich, deren Korrektheit und einen sicheren Betrieb nachzuprüfen.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung ist eine Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle, die eine sichere Schicht bereitstellt, die mit einem oder mehreren Computerbetriebssystemen und anwendungsspezifischen Steuerungsprogrammen schnittstellenmäßig verbunden ist. Die Kombinierte-Hardware-und-Software-SP (SP = Sicherheitsplattform = secure plattform) ermöglicht einem Betriebssystem oder einem anwendungsspezifischen Steuerungsprogramm, über eine Kombinierte-Hardware-und-Software-SPI (SPI = secure platform Interface = Sicherheitsplattformschnittstelle) direkt auf nicht-privilegierte Maschinenanweisungen und Register zuzugreifen, sowie Softwareroutinen aufzurufen, die eine Steuerung der Hardware für ein Betriebssystem oder anwendungsspezifisches Steuerungsprogramm ohne Preisgabe der privilegierten Maschinenanweisungen und -register bereitstellt. Zusätzlich liefern die SP und die SPI einen Satz von Sicherheitsdepotdiensten, die unter anderem Verschlüsselungs- und Entschlüsselungsdienste, Sicherheitstaktikverwaltung und andere sicherheitsverwandte Dienste, die intern erzeugte Geheimdaten, wie z. B. Verschlüsselung schlüssel im Klartext verwenden, die den Betriebssystemen und anwendungsspezifischen Steuerungsprogrammen noch anderen Routinen des Softwareabschnitts der Kombinierte-Hardware-und-Software-Sicherheitsplattform nicht preisgegeben werden können. Die SPI kann man sich als eine Maschinenschnittstelle zu einer Maschine vorstellen, die nicht nur eine Hardware einschließlich eines oder mehrerer Prozessoren, Busse, Speicherkomponenten und anderer Hardwarekomponenten, die in 1 gezeigt sind, umfasst, sondern auch Firmware schnittstellen und einen erweiterbaren Satz von Softwareroutinen. Daher ist die SPI eine Schnittstelle mit der SP, eine zusammengesetzte Hardware-, Firmware- und Softwaremaschine. Die SPI kann man sich als eine Schnittstelle vorstellen, die durch einen neuen Typ von Softwareschicht, der Betriebssystemen und anwendungsspezifischen Steuerungsprogrammen unterliegt, bereitgestellt wird.
  • 15 ist ein Blockdiagramm, das die SP in einem Computersystem darstellt, das die SP und ein oder mehrere Betriebssysteme und anwendungsspezifische Steuerungsprogramme aufweist. Die SPI 1502 liegt zwischen der Softwareschicht 1504 der SP und einem oder mehreren Betriebssystemen und/oder anwendungsspezifischen Steuerungsprogrammen 1506. Die SP weist die Softwareschicht 1504, eine Hardware- und Firmwareplattformschnittstelle 1508 und die Hardware- und Firmwareplattform 1510 auf. Wie vorstehend erörtert wurde, sind die nicht-privilegierten Anweisungen und Register, die an der Hardwareschnittstelle 1508 bereitgestellt werden, direkt durch die SPI 1502 preisgegeben, wie es in 15 durch den vertikalen Pfeil 1512 angezeigt ist. Die anderen Komponenten der Hardwareschnittstelle, zur Rechten der vertikalen gestrichelten Linie 1514, sind nicht preisgegeben. Statt dessen wird die Funktionalität, die durch diese Hardwareschnittstellenkomponenten bereitgestellt wird, für Betriebssysteme und anwendungsspezifische Steuerungsprogramme über die Sicherheitsplattformdienste-Komponente 1516 und die Sicherheitsdepotdienste-Komponente 1518 der SPI verfügbar gemacht.
  • Wichtig ist zu betonen, daß neben den Fähigkeiten, die die SP bereitstellt, die SP sich ziemlich von einem Betriebssystem oder einer herkömmlichen virtuellen Maschine unterscheidet, und daß sich die SPI von einer Betriebssystemschnittstelle oder Virtuelle-Maschinenschnittstelle ziemlich unterscheidet. Eine virtuelle Maschine ist eine Softwareabstraktion einer zugrundeliegenden Hardwareplattform, die die privilegierten Anweisungen und Register und die Firmwareschnittstellen der zugrundeliegenden Hardwareplattform entweder direkt preisgibt oder simuliert. Die virtuellen Maschinen sind bei einer Anzahl von Situationen, wie z. B. einer Betriebssystementwicklung, von Nutzen. Jedoch ist die SP ungleich einer Virtuelle-Maschineschnittstelle. Die SPI verhindert absichtlich allen Zugriff auf die privilegierten Anweisungen und Register und Firmwareschnittstellen durch Überlagern von Betriebssystemen. Außerdem stellen die SP-Mechanismen einen erweiterbaren, reichen Satz von Sicherheitsdiensten, wie z. B. kryptographischen Diensten, bereit, die über den Umfang der Fähigkeiten, die durch virtuelle Maschinen geliefert werden, weit hinausreichen. Die SP-Sicherheitsdienste werden durch vollständiges Segmentieren und Isolieren ihrer Codebilder und Daten von den überlagernden Betriebssystemen und anwendungsspezifischen Steuerungsprogrammen sicher gemacht. Diese Segmentierung und Isolierung ist nur möglich, weil die Betriebssysteme und anwendungsspezifischen Steuerungsprogramme überhaupt keinen direkten Zugriff auf privilegierte Anweisungen und Register und Standardschnittstellen haben. Die SP-Verschlüsselungsdienste sind beispielsweise daher in der Lage, die aktuellen Werte der Verschlüsselungsschlüssel und die Schlüsselmaterialien, die von den Verschlüsselungsschlüsseln abgeleitet wurden, vor allen Betriebssystemen, anwendungsspezifischen Steuerungsprogrammen und Anwendungsprogrammen vollständig zu verbergen, während diesen Betriebssystemen, anwendungsspezifischen Steuerungsprogrammen und Anwendungsprogrammen immer noch ermöglicht wird, die Verschlüsselungsdienste frei zu nutzen.
  • Obgleich die SP eine Sicherheitsplattform für Betriebssysteme ist, stellt die SP nicht von sich aus die Sicherheit eines Computersystems, das auf der SP aufgebaut ist, sicher. Im Gegensatz zu einem Systemsteuerungsprogramm, wie einem Betriebssystem, liefert die SP lediglich einen Satz von abrufbaren Mechanismen neben unprivilegierten Anweisungen und Registern. Die SP-Mechanismen liefern Grundbausteine, aus denen ein Sicherheitssystem konstruiert werden kann, wie nachstehend beschrieben ist. Die SP-Mechanismen ermöglichen, daß ein Betriebssystem eine ausreichende Kontrolle über die zugrundeliegende Hardware ausüben kann, um volle Betriebssystemsdienste für die Anwendungsprogramme und Benutzer bereitzustellen. Jedoch liefert die SPI diese Funktionalität ohne Preisgabe irgendwelcher privilegierter Anweisungen oder Register oder Firmwareschnittstellen vor einem darüberliegenden Betriebssystem oder anwendungsspezi- fischen Steuerungsprogramm.
  • Intern nutzen die SP-Mechanismen bei dem IA-64-Ausführungsbeispiel der Erfindung beständig die Schutzfähigkeiten der IA-64-Architektur in einer Weise, die zum Reduzieren der Anfälligkeiten gegenüber Virus- und Eindringangriffen konzipiert ist. Die angewandten Praktiken umfassen: alle ausführbaren Codebilder werden zuerst durch Überprüfen der digitalen Signaturen validiert, bevor sie eingestellt werden, um ausführbar zu sein; ausführbaren Codebildern wird es niemals erlaubt, gleichzeitig ausführbar und schreibbar zu sein; Stapel und Datenbereiche können gelesen oder geschrieben werden, werden jedoch niemals ausgeführt; die SP-Mechanismen werden durch die Verwendung von Privilegebenen und Schutzschlüsseln segmentiert, um den Code und die Daten von jedem Mechanismus vor allen darüberliegenden Betriebssystemen und anwendungsspezifischen Steuerungsprogrammen und von allen anderen SP-Mechanismen zu isolieren. Die Betriebssysteme und anwendungsspezifischen Steuerungsprogramme, die über der SP liegen, können auch ähnliche Speicherschutzpraktiken annehmen, um ihre Sicherheit zu verbessern. Ein beliebiges Betriebssystem oder anwendungsspezifisches Steuerungsprogramm kann jedoch tatsächlich scheitern, sich selbst zu schützen, trotz der Tatsache, daß ihnen die Werkzeuge dafür durch die SP-Schnittstelle zur Verfügung gestellt werden.
  • Die SP organisiert die Betriebsmittel des Systems in eine oder mehrere getrennte voneinander isolierte Partitionen, die als „Domain" bezeichnet werden. Jede Domain arbeitet unter der Steuerung eines Betriebssystems oder anwendungsspezifischen Steuerungsprogramms. Die SP ordnet jeder Domain einen Bereich der virtuellen Speicheradressen, einen Bereich der physikalischen Speicheradressen, eine Anzahl von logischen und physikalischen CPUs, einen Satz von I/O-Geräten und einen Satz von Identifiziererwerten zu.
  • Um die SP-Dienste zu liefern, benötigt die SP-Softwareschicht eine bestimmte spezifische Funktionalität von der SP-Hardwareschicht neben den nicht-privilegierten Anweisungen, Registern und einer weiteren Prozessorfunktionalität, die allgemein durch die Hardwareschicht bereitgestellt wird. Eine erste, wichtige zusätzliche Funktionalität ist das Bereitstellen von zumindest vier Privilegpegeln, auf denen die verschiedenen Prozesse ausgeführt werden können. Die Softwareschicht der SP reserviert die zwei am meisten privilegierten Privilegpegel, PLO und PL1, für eine exklusive Softwareschichtverwendung, wobei zumindest ein dritter Privilegpegel, PL2, für die Betriebssystemroutinen und die anwendungsspezifischen Steuerprogramme und ein vierter Privilegpegel, PL3, für Anwendungsprogramme hinterlassen wird. Eine Hardware, die mehr als vier Privilegpegel bereitstellt, kann ebenfalls verwendet werden, wobei die zusätzlichen Privilegpegel entweder nicht benötigt oder der Betriebssystemschicht zur Betriebssystemverwendung zugeordnet werden. Bei einem Ausführungsbeispiel der Erfindung werden die SP-Mechanismen, die auf der PLO ausgeführt werden, als der SPK (SPK = Secure Platform Kernel = Sicherheitsplattform-Betriebskern) bezeichnet, und der SP-Code, der auf der PL1 ausgeführt wird, wird als SPGS (SPGS = Secure Platform Global Services = Sicherheitsplattform-Globaldienste) bezeichnet. Das Betriebssystem oder anwendungsspezifische Steuerprogramm, die innerhalb einer Domain (bzw. Domäne) ausgeführt werden, verwaltet die logischen und physischen Betriebsmittel, die der Domain zugeordnet sind, indem die Sicherheitsplattformdienste aufgerufen werden. Das Domain-Betriebssystem oder anwendungsspezifische Steuerprogramm operiert auf dem höchsten Privilegpegel über der SP-Schnittstelle, die ein niedrigerer Privilegpegel ist als die operierenden Privilegpegel der SPGS und des SPK.
  • Eine zweite wichtige zusätzliche Funktionalität ist, daß zumindest zwei Dimensionen der speicherpartitionierenden Steuerung zur Partitionierung eines Speichers zwischen den betriebssystembasierten Domains und, innerhalb jeder Domain, zur Partitionierung eines Speichers zwischen der SP, einem Betriebssystem und den Anwendungsprogrammprozessen auf Benutzerpegel für die SP verfügbar sind. 16 stellt die zweite speicherpartitionierende Funktionalität dar, die durch die SP benötigt wird und durch moderne Prozessorarchitekturen, wie z. B. die Intel IA-64-Prozessorarchitektur, bereitgestellt wird. In 16 wird der gesamte virtuelle Speicherplatz durch ein großes Rechteck 1602 dargestellt. Ein Abschnitt des gesamten virtuellen Speicherplatzes 1604, der als horizontales Rechteck dargestellt ist, das das gesamte horizontale Ausmaß des großen Rechtecks 1602 umspannt, ist nur durch die Softwareschicht der SP zugreifbar. Ein zweiter Abschnitt des gesamten virtuellen Speicherplatzes, der als horizontales Rechteck 1606 gezeigt ist, das das gesamte horizontale Ausmaß des großen Rechtecks 1602 umspannt, wird innerhalb jeder Domain durch das Betriebssystem, das diese Domain verwaltet, verwendet. Ein dritter Abschnitt des gesamten virtuellen Speicherplatzes, der als horizontales Rechteck 1608 gezeigt ist, das das gesamte horizontale Ausmaß des großen Rechtecks 1602 umspannt, wird durch individuelle Anwendungsprogramme und andere Prozesse auf Benutzerpegel innerhalb jeder Domain verwendet. Wie vorstehend erörtert, bezugnehmend auf 9, ermöglichen die Privilegpegel, die den Speicherseiten in den TLB-Einträgen zugeordnet sind, die Partitionierung des Speichers zwischen den Prozessen, die auf den unterschiedlichen Privilegpegeln arbeiten, sind. jedoch für die horizontale Partitionierung der Domains und Anwendungen nicht ausreichend, die in jeder Domain arbeiten. Daher kann die Partitionierung des Speichers innerhalb der horizontalen SP, des Betriebssystems und der Partitionierungen auf Be nutzerpegel 1604, 1606 und 1608 teilweise unter Verwendung einer privilegpegelbasierten Partitionierung des Speichers erreicht werden, vorausgesetzt, daß die SP, das Betriebssystem und die Prozesse auf Benutzerpegel auf unterschiedlichen Privilegpegeln arbeiten. Die privilegpegelbasierte Partitionierung des Speichers kann jedoch beispielsweise einen Bereich des Speichers, der einem Prozessor auf Benutzerpegel zugeordnet ist, nicht vor einem Zugriff durch einen Betriebssystemprozeß schützen.
  • Die SP stellt für eine beliebige Anzahl von gleichzeitig arbeitenden Betriebssystemen Dienste bereit, wobei jedes Betriebssystem eine beliebige Anzahl von unterschiedlichen Prozessen auf Benutzerpegel verwaltet. Um einen Speicher, der einem Betriebssystem zugeordnet ist, vor einem Zugriff durch ein anderes Betriebssystem zu schützen, sind der Betriebssystem-Speicherplatz 1606 und der Speicherplatz 1608 auf Benutzerpegel ferner in Domains aufgeteilt. Ein einzelnes Betriebssystem und alle Prozesse auf Benutzerpegel, die durch dieses Betriebssystem verwaltet werden, weisen zusammen eine Domain auf, und jeder Domain ist ein separater Abschnitt des virtuellen Speichers zugeordnet. Daher verwendet in 16 ein erstes Betriebssystem einen ersten Abschnitt 1610 des Betriebssystem-Speicherplatzes 1606, ein zweites Betriebssystem verwendet einen zweiten Abschnitt 1612 des gesamten Betriebssystem-Speicherplatzes 1606, und ein drittes Betriebssystem verwendet einen dritten Abschnitt 1614 des gesamten Betriebssystem-Speicherplatzes 1606. Der Speicherplatz 1608 auf Benutzerpegel ist ebenfalls in Domains aufgeteilt, so daß in 16 kleine Abschnitte des virtuellen Speicherplatzes 1616 bis 1619 und der erste Abschnitt des Betriebssystem-Speicherplatzes 1610 zusammen den Speicherplatz bilden, der einer ersten Domain, Domain 0, zugeordnet ist, die Speicherabschnitte 1620-1623 und der Betriebssystem-Speicherabschnitt 1612 zusammen den Speicher bilden, der einer zweiten Domain, Domain 1, zugeordnet ist, und die Speicherabschnitte 1624-1627 auf Benutzerpegel und der Betriebssystem-Speicherabschnitt 1614 zu sammen den Speicherplatz bilden, der einer dritten Domain, Domain 2, zugeordnet ist. Natürlich kann sich in einem derzeitigen Computersystem die Menge eines Speichers, die einer speziellen Domain zugeordnet ist, von der Menge eines Speichers unterscheiden, die anderen Domains zugeordnet ist, und unterschiedliche Anzahlen von Benutzerprozessen können in unterschiedlichen Domains arbeiten.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung verwendet die SP die Bereichsregister und Bereichsidentifizierer, die vorstehend unter Bezugnahme auf 9 beschrieben wurden, um den Speicher im Hinblick auf die Domains zu partitionieren. Daher werden jedem Betriebssystem, und den Prozessen, die durch das Betriebssystem verwaltet werden, die zusammen eine Domain bilden, ein spezieller Satz von Bereichsidentifizierern für ihre ausschließliche Verwendung zugeordnet. Wie in 16 gezeigt ist, kann man sich eine bereichsidentifiziererbasierte Speicherpartitionierung als eine Dimension 1628 eines zweidimensionalen Speicherpartitionierungsmechanismus vorstellen.
  • Die SP benötigt neben der Inter-Domain-, bereichsidentifiziererbasierten Speicherpartitionierung einen zweiten Partitionierungsmechanismus zum Partitionieren eines Speichers in einer Domain zwischen dem Betriebssystem und den Prozessen auf Benutzerpegel sowie zum Partitionieren eines Speichers, der der SP von einem Speicher zugeordnet ist, der den Betriebssystemen und den Prozessen auf Benutzerpegel zugeordnet ist. In 16 wird dieser zweite Partitionierungsmechanismus als eine zweite Dimension 1630 von einer Speicherpartitionierung dargestellt. Bei dem beschriebenen Ausführungsbeispiel der SP wird diese zweite speicherpartitionierende Dimension durch Zuordnen einer feststehenden Anzahl von Bereichsregistern bereitgestellt, um die Bereichsidentifizierer für die SP-Softwareschicht und die Domain-Betriebssysteme zu enthalten. Die verbleibenden Bereichsregister enthalten die Bereichsidentifizierer für jeden Prozeß auf Benutzerpegel. Die IA-64- Schutzschlüssel liefern eine noch feinere Granularität einer Separierung in allen Speicherbereichen 1604, 1606 und 1608. Die Schutzschlüssel werden beispielsweise verwendet, um die Mechanismen in der SPK-Schicht zu separieren. Weil die SP alle Register, den physischen Speicher und die Schutzschlüssel steuert, kann die SP den physischen Speicher und Sätze der Bereichsidentifizierer zur ausschließlichen Verwendung von jeder Domain zuordnen. Es ist zu beachten, daß durch die Verwendung von schutzschlüsselbasierten Speicherpartitionen ein spezieller Bereich des Speichers im Prinzip einem beliebigen Prozeß zum ausschließlichen Zugriff durch diesen Prozeß zugeordnet sein kann.
  • Daher ermöglichen die Speicherschutzmechanismen, die durch die Intel®-IA-64-Architektur bereitgestellt werden, durch Verwendung einer horizontalen Partitionierung des Speichers durch die Bereichsidentifizierer und einer horizontalen Partitionierung des Speichers durch die Bereichsregister, das die SP den Speicher partitionieren kann, um Bereiche eines Speichers, auf die nur durch die SP ausschließlich zugegriffen werden kann, Bereiche eines Speichers, auf die nur die SP und ein weiteres Betriebssystem oder eine Entität auf Benutzerpegel ausschließlich zugreifen können, und Bereiche eines Speichers bereitzustellen, auf die durch einen Satz von einem Betriebssystems und Entitäten auf Benutzerpegel und die SP zugegriffen werden kann. Die Schutzschlüsselmechanismen, die durch die Intel-®-IA-64-Architektur bereitgestellt werden, liefern eine noch feinere Granularität. Bei den derzeitigen Computersystemen können das Betriebssystem, das auf dem Privilegpegel 0 ausgeführt wird, oder ein beliebiger der I/0-Treiber oder der anderen Stammgäste, die auf dem Privilegpegel 0 arbeiten müssen, einen Zustand manipulieren, um einen Zugriff auf den gesamten Speicher in einem Computersystem zu erhalten. Bei einem SP-basierten System, das das zweidimensionale Speicherpartitionierungsschema verwendet, das in 16 dargestellt ist, kann die SP im Gegensatz dazu Speicherbereiche, die nur für eines von vielen gleichzeitig arbeiten den Speichersystemen im System zugreifbar sind, sowie Speicherbereiche bereitstellen, die nur für einen speziellen Prozeß auf Benutzerpegel zugreifbar sind. In 16 kann die SP, beispielsweise durch Steuerung der Zuordnung der Schutzschlüssel, für selbst einen Speicherbereich zuordnen, wie z.B. einen Speicherbereich 1632, auf den nur ein spezieller SP-Mechanismus zugreifen kann. Ein solcher SP-Mechanismus-Exklusiv-Bereich wird durch die SP verwendet, um die tatsächlichen Werte der Verschlüsselungsschlüssel zu speichern, so daß auf die geheimen Schlüsselmaterialien nicht durch ein Betriebssystem oder einen Prozeß auf Benutzerpegel zugegriffen werden kann. Natürlich könnte ein böswilliger SPK-Code, weil der SPK auf dem Privilegpegel 0 arbeitet, die Speicherschutzvorkehrungen umgehen. Die Grundlagen, um einen SPK-Code vertrauenswürdig zu machen, sind: (1) Es ist eine begrenzte Anzahl von SPK-Mechanismen vorhanden. (2) Jeder SPK-Mechanismus ist relativ klein, verständlich, unabhängig und in sich geschlossen. (3) Der SPK-Quellencode kann veröffentlicht und durch unabhängige Experten überprüft werden. (4) Der SPK-Code-Entwicklungsprozeß umfaßt ausführliche Codeuntersuchungen durch mehrere Personen. Und (5), Die SPK-Codebilder sind digital signiert und werden vor der Ausführung verifiziert.
  • Bei vielen derzeit erhältlichen Computersystemen können die Steuerungen für die I/O-Vorrichtungen direkt auf den physischen Speicher zugreifen. Die SP erlaubt keinen direkten Zugriff auf den physischen Speichers durch eine beliebige Nicht-SP-Routine oder durch eine externe Hardware. Statt dessen muß die Hardwarekomponente der SP bestimmte Mechanismen zum Bereitstellen von Virtuelle-Adresse-Zu-Physische-Adresse-Übersetzungen oder eine andere Einrichtung in den Hardware-Busadaptern und Routingkomponenten umfassen, um die physischen Adressen,. auf die die I/O-Hardware zugreifen kann, einzuschränken, so daß eine I/O-Steuerung die Daten nur mit einem Speicherbereich austauschen kann, der für diesen Zweck durch die SP zugeordnet wurde, jedoch nicht auf einen Speicher außerhalb des Spei cherbereichs zugreifen kann, der der I/O-Steuerung zugeordnet ist.
  • Die Software-Schicht der SP (1604 in 16) ist mit der Hardware-Firmware-Schnittstelle (1508 in 15) und mit einem oder mehreren Betriebssystemen über die SPI (1502 in 15) schnittstellenmäßig verbunden. Die Software-Schicht der SP ist an sich in zumindest zwei Schichten mit zumindest einer internen Schnittstelle aufgeteilt. 17 ist ein Blockdiagramm der Software-Schicht der SP. Die Software-Schicht der SP 1702 ist entlang der gestrichelten Linie 1704 in eine SPGS-Schicht 1706 und in eine SPK-Schicht 1708 unterteilt. Bei einem Ausführungsbeispiel der vorliegenden Erfindung werden die Routinen der SPGS 1706 auf dem Privilegpegel PLl ausgeführt, während die Routinen des SPK 1708 auf der PLO ausgeführt werden. Die interne Aufteilung berücksichtigt ein Konstruieren eines relativ kleinen SPK, der durch formelle Verifizierungsverfahren, Codeanalysen (Durchgehen von Codes) und letztendlich durch Veröffentlichung für Experten innerhalb der Sicherheitsund Computerbetriebssystemgemeinden verifiziert werden kann. Daher kann der am höchsten privilegierte Code des SPK möglichst fehlerfrei und robust ausgeführt werden, und alle anderen Teile des Systems sind vor dem Trojanischen Pferd oder einem virenverseuchten PLO-Code, der in schädlicher Weise auf die geschützten Speicherbereiche, die anderen Prozessen zugeordnet sind, zugreifen und dieselben modifizieren kann, vollständig geschützt.
  • Die SPGS-Schnittstelle weist logischerweise drei Haupt-Teilschnittstellen auf: (1) Die SP-Plattformverwaltungsdienste 1710, die eine Einrichtung zum Konfigurieren der logischen und physischen Betriebsmittel des Systems und die Einrichtung für das Domain-Betriebssystem oder das anwendungsspezifische Steuerprogramm bereitstellen, um den privilegierten Status der Maschinen zu beeinflussen. (2) Die SP-Sicherheitsverwaltungsdienste 1712, die die kryptographi schen und sicheren Speicherungsfunktionen der SP einschließlich beispielsweise unterscheidbarer funktionaler Komponenten bereitstellen, die jeweils durch unterscheidbare Schutzschlüssel zur Isolierung von verschiedenen Systemkomponenten geschützt werden können. Und (3) SP-Extensionen 1714, die ein Erweitern der funktionalen Anforderungen der SP im Laufe der Zeit berücksichtigen, wodurch ein Hinzufügen einer Funktionalität, wie z. B. zusätzliche kryptographische Algorithmen, an die SP ermöglicht wird. Für ein besseres Verständnis der verwandten Erörterung werden in 17 die Teilschnittstellenunterteilungen bis zum SPK getragen. Die SP-Schnittstelle kann vollständig aus SPGS-Diensten bestehen, die wiederum SPK-Mechanismen aufrufen, oder kann aus SPGS-Diensten, die nach Bedarf SPK-Mechanismen aufrufen, sowie aus SPK-Mechanismen bestehen.
  • Die SP-Plattformverwaltungsdienste-Teilschnittstelle 1710 umfaßt: (1) SP-Plattformdienste 1716, die durch ein Betriebssystem oder ein anwendungsspezifisches Steuerprogramm aufgerufen werden, um Funktionen auszuführen, die privilegierte Operationen benötigen, die SP-Betriebsmittel involvieren oder die sicherheitsempfindlich sind. (2) Domain-Steuerungsdienste 1718, die für eine Erzeugung, Konfiguration, Reinitialisierung und ein Schließen der Domains sorgen. (3) Prozessorsteuerungsdienste 1720, die für eine Konfiguration und Abwicklung der logischen und physischen CPUs sorgen. (4) Plattformtaktiksteuerungdienste 1722, die für eine Spezifikation, Einhaltung und Anwendung der Plattformtaktik, wie z. B. einer Zuordnung der Systembetriebsmittel sorgen. Und (5) Inter-Domain- und Intra-Domain-Dienste 1724, die für eine Signalisierung von Ereignissen zwischen den logischen CPUs innerhalb und zwischen den Domains, eine gemeinsame Verwendung von Betriebsmitteln zwischen den Domains und ein Ermögichen einer Datenübertragung für einen schnellen Netzbetrieb oder einen Datenaustausch sorgen. Die SP-Plattformverwaltungsdienste 1710 können wiederum einen oder mehrere der SP-Mechanismen, die nachstehend beschrieben sind, aufrufen. Die SP-Plattformverwaltungsdienste va- 1idieren Parameter und authentifizieren Aufrufe vor dem Aufrufen der SP-Mechanismen. Zusätzliche Einzelheiten über einige spezifische SP-Plattformdienste-Routineschnittstellen sind im Anhang A vorgesehen.
  • Die SP-Sicherheitsverwaltungsdienst-Teilschnittstelle 1712 umfaßt: (1) Sicherheitsdepotdienste 1726, die durch ein Betriebssystem, ein anwendungsspezifisches Steuerprogramm oder ein Benutzeranwendungsprogramm aufgerufen werden, stellen Funktionen bereit, die Geheimnisse verwenden, die nur den spezifischen Mechanismen zur Verfügung stehen, die auf dem höchsten Privilegpegel des Systems, PLO, ausgeführt werden, einschließlich (a) kryptographische Dienste, die für ein Verschlüsseln und Entschlüsseln von Daten unter Verwendung von einem oder mehreren kryptographischen Algorithmen sorgen, und (b) sichere Datendienste. Und (2) Ruferauthentifizierungsdienste 1728, die eine Einrichtung für Domains bereitstellen, um ein Sicherheitsetikett, das in einem Zustand beibehalten wird, auf den nur die SP zugreifen kann, den Systemobjekten, einschließlich spezifische Benutzer, Anwendungsprogramme, Betriebssystemkomponente, Verzeichnisse, Dateien und abfertigbare Objekten, zuzuordnen, und um dieses Etikett zu verwenden, um den Zugriff auf die Plattform und die Sicherheitsdepotdienste zu authentifizieren. Die durch die Funktionen verwendeten Geheimnisse umfassen kryptographische Schlüsselmaterialien. Durch Verstecken der Schlüssel, selbst vor den Domains, die dieselben verwenden, können die Schlüsselmaterialien sicher verwahrt werden, selbst wenn das Domain-Betriebssystem, das anwendungsspezifische Steuerprogramm oder das Benutzeranwendungsprogramm durch einen Angreifer gefährdet werden. Die sicheren Systeme müssen Depots einrichten, wie z. B. Sicherheitsprotokolle, die, außer durch die spezifischen Schnittstellen, nicht zugreifbar sind- oder nicht modifiziert werden können. Die SP liefert eine Grundfunktionalität, um einem Domain-Betriebssystem oder einem anwendungsspezifischen Steuerprogramm zu ermöglichen, zu einem sicheren Depot beizutragen oder dasselbe zu befragen. Zusätzli the Einzelheiten der spezifischen SP-Depotdienste-Routineschnittstellen sind in Anhang B vorgesehen.
  • Die SP-Plattformdienste 1716 umfassen eine Speicherverwaltung, eine Prozeßverwaltung und eine Unterbrechungsverwaltungsdienste. Die Speicherverwaltungsdienste sorgen für eine Steuerung der Erzeugung, Manipulation und des Löschens der Abbildungen zwischen den virtuellen und physischen Adressen und steuern den Prozessor-TLB (914 in 9) und die virtuelle Seitentabelle (1004 in 10). Die IA-64-basierte SP-Implementierung teilt jeder Domain die abgetrennten Sätze der Bereichsidentifizierer zu, so daß die erweiterten virtuellen Adressen in allen Domains eindeutig sind. Jeder Domain werden auch abgetrennte Bereiche des physischen Speichers zugeteilt. Dadurch wird sichergestellt, daß eine Domain nicht auf den physischen Speicher der anderen zugreifen kann. Jeder Seite des Speichers wird auch ein Schutzschlüssel zugewiesen, der Fachsteuerungen oder andere Steuerungen einer feineren Granularität bei Speicherzugriffen ermöglicht.
  • Die Prozeßverwaltungsdienste sorgen für eine Steuerung der Ausführung der Prozesse auf den physischen Prozessoren. Die SP implementiert zwei Prozessor-verwandte Abstraktionen: abfertigbare Objekte und logische CPUs. Ein abfertigbares Objekt ist ein gespeicherter Teilprozeß aus einer Steuerung und einem zugeordneten Adressierungskontext in einer Domain. Das abfertigbare Objekt enthält den Status, der zur Wiederaufnahme der Ausführung an dem Punkt, wo der Teilprozeß der Steuerung zuvor unterbrochen wurden, notwendig ist. Der Adressierungskontext ist der Satz von zugeordneten Bereichs-IDs und Schutzschlüsseln, die aus dem Satz der Domain gezogen wurden. Diese Werte bestimmen den legalen erweiterten virtuellen Adressierungskontext für ein abfertigbares Objekt. Ein Betriebssystem oder anwendungsspezifisches Steuerprogramm wickelt die abfertigbaren Objekte durch Speichern des derzeitigen Ausführungszustands in ei nem abfertigbaren Objekt und Wiederherstellen des Ausführungszustands von einem anderen abfertigbaren Objekt ab.
  • Die logischen CPUs sind die Sichtweise der Domain auf einen oder mehrere physische Prozessoren. Eine Domain kann einen oder mehrere logische Prozessoren aufweisen. Die Anzahl von logischen Prozessoren in einer Domain und die Gesamtheit der logischen Prozessoren in allen Domains kann kleiner als, gleich oder größer als die Gesamtheit der physischen Prozessoren in dem System sein. Die logischen Prozessoren werden eingeplant und an die physischen Prozessoren durch die SP versandt. Ein Betriebssystem oder anwendungsspezifisches Steuerprogramm weiß allgemein nicht über diese Abwicklung Bescheid, wodurch Veränderungen an der CPU-Konfiguration ohne eine OS-Involvierung ermöglicht werden.
  • Die SP-Unterbrechungsverwaltungsdienste sorgen für eine Handhabung von unmittelbaren Unterbrechungen und für ein anschließendes Versenden einer Benachrichtigung über die Unterbrechungen an ein Betriebssystem oder ein anwendungsspezifisches Steuerprogramm. Eine Unterbrechung ist ein Ereignis, das bewirkt, daß die Steuerung zu spezifischen Handhabungsroutinen umgeleitet wird. Die Unterbrechungen, die durch die IA-64-Architektur definiert sind, sind in vier Kategorieren unterteilt: (1) Abbrüche, entweder Prozessorrücksetzungen oder ein interner Maschinenfehler, (2) Fehler, synchrone Unterbrechungen, die aus einer Anweisung resultieren, die eine Maßnahme spezifiziert, die nicht ausgeführt werden kann oder nicht ausgeführt werden sollte, oder für die eine Systemintervention notwendig ist, bevor die Anweisung ausgeführt wird, (3) Fallen, synchrone Unterbrechungen, die resultieren, wenn eine beendete Anweisung eine Systemintervention benötigt und (4) asynchrone Unterbrechungen, die asynchrone Ereignisse. oder Signale darstellen, die durch externe Entitäten oder Entitäten, die von von einem Prozessor unabhängig sind, erzeugt werden, einschließlich I/O-Vorrichtungs-bezogene Ereignisse, die in der zeitlichen Reihenfolge ihres Auftretens in den Priori tätsklassen an Handhabungseinrichtungen geliefert werden müssen. In 17 werden die Abbrüche, Fehler und Fallen als „Ausnahmen" bezeichnet. Die asynchronen Unterbrechungen werden als „Unterbrechungen" bezeichnet.
  • An die SPGS Es werden verschiedene SPK-Mechanismen durch eine interne SPK/SPGS-Schnittstelle geliefert, die mit der gestrichelten Linie 1704 in 17 logisch zusammenfällt. Auf die SPK-Mechanismen wird durch die SPGS über Aufrufe zugegriffen. Der SPK weist einen Satz von Mechanismen auf, die allgemein in Verbindung mit dem Aufrufen von Prozessen arbeiten. Die SPK-Mechanismen umfassen: (1) Speicherverwaltungsmechanismen 1730, (2) Prozessorversandmechanismen 1732. (3) Ausnahmehandhabungsmechanismen 1734, (4) Unterbrechungshandhabungsmechanismen 1736, (5) Fehlerbeseitigungs- und Überwachungsmechanismen 1738, (6) kryptographische Mechanismen und kryptographische Speicherung 1740, (7) Sicherheitsdepot-Mechanismen und -speicherung 1742.
  • Die Speicherverwaltungsmechanismen führen die privilegierten Operationen zum Einbringen von Übersetzungen in den TLB, VHPT und anderen Seitentabellen aus. Die Prozessorversandmechanismen handhaben das Speichern und Wiederherstellen des Zustands in die und von den abfertigbaren Objekten und logischen CPUs. Diese Mechanismen sind notwendig, weil ein Großteil des Zustands, wie z. B. der Adressierungskontext, privilegiert ist. Die Ausnahmehandhabungsmechanismen beschäftigen sich mit Fehlern, Fallen, speziellen Hardwareereignissen, wie z. B. Maschinenüberprüfungen und Veränderungen an der Hardware-Konfiguration und SP-erzeugten Ereignissen. Ein Betriebssystem oder anwendungsspezifisches Steuerprogramm registriert eine Ausnahmehandhabungseinrichtungs-Routine über die SPI, um aufgerufen zu werden, wenn Ausnahmen eintreten. Wenn eine Ausnahme eintritt, speichert die SP eine Mindestmenge des Prozessorzustands, überträgt dann die Steuerung an den registrierten Ausnahmehandhabungsreinrichtungen. Einige Fehler und Fallen können direkt durch die SP für ein Verhalten gehandhabt werden oder um die Schnittstelle mit einem Domain-Betriebssystem oder anwendungsspezifischen Steuerprogramm zu vereinfachen. Wenn ein Betriebssystem oder anwendungsspezifisches Steuerprogramm eine Benachrichtigung über die Unterbrechungsereignisse empfangen muß, registriert das Betriebssystem oder anwendungsspezifische Steuerprogramm eine Unterbrechungshandhabungseinrichtungs-Routine über die SPI für jede Unterbrechung, die erwartungsgemäß in der entsprechenden Domain eintreten soll. Wenn eine Unterbrechung eintritt, ruft die SP die zugeordnete Handhabungseinrichtungsroutine in einer speziellen, vorkonstruierten Ausführungsumgebung auf, um eine schnelle Unterbrechungsantwort zu ermöglichen. Die Unterbrechungen werden durch die SP zur Lieferung an jedes Betriebssystem oder anwendungsspezifische Steuerprogramm in einer Weise in einer Warteschlange aufgereiht, die die Erhaltung der zeitlichen Reihenfolge ermöglicht. Eine spezielle Unterbrechung, die durch die SP bereitgestellt wird, ist ein Zeitgeberticken, eine Unterbrechung, die zu einem feststehenden Zeitintervall eintritt. Jedes Betriebssystem oder anwendungsspezifische Steuerprogramm kann eine Benachrichtigung mit einem beliebigen ganzzahligen Vielfachen des feststehenden Zeitintervalls spezifizieren.
  • Fehlerbeseitigungs- und Überwachungsmechanismen verwenden eine Sammlung von Maschinenregistern, um eine Fehlerbeseitigungs- und Verhaltensüberwachung zu assistieren. Dieser SP-Mechanismus führt die privilegierten Zugriffe aus, die für ein Betriebssystem oder ein anwendungsspezifisches Steuerprogramm notwendig sind, um die Fehlerbeseitigungsund-Verhaltensüberwachungs-Maschinenbe-triebsmittel zu nutzen. Die kryptographischen Mechanismen und sicheren Speicherungsmechanismen liefern Verschlüsselungs-, Entschlüsselungs- und Schlüsselverwaltungsfunktionen. Die kryptographischen Algorithmen umfassen einen Symmetrischer-Schlüssel-Standardblock und Stromschlüssel (stream ciphers), eine Öffentlicher-Schlüssel-Verschlüsselung und sichere Hash-Funktionen. Die Schlüsselverwaltungsfunktionen umfassen eine Schlüsselerzeugung, einen Schlüsselimport, einen Schlüsselexport und eine Schlüsselmaterialpräparation. Die Sicherheitsdepotmechanismen und Speicherungsmechanismen können als Softwareobjekte betrachtet werden, die geheime Daten zusammen mit zugeordneten Zugriffsverfahren enthalten, die sich auf dem höchsten Privilegpegel des Systems befinden. Dieser Satz von Mechanismen ist erweiterbar.
  • Sicherer Boot-Prozeß
  • Die SP liefert Mechanismen, die ein Sichern von Komponenten des Systems ermöglichen, so daß ein Betriebssystem bei einer ordnungsgemäßen Strukturierung und Implementierung eine sichere Basis für Anwendungen und Prozesse auf Benutzerpegel ermöglichen kann. Eine wichtige Komponente der SP ist eine sichere Boot-Prozedur, die eine Folge von bekannten, korrekten Systemzuständen vom anfänglichen Hochfahren bis zum Beginnen von einem oder mehreren Betriebssystemprozessen sicherstellt. 18 ist ein Blockdiagramm der Hardwarekomponenten eines Systems, die auf den sicheren Boot-Prozeß bezogen sind. Die diesbezüglichen Hardwarekomponenten umfassen: (1) einen Prozessor 1802, der einen initialen Firmwarevalidierungsmechanismus 1804 enthält, der eine aktive Logik und gespeicherte Firmwareanweisungen aufweist, (2) einen ROM (ROM = read-only memory = Nur-Lese-Speicher) 1806, der digital signierte Sätze von Firmwareanweisungen 1808-1811 (digitale Signaturen, die als kleine Felder 1812-1815 angezeigt sind) enthält, die n unterschiedliche Sätze aus Firmwareanweisungen darstellen, wobei jeder Satz auf eine unterschiedliche Phase des sicheren Boot-Prozesses bezogen ist, (3) einen Hauptspeicher 1816, (4) ein Massenspeicherungsgerät 1818, das Anweisungen für ein OS-Laderprogramm und zumindest ein OS 1820 sowie digitale Signaturen 1822-1823 für den OS-Lader und das OS speichert, und (5) verschiedene interne Busse 1824-1829 und Busbrücken/Router/Steuerungen 1830-1832, die die Datenkommunikationen zwischen den zuvor beschriebenen Komponenten vereinfachen.
  • 19 ist ein Flußsteuerprogramm für einen sicheren Boot-Prozeß, „secure boot", das ein Ausführungsbeispiel der Sicherer-Boot-Prozeß-Komponente der SP darstellt. secure boot ist in 19 für ein Einprozessorsystem beschrieben, obwohl alternative secure boot-Routinen, die Multiprozessorsysteme booten, unkomplizierte Erweiterungen der secure boot-Routine sind, die unter Bezugnahme auf 19 beschrieben ist. Bei Schritt 1902 versorgt secure boot den Prozessor mit Leistung und steuert den Prozessor, um beliebige Selbsttestroutinen auszuführen, die als des Teil des Prozessors umfaßt sind. Bei Schritt 1904 validiert secure boot die digitale Signatur (1812 in 18) des Phase-l-Firmwareanweisungssatzes (1808 in 18). Bei Schritt 1906 steuert secure Boot den Prozessor, um den Phase-l-Firmwareanweisungssatz auszuführen. Anschließend überprüft secure boot in einer Solange-Schleife, die die Schritte 1908-1912 aufweist, einen nächsten Satz von Firmwareanweisungen in Schritt 1908. Wenn ein anderer Satz von Firmwareanweisungen übrig bleibt, um ausgeführt zu werden, wie bei Schritt 1908 bestimmt wurde, dann bestimmt secure boot bei Schritt 1909, ob der Firmwareanweisungssatz zum Hauptspeicher zur Ausführung bewegt werden soll oder nicht. Wenn der nächste Firmwareanweisungssatz zum Hauptspeicher bewegt werden soll, dann kopiert secure Boot bei Schritt 1910 den nächsten Firmwareanweisungssatz vom ROM zum Hauptspeicher. Anschließend validiert secure boot bei Schritt 1911 die digitale Signatur, die dem nächsten Satz von Anweisungen zugeordnet ist, und ermöglicht, daß der Code ausführbar ist, und verhindert eine Modifizierung des Codes und steuert im Anschluß an die Validierung den Prozessor, um den nächsten Anweisungssatz bei Schritt 1912 auszuführen. Der Begriff „Validieren" wird nachstehend verwendet, um sich auf eine Digitalsignaturvalidierung und ein Einstellen von Code-Zugriffserlaubnissen, die ausführbar, jedoch nicht schreibbar sein sollen, zu beziehen. Natürlich sendet secure boot bei allen Digitalsignatur-Validierungsschritten, wie z. B. den Schritten 1904 und 1911, wenn die digitale Signatur die Validierung nicht besteht, einen Fehler zurück und schei tert. Die nicht-validierende Firmware oder Software muß korrigiert werden, bevor secure boot erneut ausgeführt wird.
  • Sobald alle Sätze der Firmwareanweisungen im ROM validiert und durch secure boot ausgeführt worden sind, lädt secure boot bei Schritt 1914 den SP-Lader in den Speicher von einer Massenspeicherungsvorrichtung, validiert die digitale Signatur, die im SP-Lader bei Schritt 1916 umfaßt ist, und führt den SP-Lader bei Schritt 1918 aus, um die SP-Software zu laden, validiert die digitale Signatur, die der SP-Software zugeordnet ist, und führt dann eine oder mehrere SPG-Routinen aus. Es ist zu beachten, daß verschiedene Phasen der Firmware-Anweisungen und SB-Codebilder eventuell durch unterschiedliche Privatschlüssel signiert worden sein können und entsprechende öffentliche Schlüssel zur Validierung der digitalen Signaturen benötigen können. Sobald ein ausführbares Codebild validiert worden ist, kann einem öffentlichen Schlüssel, der in diesem Codebild enthalten ist, vertraut werden. Der sichere Boot-Prozeß kann als ein Prozeß des Aufbauens einer Vertrauenskette basierend auf der Validierung, die durch die Hardware zu Beginn des sicheren Boot-Prozesses ausgeführt wird, und des Erweiterns durch die Ausführung des letzten verifizierten Codebildes betrachtet werden. Es ist möglich und wird empfohlen, daß jeder OS-Lader und jedes OS die Vertrauenskette in das OS und die Anwendungsschichten erweitert.
  • Bei Schritt 1920 müssen die SPGS kryptographische Wurzelschlüssel erhalten. Dies kann durch Bereitstellen der Schlüssel außerhalb oder durch einen Sicherheitschip, der in der Plattform integriert ist, wie z. B. einen TCPA-Chip erfolgen. Unter Verwendung dieser Wurzelschlüssel und unter der Annahme, daß das 0S konzipiert worden ist, um die Vertrauenskette über die SP hinaus zu erweitern, laden und validieren die SPGS einen OS-Lader, führen den OS-Lader aus, um zumindest ein OS zu laden, validieren das OS und führen bei Schritt 1924 zumindest ein OS aus. An diesem Punkt, wo ein OS eine Ausführung beginnt, ist ein vollständig validiertes und authentifiziertes und sicheres SP initialisiert worden, um das OS zu unterstützen. Es ist dann die Verantwortung von einem oder mehreren OSs, die bei Schritt 1924 gestartet wurden, die Systemsicherheit unter Verwendung eines reichen Satzes an Diensten, die durch die SP geliefert werden, während der Systemoperation zu bewahren. Selbst wenn in ein OS durch einen erfolgreichen Angriff eingedrungen worden ist, erwirbt der Angreifer, im Gegensatz zu den vorliegenden OS-Anfälligkeiten, nicht den Privilegpegel 0.
  • Obwohl die vorliegende Erfindung bezüglich eines speziellen Ausführungsbeispiels beschrieben worden ist, soll sich die Erfindung nicht auf dieses Ausführungsbeispiel beschränken. Modifizierungen, die im Schutzbereich der vorliegenden Erfindung liegen, sind Fachleuten verständlich. Die kombinierte Hardware-und-Software-Sicherheitsplattformschnittstelle, die ein Ausführungsbeispiel der vorliegenden Erfindung darstellt, kann mit einer nahezu endlosen Anzahl von unterschiedlichen Routineschnittstellen in vielen verschiedenen Programmierungs- und Programmspezifikationssprachen implementiert sein. Obwohl das beschriebene Ausführungsbeispiel die Intel®-IA-64-Architektur als eine Hauptkomponente der Hardwareschicht anführte, könnten auch anderen moderne Computerprozessorarchitekturen in der Hardwareschicht der Sicherheitsplattform verwendet werden. Die Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle, die ein Ausführungsbeispiel der vorliegenden Erfindung darstellt, kann erweitert werden, um zusätzliche Dienste und Funktionalitäten neben den vorstehend erörterten zu liefern, und es können viele alternative Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstellen können entwickelt werden.
  • Anhang A
  • Bei den Ausführungsbeispielen der vorliegenden Erfindung verleihen die Sicherheitsplattform-Dienste allen Betriebssystemen und anwendungsspezifischen Steuerprogrammen die funktionalen Fähigkeiten, die durch die zugrundeliegenden hardware-privilegierten Register und Anweisungen implementiert sind. Dies erfolgt mittels organisierter Softwareschnittstellen mit den Plattformdiensten, die durch die SPGS und den SPK bereitgestellt werden.
  • Einige Plattformdienste abstrahieren die Funktionalität, die durch bestimmte privilegierte Register und Anweisungen bereitgestellt wird. Andere Plattformdienste entsprechen eng den spezifischen privilegierten Registern und/oder Anweisungen. Die Absicht der Sicherheitsplattform-Architektur ist es, für jedes Betriebssystem und anwendungsspezifische Steuerprogramm die volle funktionale Fähigkeit der zugrundeliegenden Hardware zu liefern, jedoch nur für jene Systembetriebsmittel, über die sie Kontrolle hat.
  • Die Sicherheitsplattform-Dienste weisen mehrere Kategorien von Diensten auf. Diese Dienste umfassen jene Dienste, um einem Betriebssystem oder einem anwendungsspezifischen Steuerprogramm zu ermöglichen, folgende Schritte auszuführen:
    • – Verwalten einer physischen und virtuellen Speicheradressierung.
    • – Verwalten einer Adressierung für I/0 und DMA-I/O-Operationen.
    • – Verwalten von abfertigbaren Objekten („DOs", geben sicherer Bereiche für Elemente an, die als „Prozesse", „Aufgaben" oder „Teilprozesse" durch verschiedene Betriebssysteme bezeichnet werden).
    • – Verwalten von synchronen und asynchronen Unterbrechungen.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung würden einige repräsentative Dienstschnittstellen bei diesen Kategorien folgende Merkmale umfassen:
  • Adressierung
  • spSetPageSize(PageSize, Virtual Address, Size) Die Seitengröße für eine virtuelle Adressenspanne spezifizieren.
  • Old Attributes = spMapMemory(Virtual Address, Physical Address, Size, Properties); Eine virtuelle Adressenspanne abbilden.
  • apSyncMappings(Virtual Address, Size); Abbildung zwischen mehreren Prozessoren synchronisieren.
  • I/O Address = spEnableDMAmap (Virtual Adress, Size, Read|Write);
  • Physische Adressenabbildung für Lese- oder Schreib-DMA-I/O-Operation einrichten.
  • spDisableDMAmap(Virtual Address, Size); Physische Adressenabbildung für DMA-I/O-Operation sperren.
  • Eigenschaften
  • Die Eigenschaftswerte werden verwendet, um einstellbare Parameter von einer Abbildung zwischen dem Domain-OS und der SP zu kommunizieren. Beispiele umfassen:
    Figure 00660001
  • Initialisierung und Hochfahren
  • void (*os entry) (spHandle defaultDO, spHandle CPU)
  • Dabei handelt es sich um die Eingangsadresse vom OS-Boot-Bild. Die Ausführung beginnt hier auf dem Boot-Prozessor (in einem MP-System). Die Ausführungsumgebung ist ausreichend initialisiert worden, so daß diese Routine in C sein kann. SP-Dienste sind verfügbar.
  • void (*os mp entry) (spHandle defaultDO, spHandle CPU)
  • Dabei handelt es sich um die address Eingangsadresse, die durch das OS registriert wird, wenn es bereit ist, die Mul-tiprozessoroperation zu starten. Die Ausführungsumgebung ist mit dem OS-Eingangspunkt identisch, außer daß zusätzliche Funktionen im Betriebskern initialisiert und freigegeben werden.
  • spErr spStartMP(void (*mpEntry) (spHandle, spHandle))
  • Vom OS beim Übergang zur Multiprozessoroperation abgerufen. Es ist möglich, daß die anderen CPUs die Ausführung beginnen, bevor dieser Aufruf zurückgesendet wird.
  • Prozeßverwaltung
  • spErr spCreateDO(spHandle *newDO, void *stack, void *rse; unsigned int flags)
  • Erzeugt ein neues Abfertigbares Objekt mit den spezifizierten Stapel-/RSE-Bereichen. Die Etiketten zeigen verschiedene Erzeugungsmodi an, z. B. ob die Eltern-DO-virtuelle-Adressierung kopiert/gemeinsam verwendet/beim Schreiben kopiert werden soll. Die Stapel- und RSE-Bereiche müssen durch das Eltern-DO adressierbar sein.
  • spErr spSwitchDO(sp Handle newDO, int die)
  • Die Ausführung auf der derzeitigen CPU wird auf die Spezifizierte DO geschaltet. Wenn die Stirb-Flagge gesetzt ist, wird das derzeitige DO gelöscht, bevor der Aufruf zurückkehrt. Der Aufruf kann scheitern, wenn newDO keine legale DO-Handhabung ist oder bereits versandt worden ist.
  • spErr spResume(spResumeState *resumeState)
  • Nimmt einen konstruierten oder zuvor gespeicherten Prozeßzustand wieder auf. Dieser Aufruf wird verwendet, wenn Veränderungen am privilegierten Zustand, z. B. domaingesteuerte PSR-Bits, erforderlich sind.
  • spErr spDeleteDo(spHandle victim)
  • Das spezifizierte DO löschen; es wird gelöscht, bevor der Aufruf zurückkehrt. Der Aufruf kann scheitern, wenn newDO keine legale DO-Handhabung ist oder momentan versandt wird.
  • Fehlerbeseitigungs- und Verhaltensüberwachung
  • spErr spGetDebugInfo(struct spDebugInfo *debugConfig)
  • Speichert folgende Informationen: Anzahl der Datenunterbrechungsregister, Anzahl der Anweisungsunterbrechungsregister, die größte gültige Datenadreßmaske und die größte gültige Anweisungsmaske. Wenn keine Unterbrechungsregister verfügbar sind, werden die Werte auf 0 gesetzt. Da die SP ein oder mehrere hohe Register für ihre Verwendung reservieren kann, kann der Rückkehrwert kleiner als die aktuelle Hardware sein.
  • spErr spSetDBR(int reg, void *addr, unsigned long mask, unsigned int mode)
  • spErr spSetIBR(int reg, void *addr, unsigned long mask, unsigned int mode)
  • Stellt die spezifizierten Daten- (Anweisungs-) Unterbrechungsregister ein, um einen Daten- (Anweisungs-) Fehlerbeseitigungsfehler zu erheben, wenn (access & mask) = (addr & mask). Der Modusparameter spezifiziert einen Lese- und/oder Schreibzugriff für Datenunterbrechungspunkte, Ausführen für Anweisungsunterbrechungspunkte und den Zugriffsprivilegpegel (privilegiert für das Domain-OS, unprivilegiert für Anwendungen). Wenn der Modus 0 ist, wird das spezifizierte Fehlerbeseitigungsregister gesperrt.
  • Dieser Aufruf scheitert, wenn reg kein gültiges Fehlerbeseitigungsregister ist, addr ungültig ist oder wenn eine Maske oder ein Modus durch die Hardware nicht honoriert werden können.
  • spErr spSetPMC(int reg, unsigned int event, unsigned int flags)
  • Stellt die Steuerung für die spezifizierte generische Überwachungseinrichtung ein: 4 ≤ reg ≤ 7. Das Ereignis ist implementationsspezifisch. Der Flagparameter spezifiziert, welche Privilegpegel überwacht werden, ob der zugeordnete Zähler erneut gesetzt werden soll oder nicht und ob die Überwachungseinrichtungsfreigabe privilegiert ist oder unter Anwendungssteuerung steht.
  • Im Gegensatz zu anderen Aufrufen kann dieser von den Anwendungen abgerufen werden (Privilegpegel 3). Der Aufruf scheitert, wenn reg ungültig ist oder wenn eine Anwendung versucht, eine privilegierte Überwachungseinrichtung zu setzen.
  • spErr spReadPMD(unsigned long long *val, int reg)
  • Den Ereigniszählwert für die spezifizierte generische Überwachungseinrichtung lesen: 4 ≤ reg ≤ 7.
  • Im Gegensatz zu anderen Aufrufen kann dieser von den Anwendungen abgerufen werden (Privilegpegel 3). Der Aufruf scheitert, wenn reg ungültig ist. Wenn die Überwachungseinrichtung privilegiert ist und der Aufrufer sich auf Privilegpegel 3 befindet, wird der Wert 0 zurückgesendet, um mit dem IA-64-Hardwareverhalten übereinzustimmen.
  • spErr spSetPMCX(int reg, unsigned long val, unsigned int flags)
  • Stellt die Steuerung für die spezifizierte generische Überwachungseinrichtung ein: reg < 4 oder reg > 7. Der Wert ist implementationsspezifisch.
  • Im Gegensatz zu anderen Aufrufen kann dieser von den Anwendungen abgerufen werden (Privilegpegel 3). Der Aufruf scheitert, wenn reg unimplementiert ist, val illegal ist oder wenn eine Anwendung versucht, eine privilegierte Überwachungseinrichtung einzustellen.
  • spErr spReadPMDX(unsigned long long *val, int reg) Den Ereigniszählwert für die spezifizierten Verhaltensüberwachungseinrichtungsdaten lesen: 0 ≤ reg ≤ 255.
  • Im Gegensatz zu anderen Aufrufen kann dieser von den Anwendungen abgerufen werden (Privilegpegel 3). Der Aufruf scheitert, wenn reg ungültig ist. Wenn die Überwachungseinrichtung unimplementiert ist oder privilegiert und der Aufrufer sich auf dem Privilegpegel 3 befindet, wird der Wert 0 zurückgesendet, um mit dem IA-64-Hardwareverhalten übereinzustimmen.
  • Abwicklung und Herunterfahren
  • spErr spDispatchAffinity(int value)
  • Stellt die Versandaffinität für die derzeitige CPU ein, der Wert ist die relative Bedeutung des erneuten Versendens auf der letzten CPU; 0 ≤ Wert ≤ 100.
  • spErr spPause(void)
  • Plaziert die derzeitige CPU in den Abwicklungspool mit einem Bereitstatus.
  • spErr spHald(void)
  • Hebt die Abwicklung für die derzeitige CPU auf, bis eine externe Unterbrechung an die Domain geliefert wird. Es ist zu beachten, daß die prozessorinternen Kommunikationen als externe Unterbrechungen modelliert sind.
  • spErr spShutDown(void)
  • Entfernt die derzeitige CPU von der Abwicklung in permanenter Weise und löscht den gesamten zugeordneten Zustand.
  • Unterbrechungen
  • Die IA-64-Architektur definiert eine Unterbrechung als ein beliebiges Ereignis, das bewirkt, daß die Steuerung an spezifische Handhabungsroutinen übergeben wird. Es gibt vier Klassen von Unterbrechungen:
    • 1. Abbrüche Der Prozessor hat eine Maschinenprüfung (internen Fehler) oder eine Prozessorrücksetzung erfaßt. Abbrüche sind PAL-basierte Unterbrechungen, sie können zum Domain-OS reflektiert werden oder nicht.
    • 2. Unterbrechungen Der Prozessor hat eine Anfrage empfangen, um einen Dienst auszuführen. Die Unterbrechungen können von einer externen I/0, anderen Prozessoren oder CPU-internen Ereignissen (z.B. Zeitgeberticken) stammen.
    • 3. Fehler Die derzeitige Itanium- oder IA-32-Anweisung, die eine Maßnahme anfordert, die nicht ausgeführt werden kann oder sollte, oder es ist eine Systemintervention ist erforderlich, bevor die Anweisung ausgeführt wird. Fehler sind im Hinblick auf den Anweisungsstrom synchron.
    • 4. Fallen Die IA-32- oder Itanium-Anweisung, die soeben ausgeführt wurde, erfordert eine Systemintervention. Fallen sind bezüglich des Anweisungsstroms synchron.
  • Abbrüche, Fehler und Fallen werden zusammen als Ausnahmen bezeichnet.
  • spErr spRegisterISR(int vector, void (*isr)(...), void *param)
  • Registrieren einer Routine, die abgerufen werden soll, wenn eine externe Unterbrechung an die Domain geliefert wird.
  • spErr spRegisterHandler(void (*eHandler)(...), void *param) Registrieren einer Routine, die abgerufen werden soll, wenn eine Ausnahme in der Domain eintritt.
  • spErr spSPL(int level)
  • Lieferung von allen Unterbrechungen auf den Vektoren verhindern, die kleiner oder gleich dem spezifizierten Pegel sind. Wenn level = =SPDISABLEINTR werden alle Unterbrechungen gesperrte wenn level = = SPENABLEINTR werden alle Unterbrechungen freigegeben. Wenn der Unterbrechungspegel ge senkt wird, können alle freigegebenen anstehenden Unterbrechungen geliefert werden, bevor der Aufruf zurückkehrt.
  • spErr spSignal(spHandle logicalCPU, void *message)
  • Liefert eine prozessorübergreifende „Unterbrechung" an die spezifizierte CPU. Der 46-Bit-Nachrichtenwert und die Handhabung für die sendende CPU werden als der Unterbrechungswert geliefert.
  • Anhang B
  • Bei Ausführungsbeispielen der vorliegenden Erfindung versehen die Sicherheitsdepotdienste die Betriebssysteme, anwendungsspezifischen Steuerprogramme und Benutzeranwendungen mit Funktionen, die eine Verarbeitung und in manchen Fällen eine Einhaltung von kritischen Daten erfordern, die außerhalb der Dienste an sich niemals zugreifbar sein dürfen. Die Struktur der SP-Architektur stellt sicher, daß solche kritischen Daten sowie die binären Codebilder der Funktionen, die solche Daten manipulieren, niemals direkt gelesen oder durch einen beliebigen Code in einem Betriebssystem, einem anwendungsspezifischen Steuerprogramm oder einer Anwendung modifiziert werden können.
  • Primäre Beispiele von Sicherheitsdepotdiensten sind kryptographische Dienste, die eine Verarbeitung mit und eine Sicherheitsverwahrung von Daten, wie z. B. kryptographischen Schlüsselmaterialien in Klartext erfordern. Ein Grundsatz von kryptographischen Diensten ist bei jeden Ausführungsbeispiel der vorliegenden Erfindung wesentlich. Zusätzliche Beispiele der Sicherheitsdepotdienste würden Dienste umfassen, die Betriebssicherheitstaktik- und Statusdaten, wie z. B. jene, die durch IPSec und SE-Linux benötigt werden, nutzen, kritische Prüfinformationen protokollieren oder alternative oder höhergradige Sätze von kryptographischen Diensten anbieten. Ein Quellencode für alle SPKs sowie für den Grundsatz von kryptographischen Diensten wird veröffentlicht und ist für eine öffentliche Prüfung offen. Den Anbietern von zusätzlichen Sicherheitsdepotdiensten steht es frei, die Einzelheiten ihrer Hinzufügungen zu veröffentlichen oder zu verbergen.
  • Die SP-Architektur ist im Hinblick auf den Satz von Sicherheitsdepotdiensten, die beinhaltet sein können, offen. Die Architektur ist absichtlich strukturiert, um jeden Satz der Sicherheitsdepotdienste zu segmentieren, wobei jeder Satz sowohl von allen anderen Sicherheitsdepotdiensten als auch von den SP-Sicherheitsplattform-Diensten isoliert wird. Dies schränkt den direkten Zugriff auf die kritischen Daten und Codebilder weiter ein, indem sie nicht nur vor den Betriebssystemen und Anwendungen sondern auch vor allen anderen SPGS- und SPK-Fächern geschützt werden.
  • Dies steht in starkem Kontrast zu der herkömmlichen Betriebssystemarchitektur, bei der eine dedizierte, Spezialhardware erforderlich ist, um selbst begrenzte Mengen von kritischen Daten vor einem erfolgreichen Angreifer zu schützen. Selbst bei einer Spezialhardware kann ein solcher Angreifer frei auf alle anderen Daten im Hauptspeicher oder Daten, die auf externen Speicherungsvorrichtungen gespeichert sind, zugreifen oder die Verfügbarkeit oder den internen Status der Spezialhardware stören. Bei großen Servern, verhindern die Kosten, die Menge an kritischen Daten und die Notwendigkeit, Verhaltensengpässe zu verhindern, daß ausreichend viele, dedizierte Spezial-Hardwaremodule eine adäquate Lösung sind. Die SP-Architektur gibt auf der anderen Seite die Nutzung aller Hauptprozessoren und nach Bedarf die Nutzung von großen Mengen des Hauptspeichers zum Halten und Verarbeiten von Daten frei, die unbedingt gesichert werden müssen.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung sind die Fächer unter Verwendung von IA-64-Schutzschlüsselregistern implementiert. Nach dem Eintritt in die SP wird der Hardwarezustand gesetzt, um den Zugriff ausschließlich auf das spezifizierte Fach zu begrenzen, und die Steuerung wird an den benannten Dienst weitergegeben. Der gesamte SP-Quellencode, der diese Verknüpfung steuert, kann ebenfalls veröffentlicht werden und für eine öffentliche Prüfung offen sein.
  • Das exakte Repertoire des Grundsatzes von kryptographischen Diensten wird ausgewählt, um eine Unterstützung für die erforderlichen kryptographischen Standards, wie z. B. SSL/TLS die TCPA-Hauptspezifikation (TCPA = Trusted Computing Platform Alliance = vertrauenswürdige Rechenplattformallianz), Version 1,0 oder die Mikrosoft-CAPI-Spezifikation (CAPI = Crypto API), zu liefern. Hardwaresicherheitschips werden derzeit entwickelt und in einer Hardware aufgenommen, um eine Unterstützung für einige grundlegende kryptographische Funktionen bereitzustellen. Die Implementierung des SP-Grundsatzes von kryptographischen Diensten ist strukturiert, um die Verwendung dieser Sicherheitschips, wenn sie vorliegen, zu ermöglichen.
  • Allgemein gesprochen umfassen die grundlegenden kryptographischen Dienste eine Einrichtung zur Erzeugung, zum Export, Import, Ersetzen, Einbehalten und Zerstören von symmetrischen und asymmetrischen Schlüsseln. Eine Folge von Verschlüsselungs- und Entschlüsselungsfunktionen für das Repertoire an Schlüsseln, die für eine interne Verwendung oder unterstützte Standards erforderlich sind, ist ebenfalls beinhaltet. Desgleichen sind die erforderlichen Folgen von kryptographischen Hash-Funktionen, Nachrichtenauthentifizierungsfunktionen, Digitalsignaturfunktionen sowie Zufallszahl- und Eindeutige-ID-Generatoren vorgesehen.
  • Sichere Maschinenplattform, die mit Betriebssystemen und anwendungsspezifischen Steuerprogrammen eine Schnittstelle bildet
  • Zusammenfassung
  • Eine Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle, mit der Betriebssysteme und anwendungsspezifische Steuerprogramme in einem Computersystem eine Schnittstelle bilden. Die Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle verwendet eine Hardwareplattform, die zumindest vier Privilegpegel, nichtprivilegierte Anweisungen, nicht-privilegierte Register, privilegierte Anweisungen, privilegierte Register und Firmwareschnittstellen liefert. Die Kombinierte-Hardware-und-Software-Sicherheitsplattformschnittstelle verbirgt alle privilegierten Anweisungen, privilegierten Register und Firmwareschnittstellen vor einem direkten Zugriff durch Betriebssysteme und anwendungsspezifische Steuerprogramme, wobei den Betriebssystemen und den anwendungsspezifischen Steuerprogrammen die nicht-privilegierten Anweisungen und nicht-privilegierten Register bereitgestellt werden, die durch die Hardwareplattform bereitgestellt werden, sowie ein Satz von aufrufbaren Softwarediensten. Die aufrufbaren Dienste liefern einen Satz von Sicherheitsplattformverwaltungsdiensten für die Betriebssteuerung der Hardwareressourcen, die weder privilegierte Anweisungen, privilegierte Register noch Firmwareschnittstellen der Hardware preisgibt, noch privilegierte Anweisungen und privilegierte Register simuliert. Die aufrufbaren Dienste liefern auch einen Satz von Sicherheitsverwaltungsdiensten, die intern erzeugte geheime Daten verwenden, wobei jeder segmentierte Sicherheitsverwaltungsdienst interne geheime Daten verwaltet, ohne die internen geheimen Daten anderen Rechnerentitäten als dem Sicherheitsverwaltungsdienst selbst preiszugeben.

Claims (43)

  1. Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle, wobei die Hardware eine Anzahl von Privilegpegeln, nicht-privilegierten Anweisungen, nicht-privilegierten Registern, privilegierten Anweisungen und privilegierten Registern bereitstellt, wobei die Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle folgende Merkmale aufweist: nicht-privilegierte Instruktionen und nichtprivilegierte Register, die durch die Hardware-Anweisungssatz-Architektur bereitgestellt werden; und einen Satz von aufrufbaren Softwarediensten, die, wenn sie aufgerufen werden, auf einem Privilegpegel, die privilegierter als die Privilegpegel der aufrufenden Programme ist, ausgeführt werden können und die für eine Betriebssteuerung der Hardwarebetriebsmittel ohne Preisgabe privilegierter Anweisungen und privilegierter Register der Hardware und ohne Simulieren privilegierter Anweisungen und privilegierter Register sorgen.
  2. Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle gemäß Anspruch 1, bei der die Hardware Firmwareschnittstellen und zumindest vier Privilegpegel zusätzlich zu nicht-privilegierten Anweisungen, nicht-privilegierten Registern, privilegierten Anweisungen und privilegierten Registern bereitstellt und auch eine Einrichtung zum Einschränken der physischen Speicheradressen, auf die durch I/O-perationen zugegriffen werden kann, bereitstellt.
  3. Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle gemäß Anspruch 1, bei der der Satz von aufrufbaren Softwarediensten folgende Merkmale aufweist: einen Satz von Sicherheitsplattform-Verwaltungsdiensten, der einen Aufrufer mit einer Betriebssteuerung der Hardwarebetriebsmittel versieht, die keine privilegierten Anweisungen und Register der Hardware preisgibt und die keine privilegierten Anweisungen und privilegierten Register simulieren, und einen Satz von Sicherheitsverwaltungsdiensten, die interne erzeugte geheime Daten verwenden, wobei jeder Sicherheitsverwaltungsdienst die internen geheimen Daten verwaltet, ohne die internen geheimen Daten anderen Rechnerentitäten als dem Sicherheitsverwaltungsdienst preiszugeben.
  4. Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle gemäß Anspruch 1, bei der die Sicherheitsplattform-Verwaltungsdienste folgende Merkmale aufweisen: Plattformdienste, die durch ein Betriebssystem oder ein anwendungsspezifisches Steuerprogramm aufgerufen werden, um Funktionen auszuführen, die privilegierte Operationen verwenden, die SP-Betriebsmittel involvieren oder die sicherheitsempfindlich sind; Domain-Steuerungsdienste, die für eine Erzeugung, Konfiguration, Reinitialisierung und Schließung von Domains sorgen; Prozessorsteuerungsdienste, die für eine Konfiguration und Abwicklung der logischen und physischen CPUs sorgen; Plattformtaktiksteuerungs-Dienste, die für eine Spezifikation, Einhaltung und Anwendung der Plattformtak tik, wie z. B. eine Zuordnung der Systembetriebsmittel, sorgen; und Inter-Domain- und Intra-Domain-Dienste, die für ein Signalisieren von Ereignissen zwischen den logischen CPUs innerhalb und unter den Domains, eine gemeinsame Verwendung der Betriebsmittel unter den Domains und eine Bereitstellung einer Datenübertragung für einen schnellen Netzbetrieb oder Datenaustausch unter den Domains sorgen.
  5. Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle gemäß Anspruch 1, bei der die Sicherheitsverwaltungsdienste folgende Merkmale aufweisen: Sicherheitsdepotdienste, die durch ein Betriebssystem, ein anwendungsspezifisches Steuerprogramm oder ein Benutzeranwendungsprogramm aufgerufen werden, die Funktionen bereitstellen, die Geheimnisse verwenden, die nur bestimmten Prozessen, die auf dem höchsten Privilegpegel des Systems ausgeführt werden, zur Verfügung stehen; und Ruferauthentifizierungsdienste, die eine Einrichtung für Domains bereitstellen, um ein Sicherheitsetikett spezifischen Benutzern, Anwendungsprogrammen, Betriebssystemkomponenten, Verzeichnissen, Dateien, abfertigbaren Objekten oder anderen Systemobjekten, einschließlich spezifischer Benutzer, Anwendungsprogramme, Betriebssystemkomponenten, Verzeichnisse, Dateien und abfertigbarer Objekte, zuzuordnen und um dieses Etikett zum Authentifizieren eines Zugriffs auf die Plattformdienste und die Sicherheitsdepotdienste zu verwenden.
  6. Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle gemäß Anspruch 5, bei der die Sicherheitsdepotdienste folgende Merkmale aufweisen: kryptographische Dienste, die für ein Verschlüsseln und Entschlüssen von Daten unter Verwendung von einer oder mehreren kryptographischen Funktionen einschließlich Funktionen, die Ein-Weg-Hashfunktionen, Nachrichtenauthentifizierungscodes, digitale Signaturen und Zufallszahlen berechnen, sorgen; und sichere Datendienste, einschließlich Sicherheitsprotokollen, Taktikdatenbanken und andere Formen von Diensten, die geheime Daten verwenden, die segmentiert und von allen anderen Systemkomponenten isoliert werden müssen.
  7. Computeranweisungen, die einen Softwareabschnitt der Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle gemäß Anspruch 1 implementieren, die in einem computerlesbaren Medium codiert ist.
  8. Computersystem, das zumindest ein Benutzerpegelprogramm, zumindest ein Betriebssystem, eine Hardwareplattform und die Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle gemäß Anspruch 1 aufweist.
  9. Computersystem, das ein Steuerprogramm kostmäßig ausführt, wobei das Steuerprogramm entweder ein Betriebssystem oder anwendungsspezifisches Steuerprogramm ist, wobei das Computersystem folgende Merkmale aufweist:
  10. eine Hardwareplattform, die eine. Anzahl von Ausführungsprivilegpegeln, nicht-privilegierten Anweisungen und nicht-privilegierten Registern und privilegierten Anweisungen und privilegierten Registern bereitstellt; einen Satz aus Softwarediensten, die durch das Steuerprogramm zum Ausführen von Operationen, die die privilegierten Anweisungen und/oder privilegierten Register oder beide erfordern, aufrufbar sind und die, wenn sie aufgerufen werden, auf einem Privilegpegel ausgeführt werden können, die privilegierter als ein Privilegpegel ist, auf der das Steuerprogramm ausgeführt wird, wobei die aufrufenden Programme weder privilegierte Anweisungen und privilegierte Register simulieren noch privilegierte Anweisungen und privilegierte Register dem Steuerprogramm preisgeben; und einen Sicherheitsplattform-Betriebskern, der auf einem am meisten privilegierten Pegel ausgeführt wird.
  11. Computersystem gemäß Anspruch 9, bei dem der Sicherheitsplattform-Betriebskern Aufrufe an die Softwaredienste vor dem Beginnen der Ausführung der Softwaredienste authentifiziert.
  12. Computersystem gemäß Anspruch 9, das ferner folgendes Merkmal aufweist: eine Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle, die die privilegierten Anweisungen und privilegierten Register verbirgt, wobei eine Schnittstelle zu den nicht-privilegierten Anweisungen und nicht-privilegierten Registern, die durch die Hardware-Anweisungssatzarchitektur bereitgestellt werden, und dem Satz von aufrufbaren Softwarediensten bereitgestellt wird.
  13. Computersystem gemäß einem der Ansprüche 9 bis 11, bei dem die Hardware Firmwareschnittstellen und zumindest vier Privilegpegel zusätzlich zu den nichtprivilegierten Anweisungen, nicht-privilegierten Registern, privilegierten Anweisungen und privilegierten Registern bereitstellt und auch eine Einrichtung zum Einschränken des physischen Speicheradressen, auf die durch die I/O-Operationen zugegriffen werden kann, bereitstellt.
  14. Computersystem gemäß Anspruch 9, bei dem der Satz von aufrufbaren Softwarediensten folgende Merkmale aufweist: einen Satz von Sicherheitsplattform-Verwaltungsdiensten zur Betriebssteuerung der Hardwarebetriebsmittel, die keine privilegierten Anweisungen und privilegierten Register der Hardware preisgeben und die keine privilegierten Anweisungen und privilegierten Register simulieren; und einen Satz von Sicherheitsverwaltungsdiensten, die intern erzeugte geheime Daten verwenden, wobei jeder Sicherheitsverwaltungsdienst interne geheime Daten verwaltet, ohne die internen geheimen Daten anderen Rechnerentitäten als dem Sicherheitsverwaltungsdienst preiszugeben.
  15. Computersystem gemäß Anspruch 13, bei dem die Sicherheitsplattform-Verwaltungsdienste folgende Merkmale aufweisen: Plattformdienste, die durch ein Betriebssystem oder anwendungsspezifisches Steuerprogramm aufgerufen werden, um Funktionen auszuführen, die privilegierte Operationen verwenden, die SP-Betriebsmittel involvieren oder sicherheitsempfindlich sind; Domain-Steuerungsdienste, die für eine Erzeugung, Konfiguration, Reinitialisierung und Schließung der Domains sorgen; Prozessorsteuerungsdienste, die für eine Konfiguration und Abwicklung der logischen und physischen CPUs sorgen; Plattformtaktiksteuerungs-Dienste, die für eine Spezifikation, Einhaltung und Anwendung der Plattformtaktik, wie z. B. der Zuordnung der Systembetriebsmittel, sorgen; und Inter-Domain- und Intra-Domain-Dienste, die für eine Signalisierung von Ereignissen zwischen logischen CPUs innerhalb und unter den Domains, eine gemeinsame Verwendung von Betriebsmitteln unter den Domains und ein Ermöglichen einer Datenübertragung für einen schnellen Netzbetrieb oder Datenaustausch unter den Domains sorgen.
  16. Computersystem gemäß Anspruch 13, bei dem die Sicherheitsverwaltungsdienste folgende Merkmale aufweisen: Sicherheitsdepotdienste, die durch ein Betriebssystem, ein anwendungsspezifisches Steuerprogramm oder ein Benutzeranwendungsprogramm aufgerufen werden, die Funktionen bereitstellen, die Geheimnisse verwenden, die nur für bestimmte Prozesse verfügbar sind, die auf dem höchsten Privilegpegel des Systems ausgeführt werden; und Aufruferauthentifizierungsdienste, die eine Einrichtung für Domains bereitstellen, um spezifischen Benutzern, Anwendungsprogrammen, Betriebssystemkomponenten, Verzeichnissen, Dateien, abfertigbaren Objekten oder anderen Systemobjekten einschließlich spezifischer Benutzer, Anwendungsprogramme, Betriebssystemkomponenten, Verzeichnisse, Dateien und abfertigbarer Objekte ein Sicherheitsetikett zuzuordnen und um dieses Etikett zu verwenden, um einen Zugriff auf die Plattform dienste und Sicherheitsdepotdienste zu authentifizieren.
  17. Computersystem gemäß Anspruch 15, bei dem die Sicherheitsdepotdienste folgende Merkmale aufweisen: kryptographische Dienste, die für ein Verschlüsseln und Entschlüsseln von Daten unter Verwendung von einer oder mehreren kryptographischen Funktionen einschließlich Funktionen, die Einweg-Hashfunktionen, Nachrichtenauthentifizierungscodes, digitale Signaturen und Zufallszahlen berechnen, sorgen; und sichere Datendienste einschließlich sicherer Protokolle, Taktikdatenbanken und anderer Formen von Diensten, die geheime Daten verwenden, die segmentiert und von allen anderen Systemkomponenten isoliert werden müssen.
  18. Computersystem gemäß Anspruch 9, das ferner eine interne Schnittstelle umfasst, die verschiedene Sicherheitsplattform-Betriebskernmechanismen bereitstellt, wobei das Computersystem folgende Merkmale aufweist: Speicherverwaltungsmechanismen; Versandmechanismen; Ausnahmemechanismen; Unterbrechungsmechanismen; Fehlerbeseitigungs- und Überwachungsmechanismen; kryptographische Mechanismen; kryptographische Speicherungsmechanismen; Sicherheitsdepotmechanismen; und Sicherheitsdepot-Speicherungsmechanismen.
  19. Computersystem gemäß Anspruch 9, das ferner einen sicheren Boot-Prozeß umfaßt, der in Hardware, Software, Firmware oder einer Kombination aus zwei oder mehreren von Hardware, Software und Firmware enthalten ist, der jede Firmware- und Softwareroutine, die ausgeführt wird, um das System bis zur Ausführung eines Betriebssystems zu initialisieren, authentifiziert und validiert.
  20. Computersystem gemäß Anspruch 18, bei dem der sichere Boot-Prozeß jede Software- und Firmwareroutine vor der Ausführung der Firmware- oder Softwareroutine einschließlich Betriebssystemsroutinen und Benutzeranwendungsprogrammen validiert.
  21. Verfahren zum Sichern eines Computersystems, wobei das Verfahren folgende Schritte aufweist: Versehen einer Hardwareplattform mit einer Anzahl von Privilegpegeln, Speichersegmentierungseinrichtungen, die einen Zugriff durch eine Entität auf eine Einheit des Speichers steuern, und Speicherpartitionierungseinrichtungen, die einen Speicher in Sätze von Bereichen partitionieren, wobei jeder Bereich eine Anzahl von Speichereinheiten aufweist; Bereitstellen eines Satzes von aufrufbaren Softwarediensten, die, wenn sie aufgerufen werden, auf einem Privilegpegel ausgeführt werden können, die privilegierter als die Privilegpegel der aufrufenden Programme ist, die für eine Betriebssteuerung der Hardwarebetriebsmittel ohne Preisgabe von privilegierten Anweisungen und privilegierten Registern der Hardware und ohne Simulieren von privilegierten Anweisungen und privilegierten Registern sorgen und die, zusammen mit der Hardwareplattform, eine Kombinierte-Hardware-und-Software-Sicherheitsplattform aufweisen; Bereitstellen einer Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle, die Betriebssystemen und anwendungsspezifischen Steuerprogrammen nichtprivilegierte Anweisungen und nicht-privilegierte Register preisgibt, die zu den aufrufbaren Software-Routinen Schnittstellen bereitstellt und die die privilegierten Anweisungen und privilegierten Register verbirgt; und Starten eines Betriebssystems oder Steuerprogramms, das mit der Kombinierte-Hardware-und-Software-Sicherheitsplattform-Schnittstelle schnittstellenmäßig verbunden ist.
  22. Verfahren gemäß Anspruch 20, bei dem die Hardwareplattform Firmware-Schnittstellen und zumindest vier Privilegpegel zusätzlich zu den nicht-privilegierten Anweisungen, nicht-privilegierten Registern, privilegierten Anweisungen und privilegierten Registern bereitstellt und auch eine Einrichtung zum Einschränken der physischen Speicheradressen, auf die durch die I/O-Operationen zugegriffen werden kann, bereitstellt.
  23. Verfahren gemäß Anspruch 20 oder 21, bei dem der Satz von aufrufbaren Softwarediensten folgendem Merkmale aufweist: einen Satz von Sicherheitsplattform-Verwaltungsdiensten, die einem Aufrufer eine Betriebssteuerung der Hardware-Betriebsmittel bereitstellen, ohne privilegierte Anweisungen und Register der Hardware preiszugeben und ohne privilegierte Anweisungen und privilegierte Register zu simulieren; und einen Satz von Sicherheitsverwaltungsdiensten, die intern erzeugte geheime Daten verwenden, wobei jeder Sicherheitsverwaltungsdienst interne geheime Daten verwaltet, ohne die internen geheimen Daten anderen Rechnerentitäten als dem Sicherheitsverwaltungsdienst preiszugeben.
  24. Verfahren gemäß Anspruch 22, bei dem die Sicherheitsplattformverwaltungsdienste folgende Merkmale aufweisen: Plattformdienste, die durch das Betriebssystem oder ein anwendungsspezifisches Steuerprogramm aufgerufen werden, um Funktionen auszuführen, die privilegierte Operationen verwenden, die SP-Betriebsmittel involvieren oder die sicherheitsempfindlich sind; Domain-Steuerungsdienste, die für eine Erzeugung, Konfiguration, Reinitialisierung und Schließung der Domains sorgen; Prozessorsteuerungsdienste, die für eine Konfiguration und Abwicklung der logischen und physischen CPUs sorgen; Plattformtaktik-Steuerungsdienste, die für eine Spezifikation, Einhaltung und Anwendung einer Plattformtaktik, wie z. B. der Zuordnung von Systembetriebsmitteln, sorgt; und Inter-Domain- und Intra-Domain-Dienste, die eine Signalisierung von Ereignissen zwischen logischen CPUs in und zwischen den Domains, eine gemeinsame Verwendung von Betriebsmitteln unter den Domains und ein Ermöglichen einer Datenübertragung für einen schnellen Netzbetrieb oder Datenaustausch unter den Domains sorgen.
  25. Verfahren gemäß Anspruch 22, bei dem die Sicherheitsverwaltungsdienste folgende Merkmale aufweisen: Sicherheitsdepotdienste, die durch ein Betriebssystem, ein anwendungsspezifisches Steuerprogramm oder ein Benutzeranwendungsprogramm aufgerufen werden, die Funktionen liefern, die Geheimnisse verwenden, die nur bestimmten Prozessen zur Verfügung stehen, die auf dem höchsten Privilegpegel des Systems ausgeführt werden; und Aufruferauthentifizierungsdienste, die eine Einrichtung für Domains bereitstellen, um spezifischen Benutzern, Anwendungsprogrammen, Betriebssystemkomponenten, Verzeichnissen, Dateien, abfertigbaren Objekten oder anderen Systemobjekten einschließlich spezifischen Benutzern, Anwendungsprogrammen, Betriebssystemkomponenten, Verzeichnissen, Dateien und abfertigbaren Objekten ein Sicherheitsetikett zuzuordnen und um dieses Etikett zu verwenden, um einen Zugriff auf die Plattformdienste und Sicherheitsdepotdienste zu authentifizieren.
  26. Verfahren gemäß Anspruch 24, bei dem die Sicherheitsdepotdienste folgende Merkmale aufweisen: kryptographische Dienste, die für ein Verschlüsseln und Entschlüsseln von Daten unter Verwendung von einer oder mehreren kryptographischen Funktionen einschließlich Funktionen, die Einweg-Hashfunktionen, Nachrichtenauthentifizierungscodes, digitale Signaturen und Zufallszahlen berechnen, sorgen; und sichere Datendienste, wie z. B: sichere Protokolle, Taktikdatenbanken und andere Formen von Diensten, die geheime Daten verwenden, die segmentiert und von allen anderen Systemkomponenten isoliert sein müssen.
  27. Verfahren gemäß einem der Ansprüche 20 bis 25, das ferner ein Bereitstellen einer internen Schnittstelle umfaßt, die verschiedene Sicherheitsplattform-Betriebskernmechanismen bereitstellt, die folgende Merkmale aufweisen: Speicherverwaltungsmechanismen; Versandmechanismen; Ausnahmemechanismen; Unterbrechungsmechanismen; Fehlerbeseitigungs- und Überwachungsmechanismen; kryptographische Mechanismen; kryptographische Speicherungsmechanismen; Sicherheitsdepot-Mechanismen; und Sicherheitsdepot-Speicherungsmechanismen.
  28. Verfahren gemäß einem der Ansprüche 20 bis 26, das ferner ein Bereitstellen eines sicheren Boot-Prozesses, der in Hardware, Software und Firmware enthalten ist, umfaßt, der jede Firmware- und Software-Routine, die ausgeführt wird, um das System bis zur Ausführung eines Betriebssystems zu initialisieren, authentifiziert und validiert.
  29. Verfahren gemäß Anspruch 27, bei dem der sichere Boot-Prozeß jede Firmware- und eine Software-Routine von der Ausführung der Firmware- oder Software-Routine, einschließlich er Betriebssystem-Routinen und Benutzeranwendungsprogrammen validiert.
  30. Computeranweisungen, die einen Softwareabschnitt der Kombinierte-Hardware-und-Software-Sicherheits-Plattform, die durch das Verfahren gemäß Anspruch 20 bereitgestellt wird, implementiert.
  31. Computersystem, das zumindest ein Benutzerpegelprogramm, zumindest ein Betriebssystem, eine Hardwareplattform und die Kombinierte-Hardware-und-Software-Sicherheits-Plattform, die durch das Verfahren gemäß Anspruch 20 bereitgestellt wird, aufweist.
  32. Verfahren zum Sichern eines Computersystems, das eine Hardware-Plattform mit einer Anzahl von Privilegpegeln, privilegierten Anweisungen und privilegierten Registern, nicht-privilegierten Anweisungen und nichtprivilegierten Registern, Speichersegmentierungseinrichtungen, die einen Zugriff durch eine Entität auf eine Einheit des Speichers steuern, und Speicherpartitionierungseinrichtungen umfaßt, die einen Speicher in Sätze von Bereichen partitionieren, wobei jeder Bereich eine Anzahl von Speichereinheiten aufweist, wobei das Verfahren folgende Schritte aufweist: Bereitstellen einer Softwareschicht, die folgende Merkmale aufweist: einen Satz von Sicherheitsplattform-Verwaltungsdiensten zur Betriebssteuerung von Hardwarebetriebsmitteln, die keine privilegierten Anweisungen und Register der Hardware preisgeben und die keine privilegierten Anweisungen und privilegierten Register simulieren, und einen Satz von Sicherheitsverwaltungsdiensten, die intern erzeugte geheime Daten verwenden, wobei jeder Sicherheitsverwaltungsdienst interne geheime Daten verwaltet, ohne die internen geheimen Daten anderen Rech nerentitäten als dem Sicherheitsverwaltungsdienst preiszugeben; und Bereitstellen einer Kombinierte-Hardware-und-Software-Sicherheits-Plattform-Schnittstelle, die nichtprivilegierte Anweisungen und nicht-privilegierte Register Betriebssystemen und anwendungsspezifischen Steuerprogrammen preisgibt, die Schnittstellen zu den aufrufbaren Software-Routinen bereitstellt und die die privilegierten Anweisungen und privilegierten Register verbirgt.
  33. Verfahren gemäß Anspruch 31, bei dem die Hardware Firmware-Schnittstellen und zumindest vier Privilegpegel zusätzlich zu den nicht-privilegierten Anweisungen, nicht-privilegierten Registern, privilegierten Anweisungen und privilegierten Registern und eine Einrichtung zum Einschränken der physischen Speicheradressen, auf die durch die I/0-Operationen zugegriffen werden kann, bereitstellt.
  34. Verfahren gemäß Anspruch 31, bei dem der Satz von aufrufbaren Software-Routinen, wenn dieselben aufgerufen worden sind, auf zumindest zwei Privilegpegeln ausgeführt werden können, die privilegierter sind als die Privilegpegel der aufrufenden Programme.
  35. Verfahren gemäß Anspruch 31, bei dem die Sicherheitsplattform-Verwaltungsdienste folgende Merkmale aufweisen: Plattformdienste, die durch ein Betriebssystem oder anwendungsspezifisches Steuerprogramm aufgerufen werden, um Funktionen auszuführen, die privilegierte Operationen verwenden, die SP-Betriebsmittel involvieren oder die sicherheitsempfindlich sind; Domain-Steuerungsdienste, die für eine Erzeugung, Konfiguration, Reinitialisierung und Schließung der Domains sorgen; Prozessorsteuerungsdienste, die für eine Konfiguration und Abwicklung der logischen und physischen CPUs sorgen; Plattformtaktik-Steuerungsdienste, die für eine Spezifikation, Einhaltung und Anwendung einer Plattformtaktik, wie z. B. der Zuordnung von Systembetriebsmitteln, sorgen; und Inter-Domain- und Intra-Domain-Dienste, die für ein Signalisieren von Ereignissen zwischen den logischen CPUs in und unter den Domains, eine gemeinsame Verwendung von Betriebsmitteln unter den Domains und eine Bereitstellung einer Datenübertragung für einen schnellen Netzbetrieb oder Datenaustausch unter den Domains sorgen.
  36. Verfahren gemäß Anspruch 31, bei dem die Sicherheitsverwaltungsdienste folgende Merkmale aufweisen: Sicherheitsdepotdienste, die durch ein Betriebssystem, anwendungsspezifisches Steuerprogramm oder Benutzeranwendungsprogramm aufgerufen werden, die Funktionen bereitstellen, die Geheimnisse verwenden, die nur den Prozessen zur Verfügung stehen, die auf dem höchsten Privilegpegel des Systems ausgeführt werden; und Aufruferauthentitifizierungsdienste, die eine Einrichtung für Domains bereitstellen, um den spezifischen Benutzern, Anwendungsprogrammen, Betriebssystemkomponenten, Verzeichnissen, Dateien, abfertigbaren Objekten oder anderen Systemobjekten einschließlich spezifischen Benutzern, Anwendungsprogrammen, Betriebssystemkomponenten, Verzeichnissen, Dateien und abfertigbaren Objekten ein Sicherheitsetikett zuzuordnen und um dieses Etikett zu verwenden, um einen Zugriff auf die Plattformdienste und Sicherheitsdepotdienste zu authentifizieren.
  37. Verfahren gemäß Anspruch 35, bei dem die Sicherheitsdepotdienste folgende Merkmale aufweisen: k ryptographische Dienste, die für ein Verschlüsseln und Entschlüsseln von Daten unter Verwendung von einer oder mehreren kryptographischen Funktionen einschließlich Funktionen, die Einweg-Hashfunktionen, Nachrichtenauthentifizierungscodes, digitale Signaturen und Zufallszahlen berechnen, sorgen; und Sicherheitsdatendienste, wie z. B. Sicherheitsprotokolle, Taktikdatenbanken und andere Formen von Diensten, die geheime Daten verwenden, die segmentiert und von allen anderen Systemkomponenten isoliert sein müssen.
  38. Verfahren gemäß Anspruch 31, das ferner eine interne Schnittstelle umfaßt, die verschiedene Sicherheitsplattform-Betriebskern-mechanismen bereitstellt, die folgende Merkmale umfassen: Speicherverwaltungsmechanismen; Versandmechanismen; _ Ausnahmemechanismen; Unterbrechungsmechanismen; Fehlerbeseitigungs- und Überwachungsmechanismen; kryptographische Mechanismen; kryptographische Speicherungsmechanismen; Sicherheitsdepotmechanismen; und Sicherheitsdepot-Speicherungsmechanismen.
  39. Verfahren gemäß Anspruch 31, das ferner ein Bereitstellen eines sicheren Boot-Prozesses umfaßt, der in Hardware, Software und Firmware enthalten ist, der jede Firmware- und Software-Routine, die ausgeführt werden, um das System bis zur Ausführung eines Betriebssystems zu initialisieren, jeweils authentifiziert und validiert.
  40. Verfahren gemäß Anspruch 38, bei dem der sichere Boot-Prozeß jede Firmware- und Software-Routine vor der Ausführung der Firmware- oder Software-Routine einschließlich der Betriebssystems-Routinen und Benutzeranwendungsprogramme validiert.
  41. Computeranweisungen, die einen Softwareabschnitt der Kombinierte-Hardware-und-Software-Sicherheits-Plattform-Schnittstelle, die durch das Verfahren gemäß Anspruch 31 bereitgestellt wird, implementieren.
  42. Computerprogramm, das zumindest ein Benutzerpegelprogramm, zumindest ein Betriebssystem, eine Hardware-Plattform und die Kombinierte-Hardware-und-Software-Sicherheits-Plattform, die durch das Verfahren gemäß Anspruch 31 bereitgestellt wird, aufweist.
  43. Kombinierte-Hardware-und-Software-Sicherheits-Plattform, die folgende Merkmale aufweist: eine Hardwareschicht, die eine Einrichtung zum Ausführen eines Prozesses oder einer Routine bei einer einer Anzahl von Privilegpegeln, privilegierten Anweisungen und privilegierten Registern, nicht-privilegierten An- weisungen und nicht-privilegierten Registern, eine Einrichtung zum Segmentieren eines Speichers zum Steuern eines Zugriffs durch einen Prozeß oder eine Routine auf eine Einheit des Speichers und eine Einrichtung zum Partitionieren eines Speichers in Sätze von Bereichen, wobei jeder Bereich eine Anzahl von Speichereinheiten aufweist, bereitstellt; eine Einrichtung zum Bereitstellen von Sicherheitsplattform-Verwaltungsdiensten zur Betriebssteuerung der Hardwarebetriebsmittel, die keine privilegierten Anweisungen und privilegierten Register der Hardware preisgeben und die keine privilegierten Anweisungen und privilegierten Register und Sicherheitsverwaltungsdienste simulieren, die intern erzeugte geheime Daten verwenden, wobei jeder Sicherheitsverwaltungsdienst die internen geheimen Daten verwaltet, ohne die internen geheimen Daten anderen Rechnerentitäten als dem Sicherheitsverwaltungsdienst preiszugeben; und eine Schnittstelleneinrichtung, die die privilegierten Anweisungen und privilegierten Register verbirgt, während aufrufenden Betriebssystem- oder Anwendungsspezifische-Steuerungs-Zugriffs-Routinen ein Zugriff auf die nicht-privilegierten Anweisungen und nichtprivilegierten Register, die durch die Hardware-Anweisungssatzarchitektur bereitgestellt werden, und auf die Sicherheitsplattform-Verwaltungsdienste und Sicherheits-Verwaltungsdienste bereitgestellt wird.
DE10292364T 2001-06-08 2002-06-07 Sichere Maschinenplattform, die mit Betriebssystemen und awendungsspezifischen Steuerprogrammen eine Schnittstelle bildet Ceased DE10292364T5 (de)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US29695801P 2001-06-08 2001-06-08
US29695701P 2001-06-08 2001-06-08
US29717501P 2001-06-08 2001-06-08
US60/296,957 2001-06-08
US60/297,175 2001-06-08
US60/296,958 2001-06-08
US10/118,646 2002-04-08
US10/118,646 US7073059B2 (en) 2001-06-08 2002-04-08 Secure machine platform that interfaces to operating systems and customized control programs
PCT/US2002/018180 WO2002101504A2 (en) 2001-06-08 2002-06-07 Secure machine platform that interfaces to operating systems and customized control programs

Publications (1)

Publication Number Publication Date
DE10292364T5 true DE10292364T5 (de) 2004-09-02

Family

ID=27494216

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10292364T Ceased DE10292364T5 (de) 2001-06-08 2002-06-07 Sichere Maschinenplattform, die mit Betriebssystemen und awendungsspezifischen Steuerprogrammen eine Schnittstelle bildet

Country Status (6)

Country Link
US (1) US7073059B2 (de)
JP (1) JP4498735B2 (de)
DE (1) DE10292364T5 (de)
GB (1) GB2381630B (de)
HK (1) HK1054799B (de)
WO (1) WO2002101504A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019201244A1 (de) * 2019-01-31 2020-08-06 Robert Bosch Gmbh Verfahren zum Überprüfen eines Softwaremoduls

Families Citing this family (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8234477B2 (en) 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US7536524B2 (en) * 1998-07-31 2009-05-19 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US6792392B1 (en) * 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US6886038B1 (en) 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
WO2002099598A2 (en) 2001-06-07 2002-12-12 First Usa Bank, N.A. System and method for rapid updating of credit information
EP1276033B1 (de) * 2001-07-10 2012-03-14 Trident Microsystems (Far East) Ltd. Speichereinrichtung mit Datenschutz in einem Prozessor
US7266839B2 (en) 2001-07-12 2007-09-04 J P Morgan Chase Bank System and method for providing discriminated content to network users
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US7987501B2 (en) 2001-12-04 2011-07-26 Jpmorgan Chase Bank, N.A. System and method for single session sign-on
AU2002353312A1 (en) * 2001-12-12 2003-06-23 Schlumberger Systemes Method and system for module chaining control in a modular software architecture
US6963932B2 (en) * 2002-01-30 2005-11-08 Intel Corporation Intermediate driver having a fail-over function for a virtual network interface card in a system utilizing Infiniband architecture
US7571318B2 (en) * 2002-03-27 2009-08-04 Advanced Micro Devices, Inc. Method and apparatus for improved security in a data processor
US8850223B1 (en) * 2002-07-19 2014-09-30 F5 Networks, Inc. Method and system for hard disk emulation and cryptographic acceleration on a blade server
DE10240584A1 (de) * 2002-08-28 2004-03-11 Pilz Gmbh & Co. Sicherheitssteuerung zum fehlersicheren Steuern von sicherheitskritischen Prozessen sowie Verfahren zum Aufspielen eines neuen Betriebsprogrammes auf eine solche
US7302566B2 (en) * 2002-09-13 2007-11-27 Wayne Yingling Internet security system
US8301493B2 (en) 2002-11-05 2012-10-30 Jpmorgan Chase Bank, N.A. System and method for providing incentives to consumers to share information
GB2396712B (en) * 2002-11-18 2005-12-07 Advanced Risc Mach Ltd Handling multiple interrupts in a data processing system utilising multiple operating systems
US7337442B2 (en) * 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements
US20040111414A1 (en) * 2002-12-06 2004-06-10 International Business Machines Corporation System and method for selective execution of statements with surrogate authority
FR2849233B1 (fr) * 2002-12-24 2005-05-20 Trusted Logic Procede de securisation des systemes informatiques par confinement logiciel
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
JP4945053B2 (ja) 2003-03-18 2012-06-06 ルネサスエレクトロニクス株式会社 半導体装置、バスインターフェース装置、およびコンピュータシステム
GB2399902A (en) * 2003-03-28 2004-09-29 Hewlett Packard Development Co Security in trusted computing systems
US7392400B2 (en) * 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7519833B2 (en) * 2003-04-18 2009-04-14 Via Technologies, Inc. Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
US7900055B2 (en) * 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US8060755B2 (en) * 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7502943B2 (en) * 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7539876B2 (en) * 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7532722B2 (en) * 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7925891B2 (en) * 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7321910B2 (en) * 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7542566B2 (en) * 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7844053B2 (en) * 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7529367B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7529368B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7536560B2 (en) * 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US20040250086A1 (en) * 2003-05-23 2004-12-09 Harris Corporation Method and system for protecting against software misuse and malicious code
US7444668B2 (en) 2003-05-29 2008-10-28 Freescale Semiconductor, Inc. Method and apparatus for determining access permission
US7469417B2 (en) * 2003-06-17 2008-12-23 Electronic Data Systems Corporation Infrastructure method and system for authenticated dynamic security domain boundary extension
US8838950B2 (en) * 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
US20050015430A1 (en) * 2003-06-25 2005-01-20 Rothman Michael A. OS agnostic resource sharing across multiple computing platforms
JP4624732B2 (ja) * 2003-07-16 2011-02-02 パナソニック株式会社 アクセス方法
US7398390B2 (en) * 2003-08-08 2008-07-08 Hewlett-Packard Development Company, L.P. Method and system for securing a computer system
US7536558B2 (en) * 2003-08-29 2009-05-19 Tgbw Inc. Flash memory distribution of digital content
US7669239B2 (en) * 2003-09-15 2010-02-23 Jpmorgan Chase Bank, N.A. Secure network system and associated method of use
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US20050091496A1 (en) * 2003-10-23 2005-04-28 Hyser Chris D. Method and system for distributed key management in a secure boot environment
US7178015B2 (en) * 2004-01-12 2007-02-13 Hewlett-Packard Development Company, L.P. Security measures in a partitionable computing system
US7698552B2 (en) * 2004-06-03 2010-04-13 Intel Corporation Launching a secure kernel in a multiprocessor system
US7334163B1 (en) * 2004-06-16 2008-02-19 Symantec Corporation Duplicating handles of target processes without having debug privileges
US7802110B2 (en) * 2004-08-25 2010-09-21 Microsoft Corporation System and method for secure execution of program code
US7765579B2 (en) * 2004-09-07 2010-07-27 Greencastle Technology, Inc. Security deployment system
WO2006061481A1 (fr) * 2004-12-09 2006-06-15 France Telecom Dispositif et procede de controle d’acces, noyau a composants le comportant et son utilisation
US20060208928A1 (en) * 2004-12-14 2006-09-21 Paul Mackerras Encoding scheme to resist code injection attacks
JP4810846B2 (ja) * 2005-03-15 2011-11-09 富士ゼロックス株式会社 プログラムデータの不正利用を阻止するプログラム
US8619971B2 (en) * 2005-04-01 2013-12-31 Microsoft Corporation Local secure service partitions for operating system security
EP1713000A1 (de) * 2005-04-11 2006-10-18 Jaluna SA Speicherschutzsystem
US8086871B2 (en) * 2005-04-26 2011-12-27 International Business Machines Corporation Method for fast decryption of processor instructions in an encrypted instruction power architecture
US20070180269A1 (en) * 2006-02-01 2007-08-02 International Business Machines Corporation I/O address translation blocking in a secure system during power-on-reset
US20070192830A1 (en) * 2006-02-15 2007-08-16 O'connor Dennis M Security module having access limited based upon security level of code seeking access
US20070235517A1 (en) * 2006-03-30 2007-10-11 O'connor Clint H Secure digital delivery seal for information handling system
US20070261124A1 (en) * 2006-05-03 2007-11-08 International Business Machines Corporation Method and system for run-time dynamic and interactive identification of software authorization requirements and privileged code locations, and for validation of other software program analysis results
US7424398B2 (en) * 2006-06-22 2008-09-09 Lexmark International, Inc. Boot validation system and method
GB0615392D0 (en) * 2006-08-03 2006-09-13 Wivenhoe Technology Ltd Pseudo random number circuitry
US7490191B2 (en) * 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US8479264B2 (en) 2006-09-29 2013-07-02 Micron Technology, Inc. Architecture for virtual security module
US8185893B2 (en) 2006-10-27 2012-05-22 Hewlett-Packard Development Company, L.P. Starting up at least one virtual machine in a physical machine by a load balancer
US9092250B1 (en) 2006-10-27 2015-07-28 Hewlett-Packard Development Company, L.P. Selecting one of plural layouts of virtual machines on physical machines
US8903888B1 (en) 2006-10-27 2014-12-02 Hewlett-Packard Development Company, L.P. Retrieving data of a virtual machine based on demand to migrate the virtual machine between physical machines
US8732699B1 (en) 2006-10-27 2014-05-20 Hewlett-Packard Development Company, L.P. Migrating virtual machines between physical machines in a define group
US8296760B2 (en) * 2006-10-27 2012-10-23 Hewlett-Packard Development Company, L.P. Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine
US7657791B2 (en) 2006-11-15 2010-02-02 Qualcomm Incorporated Method and system for a digital signal processor debugging during power transitions
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8341604B2 (en) 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8336046B2 (en) 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8904552B2 (en) * 2007-04-17 2014-12-02 Samsung Electronics Co., Ltd. System and method for protecting data information stored in storage
US8006254B2 (en) * 2007-10-04 2011-08-23 International Business Machines Corporation Bequeathing privilege to a dynamically loaded module
US8341626B1 (en) 2007-11-30 2012-12-25 Hewlett-Packard Development Company, L. P. Migration of a virtual machine in response to regional environment effects
JP5159896B2 (ja) * 2008-01-25 2013-03-13 ファソー.コム カンパニー リミテッド プロセス分離実行を通じたdrmクライアント衝突防止システム及び方法
US8085265B2 (en) * 2008-04-23 2011-12-27 Honeywell International Inc. Methods and systems of generating 3D user interface for physical environment
US8307340B2 (en) * 2008-09-26 2012-11-06 Microsoft Corporation Hardware abstraction in embedded systems
AU2009319665B2 (en) 2008-11-26 2015-08-20 Calgary Scientific Inc. Method and system for providing remote access to a state of an application program
GB0823162D0 (en) * 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions
US20100174631A1 (en) * 2009-01-07 2010-07-08 Onbest Technology Holdings Limited Secure device firmware
US10055105B2 (en) 2009-02-03 2018-08-21 Calgary Scientific Inc. Method and system for enabling interaction with a plurality of applications using a single user interface
SG173483A1 (en) * 2009-02-03 2011-09-29 Calgary Scient Inc Method and system for enabling interaction with a plurality of applications using a single user interface
CN102428471B (zh) * 2009-05-18 2016-05-25 惠普开发有限公司 从系统管理模式确定信任级别的系统和方法
US8923519B2 (en) * 2009-05-29 2014-12-30 Alcatel Lucent Method of efficient secure function evaluation using resettable tamper-resistant hardware tokens
US8875219B2 (en) * 2009-07-30 2014-10-28 Blackberry Limited Apparatus and method for controlled sharing of personal information
WO2011042892A1 (en) * 2009-10-09 2011-04-14 Nokia Corporation Platform security
US8499304B2 (en) * 2009-12-15 2013-07-30 At&T Mobility Ii Llc Multiple mode mobile device
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
JP5380392B2 (ja) * 2010-08-04 2014-01-08 ルネサスエレクトロニクス株式会社 半導体装置、バスインターフェース装置、およびコンピュータシステム
GB2482700A (en) * 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
FR2964812B1 (fr) * 2010-09-09 2013-04-12 Mobilegov France Procede d'authentification pour l'acces a un site web
GB2483907A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
WO2012086106A1 (ja) 2010-12-21 2012-06-28 パナソニック株式会社 仮想計算機システム及び仮想計算機システム制御方法
US9741084B2 (en) 2011-01-04 2017-08-22 Calgary Scientific Inc. Method and system for providing remote access to data for display on a mobile device
CA2734860A1 (en) * 2011-03-21 2012-09-21 Calgary Scientific Inc. Method and system for providing a state model of an application program
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US9317690B2 (en) * 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
WO2013019185A1 (en) 2011-07-29 2013-02-07 Hewlett-Packard Development Company, L.P. Migrating virtual machines
US9176739B2 (en) 2011-08-05 2015-11-03 Cisco Technology, Inc. System and method for checking run-time consistency for sequentially and non-sequentially fetched instructions
EP2742473B1 (de) * 2011-08-08 2022-07-13 Bloomberg Finance L.P. System und methode zur elektronischen verteilung von software und daten
WO2013024342A1 (en) 2011-08-15 2013-02-21 Calgary Scientific Inc. Method for flow control and for reliable communication in a collaborative environment
CA2844871C (en) 2011-08-15 2021-02-02 Calgary Scientific Inc. Non-invasive remote access to an application program
WO2013046015A1 (en) 2011-09-30 2013-04-04 Calgary Scientific Inc. Uncoupled application extensions including interactive digital surface layer for collaborative remote application sharing and annotating
CN104040946B (zh) 2011-11-23 2017-07-14 卡尔加里科学公司 用于协作远程应用程序共享和会议的方法和系统
CN104115125B (zh) * 2011-12-29 2017-12-01 英特尔公司 安全的错误处理
JP5324676B2 (ja) * 2012-02-17 2013-10-23 ルネサスエレクトロニクス株式会社 プロセッサ、バスインターフェース装置、およびコンピュータシステム
US9602581B2 (en) 2012-03-02 2017-03-21 Calgary Scientific Inc. Remote control of an application using dynamic-linked library (DLL) injection
US9729673B2 (en) 2012-06-21 2017-08-08 Calgary Scientific Inc. Method and system for providing synchronized views of multiple applications for display on a remote computing device
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
KR102017828B1 (ko) * 2012-10-19 2019-09-03 삼성전자 주식회사 보안 관리 유닛, 상기 보안 관리 유닛을 포함하는 호스트 컨트롤러 인터페이스, 상기 호스트 컨트롤러 인터페이스의 동작 방법, 및 상기 호스트 컨트롤러 인터페이스를 포함하는 장치들
TWI463320B (zh) * 2012-11-29 2014-12-01 Mstar Semiconductor Inc 記憶體存取權限控制方法與相關記憶體管理系統
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US9158704B2 (en) * 2013-01-24 2015-10-13 Wisconsin Alumni Research Foundation Virtual memory management system with reduced latency
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
GB2534693B (en) * 2013-11-08 2017-02-08 Exacttrak Ltd Data accessibility control
CA2931762C (en) 2013-11-29 2020-09-22 Calgary Scientific Inc. Method for providing a connection of a client to an unmanaged service in a client-server remote access system
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US9921984B2 (en) * 2014-12-23 2018-03-20 Intel Corporation Delivering interrupts to user-level applications
US10015264B2 (en) 2015-01-30 2018-07-03 Calgary Scientific Inc. Generalized proxy architecture to provide remote access to an application framework
AU2016210974A1 (en) 2015-01-30 2017-07-27 Calgary Scientific Inc. Highly scalable, fault tolerant remote access architecture and method of connecting thereto
US9785783B2 (en) 2015-07-23 2017-10-10 Ca, Inc. Executing privileged code in a process
US9996479B2 (en) * 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
US9779248B1 (en) * 2016-03-30 2017-10-03 Microsoft Technology Licensing, Llc Protection of secured boot secrets for operating system reboot
US10114768B2 (en) * 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
CN109688086A (zh) * 2017-10-19 2019-04-26 北京京东尚科信息技术有限公司 用于终端设备的权限控制方法和装置
EP3832949A4 (de) * 2018-07-29 2022-03-30 Nouvenn Corporation Verfahren zur sicherung eines datenkommunikationsnetzes
US11741196B2 (en) * 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US11221778B1 (en) * 2019-04-02 2022-01-11 Pure Storage, Inc. Preparing data for deduplication
US11797717B2 (en) * 2019-05-21 2023-10-24 Micron Technology, Inc. Bus encryption for non-volatile memories
CN110597754B (zh) * 2019-08-02 2023-02-21 北京多思安全芯片科技有限公司 一种主从式安全处理器
CN111859396B (zh) * 2020-07-21 2023-10-03 中国人民解放军国防科技大学 支持通用/可信双计算体系的软硬协同多层次密码服务方法及系统
FR3115622A1 (fr) * 2020-10-27 2022-04-29 Stmicroelectronics (Rousset) Sas Elément sécurisé
CN112379911B (zh) * 2020-11-10 2022-11-11 杭州万高科技股份有限公司 固件模块注册信息处理方法、系统、存储介质、智能手机
US11709786B2 (en) 2021-04-29 2023-07-25 Renesas Electronic Corporation Device and method of secure decryption by virtualization and translation of physical encryption keys
US11726811B2 (en) * 2021-06-18 2023-08-15 Vmware, Inc. Parallel context switching for interrupt handling
CN114416173B (zh) * 2022-03-28 2022-10-25 荣耀终端有限公司 版本切换方法和终端设备
US11811681B1 (en) 2022-07-12 2023-11-07 T-Mobile Usa, Inc. Generating and deploying software architectures using telecommunication resources

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6073762A (ja) * 1983-09-29 1985-04-25 Fujitsu Ltd 記憶保護方式
JPS625441A (ja) * 1985-02-18 1987-01-12 Nec Corp 情報処理装置
JPS62276634A (ja) * 1985-09-18 1987-12-01 Nec Corp 仮想計算機システム
JPH05204760A (ja) * 1992-01-29 1993-08-13 Nec Corp 仮想計算機システムの制御方式
JPH06332803A (ja) * 1993-05-25 1994-12-02 Hitachi Ltd 仮想計算機システムにおけるtlb制御方法
US5774652A (en) 1995-09-29 1998-06-30 Smith; Perry Restricted access computer system
US5948064A (en) 1997-07-07 1999-09-07 International Business Machines Corporation Discovery of authentication server domains in a computer network
US6154818A (en) 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6131165A (en) * 1998-06-18 2000-10-10 Sun Microsystems, Inc. Permit for controlling access to services in protected memory systems
JP2000076087A (ja) * 1998-08-28 2000-03-14 Hitachi Ltd マルチオペレーティングシステム制御方法
AU6104800A (en) 1999-07-16 2001-02-05 Intertrust Technologies Corp. Trusted storage systems and methods
JP3607540B2 (ja) * 1999-08-18 2005-01-05 エヌイーシーシステムテクノロジー株式会社 プログラム単位メモリアクセス属性管理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019201244A1 (de) * 2019-01-31 2020-08-06 Robert Bosch Gmbh Verfahren zum Überprüfen eines Softwaremoduls

Also Published As

Publication number Publication date
WO2002101504A2 (en) 2002-12-19
HK1054799B (zh) 2005-09-23
JP4498735B2 (ja) 2010-07-07
GB2381630B (en) 2005-03-30
US7073059B2 (en) 2006-07-04
HK1054799A1 (en) 2003-12-12
WO2002101504A3 (en) 2003-08-28
US20020194389A1 (en) 2002-12-19
JP2004537786A (ja) 2004-12-16
GB2381630A (en) 2003-05-07
GB0304527D0 (en) 2003-04-02

Similar Documents

Publication Publication Date Title
DE10292364T5 (de) Sichere Maschinenplattform, die mit Betriebssystemen und awendungsspezifischen Steuerprogrammen eine Schnittstelle bildet
DE69731714T2 (de) Dynamische Dienstklassen für eine internationale kryptographische Struktur
CN106462438B (zh) 包含受信执行环境的主机的证明
DE69725833T2 (de) Gesicherte zweiteilige Benutzer-Authentifizierung in einem Rechnernetz
US7509639B2 (en) Customized execution environment
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE112007001321T5 (de) Ausführung eines Sichere-Umgebungs-Initialisierungsbefehls in einem Punkt-zu-Punkt-Verbindungssystem
CN108509250A (zh) 具有受保护的访客机验证主机控制的安全公共云
Anderson Computer Security Technology Planning Study (Volume I)
US20040093505A1 (en) Open generic tamper resistant CPU and application system thereof
DE10254621A1 (de) Vorrichtung und Verfahren zum Erzeugen einer vertrauenswürdigen Umgebung
US10192067B2 (en) Self-described security model for resource access
DE112009005466T5 (de) Verfahren und Vorrichtung zum Bereitstellen einer sicheren Anwendungsausführung
Onarlioglu et al. Privexec: Private execution as an operating system service
WO2021030903A1 (en) System and method for performing trusted computing with remote attestation and information isolation on heterogeneous processors over open interconnect
DE102023202297A1 (de) Wahrung der vertraulichkeit von mandanten in einer cloud-umgebung beim einsatz von sicherheitsdiensten
Gallery An overview of trusted computing technology
Young Verifiable computer security and hardware: Issues
DE112021005119T5 (de) Zugriff auf software durch heterogene verschlüsselung
Ames Jr Security kernels: A solution or a problem?
Heckman et al. A high-assurance, virtual guard architecture
US20220245238A1 (en) Trusted Execution Environment to Provide Attestation of Code Execution Result
Daughety Design and analysis of a trustworthy, Cross Domain Solution architecture
Matetic Security with intel SGX: Enhancements, applications and privacy
DE102023107000A1 (de) Vertrauliches computing unter verwendung von parallelprozessoren mit code- und datenschutz

Legal Events

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

Ref document number: 10292364

Country of ref document: DE

Date of ref document: 20040902

Kind code of ref document: P

8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

R011 All appeals rejected, refused or otherwise settled
R003 Refusal decision now final

Effective date: 20130819