DE102022105069A1 - Systeme, verfahren und vorrichtungen für gesicherte nichtflüchtige speicher - Google Patents

Systeme, verfahren und vorrichtungen für gesicherte nichtflüchtige speicher Download PDF

Info

Publication number
DE102022105069A1
DE102022105069A1 DE102022105069.6A DE102022105069A DE102022105069A1 DE 102022105069 A1 DE102022105069 A1 DE 102022105069A1 DE 102022105069 A DE102022105069 A DE 102022105069A DE 102022105069 A1 DE102022105069 A1 DE 102022105069A1
Authority
DE
Germany
Prior art keywords
processor
code
signal
secured
validation
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
DE102022105069.6A
Other languages
English (en)
Inventor
Sandeep Krishnegowda
Zhi Feng
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.)
Infineon Technologies LLC
Original Assignee
Infineon Technologies LLC
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 Infineon Technologies LLC filed Critical Infineon Technologies LLC
Publication of DE102022105069A1 publication Critical patent/DE102022105069A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

Systeme, Verfahren und Vorrichtungen booten Prozessoren und nichtflüchtige Speicher sicher. Verfahren umfassen Implementieren, unter Verwendung eines Controllers eines gesicherten nichtflüchtigen Speichers, einer Validierungsoperation an einem ersten Teil von Code, der in einer ersten gesicherten Speicherungsregion des gesicherten nichtflüchtigen Speichers gespeichert ist, wobei die Validierungsoperation Berechnung eines Validierungswerts umfasst. Verfahren umfassen außerdem Abrufen eines zweiten Teils von Code aus einer zweiten gesicherten Speicherungsregion, wobei der zweite Teil von Code einen vorberechneten Validierungswert umfasst, wobei der erste und zweite Teil von Code dem Booten eines Prozessors zugeordnet sind; Implementieren einer Vergleichsoperation des Validierungswerts und des vorberechneten Validierungswerts. Verfahren umfassen ferner Erzeugen eines Signals auf der Basis eines Ergebnisses der Vergleichsoperation, unter Verwendung des Controllers, wobei das Signal über eine Schnittstelle des gesicherten nichtflüchtigen Speichers dem Prozessor zugeführt wird und das Signal Booten des Prozessors als Reaktion auf eine übereinstimmende Vergleichsoperation ermöglicht.

