-
Technisches Gebiet
-
Die Offenbarung bezieht sich im Allgemeinen auf ein System und ein Verfahren zur Implementierung eines sicheren Boot-Ereignisses mit einem aus einer Vielzahl von Public-Key-Infrastruktur (PKI)-Authentifizierungsschlüsselsätzen.
-
Einführung
-
Ein System auf einem Chip (SoC) kann ein integrierter Schaltkreis sein, der so konfiguriert ist, dass er als computerisierte Einheit arbeitet. Ein computergestütztes Steuersystem kann eine Vielzahl von SoCs enthalten, die eine Vielzahl von Funktionen erfüllen.
-
Ein Gerät, das einen einmalig programmierbaren Speicher enthält, kann einen primären Bootloader speichern und ausführen, der bei einem Reset-Ereignis oder beim Einschalten dazu verwendet werden kann, bestimmte Aufgaben auszuführen, um den Betrieb des computergestützten Steuersystems einzuleiten. Der einmalig programmierbare Speicher kann einen Nur-Lese-Speicher (ROM) und programmierbare elektronische Sicherungen enthalten. Der primäre Bootloader kann das Laden eines Betriebssystems in den Speicher des rechnergestützten Steuersystems ermöglichen. Das Gerät, das den einmalig programmierbaren Speicher enthält, kann ein SoC sein. PKI beschreibt ein System, das die Verwendung digitaler Signaturen zur Überprüfung der Authentizität von Daten (z. B. Firmware-Images) ermöglicht.
-
Beschreibung der Erfindung
-
Ein System zur Implementierung eines sicheren Boot-Ereignisses wird bereitgestellt. Das System umfasst eine Leiterplatte. Die Leiterplatte enthält ein System auf einem Chip (SoC). Das SoC enthält einmalig programmierbaren Speicher, der zum Speichern einer computerisierten Programmierung konfiguriert ist, und eine Vielzahl von Public-Key-Hashwerten, die in dem einmalig programmierbaren Speicher gespeichert sind. Jeder der Vielzahl von Public-Key-Hashwerten ist für die Verwendung mit einem von mehreren in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Der SoC umfasst ferner einen Direktzugriffsspeicher (RAM), der zum Speichern eines Firmware-Images konfiguriert ist, und das Firmware-Image, das zur Ausführung durch den SoC konfiguriert und im RAM gespeichert ist. Das Firmware-Image enthält einen sekundären Bootloader und eine Vielzahl öffentlicher Schlüssel (Public Keys). Jeder der Vielzahl von öffentlichen Schlüssel ist für die Verwendung mit einem der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätze konfiguriert. Das Firmware-Image enthält außerdem eine Vielzahl von Signaturen. Jede der Vielzahl von Signaturen ist für die Verwendung mit einem der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Der SoC enthält außerdem einen primären Bootloader, der in dem einmalig programmierbaren Speicher gespeichert ist. Der primäre Bootloader innerhalb des Speichers des SoC verwendet eine Vielzahl von Sicherungen, die zur selektiven Aktivierung eines ausgewählten Public-Key-Hashwerts aus der Vielzahl von Public-Key-Hashwerten konfiguriert sind. Der ausgewählte Public-Key-Hashwert wird auf der Grundlage eines Ökosystems ausgewählt, in dem das System betrieben werden soll. Der ausgewählte Public-Key-Hashwert wird verwendet, um einen aktiven öffentlichen Schlüssel aus der Vielzahl von öffentlichen Schlüssel auszuwählen. Der ausgewählte Public-Key-Hashwert wird verwendet, um eine aktive Signatur aus der Vielzahl von Signaturen auszuwählen. Der ausgewählte Public-Key-Hashwert, der aktive öffentliche Schlüssel und die aktive Signatur definieren einen aktiven Firmware-Image-Authentifizierungsschlüsselsatz aus der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen. Der SoC ist so konfiguriert, dass er eine Aktualisierung des Firmware-Images über einen externen Flash ausführen kann. Während des sicheren Bootvorgangs verwendet der primäre Bootloader den aktiven Firmware-Image-Authentifizierungsschlüsselsatz, um das Firmware-Image zu authentifizieren.
-
In einigen Ausführungsformen umfasst das Ökosystem, in dem das System arbeiten soll, eine geografische Region, in der das System arbeiten soll.
-
In einigen Ausführungsformen umfasst das Ökosystem, in dem das System betrieben werden soll, ein Unternehmen, an das das System verkauft wird.
-
In einigen Ausführungsformen wird einer der Public-Key-Hashwerte als anfänglich aktiver Public-Key-Hashwert ausgewählt. Während eines anfänglichen sicheren Boot-Ereignisses werden der anfänglich aktive Public-Key-Hashwert und ein entsprechender Schlüssel aus der Vielzahl der öffentlichen Schlüssel verwendet, um eine Standard-Vertrauensbasis zwischen dem primären Bootloader und dem sekundären Bootloader einzurichten.
-
In einigen Ausführungsformen wird, nachdem der ausgewählte Public-Key-Hashwert aus der Vielzahl der Public-Key-Hashwerte ausgewählt wurde, ein Rest der Vielzahl der Public-Key-Hashwerte widerrufen.
-
In einigen Ausführungsformen enthält das Firmware-Image ferner eine Signaturtabelle mit einer zweiten Vielzahl von Signaturen, wobei die zweite Vielzahl von Signaturen für die Authentifizierung eines aus einem Hypervisor-Modul, einem Betriebssystem-Bootloader-Modul oder einem Betriebssystem-Kernel-Modul konfiguriert ist.
-
Gemäß einer alternativen Ausführungsform wird ein System zur Implementierung eines sicheren Boot-Ereignisses bereitgestellt. Das System umfasst eine Vorrichtung mit einer Leiterplatte. Die Leiterplatte enthält ein System auf einem Chip (SoC). Das SoC enthält einen einmalig programmierbaren Speicher, der zum Speichern einer computerisierten Programmierung konfiguriert ist, und eine Vielzahl von Public-Key-Hashwerten, die in dem einmalig programmierbaren Speicher gespeichert sind. Jeder der Vielzahl von Public-Key-Hashwerten ist für die Verwendung mit einem aus einer Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Das SoC umfasst ferner einen Direktzugriffsspeicher (RAM), der zum Speichern eines Firmware-Images konfiguriert ist, und das Firmware-Image, das zur Ausführung durch den SoC konfiguriert und im RAM gespeichert ist. Das Firmware-Image enthält einen sekundären Bootloader und eine Vielzahl öffentlicher Schlüssel. Jeder der Vielzahl von öffentlichen Schlüsseln ist für die Verwendung mit einem der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Die Firmware enthält außerdem eine Vielzahl von Signaturen. Jede der Vielzahl von Signaturen ist für die Verwendung mit einem der Vielzahl in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Das SoC enthält außerdem einen primären Bootloader, der in dem einmalig programmierbaren Speicher gespeichert ist. Der primäre Bootloader innerhalb des Speichers des SoC verwendet eine Vielzahl von Sicherungen, die zur selektiven Aktivierung eines ausgewählten Public-Key-Hashwerts aus der Vielzahl von Public-Key-Hashwerten konfiguriert sind. Der ausgewählte Public-Key-Hashwert wird auf der Grundlage eines Ökosystems ausgewählt, in dem das System betrieben werden soll. Der ausgewählte Public-Key-Hashwert wird verwendet, um einen aktiven öffentlichen Schlüssel aus der Vielzahl von öffentlichen Schlüssel auszuwählen. Der ausgewählte Public-Key-Hashwert wird verwendet, um eine aktive Signatur aus der Vielzahl der Signaturen auszuwählen. Der ausgewählte Public-Key-Hashwert, der aktive öffentliche Schlüssel und die aktive Signatur definieren einen aktiven Schlüsselsatz für die Authentifizierung des Firmware-Abbildes aus der Vielzahl der in Frage kommenden Schlüsselsätze für die Authentifizierung des Firmware-Abbildes. Das SoC ist so konfiguriert, dass es eine Aktualisierung des Firmware-Images über einen externen Flash ausführen kann. Während des sicheren Bootvorgangs verwendet der primäre Bootloader den aktiven Firmware-Image-Authentifizierungsschlüsselsatz, um das Firmware-Image zu authentifizieren.
-
In einigen Ausführungsformen umfasst die Vorrichtung ein Fahrzeug.
-
In einigen Ausführungsformen umfasst das Ökosystem, in dem das System arbeiten soll, eine geografische Region, in der das System arbeiten soll.
-
In einigen Ausführungsformen umfasst das Ökosystem, in dem das System betrieben werden soll, ein Unternehmen, an das das System verkauft wird.
-
In einigen Ausführungsformen wird einer der Public-Key-Hashwerte als anfänglich aktiver Public-Key-Hashwert ausgewählt. Während eines anfänglichen sicheren Boot-Ereignisses werden der anfänglich aktive Public-Key-Hashwert und ein entsprechender Schlüssel aus der Vielzahl der öffentlichen Schlüssel verwendet, um eine Standard-Vertrauensbasis zwischen dem primären Bootloader und dem sekundären Bootloader einzurichten.
-
In einigen Ausführungsformen wird, nachdem der ausgewählte Public-Key-Hashwert aus der Vielzahl von Public-Key-Hashwerten ausgewählt wurde, ein Rest der Vielzahl von Public-Key-Hashwerten widerrufen.
-
In einigen Ausführungsformen beinhaltet das Firmware-Image ferner eine Signaturtabelle mit einer zweiten Vielzahl von Signaturen, wobei die zweite Vielzahl von Signaturen für die Authentifizierung eines aus einem Hypervisor-Modul, einem Betriebssystem-Bootloader-Modul und einem Betriebssystem-Kernel-Modul konfiguriert ist.
-
Gemäß einer alternativen Ausführungsform wird ein Verfahren zur Implementierung eines sicheren Boot-Ereignisses bereitgestellt. Das Verfahren umfasst, innerhalb eines einmalig programmierbaren Speichers eines System on a Chip (SoC), das Speichern einer Vielzahl von Public-Key-Hashwerten innerhalb des einmalig programmierbaren Speichers. Jeder der Vielzahl von Public-Key-Hashwerten ist für die Verwendung mit einem aus einer Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Das Verfahren umfasst ferner das Speichern eines Firmware-Images im Direktzugriffsspeicher (RAM) des SoC. Das Firmware-Image ist so konfiguriert, dass es von dem SoC ausgeführt werden kann, und enthält einen sekundären Bootloader und eine Vielzahl öffentlicher Schlüssel. Jeder der Vielzahl von öffentlichen Schlüsseln ist für die Verwendung mit einem der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Das Firmware-Image enthält außerdem eine Vielzahl von Signaturen. Jede der Vielzahl von Signaturen ist für die Verwendung mit einem der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert. Das Verfahren umfasst ferner, innerhalb des einmalig programmierbaren Speichers, das zusätzliche Speichern eines primären Bootloaders, der eine Vielzahl von Sicherungen enthält, die für die selektive Aktivierung eines ausgewählten Public-Key-Hashwertes aus der Vielzahl von Public-Key-Hashwerten konfiguriert sind. Das Verfahren umfasst ferner das Aktivieren des ausgewählten Public-Key-Hashwerts auf der Grundlage eines Ökosystems, in dem das System betrieben werden soll. Das Verfahren umfasst ferner die Verwendung des ausgewählten Public-Key-Hashwerts zur Auswahl eines aktiven öffentlichen Schlüssels aus der Vielzahl der öffentlichen Schlüssel und die Verwendung des ausgewählten Public-Key-Hashwerts zur Auswahl einer aktiven Signatur aus der Vielzahl der Signaturen. Das Verfahren umfasst ferner das Definieren eines aktiven Firmware-Image-Authentifizierungsschlüsselsatzes aus der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen auf der Grundlage des ausgewählten Public-Key-Hashwerts, des aktiven öffentlichen Schlüssels und der definierten aktiven Signatur. Das Verfahren umfasst ferner das Ausführen einer Aktualisierung des Firmware-Images durch einen externen Flash und, während des sicheren Boot-Ereignisses, das Betreiben des primären Bootloaders, um den aktiven Firmware-Image-Authentifizierungsschlüsselsatz zur Authentifizierung des Firmware-Images zu verwenden.
-
In einigen Ausführungsformen umfasst das Ökosystem, in dem das System arbeiten soll, eine geografische Region, in der das System arbeiten soll.
-
In einigen Ausführungsformen umfasst das Ökosystem, in dem das System betrieben werden soll, ein Unternehmen, an das das System verkauft wird.
-
In einigen Ausführungsformen umfasst das Verfahren ferner das Auswählen eines der Vielzahl von Public-Key-Hashwerten als anfänglichen aktiven Public-Key-Hashwert. Das Verfahren umfasst ferner, während eines anfänglichen sicheren Boot-Ereignisses, die Verwendung des anfänglich aktiven Public-Key-Hashwerts und eines entsprechenden aus der Vielzahl der öffentlichen Schlüssel, um eine Standard-Vertrauensbasis zwischen dem primären Bootloader und dem sekundären Bootloader einzurichten.
-
In einigen Ausführungsformen umfasst das Verfahren ferner, nachdem der ausgewählte Public-Key-Hashwert aus der Vielzahl von Public-Key-Hashwerten ausgewählt wurde, das Widerrufen eines Restes der Vielzahl von Public-Key-Hashwerten.
-
In einigen Ausführungsformen enthält das Firmware-Image ferner eine Signaturtabelle mit einer zweiten Vielzahl von Signaturen. Das Verfahren umfasst ferner die Verwendung der zweiten Vielzahl von Signaturen zur Authentifizierung eines aus einem Hypervisor-Modul, einem Betriebssystem-Bootloader-Modul, und einem Betriebssystem-Kernel-Modul.
-
Die obigen Merkmale und Vorteile sowie andere Merkmale und Vorteile der vorliegenden Offenbarung sind aus der folgenden detaillierten Beschreibung der besten Modi zur Durchführung der Offenbarung in Verbindung mit den beigefügten Zeichnungen ohne weiteres ersichtlich.
-
Kurzbeschreibung der Zeichnungen
-
- 1 zeigt schematisch eine beispielhafte Leiterplatte mit einem SoC, bei dem einer aus einer Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen als aktiver Firmware-Image-Authentifizierungsschlüsselsatz durch den primären Bootloader unter Verwendung eines einmalig programmierbaren Speichers, wie z. B. elektronische Sicherungen, innerhalb des SoC gemäß der vorliegenden Offenbarung ausgewählt wird;
- 2 zeigt schematisch einen Datenfluss, bei dem anfänglich geladene Images (z. B. der sekundäre Bootloader), die für einen sicheren Bootvorgang zu signieren sind, von jedem einer Vielzahl von Firmware-Image-Authentifizierungsschlüsselsatzmodulen in Vorbereitung eines anfänglichen Bootvorgangs gemäß der vorliegenden Offenbarung signiert werden;
- 3 zeigt schematisch einen Datenfluss, bei dem die Signaturtabelle von 1, die vom sekundären Bootloader verwendet werden soll, durch Verwendung von Adressen, an denen Signaturen gespeichert werden, und von Adressen, an denen Signaturen gespeichert werden, gemäß der vorliegenden Offenbarung erstellt wird;
- 4 ist ein Flussdiagramm, das ein Verfahren zum Erstellen und Auswählen eines aktiven Firmware-Image-Authentifizierungsschlüsselsatzes innerhalb der Leiterplatte von 1 in Übereinstimmung mit der vorliegenden Offenbarung darstellt; und
- 5 zeigt schematisch ein beispielhaftes Gerät mit einer zentralen Steuereinheit, die die Leiterplatte von 1 enthält, in Übereinstimmung mit der vorliegenden Offenbarung.
-
Detaillierte Beschreibung
-
Ein computergestütztes Steuersystem kann zum Betrieb eines Fahrzeugs, eines Flugzeugs, eines Bootes, eines Stromerzeugungssystems oder anderer ähnlicher Systeme verwendet werden. Das computergestützte Steuersystem kann einen SoC enthalten, der auf einer Leiterplatte installiert ist und zur Ausführung von Funktionen des computergestützten Steuersystems dient. Ein SoC kann einen einmalig programmierbaren Speicher enthalten, der zum Speichern und Betreiben von festen oder unveränderlichen Programmen und Daten verwendet werden kann. Der einmalig programmierbare Speicher kann Festwertspeicher (ROM), programmierbare elektronische Sicherungen und jede andere Art von einmalig programmierbarem Speicher umfassen. Ein SoC kann außerdem einen Direktzugriffsspeicher (RAM) enthalten, in den die Programmierung und die Daten bei jedem Einsatz des computergestützten Steuersystems geladen und bearbeitet werden können. Programme oder Firmware-Images können extern aktualisiert werden, zum Beispiel durch ein externes Flash-Programm.
-
Ein SoC kann einen primären Bootloader betreiben, der für die Durchführung von Boot-Ereignissen einschließlich Reset-Ereignissen und Einschalt-Ereignissen nützlich ist. Während eines Boot-Ereignisses kann der primäre Bootloader die Gültigkeit oder Authentizität der auf dem SoC gespeicherten Firmware-Images feststellen, um sicherzustellen, dass keine gefälschte, gehackte oder bösartige Firmware im SoC vorhanden ist.
-
Der primäre Bootloader kann einen gespeicherten öffentlichen Schlüssel verwenden, um die Authentifizierung der gespeicherten Images durchzuführen. Das vorliegende System und Verfahren umfasst die Authentifizierung von Firmware-Images innerhalb eines SoC. Das SoC authentifiziert seine eigene Firmware unter Verwendung des unveränderlichen primären Bootloaders als Vertrauensbasis. Diese Vertrauensbasis wird durch iterative Authentifizierungsprozesse auf jedes authentifizierte Image innerhalb des SoC ausgeweitet, bis das SoC sicher gebootet ist und der Inhalt des SoC verifiziert ist. Wird die Authentizität eines Images innerhalb des SoC bestritten, können Abhilfemaßnahmen ergriffen werden, wie z. B. die Unterbrechung des Bootvorgangs oder die Isolierung des SoC vom übrigen computergestützten Steuersystem.
-
Ein Hersteller von elektronischen Geräten oder SoCs, die an der Authentifizierung von Firmware-Images teilnehmen, installiert oder lädt einen gespeicherten öffentlichen Schlüssel auf jedes elektronische Gerät oder SoC herunter. Die Sicherheit des Schlüssels ist wichtig für den ordnungsgemäßen Betrieb eines computergestützten Steuersystem. Ein erster Schlüssel, der für die Verwendung in einem Ökosystem konfiguriert wurde, kann möglicherweise nicht in einem zweiten Ökosystem verwendet werden. Die Ökosysteme, in denen das computergestützte Steuersystem betrieben werden kann, können auf unterschiedlichen Unterscheidungen beruhen. Ein Ökosystem kann auf einer physischen Region beruhen, in der das computergestützte Steuersystem verkauft oder verwendet wird. Ein Ökosystem kann darauf beruhen, an welchen von mehreren Kunden oder Endartikelherstellern das rechnergestützte Steuersystem geliefert wird. Ein SoC, das für Kunde A mit einem für die Verwendung durch Kunde A konfigurierten Schlüssel konstruiert wurde, kann möglicherweise nicht bei Kunde B verwendet werden.
-
Es werden ein System und ein Verfahren bereitgestellt, bei dem eine Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen für ein SoC verteilt werden und ein aktiver Firmware-Image-Authentifizierungsschlüsselsatz auf der Grundlage eines Ökosystems ausgewählt wird, in dem das computergestützte Steuersystem arbeiten soll.
-
Das offenbarte System und Verfahren kann die Aktivierung eines gespeicherten öffentlichen Schlüssels oder die Deaktivierung nicht ausgewählter gespeicherter öffentlicher Schlüssel in dem einmalig programmierbaren Speicher des SoC umfassen. Der in dem einmalig programmierbaren Speicher des SoC gespeicherte Code kann Sicherungen enthalten, die so konfiguriert sind, dass sie jedem der in Frage kommenden gespeicherten Schlüssel entsprechen. Bei der Bestimmung oder Auswahl eines Ökosystems, in dem das computergestützte Steuersystem arbeiten soll, können die Sicherungen verwendet oder „ausgelöst“ werden, um festzulegen, welcher Schlüssel zur Authentifizierung der Firmware-Images verwendet werden soll. In der ersten Ausführungsform kann ein externer Flash oder ein ähnliches Ereignis verwendet werden, um die Sicherungen innerhalb des primären Bootloaders auszulösen und den aktiven Schlüssel auszuwählen, der vom primären Bootloader aus der Vielzahl der in Frage kommenden gespeicherten Schlüssel verwendet werden soll.
-
Das offenbarte System und Verfahren kann eine Änderung der Programmierung eines sekundären Bootloaders im RAM des SoC beinhalten, wobei der sekundäre Bootloader beispielsweise durch externen Flash aktualisiert oder neu programmiert wird. Während eines Boot-Ereignisses kommuniziert der primäre Bootloader mit dem sekundären Bootloader als Teil einer Sequenz von Boot-Ereignisaufgaben. Der sekundäre Bootloader kann dann, nachdem er vom primären Bootloader initiiert wurde, während des Boot-Ereignisses zusätzliche Funktionen ausführen.
-
Der primäre Bootloader kann anfänglich mit einer Reihe von Public-Key-Hashwerten versehen sein, die so konfiguriert sind, dass sie entsprechende Schlüssel und Signaturen im sekundären Bootloader authentifizieren. Ein Public-Key-Hashwert im einmalig programmierbaren Speicher des SoC, der vom primären Bootloader verwendet wird, und ein öffentlicher Schlüssel und eine Signatur, die im sekundären Bootloader gespeichert sind oder auf die dieser zugreifen kann, können gemeinsam als Schlüsselsatz für die Authentifizierung des Firmware-Images bezeichnet werden. Der SoC kann eine Vielzahl von Firmware-Image-Authentifizierungsschlüsselsätzen enthalten, die jeweils als aktiver Firmware-Image-Authentifizierungsschlüsselsatz ausgewählt werden können.
-
Der primäre Bootloader und der sekundäre Bootloader können jeweils anfänglich mit Daten programmiert sein, die der Vielzahl von Firmware-Image-Authentifizierungsschlüsselsätzen entsprechen. Der primäre Bootloader kann so programmiert sein, dass er einen der Public-Key-Hashwerte als Standard- oder Anfangsschlüssel für ein erstes Boot-Ereignis verwendet, und er kann zusätzlich so programmiert sein, dass er Sicherungen aktiviert, die in den primären Bootloader für die Auswahl eines aktiven Firmware-Image-Authentifizierungsschlüsselsatzes einprogrammiert sind. Firmware-Images, wie z. B. der sekundäre Bootloader, werden aus dem externen Flash in den SoC-RAM geladen und authentifiziert, nachdem der erste sichere Bootvorgang eingeleitet wurde. Während der gesamten Lebensdauer des SoC kann der sekundäre Bootloader einen der im SoC gespeicherten Schlüssel verwenden, der dem aktiven Firmware-Image-Authentifizierungsschlüsselsatz entspricht, um mit dem primären Bootloader zu kommunizieren.
-
Das offenbarte System und Verfahren bietet eine Reihe von hervorragenden Vorteilen. Durch die Möglichkeit, einen SoC oder eine Vorrichtung mit einer Vielzahl von anfänglich gespeicherten Schlüsselsätzen zu erstellen und einen aus der Vielzahl der anfänglich gespeicherten Schlüsselsätze zur Verwendung auszuwählen, kann der Hersteller des SoC oder der Vorrichtung eine Version des SoC oder der Vorrichtung herstellen, die in einem aus einer Vielzahl von Ökosystemen arbeiten kann. Der Hersteller kann eine gleiche Version des SoC für die Verwendung durch Unternehmen A in Land A und alternativ für die Verwendung durch Unternehmen B in Land B herstellen.
-
Nun unter Bezugnahme auf die Zeichnungen, in denen sich gleiche Bezugszeichen auf gleiche Merkmale in den verschiedenen Ansichten beziehen, zeigt 1 schematisch eine beispielhafte Leiterplatte 5 mit einem SoC 10, in dem einer aus einer Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen als aktiver Firmware-Image-Authentifizierungsschlüsselsatz ausgewählt wird, indem Sicherungen innerhalb des einmalig programmierbaren Speichers 18, wie z. B. Sicherungen, innerhalb des SoC 10 verwendet und vom primären Bootloader 20 genutzt werden. Die Leiterplatte 5 kann als eine elektronische Steuereinheit (ECU) bezeichnet werden. Das SoC 10 enthält den einmalig programmierbaren Speicher 18, in dem das Programm des primären Bootloaders 20 gespeichert ist. Das SoC 10 umfasst eine Vielzahl von Public-Key-Hashwerten 22, 24, 26, die im einmalig programmierbaren Speicher 18 des SoC 10 gespeichert sind und entsprechend einer Vielzahl von entsprechenden in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen konfiguriert sind.
-
Der SoC 10 enthält einen RAM-Speicher 31, in den ein Firmware-Image mit einem sekundären Bootloader 54 und einer Vielzahl von öffentlichen Schlüsseln 41, 42, 43 von einem externen Flash-Speicher 12 geladen oder aktualisiert wird. Der Hash-Wert 22 des öffentlichen Schlüssels entspricht dem öffentlichen Schlüssel 41 und kann verwendet werden, um dessen Authentizität zu bestätigen. Der Public-Key-Hashwert 24 entspricht dem öffentlichen Schlüssel 42 und kann zur Bestätigung seiner Authentizität verwendet werden. Der Public-Key-Hashwert 26 entspricht dem öffentlichen Schlüssel 43 und kann zur Bestätigung der Authentizität dieses Schlüssels verwendet werden. Das im RAM-Speicher 31 gespeicherte Firmware-Image enthält zusätzlich eine Signaturtabelle 60, in der für jeden öffentlichen Schlüssel 41, 42, 43 eine entsprechende Signatur 51, 52, 53 abgerufen und im RAM-Speicher 31 gespeichert werden kann. Zusätzlich kann auf eine Signatur2 65, eine Signatur3 66, eine Signatur4 67 und eine Signatur(n) 68 an den jeweiligen Adressen 61, 62, 63, 64 zugegriffen werden, die für die Fortsetzung des Boot-Ereignisses und des Authentifizierungsprozesses des Firmware-Images innerhalb eines Hypervisor-Moduls 70, eines Betriebssystem-Bootloader-Moduls 80, eines Betriebssystem-Kernel-Moduls 90 und anderer nachfolgender Module nützlich sind. Die Signatur2 65, Signatur3 66, Signatur4 67 und Signatur(n) 68 können als Signaturen beschrieben werden, die so konfiguriert sind, dass sie den sekundären Bootloader in die Lage versetzen, nachfolgende Prozesse eines Boot-Ereignisses fortzusetzen. Die Signatur2 65, Signatur3 66, Signatur4 67 und Signatur(n) 68 können Firmware-Image-Authentifizierungsschlüsselsätze sein, wobei für jeden Firmware-Image-Authentifizierungsschlüsselsatz unterschiedliche Werte für jede der Signaturen 65, 66, 67, 68 gespeichert werden.
-
Der primäre Bootloader 20 kann mit einer anfänglichen Schlüsselauswahl programmiert werden, z. B. mit einem ersten Public-Key-Hash 22, der im einmalig programmierbaren Speicher 18 als Werkseinstellung gespeichert ist. Diese anfängliche Schlüsselauswahl kann dazu dienen, eine erstmalige Inbetriebnahme der Leiterplatte 5 zu ermöglichen, so dass nach dieser ersten Inbetriebnahme ein aktiver Firmware-Image-Authentifizierungsschlüsselsatz ausgewählt werden kann. Der externe Flash-Speicher 12 kann zur Eingabe in die Leiterplatte 5 verwendet werden. Der primäre Bootloader 20 kann ein Image im externen Flash 12 authentifizieren.
-
Der aktive Firmware-Image-Authentifizierungsschlüsselsatz kann auf der Grundlage einer Reihe von Faktoren ausgewählt werden, z. B. in welchem Ökosystem die Leiterplatte 5 betrieben werden soll. In der Ausführungsform von 1 wird der Public-Key-Hashwert 22 als aktiver Public-Key-Hashwert ausgewählt. In anderen Ausführungsformen kann der Public-Key-Hashwert 24 oder der Public-Key-Hashwert 26 als aktiver Schlüssel ausgewählt werden. Das Ökosystem kann durch ein Land beschrieben oder definiert werden, in dem die Leiterplatte 5 betrieben oder verkauft werden soll, oder durch ein Unternehmen, an das die Leiterplatte 5 verkauft werden soll. Je nachdem, welcher der Public-Key-Hashwerte 22, 24, 26 als aktiver Schlüssel ausgewählt wird, können die übrigen nicht ausgewählten Schlüssel widerrufen, deaktiviert oder gelöscht werden. In einer Ausführungsform wird der sekundäre Bootloader 54 als Firmware-Image von einem externen Flash 12 zum Herunterladen in den RAM-Speicher 31 des SoC 10 bereitgestellt. Je nachdem, welcher der Public-Key-Hashwerte 22, 24, 26 als aktiver Schlüssel ausgewählt wird, authentifiziert der primäre Bootloader 20 während eines Bootvorgangs den im externen Flash-Speicher 12 gespeicherten sekundären Bootloader 54. Dazu verifiziert er die Signatur des sekundären Bootloaders 54 mit dem aktiven öffentlichen Schlüssel.
-
Sobald der primäre Bootloader 20 die Authentizität des sekundären Bootloaders 54 verifiziert hat, kann dem sekundären Bootloader 54 nun vertraut werden und er kann dazu verwendet werden, die Aufgaben des Boot-Ereignisses weiter voranzutreiben oder auszuführen. Der sekundäre Bootloader 54 kann einen gespeicherten öffentlichen Schlüssel 55 verwenden, um eine gespeicherte Kopie der Signatur2 65 in einem Hypervisor-Modul 70 im Vergleich zu der Signatur2 65 der Signaturtabelle 60 zu überprüfen. Nach der Überprüfung der gespeicherten Kopie der Signatur2 65 im Hypervisor-Modul 70 kann der sekundäre Bootloader 54 dem Hypervisor-Modul 70 erlauben, die Programmierung als vertrauenswürdige Firmware auszuführen.
-
Das Hypervisor-Modul 70 kann einen gespeicherten öffentlichen Schlüssel 72 verwenden, um eine gespeicherte Kopie der in einem Betriebssystem-Bootloader-Modul 80 gespeicherten Signatur3 66 im Vergleich zur Signatur3 66 der Signaturtabelle 60 zu überprüfen. Nach Überprüfung der gespeicherten Kopie der Signatur3 66 kann das Hypervisor-Modul 70 dem Betriebssystem-Bootloader-Modul 80 erlauben, die Programmierung als vertrauenswürdige Firmware auszuführen.
-
Das Betriebssystem-Bootloader-Modul 80 kann einen gespeicherten öffentlichen Schlüssel 82 verwenden, um eine gespeicherte Kopie der in einem Betriebssystem-Bootloader-Modul 90 gespeicherten Signatur4 67 im Vergleich zur Signatur4 67 der Signaturtabelle 60 zu überprüfen. Nach der Verifizierung der gespeicherten Kopie der Signatur4 67 kann das Betriebssystem-Bootloader-Modul 80 dem Betriebssystem-Kernel-Modul 90 erlauben, die Programmierung als vertrauenswürdige Firmware auszuführen. Das Hypervisor-Modul 70, das Betriebssystem-Bootloader-Modul 80 und das Betriebssystem-Kernel-Modul 90 sind nicht-einschränkende Beispiele für Module, die authentifiziert und in einem Boot-Ereignis verwendet werden können.
-
Das SoC 10 enthält drei beispielhafte gespeicherte Public-Key-Hashwerte 22, 24, 26, von denen einer als aktiver Schlüssel ausgewählt wird, der einem aktiven Firmware-Image-Authentifizierungsschlüsselsatz entspricht. Der aktive Public-Key-Hashwert der Public-Key-Hashwerte 22, 24, 26 wird auf der Grundlage der Programmierung von Sicherungen und anderen Arten von einmalig programmierbaren Speichern ausgewählt, auf die der primäre Bootloader 20 innerhalb des einmalig programmierbaren Speichers 18 zugreift. Nach der Auswahl des aktiven Schlüssels der Public-Key-Hashwerte 22, 24, 26 wird diese Auswahl durch den sekundären Bootloader 54 kaskadiert, indem ein entsprechender aktiver Schlüssel der öffentlichen Schlüssel 41, 42, 43 ausgewählt wird und eine geeignete Signatur der Signaturen 51, 52, 53 ausgewählt wird. Der entsprechende erste, zweite und dritte der Public-Key-Hashwerte 22, 24, 26, der öffentlichen Schlüssel 41, 42, 43 und der Signaturen 51, 52, 53 können als in Frage kommende Firmware-Image-Authentifizierungsschlüsselsätze beschrieben werden, aus denen je nach Ökosystem, in dem die Leiterplatte 5 betrieben oder verkauft werden soll, ausgewählt werden kann. Der ausgewählte aktive Public-Key-Hashwert der Public-Key-Hashwerte 22, 24, 26; der ausgewählte aktive öffentliche Schlüssel der öffentlichen Schlüssel 41, 42, 43; und die entsprechende Signatur der Signaturen 51, 52, 53 werden während der gesamten Lebensdauer der Leiterplatte 5 verwendet. Die drei beispielhaften Schlüsselsätze von 1 sind beispielhaft. Der SoC 10 kann zwischen zwei, drei, vier oder mehr Schlüsselsätzen für die Authentifizierung von Firmware-Images wählen.
-
Der aktive Firmware-Image-Authentifizierungsschlüsselsatz wird durch Setzen von Sicherungen oder einer anderen Art von einmalig programmierbarem Speicher in Verbindung mit den Public-Key-Hashwerten 22, 24, 26 geändert. Die öffentlichen Schlüssel 41, 42, 43 können geladen oder durch den externen Flash-Speicher 12 bereitgestellt werden. Die Sicherungs-Einstellungen bestimmen, welcher aus der Vielzahl der in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätze als der aktive Firmware-Image-Authentifizierungsschlüsselsatz ausgewählt wird.
-
2 zeigt schematisch einen Datenfluss 100, bei dem anfänglich geladene Images (z. B. der sekundäre Bootloader 54), die für einen sicheren Bootvorgang zu signieren sind, von jedem einer Vielzahl von Firmware-Image-Authentifizierungsschlüsselsatzmodulen 130, 140, 150 in Vorbereitung auf einen anfänglichen Bootvorgang signiert werden. Eine Softpart-Freigabeanwendung 110 ist als im RAM-Speicher 31 gespeicherte Programmierung dargestellt. Die Softpart-Freigabeanwendung 110 enthält eine anfängliche unsignierte Version des sekundären Bootloaders 54 einschließlich des öffentlichen Schlüssels 55. Eine Signieranwendung 120 empfängt den unsignierten sekundären Bootloader 54 von der Softpart-Freigabeanwendung 110. Die Signieranwendung 120 verteilt den unsignierten sekundären Bootloader 54 an jedes der Firmware-Image-Authentifizierungsschlüsselsatzmodule 130, 140, 150. Das Firmware-Image-Authentifizierungsschlüsselsatzmodul 130 stellt den öffentlichen Schlüssel 41 und die Signatur 51 bereit, die mit einem ersten Firmware-Image-Authentifizierungsschlüsselsatz verbunden sind. Das Firmware-Image-Authentifizierungsschlüsselsatzmodul 140 liefert den öffentlichen Schlüssel 42 und die Signatur 52, die zu einem zweiten Satz von Firmware-Image-Authentifizierungsschlüsselsatz gehören. Das Firmware-Image-Authentifizierungsschlüsselsatzmodul 150 stellt den öffentlichen Schlüssel 43 und die Signatur 53 bereit, die zu einem dritten Firmware-Image-Authentifizierungsschlüsselsatz gehören.
-
Die Signieranwendung 120 fügt die öffentlichen Schlüssel 41, 42, 43 und die Signaturen 51, 52, 53 an den sekundären Bootloader 54 an. Die Signieranwendung 120 kann zusätzlich eine Zertifizierungskette an den sekundären Bootloader 54 anhängen. Die Signieranwendung 120 wandelt den unsignierten sekundären Bootloader 54 in einen signierten sekundären Bootloader 54 um und überträgt diesen signierten sekundären Bootloader 54 an die Softpart-Freigabeanwendung 110 zur Verwendung in einem anfänglichen Bootvorgang.
-
3 zeigt schematisch einen Datenfluss 170, in dem die Signaturtabelle 160 von 1, die vom sekundären Bootloader 54 verwendet werden soll, durch Verwendung von Adressen, an denen Signaturen 51, 52, 53 gespeichert sind, und Adressen 61, 62, 63, 64, an denen Signaturen 65, 66, 67, 68 gespeichert sind, erstellt wird. Der Datenfluss 170 umfasst die Softpart-Freigabeanwendung 110, die Signieranwendung 120 und die Firmware-Image-Authentifizierungsschlüsselsatzmodule 130, 140, 150 von 3. Die Softpart-Freigabeanwendung 110 enthält eine Signaturtabelle 160, die für das sichere Booten einzeln signiert werden muss. Die Softpart-Freigabeanwendung 110 enthält außerdem Adressen 162 von Signaturen 51, 52, 53, 65, 66, 67, 68. Die Signieranwendung 120 empfängt die Images 160 und die Adressen 162 und stellt die Images 160 und die Adressen 162 jedem der Firmware-Image-Authentifizierungsschlüsselsatzmodule 130, 140, 150 zur Verfügung.
-
Das Firmware-Image-Authentifizierungsschlüsselsatzmodul 130 empfängt die Images 160 und die Adressen 162 und stellt eine Signatur 51 und PKI-Authentifizierungs-Schlüsselsatz-spezifische Werte der Signatur2 65, der Signatur3 66, der Signatur4 67 und der Signatur 5 68 bereit, um eine Signaturtabelle 60 mit den Adressen 61, 62, 63, 64 und der entsprechenden Signatur2 65, der entsprechenden Signatur3 66, der entsprechenden Signatur4 67 und der entsprechenden Signatur 5 68 zu füllen.
-
Das Firmware-Image-Authentifizierungsschlüsselsatzmodul 140 empfängt die Images 160 und die Adressen 162 und stellt eine Signatur 52 und PKI-Authentifizierungs-Schlüsselsatz-spezifische Werte der Signatur2 65, der Signatur3 66, der Signatur4 67 und der Signatur 5 68 bereit, um eine Signaturtabelle 60 mit den Adressen 61, 62, 63, 64 und der entsprechenden Signatur2 65, der entsprechenden Signatur3 66, der entsprechenden Signatur4 67 und der entsprechenden Signatur 5 68 zu füllen.
-
Das Firmware-Image-Authentifizierungsschlüsselsatzmodul 150 empfängt die Images 160 und die Adressen 162 und stellt eine Signatur 53 und PKI-Authentifizierungs-Schlüsselsatz-spezifische Werte der Signatur2 65, der Signatur3 66, der Signatur4 67 und der Signatur 5 68 bereit, um eine Signaturtabelle 60 mit den Adressen 61, 62, 63, 64 und der entsprechenden Signatur2 65, der entsprechenden Signatur3 66, der entsprechenden Signatur4 67 und der entsprechenden Signatur 5 68 zu füllen.
-
Die Signieranwendung 120 fügt die Signaturen 51, 52, 53, die Adressen 61, 62, 63, 64 und die entsprechende Signatur2 65, die entsprechende Signatur3 66, die entsprechende Signatur4 67 und die entsprechende Signatur5 68 an die Signaturtabelle 60 an. Die Signieranwendung 120 stellt jedem der Firmware-Image-Authentifizierungsschlüsselsatzmodule 130, 140 und 150 Images und Adressen zur Verfügung, sammelt Daten und stellt der Softpart-Freigabeanwendung 110 die Authentifizierungstabelle 60 mit allen Werten der Authentifizierungstabelle 60 zur Verfügung.
-
4 ist ein Flussdiagramm, das ein Verfahren 200 zum Erstellen und Auswählen eines aktiven Firmware-Image-Authentifizierungsschlüsselsatzes innerhalb der Leiterplatte 5 von 1 veranschaulicht. Das Verfahren 200 bezieht sich auf physische Komponenten der Leiterplatte 5 von 1, obwohl alternative Komponenten in Übereinstimmung mit dem Verfahren 200 verwendet werden können. Das Verfahren 200 beginnt in Schritt 202. In Schritt 204 beginnt ein Teil des Verfahrens 200, in dem der SoC 10 hergestellt wird. In Schritt 206 wird das SoC 10 hergestellt und zunächst mit dem primären Bootloader 20 programmiert. Das SoC 10 umfasst einen einmalig programmierbaren Speicher 18, und der primäre Bootloader 20 ist in dem einmalig programmierbaren Speicher 18 gespeichert. Mehrere Public-Key-Hashwerte 22, 24, 26 sind zusätzlich im einmalig programmierbaren Speicher 18 des SoC 10 gespeichert. Die Public-Key-Hashwerte 22, 24, 26 entsprechen jeweils einem aus einer Vielzahl von Schlüsselsätzen zur Authentifizierung von Firmware-Images. Einer der Public-Key-Hashwerte 22, 24, 26 wird als ein anfänglich aktiver Schlüssel ausgewählt, der zur Authentifizierung von Firmware innerhalb des SoC 10 verwendet werden kann. In Schritt 208 beginnt ein Teil des Verfahrens 200, in dem die Leiterplatte 5 oder das Steuergerät hergestellt wird. In Schritt 210 wird die SoC 10 an der Leiterplatte 5 befestigt und die öffentlichen Schlüssel aus der Vielzahl von in Frage kommenden Firmware-Image-Authentifizierungsschlüsselsätzen werden in dem einmalig programmierbaren Speicher 18 der SoC 10 verschmolzen. In Schritt 212 wird der anfänglich aktive Schlüssel der Public-Key-Hashwerte 22, 24, 26 innerhalb des SoC 10 verwendet, um einen Prozess zur Durchführung eines sicheren Boot-Ereignisses einzuleiten. Dieses sichere Boot-Ereignis kann beschrieben werden, um eine Standard-Vertrauensbasis (RoT) vom primären Bootloader 20 zum sekundären Bootloader 54 einzurichten. Als Teil dieses sicheren Boot-Ereignisses kann ein aktiver Firmware-Image-Authentifizierungsschlüsselsatz durch die programmierten Sicherungen des primären Bootloaders 20 ausgewählt werden, wodurch ein entsprechender der Public-Key-Hashwerte 22, 24, 26 als aktiv bezeichnet wird. In Schritt 214 wird ein Teil des Verfahrens 200 gestartet, bei dem die Leiterplatte 5 in ein größeres System, z. B. ein Fahrzeug, eingebaut wird. In Schritt 216 wird der aktive Schlüssel, der während der Lebensdauer der Leiterplatte 5 verwendet werden soll, festgelegt, und die nicht ausgewählten Schlüssel werden auf ungültig gesetzt. In Schritt 218 kann die Signatur auf Images wie dem sekundären Bootloader 54, die durch den primären Bootloader 20 authentifiziert wurden, ersetzt werden, wenn der aktive Schlüssel zwischen dem ersten sicheren Bootvorgang und der Installation in dem größeren System geändert wurde. Die Leiterplatte 5 kann durch nachfolgende Boot-Ereignisse verwendet werden, wobei der aktive Firmware-Image-Authentifizierungsschlüsselsatz verwendet wird, um sichere Boot-Ereignisse bereitzustellen. In Schritt 220 endet das Verfahren 200. Es sind eine Reihe zusätzlicher und/oder alternativer Verfahrensschritte denkbar, und die Offenbarung soll nicht auf die hier aufgeführten Beispiele beschränkt sein.
-
5 zeigt schematisch eine beispielhafte Vorrichtung 300 mit einer zentralen Steuereinheit 310, die die Leiterplatte 5 von 1 enthält. In der Ausführungsform von 5 umfasst die Vorrichtung 300 ein Fahrzeug. In anderen Ausführungsformen kann die Vorrichtung 300 ein Energieerzeugungssystem, ein Boot, ein Flugzeug oder eine andere Vorrichtung sein, die ein computergesteuertes Steuersystem einschließlich der Leiterplatte 5 verwendet. Die Vorrichtung 300 umfasst ein drahtloses Kommunikationsgerät 301, die zentrale Steuereinheit 310 und eine elektrische Maschine 320. Die elektrische Maschine 320 umfasst eine Ausgangswelle 322, die so konfiguriert ist, dass sie ein nützliches Ausgangsdrehmoment bereitstellt. Die zentrale Steuereinheit 310 ist mit einem optionalen Eingangsanschluss 312 dargestellt. Das externe Flashgerät 12 kann entweder über die drahtlose Kommunikationsvorrichtung 301, z. B. durch drahtlose Kommunikation mit einer entfernten Servervorrichtung, oder über den Eingangsanschluss 312 mit der zentralen Steuereinheit 310 und der zugehörigen Leiterplatte 5 verbunden werden und diese mit Programmen oder Daten versorgen.
-
Während die besten Modi zur Durchführung der Offenbarung im Detail beschrieben wurden, werden Fachleute auf dem Gebiet, auf das sich diese Offenbarung bezieht, verschiedene alternative Designs und Ausführungsformen zur Durchführung der Offenbarung im Rahmen der beigefügten Ansprüche erkennen.