-
Gebiet der vorliegenden Offenbarung
-
Die
vorliegende Offenbarung betrifft im Allgemeinen das Gebiet der Computersysteme
mit erhöhter
Sicherheit und entsprechender Mechanismen, die darin eingerichtet
sind, die das Bereitstellen verbesserter Sicherheitsstandards ermöglichen,
die für
einen sicheren Hochlauf- bzw. Boot-Mechanismus erforderlich sind.
-
Beschreibung des Stands der
Technik
-
Die
weit verbreitete Verwendung von Computersystemen führte zu
einer deutlichen Steigerung der Informationsverarbeitung auf der
Basis elektronischer Computersysteme, wodurch große Mengen
an digitalen Daten erzeugt, verteilt und bearbeitet werden. Mit
den zunehmenden Fähigkeiten
von Computersystemen im Hinblick auf die Datenspeicherkapazität und die
erhöhte
Verarbeitungsgeschwindigkeit ist die Vervielfachung großer Datensätze, etwa
von Audiodaten, Filmen und dergleichen für eine anwachsende Anzahl an
Personen verfügbar
und wird häufig
praktiziert, unabhängig
von täglichen
Schutzrechten, die mit vielen der in elektronischen Form bereitgestellten
Daten verknüpft
sind. Somit wird ein beträchtlicher ökonomischer
Schaden durch das illegale Kopieren, Speichern und Neuverteilen
elektronischer Daten erzeugt. Ferner ermöglicht das Verteilen von Anwendungsprogrammen über weit
verteilte Netzwerke, etwa das Internet, das Verteilen von Schad-Software-Anwendungen,
die wiederum zum Manipulieren von Daten und/oder zur Manipulation einer
entsprechenden Computerplattform eingesetzt werden können. Beispielsweise
wird ein beträchtlicher
Schaden in privaten Umgebungen und insbesondere in der Industrie
hervorgerufen, indem Softwareanwendungen eingeführt werden, die beispielsweise
Softwaredateien, etwa gespeicherte Daten, manipulieren, Information über das
Internet ohne Wissen des eigentlichen Nutzers der Plattform zu übermitteln,
einen Angriff zur Verweigerung von Dienstleistungen starten, wodurch
möglicherweise die
Plattform für
eine spezielle Anwendung nicht mehr verwendbar ist, die einen speziellen
Status der Plattform erfordert, und dergleichen.
-
Aus
diesen Gründen
werden große
Anstrengungen unternommen, um Mechanismen zur Verbesserung der Integrität von Computerplattformen
zu entwickeln, um damit die Wahrscheinlichkeit für einen „erfolgreichen” externen
Angriff, beispielsweise in Form einer Schadsoftware, von Angriffen
zur Verweigerung von Dienstleistungen, zum Ausspionieren, Manipulieren
und dergleichen zu verringern und ebenfalls um die Datenintegrität im Hinblick
auf interne Manipulationen der Computerplattform zu verbessern.
Beispielsweise sind eine Vielzahl von Verschlüsselungstechniken verfügbar, etwa
symmetrische oder asymmetrische Verschlüsselungs/Entschlüsselungstechniken,
die den Austausch von Daten mit einem hohen Maß an Immunität im Hinblick auf
das Manipulieren von Daten durch einen dritten während des Übertragens und des Speicherns
von Daten ermöglichen.
In asymmetrischen Verschlüsselungstechniken
wird ein Paar aus einem privaten Schlüssel und einem öffentlichen
Schlüssel
verwendet, um Daten mittels eines der Schlüssel zu verschlüsseln und
die Daten unter Anwendung des anderen Schlüssels zu entschlüsseln, wobei
einer der Schlüssel öffentlich
zugänglich
ist. In symmetrischen Verschlüsselungstechniken
wird ein einzigartiger Schlüssel
sowohl für
das Verschlüsseln
als auch das Entschlüsseln
von Daten verwendet, wobei Zugriff auf den einzigartigen Schlüssel auf
die autorisierten Parteien zu beschränken ist. Obwohl diese Techniken
eine erhöhte
Integrität
in der Datenkommunikation und der Datenspeicherung ermöglichen,
bietet die eigentliche Konfiguration einer betrachteten Computerplattform
dennoch die Möglichkeit
für eine
Vielzahl von Angriffen, insbesondere da viele Anwendungen, die zur
Erhöhung
der Computersicherheit gedacht sind, sich auf eine vertrauenswürdige Plattformkonfiguration
verlassen.
-
Eine
vertrauenswürdige
Computerplattform kann als ein Computersystem betrachtet werden,
in welchem der Hardwareaufbau sowie die Softwareanwendungen als
in einem speziellen Zustand vorliegend erachtet werden. Eine sichere
Plattformkonfiguration kann lediglich durch Einrichten einer „Kette” aus vertrauenswürdigen Plattformebenen
erreicht werden, wobei jede weitere Ebene durch die vorhergehende
Ebene nur dann initialisiert wird, wenn die Integrität der nachfolgenden
Ebene verifiziert ist. Somit kann die Integrität auf Systemebene mittels einer Kette
aus Integritätsverifizierungen
aufrecht erhalten werden, wobei eine Wurzel der Kette aus den Verifizierungsschritten
mit einem hohen Maß an
Manipulationssicherheit bereitgestellt werden muss, um damit ein
hohes Maß an
Zutrauen im Hinblick auf die Integrität des Systems zu ermöglichen,
nachdem die höchste
Ebene, d. h. die Ebene der Nutzeranwendungen, initialisiert ist.
-
In
einer typischen Computerplattform erfordert die Initialisierung
des Systems diverse Grade an Abstraktion, beispielsweise im Hinblick
auf das Initialisieren der zentralen Recheneinheit (CPU), das Initialisieren
des Systemspeichers, der typischerweise außerhalb der CPU vorgesehen
ist, das Einladen eines Betriebssystems in den Systemspeicher von einer
externen Massenspeichereinrichtung und schließlich das Ausführen von
Nutzeranwendungen. Somit ist es im Hinblick auf das Verbessern der
Gesamtintegrität
des Systems als Ganzes unter Umständen nicht ausreichend anzunehmen,
dass die diversen Systemaktivitäten
vor dem Einladen des Betriebssystems als sicher erachtet werden
können,
so dass man sich auf die Integrität des Betriebssystems und der
Nutzeranwendung verlässt,
da das Betriebssystem von einem „nicht vertrauenswürdigen” Prozess
aufgerufen werden kann, wodurch die Möglichkeit geschaffen wird,
die grundlegende Plattformkonfiguration durch Modifizieren der Hardware
und der Softwarekomponenten zu manipulieren. Somit muss der Vorgang
des Initialisierens der diversen Hardwarekomponenten des Computersystems,
etwa des Systemspeichers, und das Ausführen der Befehle, die zum Initialisieren
der höheren
Systemebenen darin enthalten sind, was auch als Hochlaufen oder Booten
bezeichnet wird, in die Kette aus Vertrauenswürdigkeit mit aufgenommen werden,
um die gesamte Systemintegrität
zu verbessern.
-
Eine
typische Anlaufsequenz zum Initialisieren eines Computersystems
nach dem Anlegen der Versorgungsspannung oder nach einem Rücksetzereignis
bewirkt einen „Einschaltselbsttest” der CPU, wobei
auch der Prozessor die Ausführung
von Befehlen an einer speziellen Einsprungadresse beginnt, die durch
den Rücksetzvektor
des Prozessors vorgegeben ist. D. h., nach einem anfänglichen
Prozessorselbsttest beginnt das Ausführen von Befehlen an dem Einsprungpunkt,
der typischerweise eine Adresse einer Softwareroutine ist, die häufig als
BIOS (Basis-Eingabe/Ausgabe-System) bezeichnet wird, die in einem
speziellen externen nicht-flüchtigen
Speicher der Computerplattform abgelegt ist. Unter der Steuerung
des BIOS werden die verbleibenden Selbsttestroutinen ausgeführt und
die Hardwarekonfiguration der Plattform wird bestimmt oder „gemessen”. Danach
wird eine Suche nach einem gut fähigem
Gerät ausgeführt, etwa
einer Massenspeichereinrichtung, beispielsweise der Festplatte des
Computersystems, einen Diskettenlaufwerk, einem CD-ROM-Laufwerk,
einer Erweiterungskarte und dergleichen, von welchem aus ein primärer Hochlauf- bzw.
Bootblock in dem Systemspeicher eingeladen wird, wobei die Steuerung
dann ab dem primären Bootblock übergeben
wird, der ein Betriebsystem in dem Systemspeicher einlädt.
-
Obwohl
große
Anstrengungen unternommen wurden um auch die Sicherheit des gesamten
Initialisierungsprozesses zu verbessern, ist es schwierig, eine
zuverlässige
Kernwurzel an Vertrauenswürdigkeit
für die
Messung (CRTM) für
den Initialisierungsprozess bereitzustellen, beispielsweise im Hinblick auf
Plattformmodifizierungen, etwa das Austauschen des nicht-flüchtigen
Speicherchips, der die BIOS-Software enthält, da das entsprechende Austauschen
des Chips daher die Kette der Vertrauenswürdigkeit unterbrechen kann,
wodurch auch alle nachfolgenden Verifizierungsschritte als nicht
vertrauenswürdig
erscheinen. Daher werden große
Anstrengungen unternommen, um einen sicheren Boot- bzw. Initialisierungsmechanismus
bereitzustellen, wobei jedoch häufig
ein Vertrauenszentrum verwendet werden muss, wodurch erhebliche
Ressourcen erforderlich sind, während
die Flexibilität
beim Aktualisieren der BIOS-Software verringert ist.
-
Im
Hinblick auf die zuvor beschriebene Situation betrifft die vorliegende
Offenbarung Einrichtungen und Verfahren zum Verbessern der Integrität von Computersystemen
in Verbindung mit einer erhöhten Flexibilität für die Fähigkeit
der BIOS-Aktualisierung, wobei eines oder mehrere der zuvor erkannten
Probleme vermieden oder zumindest verringert werden.
-
Überblick über die Offenbarung
-
Im
Allgemeinen betrifft die vorliegende Offenbarung Einrichtungen und
Mechanismen zum Verbessern der Integrität von Computersystemen, indem
eine statische Wurzel an Vertrauenswürdigkeit für die Plattformmessung eingerichtet
wird, indem ein gewisser Datensatz vorgesehen wird, der ausführbare Befehle
und Datenwerte enthält,
wenn ein sicherer Initialisierungsmechanismus aktiviert wird, abgerufen werden
mittels der zentralen Recheneinheit, ohne dass die Möglichkeit
besteht, den Zugriff auf den speziellen Datensatz zu umgehen, so
dass eine definierte Wurzel für
die Initialisierung der Plattform erhalten wird. Der Datensatz wird
so eingerichtet, dass ein höheres
Niveau an Immunität
gegenüber
Angriffen gegenüber
eine Manipulation erreicht wird. Während des Ausführens der
Befehle, die in dem Datensatz enthalten sind, kann der Ablauf nicht
geändert
oder unterbrochen werden, wodurch ein hohes Maß an Integrität der Daten
erreicht wird, die somit als ein dem Booten bzw. Initialisieren
vorgeordneter Satz an Befehlen und Datenwerten betrachtet werden
können. Da
die Bearbeitung der Befehle der Vorinitialisierungs- bzw. Vorbootdaten
beim Einschalten des betrachteten Systems zwingend erforderlich
ist, wird eine Kette aus vertrauenswürdiger Software begonnen, wodurch
ein hohes Maß an
Systemintegrität
erreicht wird, da der spezielle Zustand der Vor-Initialisierungsdaten
die statische Kernwurzel für
die Kette nachfolgender Verifizierungsschritte repräsentiert. Gemäß den hierin
offenbarten Prinzipien wird ebenfalls ein Verschlüsselungsschlüssel in
dem internen nicht-flüchtigen
Speicher gespeichert, auf dem während
der Vor-Initialisierungsphase auf der Grundlage des sicheren Befehlssatzes
zugegriffen wird, um die Integrität zumindest eines Teils von
signierten Initialisierungsdaten zu verifizieren, deren Signatur
auch auf der Grundlage des in dem nicht-flüchtigen Speicher enthaltenen
Verschlüsselungsschlüssels erzeugt
wird. Somit können
vor dem eigentlichen Initialisieren des Systemsspeichers die Initialisierungsdaten
oder Bootdaten oder zumindest ein Teil davon verifiziert werden,
indem eine Signatur der Bootdaten bestimmt wird und die aktuell
bestimmte Signatur mit der gespeicherten Signatur der Bootdaten
verglichen wird. Folglich kann unter Anwendung eines einzigartigen
symmetrischen Verschlüsselungsschlüssels für eine beliebige
gewünschte
Plattform ein höheres
Niveau erreicht werden und auch das BIOS ist nicht mehr austauschbar.
Dies kann erreicht werden, ohne dass ein Vertrauenszentrum beteiligt
ist und es werden allgemein Angriffe vermieden, die eine Vielzahl von
Computerplattformen betreffen, wobei gleichzeitig ein skalierbarer
Grad an Sicherheit bereitgestellt wird, wobei die „Multiplizität”, mit der
der einzigartigen symmetrischen Verschlüsselungsschlüssel verwendet
wird, die „Körnung bzw.
Auflösung” des Grades
an Sicherheit bestimmt. In einigen anschaulichen hierin offenbarten
Aspekten wird der einzigartige Verschlüsselungsschlüssel, der
in dem nicht flüchtigen internen
Speicher abgelegt ist, auch zum Erzeugen einer Signatur zum Aktualisieren
des System-BIOS verwendet, wodurch die Gesamtflexibilität des vertrauenswürdigen Plattformmechanismus,
wie er hierin offenbart ist, noch weiter erhöht wird. Da der Vorbootdatensatz
und der einzigartige symmetrische Verschlüsselungsschlüssel in
einem nicht-flüchtigen internen
Speicher bewahrt werden, beispielsweise in CPU-Kern selbst, wird
ein hohes Maß an
Integrität des
Verschlüsselungsschlüssels erreicht,
wobei Angriffe, beispielsweise im Hinblick auf das Austauschen von
BIOS-Chips und dergleichen im Wesentlichen vermieden werden.
-
Ein
anschauliches hierin offenbartes Verfahren betrifft das Initialisieren
bzw. Booten eines Computersystems. Das Verfahren umfasst beim Einschalten
oder bei einem Rücksetzereignis
das Ausführen von
Befehlen, die in einem internen nicht-flüchtigen Speicherbereich einer
zentralen Recheneinheit gespeichert sind, wobei der interne nicht-flüchtige Speicherbereich
einen Verschlüsselungsschlüssel enthält. Das
Verfahren umfasst ferner das Bestimmen einer aktuellen Signal zumindest
eines signierten Bereichs von Bootdaten, wobei der signierte Bereich
von Bootdaten eine gespeicherte Signatur des Teils der Bootdaten
betrifft, wobei die gespeicherte Signatur durch Anwenden des Verschlüsselungsschlüssels erzeugt
ist. Das Verfahren umfasst ferner das Ausführen von Bootbefehlen, die
in dem signierten Teil der Bootdaten enthalten sind, wenn die aktuelle
Signatur und die gespeicherte Signatur identisch sind.
-
Ein
weiteres anschauliches hierin offenbartes Verfahren betrifft das
Booten bzw. Initialisierens eines Computersystems. Das Verfahren
umfasst beim Einschalten oder beim Auftreten eines Rücksetzereignisses
das Zugreifen auf einen internen nicht-flüchtigen Speicher einer zentralen
Recheneinheit, wobei der interne nicht-flüchtige Speicher Vor-Boot- bzw. Vor-Initialisierungsbefehle
und Datenwerte zum Initialisieren eines internen flüchtigen Speichers
der zentralen Recheneinheit und zum Verifizieren der Integrität zumindest
eines Teil der Bootbefehle und er Bootdatenwerte aufweist. Das Verfahren
umfasst ferner das Einladen zumindest eines Teils der Bootbefehle
und Bootdatenwerte aus dem nicht-flüchtigen Speicher in den internen
nicht-flüchtigen
Speicher durch Ausführen
der Vor-Boot-Befehle. Des weiteren umfasst das Verfahren das Verifizieren
einer Integrität
zumindest des Teils der Bootbefehle und der Bootdatenwerte durch
Verwenden eines Verschlüsselungsschlüssels, der
in dem internen nicht-flüchtigen
Speicher abgelegt ist und Verwenden einer Signatur, die mit dem
mindestens einen Teil der Bootbefehle und Bootdatenwerte verknüpft ist,
wobei die Signatur auf der Grundlage des Verschlüsselungsschlüssels gebildet
ist. Des weiteren umfasst das Verfahren das Bestimmen, ob eine Aktualisierungsversion
der Bootbefehle und Bootdatenwerte verfügbar ist, wenn die Integrität des mindestens
einen Teils der Bootbefehle und Bootdatenwerte erfolgreich verifiziert
ist. Schließlich
umfasst das Verfahren das Erzeugen einer Signatur der aktualisierten
Version unter Verwendung des Verschlüsselungsschlüssels, wenn
eine aktualisierte Version verfügbar
ist.
-
Eine
anschauliche hierin offenbarte zentrale Recheneinheit (CPU) umfasst
ein Substrat mit darauf ausgebildeten Schaltungselementen, die einen CPU-Kern,
einen flüchtigen
Speicher mit wahlfreiem Zugriff, einen nicht-flüchtigen Speicher und ein Bussystem
zum Verbinden des CPU-Kerns, des flüchtigen Speichers mit wahlfreiem
Zugriff und des nicht-flüchtigen
Speichers bilden. Die CPU umfasst ferner ein Vorinitialisierungsinformation,
die in dem nicht-flüchtigen
Speicher abgelegt ist, wobei die Vorinitialisierungsinformation
Befehle enthält,
die von dem CPU-Kern ausführbar
sind, der auch einen symmetrischen Verschlüsselungsschlüssel enthält, um zumindest
einen Teil einer Bootmaschine zu verifizieren, die durch Anwenden
des symmetrischen Verschlüsselschlüssel signiert
ist.
-
Ein
anschauliches hierin offenbartes Computersystem umfasst eine zentrale
Recheneinheit, wie sie zuvor angegeben ist, und einen nicht-flüchtigen Bootspeicher,
der ausgebildet ist, zumindest eine erste Bootroutine und eine zweite
Bootroutine zu halten.
-
Kurze Beschreibung der Zeichnungen
-
Weitere
Ausführungsformen
der vorliegenden Offenbarung sind in den angefügten Patentansprüchen definiert
und gehen deutlicher aus der folgenden detaillierten Beschreibung
hervor, wenn diese mit Bezug zu den begleitenden Zeichnungen studiert
wird, in denen:
-
1a schematisch
eine zentrale Recheneinheit (CPU) mit einem Speicher mit wahlfreiem
Zugriff (Cache), einem CPU-Kern und einem nicht-flüchtigen
Speicher mit Vorinitialisierungsinformation und einem symmetrischen
Verschlüsselungsschlüssel gemäß anschaulicher
Ausführungsformen zeigt;
-
1b schematisch
ein Computersystem mit einer CPU mit einer Vorinitialisierungsinformation und
einem Verschlüsselungsschlüssel gemäß noch weiterer
anschaulicher Ausführungsformen
darstellt;
-
1c schematisch
einen Prozess zum Verifizieren eines Teils von BIOS-Daten zeigt,
die auch als Anfangs-BIOS-Lade-Routine (IBL) bezeichnet wird, auf
der Grundlage eines symmetrischen Verschlüsselungsmechanismus gemäß anschaulicher Ausführungsformen;
-
1d schematisch
ein Flussdiagramm für ein
Verfahren zum Verifizieren der Integrität von Bootdatenbefehlen gemäß noch weiterer
anschaulicher Ausführungsformen
zeigt;
-
1e schematisch
ein Flussdiagramm eines Verfahrens zum Verifizieren der Integrität von BIOS-Daten
und zum Erzeugen einer Signatur für eine Aktualisierungsversion
von BIOS-Daten gemäß noch weiterer
anschaulicher Ausführungsformen zeigt;
und
-
1f und 1g schematisch
Flussdiagramme Verfahren zum Ausführen der Verifizierung der
BIOS-Integrität
und zum Aktualisieren der BIOS-Daten gemäß noch weiterer anschaulicher Ausführungsformen
darstellen.
-
Detaillierte Beschreibung
-
Obwohl
die vorliegende Offenbarung mit Bezug zu den Ausführungsformen
beschrieben ist, wie sie in der folgenden detaillierten Beschreibung
sowie in den Zeichnungen dargestellt sind, sollte beachtet werden,
dass die folgende detaillierte Beschreibung sowie die Zeichnungen
nicht beabsichtigen, die vorliegende Offenbarung auf die speziellen anschaulichen
offenbarten Ausführungsformen
einzuschränken,
sondern die beschriebenen anschaulichen Ausführungsformen stellen lediglich
beispielhaft die diversen Aspekte der vorliegenden Offenbarung dar, deren
Schutzbereich durch die angefügten
Patentansprüche
definiert ist.
-
Im
Allgemeinen stellt die vorliegende Offenbarung ein System und einen
Mechanismus zum Ausführen
von Befehlen während
des Hochlaufens oder während
des Rücksetzens
oder während
einem anderen Funktionszustand, der eine Initialisierung des Systems
erfordert, wobei die Befehle in einen Speicherbereich abgelegt sind,
auf dem nach dem Beenden einer Verifizierungsphase zumindest eines Teils
von Bootbefehlen nicht mehr zugegriffen werden kann. Zu diesem Zweck
beruht der Verifizierungsprozess auf einem symmetrischen Verschlüsselungsschlüssel, der
ebenfalls in einem Speicherbereich abgelegt ist, der im Hinblick
auf einen beliebigen Funktionszustand der CPU mit Ausnahme des Initialisierens
und mit Ausnahme von Rücksetzereignissen
verriegelt werden kann. Beispielsweise können die Befehle und der symmetrische
Verschlüsselungsschlüssel in
einem nicht-flüchtigen
Speicher gespeichert sein, der einen Teil einer zentralen Recheneinheit
bildet, wodurch die Möglichkeit
des Manipulierens der in dem nicht-flüchtigen Speicher enthaltenen
Daten deutlich reduziert wird. Folglich kann der Inhalt des nicht-flüchtigen
Speichers als eine statische Wurzel der Vertrauenswürdigkeit
für das
Messen bzw. Bestimmen während
der Initialisierung der CPU und des gesamten Computersystems verwendet
werden, indem sichergestellt wird, dass beim Einschalten oder beim
Rücksetzen
der CPU der erste Befehl aus dem nicht-flüchtigen Speicher abgeholt wird.
Somit kann der darin enthaltene Datensatz als eine Vorboot- oder
Vor-BIOS-Komponente dienen, die die Initialisierung weiterer Systemkomponenten ermöglicht,
etwa eines internen Speichers mit wahlfreiem Zugriff, der zum Speichern
von Operationsdaten die variablen und Stapeldaten und Befehlen für das Ausführen eines
Teils der BIOS-Software dient. Beispielsweise können der Datencache-Speicher
als Teil des Speicherbereichs mit wahlfreiem Zugriff und ein Befehlscache-Speicher
durch die Vorinitialisierungsdaten des internen nicht-flüchtigen
Speichers initialisiert werden, wodurch im Wesentlichen die Möglichkeit
keines externen Zugriffs auf darin enthaltene Daten während des
Initialisierungsvorgangs vermieden wird. D. h., der Speicherbereich
mit wahlfreiem Zugriff, d. h. der Datencache-Speicher und der Befehlscache-Speicher
sind CPU-interne Komponenten, so dass eine unerwünschte Manipulation davon sehr
schwierig ist, insbesondere da der externe Systemspeicher noch nicht
initialisiert ist, solange zumindest ein Teil der BIOS-Software
nicht verifiziert ist. Abhängig
von der Speicherkapazität
des Speichers mit wahlfreiem Zugriff kann die BIOS-Routine in zwei oder
mehr Teile aufgeteilt werden, so dass die Verifizierung einer oder mehrerer
Signaturen im Hinblick auf die BIOS-Integrität in dem Speicher mit wahlfreiem
Zugriff für
einen ersten Teil ausgeführt wird,
der so gestaltet ist, dass eine Größe in dem Cache-Speicher passt.
Somit kann dieser Teil der Boot-Information nach der Verifizierung
auf der Grundlage des symmetrischen Verschlüsselungsschlüssels beispielsweise
direkt aus dem Speicher mit wahlfreiem Zugriff heraus ausgeführt werden,
wodurch eine Manipulierung des Verifizierens des ersten Bereichs
der Bootbefehle im Wesentlichen vermieden wird. Somit kann nach
der Verifizierung der Signatur des ersten Bereichs durch Anwenden
des gespeicherten symmetrischen Schlüssels die Ablaufsteuerung auf
dem verifizierten Bereich übertragen werden
und der weitere Initialisierungsprozess kann fortgesetzt werden,
indem der Systemspeicher initialisiert und die verbleibende Initialisierungsinformation kopiert
wird, wobei auch die Integrität
der weiteren Initialisierungsinformation beispielsweise auf der Grundlage
von Prüfsummenalgorithmen
verifiziert werden kann, wobei jedoch das Erzeugen einer Signatur
nicht erforderlich ist auf Grund der Kette der Vertrauenswürdigkeit,
die durch die vorhergehende Verifizierung auf der Grundlage einer
Signatur und des gespeicherten symmetrischen Verschlüsselungsschlüssels erzeugt
wird. Folglich können
die Daten, d. h. die Befehle und die Datenwerte einschließlich des
symmetrischen Verschlüsselungsschlüssels, die
in dem nicht-flüchtigen
internen Speicherbereich als integraler Teil der CPU enthalten sind,
als eine statische Kernwurzel der Vertrauenswürdigkeit für die Plattformessung verwendet
werden, wodurch eine Computerplattform bereitgestellt wird, in der
eine Systemhardware und Softwarekonfiguration realisiert werden
kann mit hoher Manipulationsimmunität. Insbesondere im Hinblick
auf Angriffe, etwa das Austauschen des BIOS-Chips, bieten die Mechanismen
der hierin offenbarten Ausführungsformen
eine erhöhte
Sicherheit für
typische praktische Anwendungen, die die Plattform im Zusammenhang mit
finanziellen Transaktionen oder Verwaltung digitaler Rechte verwenden,
die auf Erfordernis einer vertrauenswürdigen Computerplattform basieren. Des
weiteren ermöglicht
die Verwendung eines symmetrischen Verschlüsselungsschlüssels Sicherheit der
Notwendigkeit eines Vertrauenszentrums zur Handhabung von privaten
und öffentlichen
Schlüsseln,
wie dies bei asymmetrischen Verschlüsselungstechniken der Fall
ist, wodurch die Gesamtkomplexität
deutlich verringert wird. Gleichzeitig kann das gewünschte Maß an Sicherheit
festgelegt werden, indem die Verwendung des einzigartigen Verschlüsselungsschlüssels auf
eine spezielle Art einer zentralen Recheneinheit beschränkt wird,
so dass Manipulationen oder der Verlust der Geheimhaltung für den einen
einzigartigen Verschlüsselungsschlüssel keine anderen
CPU's beeinflusst,
die auf der Grundlage eines unterschiedlichen einzigartigen Verschlüsselungsschlüssels hergestellt
sind. Des weiteren bieten hierin offenbarte anschauliche Ausführungsformen eine
effiziente Technik zum Aktualisieren der BIOS- Software unter Anwendung des gespeicherten Schlüssels zum
Erzeugen einer entsprechenden Signatur, die dann der aktualisierten
Version der BIOS-Software hinzugefügt werden kann, und die dann
beim Initialisieren des Computersystems auf der Grundlage der neu
erzeugten Signatur und des gespeicherten Schlüssels verifiziert werden kann.
-
Mit
Bezug zu den begleitenden Zeichnungen werden nunmehr weitere anschauliche
Ausführungsformen
detaillierter beschrieben.
-
1a zeigt
schematisch eine zentrale Recheneinheit (CPU) 100 gemäß anschaulicher
Ausführungsformen,
in denen eine Kernwurzel der Vertrauenswürdigkeit für die Plattformmessung (CRTM) mit
einem hohen Maß an
Immunität
gegen Manipulation eingerichtet werden kann. Die CPU 100 umfasst einen
CPU-Kern 102, der Komponenten für die Datenverarbeitung, etwa
zum Ausführen
arithmetischer Operationen, logischer Operationen, und dergleichen aufweist.
Der CPU-Kern 102 ist funktionsmäßig mit einem Speicher mit
wahlfreiem Zugriff 101 verbunden, der mehrere statische
RAM-Zellen und dergleichen aufweist, wie dies der Gesamtkonfiguration
der CPU 100 entspricht. In einer anschaulichen Ausführungsform
umfasst der RAM 101 einen ersten Speicherbereich, der als
Datencache-Speicher 101a angegeben ist, und einen zweiten
Bereich, der als Befehlscache-Speicher 101b angegeben ist.
Beispielsweise ist der RAM 101 mittels einer schnellen Speichertechnologie
hergestellt, um damit das Gesamtleistungsverhalten der CPU 100 zu
verbessern, wie dies typischerweise in anspruchsvollen Anwendungen
erforderlich ist. Es sollte jedoch beachtet werden, dass eine beliebig
geeignete Speichertechnologie für
den Speicher 101 verwendet werden kann, sofern eine direkte
Steuerung des Speichers 101 über den CPU-Kern 102 gewährleistet
ist, ohne dass die Möglichkeit
eines externen Zugriffs während des
Initialisierens der CPU 100 möglich ist. Die CPU 100 umfasst
ferner einen nicht-flüchtigen
Speicher 103, der in einer geeigneten Speichertechnologie vorgesehen
wird, beispielsweise in Form eines Flash-Speichers oder mittels
einer Nur-Lese-Speichertechnik, die keinen externen Zugriff zum
Modifizieren des Inhalts des Speichers 103 ermöglicht.
Somit kann der Speicher 103 als ein sicherer Speicherbereich
betrachtet werden, dessen Inhalt daher eine statische Wurzel der
Vertrauenswürdigkeit
repräsentiert.
Zu diesem Zweck ist ein Satz aus Daten 103a vorgesehen,
die als Befehle, die von dem CPU-Kern 102 ausführbar sind,
und als Datenwerte, die Operanden und dergleichen der Befehle repräsentieren, verstanden
werden, wobei dies zumindest in einem Teil des Speichers 103 enthalten
sind, der nicht mit neuen Daten überschrieben
werden kann, sobald der entsprechende Bereich des Speichers 103 programmiert
ist. Des weiteren enthält
der Speicher 103 einen symmetrischen Verschlüsselungsschlüssel 103b,
der auch zum Signieren eines Teils einer Bootinformation verwendet
werden kann, die anfänglich
zum Initialisieren eines Computersystems mit der CPU 100 verwendet
wird. Es sollte beachtet werden, dass der Speicher 103 nicht
notwendigerweise einen zusammenhängenden
Speicherbereich repräsentiert,
wovon ein Teil den Datensatz 103 enthält und wovon ein Teil den Schlüssel 103b enthält, sondern
der Speicher kann auch in einer beliebigen Weise eingerichtet werden,
beispielsweise als im Wesentlichen in unabhängige Komponenten der CPU 100,
solange ein externer Zugriff auf den Datensatz 103a und
den Verschlüsselungsschlüssel 103b nach
einer gewissen Phase des Initialisierungsprozesses vermieden wird. Des
weiteren umfasst die CPU 100 einen Verriegelungsmechanismus 105,
der so ausgebildet ist, dass ein Zugriff durch den CPU-Kern 102 auf
den Speicher 103 oder zumindest auf den Schlüssel 103d nur
beim Einschalten oder bei einem Rücksetzereignis möglich ist,
während
der Speicher 103 verriegelt werden kann, durch einen entsprechenden
Befehl an den Verriegelungsmechanismus 105 während des
Bootvorganges nach dem Verifizieren zumindest eines Teil der Bootinformation.
Beispielsweise enthält
der Verriegelungsmechanismus 105 eine Schaltung zum Abschalten
der Versorgungsenergie für
den Speicher 103 und auch für den Mechanismus 105 selbst,
wodurch der Mechanismus 105 und auch der Speicher 103 nicht
mehr reagieren auf Zugriffe, die nach einer Anforderung zum „Verriegeln” des Speichers 103 oder
zumindest eines Teils davon, der den symmetrischen Verschlüsselungsschlüssel 103b enthält, ausgeführt werden.
Andererseits kann das Aktivieren des Speichers 103, beispielsweise
beim Zuführen von
Energie zum Verriegelungsmechanismus 105, mit einem Einschalten
oder mit einem Rücksetzereignis
verknüpft
sein. Es sollte jedoch beachtet werden, dass der Verriegelungsmechanismus 105 eine
beliebige andere Konfiguration besitzen kann, in der ein externer
Zugriff auf den Schlüssel 103b auf
einem Betriebsstatus der CPU 100 beschränkt ist, in welchem nach einem
Rücksetzen
oder einem Einschalten einer entsprechende Befehl zum Verriegeln
des Schlüssels 103 noch
nicht ausgeführt
ist.
-
Die
internen Komponenten der CPU 100, d. h. der Speicher 103,
der CPU-Kern 102, der interne RAM 101 und der
Verriegelungsmechanismus 105 sind mittels eines Bussystems 104 verbunden,
so dass beim Einschalten oder bei einem Rücksetzen ein Sprung zu einer
spezifizierten Adresse des Speichers 103 ausgeführt wird.
Folglich ist eine „fest
verdrahtete” Zieladresse
für einen
Rücksetzvektor
des CPU-Kerns 102 vorgesehen, der sicherstellt, dass die
Ausführung
der Befehle aus dem Speicher 103 heraus, zumindest beim
Einschalten oder beim Rücksetzen,
erfolgt.
-
Es
sollte beachtet werden, dass die CPU 100 auf der Grundlage
moderner Halbleiterfertigungstechniken hergestellt werden kann,
in denen ein geeignetes Trägermaterial,
etwa ein Halbleitersubstrat und dergleichen, mehrere Schaltungselemente
aufnimmt, die auf Basis einer betrachteten Technologie hergestellt
werden, etwa mittels CMOS-Prozessen und dergleichen, in welchem
Transistorelemente, Kondensatoren, Widerstände und dergleichen gemäß einer
speziellen Bauteilarchitektur für
die CPU 100 hergestellt werden. In den hierin dargestellten Ausführungsformen
werden daher die diversen Komponenten der CPU 100 auf einem
gemeinsamen Substrat während
eines gemeinsamen Fertigungsablaufs hergestellt, wodurch der Speicher 101 und
der Speicher 103 als interne oder integrale Komponenten
des Bauelements 100 bereitgestellt werden. Beispielsweise
sind entsprechende Fertigungstechniken gut etabliert, in denen flüchtige und
schnelle Speicherzellen zusammen mit nicht-flüchtigen Speicherzellen und
Hochleistungslogikgattern hergestellt wird, wie dies in dem CPU-Kern 102 erforderlich
ist. Ferner werden geeignete Mechanismen vorgesehen, so dass nach
dem Programmieren des Speichers 103 oder zumindest eines
Teils davon, der den Datensatz 103a und den symmetrischen
einzigartigen Schlüssel 103b enthält, ein
weiterer Zugriff verhindert wird, um damit eine geschützte Umgebung
für den Datensatz 103a und
den Schlüssel 103b zu
schaffen.
-
1b zeigt
schematisch ein Computersystem 150 mit der CPU 100,
die für
die geschützte
Umgebung für
den Datensatz 103a und den Verschlüsselungsschlüssel 103b sorgt,
wie dies zuvor erläutert ist,
wobei in der gezeigten Ausführungsform
die CPU 100 einen Speicher mit wahlfreiem Zugriff 101 in Form
eines Datencache-Speichers 101a und des Befehlscache-Speichers 101b aufweist,
die eine Größe von beispielsweise
64 kBytes aufweisen, um damit einen Teil der Bootinformation aufzunehmen
und als ein „System-RAM” zu dienen,
wenn Befehle des Datensatzes 103a ausgeführt werden
In ähnlicher
Weise wird der Befehlscache-Speicher 101b mit der Größen von
64 kByte vorgesehen, wobei zu beachten ist, dass auch eine andere
geeignete Speichergröße verwendet
werden kann, die mit der Große
eines entsprechenden Bereichs der Bootinformation kompatibel ist,
die aus dem Speicher 101 heraus während eines Verifizierungsprozesses
ausgeführt
wird. Auch der interne nicht-flüchtige
Speicher 103 kann mit einer geeigneten Größe und Konfiguration
vorgesehen werden, so dass diese mit den Erfordernissen für die Daten 103a und
den symmetrischen Schlüssel 103b verträglich sind.
Beispielsweise umfasst der Datensatz 103a Befehle und Datenwerte,
die eine sichere Einladeroutine zum Einladen eines entsprechenden Teils
einer Bootinformation in dem internen Speicher 101 zum
Ausführen
eines Verifizierungsprozesses repräsentieren.
-
Das
Computersystem 150 umfasst ferner einen Systemspeicher 110,
beispielsweise in Form eines beliebigen geeigneten Speichers mit
Speicherzellen mit wahlfreiem Zugriff, etwa dynamische RAM-Zellen
und dergleichen. Die Größe des Systemspeichers 110 ist
auf die Erfordernisse des Systems 150 im Hinblick auf Leistung
und Speicherkapazität
angepasst. Das System 150 umfasst ferner einen nicht-flüchtigen
Speicher 121, etwa einen Flash-Speicher und dergleichen,
der Information enthalten kann, die auch als BIOS-Information bezeichnet
wird, wovon zumindest ein Teil ein signierter Bereich ist, d. h.
ein signierter Bereich umfasst eine Signatur, die auf der Grundlage
eines geeigneten Prüfsummenalgorithmus
in Verbindung mit einem Verschlüsselungsmechanismus
unter Anwendung des symmetrischen Verschlüsselungsschlüssels 103b erhalten
wird, der in dem Speicher 103 abgelegt ist. In einer anschaulichen
Ausführungsform
enthält
der nicht-flüchtige Speicher 120 die
Bootinformation, die in zwei Bereiche aufgeteilt ist, wobei ein
erster Bereich Daten und Befehle zum Initialisieren anderer Systemkomponenten
aufweist, etwa den Systemspeicher 110 zum Aufnehmen des
zweiten Bereichs an Bootinformation und zum Ausführen des zweiten Bereichs,
sobald der erste Bereich auf der Grundlage der geschützten Umgebung,
die durch die CPU 100 geschaffen wird, verifiziert ist.
Der erste Bereich kann auch als Anfangsbootladeroutine (IBL) bezeichnet werden,
die den signierten Bereich der Bootinformation, die in dem Speicher 120 enthalten
ist, repräsentiert.
-
In
einigen anschaulichen Ausführungsformen
umfasst der nicht-flüchtige
Speicher 120 einen ersten Bereich 120a, der eine
erste BIOS-Version enthält,
auf die beim Initialisieren des Systems 150 zugegriffen
wird, und die als eine aktivierte Version an BIOS-Information, die
in dem Speicher 120 enthalten ist, bezeichnet ist. Ferner
ist ein zweiter Bereich 120b vorgesehen, der eine zweite
BIOS-Version enthält,
etwa eine aktualisierte Version, und die in dem nicht aktivierten
Zustand vorliegt, wodurch eine Validierung und das Erzeugen einer
Signatur auf der Grundlage des gespeicherten Schlüssels 103b während einer
Initialisierungsphase erforderlich ist, wie dies nachfolgend detaillierter
beschrieben ist. Folglich besitzt der Speicher 120 eine
ausreichende Kapazität,
um zumindest zwei BIOS-Versionen
aufzunehmen, wodurch die Möglichkeit
geschaffen wird, die BIOS-Information für das System 150 in
effizienter Weise zu aktualisieren, wobei dennoch eine erhöhte Sicherheit
für den
Aktualisierungsprozess erreich wird, wie dies nachfolgend beschrieben
ist.
-
Das
Computersystem 150 umfasst ferner ein Schnittstellensystem 140,
das ausgebildet ist, den Systemspeicher 110 und den nicht-flüchtigen
Speicher 120 funktionsmäßig mit
der CPU 100 zu verbinden. In einer anschaulichen Ausführungsform
umfasst das System 150 ferner einen einmalprogrammierbaren
Speicher 130, der plattformspezifische Informationen enthält, beispielsweise über Bootquellen und
zugeordnete Parameter. Beispielsweise enthält, wie gezeigt ist, der einmalprogrammierbare
Speicher 130 Informationen, die Bootoptionen betreffen,
um damit der CPU 100 anzuzeigen, ob die Initialisierung aus
dem internen Speicher 103 heraus oder nicht stattfindet.
Beispielsweise sind Sicherheitsbits in dem Speicher 130 vorgesehen,
die ein entsprechendes Bit enthalten, das bestimmt, von wo der erste
Befehl von der CPU 100 nach einem Rücksetz abgeholt wird. Beispielsweise
wird, wenn dieses Bit auf „1” gesetzt
ist, das Ausführen
an den internen Speicher 103 weitergeleitet, wodurch die
sichere Initialisierung aktiviert wird. Es sollte beachtet werden,
dass in anderen anschaulichen Ausführungsformen der einmalprogrammierbare
Speicher 130 weggelassen wird oder so vorgesehen wird,
dass er andere Informationen enthält, die die sichere Bootprozedur
während der
Entwicklung und tatsächliche
Anwendung steuern.
-
1c zeigt
schematisch den Aufbau der Bootinformation 121, die in
dem nicht-flüchtigen Speicher 120,
beispielsweise in einem der Bereiche 120a, 120b als
eine „aktivierte” Version
der darin enthaltenen Bootinformation gespeichert ist. In der in 1c gezeigten
Ausführungsform
enthält
die Bootinformation 121, die auch als BIOS bezeichnet wird, einen
ersten Bereich 121a, der einen Datensatz repräsentiert,
in welchem Befehle und Datenwerte mit einer Größe enthalten sind, wie dies
verträglich
ist mit der Größe des Speichers 101,
wie dies zuvor erläutert
ist. Beispielsweise ist für
die zuvor angegebenen beispielhaften Werte von 64 Kb für jeweils
die RAM-Bereiche 101a, 101b eine maximale Größe des Bereichs 121 auf
ungefähr
32 Kb beschränkt.
Es sollte jedoch beachtet werden, dass eine andere geeignete Größe für den Bereich 121a verwendet
werden kann, wobei dies von dem verfügbaren Speicherplatz innerhalb
des RAM's 101 abhängt. Es
sollte ferner bedacht werden, das Bereitstellen des Bereichs 121a für Bootinformation 121 erforderlich
ist, wie die Größe des Speichers 101 übersteigt,
da typische Bootroutinen eine Größe von mehreren
100 Kb-Bytes und mehr aufweisen. In anderen Fällen, wenn ausreichend Speicherplatz
in der CPU 100 verfügbar
ist, die Bootinformation 121 als Ganzes während der
sicheren Bootprozedur verwendet, wie dies nachfolgend detaillierter
erläutert
ist.
-
Wenn
somit der Bereich 121a vorgesehen ist, wie dies in 1c gezeigt
ist, dient dieser Bereich als eine Anfangs-BIOS-Lade-Routine (IBL)
für einen zweiten
Bereich 121b, wobei er erste Bereich 121a ebenfalls
einen Prüfsummenwert
enthält,
der über dem
Bereich 121b ermittelt wird. Der Prüfsummenwert für den Bereich 121b kann
ebenfalls durch eine Signatur geschützt sein, die in dem Bereich 121a enthalten
ist, wobei diese aus einem Prüfsummenwert ermittelt
wird, der über
den ersten Bereich 121a erzeugt wird, der mittels des Schlüssels 103b verschlüsselt ist.
Somit wird eine Ermittlung des Prüfsummenwertes des zweiten Bereiches
nicht mehr erforderlich. Die Signatur des Prüfsummenwertes für den Bereich 121a kann
verwendet werden, um den Bereich 121a während eines sicheren Bootablaufs
zu verifizieren. Der Bereich 121 kann daher in Befehlen enthalten
sein, um erforderliche Plattforminitialisierungsaktionen auszuführen, etwa
die Initialisierung einer Speichersteuerung 141 und dergleichen,
woran sich das Übertragen
des Bereichs 121b aus dem Speicher 120, d. h.
von einem der Bereiche 120a, 120b, in den initialisierten
Systemspeicher 110 anschließt. Somit können nach dem Speichern des
Bereichs 121a, 121b die entsprechenden Prüfsummenwerte
erzeugt dem Bereich 121a hinzugefügt werden, der dann für die Anfangsversion
der BIOS-Information 121 durch eine Version des symmetrischen Schlüssels 103b verschlüsselt wird.
Die entsprechende Signatur, die durch Anwenden des Schlüssels 103b erhalten
wird, kann dem Bereich 121a hinzugefügt werden, wie dies auf der
rechten Seite der 1c gezeigt ist.
-
1d zeigt
schematisch eine Sequenz zum Verifizieren der Signatur 121s,
die in dem Bereich 121a enthalten ist, was auf der Grundlage
des Datensatzes 103a und des Schlüssels 103b während des
Einschaltens oder des Rücksetzens
des Systems 150 ausgeführt
werden kann. Die Verifizierung kann auf der Grundlage eines geeigneten
Verschlüsselungsalgorithmus
bewerkstelligt werden, was unter Anwendung des symmetrischen Schlüssels 103b erfolgt,
wobei der anfänglich
erzeugte Prüfsummenwert,
etwa Prüfsumme
Null, über
den Bereich 121a erhalten wird, der entsprechende Prüfsummenwerte für den Bereich 121b enthält, zum
Erzeugen der Signatur 121s durch Anwenden des Schlüssels 103b verwendet
wird. Der anfänglich
erzeugte Prüfsummenwert
für den
Bereich 121a wird dann mit einem entsprechenden Prüfsummenwert
verglichen, der durch Anwenden des geeigneten Prüfsummenalgorithmus über den
Bereich 121a ermittelt wird, der in den RAM-Speicher 101 kopiert
ist. Der Bereich 121a wird als verifiziert betrachtet,
wenn eine Signatur, die durch Anwenden des Schlüssels 103b auf einen
berechneten Prüfsummenwert,
mit der Signatur 121s, die in dem Bereich 121a enthalten
ist, übereinstimmt.
-
Im
Hinblick auf das Einrichten des Systems 150 als eine sichere
Plattform ist eine statische Wurzel der Vertrauenswürdigkeit
einzurichten, um damit ein sicheres Hochlaufen eines Betriebssystems
nach dem Einschalten oder nach dem Zurücksetzen des Computersystems 150 zu
ermöglichen.
Zu diesem Zweck wird ein definiertes Ausführen vertrauenswürdigen BIOS-Information 121 erreicht,
indem zumindest der Bereich 121a auf der Grundlage des
vertrauenswürdigen
Datensatzes 130a und des Schlüssels 103b verifiziert
wird, die im Wesentlichen gegenüber einer
externen Manipulation immun sind. Somit wird bei jedem Aktivieren
des Systems 150 unter Anwendung eines sicheren Initialisierungsprozesses
Integrität
des gesamten Bootvorganges ermöglicht
und die vertrauenswürdige
Initialisierung eines Betriebssystems wird erreicht, das wiederum
zum Ausführen
sicherheitssensitiver Anwendungen verwendet wird. Wenn andererseits
die Integritätsprüfung nicht
bestanden wird, beispielsweise während
des Verifizierens der Bereiche 121a oder 121b,
wird eine geeignete Strategie angewendet, beispielsweise wird der Initialisierungsprozess
beendet oder von dem System 150 bereitgestellte Dienste
werden beschränkt. Somit
kann die hierin offenbarte sichere Bootarchitektur gegenüber „umfassenden
Manipulationen” schützen, die
als Angriffe verstanden werden, die gegen jedes Exemplar eines gegebenen
Sicherheitssystems wirksam sind. Beispielsweise kann eine Software,
die durch eine externe Quelle erzeugt wird, als ein umfassendes
Manipulationssoftwareelement betrachtet werden, das einfach installiert
werden kann und eine Umgehung und Sicherheitsmaßnahmen ermöglicht, wodurch eine nicht
autorisierte Verwendung der Plattform ermöglicht wird. In der Verwaltung
von digitalen Rechten (DRM) und entsprechenden Umgebungen liegt
eine umfassende Manipulation bereits vor, wenn die durch DRM geschützte Datei
ein mal unautorisiert geöffnet
wird, wodurch eine Neuverteilung der ungeschützten Datei möglich ist.
Somit bieten die hierin offenbarten Mechanismen und Systeme eine
erhöhte
Sicherheit im Hinblick auf umfassende Manipulationen, da eine geschützte Umgebung
auf der Grundlage eines integralen Teils innerhalb der CPU selbst
erhalten wird, wodurch eine Manipulation der CPU selbst erforderlich
wäre, und wobei
beispielsweise das Offenlegen des Schlüssels 103b lediglich
entsprechende CPU's
betrifft, in denen diese Version des Schlüssels 103 während des
Herstellungsprozesses eingebaut wurde, während andere Produkte, die
auf Basis eines anderen Schlüssels hergestellt
werden, weiterhin eine sichere Plattform bieten.
-
Im
Schritt 161 wird das System zurückgesetzt oder eingeschaltet
oder es tritt ein anderes Ereignis auf, das eine sichere Initialisierung
erfordert. Folglich wird ein geeigneter Selbsttest von dem CPU-Kern 102 ausgeführt und
entsprechende Komponenten, etwa Register und dergleichen, werden
initialisiert. Es sollte beachtet werden, dass in einigen Ausführungsformen
eine sichere Initialisierung nicht in einem Betriebszustand aktiviert
wird, in welchem das Betriebssystem die Steuerung über das
System 150 behält.
Im Schritt 162 wird der erste Befehl von dem internen nicht-flüchtigen
Speicher 103 abgeholt, was erreicht werden kann, indem
der interne Speicher 103 auf die entsprechende Rücksetzvektoradresse
abgebildet wird. Folglich beginnt die CPU 100 die Abarbeitung
auf der Grundlage des sicheren Datensatzes 103a in allen
Fällen,
in denen ein Sprung auf den Rücksetzvektor
durch ein externes Ereignis veranlasst wird. Im Schritt 163 wird
der interne Speicher mit wahlfreiem Zugriff 101 auf Grund
des Ausführens
der in dem Datensatz 103a enthaltenen Befehle initialisiert.
Im Schritt 164 wird zumindest ein Teil der Boot-Information 121,
beispielsweise der Bereich 121a mit der Signatur 121f in
den internen Speicher mit wahlfreiem Zugriff 101 eingeladen.
Wie zuvor erläutert
ist, wurde die Signatur 121s erzeugt, indem der symmetrische
Schlüssel 103b angewendet wurde.
Im Schritt 165 wird eine Signatur der Bootdaten in dem
Speicher 101, beispielsweise in dem Bereich 121a,
erzeugt, indem beispielsweise ein entsprechender Prüfsummenwert
berechnet wird, wie dies zuvor erläutert ist, und indem der Schlüssel 103b durch
Zugreifen auf den Speicher 103 angewendet wird.
-
Im
Schritt 166 wird die aktuell berechnete Signatur mit der
Signatur 121s verglichen und wenn beide Werte übereinstimmen,
geht der Prozessablauf zum Schritt 167 weiter, in welchem
der Bootprozess fortgesetzt wird, indem beispielsweise der Systemspeicher
initialisiert wird und der Rest der Bootinformation 121 verifiziert
wird. In der Verifizierungsphase im Schritt 166 wird der
Verschlüsselungsschlüssel 103b im
Schritt 168 verriegelt, indem beispielsweise ein entsprechender
Teil des Speichers 103 mittels des Verriegelungsmechanismus 105 deaktiviert
wird, wie dies zuvor erläutert
ist. Als nächstes
wird im Schritt 169 der Bootvorgang beendet, wobei etwa eine
Angabe enthalten sein kann, dass eine unzulässige BIOS-Information 121 in
dem internen Speicher 120 vorhanden ist.
-
1i zeigt schematisch eine Sequenz aus Schritten
zum Fortsetzen des Bootprozesses nach dem Schritt 167 in 1d.
Im Schritt 167a wird der Systemspeicher 110 initialisiert
und im Schritt 167b wird die BIOS-Information 121 oder
zumindest der Teil 121b in den Systemspeicher 110 eingeladen.
Im Schritt 167c wird die BIOS-Information 121 oder
zumindest der Bereich 121b in dem Systemspeicher 110 verifiziert,
beispielsweise durch Berechnen eines oder mehrerer entsprechender
Prüfsummenwerte und
Vergleichen der Werte mit den jeweiligen Prüfsummenwerten, die in dem Bereich 121a enthalten sind,
der im Schritt 166 aus 1d verifiziert
wurde. Im Schritt 167d verzweigt der Prozessablauf in den Schritt 167e,
wenn der verbleibende Bereich der Bootinformation nicht verifiziert
ist, oder in den Schritt 167f, wobei der Bootprozess fortgesetzt
wird, indem beispielsweise das Betriebssystems eingeladen wird, wie
dies zuvor erläutert
ist.
-
In
der zuvor beschriebenen Ausführungsform
führt vor
dem Übergeben
des Ausführens
an die Bootinformation 121 oder dem Bereich 121a der
sichere Bootprozess, d. h. der durch die Schritte 161 bis 166 repräsentierte
Prozessablauf, keine Rücksetzprozeduren
an Komponenten des Systems 150 aus, wodurch eine zuverlässige „Messung” der Hardwarekonfiguration
des Systems 150 ermöglicht
wird.
-
1f zeigt
schematisch ein Flussdiagramm, das die Funktionsweise des Systems 150 repräsentiert,
wenn eine Aktualisierung einer BIOS-Information möglich ist.
-
Im
Schritt 171 tritt ein Rücksetzereignis,
etwa ein Einschalten auf und der Prozessablauf geht zum Schritt 172 weiter,
in welchem bestimmt wird, ob die sichere Bootprozedur aktiviert
ist oder nicht. Wenn die sichere Bootprozedur nicht aktiviert ist,
was vorteilhaft sein kann während
des Testens und der Fehlersuche in dem System 150, wird
ein alternativer Prozessablauf initiiert. Wenn die sichere Bootprozedur
aktiviert ist, geht der Prozessablauf zum Schritt 173 weiter,
in welchem die Ausführung
der Befehle begonnen wird, indem auf dem nicht-flüchtigen
internen Speicher 103 zugegriffen wird und Befehle des Satzes 103a ausgeführt werden,
wie dies auch zuvor erläutert
ist. Im Schritt 174 wird die Integrität zumindest eines Teils der
Bootinformation, etwa des Bereichs 121a, geprüft, beispielsweise
in der gleichen Weise, wie dies zuvor mit Bezug zu dem Prozessablauf
in 1d beschrieben ist. Wenn die Integrität der Bootinformation 121 im
Schritt 174 nicht verifiziert wird, geht der Prozess zum
Schritt 175 weiter, in welchem der Schlüssel 103 verriegelt
wird und der Bootprozess wird beendet oder das Initialisieren wird
fortgesetzt, jedoch mit begrenzten Dienstleistungen, die von dem
System 150 bereitgestellt werden. Wenn im Schritt 174 die
Integrität
festgestellt wird, wird das Ausführen
von Befehlen der Bootinformation 121 im Schritt 176 gestartet.
Im Schritt 177 wird bestimmt, ob eine Aktualisierung der
BIOS-Information 121 erforderlich ist oder nicht. Zu diesem
Zweck wird beispielsweise auf den internen Speicher 110 zugegriffen,
um zu bestimmen, ob eine nicht-aktivierte
Version der BIOS-Information verfügbar ist oder nicht. Wenn eine
entsprechende Aktualisierung der BIOS-Information nicht erforderlich
ist, geht der Prozessablauf zum Schritt 178 weiter, in
welchem der Schlüssel 103b verriegelt
wird, wie dies zuvor erläutert
ist. Danach wird im Schritt 179 die Bootprozedur fortgesetzt,
wie dies zuvor erläutert
ist. Wenn im Schritt 177 die Aktualisierung der BIOS-Information 121 erforderlich
ist, geht der Prozessablauf zum Schritt 180 weiter, in
welchem die BIOS-Version, die in einem Speicherbereiche 120 oder 120b des nicht-flüchtigen
Speichers 120 enthalten ist, validiert wird. Zu diesem
Zweck wird ein beliebiger geeigneter Mechanismus eingesetzt, beispielsweise
unter Anwendung eines asymmetrischen Verschlüsselungsmechanismus, mit dem
beim Erzeugen der BIOS-Version entsprechende Prüfsummen berechnet wurden und
die nun mittels eines öffentlichen Schlüssels validiert
werden, der in der neuen BIOS-Information
enthalten sein kann. Wenn im Schritt 181 ein zulässige Version
der neuen BIOS-Information erkannt wird, wird eine Signatur erzeugt,
indem der Schlüssel 103b angewendet
wird, indem eine entsprechende Prüfsumme über den entsprechenden IBL-Bereich der neuen
BISO-Information berechnet wird, die dann durch Anwenden des Schlüssels 103b signiert
wird. Im Schritt 182 wird dann der Schlüssel 103b verriegelt,
wie dies zuvor erläutert
ist, und im Schritt 183 wird die im Schritt 181 erzeugte
Signatur der neuen BIOS-Information hinzugefügt, beispielsweise dem entsprechenden IBL-Bereich 121a,
wenn die BIOS-Information in mehreren Teilen bereitgestellt ist.
Im Schritt 184 wird die neue BISO-Information aktiviert,
d. h. es wird eine in dem nicht-flüchtigen Speicher 103 oder
in einer anderen geeigneten Speichereinrichtung abgelegt, dass die
neue BIOS-Version
eine BIOS-Information ist, die zum Ausführen des Bootvorganges zu verwenden
ist. Im Schritt 185 wird ein Rücksetzereignis erzeugt, so
dass der Prozessablauf zum Schritt 171 zurückgeht.
Folglich werden bei der Aktivierung der aktualisierten Version der
BIOS-Information
im Schritt 184 die Schritte 172 bis 177 auf
Grundlage der Aktualisierung der BIOS-Information wiederholt und die
Bootprozedur wird auf der Grundlage der neuen BIOS-Information ausgeführt.
-
1g zeigt
schematisch eine sichere Initialisierungsprozedur gemäß noch weiterer
anschaulicher Ausführungsformen.
Wie gezeigt, werden in den Schritten 181 und 182 Rücksetzereignisse
erkannt und es wird bestimmt, ob eine sichere Bootprozedur aktiviert
ist oder nicht, wie dies auch zuvor erläutert ist. Im Schritt 183 wird
ein Befehl aus den internen Datensatz 103a ausgeführt. Im
Schritt 184 findet eine CPU-interne Initialisierung statt.
In einigen anschaulichen Ausführungsformen
beinhaltet dies die Schritte 184a, ..., 184j.
Beispielsweise wird im Schritt 184a der Speicher 103 geeignet
zugeordnet. Im Schritt 184b wird eine Bootquelle erkannt
und im Schritt 184c initialisiert, woran sich das Initialisieren
des Datencache-Speichers 101a und des Befehlscache-Speichers 101b entsprechend
den Schritten 184d, 184e anschließt. Im Schritt 184f wird
ein „unechter” Modus
für den
Datencache-Speicher eingestellt und das Abbild der Bootinformation 121 für den Bereich 121a wird
in den Datencache-Speicher 101a kopiert, während im
Schritt 184h Speicherplatz für Variablen in den Datencache-Speicher 101a reserviert
wird. Bei Bedarf wird im Schritt 184i eine Herstellerkennung
abgerufen und im Schritt 184j wird eine entsprechende Verschlüsselungsmaschine
initialisiert. Danach wird im Schritt 185 die Prüfsumme über die
signierten BIOS-Daten 121a, d. h. die IBL, berechnet. Im
Schritt 186 wird der interne Verschlüsselungsschlüssel 103b auf
eine zuvor berechnete Prüfsumme angewendet,
um eine Signatur zu erzeugen. Im Schritt 187 wird die im
Schritt 186 bestimmte Signatur mit der Signatur verglichen,
die in der signierten BIOS-Information 121a enthalten ist.
Im Schritt 189 wird die Bootverarbeitung beendet, wenn die
signierte BIOS-Information
als eine unzulässige Information
erkannt wurde und der interne Schlüssel 103b wird im
Schritt 189 verriegelt. Im Schritt 188 wir das
Ausführen
der BIOS-Information gestartet, wenn eine zulässige Version der BIOS-Information
im Schritt 187 erkannt wurde. Im Schritt 190 wird
bestimmt, ob eine Aktualisierung der BIOS-Information erforderlich
ist. Wenn dies der Fall ist, wird im Schritt 191 die neue
BIOS-Information validiert, wie dies beispielsweise zuvor angegeben
ist, und im Schritt 192 wird entschieden, ob die neue BIOS-Information
eine zulässige
Information ist oder nicht. Wenn eine zulässige BIOS-Version im Schritt 192 erkannt
wird, wird im Schritt 193 eine Prüfsumme über die neue BIOS-Information
gebildet, d. h. einen entsprechenden Bereich davon, etwa einen IBL-Bereich, und im Schritt 194 wird
der interne Schlüssel 103d auf
die Prüfsumme
angewendet, um eine neue Signatur zu erzeugen. Im Schritt 195 wird
der interne Schlüssel, der
im Schritt 194 verwendet wird, verriegelt und im Schritt 196 wird
die neu erzeugte Signatur der neuen BIOS-Information hinzugefügt. Im Schritt 197 wird
die neue BIOS-Information
aktiviert, wie dies auch zuvor erläutert ist. Wenn im Schritt 192 die
neue BIOS-Information
als eine unzulässige
Information erkannt wird oder wenn im Schritt 190 des Aktualisierens
der BIOS-Information nicht erforderlich ist, geht der Prozessablauf
zum Schritt 198 weiter, in welchem der Schlüssel 103b verriegelt
wird. Danach geht die Bootprozedur im Schritt 199 weiter,
der in einigen anschaulichen Ausführungsformen die Initialisierung weiterer
Systemkomponenten des Systems 150 beinhaltet, etwa des
Systemspeichers 110 im Schritt 199a. Danach wird
im Schritt 199b die BIOS-Information, die zuvor aktiviert
wurde, in den Systemspeicher eingeladen und im Schritt 199c wird
die BIOS-Information verifiziert, beispielsweise durch Berechnen entsprechender
Prüfsummen
und Vergleichen der Prüfsummen
mit den Werten, die in der BIOS-Information enthalten sind, wie
dies zuvor erläutert
ist. Wenn im Schritt 199d die BIOS-Information als zulässige Information
erkannt wird, wird die Bootprozedur im Schritt 199 weitergeführt, beispielsweise
durch Ausführen
weiterer Schritte zum endgültigen
Einladen eines Betriebssystems. Wenn im Schritt 199d die BIOS-Information
als eine unzulässige
BIOS-Information erkannt wird, wird im Schritt 199f der
Bootvorgang abgebrochen und es wird eine Angabe ausgegeben und die
Dienst des Systems 150 können in einer beschränkten Form
aktiviert werden, wie dies auch zuvor erläutert ist.
-
Es
gilt also: Die Systeme und Mechanismen, wie sie hierin offenbart
sind, ergeben eine verbesserte Integrität von Computerplattformen zum
Bereitstellen eines sicheren Ablaufs auf der Grundlage einer Vorbootroutine,
die in einem nicht-flüchtigen
Speicher enthalten ist, und auf der Grundlage eines symmetrischen
Schlüssel.
Da der nicht-flüchtige
Speicher ein Teil der CPU selbst ist, wird die Systeminitialisierung
auf der Grundlage der in dem nicht-flüchtigen
internen Speicher gespeicherten Vorbootinformation bewerkstelligt,
und die Verifizierung der Bootinformation kann unter Anwendung des
symmetrischen Schlüssels
erfolgen. Somit kann eine erhöhte Sicherheit
der Plattform erreicht werden, ohne dass ein Vertrauenszentrum erforderlich
ist, wobei ein effizienter Schutz gegenüber umfassenden Manipulationen
erreicht wird, während
der Grad der Sicherheit auf Grundlage des Grades an Abdeckung des
symmetrischen Schlüssels
festgelegt ist, der in dem nicht flüchtigen Speicher während der
Herstellung des CPU-Bauelements eingebaut wird.
-
Weitere
Modifizierungen und Variationen der vorliegenden Offenbarung werden
für den
Fachmann angesichts dieser Beschreibung offenkundig. Daher ist diese
Beschreibung als lediglich anschaulich und für die Zwecke gedacht, dem Fachmann
die allgemeine Art und Weise des Ausführens der vorliegenden Erfindung
zu vermitteln. Selbstverständlich
sind die hierin gezeigten und beschriebenen Formen als die gegenwärtig bevorzugten
Ausführungsformen
zu betrachten.