DE102021109479A1 - Validierung maschinenlesbarer anweisungen durch einen iterativen validierungsprozess - Google Patents

Validierung maschinenlesbarer anweisungen durch einen iterativen validierungsprozess Download PDF

Info

Publication number
DE102021109479A1
DE102021109479A1 DE102021109479.8A DE102021109479A DE102021109479A1 DE 102021109479 A1 DE102021109479 A1 DE 102021109479A1 DE 102021109479 A DE102021109479 A DE 102021109479A DE 102021109479 A1 DE102021109479 A1 DE 102021109479A1
Authority
DE
Germany
Prior art keywords
processor
information
machine
subset
readable instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021109479.8A
Other languages
English (en)
Inventor
Justin York
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102021109479A1 publication Critical patent/DE102021109479A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Abstract

In einigen Beispielen enthält ein System einen ersten Prozessor, einen zweiten Prozessor und ein Speichermedium zum Speichern erster Informationen, die maschinenlesbare Anweisungen umfassen, die vom zweiten Prozessor ausgeführt werden können. Der erste Prozessor soll die maschinenlesbaren Anweisungen unter Verwendung eines iterativen Validierungsprozesses validieren, der eine Vielzahl von Iterationen zu verschiedenen Zeiten umfasst, wobei jede jeweilige Iteration der Vielzahl von Iterationen die Ausgabe einer jeweiligen Anzeige an den zweiten Prozessor umfasst, um einen Wert auf der Grundlage einer jeweiligen Teilmenge der ersten Informationen zu berechnen, wobei die jeweilige Angabe eine jeweilige Teilmengeninformation enthält, die die jeweilige Teilmenge identifiziert, wobei sich die jeweilige Teilmengeninformation von einer anderen Teilmengeninformation unterscheidet, die in einer anderen Angabe enthalten ist, die in einer anderen Iteration der Vielzahl von Iterationen ausgegeben wird, wobei die andere Teilmengeninformation eine andere Teilmenge der ersten Information identifiziert. Jede Iteration umfasst ferner die Bestimmung einer Gültigkeit der maschinenlesbaren Anweisungen auf der Grundlage des vom zweiten Prozessor an den ersten Prozessor zurückgegebenen Wertes.

Description

  • 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.