Description

  • Die vorliegende Offenbarung betrifft allgemein nichtflüchtige Speicher und insbesondere gesicherte Boot-Operationen, die nichtflüchtigen Speichern zugeordnet sind.
  • Die vorliegende Anmeldung beansprucht den Prioritätsnutzen unter 35 U.S.C. § 119(e) der vorläufigen US-Patentanmeldung Nr. 63/157,185 , eingereicht am 5.3.2021, die hiermit für alle Zwecke vollständig durch Bezugnahme aufgenommen wird.
  • Prozessoren können beim Beginn des Betriebs und bei der Initialisierung verschiedene Prozesse durchlaufen. Zum Beispiel kann ein Prozessor eine oder mehrere Boot-Operationen durchlaufen, wenn er initialisiert wird und wenn zugeordnete Software geladen und initialisiert wird. Zur Implementierung solcher Boot-Operationen kann zum Beispiel ein Boot-Loader verwendet werden. Der Boot-Loader kann dementsprechend Boot-Code sein, der das Laden von Informationen abwickelt, die von dem Prozessor und dem Prozessor zugeordneten Anwendungen verwendet werden können. Der Boot-Loader kann ein mehrstufiger Boot-Loader sein. Zum Beispiel kann der Boot-Loader eine erste Stufe und eine zweite Stufe aufweisen. Herkömmliche Prozessoren bleiben bezüglich ihrer Fähigkeit, solche mehrstufigen Boot-Loader zu implementieren, während sichergestellt wird, dass der Boot-Prozess sicher bleibt, begrenzt.
  • Eine Aufgabe besteht darin, bekannte Ansätze zu verbessern.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
  • Diese hierin vorgeschlagenen Beispiele können insbesondere auf zumindest einer der nachfolgenden Lösungen basieren. Insbesondere können Kombinationen der nachfolgenden Merkmale eingesetzt werden, um ein gewünschtes Ergebnis zu erreichen. Die Merkmale des Verfahrens können mit (einem) beliebigen Merkmal(en) der Vorrichtung oder Systems oder umgekehrt kombiniert werden.
  • Es wird ein Verfahren vorgeschlagen, umfassend:
    • - Implementieren, unter Verwendung eines Controllers eines gesicherten nichtflüchtigen Speichers, einer Validierungsoperation an einem ersten Teil von Code, der in einer ersten gesicherten Speicherungsregion des gesicherten nichtflüchtigen Speichers gespeichert ist, wobei die Validierungsoperation eine Berechnung eines Validierungswerts umfasst;
    • - Abrufen eines zweiten Teils von Code aus einer zweiten gesicherten Speicherungsregion, wobei der zweite Teil von Code einen vorberechneten Validierungswert umfasst, wobei der erste Teil von Code und der zweite Teil von Code einem Booten eines Prozessors zugeordnet sind;
    • - Implementieren einer Vergleichsoperation des Validierungswerts und des vorberechneten Validierungswerts unter Verwendung des Controllers;
    • - Erzeugen eines Signals auf der Basis eines Ergebnisses der Vergleichsoperation, unter Verwendung des Controllers, wobei das Signal über eine Schnittstelle des gesicherten nichtflüchtigen Speichers dem Prozessor zugeführt wird und das Signal das Booten des Prozessors als Reaktion auf eine übereinstimmende Vergleichsoperation ermöglicht.
  • Es ist eine Weiterbildung, dass das Verfahren ferner Folgendes umfasst:
    • - Übertragen des Signals zu dem Prozessor über mindestens einen zugeordneten Anschluss der Schnittstelle.
  • Es ist eine Weiterbildung, dass das Verfahren ferner Folgendes umfasst:
    • - Übertragen eines zusätzlichen Signals über einen zusätzlichen Anschluss der Schnittstelle, wobei das zusätzliche Signal zu einem zusätzlichen Prozessor übertragen wird.
  • Es ist eine Weiterbildung, dass der Prozessor ein Anwendungsprozessor ist und dass der erste Teil von Code einen Typ von Code einer aus der folgenden Gruppe umfasst: eine erste Stufe eines Boot-Loaders, eine zweiten Stufe des Boot-Loaders, ein Anwendungscode für den Anwendungsprozessor.
  • Es ist eine Weiterbildung, dass die erste gesicherte Speicherungsregion und die zweite gesicherte Speicherungsregion durch einen Benutzer definiert werden.
  • Es ist eine Weiterbildung, dass der vorberechnete Validierungswert von einem Benutzer während einer oder mehrerer initialer Konfigurationsoperationen empfangen wird.
  • Es ist eine Weiterbildung, dass der gesicherte nichtflüchtige Speicher einen Vertrauensanker, RoT, für einen Anwendungsprozessor umfasst.
  • Es ist eine Weiterbildung, dass das Signal ein Rücksetzsignal, Reset-Signal, ist und dass das Erzeugen des Signals ein Rücksetzen des Prozessors abbricht.
  • Es ist eine Weiterbildung, dass der erste Teil von Code als Firmware und/oder als Daten gespeichert wird.
  • Auch wird eine Vorrichtung angegeben, umfassend:
    • - einen gesicherten nichtflüchtigen Speicher, der eine oder mehrere gesicherte Speicherungsregionen umfasst;
    • - einen Controller, der ein oder mehrere Verarbeitungselemente umfasst, die eingerichtet sind zum
      • - Implementieren einer Validierungsoperation an einem ersten Teil von Code, der in einer ersten gesicherten Speicherungsregion des gesicherten nichtflüchtigen Speichers gespeichert ist, wobei die Validierungsoperation eine Berechnung eines Validierungswerts umfasst;
      • - Abrufen eines zweiten Teils von Code aus einer zweiten gesicherten Speicherungsregion, wobei der zweite Teil von Code einen vorberechneten Validierungswert umfasst, wobei der erste Teil von Code und der zweite Teil von Code einem Booten eines Prozessors zugeordnet sind;
      • - Implementieren einer Vergleichsoperation auf der Basis des Vergleichs des Validierungswerts und des vorberechneten Validierungswerts;
      • - Erzeugen eines Signals auf der Basis eines Ergebnisses der Vergleichsoperation, wobei das Signal über eine Schnittstelle des gesicherten nichtflüchtigen Speichers dem Prozessor zugeführt wird und wobei das Signal das Booten des Prozessors als Reaktion auf eine übereinstimmende Vergleichsoperation ermöglicht.
  • Es ist eine Weiterbildung, dass der Controller weiterhin eingerichtet ist zum Übertragen des Signals zu dem Prozessor über mindestens einen zugeordneten Anschluss der Schnittstelle.
  • Es ist eine Weiterbildung, dass der Controller ferner eingerichtet ist zum Übertragen eines zusätzlichen Signals über einen zusätzlichen Anschluss der Schnittstelle, wobei das zusätzliche Signal zu einem zusätzlichen Prozessor übertragen wird.
  • Es ist eine Weiterbildung, dass der Prozessor ein Anwendungsprozessor ist und dass der erste Teil von Code einen Typ von Code aus einer folgenden Gruppe umfasst: eine erste Stufe eines Boot-Loaders, eine zweiten Stufe des Boot-Loaders, ein Anwendungscode für den Anwendungsprozessor.
  • Es ist eine Weiterbildung, dass das Signal ein Rücksetzsignal, Reset-Signal, ist und dass das Erzeugen des Signals ein Rücksetzen des Prozessors abbricht.
  • Es ist eine Weiterbildung, dass der erste Teil von Code als Firmware und/oder als Daten gespeichert wird.
  • Auch wird ein System vorgeschlagen, umfassend:
    • - einen nichtflüchtigen Speicher, der eine oder mehrere gesicherte Speicherungsregionen umfasst;
    • - eine Schnittstelle, die mehrere Anschlüsse umfasst;
    • - einen Controller, der ein oder mehrere Verarbeitungselemente umfasst, die eingerichtet sind zum
      • - Implementieren einer Validierungsoperation an einem ersten Teil von Code, der in einer ersten gesicherten Speicherungsregion des gesicherten nichtflüchtigen Speichers gespeichert ist, wobei die Validierungsoperation eine Berechnung eines Validierungswerts umfasst;
      • - Abrufen eines zweiten Teils von Code aus einer zweiten gesicherten Speicherungsregion, wobei der zweite Teil von Code einen vorberechneten Validierungswert umfasst, wobei der erste Teil von Code und der zweite Teil von Code einem Booten eines Prozessors zugeordnet sind;
      • - Implementieren einer Vergleichsoperation auf der Basis eines Vergleichs des Validierungswerts und des vorberechneten Validierungswerts;
      • - Erzeugen eines Signals auf der Basis eines Ergebnisses der Vergleichsoperation, wobei das Signal über die Schnittstelle dem Prozessor zugeführt wird und das Signal das Booten des Prozessors als Reaktion auf eine übereinstimmende Vergleichsoperation ermöglicht.
  • Es ist eine Weiterbildung, dass der Controller ferner eingerichtet ist zum Übertragen des Signals zu dem Prozessor über einen zugewiesenen Anschluss der Schnittstelle.
  • Es ist eine Weiterbildung, dass der Controller ferner eingerichtet ist zum Übertragen eines zusätzlichen Signals über einen zusätzlichen Anschluss der Schnittstelle, wobei das zusätzliche Signal zu einem zusätzlichen Prozessor übertragen wird.
  • Es ist eine Weiterbildung, dass das Signal ein Rücksetzsignal, Reset-Signal, ist und dass das Erzeugen des Signals ein Rücksetzen des Prozessors abbricht.
  • Es ist eine Weiterbildung, dass der Prozessor mit mindestens einem der mehreren Anschlüsse gekoppelt ist und das Signal über den mindestens einen der mehreren Anschlüsse empfängt und der mindestens eine der mehreren Anschlüsse benutzerdefiniert ist.
  • Die oben beschriebenen Eigenschaften, Merkmale und Vorteile sowie die Art und Weise, wie diese erreicht werden, werden weiter ausgeführt im Zusammenhang mit der folgenden schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Dabei können zur Übersichtlichkeit gleiche oder gleichwirkende Elemente mit gleichen Bezugszeichen versehen sein.
    • 1 zeigt ein Beispiel für ein System für gesicherten nichtflüchtigen Speicher, ausgelegt gemäß einigen Ausführungsformen.
    • 2 zeigt ein Beispiel für ein anderes System für gesicherten nichtflüchtigen Speicher, ausgelegt gemäß einigen Ausführungsformen.
    • 3 zeigt ein Beispiel für eine Vorrichtung für gesicherten nichtflüchtigen Speicher, ausgelegt gemäß einigen Ausführungsformen.
    • 4 zeigt ein Beispiel für ein Verfahren für gesichertes Booten eines nichtflüchtigen Speichers, implementiert gemäß einigen Ausführungsformen.
    • 5 zeigt ein Beispiel für ein anderes Verfahren für gesichertes Booten eines nichtflüchtigen Speichers, implementiert gemäß einigen Ausführungsformen.
    • 6 zeigt ein Beispiel für noch ein anderes Verfahren für gesichertes Booten eines nichtflüchtigen Speichers, implementiert gemäß einigen Ausführungsformen.
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis der dargestellten Konzepte zu gewährleisten. Die dargestellten Konzepte können ohne einige oder alle dieser spezifischen Einzelheiten praktiziert werden. In anderen Fällen wurden wohlbekannte Prozessoperationen nicht im Detail beschrieben, um die beschriebenen Konzepte nicht unnötigerweise zu verschleiern. Obwohl einige Konzepte in Verbindung mit den spezifischen Beispielen beschrieben werden, versteht sich, dass diese Beispiele nicht als Beschränkung aufzufassen sind.
  • Prozessoren können Boot-Loader und Boot-Code benutzen, um Boot-Operationen zu implementieren. Prozessoren, wie etwa Anwendungsprozessoren und Mikrocontroller, könnten j edoch keine internen nichtflüchtigen Speicher umfassen und können externe nichtflüchtige Speichervorrichtungen verwenden, um solche Boot-Loader und Boot-Code zu speichern. Dementsprechend müssen sich herkömmliche Anwendungsprozessoren möglicherweise für Boot-Operationen auf ungesicherte externe Speichervorrichtungen verlassen. Die Synchronisation zwischen der Speichervorrichtung und dem Prozessor könnte außerdem nicht möglich sein, da die Speichervorrichtung sich außerhalb einer vertrauenswürdigen Umgebung oder Zone befinden kann und ungesichert sein kann. Dementsprechend bleiben herkömmliche Prozessoren und Speichervorrichtungen bezüglich ihrer Fähigkeit, solche Boot-Operationen auf gesicherte Weise zu implementieren, beschränkt.
  • Wenn sich insbesondere eine Speichervorrichtung außerhalb einer vertrauenswürdigen Umgebung oder Zone befindet, werden Inhalte der Speichervorrichtung von der ungesicherten Speichervorrichtung außerhalb eines Prozessors in SRAM (statischen Direktzugriffsspeicher) im Prozessor kopiert und vor der Ausführung auf Integrität geprüft. Solche Operationen tragen beim Herauffahren eines Prozessors oder Mikrocontrollers zur Verzögerung bei und ermöglichen auch Denial-of-Service-Attacken, weil die Daten in der externen Speichervorrichtung modifiziert werden können. Wenn in solchen Situationen ein Prozessor gehackt wird, können Rollback-Attacken ausgeführt werden, weil die Speichervorrichtung nicht gesichert ist.
  • Hier offenbarte Ausführungsformen ermöglichen das gesicherte Initialisieren und Betreiben von Prozessoren, wie etwa Anwendungsprozessoren. Wie nachfolgend ausführlicher besprochen wird, kann ein gesicherter Teil einer Speichervorrichtung, der eine gesicherte Speicherungsregion, wie etwa ein Vertrauensanker (auch bezeichnet als RoT, Root of Trust) sein kann, verwendet werden, um Validierung von Boot-Operationen abzuwickeln, und eine Schnittstelle eines Speichermoduls, das den gesicherten Teil enthält, kann verwendet werden, um Boot-Ereignisse und Code-Validierung mit dem Prozessor zu synchronisieren. Auf diese Weise kann eine gesicherte Region der Speichervorrichtung verwendet werden, um Sicherheit des Boot-Prozesses sicherzustellen, und die Speichervorrichtung kann dafür ausgelegt werden, Betrieb des Prozessors zu ermöglichen, wenn eine solche Validierung und Boot-Operation abgeschlossen ist. Bei einigen Ausführungsformen können solche Operationen mit dem Herauffahren einer oder mehrerer Komponenten eines SoC (System auf einem Chip) synchronisiert werden, um somit die Verzögerung des gesicherten Boot-Prozesses zu verringern.
  • 1 zeigt ein Beispiel für ein System für gesicherten nichtflüchtigen Speicher, ausgelegt gemäß einigen Ausführungsformen. Wie nachfolgend ausführlicher besprochen werden wird, kann ein System, wie etwa das System 100, eine gesicherte Verarbeitungsumgebung eines gesicherten Speichermoduls benutzen, um Validierungsoperationen für einen Bootprozess eines Prozessors zu implementieren.
  • Außerdem kann das gesicherte Speichermodul dafür ausgelegt werden, während des Bootprozesses ein Signal zu erzeugen und zum Prozessor zu senden, um Verwaltung des Prozessors während Validierungsoperationen des Bootprozesses zu erleichtern.
  • Das System 100 umfasst einen Prozessor 102, der ein Anwendungsprozessor sein kann. Dementsprechend kann der Prozessor 102 dafür ausgelegt sein, Verarbeitungsoperationen auszuführen und eine Betriebsumgebung für eine oder mehrere Anwendungen zu unterstützen. In einem Beispiel kann der Prozessor 102 ein Mobil-Anwendungsprozessor sein. Bei einigen Ausführungsformen kann der Prozessor 102 über ein SoC (System auf einem Chip) oder andere geeignete Verarbeitungshardware, wie etwa eine IC-Kapselung (integrierte Schaltung) implementiert werden. Es versteht sich, dass der Prozessor 102 eine beliebige geeignete Art von Prozessor sein kann. Wie nachfolgend ausführlicher besprochen werden wird, kann der Prozessor 102 unter Verwendung einer oder mehrerer Boot-Operationen initialisiert werden, die in Boot-Code gespeichert sind, mit dem ein Boot-Loader umgehen kann. Bei verschiedenen Ausführungsformen kann das System 100 auch eine Speichervorrichtung, wie etwa den Speicher 104, umfassen, die Daten speichern kann, auf die der Prozessor 102 zugreift. Bei verschiedenen Ausführungsformen ist der Speicher 104 dafür ausgelegt, über eine Schnittstelle, wie etwa eine Schnittstelle von DRAM (dynamischer Direktzugriffsspeicher), kommunikativ mit dem Prozessor 102 gekoppelt zu sein.
  • Bei verschiedenen Ausführungsformen umfasst das System 100 zusätzlich ein gesichertes Speichermodul, wie etwa das gesicherte Speichermodul 108, das dafür ausgelegt ist, über eine Schnittstelle 114 mit dem Prozessor 102 zu kommunizieren. Wie später ausführlicher besprochen werden wird, kann dementsprechend der gesicherte Speicher 108 dafür ausgelegt sein, Validierungs- und Vergleichsoperationen während eines Bootprozesses des Prozessors 102 zu implementieren, und kann auch dafür ausgelegt sein, ein Signal zu erzeugen und über die Schnittstelle 114 zu dem Prozessor 102 zu senden, das die Verwaltung des Prozessors 102 während des Boot-Prozesses und von dem Boot-Prozess zugeordneten Operationen erleichtert. Spezieller kann das Signal verwendet werden, um den Prozessor 102 während gesicherter Boot-Operationen in einem Rücksetzzustand zu halten. Außerdem kann die Schnittstelle 114 eine GPIO-Schnittstelle (Vielzweck-Eingabe/-Ausgabe) sein, und das Signal kann über einen Anschluss der GPIO zu dem Prozessor 102 gesendet werden. Bei einigen Ausführungsformen kann die Schnittstelle 114 eine QSPI (Quad Serial Peripheral Interface) sein.
  • Bei verschiedenen Ausführungsformen ist der gesicherte Speicher 108 dafür ausgelegt, ein Vertrauensanker (RoT, Root of Trust) für eine Speicherungsregion, wie etwa die gesicherte Speicherung 110, zu implementieren. Dementsprechend kann der gesicherte Speicher 108 dafür ausgelegt sein, einen vertrauenswürdigen Speicherraum bereitzustellen, dem andere Systemkomponenten, wie etwa der Prozessor 102, immer vertrauen. Dementsprechend kann der gesicherte Speicher 108 eine oder mehrere Speicherungsregionen, wie etwa die gesicherte Speicherung 110, umfassen, die immer verschlüsselt sind, um somit eine gesicherte Datenverarbeitungsumgebung aufrechtzuerhalten. Zusätzliche Einzelheiten bezüglich gesicherter Speicher werden nachfolgend ausführlicher unter Bezugnahme auf mindestens 2 und 3 besprochen. Bei verschiedenen Ausführungsformen umfasst der gesicherte Speicher 108 außerdem Codespeicherung 112, die dafür ausgelegt sein kann, zusätzlichem Code zugrundeliegende Validierungs- und Vergleichsoperationen zu speichern, wie nachfolgend ausführlicher besprochen werden wird. Zum Beispiel kann die Codespeicherung 112 dafür ausgelegt sein, Boot-Code, wie etwa eine oder mehrere Stufen eines Boot-Loaders, sowie Anwendungscode zu speichern. Außerdem kann die Codespeicherung 112 auch eine gesicherte Speicherungsregion sein, die in dem RoT umfasst ist.
  • Das System 100 umfasst zusätzlich einen Platinen-Verwaltungscontroller 116, der ein Speichercontroller sein kann, der dafür ausgelegt ist, den Betrieb von Komponenten des gesicherten Speichers 108 zu steuern. Wie nachfolgend ausführlicher besprochen werden wird, können dementsprechend Validierungsoperationen, Vergleichsoperationen und die Erzeugung von Signalen durch den Platinen-Verwaltungscontroller 116 verwaltet werden. Der Platinen-Verwaltungscontroller 116 kann somit den gesicherten Speicher 108 anweisen, eine oder mehrere Verarbeitungsoperationen zu implementieren, und solche Verarbeitungsoperationen können innerhalb der gesicherten Verarbeitungsumgebung implementiert werden, die durch den RoT des gesicherten Speichers 108 bereitgestellt wird. Wie auch nachfolgend ausführlicher besprochen werden wird, können solche Verarbeitungsoperationen verwendet werden, um Boot-Code sowie zugeordneten Anwendungscode zu authentifizieren, um somit dem gesicherten Speicher 108 zu ermöglichen, Boot-Operationen zu authentifizieren und den Bootprozess des Prozessors 102 zu verwalten. Zusätzliche Einzelheiten der gesicherten Boot-Operationen werden nachfolgend ausführlicher besprochen.
  • 2 zeigt ein Beispiel für ein anderes System für gesicherten nichtflüchtigen Speicher, ausgelegt gemäß einigen Ausführungsformen. Wie ähnlich oben besprochen wird, können gesicherte Speicher verwendet werden, um gesicherte Umgebungen für Validierungs- und Vergleichsoperationen während eines Bootprozesses eines Prozessors bereitzustellen. Bei verschiedenen Ausführungsformen können ein System, wie etwa das System 200, eine gesicherte Verarbeitungsumgebung eines gesicherten Speichermoduls zur Implementierung solcher Validierungs- und Vergleichsoperationen benutzen. Wie nachfolgend ausführlicher besprochen werden wird, kann ein gesichertes Speichermodul, wie etwa der gesicherte Speicher 202, dafür ausgelegt sein, verschiedene Komponenten zur Bereitstellung einer gesicherten Verarbeitungsumgebung, wie etwa einen Vertrauensanker (RoT), zu umfassen und auch Signale zu erzeugen, die verwendet werden, um Verwaltung eines Prozessors, wie etwa des Prozessors 203, während gesicherter Operationen des Bootprozesses zu ermöglichen.
  • Dementsprechend umfasst das System 200 den gesicherten Speicher 202, der dafür ausgelegt ist, eine gesicherte Verarbeitungsumgebung, wie etwa einen RoT, bereitzustellen, der andere Systemkomponenten, wie etwa den Prozessor 203, immer vertrauen. Wie in 2 gezeigt, ist der gesicherte Speicher 202 dafür ausgelegt, verschiedene Komponenten zu umfassen, die verwendet werden, um die gesicherte Verarbeitungsumgebung zu implementieren. Spezieller ist der gesicherte Speicher 202 dafür ausgelegt, den gesicherten Boot-Prozessor 206 zu umfassen, der ein Prozessor ist, der speziell dafür ausgelegt ist, Bootoperationen für den gesicherten Speicher 202 zu implementieren, um es dem gesicherten Speicher 202 somit zu erlauben, sich selbst zu initialisieren und sich selbst zu authentifizieren.
  • Der gesicherte Speicher 202 umfasst zusätzlich einen kryptografischen Beschleuniger 208, der eine Verarbeitungsvorrichtung ist, die speziell dafür ausgelegt ist, eine oder mehrere kryptografische Operationen zu implementieren. Spezieller ist der kryptografische Beschleuniger 208 dafür ausgelegt, Verschlüsselungs- und Entschlüsselungsoperationen für in dem gesicherten Speicher 202 gespeicherte Daten zu implementieren. Bei einigen Ausführungsformen ist der kryptografische Beschleuniger 208 ferner ausgelegt zum Berechnen verschiedener Validierungswerte, die Integritätsprüfwerte sein können, wie etwa Hash-Werte, CRC-Werte (Cyclic Redundancy Check) oder Schlüssel-HMACs (Hash-Nachrichtenauthentifizierungscodes). In einem Beispiel ist der kryptografische Beschleuniger 208 dafür ausgelegt, einen ECDSA (Elliptische-Kurven-Digital-Signaturalgorithmus) sowie öffentliche Schlüssel, die zur Authentifizierung auf ECDSA-Basis verwendet werden, zu unterstützen und zu implementieren. Es versteht sich, dass der kryptografische Beschleuniger dafür ausgelegt sein kann, eine beliebige geeignete Art von Validierungswert zu berechnen.
  • Der gesicherte Speicher 202 umfasst ferner einen Controller 210, der dafür ausgelegt ist, eine oder mehrere Verarbeitungsoperationen für den gesicherten Speicher 202 zu implementieren. Dementsprechend kann der Controller 210 ein oder mehrere Verarbeitungselemente umfassen, die dafür ausgelegt sind, Verarbeitungsoperationen zu implementieren, wie etwa Boot-Operationen und Vergleichsoperationen, mit denen der kryptografische Beschleuniger 208 nicht umgeht. Deshalb kann der Controller 210 als ein in ein Speichermodul des gesicherten Speichers 202 integrierter Speichercontroller ausgelegt sein. Obwohl der Controller 210 getrennt von dem sicheren Boot-Prozessor 206 besprochen wird, versteht sich, dass der Controller 210 und der sichere Boot-Prozessor 206 als eine einzige Komponente des gesicherten Speichers 202 implementiert werden können. Bei verschiedenen Ausführungsformen umfasst der gesicherte Speicher 202 außerdem Speicher-Speicherungsregionen, wie etwa die Speicherregionen 204. Wie nachfolgend ausführlicher besprochen werden wird, können die Speicherregionen 204 benutzerdefiniert sein und dafür ausgelegt sein, verschiedene Daten zu speichern, die während des Bootprozesses verwendet werden, wie etwa Boot-Code und Anwendungscode.
  • Das System 200 umfasst zusätzlich einen Prozessor 203, der dafür ausgelegt ist, verschiedene Verarbeitungsoperationen zu implementieren. Wie oben besprochen, kann der Prozessor 203 ein Anwendungsprozessor sein, der zugeordneten Boot-Code und Anwendungscode aufweist. Außerdem ist der Prozessor 203 über die Schnittstelle 212, die eine GPIO-Schnittstelle des gesicherten Speichers 202 sein kann, kommunikativ mit dem gesicherten Speicher 202 gekoppelt. Dementsprechend kann der Prozessor 203 über einen oder mehreren Anschlüsse der Schnittstelle 212 Signale von dem gesicherten Speicher 202 empfangen.
  • 3 zeigt ein Beispiel für eine Vorrichtung für gesicherten nichtflüchtigen Speicher, ausgelegt gemäß einigen Ausführungsformen. Wie ähnlich oben besprochen wird, können gesicherte Speicher verwendet werden, um gesicherte Umgebungen für Validierungs- und Vergleichsoperationen während eines Bootprozesses eines Prozessors bereitzustellen. Bei verschiedenen Ausführungsformen kann ein System, wie etwa das System 200, Speichermodul sein, das mehrere Speicherungsregionen enthält, mit denen gesicherte Boot-Operationen für mehreren Prozessoren unterstützt werden. Wie nachfolgend ausführlicher besprochen werden wird, kann dementsprechend ein gesichertes Speichermodul, wie etwa der gesicherte Speicher 302, dafür ausgelegt sein, verschiedene Komponenten zu umfassen, die dafür ausgelegt sind, gesicherte Boot-Operationen zu implementieren und Signale für die mehreren Prozessoren zu erzeugen.
  • Bei verschiedenen Ausführungsformen umfasst der gesicherte Speicher 302 mehrere Speicherregionen, die dafür ausgelegt sind, Code und Validierungswerte in jeder der mehreren Regionen zu speichern. Zum Beispiel kann der gesicherte Speicher 302 eine erste Region 304 und einen Validierungswert 306 umfassen. Bei verschiedenen Ausführungsformen ist die Region 304 eine erste Coderegion, die durch eine Entität, wie etwa einen Benutzer, zum Speichern von Softwarecode, wie etwa eines IBL (anfänglichen Boot-Loaders), eines SBL (Bootloader der zweiten Stufe) oder von Anwendungscode definiert wird. Der Benutzer kann auch definieren, welche Coderegionen zu authentifizieren sind. Auf diese Weise kann jede Coderegion eine benutzerdefinierte Speicherungsregion sein, die benutzerdefinierte Validierungsparameter aufweist, die identifizieren, ob Validierung implementiert werden sollte oder nicht. Die Validierungsparameter können auch eine Art von Validierungsoperation identifizieren, die zu implementieren ist. Dementsprechend kann ein Benutzer eine Art von Validierung, wie etwa eine Hash-Operation, CRC oder HMAC, die zu verwenden ist, identifizieren. Die in der ersten Region 304 gespeicherten Inhalte können zuvor durch eine Entität, wie etwa einen Benutzer, während einer Initialisierungsoperation, in der Boot-Code geladen wird, gespeichert worden sein. Bei einigen Ausführungsformen können in der ersten Region 304 gespeicherte Inhalte aus einer anderen Region, wie etwa einer getrennten Speicher-Speicherungsregion, abgerufen worden sein. Bei verschiedenen Ausführungsformen wird der Validierungswert 306 während der Programmierung der ersten Region 304 berechnet und gespeichert. Der Validierungswert 306 kann dementsprechend einen Referenzwert während einer Boot-Operation, wie etwa einer Vergleichsoperation, wie nachfolgend ausführlicher besprochen werden wird, bereitstellen.
  • Der gesicherte Speicher 302 umfasst zusätzlich eine zweite Region 308, einen Vergleichswert 310, eine dritte Region 312 und einen dritten Validierungswert 314. Wie oben besprochen, können solche Regionen mindestens teilweise benutzerdefiniert sein, und solche Validierungswerte können während der Programmierung solcher Regionen gespeichert werden. Auf diese Weise umfasst der gesicherte Speicher 302 Regionen und Validierungswerte für mehrere verschiedene Prozessoren und kann verwendet werden, um das gesicherte Booten mehrerer verschiedener Prozessoren sequentiell und/oder gleichzeitig zu verwalten. Ferner versteht sich, dass, obwohl in 3 drei Regionen gezeigt sind, eine beliebige Anzahl von Regionen vorgesehen sein kann. Außerdem kann eine beliebige Anzahl von Prozessoren auf solche Regionen abgebildet werden und somit durch den gesicherten Speicher 302 unterstützt werden. Zum Beispiel können vier Prozessoren mit vier Regionen unterstützt werden, oder acht Prozessoren können mit acht Regionen unterstützt werden.
  • Der gesicherte Speicher 302 umfasst ferner einen kryptografischen Beschleuniger 316, der, wie oben besprochen, eine Verarbeitungsvorrichtung ist, die dafür ausgelegt ist, eine oder mehrere Validierungsoperationen zu implementieren. Dementsprechend kann der kryptografische Beschleuniger 316 dafür ausgelegt sein, Code aus Regionen des gesicherten Speichers 302 abzurufen und Validierungswerte für solchen Code zu berechnen. In einem Beispiel kann der kryptografische Beschleuniger 316 dafür ausgelegt sein, Code aus der ersten Region 3004 abzurufen und einen Validierungswert für den abgerufenen Code durch Anwendung einer oder mehrerer Validierungsoperationen auf dem Code zu berechnen. Wie oben besprochen, können die eine oder mehreren Validierungsoperationen bereits durch eine Entität, wie etwa einem Benutzer, identifiziert worden sein und können Operationen wie etwa die Berechnung eines Hash-Werts oder eines HMAC-Werts umfassen.
  • Der durch den kryptografischen Beschleuniger 316 berechnete Validierungswert kann zu dem Controller 320 geleitet werden, der dafür ausgelegt sein kann, den berechneten Validierungswert mit Inhalten des Validierungswerts 306 zu vergleichen. Auf diese Weise können die Inhalte der ersten Region 304 mit dem Referenzwert, der in dem Validierungswert 306 gespeichert ist, verglichen und authentifiziert werden. Wenn die Werte übereinstimmen, wird der Vergleich als erfolgreich bestimmt, und zusätzliche Operationen, wie etwa die Erzeugung eines Signals, können auftreten, wie nachfolgend ausführlicher besprochen werden wird. Wenn die Werte nicht übereinstimmen, wird bestimmt, dass der Vergleich nicht erfolgreich ist, und die Boot-Operation wird nicht fortgesetzt. Bei einigen Ausführungsformen kann, wenn der Vergleich als nicht erfolgreich bestimmt wird, ein alternativer Boot-Prozess implementiert werden. Zum Beispiel kann eine Benachrichtigungsnachricht erzeugt werden, oder es kann eine alternative Boot-Operation von einer anderen Speicherungsregion aus implementiert werden.
  • Wie oben besprochen, kann der Controller 320 ein oder mehrere Verarbeitungselemente umfassen, die dafür ausgelegt sind, als Reaktion auf eine übereinstimmende Validierungsoperation ein Signal zu erzeugen. Spezieller kann das Signal ein Triggersignal sein, das dafür ausgelegt ist, einen Rücksetzzustand eines der Validierungsoperation zugeordneten Prozessors abzubrechen. Zum Beispiel kann ein der ersten Region 304 zugeordneter erster Prozessor am Anfang eines Boot-Prozesses in einen Rücksetzzustand versetzt worden sein. Bei einigen Ausführungsformen kann der Rücksetzzustand über einen Ausgang der Schnittstelle 318 gesetzt werden, der mit einem Rücksetzeingang des Prozessors gekoppelt sein kann, und ein Rücksetzsignal kann durch den Controller 320 gesetzt werden, um den Prozessor in den Rücksetzzustand zu versetzen. Sobald eine erfolgreiche Validierungsoperation abgeschlossen wurde, kann der Controller 320 ein Triggersignal erzeugen, das das Rücksetzsignal abbricht und dem Prozessor ermöglicht, Bootoperationen zu beginnen. Bei verschiedenen Ausführungsformen können solche Triggersignale für mehrere Prozessoren erzeugt und über die Schnittstelle 318 den mehreren Prozessoren zugeführt werden.
  • Wie oben besprochen, kann die Schnittstelle 318 eine GPIO-Schnittstelle sein und verschiedene Triggersignale können über verschiedene Anschlüsse der GPIO-Schnittstelle übertragen werden. Bei einigen Ausführungsformen können die spezifischen benutzten GPIO-Anschlüsse programmierbar sein. Dementsprechend kann ein Benutzer einen oder mehrere Datenwerte konfigurieren, die in GPIO-Registern gespeichert werden, die in der GPIO-Schnittstelle enthalten sind, und der Benutzer kann definieren, welcher GPIO-Anschluss welchem Prozessor zugeordnet ist und zum Verwalten von Boot-Operationen für diesen Prozessor verwendet wird. Solche Programmierung kann über eine oder mehrere Komponenten einer Speicherschnittstelle erfolgen, wie etwa eine SPI (Serial Peripheral Interface), eine I2C-Schnittstelle (Inter-Integrated Circuit) oder eine eMMC-Schnittstelle (embedded Multimedia Card). Auf diese Weise kann Programmierung und Erzeugung von Triggersignalen in Band sein und unter Verwendung einer existierenden Speicherschnittstelle erreicht werden oder kann außer Band sein und unter Verwendung einer sekundären Speicherschnittstelle erreicht werden.
  • Bei verschiedenen Ausführungsformen ist die Schnittstelle 318 eine Nur-Ausgabe-Schnittstelle. Dementsprechend kann die Schnittstelle 318 eine Schnittstelle sein, die dafür ausgelegt ist, nur Ausgaben bereitzustellen, und keinen Eingang aufweisen. Gemäß einigen Ausführungsformen kann die Schnittstelle 318 auch eine beliebige geeignete Schnittstelle sein, die verwendet wird, um ein Signal von dem gesicherten Speicher 302 zu einem Prozessor zu übertragen. Außerdem können, wie oben besprochen, Verwaltung von Prozessoren und Erzeugung und Übertragung von Triggersignalen sequentiell oder parallel implementiert werden. Zusätzliche Einzelheiten bezüglich der Erzeugung von Triggersignalen werden nachfolgend ausführlicher unter Bezugnahme auf 4-6 besprochen.
  • 4 zeigt ein Beispiel für ein Verfahren für gesichertes Booten eines nichtflüchtigen Speichers, implementiert gemäß einigen Ausführungsformen. Wie oben besprochen, können gesicherte Speicher verwendet werden, um gesicherte Umgebungen für Validierungs- und Vergleichsoperationen während eines Bootprozesses eines Prozessors bereitzustellen. Wie nachfolgend ausführlicher besprochen werden wird, kann ein Verfahren, wie etwa das Verfahren 400, implementiert werden, um Boot-Code und Anwendungscode für einen oder mehrere Prozessoren zu authentifizieren. Spezieller kann ein gesicherter Teil eines gesicherten Speichermoduls verwendet werden, um solche Boot-Operationen zu verwalten, um somit ein gesichertes Booten eines oder mehrerer Prozessoren sicherzustellen.
  • Dementsprechend kann das Verfahren 400 mit der Operation 402 beginnen, während der ein Rücksetzsignal für einen Prozessor erzeugt werden kann. Wie ähnlich oben besprochen wird, kann ein Prozessor, der sicher gebootet wird, anfänglich über das Setzen eines einem Rücksetzeingang des Prozessors zugeführten Signals in einen Rücksetzzustand versetzt werden. Das Signal kann durch einen gesicherten Speicher erzeugt und über eine Schnittstelle, wie etwa eine GPIO-Schnittstelle, übertragen werden. Bei verschiedenen Ausführungsformen hält das Versetzen des Prozessors in den Rücksetzzustand den Betrieb des Prozessors an und erlaubt dem gesicherten Speicher, den Boot-Prozess zu verwalten und gesicherte Boot-Operationen zu implementieren, die Validierungs- und Vergleichsoperationen umfassen, wie nachfolgend ausführlicher besprochen werden wird.
  • Das Verfahren 400 kann dann zu Operation 404 voranschreiten, während der eine Validierungsoperation für einen ersten Teil von Code implementiert werden kann. Bei verschiedenen Ausführungsformen kann die Validierungsoperation eine Berechnung eines Validierungswerts für in dem gesicherten Speicher gespeicherten Code sein. Wie oben besprochen, kann die Berechnung des Validierungswerts Berechnen eines Hash-Werts von Code umfassen, der in einer Speicherungsregion des gesicherten Speichers gespeichert ist, die in dem RoT residiert. Wie auch oben besprochen wurde, kann der erste Teil von Code ein Teil eines Boot-Loaders oder Anwendungscode sein. Die Inhalte des ersten Teils des Codes können benutzerdefiniert sein und können zuvor programmiert worden sein.
  • Das Verfahren 400 kann zu Operation 406 voranschreiten, während der eine Vergleichsoperation mindestens teilweise auf der Basis eines oder mehrerer Validierungswerte implementiert werden kann. Der während Operation 404 berechnete Validierungswert kann dementsprechend mit einem zusätzlichen Validierungswert verglichen werden, der in einer anderen Speicherungsregion des gesicherten Speichers gespeichert ist. Der zusätzliche Validierungswert kann ein zuvor berechneter und gespeicherter Validierungswert sein, der berechnet und gespeichert wurde, als der erste Teil von Code anfänglich gespeichert wurde. Während Operation 406 kann dementsprechend der während Operation 404 berechnete Validierungswert mit dem zuvor gespeicherten Validierungswert verglichen werden, um zu sehen, ob sie übereinstimmen oder ob der erste Teil von Code sich geändert hat. Bei verschiedenen Ausführungsformen wird eine Vergleichsoperation als erfolgreich betrachtet, wenn die verglichenen Validierungswerte übereinstimmen.
  • Das Verfahren 400 kann zu Operation 408 voranschreiten, während der auf der Basis eines Ergebnisses der Vergleichsoperation ein Signal für den Prozessor erzeugt werden kann. Wenn die Validierungswerte übereinstimmen und die Vergleichsoperation erfolgreich ist, kann dementsprechend der gesicherte Speicher ein Signal erzeugen, das über die Schnittstelle zu dem Prozessor übertragen wird. Das Signal kann ein Triggersignal sein, das den Rücksetzzustand des Prozessors abbricht und Initialisierung und Betrieb des Prozessors triggert. Auf diese Weise kann der gesicherte Speicher gesicherte Boot-Operationen implementieren und kann den Betrieb eines Prozessors zur Verwaltung eines gesicherten Bootens des Prozessors steuern.
  • 5 zeigt ein Beispiel für ein anderes Verfahren für gesichertes Booten eines nichtflüchtigen Speichers, implementiert gemäß einigen Ausführungsformen. Wie oben besprochen, können gesicherte Speicher verwendet werden, um gesicherte Umgebungen für Validierungs- und Vergleichsoperationen während eines Bootprozesses eines Prozessors bereitzustellen. Wie nachfolgend ausführlicher besprochen werden wird, kann ein Verfahren, wie etwa das Verfahren 500, implementiert werden, um Boot-Code und Anwendungscode für einen oder mehrere Prozessoren zu authentifizieren. Dementsprechend kann ein gesicherter Teil eines gesicherten Speichermoduls verwendet werden, um Boot-Operationen für mehrere Prozessoren über eine Schnittstelle des gesicherten Speichermoduls zu verwalten.
  • Dementsprechend kann das Verfahren 500 mit Operation 502 beginnen, während der bestimmt werden kann, dass eine gesicherte Boot-Operation implementiert werden soll. Bei verschiedenen Ausführungsformen kann eine solche Bestimmung als Reaktion auf Empfang eines Signals oder Identifizierung einer oder mehrerer Bedingungen von anderen Systemkomponenten erfolgen. Zum Beispiel kann ein Signal von einer anderen Systemkomponente empfangen werden, das angibt, dass eine Anwendung es auszuführen ist und ein Anwendungsprozessor initialisiert werden sollte, um die Anwendung zu unterstützen. In einem anderen Beispiel kann das Signal von einer anderen Systemkomponente empfangen werden, die ein Systemereignis identifiziert, wie etwa ein anfängliches Herauffahren und Booten einer Vorrichtung. Dementsprechend kann während der Operation 502 ein Prozessor und/oder ein gesichertes Speichermodul ein Signal empfangen oder eine oder mehrere Bedingungen identifizieren, die angeben, dass ein Prozessor gebootet werden sollte.
  • Bei verschiedenen Ausführungsformen kann das gesicherte Speichermodul auch als Reaktion auf Bestimmung, dass eine gesicherte Boot-Operation implementiert werden soll, eine oder mehrere Selbstvalidierungsoperationen implementieren. Dementsprechend kann das Speichermodul einen Teil seines eigenen Codes, wie etwa seinem eigenen Boot-Code, während Operation 502 authentifizieren, und solche Validierungsoperationen können in der gesicherten Region implementiert werden, die der Vertrauensanker (RoT) ist. Bei einigen Ausführungsformen können die Validierungsoperationen Vergleichen eines berechneten Validierungswerts mit einem zuvor gespeicherten Validierungswert, wie ähnlich nachfolgend besprochen, umfassen.
  • Das Verfahren 500 kann zu Operation 504 voranschreiten, während der ein Rücksetzsignal für einen Prozessor erzeugt werden kann. Wie ähnlich oben besprochen wurde, kann ein Prozessor, der sicher gebootet wird, anfänglich durch ein gesichertes Speichermodul in einen Rücksetzzustand versetzt werden. Dementsprechend kann während Operation 504 eine Komponente des gesicherten Speichermoduls ein Rücksetzsignal erzeugen und das Rücksetzsignal einem Rücksetzeingang des Prozessors zuführen. Wie auch oben erwähnt wird, kann das Signal über eine Schnittstelle, wie etwa eine GPIO-Schnittstelle, übertragen werden. Spezieller kann ein spezifischer Anschluss der GPIO-Schnittstelle dem Prozessor, der gebootet wird, zugeordnet werden, und dieser Anschluss kann zum Übertragen des Rücksetzsignals verwendet werden. Bei verschiedenen Ausführungsformen hält das Versetzen des Prozessors in den Rücksetzzustand den Betrieb des Prozessors an und erlaubt dem gesicherten Speicher, den Boot-Prozess zu verwalten und Validierungs- und Vergleichsoperationen zu implementieren, während der Prozessor angehalten ist und bevor der Prozessor tatsächlich bootet.
  • Das Verfahren 500 kann zu Operation 506 voranschreiten, während der eine Validierungsoperation für einen ersten Teil von Code implementiert werden kann. Bei verschiedenen Ausführungsformen kann die Validierungsoperation eine Berechnung eines Validierungswerts für in dem gesicherten Speicher gespeicherten Code sein. Wie oben besprochen, kann die Berechnung des Validierungswerts Berechnen eines Hash-Werts von Code umfassen, der in einer Speicherungsregion des gesicherten Speichers gespeichert ist, die in dem RoT residiert. Wie auch oben besprochen wurde, kann der erste Teil von Code ein Teil eines Boot-Loaders oder Anwendungscode sein. Die Inhalte des ersten Teils des Codes können benutzerdefiniert sein und können zuvor programmiert worden sein.
  • Das Verfahren 500 kann zu Operation 508 voranschreiten, während der ein zusätzlicher Validierungswert aus einer gesicherten Speicherungsregion abgerufen werden kann. Wie oben erwähnt, kann der zusätzliche Validierungswert in einer anderen Speicherungsregion des gesicherten Speichers gespeichert werden. Der zusätzliche Validierungswert kann ein zuvor berechneter und gespeicherter Validierungswert sein, der berechnet, gespeichert wurde, als der erste Teil von Code anfänglich gespeichert wurde. Dementsprechend kann der zusätzliche Validierungswert zuvor während Initialisierung und Konfiguration des gesicherten Speichermoduls berechnet worden sein und kann als Referenz verwendet werden, um sicherzustellen, dass der aktuelle Code des ersten Teils von Code nicht modifiziert wurde.
  • Das Verfahren 500 kann zu Operation 510 voranschreiten, während der eine Vergleichsoperation implementiert werden kann. Bei verschiedenen Ausführungsformen kann der während Operation 506 berechnete Validierungswert mit dem während Operation 508 abgerufenen Validierungswert verglichen werden. Dementsprechend kann während Operation 510 bestimmt werden, ob der bei Operation 506 berechnete Validierungswert mit dem während Operation 508 abgerufenen Validierungswert übereinstimmt oder ob sie nicht übereinstimmen, und der Vergleich liefert eine Angabe, dass sich der erste Teil von Code geändert hat. In einem Beispiel können beide Validierungswerte Hash-Werte sein. Dementsprechend kann eine Systemkomponente, wie etwa ein Controller, bestimmen, ob die Hash-Werte dieselben sind.
  • Das Verfahren 500 kann zu Operation 512 voranschreiten, während der auf der Basis eines Ergebnisses der Vergleichsoperation ein Triggersignal für den Prozessor erzeugt werden kann. Wenn die Validierungswerte übereinstimmen und die Vergleichsoperation erfolgreich ist, kann dementsprechend der gesicherte Speicher ein Triggersignal erzeugen, das über die Schnittstelle zu dem Prozessor übertragen wird. Das Triggersignal kann dafür ausgelegt sein, den Rücksetzzustand des Prozessors abzubrechen und Initialisierung und Betrieb des Prozessors zu triggern. Dementsprechend kann während Operation 512 das Triggersignal erzeugt und über den Anschluss, der dem Prozessor zugeordnet ist, der gebootet wird, übertragen werden. Auf diese Weise kann der gesicherte Speicher Validierungs- und Vergleichsoperationen in seinem RoT implementieren und den Betrieb eines Prozessors zur Verwaltung eines gesicherten Bootens des Prozessors steuern. Es versteht sich, dass, wenn die oben besprochene Vergleichsoperation in Operation 510 keine Übereinstimmung identifiziert, das Triggersignal während Operation 512 nicht erzeugt wird. Dementsprechend kann Operation 512 optional implementiert werden und abhängig von einem Ergebnis von Operation 510.
  • Das Verfahren 500 kann zu Operation 514 voranschreiten, während der bestimmt werden kann, ob zusätzliche Boot-Operationen implementiert werden sollen. In einem Beispiel kann eine solche Bestimmung auf einer Anzahl von durch das gesicherte Speichermodul verwalteten Prozessoren basieren. Spezieller kann bestimmt werden, ob andere Prozessoren von dem gesicherten Speichermodul verwaltet werden und auch sicher gebootet werden sollten. Bei einigen Ausführungsformen kann eine solche Bestimmung auf eine Implementierung eines Automaten oder einer Warteschlange von Boot-Befehlen basieren.
  • In einem Beispiel kann eine solche Bestimmung auf der Basis einer Sequenz von in einem Boot-Prozess enthaltenen Operationen erfolgen. Zum Beispiel kann Boot-Code mehrere Boot-Stufen umfassen, die sequentiell validiert und ausgeführt werden. Dementsprechend kann der erste Teil von Code, der oben besprochen wird, eine erste Stufe eines Boot-Loaders gewesen sein. Somit kann bestimmt werden, dass als nächstes eine zweite Stufe eines Boot-Loaders zu validieren ist und zusätzliche gesicherte Boot-Operationen implementiert werden sollten. Auf diese Weise können mehrere gesicherte Boot-Operationen sequentiell implementiert werden, und mit einer Vertrauens-Kette, wobei eine sukzessive sichere Boot-Operation nur implementiert wird, wenn eine vorherige erfolgreich validiert wurde. Dementsprechend kann während Operation 514, wenn bestimmt wird, dass zusätzliche Boot-Operationen implementiert werden sollen, das Verfahren 500 zu Operation 504 zurückkehren. Wenn bestimmt wird, dass keine zusätzlichen Boot-Operationen implementiert werden sollen, kann das Verfahren 500 enden.
  • 6 zeigt ein Beispiel für noch ein anderes Verfahren für gesichertes Booten eines nichtflüchtigen Speichers, implementiert gemäß einigen Ausführungsformen. Wie oben besprochen, können gesicherte Speicher verwendet werden, um gesicherte Umgebungen für Validierungs- und Vergleichsoperationen während eines Bootprozesses eines Prozessors bereitzustellen. Wie nachfolgend ausführlicher beschrieben werden wird, kann ein Verfahren, wie etwa das Verfahren 600, implementiert werden, um ein gesichertes Speichermodul zum Implementieren von Validierungs- und Vergleichsoperationen zu konfigurieren, die gesicherten Boot-Operationen zugrunde liegen. Spezieller kann ein gesicherter Teil eines gesicherten Speichermoduls speziell dafür ausgelegt sein, solche Boot-Operationen zu verwalten, um somit ein sicheres Booten des einen oder mehreren Prozessoren sicherzustellen.
  • Dementsprechend kann das Verfahren 600 mit Operation 602 beginnen, während der bestimmt werden kann, dass eine gesicherte Boot-Region eines gesicherten Speichermoduls konfiguriert werden soll. Bei verschiedenen Ausführungsformen kann eine solche Bestimmung als Reaktion auf den Empfang eines Signals erfolgen, das angibt, dass das gesicherte Speichermodul zu konfigurieren ist. Dementsprechend kann ein solches Signal während einer anfänglichen Konfiguration des gesicherten Speichers empfangen werden und kann durch eine Komponente des gesicherten Speichers, wie etwa einen Controller, empfangen werden.
  • Das Verfahren 600 kann zu Operation 604 voranschreiten, während der mehrere Konfigurationsparameter empfangen werden können. Bei einigen Ausführungsformen können die mehreren Konfigurationsparameter mehrere Regionen von Speicher in dem gesicherten Speicher definieren. Wie oben besprochen, kann dementsprechend ein Teil des gesicherten Speichers, der in dem RoT enthalten ist, dem Speichern von für gesicherte Boot-Operationen verwendetem Code gewidmet werden. Wie auch oben besprochen wurde, können Parameter des Teils benutzerdefiniert sein. Dementsprechend können während Operation 604 die Konfigurationsparameter durch einen Benutzer definiert werden und können dem gesicherten Speicher zugeführt werden. Außerdem kann der Benutzer eine Anzahl von gesicherten Speicherregionen definiert haben, die für eine bestimmte Anzahl von Prozessoren zu verwenden ist, und solche Informationen können in den Konfigurationsparametern gespeichert sein. Außerdem kann der Benutzer auch Aspekte der Benutzung einer Schnittstelle des gesicherten Speichers konfigurieren. Spezieller kann der Benutzer definieren, welcher Prozessor welcher Komponente einer Schnittstelle, wie etwa einem Anschluss einer GPIO-Schnittstelle, zugeordnet ist.
  • Das Verfahren 600 kann zu Operation 606 voranschreiten, während der mehrere Teile von Code empfangen werden können. Dementsprechend können wie oben besprochen Speicherregionen so definiert worden sein, dass jeder durch den gesicherten Speicher unterstützte Prozessor eine erste und zweite Region in dem gesicherten Speicher bereitgestellt bekommt. Während Operation 606 kann Code, der zu authentifizieren ist, somit von einer Entität, wie etwa einem Benutzer, empfangen werden. Wie oben erwähnt, kann der Code der Boot-Loader-Code sein, der einer ersten oder zweiten Stufe eines Boot-Loaders zugeordnet ist, oder der Code kann Anwendungscode sein.
  • Das Verfahren 600 kann zu Operation 608 voranschreiten, während der die mehreren Teile von Code in einem ersten Teil der mehreren Regionen von Speicher gespeichert werden können. Dementsprechend kann während Operation 608 für jeden Prozessor empfangener Code in einer ersten Region gespeichert werden, die für diesen Prozessor definiert wurde. Wie oben erwähnt, ist die erste Region in dem RoT des gesicherten Speichers enthalten.
  • Das Verfahren 600 kann zu Operation 610 voranschreiten, während der mehrere Validierungswerte empfangen werden können. Wie ähnlich oben besprochen wird, können Validierungswerte für die Teile von Code, die oben mit Bezug auf Operation 606 besprochen werden, vorberechnet werden. Dementsprechend können während Operation 610 die vorberechneten Validierungswerte von einer Entität, wie etwa einem Benutzer, empfangen werden. Bei einigen Ausführungsformen können die vorberechneten Validierungswerte durch den gesicherten Speicher selbst erzeugt werden. Zum Beispiel kann eine Komponente des gesicherten Speichers die Validierungswerte automatisch während der anfänglichen Konfiguration des gesicherten Speichers erzeugen.
  • Das Verfahren 600 kann zu Operation 612 voranschreiten, während der die mehreren Validierungswerte in einem zweiten Teil der mehreren Regionen von Speicher gespeichert werden können. Während Operation 612 kann dementsprechend ein für jeden Teil von Code und seinen zugeordneten Prozessor empfangener Validierungswert in einer zweiten Region gespeichert werden, die für diesen Prozessor definiert wurde. Wie oben erwähnt, ist die zweite Region in dem RoT des gesicherten Speichers enthalten. Auf diese Weise kann ein gesicherter Speicher anfänglich konfiguriert werden, und Inhalte des gesicherten Speichers können aktualisiert werden, um nachfolgende gesicherte Boot-Operationen zu unterstützen.
  • Obwohl die obigen Konzepte der Klarheit des Verständnisses halber in einigem Detail beschrieben wurden, ist erkennbar, dass Änderungen und Modifikationen innerhalb des Schutzumfangs der angefügten Ansprüche praktiziert werden können. Es sollte beachtet werden, dass es viele alternative Weisen der Implementierung der Prozesse, Systeme und Vorrichtungen gibt. Die vorliegenden Beispiele sind dementsprechend nicht als einschränkend, sondern als veranschaulichend zu betrachten.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/157185 [0002]

