-
TECHNISCHES GEBIET
-
Diese
Erfindung betrifft Computersysteme und betrifft insbesondere Computersysteme,
in denen eine abgesicherte Ausführungsumgebung
angewendet wird
-
HINTERGRUND
-
Moderne
Computersysteme revolutionieren das Leben der Menschen. Dies gilt
insbesondere für Systemplattformen
mit Mikroprozessoren, in denen die x86-Systemarchitektur eingesetzt
wird. Die Möglichkeit
von x86-basierten Systemen für
eine nahezu unbegrenzte Anzahl an anwenderinstallierbaren peripheren
Geräten
von Dritten und Anwendungen hat ein breites Marktsegment für Hardware-
und Software-Anbieter geschaffen, das auch zum Wettbewerb, zu Innovationen
und Entwicklungen beigetragen hat. Ein Beispiel einer derartigen
Entwicklung ist die nunmehr weit verbreitete Anwendung der Plattform
als ein digitales Kommunikations- und Mediensystem mit stets zunehmender
Qualität
und Leistung. Im Zusammenhang mit dem Internet revolutionieren diese
Systemplattformen die großflächige Verteilung
digitaler Inhalte, wodurch ein bedarfsgesteuerter Zugriff auf Zeitungen,
Echtzeiten-Wetterbedingungen und Radiostationen über die ganze Welt hinweg,
Internetbankverbindungen und Einkauf über Internet, und audio- und
videobasierte Unterhaltung ermöglicht
wird.
-
Die
EP 0 436 365 A2 offenbart
eine Lösung für das Problem
der Sicherheit beim Löschen
von Speicher, der in Terminals vorgesehen ist von einem Host beschrieben
und gelesen werden kann.
-
In
der
EP 0 230 351 A2 wird
ein Verfahren zum Herunterfahren eines Computers beschrieben, in
dem der Status des Systems zur Zeit des Herunterfahrens gespeichert wird,
so dass das Ausführen eines
Programms nach einem erneuten Hochfahren wieder aufgenommen werden
kann.
-
Da
die x86-Plattform eine offene Architektur ist, besitzen die Geräte bzw.
Einrichtungen typischerweise vom Anbieter gelieferte Treiber, die
in einem Kernel-Modus abgearbeitet werden, um auf die Geräte zuzugreifen,
und gewisse Software-Anwendungen können Kernel-Moduskomponenten
aufweisen. Obwohl daher die offene Architektur gewisse Vorteile besitzt
und dennoch ein hohes Maß an
Schutz gegen eine zufällige
Störung
einer Anwendung durch eine andere bietet, können die aktuellen Schutzmechanismen
der Architektur in dieser Umgebung einer unerwünschten Manipulation unterliegen.
-
Computersysteme
mit Mikroprozessoren, in denen die x86-Architektur verwendet wird,
enthalten Elemente, die zum Schutz entwickelt sind, um eine gegenseitige
Störung
von Anwendungen zu unterbinden. Beispielsweise basieren x86-basierte
Betriebssysteme auf zwei Elementen der x86-Schutzmodusarchitektur,
um eine Umgebung bereitzustellen, in denen Anwendungen voneinander
getrennt sind und wobei kritische Betriebssystemcodierungen und
Daten von den Anwendungen getrennt sind: 1) einen in Seiten organisierten
virtuellen Speicher und 2) Ausführungsprivilegebenen.
-
Der
in Seiten verwaltete virtuelle Speicher ermöglicht es dem Betriebssystem
(OS), einen separaten virtuellen Adressenraum für jede Anwendung zu definieren
und selektiv die einzelnen Seiten eines physikalischen Speichers
in jeden dieser virtuellen Adressenräume über einen Satz aus Adressenübersetzungstabellen
abzubilden. Dies stellt für
jede Anwendung den eigenen „privaten” Abschnitt
eines physikalischen Speichers für
Codierungen und Daten bereit, die für andere Anwendungen nicht
zugänglich sind.
Der virtuelle Speichermechanismus kann es auch ermöglichen,
dass das OS selektiv Seiten des physikalischen Speichers in mehrere
virtuelle Adressenräume
abbildet und selektiv derartige Seiten in den virtuellen Raum als
Nur-Lese-Seiten kennzeichnet. Diese zusammenwirkende Abbildungsfähigkeit ermöglicht es
auch, dass eine Kopie des OS-Kernels selbst
in dem Adressenraum jeder Anwendung liegt, und es kann auch möglich sein,
gemeinsame Zuordnungen peripherer Gerätezugriffspunkte und zugeordneter
Gerätetreiberroutinen
abzulegen, wodurch die Anwendungen einen effizienten Zugriff auf OS-Dienste
erhalten, ohne dass aufwendige Adressenraumschalter erforderlich
sind. Jedoch enthält
der OS-Bereich des Adressenraums notwendigerweise Systemdatenbereiche,
die die OS-Codierung modifizieren können muss, und die dennoch
vor der An wendungscodierung geschützt werden müssen. Die Nur-Lese-Zuordnung
kann keinen ausreichenden Schutz für derartige Bereiche liefern.
-
Die
x86-Architektur definiert ferner vier Privilegebenen 0 bis 3, die
den Gebieten der Codierung durch das OS zugeordnet sind und in den
Codierungssegmentdeskriptoren gehalten sind. Typischerweise wird
die Privilegebene einer aktuell ausgeführter Codierung oder einer
Prozedur als die ”aktuelle Privilegebene” (CPL)
gespeichert. Daher werden die Privilegebenen üblicherweise als CPL0 bis CPL3
bezeichnet. Unter Anwendung dieser Privilegebenen kann auf gewisse
Systemressourcen von einer Codierung zugegriffen werden, die auf
der geeigneten Ebene operiert. Die in Seiten organisierte virtuelle Speicherarchitektur
ermöglicht
es, dass der Zugriff auf Seiten des virtuellen Speichers durch die
jeweilige Privilegebene beschränkt
ist. Obwohl vier Privilegebenen definiert sind, werden typischerweise
nur die CPL0- und CPL3-Ebenen durch übliche Betriebssysteme benutzt,
da die in Seiten organisierte virtuelle Speicherarchitektur nicht
zwischen CPL1 oder CPL2 im Vergleich zu CPL3 unterscheidet. CPL0 wird üblicherweise
als Kernel-Modus bezeichnet und ist die höchste privilegierte Ebene,
während
CPL3 typischerweise als Anwendermodus bezeichnet wird und die niedrigste
privilegierte Ebene ist. OS-Codierungen und Daten sind typischerweise
der CPL0 zugeordnet, während
Anwendungscodierungen und Daten der CPL3 zugeordnet sind. Das CPL0-Ausführungsprivileg
verletzt den Nur-Lese-Schutz nicht. Die beiden Attribute sind unabhängig. Codesegmentdeskriptoren
werden verwendet, um diese Ebenen zuzuordnen.
-
Zusätzlich zu
diesem Speicherschutz sind alle Prozessorsteuerregister, einschließlich jener,
die den virtuellen Speicherbetrieb steuern, durch architekturspezifische
Definition lediglich in CPL0 ansprechbar. Ferner sind spezielle
Steuerungstransferinstruktionen typischerweise erforderlich, um
die Ausführung
von einem Segment zu einem anderen und damit die Privilegebenen
umzuschalten. Diese Anweisungen bzw. Instruktionen erlauben es dem OS,
die Ziele derartige Steuerungstransfers auf spezielle Eingangspunkte
in einer OS-gesteuerten Codierung zu begrenzen, so dass eine Anwendung
die Privilegebene nicht ändern
kann, ohne dass gleichzeitig die Steuerung an das OS übergeben
wird.
-
Die
Trennung der Adressenräume
voneinander und die Trennung des OS-Speichers von den Anwendungen
kann vollständig
durch den Inhalt der virtuellen Speicheradressenübersetzungstabellen gesteuert
werden. Die Übersetzungs-
bzw. Translationstabellen definieren die Zuordnungen der virtuellen
und physikalischen Seiten, die den Speicher einer Anwendung von
dem Speicher einer anderen trennen, sowie auch die Nur-Lese- und die Privilegebenenattribute,
die gemeinsame Bibliotheken und das OS schützen. Die Tabellen selbst sind
speicherresidente Datenstrukturen und enthalten Übersetzungseinträge, die
diese in den gemeinsamen OS-Speicherbereich abbilden und den Zugriff
auf sie auf Kernel-Moduscodierung beschränken.
-
Die
bestehenden Schutzmechanismen scheinen zunächst ausreichenden Schutz für Anwendungen
und das Betriebssystem bereitzustellen. In einem sich normal verhaltenden
System (beispielsweise eine korrekte Anwendung dieser Mechanismen
durch das Betriebssystem und ein korrekter Ablauf der OS-Codierung,
die diese Mechanismen steuert, und wobei alle anderen Codierungen,
die im Kernel-Modus laufen, diese nicht stören), trifft dies auch zu.
Jedoch enthalten typische x86-basierte Systeme eine große Menge
an Kernel-Moduscodierung, nicht nur von den OS-Anbietern, sondern
auch von unabhängigen
Quellen, so dass es unmöglich
ist sicherzustellen, dass eine derartige Störung, unabhängig davon ob diese zufällig oder
beabsichtigt ist, nicht auftreten kann.
-
Dies
gilt insbesondere für
den Inhalt des physikalischen Speichers. Wenn beispielsweise der
Inhalt einer gegebenen Speicherstelle in dem Speicher durch eine
Anwendung nicht mehr benötigt
wird, wird die Speicherstelle typischerweise freigegeben. Jedoch
sind die tatsächlichen,
an dieser Speicherstelle gespeicherten Daten weiterhin intakt. Abhängig von der
Art der Operation, die der Anwender ausführt und der Art der Software-Anwendung, die gerade
betrieben wird, kann in dem Speicher abgelegte Information im Hinblick
auf einen Zugriff von außen
sensibel sein. Somit besteht ein Bedarf, die Sicherheit zu verbessern
und damit möglicherweise
x86-Architektursysteme weniger verletzbar für einen derartigen Zugriff
zu machen.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Entsprechend
stellt die vorliegende Erfindung zur Verfügung:
Ein Computersystem,
in welchem eine abgesicherte Ausführungsumgebung angewendet wird,
mit einem Prozessor, der ausgebildet ist in einem sicheren Ausführungsmodus
durch Ausführen
eines sicheren Betriebssystemcodierungssegments zu operieren; einem
Systemspeicher der mit dem Prozessor verbunden und mehrere Speicherplätze zum
Speichern von Daten enthält;
einer Speichersteuerung, die mit dem Sys temspeicher verbunden und
ausgebildet ist, selektiv die Daten unter Anwendung einer Speicherlöschoperation
in einem programmierten Bereich der mehreren Speicherplätze des
Systemspeichers bei Aktivierung in Reaktion auf ein Rücksetzen
des Systems zu löschen;
wobei die Speichersteuerung ferner ausgebildet ist, zu bestimmen,
ob der Prozessor in einem Unterbrechungszustand mit Speicherung
im RAM vor dem Rücksetzen
war, und in Reaktion darauf, dass bestimmt wird, dass der Prozessor
in einem Unterbrechungszustand mit Speicherung im RAM vor dem Rücksetzen
war, zu bestimmen, ob eine aktuell programmierte Speichergröße gleich
einer Größe des programmierten
Bereichs der mehreren Speicherplätze
ist, die in einer vorhergehenden Speicherlöschoperation gelöscht wurden;
wobei die Speichersteuerung ferner ausgebildet ist, die Daten unter
Anwendung der Speicherlöschoperation
a) in Reaktion darauf, dass bestimmt wird, dass der Prozessor in
einem Unterbrechungszustand mit Speicherung im RAM vor dem Rücksetzen
des Systems war und dass die aktuell programmierte Speichergröße nicht gleich
der Größe des programmierten
Bereichs der mehreren Speicherplätze,
die in der vorhergehenden Speicherlöschoperation gelöscht wurden,
ist und b) in Reaktion darauf, dass bestimmt wird, dass der Prozessor
nicht in einem Unterbrechungszustand mit Speicherung im RAM vor
dem Rücksetzen
war, zu löschen.
-
Weiterhin
wird zur Verfügung
gestellt:
Ein Verfahren in einem Computersystem, in welchem eine
abgesicherte Ausführungsumgebung
angewendet wird und in dem eine Speichersteuerung enthalten ist,
die zum Löschen
des Speichers ausgebildet ist, mit:Initialisieren eines Prozessors
in einem sicheren Ausführungsmodus
durch Ausführen
einer Sicherheitsinitialisierungsinstruktion und Operieren in dem
sicheren Ausführungsmodus
durch Ausführen eines
sicheren Betriebssystemkodierungssegments; Speichern von Daten in
mehreren Speicherplätzen eines
Systemspeichers; selektivem Löschen
der Daten unter Anwendung einer Speicherlöschoperation in einem programmierten
Bereich der mehreren Speicherplätze
des Systemspeichers in Reaktion auf ein Rücksetzen des Systems; und Bestimmen,
ob der Prozessor in einem Unterbrechungszustand mit Speicherung
im RAM vor dem Rücksetzen
war; wobei das selektive Löschen
der Daten umfasst: Löschen
der Daten unter Anwendung der Speicherlöschoperation a) in Reaktion
darauf, dass bestimmt wird, dass eine aktuelle programmierte Speichergröße nicht
gleich der Größe des programmierten
Bereichs der mehreren Speicherplätze
ist, die in der vorhergehenden Speicherlöschoperation gelöscht wurde,
und der Prozessor in einem Unterbrechungszustand mit Speiche rung
im RAM vor dem Rücksetzen des
Systems war, und b) in Reaktion darauf, dass bestimmt wird, dass
der Prozessor nicht in einem Unterbrechungszustand mit Speicherung
im RAM vor dem Rücksetzen
war.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
eine Blockansicht einer Ausführungsform
eines Computersystems, in welchem eine abgesicherte Rechnerplattform
eingesetzt ist.
-
2 ist
eine Blockansicht einer Ausführungsform
einer Speichersteuerung eines Computersystems, in welcher eine abgesicherte
Rechnerplattform verwendet ist.
-
3 ist
ein Flussdiagramm, das die Funktion einer Ausführungsform einer Speichersteuerung eines
Computersystems zeigt, in welchem eine abgesicherte Rechnerplattform
verwendet ist.
-
ART BZW. ARTEN ZUM AUSFÜHREN DER
ERFINDUNG
-
Überblick über eine
sichere/abgesicherte Rechnerplattform
-
Eine
vertrauenswürdige
bzw. abgesicherte Rechnerumgebung ermöglicht es, Anwendern von Computersystemen
(beispielsweise Personalcomputer (PC)) an neuen Aktivitäten, etwa
dem Herunterladen elektronischen Geldes und Filmen teilhaben zu lassen,
wobei gleichzeitig ein Schutz vor Angriffen auf ihre Privatsphäre stattfindet.
Um ein Teil einer abgesicherten Rechnerumgebung zu sein, muss der PC
selbst sowohl für
den Anwender als auch für
Einheiten von Außen,
etwa Banken und Anbietern von Inhalten, beispielsweise abgesichert
bzw. vertrauenswürdig
sein. Zu entscheidenden Elementen, die zum Erzeugen eines abgesicherten
PC erforderlich sind, gehören:
eine abgesicherte Verarbeitungsumgebung, plattformspezifische Geheimnisse,
eine kryptografische Verarbeitung, eine sichere Speicherung und
ein sicheres Betriebssystemkodierungssegment, das als ein Sicherheits-Kernel
(SK) bezeichnet ist. Die Funktionsblöcke zum Einrichten dieser Elemente
werden nachfolgend detaillierter beschrieben.
-
Prozessoren,
die zum Ausführen
von x86-Instruktionen ausgebildet sind, enthalten im Wesentlichen
konfigurationsspezifische Merkmale, etwa einen geschützten Modus,
der einen in Seiten organisierten virtuellen Speicher und privilegierte
Ausführungsmodi
bereitstellt, beinhalten den Satz an Steuerregistern, die diese
Merkmale steuern. Das Steuern des Zugriffs auf diese Steuerregister
und Seitentabellen kann einen zusätzlichen Schutz vor einem nicht
autorisierten Zugriff auf Programmcodierungen und Daten innerhalb
eines Computersystems liefern. Somit kann ein Hinzufügen eines
Satzes von Erweiterungen in der Architektur zu derartigen Prozessoren
und eine entsprechende Software-Unterstützung diesen
Schutz bereitstellen. Die gesamten Sicherheitsverbesserungen für einen
Prozessor können
als ein ”sicherer
Betriebsexekutions- bzw Ausführungsmodus
(SEM)” bezeichnet
werden. Der ”sichere
Ausführungsmodus
(SEM)” ist
ein neuer Betriebsmodus, der dem Prozessor hinzugefügt wird,
und der eine abgesicherte Ausführungsumgebung
schafft, in der ein Sicherheits-Kernel ohne externe Manipulationen ablaufen
kann.
-
Folglich
kann ein Prozessor, der in der Lage ist, in einem SEM zu arbeiten,
eine Sicherheits-Hardware (nicht gezeigt) aufweisen, die, wenn sie
von dem SEM aktiviert wird, zusätzliche
Hilfsmittel für SEM-Betriebsmodi
bereitstellt, etwa beispielsweise einen ”sicheren Ausführungs-(TX)Betriebsmodus”. Der abgesicherte
Ausführungsmodus
kann beinhalten, dass, abhängig
von der Art der Software, die ausgeführt wird und ihrer Privilegebene,
beinhalten, dass der SEM-fähige
Prozessor in einem sicheren Anwendermodus und in einem sicheren
Kernel-Modus zusätzlich
zu dem normalen Anwendermodus und dem normalen Kernel-Modus arbeitet.
Es können
auch Mechanismen bereitgestellt werden, um ein geschütztes Speichergebiet
zu erzeugen, das nur durch Software, die in dieser Umgebung läuft, sowie von
Hardware-Speicherzugriffen (beispielsweise Direktspeicherzugriff
(DMA)) ansprechbar ist.
-
Die
neue ”abgesicherte
Ausführungsumgebung
(TX)” ist
in gewisser Weise analog zu dem herkömmlichen normalen/Schutzmodus
(Ring 3/Ring 0)-Mechanismus, der zur Trennung von Anwender- und
Kernel-Umgebungen eingesetzt wird. Somit enthält eine SEM-fähige CPU
die Hardware-Mechanismen, die den TX-Modus erzeugen und durchführen.
-
Zu
beachten ist, dass die neueste Überarbeitung
der ”fortschrittlichen
Konfigurations- und
Leistungsschnittstellen (ACPI)-(Advanced Configuration and Power
Interface)” Spe zifikation
diverse Betriebszustände
und Schlafmodi des Systems definiert. Ein derartiger ”Schlaf-Zustand” ist der
S3-Zustand, der manchmal auch als Unterbrechungszustand mit Speicherung
im RAM (Suspend to RAM) bezeichnet wird. Der S3-Zustand ist als
ein Schlafzustand mit kurzer Anlaufzeit definiert, wobei der gesamte
Systemkontext mit Ausnahme des Systemspeichers verloren geht. Beim
Eintritt in den S3-Zustand wird in den meisten Systemeinheiten die
Versorgungsleistung abgeschaltet. Jedoch werden Einrichtungen, etwa
eine Speichersteuerung, die den Systemspeicher unterstützen, teilweise
mit Leistung versorgt.
-
Eine
ACPI-Systemverwaltung kann größtenteils
orthogonal zu einem abgesicherten Rechnerbetrieb und der abgesicherten
Umgebung sein. Jedoch kann das Übergehen
von einem S-Zustand zu einem weiteren gewisse Konsequenzen nach
sich ziehen. Wie beispielsweise zuvor beschrieben ist, ist ein Teil des
Prozesses zum Initialisieren der abgesicherten Umgebung das Löschen des
Inhalts des physikalischen Speichers, wenn der Prozessor aus dem Rücksetzzustand
anläuft.
Wenn das System jedoch aus dem S3-Zustand anläuft, sollte der Systemspeicher
nicht gelöscht
werden. In ähnlicher
Weise können
Geheimnisse, die in dem abgesicherten Speicher RAM sind, nicht ”frei zugänglich” auf der
Festplatte gespeichert werden, wenn das System in andere Schlafzustände, beispielsweise
den S4-Zustand, versetzt wird.
-
Computersystem unter Anwendung
einer abgesicherten Rechnerplattform
-
In 1 ist
eine Blockansicht einer Ausführungsform
eines Computersystems gezeigt, in welchem eine abgesicherte Rechnerplattform
eingesetzt ist. Das Computersystem 10 umfasst zwei SEM-fähige Prozessoren,
die als SEM-Prozessor 100A und SEM-Prozessor 100B bezeichnet sind.
Der SEM-Prozessor 100A ist mit dem SEM-Prozessor 100B über einen
Prozessorbus 105 verbunden. Das Computersystem 10 umfasst
ferner einen Systemspeicher 110A, der mit dem SEM-Prozessor 100A verbunden
ist, und umfasst einen Systemspeicher 110B, der mit dem
SEM-Prozessor 100B verbunden ist. Der SEM-Prozessor 100A ist
mit einer I/O-(Eingabe/Ausgabe)Schnittstelle 120 über einen
Systembus 125 verbunden. Die I/O-Schnittstelle 120 ist
mit einer Speichereinrichtung 140 und einem Periphergerät 150 über einen
peripheren Bus 145 verbunden. Die I/O-Schnittstelle 120 ist ferner
mit einer SSP-Einheit 130 über einen peripheren Bus 135 verbunden.
In einer alternativen Ausführungsform
kann die SSP 130 anstatt mit dem peripheren Bus 135 mit
dem peripheren Bus 145 verbunden sein. Zu beachten ist,
dass, obwohl zwei SEM-Prozessoren gezeigt sind, in anderen Ausführungsformen
eine andere Anzahl an SEM-Prozessoren vorgesehen sein kann. Es ist
ferner zu beachten, dass Komponenten mit den gleichen Bezugszeichen
und einem Buchstaben einfach durch das Bezugszeichen alleine benannt
werden können.
Beispielsweise kann der SEM-Prozessor 100A einfach
als SEM-Prozessor 100 bei Bedarf benannt werden.
-
In
einer Ausführungsform
ist der Prozessorbus 105 eine kohärente Verbindung, die eine Punkt-zu-Punkt-Verbindung
mit hoher Geschwindigkeit bilden kann, die mit der Hyper-Transport-Spezifikation
kompatibel ist. In ähnlicher
Weise kann in einer Ausführungsform
der Systembus 125 eine nichtkohärente I/O-Verbindung sein.
Beispielsweise kann der Systembus 125 ebenso eine Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung
sein, die mit der HyperTransport-I/O-Spezifikation kompatibel ist.
In derartigen Ausführungsformen
kann der SEM-Prozessor 100A eine integrierte Host-Brückenlogik (nicht
gezeigt) zur Verbindung mit der nichtkohärenten Verbindung und zum Übertragen
von Nachrichten zwischen dem SEM-Prozessor 100A und dem SEM-Prozessor 100B über die
kohärente
Verbindung aufweisen. Es sollte jedoch beachtet werden, dass in
anderen Ausführungsformen
der Systembus 125 eine beliebige Art eines Systembusses
sein kann, etwa beispielsweise ein vorderer oder ”Frontseitenbus
(FSB)”.
-
In
der dargestellten Ausführungsform
umfassen der SEM-Prozessor 100A und der SEM-Prozessor 100B jeweils
eine integrierte Speichersteuerung 101A bzw. 101B zur
Anbindung an die Systemspeicher 110A und 110B.
Zu beachten ist, dass in alternativen Ausführungsformen die I/O-Schnittstelle 120 eine
oder mehrere Speichersteuerungen und eine Host-Brücke aufweisen
kann. In derartigen Ausführungsformen
können
die Systemspeichereinheiten 110 mit der I/O-Schnittstelle 120 verbunden
sein.
-
Der
SEM-Prozessor 100 ist ein Repräsentant eines Prozessors, in
welchem die x86-Architektur
angewendet wird. Beispielsweise kann in einer Ausführungsform
der SEM-Prozessor 100 ein
Athlon-Prozessor von Advanced Micro Devices, Inc. sein. Der SEM-Prozessor 100 ist
ausgebildet, x86-Instruktionen auszuführen, die in dem Systemspeicher 110 oder
Speichereinrichtung 140 abgelegt sein können. In der dargestellten
Ausführungsform
umfasst der SEM-Prozessor 100 eine Sicherheits-Hardware innerhalb
der Speichersteuerung 101 (nicht gezeigt), die, wenn sie
von dem SEM aktiviert wird, SEM-Betriebsmodi
unterstützt,
etwa den abgesicherten Ausführungs-(TX)Modus,
der beispielsweise zuvor in Verbindung mit der Beschreibung aus 1 erläutert ist.
-
Der
Systemspeicher 110 ist ausgebildet, Programminstruktionen
und Daten zu speichern, die häufig
von dem SEM-Prozessor 100 verwendet werden. In einer typischen
Systemkonfiguration kann die Speichereinrichtung 140 verwendet
werden, um permanent die Programminstruktionen und Daten zu speichern,
und wenn der SEM-Prozessor 100 die Daten und die Programmiercodierung
benötigt,
kann diese in den Systemspeicher 110 übertragen werden. Weitere Unterstützung für die SEM-Betriebsmodi kann
von dem Sicherheits-Kernel bereitgestellt werden, der in Verbindung
mit dem OS aus dem Systemspeicher 110 während des Betriebs des SEM-Prozesses 100 heraus
ausgeführt
werden kann. Des Weiteren kann der Systemspeicher 110 in
einen vertrauenswürdigen
Bereich bzw. abgesicherten Bereich und einen unabgesicherten Bereich
aufgeteilt werden. Der Sicherheits-Kernel liegt in dem abgesicherten
Bereich des Systemspeichers 110. Wie zuvor beschrieben
ist, wird auf den Systemspeicher 110 typischerweise unter
Anwendung eines in Seiten eingeteilten virtuellen Speichers zugegriffen.
In einer derartigen Anordnung kann auf den Systemspeicher 110 über einzelne
Seiten oder Speicherabschnitte zugegriffen werden. Diese seitenverwaltete
Funktion wird typischerweise von den OS-Speicherverwaltungsfunktionen
gehandhabt. Wenn ferner Speicherstellen reserviert und freigegeben
werden, sind die in den freigegebenen Speicherplätzen gespeicherten Daten weiterhin
ansprechbar.
-
In
einer Ausführungsform
kann der Systemspeicher 110 unter Anwendung mehrerer Speicherchips
eingerichtet werden, in denen die Technologie für dynamische Speicher mit wahlfreiem
Zugriff (DRAN) verwendet ist, oder in denen eine der Vielzahl verfügbarer DRAN-Technologien
eingesetzt ist, etwa beispielsweise synchrone DRAN (SDRAM). Die DRAN-Chips
werden typischerweise auf kleinen Schaltungsplatinen mit einem Randverbindungselement
montiert, die in eine Sockelverbindung auf einer Hauptplatine eingefügt werden.
Abhängig
von der Konfiguration der Platinen werden diese als Einzel- oder Doppel-Inline-Speichermodule
bezeichnet (beispielsweise SIMM oder DIMM). Der Systemspeicher 110 kann
mehrere Bänke
aus Speichermodule aufweisen, die eine Speichererweiterung ermöglichen.
-
Wie
zuvor beschrieben ist, kann die Speichereinrichtung 140 Programmcodierungen
und Daten speichern. In einer Ausführungsform ist die Speichereinrichtung 140 eine
Festplatte oder eine Anzahl von Festplatten, obwohl in anderen Ausführungsformen andere Massenspeichereinrichtungen,
etwa CD-ROM-Laufwerke, Diskettenlaufwerke und Bandlaufwerke, beispielsweise
vorgesehen sein können.
-
Das
Periphergerät 150 kann
ein beliebiges peripheres Gerät
sein, etwa ein Modem, eine Videoaufnahmeeinrichtung oder beispielsweise
eine Eingabe/Ausgabeeinrichtung für allgemeine Zwecke. Zu beachten
ist, dass in anderen Ausführungsformen eine
beliebige Anzahl peripherer Geräte
eingesetzt werden kann.
-
Die
I/O-Schnittstelle 120 kann ausgebildet sein, um eine Bussteuerung
und eine Übersetzung für Transaktionen
zwischen den unterschiedlichen Peripherbussen und den SEM-Prozessoren 100A und 100B während des
normalen Systembetriebs bereitzustellen. In einer Ausführungsform
umfasst die I/O-Schnittstelle 120 eine Busbrücke (nicht
gezeigt), die Funktionen ausführen
kann, die mit einer Nordbrücke
verknüpft
sind. Beispielsweise kann der periphere Bus 145 ein Peripherkomponentenverbindungs(PCI)Bus
sein und der periphere Bus 135 kann ein Bus mit geringer
Anschlussstiftzahl (LPC) sein. Des Weiteren kann die Busbrücke so ausgebildet sein,
dass diese Sicherheitsmechanismen (nicht gezeigt) bereitstellt,
die eine nicht manipulierbare Kommunikation zwischen dem SEM-Prozessor 100 und dem
SSP 130 während
einer sicheren Initialisierung ermöglichen.
-
Allgemein
ausgedrückt
wird die Sicherheits-Kernel-Initialisierungsinstruktion (SKINIT)
auf SEM-fähigen
Prozessoren, etwa dem SEM-Prozessor 100A und dem SEM-Prozessor 100B ausgeführt. In
einer Ausführungsform
kann die SKINIT-Instruktion drei Ausführungsphasen aufweisen: Initialisierung,
Datentransfer und Sprung.
-
Während der
Initialisierungsphase wird der Zustand des SEM-Prozessors 100A zurückgesetzt und
es können
Mikrocodierungs-Korrekturroutinen gelöscht werden. Ferner können, wie
nachfolgend detaillierter beschrieben ist, die Speichersteuerungen 101A und 101B,
ob integriert oder extern zu dem SEM-Prozessor 100, eine
Logik aufweisen (in 2 nicht gezeigt), die ausgebildet
ist zu veranlassen, dass der physikalische Inhalt der Speicherchips
des Systemspeichers 110 in Reaktion auf gewisse Systembedingungen,
beispielsweise eine Rücksetzung, überschrieben
wird.
-
In 2 ist
eine Blockansicht einer Ausführungsform
einer Speichersteuerung gezeigt. Die Speichersteuerung 301 umfasst
eine Steuerlogik 315, die mit einem Speicherlösch status-Bitspeicher 325 und
einer Speicherlöscheinheit 310 verbunden ist.
Die Speichersteuerung 301 kann mit einem Systemspeicher,
etwa dem Systemspeicher 110 aus 1, verbunden
sein.
-
Die
Speichersteuerung 301 ist ausgebildet, den Inhalt der Speicherchips
des Systemspeichers 110 in Reaktion auf eine Rücksetz-
oder Anlaufsequenz zu löschen,
sofern nicht das Zurücksetzen oder
das Hochlaufen mit einem Unterbrechungszustand mit Speicherung auf
RAM verknüpft
ist. Im hierin verwendeten Sinne bezeichnet das Löschen des Inhalts
der Speicherchips, dass erwirkt wird, dass die in den Speicherchips
des Systemspeichers gespeicherten Daten überschrieben und damit unbrauchbar werden.
In einer Ausführungsform
kann die Speichersteuerung 301 den Inhalt der Speicherchips durch
Schreiben eines logischen Werts von Null in jede Speicherstelle
des Systemspeichers löschen, die
für einen
Zugriff vorgesehen waren. In einer weiteren Ausführungsform kann die Speichersteuerung 301 den
Inhalt der Speicherchips durch Schreiben eines Logikwerts von Eins
in jede Speicherstelle in dem Systemspeicher löschen, die für einen
Zugriff vorgesehen waren. In einer noch weiteren Ausführungsform
kann die Speichersteuerung 301 den Inhalt der Speicherchips
durch Schreiben eines anderen Datenmusters in den Systemspeicher 110 löschen, wodurch
zuvor abgespeicherte Daten unbrauchbar werden. In einer derartigen
Ausführungsform
kann das Datenmuster zufällig
erzeugt werden.
-
Es
ist zu beachten, dass in einer Ausführungsform die Speichersteuerung 301 in
den SEM-Prozessor 100 integriert sein kann, etwa als die Speichersteuerung 101 aus 1,
oder in einer alternativen Ausführungsform
kann die Speichersteuerung 301 extern zu dem SEM-Prozessor 100 ausgebildet
sein, wobei die Speichersteuerung 301 ein Teil einer Brückeneinheit,
etwa beispielsweise der I/O-Steuerung 120 aus 1 sein
kann.
-
In
der dargestellten Ausführungsform
umfasst die Steuerlogik 315 Konfigurations- und Steuerregister 316 und
Plattformsicherheitsleistungsregister 320. Die Konfigurations- und Steuerregister 316 können durch
Software ansprechbare Register zur Programmierung der Größe des adressierbaren Speichers
aufweisen. Beispielsweise kann während der
Initialisierung das BIOS die Größe des verwendbaren
Systemspeichers bestimmen und nachfolgend die Speichersteuerung 301 programmieren,
auf diesen verwendbaren Speicher zuzugreifen, indem die Konfigurations-
und Steuerregister 316 entsprechend programmiert werden.
Ferner können
die Konfigurations- und Steuerregister 316 ein Ak tivierungsbit
für den
dynamischen Speicher mit wahlfreiem Zugriff (DRAM), das als DRAME-Bit
bezeichnet ist, aufweisen. In einer Ausführungsform wird das DRAME-Bit auf
einen Logikwert von Null durch Rücksetzen
gesetzt und wird auf einen Logikwert von Eins durch Software, etwa
durch das BIOS als der letzte Schritt bei der Programmierung der
Speichersteuerung 301 gesetzt. Die Hardware kann dieses
Bit auch löschen, wenn
die Speichersteuerung deaktiviert oder ausgeschaltet wird. Wenn
das DRAME-Bit gesetzt ist, bewirkt dieses, dass die Speichersteuerung 301 von dem
deaktivierten in den aktivierten Zustand übergeht. Des Weiteren können die
Konfigurations- und Steuerregister 316 ein DRAM-Statusbit
aufweisen, das als das DStat-Bit bezeichnet wird. in einer Ausführungsform
ist das DStat-Bit für
Software lesbar. Der Null-Eins-Übergang
dieses Bits gibt an, dass eine Speicherlöschoperation abgeschlossen
ist. Das Bit kann durch Hardware in der Steuerlogik 315 auf Eins
gesetzt werden, wenn der Speicherlöschvorgang abgeschlossen ist.
Das DStat-Bit wird zurückgesetzt,
wenn das DRAME-Bit zurückgesetzt
wird. Beispielsweise gilt: DStat = 1, wenn DRAME gleich wahr ist
UND die Speicherlöscheinheit 310 keine Speicherlöschoperation
ausführt.
-
In
der dargestellten Ausführungsform
ist die Speicherlöscheinheit 310 ausgebildet,
den Bereich des Systemspeichers zu löschen, der in den Konfigurationsregistern 316 programmiert
wurde, wenn die Speichersteuerung 301 von dem deaktivierten
in den aktivierten Zustand übergeht
und die Speicherlöscheinheit 310 aktiviert
wird. Beispielsweise kann in einer Ausführungsform die Speicherlöscheinheit 310 die
Logik enthalten, um Schreibdaten für den Systemspeicher während des
Speicherlöschvorgangs
zu erzeugen.
-
In
der dargestellten Ausführungsform
umfassen die Plattformsicherheitsleistungsregister 320 ein Speicherlöschdeaktivierungsbit,
das als MCD bezeichnet ist. Wie nachfolgend deutlicher beschrieben ist,
kann das MCD-Bit so konfiguriert sein, dass die Speicherlöscheinheit 310 aktiviert
oder deaktiviert wird, wodurch das Löschen des Systemspeichers aktiviert
oder deaktiviert wird.
-
In
einer Ausführungsform
sind die Plattformsicherheitsleistungsregister 320 Softwaresichtbare Zugriffsschutzregister,
die in einem Konfigurationsraum angeordnet sind, der mit der Speichersteuerung 301 verknüpft ist.
Zu beachten ist, dass das MCD-Bit lediglich für eine abgesicherte Software sichtbar
ist. Die Adressierung kann auf der Grundlage eines neuen Leistungszeigers
(0Fh) erfolgen. Das MCD-Bit kann ein einzelnes Bit eines Steuerregisters eines
Direktspeicherzugriffsausschlussvektors (DEV) sein. In einer Aus führungsform
wird, wenn das MCD-Bit auf logisch Eins gesetzt ist, die Speicherlöscheinheit 310 deaktiviert,
und wenn das MCD-Bit auf logisch Null gesetzt ist, wird die Speicherlöscheinheit 310 aktiviert:
Ferner ist das MCD-Bit nur beschreibbar, wenn der Speicher freigegeben
ist.
-
Zu
beachten ist, dass in einer Ausführungsform
der Zustand des MCD-Bits beibehalten werden kann, wenn das System
abgeschaltet wird, aber die Speicherchips des Systemspeichers mit
Spannung versorgt bleiben (beispielsweise S3-Zustand). Um die Bit-Zustandsinformation
beizubehalten, kann das MCD-Bit verknüpft dazu ein „Unterbrechung
mit Speicherung im RAM”-Bit
aufweisen, das als STR bezeichnet ist, das den Zustand beibehält und in
einer ”Master/Slave”-Anordnung
mit dem MCD-Bit arbeitet. In einer Ausführungsform wird beim Hochlaufen
der Zustand des STR-Bits in das MCD-Bit kopiert. Somit zeigt das
STR-Bit an, ob der Inhalt des Systemspeichers während eines Abschaltens gesichert wurde.
Das STR-Bit ist unter Umständen
nicht Software-sichtbar und kann durch Rücksetzen gelöscht werden.
In einer Ausführungsform
bleibt der STR-Bit-Zustand
erhalten, wenn das System abgeschaltet wird, aber die Speicherchips
des Systems in Betrieb bleiben (beispielsweise S3-Zustand). Sobald die
Speichersteuerung 301 aktiviert ist, kann eine vertrauenswürdige Software
insbesondere das STR-Bit setzen, indem vor dem Eintreten in den S3-Zustand
das MCD-Bit gesetzt wird. Vor dem Eintreten einer Abschaltbedingung
kann der Zustand des STR-Bits kopiert werden. Das STR-Bit wird automatisch
zurückgesetzt,
wenn das DRAME-Bit gesetzt wird (beispielsweise nachdem der Speicherlöschvorgang
den Zustand bewertet. In der dargestellten Ausführungsform kann das STR-Bit
in dem Speicherlöschstatus-Bitspeicher 325 enthalten
sein.
-
In
der dargestellten Ausführungsform
enthält der
Speicherlöschstatus-Bitspeicher 325 ferner ”Speicher
zuvor gelöscht”-Bits.
Diese Bits können eine
Kennzeichnung enthalten, welche Bereiche des Speichers durch die
vorhergehende Speicherlöschoperation
gelöscht
wurden. Diese Bits sind nicht für
die Software sichtbar und können
durch einen Rücksetzvorgang
gelöscht
werden. In einer Ausführungsform behalten
die ”Speicher
zuvor gelöscht”-Bits ihren
Zustand, wenn das System abgeschaltet wird, aber die Speicherchips
des Systemspeichers unter Spannung leiten (beispielsweise S3-Zustand).
Die ”Speicher
zuvor gelöscht”-Bits können jedes
Mal erneut eingeladen werden, wenn die Speicherlöschoperation ausgeführt wird.
-
In
einer Ausführungsform überprüft die Steuerlogik 315 die
aktuelle Größe des Systemspeichers, die
in die Speichersteuerung 301 geschrieben ist, gegenüber dem
Zustand, der in den ”Speicher
zuvor gelöscht”-Bits gespeichert
ist. Wenn es eine Abweichung gibt, kann die Speicherlöscheinheit 310 bedingungslos
den Systemspeicher löschen,
wie dies zuvor beschrieben ist. Beispielsweise kann eine bösartige
BIOS- oder BIOS-Emulations-Software
die Speichersteuerung 301 programmiert haben, um auf einen
kleinen Bereich des Speichers zuzugreifen im Vergleich zu einem
Bereich, wie er zuvor angesprochen und gelöscht wurde, um auf einen sicheren Speicher
zuzugreifen. Wenn daher keine Übereinstimmung
erkannt wird, wird der zuvor gelöschte Speicherbereich
gelöscht.
In einer Ausführungsform können die ”Speicher
zuvor gelöscht”-Bits eingerichtet
sein, um die oberen Adressenbits des höchsten 64M-Byteblocks des Speichers,
der durch die letzte Speicherlöschoperation
gelöscht
wurde, zu speichern. Jedoch können
in anderen Ausführungsformen
andere Implementierungen angewendet werden.
-
In
einer Ausführungsform
werden die Bits des Speicherlöschstatusspeichers 325,
die den Zustand bewahren, sobald das System abgeschaltet wird aber
die Speicherchips des Systemspeichers unter Spannung bleiben (beispielsweise
S3-Zustand), in Zustandsspeicherelementen abgelegt, die in dem I/O-Anschlussring
der Einrichtung, in der die Speichersteuerung untergebracht ist,
eingerichtet sind (wie dies in den gepunkteten Linien gezeigt ist). Wie
nachfolgend detaillierter in Verbindung mit der Beschreibung aus 3 erläutert ist,
kann die Steuerlogik 315 der Speichersteuerung 301 Zugriffsmöglichkeit
zu diesen Zustandsspeicherelementen besitzen, wenn ein Anlaufen
aus dem Rücksetzzustand erfolgt.
Da die Leistung für
gewisse Geräte
weiterhin anliegt (beispielsweise flüchtige Speicher, etwa RAM),
selbst wenn gewisse Systemabschaltbedingungen vorliegen (beispielsweise
der S3-Zustand), können
diese Zustandsspeicherelemente ihren Zustand über eine Abschaltfase und eine
nachfolgende Anlaufsequenz beibehalten.
-
3 zeigt
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
einer Speichersteuerung in einer abgesicherten Rechnerplattform
beschreibt. Unter Bezugnahme zu den 2 und 3 beginnt
der Betrieb in Block 400, in welchem ein Systemrücksetzvorgang
auftritt. In Reaktion auf das Rücksetzen
führt das
BIOS diverse Hochlauf- und Konfigurationsaufgaben auf Systemebene aus.
Beispielsweise muss das BIOS den Systemspeicher durch Konfigurieren
der Speichersteuerung 301 aktivieren. In Abhängigkeit
der speziellen Systemimplementierungen kann dann das BIOS eine oder mehrere
Speicherprüfungen
durchführen,
um die physikalische Größe des Systemspei chers
zu bestimmen. Sobald der verfügbare
Speicherplatz bestimmt ist, programmiert in einer Ausführungsform das
BIOS ein oder mehrere Konfigurationsregister 316 der Speichersteuerung 301 mit
der aktuellen Größe des verfügbaren Speichers
(Block 405). Sobald die Speichersteuerung programmiert
ist, aktiviert das BIOS die Speichersteuerung 301 durch
Setzen des DRAME-Bits (Block 410). Die Speichersteuerung 301 geht
dann von dem deaktivierten in den aktivierten Zustand über. Das
STR-Bit wird von der Steuerlogik 315 in das MCD-Bit kopiert
(Block 415).
-
In
Reaktion auf den Übergang
von dem deaktivierten in den aktivierten Zustand liest die Steuerlogik 315 das
MCD-Bit aus, um zu bestimmen, ob das System in einem S3-Zustand (beispielsweise Unterbrechung
mit Speicherung im RAM) vor dem Rücksetzen war (Block 420).
Wenn das System nicht in einem S3-Zustand war (beispielsweise MCD-Bit zurückgesetzt),
dann bestimmt die Steuerlogik 315 die Speichergröße aus dem
in den Konfigurationsregistern 316 gespeicherten Wert (Block 430).
Die Steuerlogik 315 benachrichtigt die Speicherlöscheinheit 310,
um einen Speicherlöschvorgang
an allen Speicherplätzen
durchzuführen,
die innerhalb der aktuell programmierten Speichergröße liegen
(Block 435). Die Größe des Speichers,
der gelöscht
wird, wird in den ”Speicher
zuvor gelöscht”-Bits gespeichert
(Block 440).
-
Es
sei nochmals auf Block 425 verwiesen; wenn die Steuerlogik 315 bestimmt,
dass das System in einem S3-Zustand war (beispielsweise MCD-Bitset),
dann ermittelt die Steuerlogik 315 die aktuell programmierte
Speichergröße aus dem
in den Konfigurationsregistern 316 gespeicherten Wert und
die zuvor gelöschte
Speichergröße durch
Lesen des Werts, der in den ”Speicher
zuvor gelöscht”-Bits des Speicherlöschstatus-Bitspeicher 325 gespeichert
ist (Block 445). Die Steuerlogik 315 vergleicht
die aktuell programmierte Speichergröße mit der zuvor gelöschten Speichergröße (Block 450).
Wenn es eine Abweichung in der Größe gibt (Block 455),
benachrichtigt die Steuerlogik 315 die Speicherlöscheinheit 310, eine
Speicherlöschoperation
an allen Speicherplätzen
vorzunehmen, die in der vorhergehenden Speicherlöschoperation gelöscht wurden,
wie dies durch den Wert gekennzeichnet ist, der in den ”Speicher zuvor
gelöscht”-Bits des
Speicherlöschstatus-Bitspeichers 325 gespeichert
ist (Block 460). Die Größe des Speichers,
der gelöscht
wird, wird in den ”Speicher
zuvor gelöscht”-Bits gespeichert
(Block 440). In einer Ausführungsform wird, sobald das
MCD-Bit bewertet ist, das STR-Bit zurückgesetzt, wodurch die Speicherlöschoperation
aktiviert wird, sobald ein Anlaufen aus dem Rücksetzzustand erfolgt.
-
Es
sei nochmals auf Block 455 verwiesen; wenn die aktuell
programmierte Speichergröße gleich
der zuvor gelöschten
Speichergröße ist,
wird die Speicherlöschoperation
nicht ausgeführt,
da die Speicherlöscheinheit 310 von
dem gesetzten MCD-Bit deaktiviert ist (Block 465).
-
Wie
zuvor beschrieben ist, wird, wenn die Speichersteuerung 301 aktiviert
ist, ferner das MCD-Bit durch eine vertrauenswürdige Software gesetzt, bevor
in den S-Zustand übergegangen
wird, wodurch die Speicherlöschoperation
bei einem Anlauf aus dem Rücksetzzustand
deaktiviert wird.