Claims (20)

  1. Ein System, das Folgendes umfasst: einen ersten Prozessor; einen zweiten Prozessor; ein Speichermedium zum Speichern erster Informationen mit maschinenlesbaren Anweisungen, die vom zweiten Prozessor ausgeführt werden können, wobei der erste Prozessor die maschinenlesbaren Anweisungen unter Verwendung eines iterativen Validierungsprozesses validiert, der eine Vielzahl von Iterationen zu verschiedenen Zeitpunkten umfasst, wobei jede jeweilige Iteration der Vielzahl von Iterationen Folgendes umfasst: Ausgeben einer jeweiligen Angabe an den zweiten Prozessor, um einen Wert auf der Grundlage einer jeweiligen Teilmenge der ersten Informationen zu berechnen, wobei die jeweilige Angabe eine jeweilige Teilmengeninformation enthält, die die jeweilige Teilmenge identifiziert, wobei sich die jeweilige Teilmengeninformation von einer anderen Teilmengeninformation unterscheidet, die in einer anderen Angabe enthalten ist, die in einer anderen Iteration der Vielzahl von Iterationen ausgegeben wird, wobei die andere Teilmengeninformation eine andere Teilmenge der ersten Informationen identifiziert, und Bestimmen einer Gültigkeit der maschinenlesbaren Anweisungen auf der Grundlage des vom zweiten Prozessor an den ersten Prozessor zurückgegebenen Wertes.
  2. System nach Anspruch 1, wobei der erste Prozessor in der jeweiligen Iteration die Aufgabe hat: die jeweilige Teilmenge als einen zufälligen Teil der ersten Information auswählen, wobei sich der in der jeweiligen Iteration ausgewählte zufällige Teil von einem weiteren zufälligen Teil der ersten Information unterscheidet, wobei der weitere zufällige Teil Teil der anderen Teilmenge ist.
  3. System nach Anspruch 2, wobei die jeweiligen Teilmengeninformationen einen jeweiligen Zufallsadressenbereich umfassen, der den jeweiligen Zufallsanteil identifiziert, und die unterschiedlichen Teilmengeninformationen einen unterschiedlichen Zufallsadressenbereich umfassen, der den weiteren Zufallsanteil identifiziert.
  4. System nach Anspruch 1, wobei der erste Prozessor mit dem zweiten Prozessor über eine Verbindung verbunden ist, die von einem Bus getrennt ist, der den ersten Prozessor mit einer anderen elektronischen Komponente verbindet.
  5. System nach Anspruch 1, wobei der Wert ein kryptographischer Hash-Wert ist, der auf der Grundlage der jeweiligen Teilmenge der ersten Information berechnet wird.
  6. System nach Anspruch 1, wobei der erste Prozessor in der jeweiligen Iteration die Aufgabe hat: einen entsprechenden Wert einer entsprechenden Teilmenge einer vertrauenswürdigen Kopie der ersten Informationen zu berechnen, den entsprechenden Wert mit dem vom zweiten Prozessor zurückgegebenen Wert zu vergleichen, und anzeigen, dass die im Speichermedium gespeicherten maschinenlesbaren Anweisungen auf der Grundlage des Vergleichs gültig sind.
  7. Das System nach Anspruch 1, wobei der erste Prozessor dazu ausgebildet ist: nach der Feststellung, dass die maschinenlesbaren Anweisungen in einer ersten Iteration der Vielzahl von Iterationen gültig sind, eine zweite Iteration der Vielzahl von Iterationen durchführen, um zu prüfen, ob die maschinenlesbaren Anweisungen gültig sind.
  8. Das System nach Anspruch 7, wobei der erste Prozessor in der zweiten Iteration die Aufgabe hat: anzeigen, dass die maschinenlesbaren Anweisungen ungültig sind, wenn ein vom zweiten Prozessor in der zweiten Iteration zurückgegebener Wert nicht mit einem erwarteten Wert übereinstimmt.
  9. System nach Anspruch 1, wobei die Mehrzahl der Iterationen in regelmäßigen Abständen durchgeführt wird.
  10. System nach Anspruch 1, wobei die erste Information die maschinenlesbaren Anweisungen und Zufallswerte umfasst.
  11. System nach Anspruch 1, wobei der erste Prozessor weitere maschinenlesbare Anweisungen ausführt, die von einer Hardware-Vertrauensbasis validiert wurden, und wobei die weiteren maschinenlesbaren Anweisungen auf dem ersten Prozessor ausführbar sind, um den iterativen Validierungsprozess durchzuführen.
  12. System nach Anspruch 1, wobei die maschinenlesbaren Anweisungen Firmware umfassen, die von dem zweiten Prozessor ausgeführt werden kann.
  13. Das System nach Anspruch 1 umfasst ferner: einen dritten Prozessor; und ein weiteres Speichermedium zum Speichern von zweiten Informationen, die weitere maschinenlesbare Anweisungen enthalten, die von dem dritten Prozessor ausgeführt werden können, wobei der erste Prozessor die weiteren maschinenlesbaren Befehle unter Verwendung eines weiteren iterativen Validierungsprozesses validiert, der eine Vielzahl von Iterationen zu verschiedenen Zeitpunkten umfasst, wobei jede jeweilige Iteration der Vielzahl von Iterationen des weiteren iterativen Validierungsprozesses umfasst: Ausgeben einer jeweiligen weiteren Anzeige an den dritten Prozessor, um einen weiteren Wert auf der Grundlage einer jeweiligen Teilmenge der zweiten Informationen zu berechnen, wobei die jeweilige Anzeige jeweilige Teilmengeninformationen enthält, die die jeweilige Teilmenge der zweiten Informationen identifizieren, und Bestimmen einer Gültigkeit der weiteren maschinenlesbaren Anweisungen auf der Grundlage des weiteren Wertes, der von dem dritten Prozessor an den ersten Prozessor zurückgegeben wird.
  14. Ein nicht-transitorisches, maschinenlesbares Speichermedium, das Anweisungen enthält, die bei Ausführung einen ersten Prozessor veranlassen,: einen iterativen Validierungsprozess durchführen, der eine Vielzahl von Iterationen umfasst, die zu verschiedenen Zeiten durchgeführt werden, um ein Programm zu validieren, das auf einem zweiten Prozessor ausgeführt werden kann, der sich von dem ersten Prozessor unterscheidet, wobei der iterative Validierungsprozess umfasst: in einer ersten Iteration: Ausgeben einer ersten Aufforderung an den zweiten Prozessor, 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, von dem zweiten Prozessor den ersten Wert als Antwort auf die erste Aufforderung zu empfangen, und Bestimmen, ob das Programm gültig ist, basierend auf dem ersten Wert, der von dem zweiten Prozessor empfangen wurde; und in einer zweiten Iteration: Ausgabe einer zweiten Aufforderung an den zweiten Prozessor, 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 Antwort auf die erste Aufforderung zu empfangen, und auf der Grundlage des vom zweiten Prozessor empfangenen zweiten Wertes bestimmen, ob das Programm gültig ist.
  15. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 14, wobei der erste und der zweite Wert Hash-Werte oder Prüfsummen umfassen.
  16. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 14, wobei die Anweisungen bei der Ausführung den ersten Prozessor veranlassen,: Ausgabe von Challenges als Teil des iterativen Validierungsprozesses auf periodischer Basis an den zweiten Prozessor, wobei die Challenges die erste Challenge und die zweite Challenge umfassen.
  17. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 14, wobei die gespeicherten Informationen in einem Speicher gespeichert sind und die gespeicherten Informationen ferner Zufallswerte umfassen, die einen unbenutzten Speicherplatz des Speichers ganz oder teilweise auffüllen.
  18. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 14, wobei die vom ersten Prozessor ausführbaren Anweisungen von einer Hardware-Vertrauensbasis validiert wurden.
  19. Verfahren für ein System mit einem ersten Prozessor und einem zweiten Prozessor, umfassend; Durchführen 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, wobei jede jeweilige Iteration der Vielzahl von Iterationen umfasst: Ausgeben eines jeweiligen Hinweises an den zweiten Prozessor, um einen Wert auf der Grundlage einer jeweiligen zufällig ausgewählten Teilmenge gespeicherter Informationen zu berechnen, die die maschinenlesbaren Anweisungen umfassen, wobei der jeweilige Hinweis einen jeweiligen Speicheradressbereich enthält, der die jeweilige zufällig ausgewählte Teilmenge identifiziert, und wobei sich der jeweilige Speicheradressbereich von einem anderen Speicheradressbereich unterscheidet, der in einem anderen Hinweis enthalten ist, der in einer anderen Iteration der Vielzahl von Iterationen ausgegeben wird, wobei der andere Speicheradressbereich eine andere zufällig ausgewählte Teilmenge der gespeicherten Informationen identifiziert, und Bestimmen einer Gültigkeit der maschinenlesbaren Anweisungen auf der Grundlage des vom zweiten Prozessor an den ersten Prozessor zurückgegebenen Wertes, wobei unterschiedliche Iterationen des iterativen Validierungsprozesses unterschiedliche Validierungsergebnisse in Bezug auf die Validierung der maschinenlesbaren Anweisungen erzeugen können.
  20. Verfahren nach Anspruch 19, das ferner in der jeweiligen Iteration umfasst: Berechnung eines entsprechenden Wertes einer entsprechenden Teilmenge einer vertrauenswürdigen Kopie der gespeicherten Informationen, Vergleichen des entsprechenden Wertes mit dem vom zweiten Prozessor zurückgegebenen Wert und anzeigt, dass die gespeicherten maschinenlesbaren Anweisungen auf der Grundlage des Vergleichs gültig sind.