Claims (20)

  1. Verfahren, umfassend: - Implementieren, unter Verwendung eines Controllers eines gesicherten nichtflüchtigen Speichers, einer Validierungsoperation an einem ersten Teil von Code, der in einer ersten gesicherten Speicherungsregion des gesicherten nichtflüchtigen Speichers gespeichert ist, wobei die Validierungsoperation eine Berechnung eines Validierungswerts umfasst; - Abrufen eines zweiten Teils von Code aus einer zweiten gesicherten Speicherungsregion, wobei der zweite Teil von Code einen vorberechneten Validierungswert umfasst, wobei der erste Teil von Code und der zweite Teil von Code einem Booten eines Prozessors zugeordnet sind; - Implementieren einer Vergleichsoperation des Validierungswerts und des vorberechneten Validierungswerts unter Verwendung des Controllers; - Erzeugen eines Signals auf der Basis eines Ergebnisses der Vergleichsoperation, unter Verwendung des Controllers, wobei das Signal über eine Schnittstelle des gesicherten nichtflüchtigen Speichers dem Prozessor zugeführt wird und das Signal das Booten des Prozessors als Reaktion auf eine übereinstimmende Vergleichsoperation ermöglicht.
  2. Verfahren nach Anspruch 1, bei dem das Verfahren ferner Folgendes umfasst: - Übertragen des Signals zu dem Prozessor über mindestens einen zugeordneten Anschluss der Schnittstelle.
  3. Verfahren nach Anspruch 2, ferner umfassend: - Übertragen eines zusätzlichen Signals über einen zusätzlichen Anschluss der Schnittstelle, wobei das zusätzliche Signal zu einem zusätzlichen Prozessor übertragen wird.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Prozessor ein Anwendungsprozessor ist und bei dem der erste Teil von Code einen Typ von Code einer aus der folgenden Gruppe umfasst: eine erste Stufe eines Boot-Loaders, eine zweiten Stufe des Boot-Loaders, ein Anwendungscode für den Anwendungsprozessor.
  5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die erste gesicherte Speicherungsregion und die zweite gesicherte Speicherungsregion durch einen Benutzer definiert werden.
  6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der vorberechnete Validierungswert von einem Benutzer während einer oder mehrerer initialer Konfigurationsoperationen empfangen wird.
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der gesicherte nichtflüchtige Speicher einen Vertrauensanker, RoT, für einen Anwendungsprozessor umfasst.
  8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem das Signal ein Rücksetzsignal, Reset-Signal, ist und bei dem das Erzeugen des Signals ein Rücksetzen des Prozessors abbricht.
  9. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der erste Teil von Code als Firmware und/oder als Daten gespeichert wird.
  10. Vorrichtung, umfassend: - einen gesicherten nichtflüchtigen Speicher, der eine oder mehrere gesicherte Speicherungsregionen umfasst; - einen Controller, der ein oder mehrere Verarbeitungselemente umfasst, die eingerichtet sind zum - Implementieren einer Validierungsoperation an einem ersten Teil von Code, der in einer ersten gesicherten Speicherungsregion des gesicherten nichtflüchtigen Speichers gespeichert ist, wobei die Validierungsoperation eine Berechnung eines Validierungswerts umfasst; - Abrufen eines zweiten Teils von Code aus einer zweiten gesicherten Speicherungsregion, wobei der zweite Teil von Code einen vorberechneten Validierungswert umfasst, wobei der erste Teil von Code und der zweite Teil von Code einem Booten eines Prozessors zugeordnet sind; - Implementieren einer Vergleichsoperation auf der Basis des Vergleichs des Validierungswerts und des vorberechneten Validierungswerts; - Erzeugen eines Signals auf der Basis eines Ergebnisses der Vergleichsoperation, wobei das Signal über eine Schnittstelle des gesicherten nichtflüchtigen Speichers dem Prozessor zugeführt wird und wobei das Signal das Booten des Prozessors als Reaktion auf eine übereinstimmende Vergleichsoperation ermöglicht.
  11. Vorrichtung nach Anspruch 10, bei der der Controller weiterhin eingerichtet ist zum Übertragen des Signals zu dem Prozessor über mindestens einen zugeordneten Anschluss der Schnittstelle.
  12. Vorrichtung nach Anspruch 11, bei der der Controller ferner eingerichtet ist zum Übertragen eines zusätzlichen Signals über einen zusätzlichen Anschluss der Schnittstelle, wobei das zusätzliche Signal zu einem zusätzlichen Prozessor übertragen wird.
  13. Vorrichtung nach einem der Ansprüche 10 bis 12, bei der der Prozessor ein Anwendungsprozessor ist und bei der der erste Teil von Code einen Typ von Code aus einer folgenden Gruppe umfasst: eine erste Stufe eines Boot-Loaders, eine zweiten Stufe des Boot-Loaders, ein Anwendungscode für den Anwendungsprozessor.
  14. Vorrichtung nach einem der Ansprüche 10 bis 13, bei der das Signal ein Rücksetzsignal, Reset-Signal, ist und bei der das Erzeugen des Signals ein Rücksetzen des Prozessors abbricht.
  15. Vorrichtung nach einem der Ansprüche 10 bis 14, bei der der erste Teil von Code als Firmware und/oder als Daten gespeichert wird.
  16. System, umfassend: - einen nichtflüchtigen Speicher, der eine oder mehrere gesicherte Speicherungsregionen umfasst; - eine Schnittstelle, die mehrere Anschlüsse umfasst; - einen Controller, der ein oder mehrere Verarbeitungselemente umfasst, die eingerichtet sind zum - Implementieren einer Validierungsoperation an einem ersten Teil von Code, der in einer ersten gesicherten Speicherungsregion des gesicherten nichtflüchtigen Speichers gespeichert ist, wobei die Validierungsoperation eine Berechnung eines Validierungswerts umfasst; - Abrufen eines zweiten Teils von Code aus einer zweiten gesicherten Speicherungsregion, wobei der zweite Teil von Code einen vorberechneten Validierungswert umfasst, wobei der erste Teil von Code und der zweite Teil von Code einem Booten eines Prozessors zugeordnet sind; - Implementieren einer Vergleichsoperation auf der Basis eines Vergleichs des Validierungswerts und des vorberechneten Validierungswerts; - Erzeugen eines Signals auf der Basis eines Ergebnisses der Vergleichsoperation, wobei das Signal über die Schnittstelle dem Prozessor zugeführt wird und das Signal das Booten des Prozessors als Reaktion auf eine übereinstimmende Vergleichsoperation ermöglicht.
  17. System nach Anspruch 16, bei dem der Controller ferner eingerichtet ist zum Übertragen des Signals zu dem Prozessor über einen zugewiesenen Anschluss der Schnittstelle.
  18. System nach Anspruch 17, bei dem der Controller ferner eingerichtet ist zum Übertragen eines zusätzlichen Signals über einen zusätzlichen Anschluss der Schnittstelle, wobei das zusätzliche Signal zu einem zusätzlichen Prozessor übertragen wird.
  19. System nach einem der Ansprüche 16 bis 18, bei dem das Signal ein Rücksetzsignal, Reset-Signal, ist und bei dem das Erzeugen des Signals ein Rücksetzen des Prozessors abbricht.
  20. System nach einem der Ansprüche 16 bis 19, bei dem der Prozessor mit mindestens einem der mehreren Anschlüsse gekoppelt ist und das Signal über den mindestens einen der mehreren Anschlüsse empfängt und bei dem der mindestens eine der mehreren Anschlüsse benutzerdefiniert ist.
