-
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.
-
In der
WO 2006/086 301 A2 wird ein Verfahren zum Bereitstellen einer sicheren Boot-Architektur beschrieben, in dem Daten, insbesondere wenn eine Aktualisierung von Datensätzen dieser Daten erfolgt, auf der Grundlage eines öffentlichen Schlüssels authentifiziert werden.
-
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.
-
Es wird ein Verfahren zum Initialisieren eines Computersystems bereitgestellt, das die folgenden Schritte umfasst:
Zugreifen auf einen ersten Satz an Daten, der in einem nicht-flüchtigen Nur-Lese-Speicherbereich einer zentralen Recheneinheit gespeichert ist, wobei der erste Satz an Daten Befehle enthält, die eine Kernschaltung der zentralen Recheneinheit veranlassen, einen Speicher mit wahlfreiem Zugriff der zentralen Recheneinheit zu initialisieren;
Einladen eines Bildes eines zweiten Satzes an Daten, der eine BIOS-Laderoutine bereitstellt, aus einem nicht-flüchtigen Speicher in den initialisierten Speicher mit wahlfreiem Zugriff und einer Signatur zum Verifizieren der Integrität des zweiten Satzes an Daten, und wobei der zweite Satz an Daten ferner zweite Befehle enthält, die die zentrale Recheneinheit veranlassen, einen Systemspeicher des Computersystems zu initialisieren und einen Satz an BIOS-Daten in den initialisierten Systemspeicher zu laden;
Verifizieren der Integrität des zweiten Satzes an Daten unter Verwendung der Signatur und eines Verschlüsselungsschlüssels, der in dem ersten Satz an Daten enthalten ist;
Initialisieren des Systemspeichers unter Verwendung der zweiten Befehle, wenn die Verifizierung des zweiten Satzes an Daten erfolgreich ist;
Einladen des Satzes an BIOS-Daten aus dem nicht-flüchtigen Speicher in den Systemspeicher und Verifizieren einer Integrität des Satzes an BIOS-Daten; und
Verriegeln des nicht-flüchtigen Nur-Lese-Speicherbereichs nach dem Verifizieren.
-
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
-
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 Plattformmessung 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 103b 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öße von 64 kByte vorgesehen, wobei zu beachten ist, dass auch eine andere geeignete Speichergröße verwendet werden kann, die mit der Größ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 120, 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 nichtflü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ücksetzen 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 121a 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, dass das Bereitstellen des Bereichs 121a für eine Bootinformation 121, die die Größe des Speichers 101 übersteigt, sodass nicht die gesamte Bootprozedur auf der Grundlage des Speichers 101 ausgeführt werden kann, erforderlich sein kann, da typische Bootroutinen eine Größe von mehreren 100 Kb-Bytes und mehr aufweisen können. 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 Verschlüsselung 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 121a 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 0, ü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 einmal 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 121s 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.
-
1e 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 103b 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 120a 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 BIOS-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 BIOS-Information aktiviert, d. h. es wird eine Angabe 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 wird 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 103b 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 199e 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 Dienste 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üssels. Da der nicht-flüchtige Speicher ein Teil der CPU selbst ist, wird die Systeminitialisierung auf der Grundlage der in dem nichtflü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.