DE102021109479.8A 2020-07-23 2021-04-15 Validierung maschinenlesbarer anweisungen durch einen iterativen validierungsprozess Pending DE102021109479A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/937,048 2020-07-23
US16/937,048 US11269637B2 (en) 2020-07-23 2020-07-23 Validating machine-readable instructions using an iterative validation process

Publications (1)

Publication Number Publication Date
DE102021109479A1 true DE102021109479A1 (de) 2022-01-27

Family

ID=79179584

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021109479.8A Pending DE102021109479A1 (de) 2020-07-23 2021-04-15 Validierung maschinenlesbarer anweisungen durch einen iterativen validierungsprozess

Country Status (3)

Country Link
US (1) US11269637B2 (de)
CN (1) CN113971276B (de)
DE (1) DE102021109479A1 (de)

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9177153B1 (en) * 2005-10-07 2015-11-03 Carnegie Mellon University Verifying integrity and guaranteeing execution of code on untrusted computer platform
US8285999B1 (en) * 2008-12-05 2012-10-09 The Research Foundation Of State University Of New York System and method for authenticating remote execution
DK2462507T3 (da) * 2009-08-04 2019-09-23 Univ Carnegie Mellon Fremgangsmåder og apparater til brugerverificerbar sikker sti i tilstedeværelsen af malware
US8775784B2 (en) 2011-11-11 2014-07-08 International Business Machines Corporation Secure boot up of a computer based on a hardware based root of trust
US20140281502A1 (en) * 2013-03-15 2014-09-18 General Instrument Corporation Method and apparatus for embedding secret information in digital certificates
EP2854066B1 (de) * 2013-08-21 2018-02-28 Nxp B.V. System und Verfahren zur Kontrolle der Integrität von Firmware mit Benutzung von mehreren Schlüsseln und OTP-Speicher
KR101846427B1 (ko) * 2014-04-28 2018-04-06 인텔 코포레이션 컴퓨팅 장치의 보안 부팅 기법
US9740866B2 (en) * 2015-06-10 2017-08-22 The Boeing Company Automatic measuring boot process using an automatic measuring processor coupled to a memory
US20170093586A1 (en) * 2015-09-25 2017-03-30 Qualcomm Incorporated Techniques for managing certificates on a computing device
US10346343B2 (en) 2016-06-24 2019-07-09 Intel Corporation Hardware accelerator for platform firmware integrity check
US20190199735A1 (en) * 2016-06-29 2019-06-27 Western Digital Technologies, Inc. Device and method for verifying integrity of firmware
EP3279826A1 (de) * 2016-08-04 2018-02-07 Nagravision SA Sequenzverifikation
EP3291087A1 (de) 2016-09-01 2018-03-07 Nxp B.V. Vorrichtung und zugehöriges verfahren zur authentifizierung von firmware
US10318736B2 (en) 2016-10-31 2019-06-11 Hewlett Packard Enterprise Development Lp Validating operating firmware of a periperhal device
US10491401B2 (en) * 2017-02-21 2019-11-26 Google Llc Verification of code signature with flexible constraints
US11522679B2 (en) 2017-10-05 2022-12-06 Intel Corporation Exposing cryptographic measurements of peripheral component interconnect express (PCIe) device controller firmware
US10673626B2 (en) * 2018-03-30 2020-06-02 Spyrus, Inc. Threshold secret share authentication proof and secure blockchain voting with hardware security modules
US11714910B2 (en) 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
US20190394046A1 (en) * 2018-06-22 2019-12-26 Sf Motors, Inc. Secure firmware updates for remote vehicles
CN109144584A (zh) 2018-07-27 2019-01-04 浪潮(北京)电子信息产业有限公司 一种可编程逻辑器件及其启动方法、系统和存储介质
US11314868B2 (en) 2018-08-31 2022-04-26 Fungible, Inc. Rapidly establishing a chain of trust in a computing system