DE102022105069.6A 2021-03-05 2022-03-03 Systeme, verfahren und vorrichtungen für gesicherte nichtflüchtige speicher Pending DE102022105069A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163157185P 2021-03-05 2021-03-05
US63/157,185 2021-03-05
US17/359,131 US11954206B2 (en) 2021-03-05 2021-06-25 Systems, methods, and devices for secured nonvolatile memories
US17/359,131 2021-06-25

Publications (1)

Publication Number Publication Date
DE102022105069A1 true DE102022105069A1 (de) 2022-09-08

Family

ID=82898228

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022105069.6A Pending DE102022105069A1 (de) 2021-03-05 2022-03-03 Systeme, verfahren und vorrichtungen für gesicherte nichtflüchtige speicher

Country Status (4)

Country Link
US (1) US11954206B2 (de)
JP (1) JP2022136052A (de)
CN (1) CN115033294A (de)
DE (1) DE102022105069A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578352A (zh) * 2023-07-11 2023-08-11 沐曦集成电路(上海)有限公司 芯片初始化系统

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022066083A (ja) * 2020-10-16 2022-04-28 キヤノン株式会社 情報処理装置
US11977639B2 (en) * 2021-07-12 2024-05-07 Dell Products, L.P. Indicating a type of secure boot to endpoint devices by a security processor
US11797679B2 (en) * 2021-07-28 2023-10-24 Dell Products, L.P. Trust verification system and method for a baseboard management controller (BMC)
US11861179B2 (en) * 2021-11-16 2024-01-02 Texas Instruments Incorporated External memory data integrity validation
US11983073B2 (en) * 2022-07-27 2024-05-14 Micron Technology, Inc. Hardware reset management for universal flash storage

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673129B2 (en) * 2005-09-27 2010-03-02 Intel Corporation Secure booting from a memory device
US8650399B2 (en) * 2008-02-29 2014-02-11 Spansion Llc Memory device and chip set processor pairing
US9710651B2 (en) * 2015-04-10 2017-07-18 Vixs Systems Inc. Secure processor for SoC initialization
EP3343419A1 (de) * 2015-08-25 2018-07-04 Seltech Corporation System mit hypervisor
US10515218B2 (en) * 2016-10-01 2019-12-24 Intel Corporation Systems, apparatuses, and methods for platform security
US11088845B2 (en) * 2018-07-03 2021-08-10 Western Digital Technologies, Inc. Non-volatile memory with replay protected memory block having dual key
US10868679B1 (en) * 2019-07-25 2020-12-15 Cypress Semiconductor Corporation Nonvolatile memory device with regions having separately programmable secure access features and related methods and systems
US11768611B2 (en) * 2020-04-02 2023-09-26 Axiado Corporation Secure boot of a processing chip

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116578352A (zh) * 2023-07-11 2023-08-11 沐曦集成电路(上海)有限公司 芯片初始化系统
CN116578352B (zh) * 2023-07-11 2023-09-22 沐曦集成电路(上海)有限公司 芯片初始化系统

