-
VERWANDTE ANMELDUNGEN
-
Diese Patentanmeldung ist eine internationale Patentanmeldung der am 15. Dezember 2020 eingereichten
US-Patentanmeldung Nr. 17/122,927 , die die Priorität und den Vorteil der am 2. Oktober 2020 eingereichten vorläufigen US-Patentanmeldung mit dem Aktenzeichen
63/086,750 beansprucht, deren jeweilige Inhalte durch Bezugnahme hierin aufgenommen sind.
-
GEBIET DER TECHNIK
-
Die vorliegende Offenbarung betrifft allgemein Systeme mit einer Hosteinrichtung, die in einer nichtflüchtigen Speichereinrichtung gespeicherten Code ausführt, und insbesondere Systeme, in denen eine Hosteinrichtung in einer nichtflüchtigen Speichereinrichtung gespeicherten Code authentifiziert.
-
ALLGEMEINER STAND DER TECHNIK
-
Systeme, die Prozessoren umfassen, können Bootvorgänge aufweisen, bei denen Code zur Ausführung durch einen Prozessor, z. B. Software (SW) oder Firmware (FW), aus einer Speichereinrichtung geladen werden kann. Bootvorgänge erfolgen zum Beispiel als Antwort auf Einschalt- und/oder Power-On-Reset-Ereignisse. Der Code für Bootvorgänge wird in der Regel in einer nichtflüchtigen Speichereinrichtung (NVM-Einrichtung, NVM = Nonvolatile Memory) gespeichert.
-
Die Möglichkeit eines „sicheren“ Bootens ist für viele Systeme unerlässlich. Für ein sicheres Booten ist es nötig, dass die Integrität des Codes ermittelt wird, bevor er durch einen Prozessor ausgeführt wird. Bislang kann die Integrität von Code dadurch ermittelt werden, dass eine Hosteinrichtung die Codeinhalte beim Booten eines Systems misst. Das Messen von Codeinhalten ist abhängig von der Größe des Codes (z. B. eines SW-Abbilds), wie durch die nichtflüchtige Einrichtung gespeichert. Eine Gesamtbootzeit (time) kann sich wie folgt ergeben:
wobei tbl die Bootloader-Ladezeit, tapp die Zeit einer Anwendungsmessung (des Prüfens der Integrität), BWmeasure die Transferrate (z. B. Zeit pro Byte) und Sizeapp die Größe des SW-Abbilds (z. B. in Byte) ist. Die Bootzeit kann mithin von der Größe des SW-Abbilds abhängig sein.
-
17 ist ein Blockschaltbild, das einen herkömmlichen Bootablauf für ein System 1701 zeigt. Das System 1701 kann eine NVM-Einrichtung 1703 und eine Hosteinrichtung 1705 umfassen. Bei dem Bootablauf können Power-On-Reset-Schaltungen 1707-0 in der NVM-Einrichtung 1703 eine Einschalt- oder Power-On-Reset-Bedingung erkennen und die NVM-Einrichtung 1703 einschalten, damit sie betriebsbereit ist.
-
In der Hosteinrichtung 1705 können Host-POR-Schaltungen 1707-1 eine Einschalt- oder Power-On-Reset-Bedingung erkennen. Als Antwort kann die Hosteinrichtung 1705 einen Read-Only-Memory(ROM)-Bootvorgang 1709 durchführen, bei dem Bootdaten aus einem ROM geladen werden können. Die Hosteinrichtung 1705 kann dann einen Bootladevorgang 1715 ausführen, der umfasst, dass Bootladedaten 1711 aus der NVM-Einrichtung 1703 gelesen werden. Die Integrität der Bootladedaten 1711 kann an einen Messungsvorgang 1717-0 gebunden sein. Dieser kann umfassen, dass aus den Bootladedaten 1711 mit einer Hashfunktion 1717 ein Hashwert generiert wird und/oder Bootloaderdaten mit einer Entschlüsselungsfunktion 1719 entschlüsselt werden. Der ROM-Bootvorgang 1709 und der Bootladevorgang 1715 können während einer Bootladezeit tbl 1721 erfolgen.
-
Die Hosteinrichtung 1705 kann dann einen Anwendungssoftware(AppSW)-Integritätsvorgang 1723 durchführen. Dieser kann einen Vorgang einer Messung 1717-1 einer in der NVM-Einrichtung 1703 gespeicherten AppSW 1725 umfassen. Der AppSW-Integritätsvorgang 1723 kann eine Zeit tapp 1727 beanspruchen, die in Abhängigkeit von der Größe der AppsSW variieren kann, wie oben angemerkt.
-
Ein Nachteil eines herkömmlichen Bootablaufs wie desjenigen in 17 besteht darin, dass das Booten umso länger dauert, je größer die SW ist. Dies kann in einigen Systemen problematisch sein, etwa in denjenigen, die in einem Controller Area Network (CAN) betrieben werden, in denen die Bootzeit die Busantwortzeitgrenzen für größere SW-Größen überschreiten kann, um nur ein Beispiel zu nennen.
-
Figurenliste
-
- Die 1A bis 1C sind eine Reihe von Blockschaltbildern, die ein Authentifizierungsverfahren für ein System mit einer Hosteinrichtung und einer nichtflüchtigen Speichereinrichtung (NVM-Einrichtung) gemäß einer Ausführungsform zeigen.
- 2 ist ein Blockschaltbild, das ein Verfahren zum Authentifizieren von in einer NVM-Einrichtung gespeicherter Software gemäß einer Ausführungsform zeigt.
- 3 ist ein Blockschaltbild eines Systems und eines korrespondierenden Verfahrens zum Authentifizieren eines NVM-Einrichtungszustands mit einer symmetrischen Verschlüsselung gemäß einer Ausführungsform.
- 4 ist ein Blockschaltbild eines Systems und eines korrespondierenden Verfahrens zum Authentifizieren eines NVM-Einrichtungszustands mit einer asymmetrischen Verschlüsselung gemäß einer Ausführungsform.
- 5 ist ein Blockschaltbild eines Systems und eines korrespondierenden Verfahrens zum Authentifizieren eines NVM-Einrichtungszustands mit einer asymmetrischen Verschlüsselung gemäß einer anderen Ausführungsform.
- 6 ist ein Diagramm, das eine herkömmliche Bootzeit im Vergleich mit Bootzeiten verschiedener Ausführungsformen zeigt.
- 7 ist ein Blockschaltbild einer NVM-Einrichtung gemäß einer Ausführungsform.
- 8 ist ein Schaltbild eines NVM-Arrays, das in Ausführungsformen umfasst sein kann.
- 9 ist ein Blockschaltbild einer IC-NVM-Einrichtung (IC = Integrated Circuit, integrierte Schaltung) gemäß einer Ausführungsform.
- 10 ist ein Blockschaltbild einer Hosteinrichtung gemäß einer Ausführungsform.
- 11 ist ein Blockschaltbild eines Kraftfahrzeugsystems gemäß einer Ausführungsform.
- 12 veranschaulicht ein Kraftfahrzeugsystem gemäß einer anderen Ausführungsform.
- 13 ist ein Ablaufschema eines NVM-Einrichtungsauthentifizierungsverfahrens gemäß einer Ausführungsform.
- 14 ist ein Ablaufschema eines Hosteinrichtungsauthentifizierungsverfahrens gemäß einer Ausführungsform.
- 15 ist ein Ablaufschema eines Authentifizierungsverfahrens gemäß einer Ausführungsform.
- 16 ist ein Ablaufschema eines Vorgangs einer Aktualisierung von Code (z. B. Firmware) gemäß einer Ausführungsform.
- 17 ist ein Blockschaltbild eines herkömmlichen sicheren Bootvorgangs.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Gemäß Ausführungsformen kann eine nichtflüchtige Speichereinrichtung (NVM-Einrichtung) Hostcode zur Ausführung durch eine Hosteinrichtung und NVM-Code zur Ausführung durch die NVM-Einrichtung selbst speichern. Die NVM-Einrichtung kann als Antwort auf vorgegebene Bedingungen (z. B. eine Einschaltung oder ein Power-On-Reset) die Integrität des NVM-Codes prüfen. Die NVM-Einrichtung kann einen Codeintegritätswert speichern, der in einem Authentifizierungscode an die Hosteinrichtung übertragen wird. Die Hosteinrichtung kann den durch die NVM gespeicherten Code basierend auf dem Authentifizierungscode und nicht durch eine Messung des gespeicherten Hostcodes authentifizieren.
-
In einigen Ausführungsformen ist der Codeintegritätswert ein Hashwert einer bekannten authentischen Version des NVM-Codes.
-
In einigen Ausführungsformen kann die NVM-Einrichtung den Authentifizierungscode mit einem privaten Schlüssel verschlüsseln, und die Hosteinrichtung kann den Authentifizierungscode mit einem öffentlichen Schlüssel entschlüsseln.
-
In einigen Ausführungsformen kann die NVM-Einrichtung einen Hashwert des NVM-Codes generieren, der durch die Hosteinrichtung ausgelesen wird. Die Hosteinrichtung kann den aus der NVM-Einrichtung ausgelesenen Hashwert mit einem bekannten gültigen Hashwert vergleichen, um die NVM-Einrichtung und mithin den durch die NVM-Einrichtung gespeicherten Hostcode zu authentifizieren.
-
In den verschiedenen Ausführungsformen unten sind gleiche Elemente mit den gleichen Bezugszeichen versehen, wobei das führende Zeichen (die führenden Zeichen) mit der Nummer der Figur korrespondiert (korrespondieren).
-
Die 1A bis 1C sind Blockschaltbilder eines Systems 100 gemäß einer Ausführungsform. Das System 100 kann eine NVM-Einrichtung 102 und eine Hosteinrichtung 104 umfassen. Die NVM-Einrichtung 102 kann einen NVM-Benutzerraum 106, eine Host-Firmware (Host-FW) 108, eine NVM-Firmware 109, einen Codeintegritätswert 110 und einen Codeintegritätsprüfer 112 umfassen. Der NVM-Benutzerraum 106 kann ein oder mehrere Arrays von NVM-Zellen zum Speichern von Daten umfassen, die die Host-FW (z. B. Code) 108 und die NVM-FW 109 umfassen. NVM-Arrays können beliebig ausgebildet sein, etwa als eine NOR-Konfiguration, ohne jedoch darauf begrenzt zu sein. Die Host-FW 108 kann ein Firmwareabbild sein, das durch die Hosteinrichtung 104 ausführbar ist. Die NVM-FW 109 kann ein Firmwareabbild sein, das durch die NVM-Einrichtung 102 ausführbar ist. In einigen Ausführungsformen wird die NVM-FW 109 in einem sicheren Speicherbereich der NVM-Einrichtung 102 gespeichert, und außerhalb der NVM-Einrichtung kann nicht darauf zugegriffen werden, oder es kann nur mit einer Prozedur für einen sicheren Zugriff darauf zugegriffen werden.
-
Der Codeintegritätswert 110 kann ein Wert sein, der die Integrität der NVM-Einrichtung 102 repräsentiert und mithin die Integrität der Host-FW 108 authentifizieren kann. Der Codeintegritätswert 110 kann von der Hosteinrichtung 104 zum Authentifizieren der NVM-Einrichtung 102 genutzt werden, und die Hosteinrichtung 102 muss mithin die Host-FW 108 nicht mit einem Messungsvorgang wie bei herkömmlichen Verfahrensweisen bewerten. Der Codeintegritätswert 110 kann eine Bitgröße aufweisen, die nicht in Abhängigkeit von der Größe der Host-FW 108 variiert. In einigen Ausführungsformen ist der Codeintegritätswert 110 ein Hashwert, der durch eine an einer bekannten authentischen Version der NVM-FW 109 ausgeführte Hashfunktion generiert wird. In einigen Ausführungsformen wird der Codeintegritätswert 110 an einem (nicht gezeigten) sicheren Ort der NVM-Einrichtung 102 gespeichert. Bei dem sicheren Ort kann es sich um einen Speicherbereich handeln, auf den nur durch eine Sicherheitsprozedur (wie beispielsweise eine Authentifizierung) zugegriffen werden kann. In einigen Ausführungsformen wird der Codeintegritätswert 110 in einem unverschlüsselten Zustand (z. B. in einem sicheren Bereich) gespeichert. Jedoch könnte ein solcher Wert in anderen Ausführungsformen auch in einem verschlüsselten Zustand in der NVM-Einrichtung 102 gespeichert werden.
-
Der Codeintegritätsprüfer 112 kann die NVM-FW 109 zur Nutzung bei einer Integritätsbewertung der NVM-Einrichtung 102 (und mithin der durch die NVM-Einrichtung 102 gespeicherten Host-FW 108) messen. Dieser Vorgang kann in einer beliebigen geeigneten Weise erfolgen, etwa durch eine Messung der gesamten NVM-FW 109 oder von Abschnitten davon. In einigen Ausführungsformen generiert der Codeintegritätsprüfer 112 aus der NVM-FW 109 einen einzigen Hashwert. In einigen Ausführungsformen wird ein solcher generierter Hashwert mit einem bekannten gültigen Hashwert (z. B. dem Codeintegritätswert 110) verglichen. Der Codeintegritätsprüfer 112 kann beliebig ausgebildet sein, etwa als ein NVM-Prozessor, der gespeicherte Anweisungen ausführt, und/oder Logikschaltungen, die für die Funktion ausgelegt sind, ohne jedoch darauf begrenzt zu sein. Wenn der Codeintegritätsprüfer 112 bestimmt, dass die gespeicherte NVM-FW 109 nicht gültig ist, kann die NVM 102 in einigen Ausführungsformen jegliche Zugriffe auf die Host-FW 108 verhindern (da nicht garantiert werden kann, dass sie gültig ist).
-
Die Hosteinrichtung 104 kann mit der NVM 102 über beliebige geeignete Mittel kommunizieren, die eine Kabel- oder kabellose Verbindung umfassen. In einigen Ausführungsformen kommuniziert die Hosteinrichtung 104 mit der NVM-Einrichtung 102 über einen seriellen Bus. Die Hosteinrichtung 104 kann eine Authentifizierungsfunktion 114 und eine Host-FW-Ausführungsfunktion 116 umfassen. Die Authentifizierungsfunktion 114 kann die FW 108 unter Nutzung eines aus der NVM 102 bereitgestellten Codeintegritätswerts 110 authentifizieren. Die Host-FW-Ausführungsfunktion 116 kann die in der NVM-Einrichtung 102 gespeicherte Host-FW 108 ausführen, um verschiedene Systemanwendungen bereitzustellen. In einigen Ausführungsformen ist die Host-FW-Ausführungsfunktion 116 eine Execute-In-Place(XIP)-Funktion, die Code direkt aus der NVM 102 ausführt. Jedoch könnte die Host-FW-Ausführungsfunktion 116 in anderen Ausführungsformen die Host-FW 108 auch in einen Hostspeicher (z. B. ein DRAM, das nicht gezeigt wird) in der Hosteinrichtung 104 laden. Die Hosteinrichtung 104 kann die Host-FW dann aus dem Hostspeicher ausführen.
-
Nunmehr werden Vorgänge des Systems 100 beschrieben.
-
Die NVM-Einrichtung 102 in 1A, auf die hierzu Bezug genommen wird, kann als Antwort auf bestimmte Bedingungen die Integrität der NVM-FW 109 prüfen ①. In einigen Ausführungsformen umfassen solche Bedingungen eine Einschaltung oder ein Power-On-Reset. Jedoch könnte ein Integritätsprüfungsvorgang auch als Antwort auf beliebige andere geeignete Bedingungen, die einen vorgegebenen, durch die Hosteinrichtung 104 ausgegebenen Befehl umfassen, ausgelöst werden. Der FW-Integritätsprüfungsvorgang ① kann so wie jegliche der hierin beschriebenen Vorgänge oder auf eine äquivalente Weise erfolgen.
-
Die NVM-Einrichtung 102 in 1 B, auf die nunmehr Bezug genommen wird, kann einen verschlüsselten Codeintegritätswert 110' an die Hosteinrichtung 104 senden. Die Hosteinrichtung 104 kann die NVM-FW 109 basierend auf dem verschlüsselten Codeintegritätswert 110' authentifizieren. In einigen Ausführungsformen kann die Hosteinrichtung 104 auf die NVM-Einrichtung 102 zugreifen, um bei einem Authentifizierungsvorgang zusätzliche Daten auszulesen (z. B. um einen Hashwert von aktuell gespeicherter FW 108 abzurufen). Der verschlüsselte Codeintegritätswerts 110' kann eine Größe aufweisen, die unabhängig von der Größe der Host-FW 108 ist, und es kann mithin in einem vorgegebenen Zeitabschnitt (z. B. bei einem einzigen Lesevorgang) darauf zugegriffen werden. Infolgedessen kann die Zeit für Bootvorgänge schneller und/oder deterministischer als bei herkömmlichen Verfahrensweisen sein. Bei der Authentifizierung der NVM-FW 109 lassen sich der Zustand der NVM-Einrichtung 102 und mithin der Zustand der durch die NVM-Einrichtung 102 gespeicherten Host-FW 108 authentifizieren.
-
Sobald die Hosteinrichtung 104 in 1C, auf die nunmehr Bezug genommen wird, die Host-FW 108 authentifiziert hat, kann die Hosteinrichtung 104 auf die Host-FW 108 zur Ausführung durch die FW-Ausführungsfunktion 116 zugreifen. In einigen Ausführungsformen wird die Host-FW 108 im Execute-In-Place-Verfahren ausgeführt. In anderen Ausführungsformen kann die FW 108 in einen (nicht gezeigten) Hostspeicher geladen werden.
-
Gemäß Ausführungsformen kann eine Hosteinrichtung, statt die Integrität von in einer NVM-Einrichtung gespeichertem Code (z. B. SW oder FW) durch einen Messungsvorgang nachzuweisen, die Integrität des kryptografischen Zustands der NVM-Einrichtung nachweisen. Durch das Nachweisen, dass die Hardware (HW) und die NVM-FW der NVM-Einrichtung in einem gültigen kryptografischen Zustand sind, kann nachgewiesen werden, dass an der NVM-Einrichtung keine unbefugten Änderungen vorgenommen worden sind. Es kann also verifiziert werden, dass ein in die NVM-Einrichtung einprogrammierter Inhalt (z. B. Code) korrekt in einem gültigen kryptografischen Zustand ist. Wenn an der NVM-Einrichtung keine unbefugten Änderungen vorgenommen worden sind, kann mithin der in der NVM-Einrichtung gespeicherte Inhalt (z. B. Hostcode) nicht kompromittiert worden sein.
-
Das Nachweisen eines kryptografischen Zustands einer NVM-Einrichtung anstelle des kryptografischen Zustands eines durch die NVM-Einrichtung gespeicherten Abbilds (z. B. von SW) kann ein Vorgang in einer festen Zeit und unabhängig von der Abbildgröße sein. Dies ist anders als bei herkömmlichen Verfahrensweisen wie derjenigen, die in 17 gezeigt ist.
-
2 ist ein Blockschaltbild eines Systems 200, das einen Bootablauf gemäß einer Ausführungsform zeigt. Das System 200 kann eine sichere NVM-Einrichtung 202 und eine Hosteinrichtung 204 umfassen. Die NVM-Einrichtung 202 kann eine Anwendungssoftware (AppSW) 208 zur Ausführung durch die Hosteinrichtung 204 speichern. Die NVM-Einrichtung 202 kann eine Power-On-Reset(POR)-Schaltung 218-0, eine Hashfunktion 220-0, einen Bootloadercode 222 und eine kryptografische Funktion 224-0 umfassen. Die Hosteinrichtung 204 kann POR-Schaltungen 218-1, eine Hosthashfunktion 220-1 und eine Messungsfunktion 228 umfassen.
-
Die POR-Schaltungen 218-0 können beim Bootablauf als Antwort auf eine Einschalt- oder Power-On-Reset-Bedingung die NVM-Einrichtung 202 einschalten. In einigen Ausführungsformen wird die Hashfunktion 220-0 dazu genutzt, um einen Codeintegritätswert aus durch die NVM-Einrichtung 202 gespeichertem NVM-Code zu generieren.
-
In der Hosteinrichtung 204 können die POR-Schaltungen 218-1 die Hosteinrichtung 204 starten, wodurch ein Read-Only-Memory(ROM)-Bootvorgang 226 eingeleitet werden kann. Dies kann umfassen, dass (nicht gezeigte) Verarbeitungsschaltungen auf einen Read-Only-Memory(ROM)-Bootcode zugreifen, um eine Anfangsfunktionalität zuzuschalten.
-
Sobald die Hosteinrichtung 204 hochgefahren und funktionsbereit ist, kann sie Bootloadercode aus der NVM-Einrichtung 202 auslesen 234-0. Die Hosteinrichtung 204 kann durch die Abarbeitung des ROM-Bootcodes einen Messungsvorgang 228 an dem Bootloadercode 222 ausführen und, wenn der Bootloadercode 222 gültig ist, den Bootloadercode 222 laden. Die Hosteinrichtung 204 kann in einer Bootloaderfunktion 222 durch die Abarbeitung des installierten Bootloadercodes 222 die NVM-Einrichtung 202 (und mithin die durch sie gespeicherte AppsSW 208) authentifizieren. In einigen Ausführungsformen kann die Hosteinrichtung 204 mit einem Lesebefehl oder dergleichen auf Authentifizierungsdaten zugreifen. Authentifizierungsdaten 234-1, die durch die Hosteinrichtung 204 aus der NVM-Einrichtung 202 ausgelesen werden, können eine begrenzte Größe haben und unabhängig von der Größe von durch die NVM-Einrichtung 202 gespeicherter Firmware sein. Die Authentifizierungsdaten 234-1 können einen Codeintegritätswert gemäß der Beschreibung hierin oder gemäß einem Äquivalent umfassen.
-
Sobald der Zustand der NVM-Einrichtung 202 authentifiziert worden ist, kann die Hosteinrichtung 204 einen Anwendungsausführungsvorgang 232 durchführen, bei dem ein Zugriff auf in der NVM-Einrichtung 202 gespeicherte Software (z. B. die AppsSW 208) erfolgt und diese ausgeführt wird. In einigen Ausführungsformen kann dies umfassen, dass Software 234-2 für ein Execute-In-Place-Verfahren oder zur Speicherung in einem Hostspeicher in der Hosteinrichtung 204 zur Ausführung aus der NVM-Einrichtung 202 ausgelesen wird.
-
Die von der Hosteinrichtung 204 zum Booten und Entsperren (z. B. Authentifizieren) der NVM-Einrichtung 204 benötigte Zeit, die als tbl_unlock 236 gezeigt ist, kann den ROM-Bootvorgang 226 und einen Bootloadervorgang 230 umfassen. Es versteht sich, dass die Zeit tbl_unlock 236 anders als beim herkömmlichen Bootablauf in 17 ein Einstellwert sein kann, der unabhängig von der Größe von durch die NVM-Einrichtung 202 gespeicherter Firmware ist, da nicht an der Firmware, sondern nur am Bootloadercode 222 eine Messung vorgenommen wird.
-
Ein Authentifizierungsvorgang zwischen einer NVM-Einrichtung und einer Hosteinrichtung kann in einer beliebigen geeigneten Weise erfolgen, und in einigen Ausführungsformen basiert die Authentifizierung auf der symmetrischen Kryptografie. 3 zeigt eine solche Ausführungsform.
-
3 zeigt ein System 300, das eine NVM-Einrichtung 302 und eine Hosteinrichtung 304 umfasst. Es wird davon ausgegangen, dass die NVM-Einrichtung 302 im System 300 beim Booten ihre eigene FW-Integrität prüfen kann. Ferner verwenden die NVM-Einrichtung 302 und die Hosteinrichtung 304 denselben geheimen Schlüssel.
-
Gemäß Ausführungsformen kann die Hosteinrichtung 304 beim Booten (z. B. bei einer Einschaltung oder einem Power-On-Reset) eine Aufforderung an die NVM-Einrichtung 302 senden. Als Antwort auf die Aufforderung kann die NVM-Einrichtung 302 eine Antwort generieren. Die Hosteinrichtung 304 kann die Antwort validieren. Wenn die Antwort der NVM-Einrichtung 302 gültig ist, kann die NVM-Einrichtung 302 (und die durch sie gespeicherte FW) authentifiziert werden, und auf die FW kann von der Hosteinrichtung 304 zur Ausführung zugegriffen werden.
-
Die NVM-Einrichtung 302 in 3, auf die weiterhin Bezug genommen wird, kann über eine oder mehrere Verbindungen mit der Hosteinrichtung 304 kommunizieren. Solche Verbindungen können Kabel- oder kabellose Verbindungen umfassen, und insbesondere können Ausführungsformen einen seriellen Bus umfassen.
-
Bei der NVM-Einrichtung 302 kann es sich um eine sichere Einrichtung mit Speicherorten handeln, auf die ohne eine Authentifizierungs- oder andere Sicherheitsprozedur von außerhalb der NVM-Einrichtung 302 nicht zugegriffen werden kann. Die NVM-Einrichtung 302 kann einen Benutzerraum 306 umfassen, einen geheimen Schlüssel 338 speichern, einen Authentifizierungscode 310 generieren und einen NVM-Code speichern, der geprüft werden kann, um einen Codeprüfwert 312 zu generieren. Der Benutzerraum 306 kann einen Speicherort umfassen, auf den von anderen Einrichtungen (z. B. der Hosteinrichtung 304) zugegriffen werden kann und der eine Host-FW zur Ausführung durch die Hosteinrichtung 304 umfasst. Der Benutzerraum 306 kann durch ein oder mehrere NVM-Arrays gebildet werden. Der geheime Schlüssel 338 kann an einem sicheren Ort in der NVM-Einrichtung 302 gespeichert werden. In einigen Ausführungsformen handelt es sich bei diesem sicheren Ort um ein NVM-Array oder einen Teil eines NVM-Arrays, das für einen sicheren Zugriff ausgelegt ist. Ein Authentifizierungscodegenerator 310 kann einen Authentifizierungscode in einer beliebigen geeigneten Weise generieren und kann in der gezeigten Ausführungsform einen Hash-Nachrichtenauthentifizierungscode (HMAC) generieren. Ein Authentifizierungscode (R) kann mit einem verschlüsselten Codeintegritätswert (FW Hash) generiert werden. Der Codeintegritätswert (FW Hash) kann zum Validieren von durch die NVM-Einrichtung 302 gespeicherter NVM-FW genutzt werden. In der gezeigten Ausführungsform kann FW Hash ein Hashwert sein, der aus einem bekannten authentischen NVM-FW-Abbild generiert wird. Ein Codeintegritätswertgenerator 312 kann einen Codeprüfwert (FW Hash_r) für aktuell durch die NVM-Einrichtung 302 gespeicherte NVM-FW generieren (wobei jedoch nicht zwangsläufig bekannt ist, ob sie gültig ist).
-
Die Hosteinrichtung 304 kann denselben geheimen Schlüssel 338 wie die NVM-Einrichtung 302 speichern, einen Hostnoncewert (nonce_host) 340 generieren, ebenso wie die NVM-Einrichtung 302 einen Prüfungsauthentifizierungswert 310' generieren und Authentifizierungswerte vergleichen 344.
-
Nach der Beschreibung der Komponenten des Systems 300 wird nunmehr ein Authentifizierungsvorgang für das System 300 beschrieben.
-
Bei ① speichern die NVM-Einrichtung 302 und die Hosteinrichtung 304 denselben geheimen Schlüssel (für eine symmetrische Authentifizierung).
-
Bei ② generiert die NVM-Einrichtung 302 einen Codeprüfwert (FW Hash_r) für NVM-FW. Der Codeprüfwert (FW Hash_r) kann eine Messung der aktuell in der NVM-Einrichtung 302 gespeicherten NVM-FW repräsentieren. In der gezeigten Ausführungsform ist FW Hash_r ein Hashwert von NVM-FW, der mit derjenigen Hashfunktion generiert wird, die auch zum Generieren eines gültigen Codeintegritätswerts (FW Hash), der durch die NVM-Einrichtung 302 gespeichert wird, genutzt wird.
-
Bei ③ liest die Hosteinrichtung 304 den Codeprüfwert (FW Hash_r) 342 aus der NVM-Einrichtung 302 aus. Dies ist anders als bei herkömmlichen Verfahrensweisen, bei denen die Hosteinrichtung 304 die gesamte Host-FW aus dem NVM-Benutzerraum 306 für einen Messungsvorgang ausliest.
-
Bei ④ sendet die Hosteinrichtung 304 einen Hostnoncewert (nonce_host) an die NVM-Einrichtung 302. Der Hostnoncewert ist möglicherweise ein nur einmal verwendbarer Wert, der in einer beliebigen geeigneten Weise generiert wird, etwa indem hierzu ein gespeicherter Noncewert abgerufen oder ein in der Hosteinrichtung 304 untergebrachter Noncewertgenerator (z. B. ein Zufalls- oder Pseudozufallszahlengenerator) genutzt wird, ohne jedoch darauf begrenzt zu sein. Nonce_host kann in einer beliebigen geeigneten Weise an die NVM-Einrichtung 302 gesendet werden, etwa indem hierzu ein vorgegebener Befehl, der den Noncewert umfasst, übertragen wird oder ein Schreibvorgang an einem vorgegebenen Ort (z. B. in einem Register) der NVM-Einrichtung 302 erfolgt, ohne jedoch darauf begrenzt zu sein.
-
Bei ⑤ generiert die NVM-Einrichtung 302 einen Authentifizierungscode (R) 310 und sendet ihn an die Hosteinrichtung 304. In der gezeigten Ausführungsform lässt sich der Authentifizierungscode (R) 310 dadurch generieren, dass ein Codeintegritätswert FW Hash, der nonce_host-Wert und ein durch die NVM generierter Noncewert (nonce_nvm) mit dem geheimen Schlüssel 338 verschlüsselt werden. Der resultierende verschlüsselte Wert kann an eine HMAC-Funktion zum Generieren eines Hashwerts, um R zu generieren, gebunden sein. Der Authentifizierungswert R kann dann zusammen mit dem nonce_nvm-Wert an die Hosteinrichtung 304 gesendet werden. Die Werte R und nonce_nvm können in einer beliebigen geeigneten Weise an die Hosteinrichtung 304 gesendet werden, etwa als Daten als Antwort auf eine Leseanforderung von der Hosteinrichtung 304 (z. B. durch das Auslesen aus einem Register), ohne jedoch darauf begrenzt zu sein.
-
Bei ⑥ generiert die Hosteinrichtung 304 einen Vergleichsauthentifizierungscode (R'). In der gezeigten Ausführungsform wird der Vergleichsauthentifizierungscode (R') 310 dadurch generiert, dass der aus der NVM-Einrichtung 302 ausgelesene Codeintegritätswert FW Hash_r, der nonce_host-Wert und der von der NVM-Einrichtung empfangene nonce_nvm-Wert mit dem geheimen Schlüssel 338 verschlüsselt werden. Der resultierende verschlüsselte Wert kann an dieselbe HMAC-Funktion wie die NVM-Einrichtung, um R zu generieren, gebunden sein.
-
Bei ® vergleicht die Hosteinrichtung 304 den von der NVM-Einrichtung 302 empfangenen Authentifizierungscode (R) 310 mit dem durch sie generierten Vergleichsauthentifizierungscode (R') 310'. Wenn die zwei Authentifizierungscodes übereinstimmen (R' = R), kann die NVM-Einrichtung authentifiziert werden, und die Hosteinrichtung 302 kann auf im Benutzerraum 306 gespeicherte FW zugreifen und sie nutzen.
-
3 zeigt die Nutzung eines speziellen Authentifizierungscodes (HMAC), jedoch können Ausführungsformen hierin jegliche geeigneten Authentifizierungscodes und Authentifizierungscodeprozesse umfassen, die auf einer Verschlüsselung basierende Authentifizierungscodes wie AES-CMAC oder andere kryptografische Funktionen umfassen, ohne jedoch darauf begrenzt zu sein. Andere Ausführungsformen umfassen möglicherweise eindeutige Gerätekennungen, die eine zusammengesetzte Gerätekennung wie etwa die durch eine Device Identifier Composition Engine (DICE) generierte Gerätekennung umfassen.
-
Ein Authentifizierungsvorgang zwischen einer NVM-Einrichtung und einer Hosteinrichtung kann die symmetrische Kryptografie umfassen, jedoch kann in anderen Ausführungsformen auch von der asymmetrischen Kryptografie Gebrauch gemacht werden. 4 zeigt eine solche Ausführungsform.
-
4 zeigt ein System 400, das eine NVM-Einrichtung 402 und eine Hosteinrichtung 404 umfasst. Es wird davon ausgegangen, dass die NVM-Einrichtung 402 im System 400 beim Booten ihre eigene NVM-FW-Integrität prüfen kann und dass durch die NVM-Einrichtung 402 ein digitales Zertifikat 410 gespeichert wird. Das digitale Zertifikat 410 kann von einer der Hosteinrichtung 404 zugeordneten Entität (z. B. einem OEM-Hersteller) generiert und unter Nutzung eines privaten Schlüssels signiert werden. Das digitale Zertifikat 410 kann einen öffentlichen Schlüssel, der mit dem privaten Schlüssel korrespondiert, umfassen. Eine digitale Signatur kann einen verschlüsselten Codeintegritätswert (z. B. FW Hash) umfassen. Es wird zudem davon ausgegangen, dass die Hosteinrichtung 404 ihre eigene Version des öffentlichen Schlüssels speichert.
-
Gemäß Ausführungsformen kann die Hosteinrichtung 404 beim Booten einen öffentlichen Schlüssel und eine digitale Signatur, die durch die NVM-Einrichtung bereitgestellt werden, validieren. Die Hosteinrichtung 404 kann dann einen Codeintegritätswert mit einem Codeprüfwert vergleichen, der dadurch generiert wird, dass die NVM-Einrichtung 402 durch sie gespeicherte NVM-FW misst.
-
Die NVM-Einrichtung 402 in 4, auf die weiterhin Bezug genommen wird, kann über eine oder mehrere Verbindungen mit der Hosteinrichtung 404 kommunizieren. Die NVM-Einrichtung 402 kann einen Benutzerraum 406 umfassen, das digitale Zertifikat 410 speichern und einen NVM-Code speichern, der geprüft werden kann, um einen Codeprüfwert 412 zu generieren. Das digitale Zertifikat 410 kann einen öffentlichen Schlüssel 446 und einen Codeintegritätswert umfassen. In einigen Ausführungsformen ist das digitale Zertifikat 410 mit dem Standard X.509 konform. Das digitale Zertifikat 410 kann eine mit einem privaten Schlüssel generierte digitale Signatur 452 umfassen. Wie unten noch beschrieben wird, kann das digitale Zertifikat 410 durch die Hosteinrichtung 404 in die NVM-Einrichtung 402 geladen werden.
-
Die Hosteinrichtung 404 kann denselben öffentlichen Schlüssel 446' wie die NVM-Einrichtung 402 speichern. In einigen Ausführungsformen wird der öffentliche Schlüssel 446' mit in der Hosteinrichtung 404 untergebrachten nichtflüchtigen Schaltungen, wie etwa One-Time-Programmable(OTP)-Speicherzellen oder „eFuse“-Schaltungen, gespeichert. Die Hosteinrichtung 404 kann auch noch andere Funktionen ausführen, wie unten noch beschrieben wird.
-
Nunmehr wird ein Authentifizierungsvorgang für das System 400 beschrieben.
-
Bei ① installiert die Hosteinrichtung 404 das digitale Zertifikat 410 in der NVM-Einrichtung 404. Das digitale Zertifikat 410 in der gezeigten Ausführungsform kann einen öffentlichen Schlüssel, einen gültigen Codeintegritätswert (FW Hash) 450 und eine digitale Signatur aufweisen, die mit dem privaten Schlüssel, der mit dem öffentlichen Schlüssel korrespondiert, signiert worden ist.
-
Bei ② generiert die NVM-Einrichtung 402 einen Codeprüfwert (FW Hash_r) für gespeicherte NVM-FW. Der FW-Hash_r-Wert kann ein Hashwert der gespeicherten NVM-FW sein, der mit derjenigen Hashfunktion generiert wird, die auch zum Generieren eines Codeintegritätswerts (FW Hash), der in das digitale Zertifikat 410 aufgenommen wird, genutzt wird.
-
Bei ③ empfängt die Hosteinrichtung 404 den durch die NVM-Einrichtung 402 gespeicherten öffentlichen Schlüssel 446 und führt einen Vergleichsvorgang 448 mit dem durch sie gespeicherten öffentlichen Schlüssel 446' aus. Wenn die öffentlichen Schlüssel übereinstimmen, kann der Authentifizierungsvorgang fortgesetzt werden. Wenn die öffentlichen Schlüssel nicht übereinstimmen, kann die Authentifizierung der NVM-Einrichtung 402 fehlschlagen. In einigen Ausführungsformen umfasst dieser Vergleichsvorgang 448 das Auslesen eines adressierbaren Orts der NVM-Einrichtung 402 (z. B. einer Speicher- und/oder Registeradresse).
-
Bei ④ führt die Hosteinrichtung 404 einen Signaturverifizierungsvorgang 456 durch, um die von der NVM-Einrichtung 402 bereitgestellte digitale Signatur 452 zu verifizieren. Die NVM-Einrichtung 402 kann der Hosteinrichtung 404 die mit dem digitalen Zertifikat 410 korrespondierende digitale Signatur 452 bereitstellen. Die digitale Signatur 452 kann ein Wert sein, der zuvor mit einem privaten Schlüssel, der mit den öffentlichen Schlüsseln 446/446' korrespondiert, verschlüsselt worden ist. In einigen Ausführungsformen nutzt die NVM-Einrichtung 402 eine Hashfunktion 454, um aus dem gesamten digitalen Zertifikat oder Abschnitten davon (z. B. dem öffentlichen Schlüssel 446 oder FW Hash 450) einen Hashwert zu generieren. Der resultierende Hashwert kann der Hosteinrichtung 404 zur Nutzung beim Authentifizierungsprozess bereitgestellt werden. In diesem Fall kann die digitale Signatur 452 mit dem Hashwert korrespondieren (z. B. den mit dem privaten Schlüssel verschlüsselten Hashwert umfassen). In anderen Ausführungsformen kann die Signaturverifizierung 456 hingegen auch umfassen, dass die NVM-Einrichtung 402 das digitale Zertifikat 410 mit der korrespondierenden digitalen Signatur 452 sendet. Die Hosteinrichtung 404 kann die digitale Signatur 452 unter Nutzung des öffentlichen Schlüssels 446' entschlüsseln. Wenn die entschlüsselte Signatur mit der korrespondierenden Nachricht (z. B. einem Hashwert oder einem digitalen Zertifikat) übereinstimmt, lässt sich der in das digitale Zertifikat aufgenommene Codeintegritätswert (FW Hash) validieren. In einigen Ausführungsformen werden Signaturverifizierungswerte von der NVM-Einrichtung 402 als Antwort auf einen Hosteinrichtungsbefehl (z. B. einen Lesebefehl von einer Speicher- oder Registeradresse) an die Hosteinrichtung 404 gesendet.
-
Bei ⑤ vergleicht die Hosteinrichtung 404 einen Codeintegritätswert (FW Hash) mit dem durch die NVM-Einrichtung 402 generierten Codeprüfwert (FW Hash_r). Wenn die zwei Werte übereinstimmen (FW Hash = FW Hash_r), kann die NVM-Einrichtung 402 authentifiziert werden, und die Hosteinrichtung 404 kann auf im Benutzerraum 406 gespeicherte Host-FW zugreifen und sie nutzen. In einigen Ausführungsformen ist möglicherweise ein Codeintegritätswert (FW Hash) mit dem digitalen Zertifikat 410 empfangen worden. In Ausführungsformen, in denen ein Hashwert zur Signaturverifizierung genutzt wird, liest die Hosteinrichtung 404 den gültigen Codeintegritätswert (FW Hash) hingegen aus der NVM-Einrichtung 402 aus.
-
Manche Ausführungsformen können eine Authentifizierung mit einer asymmetrischen Verschlüsselung umfassen, bei der ein von einer Hosteinrichtung stammender privater Schlüssel (z. B. ein privater Schlüssel eines OEM-Herstellers) gebraucht wird, während in anderen Ausführungsformen von einem von einer NVM-Einrichtung stammenden privaten Schlüssel Gebrauch gemacht wird. 5 ist ein Blockschaltbild einer solchen Ausführungsform.
-
5 zeigt ein System 500, das eine NVM-Einrichtung 502 und eine Hosteinrichtung 504 umfasst. Es wird davon ausgegangen, dass die NVM-Einrichtung 502 im System 500 beim Booten ihre eigene NVM-FW-Integrität prüfen und einen privaten Verschlüsselungsschlüssel (einen privaten NVM-Schlüssel), auf den die Hosteinrichtung 504 nicht zugreifen kann, sicher speichern kann. Es wird zudem davon ausgegangen, dass die Hosteinrichtung 504 einen öffentlichen Schlüssel, der mit dem privaten NVM-Schlüssel korrespondiert, speichert.
-
Gemäß Ausführungsformen kann die Hosteinrichtung 504 beim Booten einen Noncewert an die NVM-Einrichtung 502 senden. Die NVM-Einrichtung 502 kann ein Zertifikat mit einer on-the-fly generierten digitalen Signatur zurücksenden. Die Hosteinrichtung 504 kann die Signatur validieren, um die NVM-Einrichtung 502 zu authentifizieren.
-
Die NVM-Einrichtung 502 in 5, auf die weiterhin Bezug genommen wird, kann mit der Hosteinrichtung 504 über eine oder mehrere Verbindungen kommunizieren. Die NVM-Einrichtung 502 kann einen privaten Schlüssel (einen privaten NVM-Schlüssel) 558 und einen korrespondierenden öffentlichen Schlüssel (einen öffentlichen NVM-Schlüssel) 560 umfassen. Die NVM-Einrichtung 502 kann zudem on-the-fly einen Codeprüfwert und eine digitale Signatur generieren und hierzu den privaten NVM-Schlüssel nutzen.
-
Die Hosteinrichtung 504 kann denselben öffentlichen Schlüssel 560' wie die NVM-Einrichtung 502 speichern. In einigen Ausführungsformen wird der öffentliche Schlüssel 560' mit in der Hosteinrichtung untergebrachten nichtflüchtigen Schaltungen gespeichert. Die Hosteinrichtung 504 kann auch noch andere Funktionen ausführen, wie unten noch beschrieben wird.
-
Nunmehr wird ein Authentifizierungsvorgang für das System 500 beschrieben.
-
Bei ① prüft die NVM-Einrichtung 502 die Integrität ihrer eigenen NVM-FW 512. In einigen Ausführungsformen umfasst dieser Schritt, dass aus der NVM-FW ein Hashwert generiert und mit einem gültigen Hashwert verglichen wird, wobei dieser zum Beispiel an einem sicheren Ort in der NVM-Einrichtung 502 gespeichert ist. In einigen Ausführungsformen generiert die NVM-Einrichtung 502 einen FW-Zustandswert (FW_state), der die Integrität (oder die Nichtintegrität) der NVM-FW anzeigen kann. Wenn die Integritätsprüfung der NVM-FW 512 fehlschlägt, kann die NVM-Einrichtung in einigen Ausführungsformen den Zugang zu FW, die sie speichert, auch etwa zu Host-FW, sperren.
-
Bei ② sendet die Hosteinrichtung 504 einen Noncewert (nonce_host) an die NVM-Einrichtung 502. In einigen Ausführungsformen kann dieser Schritt umfassen, dass eine Hosteinrichtung einen Befehl mit dem nonce_host-Wert sendet und/oder den nonce_host-Wert an einen vorgegebenen Ort in der NVM-Einrichtung 502 (z. B. an einer Register- oder Speicheradresse) schreibt, ohne jedoch darauf begrenzt zu sein.
-
Bei ③ generiert die NVM-Einrichtung 502 unter Nutzung des privaten NVM-Schlüssels 558 eine digitale Signatur 562. Die digitale Signatur 562 kann „on-the-fly“ (z. B. als Antwort darauf, dass die Hosteinrichtung 504 den Authentifizierungsvorgang initiiert) generiert werden. Die digitale Signatur 562 kann aus einem digitalen Zertifikat generiert werden, das den (durch die NVM-Einrichtung 502 gespeicherten) öffentlichen NVM-Schlüssel 560, den empfangenen nonce_host-Wert 540 und optional den FW_state-Wert umfasst. Die digitale Signatur 562 kann aus den reinen Werten eines digitalen Zertifikats oder aus einem aus dem digitalen Zertifikat generierten Hashwert oder einer Kombination aus beidem generiert werden. In einigen Ausführungsformen sendet die NVM-Einrichtung 502 das gesamte digitale Zertifikat oder einen Abschnitt davon an die Hosteinrichtung 504.
-
Bei ④ vergleicht die Hosteinrichtung 504 den öffentlichen Schlüssel (560'), den sie speichert, mit dem von der NVM-Einrichtung 502 empfangenen öffentlichen Schlüssel (560). In einigen Ausführungsformen empfängt die Hosteinrichtung 504 den öffentlichen Schlüssel (560) als Teil eines signierten digitalen Zertifikats von der NVM-Einrichtung 502. Wenn die öffentlichen Schlüssel nicht übereinstimmen, kann die Authentifizierung der NVM-Einrichtung 502 fehlschlagen.
-
Bei ⑤ führt die Hosteinrichtung 504 einen Signaturverifizierungsvorgang 556 durch, um die von der NVM-Einrichtung 502 bereitgestellte digitale Signatur 562 zu verifizieren. Die NVM-Einrichtung 502 kann der Hosteinrichtung 504 eine mit dem digitalen Zertifikat korrespondierende digitale Signatur 562 bereitstellen. Wie oben angemerkt, nutzt die NVM-Einrichtung 502 in einigen Ausführungsformen eine Hashfunktion 554 zum Generieren eines Hashwerts aus dem gesamten digitalen Zertifikat oder Abschnitten davon. Der FW_state-Wert 561 kann in Ausführungsformen als Nachrichtendaten in den Hashwert aufgenommen werden. Der resultierende Hashwert kann (mit eventuellen korrespondierenden Nachrichtendaten) der Hosteinrichtung 504 zur Nutzung beim Authentifizierungsprozess bereitgestellt werden. In anderen Ausführungsformen umfasst der Signaturverifizierungsvorgang 556, dass die NVM-Einrichtung 502 das digitale Zertifikat (z. B. den öffentlichen NVM-Schlüssel 560, nonce_host 540 und optional FW_state) mit einer korrespondierenden digitalen Signatur 562 sendet.
-
Die Hosteinrichtung 504 kann die digitale Signatur 562 unter Nutzung des öffentlichen Schlüssels 560' entschlüsseln. Wenn bei dem Authentifizierungsprozess die Hashfunktion 554 genutzt wird, kann die Hosteinrichtung 504 dieselbe Hashfunktion zum Generieren eines übereinstimmenden Hashwerts (z. B. aus dem öffentlichen Schlüssel 560' und nonce_host 540) nutzen. Wenn der entschlüsselte Wert mit einem Erwartungswert übereinstimmt, lässt sich die NVM-Einrichtung 502 authentifizieren. In Ausführungsformen, die den FW_state-Wert 561 umfassen, kann die Authentifizierung der NVM-Einrichtung 502 fehlschlagen, wenn der FW_state-Wert 561 anzeigt, dass eine Integritätsprüfung von gespeicherter FW (nämlich 512) fehlgeschlagen ist (und mithin kann auch die Authentifizierung eventueller Inhalte in einem NVM-Benutzerraum 506, wie etwa von durch die Hosteinrichtung 504 ausführbarem Hostcode, fehlschlagen).
-
Gemäß Ausführungsformen kann ein System schnelle, sichere Bootzeiten aufweisen, die von der Größe des Codes einer Anwendung (z. B. von FW oder SW) unabhängig sein können. 6 ist ein Diagramm, in dem Bootzeiten gegenüber der Codegröße für verschiedene hierin offenbarte Verfahren verglichen werden. Die auf der y-Achse auf einer logarithmischen Skala gezeigte Bootzeit kann mit der Zeit zwischen einer Einschaltung oder einem Power-On-Reset und der Zeit, zu der Hostcode (z. B. Host-FW oder Anwendungs-SW) authentifiziert wird und zur Nutzung verfügbar ist, korrespondieren. 6 zeigt vier Antworten: eine Antwort 664 kann ein herkömmliches Verfahren wie das in 17 gezeigte sein; eine Antwort 666-0 kann ein Verfahren wie die in 3 gezeigte Ausführungsform sein; eine Antwort 666-1 kann ein Verfahren wie die in 4 gezeigte Ausführungsform sein; und eine Antwort 666-2 kann ein Verfahren wie die in 5 gezeigte Ausführungsform sein. Wie gezeigt, können Ausführungsformen (666-0, 666-1, 666-2) konstante, von der Hostcodegröße unabhängige Bootzeiten bereitstellen. Dahingegen können die Bootzeiten bei herkömmlichen Verfahrensweisen 664 umso länger sein, je größer der Hostcode ist.
-
7 ist ein Blockschaltbild einer NVM-Einrichtung 702 gemäß einer Ausführungsform. Die NVM-Einrichtung 702 kann ein oder mehrere NVM-Arrays 757, einen Einrichtungsspeicherbereich 768-0, einen sicheren Speicherbereich 768-1, Arrayzugriffsschaltungen 772, einen Steuerteil 774, POR-Schaltungen 786 sowie Eingabe-/Ausgabe-Schaltungen (E/A-CKTs) 784 umfassen. Das eine oder die mehreren NVM-Arrays 757 können ein oder mehrere mit NVM-Zellen von einem beliebigen geeigneten Typ gebildete Arrays umfassen und können Decodier- und Schreibschaltungen (z. B. zum Programmieren, Löschen oder Verifizieren) umfassen. Das eine oder die mehreren NVM-Arrays 757 können einen Benutzerbereich 706 umfassen, der Hostcode zur Ausführung durch eine Hosteinrichtung 708 speichern kann.
-
Der Einrichtungsspeicherbereich 768-0 kann Werte zur Nutzung durch die NVM-Einrichtung 702 speichern. Diese Werte können Folgendes umfassen: eine digitale Signatur 752 (die in die NVM-Einrichtung geladen oder durch sie generiert wird), ein digitales Zertifikat 710 und/oder einen öffentlichen Schlüssel 760 (z. B. für Vorgänge einer asymmetrischen Verschlüsselung). Der Einrichtungsspeicherbereich 768-0 kann zudem Konfigurationsregister 770-0 umfassen und Parameter- und/oder ID-Informationen 770-1 für die NVM-Einrichtung 702 speichern. Bei dem Einrichtungsspeicherbereich 768-0 kann es sich um einen sicheren Bereich handeln oder nicht. Abschnitte des Einrichtungsspeicherbereichs 768-0 können zu dem einen oder den mehreren NVM-Arrays 757 gehören oder nicht.
-
Der sichere Speicherbereich 768-1 kann geheim zu haltende Datenwerte speichern. Der sichere Speicherbereich 768-1 kann NVM-Code 709, einen oder mehrere private Schlüssel 758 (z. B. für Vorgänge einer asymmetrischen Verschlüsselung) und/oder einen oder mehrere geheime Schlüssel 738 (z. B. für Vorgänge einer symmetrischen Verschlüsselung) speichern. Abschnitte des sicheren Einrichtungsspeicherbereichs 768-1 können zu dem einen oder den mehreren NVM-Arrays 757 gehören oder nicht. Bei dem NVM-Code 709 kann es sich um Code zur Ausführung durch die NVM-Einrichtung 702 zum Bereitstellen verschiedener Funktionen handeln.
-
Die Arrayzugriffsschaltungen 772 können Zugriff auf das eine oder die mehreren NVM-Arrays 757 als Antwort auf vom Steuerteil 744 empfangene Signale und Daten gewähren. In einigen Ausführungsformen umfassen die Arrayzugriffsschaltungen 772 eine Befehlsdecodierlogik zum Verarbeiten von Befehlen. Für NVM-Einrichtungen 702, die einen sicheren Bereich 768-1 umfassen, können die Arrayzugriffsschaltungen 772 für einen sicheren Zugriff ausgelegte Schaltungen 772-0 umfassen, die nur als Antwort auf ein vorgegebenes Sicherheitsprotokoll (z. B. eine auf einer Verschlüsselung basierende Authentifizierung) Zugriff auf den sicheren Bereich 768-1 von externen Entitäten aus gewähren.
-
Der Steuerteil 774 kann Funktionen der NVM-Einrichtung 702 steuern, die Authentifizierungsvorgänge gemäß Ausführungsformen umfassen. Der Steuerteil 774 kann einen Controller 776, einen Eingabepuffer 778 und einen Ausgabepuffer 780 umfassen. Der Controller 776 kann Prozessorschaltungen (Prozessor-CKTs) 776-0 umfassen, die Anweisungen 776-1 ausführen können. Die Anweisungen 776-1 können verschiedene Authentifizierungsfunktionen umfassen, die Folgendes umfassen, ohne jedoch darauf begrenzt zu sein: eine Hashfunktion 754, eine kryptografische Funktion 762, einen Noncewertgenerator 782 und einen Codeintegritätsprüfer 712. Die Hashfunktion 754 kann Hashwerte für durch die NVM-Einrichtung 702 gespeicherte oder empfangene Hashwerte generieren. In einigen Ausführungsformen stimmt die Hashfunktion 754 mit einer von einer korrespondierenden Hosteinrichtung genutzten Hashfunktion überein oder ist so konfiguriert, dass sie mit ihr übereinstimmt. Die kryptografische Funktion 762 kann verschiedene kryptografische Vorgänge durchführen, die das Verschlüsseln und/oder Entschlüsseln von durch die NVM-Einrichtung 702 gespeicherten Werten sowie das Erzeugen von Authentifizierungscodes unter Nutzung von Schlüsselwerten umfassen, ohne jedoch darauf begrenzt zu sein. Der Noncewertgenerator 782 kann einen Noncewert (z. B. nonce_nvm) zur Nutzung bei Authentifizierungsvorgängen generieren. Der Codeintegritätsprüfer 712 kann die Integrität von in einem oder mehreren NVM-Benutzerarrays gespeichertem Code, der den NVM-Code 709 umfasst, prüfen. In einigen Ausführungsformen ist der Codeintegritätsprüfer 712 eine Hashfunktion (z. B. 754).
-
Der Eingabepuffer 778 kann durch die NVM-Einrichtung 702 empfangene Eingabebefehle und/oder -daten empfangen. Solche Befehle können durch die Arrayzugriffsschaltungen 772 für einen Zugriff auf das eine oder die mehreren NVM-Arrays 757, den Einrichtungsspeicherbereich 768-0 und den sicheren Einrichtungsspeicherbereich 768-1 verarbeitet werden. Der Ausgabepuffer 780 kann aus der NVM-Einrichtung 702 ausgegebene Daten, die Daten aus dem einen oder den mehreren NVM-Arrays 757, dem Einrichtungsspeicherbereich 768-0 und dem sicheren Speicherbereich 768-1 umfassen, transferieren. Der sichere Speicherbereich 768-1 ist möglicherweise nicht über die E/A-Schaltungen 784 zugänglich.
-
Die POR-Schaltung 786 kann Einschalt- und Power-On-Reset-Bedingungen erkennen und die verschiedenen Abschnitte der NVM-Einrichtung 702 mit Strom versorgen. In einigen Ausführungsformen umfasst die POR-Schaltung 786 Schaltungen zum Laden von Basisfunktionsanweisungen (z. B. ROM-Daten) zur Ausführung durch die Prozessorschaltungen 776-0.
-
Die E/A-Schaltungen 784 können über einen oder mehrere Busse 788 mit anderen Einrichtungen (z. B. einer Hosteinrichtung) verbunden sein. In einigen Ausführungsformen ist ein Bus 788 ein serieller Bus, der serielle Busse umfasst, die mit einem Controller Area Network (CAN), dem Serial Peripheral Interface (SPI) and I2C kompatibel sind, ohne jedoch darauf begrenzt zu sein. Die E/A-Schaltungen 784 können Ein- und Ausgänge für die NVM-Einrichtung 702 und andere Signalisierungsschaltungen umfassen, die physikalische Schnittstellen (PHY) und Serialisierungs- und Deserialisierungsschaltungen umfassen, ohne jedoch darauf begrenzt zu sein.
-
Manche Ausführungsformen können eine beliebige geeignete NVM-Arraystruktur und einen beliebigen geeigneten NVM-Zellentyp umfassen, während andere Ausführungsformen Arrays vom 1-Transistor-NOR-Typ (1T NOR) umfassen können. 8 ist ein Schaltbild eines 1T-NOR-Arrays 857, das in Ausführungsformen umfasst sein kann. Das Array 857 kann etliche Speicherzellen umfassen (von denen eine mit dem Bezugszeichen 857-0 gezeigt ist), die in Zeilen und Spalten angeordnet sind, wobei Speicherzellen einer selben Reihe mit einer selben Wortleitung verbunden sind (von denen eine mit dem Bezugszeichen 857-2 gezeigt ist) und Speicherzellen einer selben Spalte mit einer selben Bitleitung 857-3 verbunden sind. In einigen Ausführungsformen sind die Speicherzellen (857-0) mit einer einzigen Transistorstruktur mit einer Ladungsspeicherungsstruktur 857-1 zwischen einem Steuergate und einem Kanal gebildet. Die Ladungsspeicherungsstruktur 857-1 kann ein oder mehrere Datenbits als Ladung speichern.
-
Manche Ausführungsformen umfassen möglicherweise Systeme mit Speichereinrichtungen, die mit einer Hosteinrichtung zusammenarbeiten, während andere Ausführungsformen möglicherweise eigenständige Speichereinrichtungen, die zum Authentifizieren eines Zustands der Speichereinrichtung und folglich des Zustands von durch die Einrichtung gespeichertem Code fähig sind, umfassen. Eine derartige Authentifizierung kann innerhalb kurzer Zeit erfolgen und ändert sich nicht in Abhängigkeit von der Größe des Codes, wie hierin beschrieben wird oder gemäß Äquivalenten möglich ist. Solche Speichereinrichtungen können mehrere im selben Gehäuse untergebrachte integrierte Schaltungen umfassen, jedoch könnten die Speichereinrichtungen in einigen Ausführungsformen vorteilhaft auch kompakte einzelne integrierte Schaltungen (also Chips) sein. 9 zeigt eine in einem Gehäuse untergebrachte Einchip-NVM-Einrichtung 902. Es versteht sich jedoch, dass Speichereinrichtungen gemäß Ausführungsformen auch beliebige andere geeignete Gehäusetypen umfassen können, auch etwa ein direktes Bonden eines Speichereinrichtungschips auf ein Leiterplattensubstrat.
-
10 ist ein Blockschaltbild einer Hosteinrichtung 1004 gemäß einer Ausführungsform. Die Hosteinrichtung 1004 kann einen oder mehrere Hostprozessoren 1092, einen Hostdatenspeicher 1094 und E/A-Schaltungen (E/A-CKTs) 1096 umfassen. Der Hostdatenspeicher 1094 kann Bootfunktionen 1094-0 und einen nichtflüchtigen Datenspeicher 1094-1 umfassen. Der nichtflüchtige Datenspeicher 1094-1 kann Werte zur nichtflüchtigen Nutzung durch die Hosteinrichtung 1004 (z. B. OTP-Schaltungen oder eFuses) speichern. Die gespeicherten Werte können öffentliche Schlüssel 1046 und geheime Schlüssel 1038 umfassen. In einigen Ausführungsformen ist der gesamte nichtflüchtige Datenspeicher 1094-1 oder ein Teil davon ein sicherer Datenspeicher 1098.
-
Die Bootfunktionen 1094-0 können eine Codeintegritätslesefunktion 1042, einen Noncewertgenerator 1044, eine kryptografische Funktion 1024-1, eine Schlüsselvergleichsfunktion 1048 und eine Hashfunktion 1049 umfassen, ohne jedoch darauf begrenzt zu sein. Die Codeintegritätslesefunktion 1042 kann einen Prüfwert (z. B. FW Hash_r) aus der bei einem Authentifizierungsvorgang genutzten NVM-Einrichtung auslesen. In einigen Ausführungsformen umfasst dieser Schritt einen Lesevorgang an einer vorgegebenen Register- oder Speicheradresse. Der Noncewertgenerator 1044 kann einen Noncewert (z. B. nonce_host) zur Nutzung bei Authentifizierungsvorgängen generieren. Dieser Noncewert kann an eine NVM-Einrichtung übertragen werden. Die kryptografische Funktion 1024-1 kann kryptografische Funktionen durchführen, die das Verschlüsseln und/oder Entschlüsseln von in der Hosteinrichtung 1004 oder durch sie gespeicherten Werten und das Erzeugen von Authentifizierungscodes unter Nutzung von Verschlüsselungsschlüsselwerten (z. B. 1046, 1038) umfassen, ohne jedoch darauf begrenzt zu sein. Die Schlüsselvergleichsfunktion 1048 kann einen durch die Hosteinrichtung 1004 gespeicherten Schlüssel (z. B. 1046) mit einem von einer anderen Einrichtung (z. B. einer NVM-Einrichtung) empfangenen Schlüssel vergleichen. Die Hashfunktion 1049 kann Hashwerte für durch die Hosteinrichtung 1004 gespeicherte oder empfangene Hashwerte generieren. In einigen Ausführungsformen stimmt die Hashfunktion 1049 mit einer von einer korrespondierenden NVM-Einrichtung genutzten Hashfunktion überein oder ist so konfiguriert, dass sie mit ihr übereinstimmt.
-
Der nichtflüchtige Datenspeicher 1094-1 kann Werte zur Nutzung durch die Hosteinrichtung 1004 bei Authentifizierungsvorgängen speichern. Diese Werte können den öffentlichen Schlüssel 1046 und/oder den geheimen Schlüssel 1038 umfassen, ohne jedoch darauf begrenzt zu sein. Der geheime Schlüssel 1038 kann im sicheren Datenspeicher 1098 gespeichert werden, wozu vorgegebene Zugriffsprozeduren erforderlich sein können, wie hierin beschrieben.
-
Die E/A-Schaltungen 1096 können über einen oder mehrere Busse 1088 mit anderen Einrichtungen (z. B. einer Hosteinrichtung) verbunden sein. Die E/A-Schaltungen 1096 können so wie diejenigen, die hierin beschrieben werden, ausgebildet sein.
-
Ausführungsformen können ein beliebiges geeignetes System mit einer Einrichtung umfassen, die in einer anderen Einrichtung gespeicherte Daten schnell authentifizieren muss. Ausführungsformen können aber auch in Systemen, die Bootdaten in hochzuverlässigen Speichereinrichtungen speichern, vorteilhaft sein, etwa in Kraftfahrzeugsystemen. 11 zeigt ein Kraftfahrzeugsystem 1100 gemäß einer Ausführungsform. Das System 1100 kann eine erste NVM-Einrichtung 1102-0, eine zweite NVM-Einrichtung 1102-1, ein System-on-Chip (SoC) 1104-0, einen Kraftfahrzeug-Mikrocontroller (eine Kfz-MCU) 1104-1, ein Dynamic Random Access Memory (DRAM) 1197, Sensoren 1193, Kfz-Bedienelemente 1195-0, Kfz-Kommunikationssysteme 1195-1 und Kfz-Stromversorgungssysteme 1195-2 umfassen.
-
Bei dem SoC 1104-0 und der ersten NVM-Einrichtung 1102-0 kann es sich um eine Hosteinrichtung und eine korrespondierende NVM-Einrichtung gemäß beliebigen der hierin gezeigten Ausführungsformen handeln. Bei einer Einschalt- oder Power-On-Reset-Bedingung kann das SoC 1104-0 in der ersten NVM-Einrichtung 1102-0 gespeicherten Code gemäß beliebigen der hierin gezeigten Ausführungsformen oder gemäß einem Äquivalent authentifizieren. Analog können die MCU 1104-1 und die zweite NVM-Einrichtung 1102-1 eine Hosteinrichtung und eine korrespondierende NVM-Einrichtung gemäß beliebigen der hierin gezeigten Ausführungsformen oder gemäß Äquivalenten sein.
-
In 12, auf die nunmehr Bezug genommen wird, ist ein Kraftfahrzeug 1291 gemäß einer Ausführungsform in einem Schaubild gezeigt. Das Kraftfahrzeug 1291 kann zahlreiche Teilsysteme (von denen zwei mit den Bezugszeichen 1200-0 und 1200-1 gezeigt sind) aufweisen, die mit aus der NVM-Einrichtung gebooteter Firmware betrieben werden können. Diese Teilsysteme (1200-0, 1200-1) können ein elektronisches Steuergerät (ABS) und/oder ein Fahrerassistenzsystem (ADAS) umfassen. In anderen Ausführungsformen umfassen diese Teilsysteme möglicherweise ein Armaturenbrettanzeige-/Regelungsteilsystem und/oder ein Infotainmentteilsystem, wobei es sich lediglich um zwei von zahlreichen möglichen Beispielen handelt. Jedes Teilsystem (1200-0, 1200-1) kann eine Hosteinrichtung und eine oder mehrere NVM-Einrichtungen umfassen und Firmware-Authentifizierungsvorgänge gemäß der Beschreibung hierin oder gemäß Äquivalenten verwenden.
-
Anhand der obigen Ausführungsformen sind verschiedene Systeme, Einrichtungen und korrespondierende Verfahren gezeigt worden, und es werden nun weitere Verfahren mit Bezug auf Ablaufschemata beschrieben.
-
13 ist ein Ablaufschema eines Authentifizierungsverfahrens 1391 für eine NVM-Einrichtung gemäß einer Ausführungsform. Das Verfahren 1391 kann umfassen, dass eine NVM-Einrichtung ein Bootauslöseereignis, wie etwa ein Einschalt- oder Power-On-Reset-Ereignis 1391-0, durchläuft. Die NVM-Einrichtung kann eine Authentifizierungsanforderung von einer Hosteinrichtung empfangen 1391-1. Dieser Schritt kann umfassen, dass die NVM-Einrichtung einen vorgegebenen Befehl über eine Kommunikationsverbindung, wie etwa einen seriellen Bus, von einer Hosteinrichtung empfängt, wobei es sich lediglich um eines von vielen möglichen Beispielen handelt.
-
Als Antwort auf die Authentifizierungsanforderung kann die NVM-Einrichtung einen verschlüsselten FW-Integritätswert zurücksenden, dessen Größe von dem Hostcode, den sie validiert, unabhängig ist 1391-3. Der FW-Integritätswert kann zum Validieren von in der NVM-Einrichtung gespeichertem Code (z. B. SW oder FW) genutzt werden. In einigen Ausführungsformen wird der FW-Integritätswert aus einem bekannten authentischen NVM-Codesatz (z. B. einem Hashwert von bekanntem authentischem NVM-Code) generiert. Dieser Schritt kann umfassen, dass die NVM-Einrichtung den FW-Integritätswert über eine Kommunikationsverbindung zurücksendet. Die Hosteinrichtung kann durch die NVM-Einrichtung gespeicherten Code unter Nutzung des FW-Integritätscodes validieren. Weil die Größe des FW-Integritätswerts von der Größe des gespeicherten Codes unabhängig ist, ist eine schnelle und deterministische Authentifizierung möglich.
-
Wenn die Hosteinrichtung den NVM-Code mit dem verschlüsselten gültigen FW-Integritätswert authentifiziert, kann die NVM-Einrichtung eine Leseanforderung für einen Zugriff auf durch die NVM-Einrichtung gespeicherte Host-FW empfangen 1391-5. Die NVM-Einrichtung kann als Antwort auf solche Leseanforderungen FW-Daten senden. In einigen Ausführungsformen umfasst dies, dass Code zur Ausführung durch eine Hosteinrichtung gesendet wird.
-
14 ist ein Ablaufschema eines Authentifizierungsverfahrens 1491 für eine Hosteinrichtung gemäß einer Ausführungsform. Das Verfahren 1491 kann umfassen, dass die Hosteinrichtung ein Bootauslöseereignis (z. B. ein POR) durchläuft 1491-0.
-
Die Hosteinrichtung kann die NVM-Einrichtung in einem Bus erkennen 1491-1. Dieser Schritt kann umfassen, dass ein Erkennungsprotokoll gemäß einem Kommunikationsstandard ausgeführt wird. Wenn die NVM-Einrichtung erkannt wird, kann bei dem Verfahren 1491 die Authentifizierung der erkannten NVM-Einrichtung initiiert werden 1491-3. Dieser Schritt kann umfassen, dass die Hosteinrichtung Authentifizierungsaufforderungen (z. B. vorgegebene Befehle) über einen Bus oder eine andere geeignete Kommunikationsverbindung an die NVM-Einrichtung ausgibt.
-
Die Hosteinrichtung kann als Antwort auf eine Authentifizierungsanforderung einen verschlüsselten FW-Integritätswert empfangen, dessen Größe von dem Hostcode, den sie validiert, unabhängig ist 1491-5. Der FW-Integritätswert kann zum Validieren von in der NVM-Einrichtung gespeichertem Hostcode (z. B. SW oder FW) genutzt werden. In einigen Ausführungsformen wird ein gültiger FW-Integritätswert aus einem bekannten authentischen NVM-Codesatz (z. B. einem Hashwert von bekanntem authentischem NVM-Code, der durch die NVM-Einrichtung sicher gespeichert wird) generiert. Dieser Schritt kann umfassen, dass die NVM-Einrichtung den gültigen FW-Integritätswert über eine Kommunikationsverbindung zurücksendet. Die Hosteinrichtung kann durch die NVM-Einrichtung gespeicherten Code unter Nutzung des FW-Integritätscodes validieren 1491-7. Weil die Größe des gültigen FW-Integritätswerts von der Größe des gespeicherten Hostcodes unabhängig ist, ist eine schnelle und deterministische Authentifizierung möglich.
-
Wenn die Hosteinrichtung den NVM-Code mit dem verschlüsselten FW-Integritätswert authentifiziert (J bei 1491-7), kann die Hosteinrichtung auf durch die NVM-Einrichtung gespeicherte Host-FW zugreifen 1491-11. Dieser Schritt kann umfassen, dass Leseanweisungen für XiP-Codevorgänge ausgegeben werden. Wenn die Hosteinrichtung den NVM-Code nicht authentifiziert (N bei 1491-7), kann die Hosteinrichtung eine Anzeige eines ungültigen Codes generieren 1491-9. Als Antwort auf eine solche Anzeige lässt sich verhindern, dass die Hosteinrichtung auf die Host-FW zugreift. In einigen Ausführungsformen generiert die Hosteinrichtung einen Bootfehlercode, der anzeigt, dass die Host-FW für ungültig befunden worden ist.
-
15 ist ein Ablaufschema eines Authentifizierungsverfahrens 1591 zwischen einer NVM-Einrichtung 1502 und einer Hosteinrichtung 1504. Die NVM-Einrichtung 1502 oder die Hosteinrichtung 1504 kann ein Bootereignis (z. B. ein POR) durchlaufen (1591-0H/0N). Als Antwort auf das Booten der NVM-Einrichtung kann die NVM-Einrichtung einen Hashwert für NVM-FW, die sie speichert, (FW Hash_r) generieren 1591-1. Bei der NVM-FW kann es sich um FW handeln, die durch die NVM-Einrichtung ausführbar ist, um NVM-Einrichtungsfunktionen zuzuschalten. Die NVM-FW kann an einem sicheren Ort gespeichert werden, und von Entitäten außerhalb der NVM-Einrichtung kann nicht darauf zugegriffen werden, oder es kann nur über Funktionen für einen sicheren Zugriff darauf zugegriffen werden. Die Hosteinrichtung kann einen Lesebefehl für einen Zugriff auf FW Hash_r an die NVM-Einrichtung senden 1591-2. Als Antwort auf eine solche Leseanforderung kann die NVM-Einrichtung den FW-Hash_r-Wert an die Hosteinrichtung zurücksenden 1591-3.
-
Das Verfahren 1591 kann umfassen, dass die Hosteinrichtung einen Authentifizierungswert von der NVM-Einrichtung anfordert 1591-4. In einigen Ausführungsformen generiert die NVM-Einrichtung als Antwort auf eine solche Anforderung einen Authentifizierungswert unter Nutzung eines gültigen Hashwerts FW Hash 1591-5. Der gültige Hashwert (FW Hash) kann ein Wert sein, der mit einer bekannten authentischen Version der NVM-FW generiert wird. In einigen Ausführungsformen generiert die NVM-Einrichtung den Authentifizierungswert durch eine On-the-fly-Datenverschlüsselung. Diese Verschlüsselung erfolgt entweder symmetrisch (d. h. mit einem geheimen Schlüssel, der ebenfalls durch die Hosteinrichtung gespeichert wird) oder asymmetrisch (d. h. mit einem privaten Schlüssel, der mit einem öffentlichen Schlüssel, der durch die Hosteinrichtung gespeichert wird, korrespondiert). In anderen Ausführungsformen wird hingegen ein Authentifizierungswert (z. B. ein digitales Zertifikat mit einer digitalen Signatur) vorher in die NVM-Einrichtung geladen. Unabhängig davon, ob durch die Hosteinrichtung ein Authentifizierungswert generiert oder vorher in die NVM-Einrichtung geladen wird, kann die NVM-Einrichtung den Authentifizierungscode an die Hosteinrichtung zurücksenden 1591-6.
-
Die Hosteinrichtung kann den gesamten von der NVM-Einrichtung empfangenen Authentifizierungscode oder einen Teil davon entschlüsseln, um den gültigen FW-Hash-Wert abzuleiten 1591-7. Der gültige FW-Hash-Wert kann mit dem aus der NVM-Einrichtung ausgelesenen Hashwert (FW Hash_r) verglichen werden 1591-8, um die NVM-Einrichtung (und folglich eine eventuelle Host-FW, die sie speichert) zu validieren. Das heißt, wenn die Werte übereinstimmen, lässt sich die durch die NVM-Einrichtung gespeicherte Host-FW zur Nutzung durch die Hosteinrichtung authentifizieren. Wenn die Werte nicht übereinstimmen, lässt sich bestimmen, dass die durch die NVM-Einrichtung gespeicherte Host-FW nicht authentifiziert werden kann.
-
16 ist ein Ablaufschema eines Verfahrens 1691, bei dem eine Hosteinrichtung 1604 NVM-FW in einer NVM-Einrichtung 1602 aktualisiert, gemäß einer Ausführungsform. Das Verfahren 1691 kann umfassen, dass die Hosteinrichtung neue NVM-FW für einen Aktualisierungsvorgang empfängt 1691-0. Dieser Schritt kann beliebige geeignete Verfahren umfassen, die einen Authentifizierungsvorgang zwischen der Hosteinrichtung und der Quelle der neuen NVM-FW umfassen. Die Hosteinrichtung 1602 kann die NVM-Einrichtung und alte FW (durch die NVM-Einrichtung aktuell gespeicherte FW) authentifizieren (1691-1/2). Dieser Vorgang kann beliebige geeignete Verfahren wie etwa diejenigen, die hierin beschrieben werden, oder Äquivalente umfassen. Die Hosteinrichtung 1604 kann die neue NVM-FW in die NVM-Einrichtung schreiben 1691-3. In einigen Ausführungsformen umfasst dieser Schritt das Schreiben eines durch die NVM-Einrichtung ausführbaren NVM-FW-Abbilds.
-
Die NVM-Einrichtung kann die neue NVM-FW sicher speichern 1691-4. Dieser Schritt kann umfassen, dass die NVM-FW an einen vorgegebenen Ort, der durch eine NVM-Einrichtungskonfiguration oder durch die Hosteinrichtung bestimmt wird, geschrieben wird. Die NVM-Einrichtung kann einen neuen Hashwert (FW Hash) für die neue NVM-FW generieren 1691-5. Dieser Wert kann in der NVM 1691-6 zur Nutzung bei künftigen Authentifizierungsvorgängen, wie etwa denjenigen gemäß der Beschreibung hierin oder gemäß Äquivalenten, sicher gespeichert werden. Sobald die neue NVM-FW gespeichert und ein gültiger FW-Hash-Wert generiert worden ist, kann die NVM-Einrichtung eine Bestätigung, dass der NVM-FW-Aktualisierungsvorgang abgeschlossen ist, an die Hosteinrichtung senden 1691-7.
-
Gemäß Ausführungsformen kann eine Hosteinrichtung einen NVM-Einrichtungszustand authentifizieren, um dadurch den durch die NVM-Einrichtung gespeicherten Code zu authentifizieren. Bei einer solchen Verfahrensweise erübrigt sich der Zugriff der Hosteinrichtung auf durch die NVM-Einrichtung gespeicherten Code bei einem Authentifizierungsvorgang, wie er bei herkömmlichen Verfahren erfolgt. Infolgedessen können Systeme sichere Bootzeiten aufweisen, die schnell und von der Größe des durch die NVM-Einrichtung gespeicherten Codes unabhängig sind.
-
Ausführungsformen unterscheiden sich von herkömmlichen Verfahrensweisen insofern, als ein Authentifizierungsmechanismus einer Hosteinrichtung den Zustand einer NVM-Einrichtung und nicht den Zustand von durch die NVM-Einrichtung gespeichertem Hostcode authentifizieren kann. Ferner kann die NVM-Einrichtung einen Mechanismus zum Nachweisen der Integrität des NVM-Codes, den sie aktuell speichert, umfassen. In einigen Ausführungsformen umfasst dies, dass die NVM-Einrichtung sichere Speicherorte zum Speichern von Codeintegritätswerten aufweist, die zum Nachweisen der Integrität von durch die NVM-Einrichtung gespeichertem NVM-Code genutzt werden.
-
Es wird darauf hingewiesen, dass Bezugnahmen in der gesamten vorliegenden Patentbeschreibung auf „eine Ausführungsform“ bedeuten, dass ein betreffendes Merkmal, eine betreffende Struktur oder eine betreffende Eigenschaft, das/die im Zusammenhang mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Erfindung umfasst ist. Es ist deshalb unbedingt zu beachten, dass mit zwei oder mehr Bezugnahmen auf „eine Ausführungsform“ oder „eine alternative Ausführungsform“ in verschiedenen Abschnitten dieser Patentbeschreibung nicht immer zwangsläufig auf dieselbe Ausführungsform Bezug genommen wird. Im Übrigen lassen sich die betreffenden Merkmale, Strukturen oder Eigenschaften in einer für eine oder mehrere Ausführungsformen der Erfindung geeigneten Weise kombinieren.
-
Es wird zudem darauf hingewiesen, dass verschiedene Merkmale der Erfindung in der obigen Beschreibung von Ausführungsbeispielen der Erfindung manchmal in einer einzigen Ausführungsform, Figur oder zugehörigen Beschreibung zusammengefasst werden, um die Offenbarung zu straffen und hierdurch ein besseres Verständnis eines oder mehrerer der verschiedenen erfinderischen Aspekte zu vermitteln. Das vorliegende Verfahren der Offenbarung ist jedoch nicht so zu interpretieren, dass darauf abgestellt wird, dass für die Ansprüche mehr Merkmale erforderlich sind als ausdrücklich in jedem Anspruch definiert. Es können nämlich auch weniger als alle Merkmale einer einzelnen der oben offenbarten Ausführungsformen erfinderische Aspekte ausmachen. Mithin werden die Ansprüche, die sich an die ausführliche Beschreibung anschließen, ausdrücklich als ein Bestandteil der ausführlichen Beschreibung in sie aufgenommen, wobei jeder Anspruch als separate Ausführungsform dieser Erfindung für sich allein steht.
-
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 17122927 [0001]
- US 63/086750 [0001]