-
Gebiet der vorliegenden Offenbarung
-
Die vorliegende Offenbarung betrifft allgemein das Gebiet der Computersysteme mit hoher Integrität und entsprechenden darin implementierten Mechanismen, die das Vorsehen verbesserter Sicherheitsstandard ermöglichen, wodurch die Effizienz von Anwendungen verbessert wird, die eine sichere Computerplattform erfordern.
-
Beschreibung des Stands der Technik
-
Die vielfältige Verwendung von Computersystemen führte zu einer deutlichen Zunahme der Informationsverarbeitung auf der Grundlage elektronischer Computersysteme, wodurch sehr große Mengen an digitalen Daten erzeugt, verteilt und verarbeitet werden. Mit den zunehmenden Möglichkeiten der Computersysteme im Hinblick auf die Datenspeicherkapazität und die erhöhte Verarbeitungsgeschwindigkeit ist die Reproduzierung großer Datensätze, etwa von Audio-Daten, Kinofilmen und dergleichen für eine immer größere Anzahl an Personen zugänglich, und wird häufig trotz vorhandener Schutzrechte ausgeführt, die mit vielen der in elektronischer Form bereitgestellten Daten verknüpft sind. Somit wird ein deutlicher wirtschaftlicher Schaden durch das illegale Kopieren, Speichern und Neuverteilen von elektronischen Daten hervorgerufen. Ferner ergibt die Möglichkeit der Verteilung von Programmen über weitreichende Netzwerke, etwa das Internet, die Möglichkeit, Schadstoffsoftwareanwendungen zu verteilen, die wiederum zum Manipulieren von Daten und/oder zum Manipulieren der Konfiguration einer entsprechenden Computerplattform verwendet werden können. Beispielsweise wird ein großer Schaden in privaten Haushalten und insbesondere in der Industrie hervorgerufen, indem Softwareanwendungen eingeführt werden, die beispielsweise Softwaredateien, etwa gespeicherte Daten, manipulieren, Informationen über das Internet ohne Wissen des eigentlichen Nutzers der Plattform übertragen, einen Angriff zur Verweigerung von Dienstleistungen beginnen, wodurch möglicherweise die Plattform nicht mehr nutzbar ist für eine zugeordnete Anwendung, die einen speziellen Status der Plattform erfordert.
-
Aus diesen Gründen werden große Anstrengungen unternommen, um Mechanismen zur Verbesserung der Integrität der Computerplattformen zu entwickeln, um die Wahrscheinlichkeit für „erfolgreiche” externe Angriffe, beispielsweise in Form von Schadsoftware der Verweigerung von Dienstleistungen, ausspionieren, eindringen und dergleichen zu verringern, und um auch 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 Widerstand gegenüber Datenmanipulation durch eine dritte Partei während des Übertragens und der Speicherung der Daten ermöglichen. Beispielsweise wird bei asymmetrischen Verschlüsselungsverfahren ein Paar aus einem privaten Schlüssel und einem öffentlichen Schlüssel zum Verschlüsseln von Daten mittels eines der Schlüssel verwendet, und das Entschlüsseln der Daten wird durch die Verwendung des anderen Schlüssels bewerkstelligt, wobei einer der Schlüssel öffentlich zugänglich ist. Obwohl diese Verfahren für eine bessere Integrität bei der Datenkommunikation und Datenspeicherung sorgen, birgt die eigentliche Konfiguration einer betrachteten Computerplattform dennoch die Möglichkeit einer Vielzahl von Angriffen, insbesondere da viele Anwendungen, die zur Steigerung der Computersicherheit gedacht sind, sich auf eine vertrauenswürdige Plattformkonfiguration verlassen.
-
In der
WO 2006/086301 A1 wird eine Sicherheits-Boot-Architektur beschrieben, die eine Atomarer-Zustand-Maschine umfasst, die dazu ausgebildet ist, einen Bootmodus-/Bootmodus-Upgrade-Mechanismus zu implementieren, wobei die Implementation eine Authentifizierung eines in einem nicht-flüchtigen Speicher gespeicherten Bootmodus-Codes umfasst.
-
Eine vertrauenswürdige Computerplattform kann als ein Computersystem betrachtet werden, in welchem die Hardwareanordnung und auch die Softwareanwendungen als in einem vordefinierten Konfigurationszustand vorliegend erachtet werden. Jedoch kann eine sichere Plattformkonfiguration nur eingerichtet werden, indem eine „Kette” aus vertrauenswürdigen Plattformebenen etabliert wird, wobei jede nachfolgende Ebene durch die vorhergehende Ebene nur dann initialisiert wird, wenn die Integrität der nachfolgende Ebene verifiziert ist. Somit kann die Integrität auf Systemebene mittels einer Kette aus Integritätsverifizierungen beibehalten werden, wobei eine Wurzel der Kette aus Verifizierungsschritten mit einem hohen Maß an Manipuliersicherheit vorzusehen ist, um damit ein hohes Zutrauen im Hinblick auf die Integrität des Systems nach der Initialisierung der obersten Ebene, d. h. der Ebene der Benutzeranwendungen, zu erreichen.
-
In einer typischen Computerplattform erfordert das Initialisieren des Systems diverse Stufen 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 Anwenderprogrammen. Somit ist es im Hinblick auf das Verbessern der Gesamtintegrität des Gesamtsystems nicht ausreichend anzunehmen, dass die diversen Systemaktivitäten vor dem Einladen des Betriebssystems als sicher erachtet werden können, um damit sich auf die Integrität des Betriebsystems und der Anwenderanwendung zu verlassen, da das Betriebssystem durch einen „nicht vertrauensvollen” Prozess aufgerufen werden kann, wodurch die Möglichkeit des Manipulierens der grundlegenden Plattformkonfiguration durch Modifizieren der Hardware und Softwarekomponenten besteht. 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 gespeichert sind, was auch als Hochlaufen bzw. Initialisieren oder Booten bezeichnet wird, in die Kette der Vertrauenswürdigkeit mit eingeschlossen werden, um damit die Gesamtsystemintegrität zu verbessern.
-
Eine typische Anlaufsequenz zum Initialisieren eines Computersystems nach dem Einschalten oder nach dem Auftreten eines Rücksetzereignisses bewirkt einen „Einschaltselbsttest” der CPU, wobei auch der Prozessor beginnt, Befehle an einer zugeordneten Einsprungadresse abzuarbeiten, die durch den Rücksetzvektor bzw. Reset-Vektor des Prozessors angegeben ist. D. h., nach einem anfänglichen Prozessorselbsttest wird die Ausführung der Befehle an dem Einsprungpunkt begonnen, der typischerweise eine Adresse einer Softwareroutine ist, die häufig auch als BIOS (Basis-Eingabe/Ausgabe-System) bezeichnet wird, das in einen speziellen externen nicht-flüchtigen Speicher der Computerplattform gespeichert ist. Unter der Steuerung des BIOS wird der restliche Selbsttest ausgeführt und die Hardwarekonfiguration der Plattform wird bestimmt oder „gemessen”. Danach wird eine Suche nach einem bootfähigen Gerät ausgeführt, etwa einer Massenspeichereinrichtung, beispielsweise die Festplatte des Computersystems, eine Diskette, eine CD-ROM, eine Erweiterungskarte und dergleichen, von der aus ein primärer Bootblock bzw. Initialisierungsblock in den Systemspeicher eingeladen wird, wobei die Steuerung dann auf den primären Bootblock übertragen wird, der ein Betriebssystem in den Systemspeicher einladen kann.
-
Obwohl auch große Anstrengungen unternommen wurden, um die Sicherheit des gesamten Initialisierungsprozesses zu verbessern, ist es schwierig, eine zuverlässige Basis des Vertrauens für die Messung (CRTM) für den Anlaufprozess, beispielsweise im Hinblick auf Plattformmodifizierungen, etwa das Austauschen des nicht-flüchtigen Speicherchips mit der BIOS-Software, vorzusehen, da ein entsprechendes Austauschen von Chips die Kette der Vertrauenswürdigkeit unterbrechen kann, wodurch auch nachfolgende Verifizierungsschritte als nicht vertrauenswürdig erscheinen.
-
Im Hinblick auf die zuvor beschriebene Situation betrifft die vorliegende Offenbarung Einrichtungen und Verfahren zum Verbessern der Integrität von Computersystemen, wobei eines oder mehrere der oben 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, in denen eine statische Basis oder Wurzel der Vertrauenswürdigkeit für die Messung eingerichtet wird, indem ein gewisser Datensatz vorgesehen wird, der ausführbare Befehle und Datenwerte enthält, auf die von dem Mikroprozessor beim Anlaufen in jedem Falle zugegriffen wird, ohne dass die Möglichkeit besteht, den Zugriff auf den speziellen Datensatz zu umgehen, so dass eine definierte Basis für das Initialisieren der Plattform erreicht wird. Ferner ist der Datensatz so eingerichtet, dass ein hohes Maß an Widerstandsfähigkeit gegenüber Angriffen für die Manipulation erreicht wird. Während des Ausführens der in dem Datensatz enthaltenen Befehle kann die entsprechende Routine nicht geändert oder unterbrochen werden, wodurch ein hohes Maß an Integrität des Datensatzes erreicht wird, der somit als ein dem Initialisieren bzw. Booten vorgeordneter Satz aus Befehlen und Datenwerten betrachtet werden kann. Da die Verarbeitung entsprechender Befehle der dem Booten vorgeordneten Daten beim Einschalten des betrachteten Systems obligatorisch ist, wird eine Kette aus vertrauenswürdiger Software begonnen, wodurch das Einrichten eines hohen Grades an Systemintegrität ermöglicht wird, da der spezielle Satz aus dem Booten vorgeordneten Daten den statischen Kern für die Kette nachfolgender Verifizierungsschritte repräsentiert. Zu diesem Zweck wird der dem Booten vorgeordnete Datensatz in einem nicht-flüchtigen Speicher in dem CPU-Kern selbst aufbewahrt, wodurch Angriffe im Hinblick auf das Ersetzen von BIOS-Chips und dergleichen im Wesentlichen vermieden werden.
-
Es wird ein Verfahren zum Initialisieren eines Computersystems bereitgestellt, wobei das Verfahren die nacheinander ausgeführten 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 Entschlü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; und
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.
-
In einem weiteren anschaulichen hierin offenbarten Aspekt ist die zuvor beschriebene zentrale Recheneinheit ein Teil eines Computersystems, das zusätzlich zu der CPU, einen Systemspeicher vor eine Speichereinrichtung mit der Bootroutine und ein Schnittstellensystem zum Verbinden des Systemsspeichers und der Speichereinrichtung, die die Bootroutine enthält, mit der CPU aufweist.
-
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), einen CPU-Kern und einen nicht-flüchtigen Speicher mit dem Booten bzw. Initialisieren vorgeordneten Informationen gemäß anschaulicher Ausführungsformen enthält;
-
1b schematisch ein Computersystem mit einer CPU mit interner dem Booten vorgeordneter Information gemäß noch weiterer anschaulicher Ausführungsformen zeigt;
-
1c schematisch Prozessschritte zum Manipulieren von Initialisierungsdaten mit Befehlen und Datenwerten während eines Prozesses zum Erzeugen einer Signatur eines ersten Teils der Bootinformation gemäß anschaulicher Ausführungsformen zeigen;
-
1d schematisch einen Prozess zum Verifizieren einer Signatur eines Teils der Bootinformation gemäß anschaulicher Ausführungsformen zeigt;
-
1e schematisch ein Flussdiagramm zum Beschreiben des Betriebs des Computersystems, wie es in 1b gezeigt ist, gemäß einer anschaulichen Ausführungsform zeigt; und
-
1f schematisch ein Flussdiagramm darstellt, das die Funktionsweise eines Computersystems mit einer CPU, etwa der CPU aus 1a, gemäß noch weiterer anschaulicher Ausführungsformen beschreibt.
-
Detaillierte Beschreibung
-
Im Allgemeinen stellt die vorliegende Offenbarung ein System und einen Mechanismus zum Ausführen von Befehlen und zum Verwenden von Daten, die in einem nicht-flüchtigen Speicher enthalten sind, der einen Teil einer zentralen Recheneinheit darstellt, wobei dies beim Initialisieren oder beim Zurücksetzen oder eines anderen Betriebszustands, der eine Initialisierung des Systems erfordert, stattfindet, wodurch die Möglichkeit der Manipulierung des Datensatzes, der in dem nicht-flüchtigen Speicher enthalten ist, deutlich reduziert wird. Somit kann der Inhalt des nicht-flüchtigen Speichers als eine statische Basis der Vertrauenswürdigkeit für das Messen während der Initialisierung der CPU und des gesamten Computersystems verwendet werden, indem sichergestellt wird, dass beim Einschalten oder einem Rücksetzereignis die CPU den ersten Befehl aus dem nicht-flüchtigen Speicher abholt. Somit kann der darin enthaltene Datensatz als eine Vorinitialisierungs- bzw. Vorboot oder dem BIOS vorgeordnete Komponente betrachtet werden, die die Initialisierung weiterer Systemkomponenten ermöglicht, etwa eines internen Speichers mit wahlfreiem Zugriff, der zum Speichern von Operationsdaten, etwa von Variablen und dem Stapel, und von Befehlen für das Abarbeiten eines Teils der BIOS-Software verwendet werden kann. Beispielsweise wird der Datencache als Teil des Speicherbereichs mit wahlfreiem Zugriff und ein Befehlscache durch die dem Booten vorgeordneten Daten des internen nicht-flüchtigen Speichers initialisiert, wodurch im Wesentlichen die Möglichkeit eines externen Zugriffes auf Daten, die darin enthalten sind, während des Initialisierungsvorganges verhindert wird. D. h., der Speicherbereich mit wahlfreiem Zugriff, d. h. der Datencache und der Befehlscache sind CPU-interne Komponenten und ein unerwünschtes Manipulieren ist äußerst schwierig, insbesondere da der externe Systemspeicher während dieser Phase noch nicht initialisiert ist. Abhängig von der Speicherkapazität des Speichers mit wahlfreiem Zugriff kann die BIOS-Routine in zwei oder mehr Bereiche aufgeteilt werden, so dass die Verifizierung einer oder mehrerer Signaturen im Hinblick auf die BIOS-Integrität im Speicher mit wahlfreiem Zugriff für den ersten Teil ausgeführt wird, der so ausgebildet ist, dass eine Größe entsprechende dem Befehlscache aufweist. Somit kann dieser Teil der Bootinformation nach dessen Verifizierung direkt aus dem Speicher mit wahlfreiem Zugriff heraus ausgeführt werden. Folglich kann während des Initialisierens des Speichers mit wahlfreiem Zugriff und dem Einladen des Bereichs der Bootinformation durch Ausführen der dem Booten vorgeordneten Befehle die dem Booten vorgeordnete Information nicht durch externe Mittel abgerufen werden, wodurch eine Manipulation des ersten Signaturverifizierungsprozesses im Wesentlichen vermieden ist. In einigen anschaulichen Ausführungsformen wird auf die Vorbootinformation nach der Verifizierung der Signatur mittels einer externen Anwendung zugegriffen, beispielsweise für das Zugreifen auf Entschlüsselungsschlüssel zum Bewerten der Integrität von BIOS-Aktualisierungsversionen und dergleichen.
-
Folglich kann nach der Verifizierung der Signatur des ersten Bereichs die Bootinformation die Ablaufsteuerung diesem Bereich übertragen und die weitere Bootverarbeitung kann fortgesetzt werden, indem der Systemspeicher initialisiert wird und die verbleibende Bootinformation kopiert wird, wobei auch die Integrität des weiteren Bereichs der Bootinformation verifiziert wird. Folglich können die Daten, d. h. die Befehle und Datenwerte, die in dem nicht-flüchtigen Speicher, der als ein integraler Teil der CPU vorgesehen ist, enthalten sind, als eine statische Wurzel bzw. Basis der Vertrauenswürdigkeit für die Messung verwendet werden, wodurch eine Computerplattform bereitgestellt wird, in der im Hinblick auf Manipulationsversuche widerstandsfähige Hardware- und Software-Konfiguration erreicht wird. Insbesondere im Hinblick auf Angriffe, etwa das Austauschen des BIOS-Chips, bieten die hierin offenbarten Ausführungsformen erhöhte Sicherheit für typische praktische Anwendungen, die die Plattform im Zusammenhang mit finanziellen Transaktionen oder der digitalen Rechteverwaltung verwenden, die auf dem Erfordernis einer vertrauenswürdigen Computerplattform basieren.
-
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 Basis an Vertrauenswürdigkeit für die Messung (CRTM) mit einem hohen Grad an Manipulationssicherheit eingerichtet ist. Die CPU 100 umfasst einen CPU-Kern 102, der Komponenten für die Datenverarbeitung enthält, etwa zum Ausführen arithmetischer Operationen, Logikoperationen und dergleichen. 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 mit der Gesamtkonfiguration der CPU 100 kompatibel ist. In einer anschaulichen Ausführungsform umfasst der RAM 101 einen ersten Speicherbereich, der auch als Datencache 101a bezeichnet ist, und einen zweiten Bereich, der als Befehlscache 101b bezeichnet ist. Beispielsweise kann der RAM 101 in einer schnellen Speichertechnologie aufgebaut sein, um damit das Gesamtleistungsverhalten der CPU 100 zu verbessern, wie dies typischerweise in anspruchsvollen integrierten Schaltungen erforderlich ist. Es sollte jedoch beachtet werden, dass eine beliebige geeignete Speichertechnologie für den Speicher 101 verwendet werden kann, sofern die direkte Steuerung des Speichers 101 über den CPU-Kern 102 ohne Möglichkeit eines externen Zugriffes während der Initialisierung der CPU 100 verwirklicht ist.
-
Des weiteren umfasst die CPU 100 einen nicht-flüchtigen Speicher 103, der in einer geeigneten Speichertechnologie bereitgestellt wird, beispielsweise in Form eines Flash-Speichers oder einer anderen Nur-Lese-Speichertechnologie, 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 Basis der Vertrauenswürdigkeit repräsentiert. Zu diesem Zweck ist ein Satz aus Daten 103a, die zu verstehen sind als Befehle, die von dem CPU-Kern 102 ausführbar sind, und Datenwerte, die Operanden und dergleichen der Befehle repräsentieren, in mindestens einem Teil des Speichers 103 vorgesehen, der nicht mit neuen Daten überschrieben werden kann, sobald der entsprechende Teil des Speichers 103 programmiert ist. Der Speicher 103 mit dem Satz aus Daten 103a ist mit dem CPU-Kern 102 mittels eines Bussystems 104 verbunden, so dass beim Einschalten oder eines Zurücksetzereignisses ein Sprung zu einer spezifizierten Adresse des Speichers 103 ausgeführt wird. Folglich ist ein „fest verdrahtetes” Ziel für einen Rücksetzvektor des CPU-Kerns 102 vorgesehen, der sicherstellt, dass das Ausführen der Befehle aus dem sicheren Speicher 103 heraus erfolgt zumindest beim Einschalten oder bei einem Rücksetzereignis.
-
Es sollte beachtet werden, dass die CPU 100 auf der Grundlage moderner Halbleiterfertigungsverfahren hergestellt werden kann, in denen ein geeignetes Trägermaterial, etwa ein Halbleitersubstrat und dergleichen, mehrere Schaltungselemente erhält, die auf Grundlage der betrachteten Technologie hergestellt werden, etwa durch CMOS-Prozesse und dergleichen, in denen Transistorelemente, Kondensatoren, Widerstände und dergleichen gemäß einer speziellen Bauteilarchitektur für die CPU 100 aufgebaut werden. In der dargestellten Ausführungsform sind daher diverse Komponenten der CPU 100 auf einem gemeinsamen Substrat während eines gemeinsamen Fertigungsablaufs aufgebaut, wodurch die Speicher 101 und 103 als interne oder integrale Komponenten des Bauelements 100 vorgesehen sind. Beispielsweise sind entsprechende Fertigungstechniken gut etabliert, in denen flüchtige und schnelle Speicherzellen zusammen mit nicht-flüchtigen Speicherzellen und Hochleistungslogikgattern aufgebaut werden, wie sie in dem CPU-Kern 102 erforderlich sind. Des weiteren werden geeignete Mechanismen vorgesehen, so dass nach dem Programmieren des Speichers 103 oder zumindest eines Teils davon, der den Satz aus Daten 103a enthält, ein weiterer Zugriff zum Ändern von Datenbits verhindert wird, um damit eine geschützte Umgebung für den Datensatz 103a zu schaffen.
-
1b zeigt schematisch ein Computersystem 150 mit der CPU 100, die für die geschützte Umgebung für den Satz aus Daten 103a sorgt, wie dies zuvor erläutert ist, wobei in der gezeigten Ausführungsform die CPU 100 den Speicher mit wahlfreiem Zugriff 101 in Form des Datencachespeichers 101a und des Befehls-Cache-Speichers 101b aufweist, die eine Größe von beispielsweise 64 kB aufweisen, um damit einen Teil der Bootinformation aufzunehmen und als ein „System-RAM” zu dienen, wenn die Befehle des Datensatzes 103a ausgeführt werden. In ähnlicher Weise wird der Befehlscache-Speicher 101b mit einer Größe von 64 kB vorgesehen, wobei zu beachten ist, dass eine beliebige andere geeignete Speichergröße eingesetzt werden kann, die mit der Größe eines entsprechenden Teils an Bootinformation kompatibel ist, der von dem Speicher aus 101 während eines Verifizierungsprozesses aus auszuführen ist. In ähnlicher Weise wird der interne nicht-flüchtige Speicher 103 mit einer geeigneten Größe, beispielsweise 32 kB vorgesehen, um mit den Erfordernissen für die Daten 103a, die die Basis der Vertrauenswürdigkeit für die Messung für das Computersystem 150 repräsentieren, verträglich zu sein. Beispielsweise weist der Satz aus Daten 103a Befehle und Datenwerte auf, die eine sichere Einladeroutine für das Einladen eines entsprechenden Teils der Bootinformation in den internen Speicher 101 zum Ausführen eines Verifizierungsprozesses repräsentieren. Des weiteren kann der Datensatz 103a einen oder mehrere Entschlüsselungsschlüssel aufweisen, die öffentliche Schlüssel eines asymmetrischen Verschlüsselungs/Entschlüsselungsalgorithmus repräsentieren, um damit möglich zu machen, dass ein signierter Bereich der Bootinformation in dem Speicher 101 verifiziert wird. Es sollte beachtet werden, dass die Anzahl öffentlicher Schlüssel in den Datensatz 103a entsprechend den Sicherheitsrichtlinien ausgewählt werden kann, beispielsweise im Hinblick auf Unterhalten einer geeigneten Infrastruktur zum Bereitstellen entsprechender Schlüsselpaare mit einem hohen Maß an Integrität und dergleichen.
-
Das Computersystem 150 umfasst ferner einen Systemspeicher 110, beispielsweise in Form eines beliebigen geeigneten Speicherbauelements mit Speicherzellen mit wahlfreiem Zugriff, etwa dynamische RAM-Zellen und dergleichen. Die Größe des Systemspeichers 110 kann auf die Erfordernisse des Systems 150 im Hinblick auf Leistungsfähigkeit und Speicherkapazität angepasst werden. Das System 150 umfasst ferner einen nichtflüchtigen Speicher 120, etwa einen Flash-Speicher und dergleichen, der Information enthält, die als BIOS-Information bezeichnet wird, wovon zumindest ein Teil davon als ein signierter Bereich vorhanden ist, d. h. der signierte Bereich umfasst eine Signatur, die auf der Grundlage eines geeigneten Prüfsummenalgorithmus in Verbindung mit einem Verschlüsselungsmechanismus erhalten wird, für die ein oder mehrere geeignete Entschlüsselungsschlüssel in dem Satz aus Daten 103a vorhanden sind, wie dies zuvor erläutert ist.
-
In einer anschaulichen Ausführungsform enthält der nicht-flüchtige Speicher 120 die Bootinformation, die in zwei Bereiche unterteilt ist, wobei ein erster Bereich Daten und Befehle zum Initialisieren anderer Systemkomponenten, etwa des Systemsspeichers 110 aufweist, um den zweiten Bereich an Bootinformation aufzunehmen und den zweiten Bereich auszuführen, sobald der erste Bereich auf der Grundlage der durch die CPU 100 bereitgestellten gesicherten Umgebung verifiziert ist. Eine detailliertere Konfiguration der Bootinformation innerhalb des nicht-flüchtigen Speichers 120 wird nachfolgend mit Bezug zu den 1c und 1d beschrieben.
-
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 einmal programmierbaren Speicher 130, der plattformspezifische Informationen aufweist, beispielsweise über Bootquellen und entsprechende Parameter. Wie beispielsweise gezeigt ist, kann der einmal programmierbare Speicher 130 Information aufweisen, die Bootoptionen betreffen, um damit der CPU 100 anzuzeigen, ob diese aus dem internen Speicher 103 heraus zu initialisieren ist oder nicht. Ferner können in dem Speicher 130 vorhandenen Sicherheitsbits ein entsprechendes Bit aufweisen, das festlegt, wohin die erste Befehlsabfrage der CPU 100 nach dem Zurücksetzen zu leiten ist. Wenn beispielsweise dieses Bit auf „1” gesetzt ist, wird die Ausführung an den internen Speicher 103 abgegeben, wodurch eine sichere Boot-Verarbeitung möglich ist. In einigen Fällen ist es wünschenswert, die sichere Bootfunktion für Entwicklungszwecke/Fehlererkennungszwecke zu deaktivieren. In anderen Fällen ist es abhängig von den Plattformerfordernissen auch wünschenswert, vertrauenswürdige Plattformsicherheitsmerkmale zu deaktivieren oder zu umgehen. In diesem Falle ist eine Änderung des Zustands dieses Bits während des sicheren Bootablaufs nicht zulässig. Zu diesem Zweck werden alle Früherkennungsmodi (JTAG, ...) zumindest während des Initialisierens deaktiviert. Nach dem Deaktivieren entsprechender Fehlererkennungsmodi wird die Ausführung des sicheren Bootprozesses ausgeführt, wie dies nachfolgend detaillierter beschrieben ist. In ähnlicher Weise kann der Speicher 130 ein Bit aufweisen, um Fehlererkennungsmerkmale während des sicheren Bootprozesses zu steuern, was während gewisser Entwicklungsphasen vorteilhaft sein kann, während für die Produktion eine entsprechende Steuerung von Fehlerkennungsmerkmalen deaktiviert wird. Zusätzlich zu diesen Sicherheitsbits kann der Speicher 130 andere Informationen aufweisen, etwa die Kennung des Herstellers oder eine einzigartige Zahl, die für Anwendungen in digitalen Rechteverwaltungsroutine und dergleichen verwendbar ist. Es sollte beachtet werden, dass in anderen anschaulichen Ausführungsformen der einmal programmierbare Speicher 130 weggelassen werden kann oder so vorgesehen wird, dass dieser andere Information enthält, die einen sicheren Initialisierungsprozess während der Entwicklung und der eigentlichen Anwendung steuert.
-
1c zeigt schematisch die Struktur der Bootinformation 121, die in dem nicht-flüchtigen Speicher 120 enthalten ist. In der in 1c gezeigten Ausführungsform enthält die Bootinformation 121, die auch als BIOS bezeichnet wird, einen ersten Teil 121a, der einen Satz aus Daten mit Befehlen und Datenwerten mit einer Größe repräsentiert, die mit der Größe des Speichers 101 kompatibel ist, wie dies zuvor erläutert ist. Beispielsweise wird für die oben angegebenen beispielhaften Werte für 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 beliebige andere geeignete Größe des Teils 121a vorgesehen werden kann in Abhängigkeit des verfügbaren Speicheranteils innerhalb des RAM 101. Es sollte ferner beachtet werden, dass das Vorsehen des Teils 121a für Bootinformation 121 erforderlich ist, die die Größe des Speichers 101 überschreitet, so dass die gesamte Bootverarbeitung nicht auf Grundlage des Speichers 101 ausgeführt werden kann, da typischerweise Bootroutinen eine Größe von mehreren 100 kB oder mehr aufweisen. In anderen Fällen kann, wenn ausreichend Speicherplatz verfügbar ist, die Bootinformation 121 als Ganzes während der sicheren Bootverarbeitung verwendet werden, wie dies nachfolgend detaillierter erläutert ist.
-
Wenn somit der Teil 121a vorgesehen ist, wie dies in 1c gezeigt ist, kann dieser als anfängliche BIOS-„Laderoutine” für einen zweiten Teil 121b betrachtet werden, wobei der erste Teil 121a darin eine Prüfsumme aufweist, die über dem Bereich 121b hinweg erhalten wurde. Die Prüfsumme für den Teil 121b kann auch durch die Signatur geschützt werden, die in dem Teil 121a auf der Grundlage eines Prüfsummenwertes enthalten ist, der über den ersten Teil 121a erhalten wurde, was in einem zugeordneten Vertrauenszentrum bewerkstelligt werden kann. Somit ist eine Verschlüsselung der Prüfsumme des zweiten Teils ggf. nicht erforderlich. Die Signatur der Prüfsumme(n) für den Teil 121a kann verwendet werden, um den Teil 121a während eines sicheren Bootprozesses zu verifizieren. Der Teil 121a kann daher ausgebildet sein, die erforderlichen Plattforminitialisierungsaktionen auszuführen, etwa die Initialisierung einer Speichersteuerung 141 und dergleichen, woran sich das Kopieren des Teils 121b von dem Speicher 120 in den initialisierten Systemspeicher 110 anschließt.
-
Beim Ausführen des Teils 121a wird auch eine Prüfsumme über das Bild 121b, das in den Systemspeicher 110 kopiert ist, berechnet, die dann mit der Prüfsumme verglichen wird, die anfänglich in dem Teil 121a enthalten ist. Somit kann die Integrität des Teils 121b auf der Grundlage der Prüfsumme verifiziert werden, die in dem Teil 121a enthalten ist, wodurch eine vertrauenswürdige Kette an Integrität geschaffen wird. Somit kann, wie in 1c gezeigt ist, der Teil 121a verarbeitet werden, um damit eine Signatur zu erhalten, das in einem geeigneten Vertrauenszentrum auf der Grundlage einer geeigneten vertrauenswürdigen Umgebung bewerkstelligt werden kann. Zu diesem Zweck können sichere Prüfsummenalgorithmen angewendet werden, um einen oder mehrere Prüfsummenwerte, beispielsweise wie sie als hash 0, hash 1, hash 2 angegeben sind, in Verbindung mit geeigneten Steuerdaten vorzusehen. Danach wird eine geeignete Verschlüsselungstechnik eingesetzt, beispielsweise ein RSA (Rivest, Schamir, Adelman) Algorithmus unter Anwendung geeigneter privater Schlüssel, wodurch die verschlüsselten Prüfsummenwerte gewonnen werden, wie sie auf der rechten Seite der 1c gezeigt sind. Wie zuvor erläutert ist, kann eine geeignete Anzahl öffentlicher Schüssel in dem Datensatz 103a enthalten sein, wodurch eine Entschlüsselung der verschlüsselten Prüfsummenwerte oder Signaturen, die durch die in 1c gezeigte Sequenz erzeugt wurden ermöglicht wird.
-
1d zeigt schematisch eine Sequenz zum Verifizieren der Signaturen, die in dem Teil 121a, enthalten sind, wobei der Vorgang auf der Grundlage des Datensatzes 103a während des Initialisierens des Systems 150 ausgeführt wird. Die Verifizierung kann auf der Grundlage von beispielsweise dem RSA-Algorithmus unter Anwendung eines öffentlichen Schlüssel bewerkstelligt werden, wodurch die anfänglich erzeugten Prüfsummenwerte, etwa hash 0, hash 1 und hash 2 erhalten werden. Diese anfänglich erzeugten Prüfsummenwerte werden dann mit den entsprechenden Prüfsummenwerte verglichen, die erhalten werden, indem der geeignete Prüfsummenalgorithmus über den Teil 121a, der in den RAM-Speicher 101 kopiert wurde, angewendet wird. Der Teil 121a kann dann als verifiziert betrachtet werden, wenn der bzw. die berechneten Prüfsummenwerte mit den anfänglich erzeugten Prüfsummenwerte, die durch das Entschlüssen der Signaturen in dem Teil 121a erhalten werden, übereinstimmen, wie dies auf der linken Seite der 1d gezeigt ist.
-
Mit Bezug zu den 1e und 1f wird die Funktionsweise des Systems 150 gemäß anschaulicher Ausführungsformen detaillierter während eines sicheren Bootens beschrieben. Wie zuvor erläutert ist, ist im Hinblick auf das Vorsehen einer sicheren Plattform eine statische Basis der Vertrauenswürdigkeit einzurichten, um damit ein sicheres Anlaufen bzw. Booten eines Betriebssystems nach dem Einschalten oder nach dem Zurücksetzen des betrachteten Computersystems zu ermöglichen. Zu diesem Zweck wird ein definiertes Ausführen der vertrauenswürdigen BIOS-Information 121 erreicht, indem zumindest der Teil 121a auf der Grundlage des vertrauenswürdigen Satzes an Daten 103a verifiziert wird, der im Wesentlichen gegenüber einer externen Manipulation resistent ist. Somit wird bei jedem Aktivieren des Systems 150 ein sicherer Bootprozess initiiert, wobei unter Anwendung von Verschlüsselungsverfahren eine Integritätsverifizierung der anfänglichen Hardware und der Softwarekonfiguration erreicht werden kann. Beim Verifizieren der Integrität der Bootinformation 121, d. h. in den gezeigten Ausführungsformen, die Teile 121a, 121b, kann die Integrität des gesamten Bootvorganges bestätigt werden, wodurch eine vertrauenswürdige Initialisierung eines Betriebssystems möglich ist, das wiederum zum Ausführen von sicherheitssensiblen Anwendungen verwendet werden kann. Wenn andererseits die Integritätsprüfung nicht bestanden wird, beispielsweise während des Verifizierens der Teile 121a oder 121b, kann eine geeignete Strategie angewendet werden, beispielsweise um die Dienstleistungen zu beschränken, die von dem System 150 geboten werden, oder in anderen anschaulichen Ausführungsformen wird die Bootverarbeitung deaktiviert.
-
Somit kann die hierin offenbarte sichere Bootarchitektur gegenüber „klassenübergreifenden” Manipulationen schützen, die als Angriffe zu verstehen sind, die gegen jede einzelne Komponente eines gegebenen Sicherheitssystems gerichtet sind. Beispielsweise kann eine Softwareroutine, die von einer externen Quelle erzeugt wurde, als klassenübergreifende Manipulation betrachtet werden, die leicht zu installieren ist und eine Umgehung von Sicherheits/Schutzmaßnahmen ermöglicht wird, wodurch eine nicht-autorisierte Verwendung der Plattform möglich ist. In der digitalen Rechteverwaltung (DRM) wird in einer entsprechenden Umgebung eine klassenübergreifende Manipulierung bereits als gegeben erachtet, wenn die DRM-geschützten Datendateien ein einziges Mal abgerufen werden, wodurch eine Neuverteilung der ungeschützten Datei möglich ist. Somit bieten hierin offenbarte Mechanismen und Systeme eine verbesserte Sicherheit im Hinblick auf klassenübergreifende Manipulationen, da geschützte Umgebungen auf der Grundlage eines integralen Teilbereichs innerhalb der CPU selbst erreicht werden, wodurch eine Manipulation der CPU selbst erforderlich ist, oder entsprechende Fehler in der Infrastruktur zum Erzeugen der Signatur der Bootinformation und zum Beibehalten der sicheren Schlüssel, wobei in beiden Fällen ein hoher Aufwand im Hinblick auf Zeit und Geld erforderlich ist.
-
1e zeigt schematisch ein Flussdiagramm zum Beschreiben der Funktionsweise des Systems 150. Im Schritt S100 wir das System 150 zurückgesetzt oder es wird eingeschaltet, oder es findet ein anderes Ereignis statt, das eine sichere Bootverarbeitung erfordert. Folglich wird ein geeigneter Selbsttest von den CPU-Kern 102 ausgeführt und entsprechende Komponenten, etwa Register und dergleichen, werden initialisiert. Es sollte beachtet werden, dass in einigen Ausführungsformen ein sicherer Bootvorgang in einem Betriebszustand nicht aufgerufen wird, in dem das Betriebssystem weiterhin die Steuerung des Systems 150 beibehält. Im Schritt S110 wird der erste Befehl aus dem internen nicht-flüchtigen Speicher 103 abgeholt, was bewerkstelligt werden kann, indem der interne Speicher 103 auf die entsprechende Rücksetzvektoradresse abgebildet wird. Somit beginnt die CPU 100 das Ausführen auf der Grundlage des sicheren Datensatzes 103a in all jenen Fällen, in denen ein Sprung zu dem Rücksetzvektor durch ein externes Ereignis bewirkt wird. Im Schritt S120 wird der interne Speicher mit wahlfreiem Zugriff 101 initialisiert auf Grund des Ausführens von Befehlen, die in dem Satz 103a enthalten sind. Im Schritt 130 wird zumindest ein Teil der Bootinformation 121, beispielsweise der Teil 121a, mit einer Signatur davon, in den internen Speicher mit wahlfreiem Zugriff 101 eingeladen. Im Schritt S140 wird die Integrität der Bootinformation 121 oder des Teils 121a verifiziert, indem ein Entschlüsselungsschlüssel, der in dem Datensatz 103a enthalten ist, verwendet wird. d. h., nach dem Initialisieren des Speichers 101 wird die Signaturprüfung für die Bootinformation 121 oder zumindest den Teil 121a begonnen. Zu diesem Zweck werden in einigen anschaulichen Ausführungsformen Prüfwerte auf der Grundlage sicherer Prüfsummenalgorithmen berechnet, etwa SHA1, wobei die eine oder die mehreren Signaturen für die Bootinformation 121 oder den Teil 121a übersprungen werden. Ferner kann zusätzliche Information, etwa die Herstelleridentität, die in dem einmal programmierbaren Speicher 130 enthalten ist, in einigen Fällen verwendet werden und kann im Berechnen des einen oder der mehreren Prüfsummenwerte mit eingeschlossen werden. Der eine oder die mehreren berechneten Prüfsummenwerte können dann mit dem einen oder der mehreren Prüfsummenwerte verglichen werden, die in einer speziellen Stelle der Daten 121 oder 121a enthalten sind, wie dies auch zuvor mit Bezug zu 1d beschrieben ist. Dazu können die Prüfsummenwerte von der einen oder den mehreren Signaturen unter Anwendung der öffentlichen Entschlüsselungsschlüssel, die in dem Datensatz 103a enthalten sind, abgerufen werden, um damit die anfänglichen Prüfsummenwerte zu erhalten. Wenn sowohl die berechneten Prüfsummenwerte als auch die anfänglichen Prüfsummenwerte übereinstimmen, wird die Bootinformation 121 oder der Teil 121a im Schritt S150 als vertrauenswürdig betrachtet, und das Booten wird im Schritt S160 fortgesetzt. Wenn die Integritätsprüfung im Schritt S150 fehlschlägt, wird im Schritt S170 ein entsprechender Bootfehler angezeigt, was in einer anschaulichen Ausführungsform erreicht werden kann, indem die Bootverarbeitung abgebrochen wird und ein entsprechender Fehler ausgegeben wird.
-
In der zuvor beschriebenen Ausführungsform wird vor dem Übergeben der Ablaufsteuerung an die Bootinformation 121 oder dem Bereich 121a der sichere Bootprozess, d. h. der durch die Schritte S100 bis S150 repräsentierte Prozessablauf, ein Ausführen von Rücksetzprozeduren von Komponenten des Systems 150 nicht vorgesehen, wodurch eine zuverlässige „Messung” der Hardwarekonfiguration des Systems 150 möglich ist.
-
1f zeigt schematisch eine sichere Bootverarbeitung gemäß noch anderer anschaulicher Ausführungsformen. Wie gezeigt, wird im Schritt S101 entschieden, ob eine sichere Bootverarbeitung aktiviert ist. Eine entsprechende Angabe kann erreicht werden, indem jeweilige Sicherheitsbits, die in dem Speicher 130 enthalten sind, gesetzt werden. Gemäß dem Schritt S100 wird die Ausführungsform aus dem nicht-flüchtigen Speicher 103 heraus begonnen, wie dies zuvor erläutert ist. Im Schritt S102 wird Statusinformation beispielsweise zum geeigneten Setzen eines Ausgangsports bereitgestellt. Beispielsweise wird im Schritt S102 angegeben, dass die sichere Bootverarbeitung während des internen Selbsttests gestartet wird. Im Schritt S120 werden das System 150 und insbesondere die CPU 100 initialisiert, wobei beispielsweise ein oder mehrere der Schritte S121 bis S129 beteiligt sind. Beispielsweise wird im Schritt S121 der Adressenbereich des Speichers 103 in geeigneter Weise erneut zugeordnet, um damit sicherzustellen, dass der erste Befehl aus dem Speicher 103 abgerufen wird. Im Schritt S122 wird eine Bootquelle erkannt und im Schritt S123 initialisiert. Des weiteren werden der Speicher 101, d. h. der Datencachespeicher 101a, und der Befehlscachespeicher 101b in den Schritten S124, S125 initialisiert und es wird ein „nicht realer” Modus für den Datencachespeicher im Schritt S126 festgelegt. Ferner wird ein Bild der Bootinformation 121 oder des Teils 121a in dem Datencachespeicher 101a kopiert und im Schritt S128 wird Speicherplatz für Variablen in den Datencachespeicher 101a bereitgestellt. Schließlich wird bei Bedarf im Schritt S129 die Herstellerkennung abgerufen.
-
Im Schritt S141 wird ein Block der Bootinformation 121 oder des Teils 121a eingelesen und im Schritt S142 wird ein entsprechender Prüfsummenalgorithmus ausgeführt, um einen ersten Prüfsummenwert zu erhalten. Im Schritt S143 wird bestimmt, der zuvor eingelesene Block an Daten der letzte Block oder nicht. Wenn nicht, geht der Prozessablauf zurück zum Schritt S121, um einen weiteren Block an Daten einzulesen und in dem nachfolgenden Schritt 142 wird ein Prüfsummenwert berechnet und der zuvor erhaltene Wert wird aktualisiert. Wenn im Schritt 143 der letzte Block eingelesen ist, wird im Schritt S144 der berechnete Prüfsummenwert gespeichert und im Schritt S145 wird ein relevanter Teil der Daten 121 oder 121a eingelesen, um die darin enthaltenen Signaturen zu erhalten. Beispielsweise kann für diesen Zweck der Kopf des Blockes der Information 121 oder des Teils 121 verwendet werden. Im Schritt S146 werden die einen oder die mehreren Signaturen abgerufen und im Schritt S147 werden ein oder mehrere öffentliche Schlüssel angewendet, um die im Schritt 146 ermittelten Signaturen zu entschlüsseln. Im Schritt S150 werden der bzw. die im Schritt S144 gespeicherten Prüfsummenwerte mit den ursprünglichen Prüfsummenwerten verglichen, die durch das Ausführen des Schritts S147 ermittelt werden, wodurch entschieden wird, ob die Daten 121 oder 121a als vertrauenswürdig zu betrachten sind oder nicht.
-
Wenn die Prüfsummenwerte im Schritt S150 übereinstimmen, wird der zuvor initialisierte Befehlscachespeicher mit den Bootdaten 121 bzw. 121a aktualisiert, die aktuell in dem Datencachespeicher 101a enthalten sind, um die Bootdaten in diesen Speicher zu verifizieren. Im Schritt S162 wird der Status des sicheren Bootprozesses angegeben und schließlich wird im Schritt S163 das Booten fortgesetzt, indem Befehle aus dem Befehlscachespeicher ausgeführt werden, die beispielsweise das Initialisieren des Systemsspeichers 110, das Abrufen von verbleibenden Bereichen der Bootdaten 121, etwa des Teils 121b, und das Verifizieren von dessen Integrität durch Berechnung eines Prüfsummenwertes und Vergleichen des berechneten Prüfsummenwertes mit einem ursprünglichen Prüfsummenwert, der in dem Teil 121a enthalten ist, beinhalten kann. Wenn die Integrität im Schritt S150 nicht bestätigt wird, wird im Schritt S171 eine entsprechende Statusinformation, beispielsweise 0xCD) bereitgestellt und im Schritt S172 wird in einer anschaulichen Ausführungsform die Ausführung abgebrochen.
-
Es gilt also: Die hierin offenbarten Systeme und Mechanismen bieten eine bessere Integrität von Computerplattformen, indem ein sicherer Bootverarbeitungsprozess auf Grundlage einer dem Booten vorgeordneten Routine vorgesehen ist, die in einem nicht-flüchtigen Speicher enthalten ist, der nicht überschrieben werden kann, sobald Daten in dem nichtflüchtigen Speicher enthalten sind. Da der nicht-flüchtige Speicher ein Teil der CPU selbst ist, kann die Systeminitialisierung auf der Grundlage der dem Booten vorgeordneten Information, die in dem nicht-flüchtigen internen Speicher enthalten ist, bewerkstelligt werden, wobei dieser auch geeignete Entschlüsselungsschlüssel aufweist, die auf signierte Bootinformation oder zumindest auf einen signierten Teil der Bootinformation angewendet werden. Der Vorgang des Berechnens geeigneter Prüfsummenwerte für die Bootinformation oder eines Teils davon und der Vergleich mit ursprünglich erzeugten Werten, die in verschlüsselter Form in der Bootinformation gespeichert sind, können bewerkstelligt werden, indem der interne Speicher mit wahlfreiem Zugriff der CPU verwendet wird, wodurch die Möglichkeit eines externen Zugriffes und damit die Möglichkeit des Manipulierens der Systemkonfiguration verhindert wird. Somit kann die intern gespeicherte dem Booten vorgeordnete Information als eine Basis der Vertrauenswürdigkeit für die Messung während der Systeminitialisierung verwendet werden.