Also Published As

Publication number Publication date
JP2022136052A (ja) 2022-09-15
US11954206B2 (en) 2024-04-09
US20220284105A1 (en) 2022-09-08
CN115033294A (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
DE102022105069A1 (de) Systeme, verfahren und vorrichtungen für gesicherte nichtflüchtige speicher
DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE102008011925B4 (de) Sicheres Initialisieren von Computersystemen
DE10392470B4 (de) System und Verfahren zum Ausführen von Initialisierungsbefehlen einer gesicherten Umgebung
DE112019005701T5 (de) Sichere boot-unterstützung für vorrichtungen und zugehörige systeme, verfahren und vorrichtungen
DE112007000363T5 (de) Verfahren zum Bereitstellen sicherer Firmware
DE102016205289A1 (de) Verfahren, Prozessor und Gerät zur Integritätsprüfung von Nutzerdaten
DE112011105687T5 (de) Verwendung eines Option-ROM-Speichers
EP3811260B1 (de) Kryptografiemodul und betriebsverfahren hierfür
DE102020121075A1 (de) Einrichtung und Verfahren zur Authentifizierung von Software
DE102016210788A1 (de) Komponente zur Verarbeitung eines schützenswerten Datums und Verfahren zur Umsetzung einer Sicherheitsfunktion zum Schutz eines schützenswerten Datums in einer solchen Komponente
DE102020117552A1 (de) Sichere hybrid-boot-systeme und sichere boot-verfahren für hybridsysteme
DE102022129538A1 (de) Datenintegritätsvalidierung von externem speicher
EP3924807A1 (de) Verfahren und vorrichtung zum verarbeiten von in einer speichereinrichtung gespeicherten daten
EP3819804A1 (de) Integritätsüberprüfung eines registerinhalts
EP3286872B1 (de) Bereitstellen eines gerätespezifischen kryptographischen schlüssels aus einem systemübergreifenden schlüssel für ein gerät
DE102020216030A1 (de) Verfahren zum abgesicherten Start einer Recheneinheit
DE102021212994B3 (de) Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung
EP3072080B1 (de) Verfahren und vorrichtung zum manipulationsschutz einer recheneinrichtung
DE102023109062A1 (de) System und Verfahren zum Implementieren eines sicheren Boot-Ereignisses mit einem aus einer Vielzahl von in Frage kommenden öffentlichen Schlüsseln aus Schlüsselsätzen für die Infrastruktur-Authentifizierung
DE102022116869A1 (de) Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung
DE102022202691A1 (de) Verfahren zur Durchführung einer abgesicherten Startsequenz einer Recheneinheit
DE102022212965A1 (de) Sicheres kraftfahrzeugsystem
DE102020207614A1 (de) Recheneinrichtung und Betriebsverfahren hierfür
DE102021211591A1 (de) Verfahren und Vorrichtung zum Verarbeiten von Daten