Also Published As

Publication number Publication date
CN113971276A (zh) 2022-01-25
US20220027157A1 (en) 2022-01-27
US11269637B2 (en) 2022-03-08
CN113971276B (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
CN108446407B (zh) 基于区块链的数据库审计方法和装置
US7266475B1 (en) Trust evaluation
CN105122258B (zh) 对系统进行配置的方法、计算系统以及物品
DE102020122712A1 (de) Integritätsmanifest-zertifikat
WO2012065774A1 (en) A method for attesting a plurality of data processing systems
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
WO2021066954A1 (en) Subscription to dependencies in smart contracts
US20190087582A1 (en) Bios security
DE102021101826A1 (de) Zugriffsberechtigungen für speicherbereiche
DE102021105949A1 (de) Freischaltung des zugriffs auf informationen in abhängigkeit von der validierung von programmcodes virtueller entitäten
DE102021127631A1 (de) Auf speichersuche basierende prozessüberwachung
CN107045605A (zh) 一种实时度量方法及装置
CN106203177A (zh) 一种带有安全防护的财务管理系统
DE102022109208A1 (de) Verwaltung der Verwendung von Geheimnissen der Verwaltungssteuerung basierend auf der Besitzgeschichte der Firmware
US20210357499A1 (en) Restoration of firmware subsystems based on manufacturing states
DE102021127237A1 (de) Messbehälter
CN113704037A (zh) 设备测试方法、装置、计算机设备和存储介质
DE102021101891A1 (de) Bestimmen , ob eine aktion zur berechnung ausgeführt werden soll gerät basierend auf der analyse von endorsement-informationen eines sicherheits-coprozessors
DE102021109479A1 (de) Validierung maschinenlesbarer anweisungen durch einen iterativen validierungsprozess
CN112214756A (zh) 一种消费机的权限管理系统、方法及存储介质
EP3980955A1 (de) Abonnement für bearbeitungen einer blockchaintransaktion
US11755404B2 (en) Custom baseboard management controller (BMC) firmware stack monitoring system and method
DE602004003677T2 (de) Bootsteuersystem
DE102022129538A1 (de) Datenintegritätsvalidierung von externem speicher
DE102021127242A1 (de) System und Verfahren zum Signieren und Verriegeln einer Boot-Informationsdatei für ein Host-Computersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TX, US

R016 Response to examination communication