-
Hintergrund
-
Ein Computergerät kann einen Hauptprozessor enthalten, der maschinenlesbare Anweisungen ausführt, um verschiedene Operationen durchzuführen. Ein „Hauptprozessor“ kann sich auf einen Prozessor im Computergerät beziehen, der Programme wie die System-Firmware, ein Betriebssystem und ein Anwendungsprogramm ausführt. Ein „Programm“ bezieht sich auf maschinenlesbare Anweisungen. Neben dem Hauptprozessor enthält das Computergerät auch andere elektronische Komponenten, wie z. B. ein Speichergerät, ein Speichergerät, einen Netzwerkschnittstellen-Controller, einen Grafik-Controller usw.
-
Figurenliste
-
Einige Ausführungsformen der vorliegenden Offenbarung werden anhand der folgenden Figuren beschrieben.
- 1 ist ein Blockdiagramm eines Computergeräts gemäß einigen Beispielen.
- 2 ist ein Nachrichtenflussdiagramm eines Prozesses gemäß einigen Beispielen.
- 3 ist ein Blockdiagramm des Systems gemäß einigen Beispielen.
- 4 ist ein Blockdiagramm eines Speichermediums, das maschinenlesbare Anweisungen gemäß einigen Beispielen speichert.
- 5 ist ein Flussdiagramm eines Verfahrens gemäß einigen Beispielen.
-
In den Zeichnungen bezeichnen identische Referenznummern ähnliche, aber nicht unbedingt identische Elemente. Die Figuren sind nicht unbedingt maßstabsgetreu, und die Größe einiger Teile kann übertrieben sein, um das gezeigte Beispiel deutlicher zu machen. Darüber hinaus enthalten die Zeichnungen Beispiele und/oder Ausführungsformen, die mit der Beschreibung übereinstimmen; die Beschreibung ist jedoch nicht auf die in den Zeichnungen dargestellten Beispiele und/oder Ausführungsformen beschränkt.
-
Detaillierte Beschreibung
-
In der vorliegenden Offenlegung schließt die Verwendung des Begriffs „ein“, „ein“ oder „die“ auch die Pluralformen ein, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Auch der Begriff „umfasst“, „einschließlich“, „umfasst“, „umfasst“, „haben“ oder „haben“, wenn er in dieser Offenlegung verwendet wird, spezifiziert das Vorhandensein der angegebenen Elemente, schließt aber das Vorhandensein oder die Zugabe anderer Elemente nicht aus.
-
In einigen Beispielen kann ein Computer zusätzlich zu einem Hauptprozessor auch einen zusätzlichen Prozessor (oder mehrere zusätzliche Prozessoren) enthalten. Ein Prozessor kann ein Mikroprozessor, ein Kern eines Multi-Core-Mikroprozessors, ein Mikrocontroller, eine programmierbare integrierte Schaltung, ein programmierbares Gate-Array oder eine andere Hardware-Verarbeitungsschaltung sein.
-
In einigen Beispielen kann ein zusätzlicher Prozessor eine geringere Verarbeitungskapazität haben als der Hauptprozessor. Der zusätzliche Prozessor kann vorgesehen werden, um bestimmte Vorgänge in der Datenverarbeitungsanlage auszuführen, so dass der Hauptprozessor nicht durch die Ausführung solcher spezifischer Vorgänge belastet werden muss.
-
Um Sicherheit zu gewährleisten, kann das Computergerät eine Vertrauensbasis (Root of Trust) enthalten, die sich auf eine sichere Einheit im Computergerät beziehen kann, bei der darauf vertraut werden kann, dass sie nicht von einer unbefugten Einheit wie einem Hacker, Malware usw. kompromittiert wird. Ein Hardware-Root-of-Trust bezieht sich auf eine Sicherheitsanordnung (implementiert mit Hardware und maschinenlesbaren Anweisungen), die eine Kette von kryptografischen Operationen verwendet, die innerhalb der Hardware ausgelöst wird und nahtlos in die Firmware übergeht. Die Kette der kryptografischen Operationen ermöglicht die Überprüfung von Informationen und Logik im Namen anderer elektronischer Komponenten im Computergerät. Beispielsweise kann vor der Ausführung maschinenlesbarer Anweisungen (z. B. System-Firmware, ein Betriebssystem, ein Anwendungsprogramm usw.) auf dem Hauptprozessor des Computergeräts die Hardware-Vertrauensbasis zur Validierung der maschinenlesbaren Anweisungen verwendet werden, um zu bestätigen, dass die maschinenlesbaren Anweisungen weder unbeabsichtigt noch absichtlich beeinträchtigt wurden.
-
Beispielsweise kann eine Hardware-Vertrauensbasis einen Wert (z. B. eine Prüfsumme, einen kryptografischen Hash usw.) der maschinenlesbaren Anweisungen berechnen und den berechneten Wert mit einem erwarteten Wert vergleichen. Der erwartete Wert kann auf sichere Weise gespeichert werden, um den erwarteten Wert vor unberechtigtem Zugriff zu schützen. Wenn der berechnete Wert mit dem erwarteten Wert übereinstimmt, ist dies eine Bestätigung dafür, dass die maschinenlesbaren Anweisungen nicht beeinträchtigt wurden.
-
Eine absichtliche Kompromittierung der maschinenlesbaren Anweisungen kann durch eine nicht autorisierte Einheit erfolgen, z. B. durch einen Hacker, Malware usw. Der Unbefugte kann beispielsweise die maschinenlesbaren Anweisungen ändern, die maschinenlesbaren Anweisungen durch andere maschinenlesbare Anweisungen ersetzen, die bösartige Handlungen ausführen können, usw.
-
Eine unbeabsichtigte Änderung der maschinenlesbaren Anweisungen kann entweder durch einen Hardwarefehler oder einen Programmfehler verursacht werden.
-
Wenn die Hardware-Vertrauenswurzel anzeigt, dass die maschinenlesbaren Anweisungen kompromittiert wurden, kann das Computergerät die Ausführung der maschinenlesbaren Anweisungen verhindern, um böswillige Operationen oder andere Operationen zu verhindern, die zu Fehlern im Computergerät führen können.
-
Obwohl das Hardware-Root-Vertrauen für Informationen (z. B. maschinenlesbare Anweisungen) verwendet werden kann, die dem Hauptprozessor zugeordnet sind, ist das Hardware-Root-Vertrauen möglicherweise nicht verfügbar, um Informationen für zusätzliche Prozessoren eines Computergeräts zu schützen.
-
Ein Beispiel für einen zusätzlichen Prozessor kann ein komplexer programmierbarer Logikbaustein (CPLD) sein (der z. B. als feldprogrammierbares Gate-Array (FPGA) implementiert werden kann), ein programmierbarer Schnittstellen-Controller (PIC), ein kleiner Mikroprozessor (z. B. ein 8-Bit-Mikroprozessor, ein 16-Bit-Mikroprozessor usw.) oder ein anderer Hardware-Verarbeitungsschaltkreis, der eine geringere Verarbeitungskapazität als der Hauptprozessor hat.
-
Wenn die Hardware-Vertrauensbasis einem zusätzlichen Prozessor nicht zur Verfügung steht, kann die Hardware-Vertrauensbasis nicht zur Validierung von maschinenlesbaren Anweisungen (z. B. Firmware) verwendet werden, die von dem zusätzlichen Prozessor ausgeführt werden. Infolgedessen können maschinenlesbare Anweisungen, die von dem zusätzlichen Prozessor ausgeführt werden, beeinträchtigt werden und Fehler, Korruption und unsichere Operationen in dem Computergerät verursachen.
-
In Übereinstimmung mit einigen Implementierungen der vorliegenden Offenbarung werden Techniken oder Mechanismen bereitgestellt, um maschinenlesbare Anweisungen, die von einem zusätzlichen Prozessor oder mehreren zusätzlichen Prozessoren ausgeführt werden können, zu validieren.) Das „Validieren“ von maschinenlesbaren Anweisungen bezieht sich auf das Überprüfen der maschinenlesbaren Anweisungen, um sicherzustellen, dass die maschinenlesbaren Anweisungen nicht in irgendeiner Weise verändert oder durch eine andere Version ersetzt wurden, sei es absichtlich oder unabsichtlich.
-
1 zeigt ein Computergerät 100 gemäß einigen Beispielen. Beispiele für ein Computergerät können ein Desktop-Computer, ein Notebook, ein Tablet-Computer, ein Server-Computer, ein Kommunikationsknoten (z. B. ein Router, ein Switch usw.), ein Speichersystem usw. sein.
-
Die Datenverarbeitungsanlage 100 umfasst einen Hauptprozessor 102 und kleine Prozessoren 104-1 bis 104-N (mit N ≥ 1). Obwohl in 1 mehrere kleine Prozessoren dargestellt sind, kann die Rechenvorrichtung 100 in anderen Beispielen neben dem Hauptprozessor 102 auch nur einen kleinen Prozessor enthalten.
-
Ein „kleiner Prozessor“ hat eine Verarbeitungskapazität, die geringer ist als die Verarbeitungskapazität des Hauptprozessors 102. Die Verarbeitungskapazität eines Prozessors bezieht sich auf die Menge der Befehle, die innerhalb eines Zeitfensters vom Prozessor ausgeführt werden können. Eine geringere Verarbeitungskapazität bedeutet, dass der Prozessor eine geringere Menge an Befehlen ausführen kann als ein anderer Prozessor, der eine größere Verarbeitungskapazität hat.
-
Der Hauptprozessor 102 ist mit einem nichtflüchtigen Speicher 106 gekoppelt, der mit einer nichtflüchtigen Speichervorrichtung oder mehreren nichtflüchtigen Speichervorrichtungen realisiert werden kann. Eine nichtflüchtige Speichervorrichtung bezieht sich auf eine Speichervorrichtung, die die in der nichtflüchtigen Speichervorrichtung gespeicherten Informationen beibehält, selbst wenn die Stromversorgung der nichtflüchtigen Speichervorrichtung unterbrochen wird. Beispiele für nichtflüchtige Speichervorrichtungen sind u. a. Flash-Speicher, elektrisch löschbare programmierbare Festwertspeicher (EEPROM) oder eine Kombination davon.
-
Der nichtflüchtige Speicher 106 speichert System-Firmware 108 (einschließlich maschinenlesbarer Anweisungen), die vom Hauptprozessor 102 ausgeführt werden kann. Beispielsweise kann die System-Firmware 108 einen Boot-Code enthalten, um beim Einschalten oder als Reaktion auf einen Reset Startaufgaben des Computergeräts 100 auszuführen. Der Bootcode kann elektronische Hardwarekomponenten im Computergerät 100 initialisieren und ein Betriebssystem (OS) zur Ausführung im Computergerät 100 laden.
-
Vor der Ausführung der System-Firmware 108 durch den Hauptprozessor 102 kann eine Hardware-Vertrauensbasis 110 zur Validierung der System-Firmware 108 verwendet werden, um zu bestätigen, dass die System-Firmware 108 (oder ein Teil der System-Firmware 108) weder absichtlich noch unabsichtlich beeinträchtigt wurde. In anderen Beispielen kann anstelle der Verwendung der Hardware-Vertrauenswurzel 110 zur Validierung der Systemfirmware 108 ein anderer Mechanismus zur Validierung der Systemfirmware 108 verwendet werden.
-
Obwohl die Hardware-Vertrauenswurzel 110 zur Validierung der System-Firmware 108 verwendet werden kann, ist zu beachten, dass die Hardware-Vertrauenswurzel 110 möglicherweise nicht verfügbar ist, um maschinenlesbare Anweisungen zu validieren, die auf einem der kleinen Prozessoren 104-1 bis 104-N ausführbar sind.
-
In einigen Beispielen kann die Hardware-Root of Trust 110 in einem Baseboard Management Controller (BMC) enthalten sein. In anderen Beispielen kann die Hardware-Vertrauenswurzel 110 mit einem anderen Mechanismus implementiert werden, z. B. mit einem Trusted Platform Module (TPM) usw.
-
Ein BMC ist ein Beispiel für eine Verwaltungssteuerung, die vom Hauptprozessor 102 des Computergeräts 100 getrennt ist. Wie hierin verwendet, ist ein „BMC“ ein spezialisierter Dienstcontroller, der den physischen Zustand eines Computergeräts (wie 100) mit Hilfe von Sensoren überwacht und über eine unabhängige „Out-of-Band“-Verbindung mit einem entfernten Managementsystem (das z. B. vom Computergerät 100 entfernt ist) kommuniziert.
-
Der BMC verfügt über Verwaltungsfunktionen zur Verwaltung der Komponenten des Computergeräts 100. Beispiele für Verwaltungsfunktionen des BMC können eine oder eine Kombination der folgenden Funktionen umfassen: Stromverbrauchssteuerung zur Durchführung des Stromverbrauchsmanagements des Computergeräts 100 (z. B. zur Umschaltung des Computergeräts 100 zwischen verschiedenen Stromverbrauchszuständen als Reaktion auf erkannte Ereignisse), thermische Überwachung und Steuerung des Computergeräts 100 (z. B. zur Überwachung der Temperaturen des Computergeräts 100 und zur Steuerung der Wärmemanagementgeräte des Computergeräts 100), Lüftersteuerung der Lüfter im Computergerät 100, Überwachung des Systemzustands auf der Grundlage von Messdaten verschiedener Sensoren des Computergeräts 100, Fernzugriff auf das Computergerät 100 (z. B. um über ein Netzwerk auf das Computergerät 100 zuzugreifen), Fernneustart des Computergeräts 100 (um den Neustart des Computergeräts 100 über einen Fernbefehl auszulösen), Systemeinrichtung und - bereitstellung des Computergeräts 100, Systemsicherheit, um Sicherheitsverfahren im Computergerät 100 zu implementieren, und so weiter.
-
In einigen Beispielen kann das BMC so genannte „Lights-Out“-Funktionen für Computergeräte bereitstellen. Die Lights-Out-Funktionalität kann es einem Benutzer, z. B. einem Systemadministrator, ermöglichen, Verwaltungsvorgänge auf dem Computergerät 100 auszuführen, selbst wenn das Betriebssystem auf dem Computergerät 100 nicht installiert ist oder nicht funktioniert.
-
Darüber hinaus kann der BMC in einigen Beispielen mit Hilfsstrom betrieben werden, der von einer Hilfsstromversorgung (z. B. einer Batterie) bereitgestellt wird; infolgedessen muss das Computergerät 100 nicht eingeschaltet werden, damit der BMC seine Operationen durchführen kann. Die Hilfsstromversorgung ist von einer Hauptstromversorgung (nicht dargestellt) getrennt, die andere Komponenten (z. B. den Hauptprozessor 102 usw.) des Computergeräts 100 mit Strom versorgt.
-
Der Hauptprozessor 102 ist über einen Primärbus 112 mit elektronischen Komponenten 114 verbunden. Obwohl mehrere elektronische Komponenten dargestellt sind, die mit dem Primärbus 112 verbunden sind, kann in anderen Beispielen auch nur eine elektronische Komponente 114 mit dem Primärbus 112 verbunden sein. Beispiele für elektronische Komponenten 114 können eine beliebige oder eine Kombination der folgenden Komponenten sein: ein Netzwerkschnittstellen-Controller, ein Speichergerät-Controller, ein Grafik-Controller, ein Bridge-Controller und so weiter.
-
Obwohl der nichtflüchtige Speicher 106 nicht als mit dem primären Bus 112 verbunden dargestellt ist, wird darauf hingewiesen, dass in anderen Beispielen der nichtflüchtige Speicher 106 mit dem primären Bus 112 für den Zugriff durch den Hauptprozessor 102 verbunden sein kann.
-
Der Hauptprozessor 102 ist auch über einen sekundären Bus 116 mit den kleinen Prozessoren 104-1 bis 104-N verbunden. In einigen Beispielen umfasst der sekundäre Bus einen Inter-Integrated Circuit (12C)-Bus. In anderen Beispielen können andere Arten von Sekundärbussen verwendet werden, um den Hauptprozessor 102 mit den kleinen Prozessoren 104-1 bis 104-N zu verbinden.
-
In dem Beispiel von 1 ist jeder kleine Prozessor 104-i (i = 1 bis N) mit einem entsprechenden nichtflüchtigen Speicher 118-i verbunden. Somit ist der kleine Prozessor 104-1 mit einem nichtflüchtigen Speicher 118-1 verbunden, und der kleine Prozessor 104-N ist mit dem nichtflüchtigen Speicher 118-N verbunden. Es ist zu beachten, dass jeder nichtflüchtige Speicher 118-i Teil des kleinen Prozessors 104-i oder von diesem getrennt sein kann.
-
In anderen Beispielen kann ein nichtflüchtiger Speicher von den mehreren kleinen Prozessoren 104-1 bis 104-N gemeinsam genutzt werden. In weiteren Beispielen können Informationen für die kleinen Prozessoren 104-1 bis 104-N im nichtflüchtigen Speicher 106 gespeichert werden, der auch die System-Firmware speichert, die auf dem Hauptprozessor 102 ausführbar ist.
-
In den folgenden Ausführungen wird davon ausgegangen, dass jeder kleine Prozessor 104-i mit einem separaten nichtflüchtigen Speicher 118-i verbunden ist. Ähnliche Techniken können in anderen Beispielen angewendet werden, in denen ein nichtflüchtiger Speicher von mehreren kleinen Prozessoren gemeinsam genutzt wird.
-
Der nichtflüchtige Speicher 118-1 speichert Kleinprozessor-Firmware 120-1 (oder andere maschinenlesbare Anweisungen), die auf dem Kleinprozessor 104-1 ausführbar ist. In Übereinstimmung mit einigen Implementierungen der vorliegenden Offenbarung wird die Kleinprozessor-Firmware 120-1 zusammen mit Schutzinformationen 122-1 (z. B. Zufallswerten) gespeichert. Die kleine Prozessor-Firmware 120-1 und die Schutzinformationen 122-1 werden miteinander verknüpft, um Gesamtinformationen 124-1 zu bilden, die im nichtflüchtigen Speicher 118-1 gespeichert werden. Die Gesamtinformation 124-1 wird zur Validierung der kleinen Prozessor-Firmware 120-1 verwendet.
-
Die Schutzinformationen 122-1 werden hinzugefügt, um den ungenutzten Speicherplatz im nichtflüchtigen Speicher 118-1 (ganz oder teilweise) aufzufüllen, um die Verwendung des ungenutzten Speicherplatzes für einen nicht autorisierten Zweck zu verhindern. Weitere Einzelheiten darüber, wie die Schutzinformationen 122-1 verwendet werden können, um Angriffe auf die kleine Prozessor-Firmware 120-1 zu vereiteln, werden weiter unten erläutert.
-
In ähnlicher Weise speichert der nichtflüchtige Speicher 118-N Kleinprozessor-Firmware 120-N, die auf dem Kleinprozessor 104-N ausführbar ist. Darüber hinaus speichert der nichtflüchtige Speicher 118-N Schutzinformationen 122-N, die mit der kleinen Prozessor-Firmware 120-N verkettet werden, um Gesamtinformationen 124-N zu bilden, die im nichtflüchtigen Speicher 118-N gespeichert sind.
-
In Übereinstimmung mit einigen Implementierungen der vorliegenden Offenbarung wird die System-Firmware 108 (und insbesondere die iterativen Kleinprozessor-Firmware-Validierungsanweisungen 126 in der System-Firmware 108) verwendet, um jede Kleinprozessor-Firmware 120-i vor der Ausführung der Kleinprozessor-Firmware 120-i auf dem jeweiligen Kleinprozessor 104-i zu validieren. Die iterativen Anweisungen zur Validierung der Kleinprozessor-Firmware 126 werden auf dem Hauptprozessor 102 nach der Validierung der System-Firmware 108 (oder eines Teils der System-Firmware 108) durch die Hardware-Vertrauensbasis 110 ausgeführt.
-
Die iterativen Anweisungen für die Validierung der Kleinprozessor-Firmware 126 können einen iterativen Validierungsprozess durchführen, der mehrere Iterationen umfasst, die zu verschiedenen Zeiten durchgeführt werden. Jede Iteration führt eine separate unabhängige Validierung der jeweiligen kleinen Prozessor-Firmware 120-i durch. Beispielsweise kann in einer ersten Iteration des iterativen Validierungsprozesses festgestellt werden, dass die kleine Prozessor-Firmware 120-i gültig ist. In einer zweiten Iteration der mehreren Iterationen kann jedoch festgestellt werden, dass die kleine Prozessor-Firmware 120-i nicht gültig ist (d. h., dass die kleine Prozessor-Firmware 120-i in irgendeiner Weise beeinträchtigt wurde).
-
Die unabhängigen Validierungen, die in den verschiedenen Iterationen durchgeführt werden, wählen verschiedene Teile der Gesamtinformationen 124-i aus, um die Validierung der kleinen Prozessor-Firmware 120-i durchzuführen. In einigen Beispielen wählen die iterativen Anweisungen zur Validierung der kleinen Prozessor-Firmware 126 zufällig verschiedene Teile der kleinen Prozessor-Firmware 120-i aus, wenn die Validierungen in den jeweiligen verschiedenen Iterationen des iterativen Validierungsprozesses durchgeführt werden.
-
Die iterativen Small-Prozessor-Firmware-Validierungsanweisungen 126 können entsprechende vertrauenswürdige Kopien der Gesamtinformationen 128-1 bis 128-N verwenden, um die jeweilige Small-Prozessor-Firmware 120-1 bis 120-N zu validieren (siehe unten). Die vertrauenswürdige Kopie der Gesamtinformation 128-1 ist eine Kopie der Gesamtinformation 124-1 (einschließlich der kleinen Prozessor-Firmware 120-1 und der Schutzinformation 122-1) in einem Zustand vor einer absichtlich oder unabsichtlich vorgenommenen Änderung. In ähnlicher Weise ist die vertrauenswürdige Kopie der Gesamtinformation 128-N eine Kopie der Gesamtinformation 124-N (einschließlich der kleinen Prozessor-Firmware 120-N und der Schutzinformation 122-N) in einem Zustand vor jeglicher absichtlicher oder unabsichtlicher Änderung.
-
2 ist ein Nachrichtenflussdiagramm des Prozesses gemäß einigen Beispielen. Zu den am Nachrichtenflussdiagramm beteiligten Einheiten gehören die Hardware-Vertrauensbasis 110, der Hauptprozessor 102 und ein kleiner Prozessor 104 (der ein beliebiger der kleinen Prozessoren 104-1 bis 104-N sein kann).
-
Zu Beginn, z. B. während des Einschaltens oder Zurücksetzens des Systems, validiert die Hardware-Root of Trust 110 (bei 202) die System-Firmware 108 (oder einen Teil der System-Firmware 108). Unter der Annahme, dass die Hardware-Vertrauenswurzel 110 die System-Firmware 108 (oder einen Teil der System-Firmware 108) erfolgreich validiert hat, sendet die Hardware-Vertrauenswurzel 110 (bei 204) eine Auslöseanzeige an den Hauptprozessor 102, die dem Hauptprozessor 102 anzeigt, dass der Hauptprozessor 102 die System-Firmware 108 ausführen darf. Die Auslöseanzeige kann in Form eines Signals, eines Befehls, einer Nachricht, eines Informationselements oder einer anderen Art von Indikator erfolgen.
-
Als Reaktion auf die Auslöseranzeige führt der Hauptprozessor 102 die System-Firmware 108 aus (bei 206), einschließlich der iterativen Firmware-Validierungsanweisungen für den kleinen Prozessor 126. Die iterativen Firmware-Validierungsanweisungen für den kleinen Prozessor 126 können einen iterativen Validierungsprozess (208) mit dem kleinen Prozessor 104 einleiten.
-
Der iterative Validierungsprozess 208 umfasst mehrere Iterationen, die unabhängig voneinander die Kleinprozessor-Firmware 120 für den Kleinprozessor 104 validieren, wobei die Validierungen in den jeweiligen mehreren Iterationen auf jeweils unterschiedlichen zufälligen Teilen der Gesamtinformationen 124 (eine von 124-1 bis 124-N in 1) basieren. Die Gesamtinformation 124 umfasst die kleine Prozessor-Firmware 120 (eine von 120-1 bis 120-N) und die Schutzinformationen 122 (eine von 122-1 bis 122-N). Die Gesamtinformation 124 ist im nichtflüchtigen Speicher 118 (einer von 118-1 bis 118-N) des kleinen Prozessors 104 gespeichert.
-
In Iteration 1 des iterativen Validierungsprozesses sendet der Hauptprozessor 102 (unter Steuerung der iterativen Firmware-Validierungsanweisungen für kleine Prozessoren 126) (bei 210-1) eine erste Teilmengeninformation, die einen ersten (zufällig ausgewählten) Teil der im nichtflüchtigen Speicher 118 gespeicherten Gesamtinformation 124 für den kleinen Prozessor 104 identifiziert. Der nichtflüchtige Speicher 118 kann einer der nichtflüchtigen Speicher 118-1 bis 118-N sein. Die Gesamtinformation 124 enthält ferner eine Schutzinformation 122 (eine von 122-1 bis 122-N in 1).
-
In einigen Beispielen kann die erste Teilmenge, die Informationen angibt, einen ersten Adressbereich enthalten, der einen Bereich von Adressen identifiziert, in dem sich der erste Teil der Gesamtinformationen 124 befindet. In einigen Beispielen können die iterativen Firmware-Validierungsanweisungen für kleine Prozessoren 126 einen Zufallszahlengenerator verwenden (der einen Software-Zufallszahlengenerator oder einen Hardware-Zufallszahlengenerator umfassen kann), um eine Zufallszahl (oder mehrere Zufallszahlen) zu erzeugen, die von den iterativen Firmware-Validierungsanweisungen für kleine Prozessoren 126 verwendet wird (werden), um den ersten Adressbereich zu bestimmen. Allgemeiner ausgedrückt: Die Zufallszahl(en) kann (können) verwendet werden, um einen zufälligen Adressbereich auszuwählen, um den ersten Teil der Gesamtinformation 124 zu identifizieren.
-
Als Reaktion auf die erste Teilmengeninformation ruft der kleine Prozessor 104 den ersten Teil der Gesamtinformation 124 ab (z. B. an den Speicheradressen des ersten Adressbereichs) und berechnet (bei 212-1) einen ersten Wert auf der Grundlage des ersten Teils der Gesamtinformation 124. Beispielsweise kann eine kryptografische Hash-Funktion auf den ersten Teil der Gesamtinformation 124 angewendet werden, um einen Hash-Wert zu erzeugen. Ein Beispiel für eine kryptografische Hash-Funktion ist eine Secure Hash Algorithm (SHA)-Funktion. In anderen Beispielen können auch andere Arten von kryptografischen Hash-Funktionen verwendet werden. In weiteren Beispielen kann der berechnete Wert eine Prüfsumme sein, die auf dem ersten Teil der Gesamtinformation 124 basiert.
-
Der kleine Prozessor 104 sendet (bei 214-1) den berechneten ersten Wert an den Hauptprozessor 102. Der Hauptprozessor 102 (unter Kontrolle der iterativen Firmware-Validierungsanweisungen für kleine Prozessoren 126) validiert (bei 216-1) die Firmware des kleinen Prozessors 120, indem er den vom kleinen Prozessor 104 zurückgegebenen ersten Wert mit einem erwarteten Wert vergleicht.
-
In einigen Beispielen kann der erwartete Wert auf der Grundlage eines ausgewählten Teils einer vertrauenswürdigen Kopie der Gesamtinformation 128 (z. B. eine von 128-1 bis 128-N in 1) berechnet werden. Beispielsweise kann ein Hash-Wert, eine Prüfsumme usw. auf der Grundlage des ausgewählten Teils der vertrauenswürdigen Kopie der Gesamtinformation 128 berechnet werden. Der ausgewählte Teil der vertrauenswürdigen Kopie der Gesamtinformation 128 kann sich in demselben ersten Adressbereich befinden, der für die Auswahl des ersten Teils der Gesamtinformation 124 verwendet wurde.
-
Die iterativen Kleinprozessor-Firmware-Validierungsanweisungen 126 können feststellen, dass die Kleinprozessor-Firmware 120 gültig ist, wenn der vom Kleinprozessor 104 zurückgegebene erste Wert mit dem erwarteten Wert übereinstimmt, der von den iterativen Kleinprozessor-Firmware-Validierungsanweisungen 126 auf der Grundlage des ausgewählten Teils der vertrauenswürdigen Kopie der Gesamtinformationen 128 berechnet wurde.
-
In Iteration 2 des iterativen Validierungsprozesses sendet der Hauptprozessor 102 (unter Steuerung der iterativen Firmware-Validierungsanweisungen für kleine Prozessoren 126) (bei 210-2) eine zweite Teilmengeninformation, die einen zweiten (zufällig ausgewählten) Teil der im nichtflüchtigen Speicher 118 für den kleinen Prozessor 104 gespeicherten Gesamtinformation 124 identifiziert.
-
In einigen Beispielen kann die zweite Teilmenge, die Informationen angibt, einen zweiten Adressbereich enthalten, der einen zufälligen Bereich von Adressen identifiziert, in dem sich der zweite Teil der Gesamtinformationen 124 befindet.
-
Als Reaktion auf die zweite Teilmengeninformation ruft der kleine Prozessor 104 den zweiten Teil der Gesamtinformation 124 ab (z. B. an den Speicheradressen des zweiten Adressbereichs) und berechnet (bei 212-2) einen zweiten Wert auf der Grundlage des zweiten Teils der Gesamtinformation 124.
-
Der kleine Prozessor 104 sendet (bei 214-2) den berechneten zweiten Wert an den Hauptprozessor 102. Der Hauptprozessor 102 (unter der Kontrolle der iterativen Kleinprozessor-Firmware-Validierungsanweisungen 126) validiert (bei 216-2) die Kleinprozessor-Firmware 120, indem er den vom Kleinprozessor 104 zurückgegebenen zweiten Wert mit einem erwarteten Wert vergleicht, der auf der Grundlage eines zweiten ausgewählten Teils der vertrauenswürdigen Kopie der Gesamtinformationen 128 berechnet werden kann.
-
Weitere Iterationen des iterativen Validierungsprozesses können in Bezug auf verschiedene zufällig ausgewählte Teile der Gesamtinformation 124 und verschiedene zufällig ausgewählte Teile der vertrauenswürdigen Kopie der Gesamtinformation 128 ähnlich ablaufen.
-
Wie bereits erwähnt, können die Schutzinformationen 122-i verwendet werden, um (ganz oder teilweise) ungenutzten Speicherplatz im jeweiligen nichtflüchtigen Speicher 118-i aufzufüllen, in dem auch die kleine Prozessor-Firmware 120-i gespeichert ist. Durch das Auffüllen des ungenutzten Speicherplatzes wird verhindert, dass eine unbefugte Entität (z. B. ein Hacker, Malware usw.) Informationen in dem ungenutzten Speicherplatz speichert, die der unbefugten Entität helfen könnten, einen Wert zurückzugeben, der mit einem erwarteten Wert übereinstimmt, der von den iterativen Validierungsanweisungen für die kleine Prozessor-Firmware 126 berechnet wurde.
-
Wenn im nichtflüchtigen Speicher 118-i ausreichend ungenutzter Speicherplatz verfügbar ist, kann die nicht autorisierte Einheit beispielsweise eine gültige Kopie der kleinen Prozessor-Firmware 120-i in dem ungenutzten Speicherplatz speichern. Die gültige Kopie der kleinen Prozessor-Firmware 120-i in dem ungenutzten Speicherplatz kann verwendet werden, um einen Wert zu berechnen, der mit größerer Wahrscheinlichkeit mit dem erwarteten Wert übereinstimmt, der von den iterativen Anweisungen zur Validierung der kleinen Prozessor-Firmware 126 berechnet wurde, auch wenn die nicht autorisierte Einheit die kleine Prozessor-Firmware 120-i verändert haben könnte.
-
In anderen Beispielen kann der ungenutzte Speicherplatz von der nicht autorisierten Stelle dazu verwendet werden, eine große Anzahl von Hash-Werten, Prüfsummen usw. zu speichern, die von dem kleinen Prozessor 104-i während der Validierung abgerufen und zurückgegeben werden können, um die Wahrscheinlichkeit zu erhöhen, dass sie mit dem erwarteten Wert übereinstimmen, der von den iterativen Validierungsanweisungen 126 der kleinen Prozessor-Firmware berechnet wurde.
-
Wie oben erwähnt, können die Schutzinformationen 122-i eine Sammlung von Zufallswerten enthalten, die von einem Zufallszahlengenerator erzeugt werden können, der von den iterativen Validierungsanweisungen für die Firmware des kleinen Prozessors 126 verwendet wird. Durch die Aufnahme von Zufallswerten in die Schutzinformationen 122-i ist es weniger wahrscheinlich, dass nicht autorisierter Code, der auf dem kleinen Prozessor 104-i ausgeführt wird, gültige Werte für die Validierung der kleinen Prozessor-Firmware 120-i erzeugen kann.
-
3 ist ein Blockdiagramm eines Systems 300 gemäß einiger Beispiele. Das System 300 kann eine Rechenvorrichtung, wie die in 1 gezeigte 100, umfassen. Das System 300 umfasst einen ersten Prozessor 302 (z.B. den Hauptprozessor 102 von 1), einen zweiten Prozessor 304 (z.B. einen kleinen Prozessor 104-i von 1) und ein Speichermedium 306, um erste Informationen 308 zu speichern, die maschinenlesbare Anweisungen 310 (z.B. die kleine Prozessor-Firmware 120-i) enthalten, die von dem zweiten Prozessor 304 ausgeführt werden können. Die erste Information 308 kann die Gesamtinformation 124-i aus 1 sein.
-
Der erste Prozessor 302 soll die maschinenlesbaren Anweisungen 310 unter Verwendung eines iterativen Validierungsprozesses 312 validieren, der eine Vielzahl von Iterationen 314-1, 314-2 usw. zu entsprechend unterschiedlichen Zeitpunkten umfasst. Jede jeweilige Iteration 314-j (j = 1, 2, ...) der Vielzahl von Iterationen umfasst eine Aufgabe 316 zur Ausgabe von Hinweisen, die einen jeweiligen Hinweis an den zweiten Prozessor 304 ausgibt, um einen Wert auf der Grundlage einer jeweiligen Teilmenge der ersten Informationen 308 zu berechnen. Die jeweilige Angabe enthält jeweilige Teilmengeninformationen (z. B. einen ersten Zufallsadressenbereich), die die jeweilige Teilmenge identifizieren, wobei sich die jeweiligen Teilmengeninformationen von anderen Teilmengeninformationen (z. B. einem zweiten Zufallsadressenbereich) unterscheiden, die in einer anderen Angabe enthalten sind, die in einer anderen Iteration der Vielzahl von Iterationen ausgegeben wird, wobei die anderen Teilmengeninformationen eine andere Teilmenge der ersten Informationen 308 identifizieren.
-
Die Aufgaben der jeweiligen Iteration 314-j umfassen ferner eine Gültigkeitsermittlungsaufgabe 318, die eine Gültigkeit der maschinenlesbaren Anweisungen 310 auf der Grundlage des vom zweiten Prozessor 304 an den ersten Prozessor 302 zurückgegebenen Wertes ermittelt.
-
In einigen Beispielen wählt der erste Prozessor 302 in jeder Iteration einen zufälligen Teil der ersten Information 308 zur Validierung aus.
-
In einigen Beispielen ist der erste Prozessor 302 mit dem zweiten Prozessor 304 über eine Verbindung (z. B. Sekundärbus 116 in 1) verbunden, die von einem Bus (z. B. 112 in 1) getrennt ist, der den ersten Prozessor 302 mit einer anderen elektronischen Komponente (z. B. 114 in 1) verbindet.
-
In einigen Beispielen berechnet der erste Prozessor 302 zur Validierung der maschinenlesbaren Anweisungen 310 in jeder Iteration einen entsprechenden Wert einer entsprechenden Teilmenge einer vertrauenswürdigen Kopie der ersten Informationen 308, vergleicht den entsprechenden Wert mit dem vom zweiten Prozessor 304 zurückgegebenen Wert und gibt an, dass die maschinenlesbaren Anweisungen 310 auf der Grundlage des Vergleichs gültig (oder ungültig) sind.
-
In einigen Beispielen führt der Prozessor 102 nach der Feststellung, dass die maschinenlesbaren Anweisungen 310 in einer ersten Iteration der mehreren Iterationen 314-1, 314-2 usw. gültig sind, eine zweite Iteration der mehreren Iterationen durch, um zu prüfen, ob die maschinenlesbaren Anweisungen 310 gültig sind. führt der Prozessor 102 eine zweite Iteration der Vielzahl von Iterationen durch, um zu prüfen, ob die maschinenlesbaren Anweisungen 310 gültig sind.
-
In einigen Beispielen werden die mehreren Iterationen 314-1, 314-2 usw. in regelmäßigen Abständen durchgeführt, d. h. jede Iteration 314-j wird nach Ablauf eines bestimmten Zeitintervalls eingeleitet.
-
In einigen Beispielen können die ersten Informationen 308 zusätzlich zu den maschinenlesbaren Anweisungen 310 auch Schutzinformationen wie z. B. Zufallswerte enthalten.
-
4 ist ein Blockdiagramm eines nicht-transitorischen maschinenlesbaren oder computerlesbaren Speichermediums 400, das maschinenlesbare Befehle speichert, die bei Ausführung einen ersten Prozessor (z.B. 102 in 1) veranlassen, verschiedene Aufgaben durchzuführen.
-
Die maschinenlesbaren Befehle enthalten iterative Validierungsprozessbefehle 402 zur Durchführung eines iterativen Validierungsprozesses, der eine Vielzahl von Iterationen umfasst, die zu unterschiedlichen Zeiten zur Validierung eines Programms durchgeführt werden, das auf einem zweiten Prozessor ausgeführt werden kann, der sich vom ersten Prozessor unterscheidet. Der iterative Validierungsprozess umfasst erste Iterationsbefehle 404, um in einer ersten Iteration eine erste Aufforderung an den zweiten Prozessor auszugeben, einen ersten Wert auf der Grundlage einer ersten Teilmenge des Programms zu berechnen, wobei die erste Aufforderung erste Teilmengeninformationen enthält, die eine erste Teilmenge gespeicherter Informationen einschließlich des Programms identifizieren. Die Anweisungen 404 für die erste Iteration sollen ferner in der ersten Iteration vom zweiten Prozessor den ersten Wert als Reaktion auf die erste Aufforderung empfangen und auf der Grundlage des vom zweiten Prozessor empfangenen ersten Werts bestimmen, ob das Programm gültig ist.
-
Der iterative Validierungsprozess umfasst zweite Iterationsanweisungen 406, um in einer zweiten Iteration eine zweite Aufforderung an den zweiten Prozessor auszugeben, einen zweiten Wert auf der Grundlage einer zweiten Teilmenge des Programms zu berechnen, wobei die zweite Aufforderung zweite Teilmengeninformationen enthält, die eine zweite Teilmenge der gespeicherten Informationen identifizieren, von dem zweiten Prozessor den zweiten Wert als Reaktion auf die erste Aufforderung zu empfangen und auf der Grundlage des von dem zweiten Prozessor empfangenen zweiten Werts zu bestimmen, ob das Programm gültig ist.
-
Der iterative Validierungsprozess kann weitere Iterationsanweisungen enthalten, um die Gültigkeitsprüfung in weiteren Iterationen durchzuführen.
-
In einigen Beispielen werden die gespeicherten Informationen in einem Speicher abgelegt (z. B. 118-i in 1). Zu den gespeicherten Informationen gehören ferner Zufallswerte, die einen ungenutzten Speicherplatz des Speichers ganz oder teilweise auffüllen.
-
5 ist ein Flussdiagramm eines Prozesses 500 gemäß einiger Beispiele. Der Prozess 500 umfasst die Durchführung (bei 502) eines iterativen Validierungsprozesses durch den ersten Prozessor, um maschinenlesbare Anweisungen, die auf dem zweiten Prozessor ausführbar sind, zu validieren, wobei der iterative Validierungsprozess eine Vielzahl von Iterationen umfasst, die zu verschiedenen Zeiten durchgeführt werden.
-
In jeder jeweiligen Iteration der Vielzahl von Iterationen umfasst der Prozess 500 das Ausgeben (bei 504) einer jeweiligen Angabe an den zweiten Prozessor, um einen Wert auf der Grundlage einer jeweiligen zufällig ausgewählten Teilmenge der maschinenlesbaren Anweisungen zu berechnen, wobei die jeweilige Angabe einen jeweiligen Speicheradressbereich umfasst, der die jeweilige zufällig ausgewählte Teilmenge identifiziert, und wobei sich der jeweilige Speicheradressbereich von einem anderen Speicheradressbereich unterscheidet, der in einer anderen Angabe enthalten ist, die in einer anderen Iteration der Vielzahl von Iterationen ausgegeben wird, wobei der andere Speicheradressbereich eine andere zufällig ausgewählte Teilmenge der maschinenlesbaren Anweisungen identifiziert.
-
In jeder jeweiligen Iteration der Vielzahl von Iterationen umfasst der Prozess 500 ferner die Bestimmung (bei 506) einer Gültigkeit der maschinenlesbaren Anweisungen auf der Grundlage des vom zweiten Prozessor an den ersten Prozessor zurückgegebenen Wertes, wobei verschiedene Iterationen des iterativen Validierungsprozesses verschiedene Validierungsergebnisse in Bezug auf die Validierung der maschinenlesbaren Anweisungen erzeugen können. Zum Beispiel kann eine erste Iteration anzeigen, dass die maschinenlesbaren Anweisungen gültig sind, und eine zweite Iteration kann anzeigen, dass die maschinenlesbaren Anweisungen nicht gültig sind. Wenn eine Iteration der mehreren Iterationen anzeigt, dass die maschinenlesbaren Anweisungen nicht gültig sind, werden die maschinenlesbaren Anweisungen als ungültig markiert.
-
Ein Speichermedium (z.B., 400 in 4 oder ein anderes hierin beschriebenes Speichermedium) kann eine oder eine Kombination der folgenden Elemente enthalten eine Halbleiterspeichervorrichtung wie ein dynamischer oder statischer Direktzugriffsspeicher (DRAM oder SRAM), ein löschbarer und programmierbarer Festwertspeicher (EPROM), ein elektrisch löschbarer und programmierbarer Festwertspeicher (EEPROM) und ein Flash-Speicher oder eine andere Art von nichtflüchtiger Speichervorrichtung; eine Magnetplatte wie eine Festplatte, eine Diskette und eine Wechselplatte; ein anderes magnetisches Medium einschließlich eines Bandes; ein optisches Medium wie eine Compact Disk (CD) oder eine digitale Videodisk (DVD); oder eine andere Art von Speichervorrichtung. Es ist zu beachten, dass die oben beschriebenen Anweisungen auf einem einzigen computer- oder maschinenlesbaren Speichermedium oder alternativ auf mehreren computer- oder maschinenlesbaren Speichermedien bereitgestellt werden können, die in einem großen System mit möglicherweise mehreren Knotenpunkten verteilt sind. Ein solches computerlesbares oder maschinenlesbares Speichermedium oder solche Speichermedien werden als Teil eines Artikels (oder eines Herstellungsartikels) betrachtet. Ein Artikel oder Herstellungsgegenstand kann sich auf jede hergestellte Einzelkomponente oder mehrere Komponenten beziehen. Das Speichermedium oder die Speichermedien können sich entweder in der Maschine befinden, auf der die maschinenlesbaren Anweisungen ausgeführt werden, oder an einem entfernten Standort, von dem maschinenlesbare Anweisungen über ein Netzwerk zur Ausführung heruntergeladen werden können.
-
In der vorstehenden Beschreibung werden zahlreiche Details aufgeführt, um ein Verständnis des hierin offengelegten Themas zu vermitteln. Allerdings können Implementierungen ohne einige dieser Details praktiziert werden. Andere Implementierungen können Modifikationen und Abweichungen von den oben beschriebenen Details enthalten. Es ist beabsichtigt, dass die beigefügten Ansprüche solche Modifikationen und Variationen abdecken.