-
Die vorliegende Erfindung betrifft ein Verfahren zur Absicherung eines Systems-on-a-Chip.
-
Stand der Technik
-
Ein System-on-a-Chip (Ein-Chip-System, SoC) ist ein integrierter Schaltkreis (IC), bei dem eine Vielzahl an Funktionen eines entsprechenden Systems auf einem einzigen Chip (Die) integriert ist. Beispielsweise können derartige SoCs eine hardware-konfigurierbare Logikeinheit (programmierbarer Logikteil, PL) und eine Prozessoreinheit (Prozessor Systemteil, PS) umfassen.
-
Eine derartige Prozessoreinheit kann dabei einen zweckmäßigen Prozessor bzw. Prozessorkern oder einen Multicore-Prozessor umfassen. Multicore-Prozessoren umfassen dabei mehrere (wenigstens zwei) Prozessorkerne. Ein Prozessorkern umfasst dabei eine arithmetisch-logische Einheit (ALU), welche das eigentliche elektronische Rechenwerk zur Ausführung von Tasks, Programmen, Rechenbefehlen, etc. darstellt, und weiterhin einen lokalen Speicher.
-
Eine Hardware einer hardware-konfigurierbaren Logikeinheit ist nicht unveränderlich, sondern kann jederzeit verändert werden. Hardware-konfigurierbare Logikeinheiten können dabei mittels einer Hardwarebeschreibungssprache (HDL) auf Hardware-Ebene neu programmiert bzw. neu konfiguriert werden. Somit können den hardware-konfigurierbaren Logikschaltungen unterschiedliche Funktionalitäten zugewiesen werden. Um eine hardware-konfigurierbaren Logikeinheit neu zu konfigurieren, können einzelne Schaltungsbereiche der hardware-konfigurierbaren Logikeinheit unterschiedlich verschaltet werden. Dabei wird eine Konfiguration von Hardwareelementen (beispielsweise Lookup Tabellen (LUT), Multiplexer (Mux), Interconnections zwischen Logikinstanzen (z.B. Programmable Interconnect Points) und/oder globale Ressourcen wie Clock, Vcc, GND) in den einzelnen Schaltungsbereichen verändert. Derartige hardware-konfigurierbare Logikeinheiten können insbesondere sogenannte Field Programmable Gate Arrays (FPGAs) sein.
-
Mittels derartiger SoCs kann eine Vielzahl an Funktionalitäten realisiert werden. Dabei ist es von erheblicher Bedeutung, entsprechende Sicherheitsmaßnahmen vorzunehmen und das SoC gegen schädliche Angriffe abzusichern. Insbesondere muss dabei eine Firmware des SoC geschützt werden. Die Firmware umfasst dabei insbesondere die Programmierung der hardware-konfigurierbaren Logikeinheit (programmable logic part, PL) und der Prozessoreinheit (processor system part, PS). Beispielsweise muss die Firmware vom SoC dabei gegen Manipulation, Nachkonstruktion (Reverse Engineering) oder nicht lizensierte Vervielfältigung geschützt werden.
-
SoCs können üblicherweise gesichert werden, indem ein Datenstrom des SoC mittels einer zweckmäßigen Verschlüsselungsmethode verschlüsselt wird, beispielsweise mittels eines sogenannten Advanced Encryption Standard (AES) Algorithmus. Mittels einer derartigen Methode kann zwar der Datenstrom des SoC gesichert werden, das SoC kann jedoch nicht gegen Manipulation (vor allem auf Hardwareebene) gesichert werden. Weiterhin sind derartige Verschlüsselungsmethoden anfällig für Seitenkanalattacken.
-
SoCs können weiterhin mittels sogenannter Secure-Boot-Verfahren gesichert werden, wobei zumeist asymmetrische Verschlüsselungsverfahren zum Einsatz können. Bei derartigen asymmetrischen Verschlüsselungsverfahren werden Schlüsselpaare aus einem öffentlichen und einem privaten Schlüssel verwendet. Dabei wird die Firmware mit dem öffentlichen Schlüssel offline signiert. Im SoC wird diese Signatur mit dem öffentlichen Schlüssel geprüft. Bei derartigen Signaturverfahren ist jedoch nur die Integrität bzw. Authentizität der Daten gesichert. Eine Geheimhaltung der Daten des SoC wird nicht gewährleistet.
-
Es ist daher wünschenswert, eine Möglichkeit bereitzustellen, um ein System-on-a-Chip auf einfache Weise effektiv gegen Angriffe abzusichern.
-
Offenbarung der Erfindung
-
Erfindungsgemäß wird ein Verfahren zur Absicherung eines Systems-on-a-Chip mit den Merkmalen des Patentanspruchs 1 vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Das SoC weist dabei eine hardware-programmierbare Logikeinheit (programmierbarer Logikteil) und eine Prozessoreinheit (Prozessor Systemteil, PS) auf. Die hardware-programmierbare Logikeinheit ist dabei insbesondere als ein Field Programmable Gate Array (FPGA) ausgebildet. Die Prozessoreinheit umfasst einen zweckmäßigen Prozessorkern oder einen zweckmäßigen Multicore-Prozessor aus mehreren (wenigstens zwei) Prozessorkernen. Weiterhin umfasst das SoC einen internen, kleinen, nichtflüchtigen Speicherbereich (Fuse). Dieser Speicherbereich (Fuse) ist insbesondere nur ein Mal programmierbar.
-
Zu einem ersten Zeitpunkt wird dabei ein Programmierprozess (Enrollment) des SoC durchgeführt. Dieser Programmierprozess kann beispielsweise im Zuge eines Produktionsprozesses des SoC durchgeführt werden. Im Zuge des Programmierprozesses wird in der hardware-programmierbaren Logikeinheit eine Erzeugung eines Schlüsselpaares (öffentlicher und privater Schlüssel) mittels einer sogenannten Physical Unclonable Function (PUF) durchgeführt. Dieser erzeugte öffentliche PUF-Schlüssel bzw. private PUF-Schlüssel werden letztendlich für das Erzeugen und Überprüfen von Signaturen genutzt.
-
Derartige Physical Unclonable Functions (PUFs) sind Funktionen, welche auf physikalischen Charakteristiken des SoC basieren. Eine Physical Unclonable Function wertet Fertigungsschwankungen in einem Chip bzw. in dem SoC aus und erzeugt daraus ein individuelles Chipsignal. Ein derartiges individuelles Chipsignal ist somit ein Ergebnis der auf dem SoC ausgeführten Physical Unclonable Function. Dieses individuelle Chipsignal variiert stark zwischen unterschiedlichen Chips bzw. zwischen unterschiedlichen SoCs. Dieses individuelle Chipsignal kann im Allgemeinen dazu genutzt werden, den SoC zu authentifizieren oder um (kryptografische) Schlüssel zu erzeugen.
-
Ein auf diese Art erzeugter (kryptografischer) öffentlicher PUF-Schlüssel wird mittels eines zweiten privaten Schlüssels (insbesondere mit einem sogenannten system developer key) signiert. Der öffentliche PUF-Schlüssel sowie dessen Signatur werden in einem externen Speicher gespeichert, insbesondere in einem Flash-Speicher. Insbesondere wird dieser zweite private Schlüssel bzw. ein zweites Schlüsselpaar aus diesem zweiten privaten Schlüssel und einem zugehörigen zweiten öffentlichen Schlüssel im Zuge des Programmierprozess des SoC ohnehin genutzt bzw. ist ohnehin bereits vorhanden (system developer key). Mittels dieses zweiten Schlüsselpaares wird somit eine Echtheit bzw. Authentizität des öffentlichen PUF-Schlüssels verifiziert.
-
Weiterhin wird ein Sicherheitsmodul ("security module"), insbesondere in Form einer Firmware, vom SoC mittels eines dritten privaten Schlüssels signiert (insbesondere mittels eines Boot Schlüssels). Das Sicherheitsmodul und dessen Signatur werden in dem externen Speicher des Systems-on-a-Chip gespeichert. Der dazu gehörige dritte öffentliche Schlüssel wird insbesondere im internen nichtflüchtigen Speicherbereich (Fuse) des SoC gespeichert. Ein derartiges Sicherheitsmodul umfasst Software, insbesondere Firmware, welche zum Absichern des SoC verwendet werden kann. Insbesondere kann diese Software zum Verschlüsseln und Entschlüsseln der SoC Firmware, weiter insbesondere zum Signieren und Verifizieren von Signaturen verwendet werden. Insbesondere umfasst dieses Sicherheitsmodul dabei die Software, welche zur Verschlüsselung des SoC verwendet wird, insbesondere die Physical Unclonable Function und zweckmäßige Methoden zur Überprüfung bzw. Verifikation von Signaturen. Weiter insbesondere umfasst das Sicherheitsmodul zweckmäßige kryptographische Algorithmen. Dieses Sicherheitsmodul kann insbesondere zu einem späteren Zeitpunkt genutzt werden, um das verschlüsselte SoC wieder zu entschlüsseln bzw. in Betrieb zu nehmen.
-
Auch der dritte private Schlüssel bzw. ein drittes Schlüsselpaar aus diesem dritten privaten Schlüssel und einem zugehörigen dritten öffentlichen Schlüssel werden im Zuge des Programmierprozess des SoC ohnehin genutzt bzw. sind ohnehin bereits vorhanden. Mittels dieses zweiten Schlüsselpaares wird somit eine Echtheit bzw. Authentizität sämtlicher Software verifiziert, welche zum Entschlüsseln des SoC genutzt werden kann.
-
Vorteile der Erfindung
-
Mittels der Erfindung kann die Firmware eines SoC und das dazu gehörige SoC mit Hilfe einer Physical Unclonable Function geschützt bzw. verschlüsselt werden. Mittels des Physical Unclonable Function wird dabei ein PUF-Schlüsselpaar erzeugt, welches eindeutig für dieses spezielle SoC ist. Dieses PUF-Schlüsselpaar wird im Zuge des Programmierprozesses eigens und individuell für das jeweilige SoC erzeugt. Mittels dieses PUF-Schlüsselpaares kann eine Echtheit bzw. Authentizität des SoC eindeutig verifiziert werden. Der Private PUF-Schlüssel verlässt dabei niemals das SoC und wird somit geheim gehalten.
-
Das Ergebnis der auf dem SoC ausgeführten Physical Unclonable Function (insbesondere ein individuelles Chipsignal) kann im übertragenen Sinn als ein Fingerabdruck des SoCs angesehen werden. Das individuelle Chipsignal bzw. das Ergebnis der auf dem SoC ausgeführten Physical Unclonable Function ist für jeden SoC eindeutig, sehr schwer bis kaum vorhersehbar, intrinsisch und kann nicht kontrolliert werden (insbesondere nicht durch einen Hersteller des SoC). Weiterhin ist das individuelle Chipsignal bzw. das Ergebnis der auf dem SoC ausgeführten Physical Unclonable Function sehr zuverlässig und leicht auszuwerten.
-
Schlüssel, welche mittels einer Physical Unclonable Function erzeugt werden, können nicht oder kaum durch Nachkonstruktion bzw. Reversed Engineering erzeugt werden. Der öffentliche und der private PUF-Schlüssel sind somit für das jeweilige SoC eindeutig und können kaum nachkonstruiert werden. Somit kann es so gut wie ausgeschlossen werden, dass ein Angreifer dieses PUF-Schlüsselpaar nachkonstruiert und einen schädlichen Angriff auf das SoC durchführt. Das SoC und die entsprechende Firmware können somit auf einfache Weise besonders effizient gegen schädliche Angriffe, insbesondere gegen Manipulation, Nachkonstruktion (Reverse Engineering) oder nicht lizensierte Vervielfältigung, abgesichert werden.
-
Insbesondere wird der Programmierprozess bzw. Produktionsprozess in einem (gegen Angriffe) sicheren und geschützten Umfeld durchgeführt. Während des Programmierprozess haben dabei ausschließlich autorisierte Mitarbeiter Zugriff auf die einzelnen Hard- und Softwareelemente. Weiter insbesondere wird für den Programmierprozess ein eigenständiges, abgetrenntes und gesichertes Netzwerk verwendet. Insbesondere werden zumindest die sicherheitskritischen Schritte des Programmierprozess in einem derartigen sicheren und geschützten Umfeld durchgeführt. Diese sicherheitskritischen Schritte umfassen dabei das Erstellen der PUF-Schlüssel sowie das Signieren mit einem der Schlüssel. Sicherheitsunkritische Schritte können dabei auch in einem nicht geschützten Umfeld durchgeführt werden. Die sicherheitsunkritischen Schritte umfassen dabei insbesondere das Übermitteln bzw. Speichern der Signaturen, Schlüssel, usw. in dem Speicherbereich des SoC.
-
Insbesondere wird im Zuge des Programmierprozesses zunächst eine Enrollment-Firmware in das SoC geladen. Diese Enrollment-Firmware umfasst dabei insbesondere die Physical Unclonable Function bzw. zweckmäßige PUF-Elemente, welche in die hardware-programmierbare Logikeinheit geladen werden. Weiterhin umfasst die Enrollment-Firmware insbesondere einen Hilfsdatengenerator, welcher für die Physical Unclonable Function benötigte Hilfsdaten erzeugt. Weiterhin umfasst die Enrollment-Firmware insbesondere einen privaten Schlüsselgenerator, der den privaten PUF-Schlüssel erzeugt, und einen öffentlichen Schlüsselgenerator, der den öffentlichen PUF-Schlüssel erzeugt. Diese Enrollment-Firmware bzw. einzelne Elemente der Enrollment-Firmware sind insbesondere Teil des Sicherheitsmoduls.
-
Nachdem der öffentliche PUF-Schlüssel und dessen Signatur, der dritte öffentliche Schlüssel bzw. dessen Hash ("Boot Key") und das Sicherheitsmodul (und dessen Signatur) in dem externen Speicher des SoC gespeichert sind und nachdem das SoC somit in einem sicheren Modus ("Secure Boot") eingestellt ist, ist das SoC verschlüsselt bzw. gesichert. Dieses verschlüsselte bzw. gesicherte SoC kann in einem nicht sicheren Umfeld verwendet werden.
-
In einer vorteilhaften Ausgestaltung der Erfindung wird nach dem Programmierprozess ein Initialisierungsprozess (Bootprozess) des SoC durchgeführt. Der Programmierprozess wird dabei insbesondere zu einem ersten Zeitpunkt durchgeführt und der Initialisierungsprozess zu einem späteren zweiten Zeitpunkt. Der Initialisierungsprozess findet insbesondere während des regulären Betriebs des SoC statt. Das SoC wird im Zuge dieses Initialisierungsprozesses insbesondere initialisiert bzw. hochgefahren ("gebootet").
-
Gemäß einer bevorzugten Ausgestaltung der Erfindung wird im Zuge des Initialisierungsprozesses die entsprechende Signatur des Sicherheitsmoduls mittels des dritten öffentlichen Schlüssels überprüft. Wird die Echtheit bzw. Authentizität des Sicherheitsmoduls mittels des dritten öffentlichen Schlüssels verifiziert, wird das Sicherheitsmodul in die hardware-programmierbare Logikeinheit geladen. Mittels des Sicherheitsmoduls wird der private PUF-Schlüssel rekonstruiert. Das SoC kann nun in einem regulären Betriebsmodus betrieben werden. Das für das SoC eindeutige PUF-Schlüsselpaar kann nun zur Verschlüsselung, Signatur, Erzeugung und Verifikation von Datenströmen im regulären Betrieb des SoC verwendet werden. Weiterhin kann das Sicherheitsmodul insbesondere als sogenannter Root of Trust verwendet werden.
-
Weiterhin kann die hardware-programmierbaren Logikeinheit in dem regulären Betriebsmodus (zumindest teilweise) neu konfiguriert werden. Nachdem das SoC initialisiert bzw. hochgefahren ist und der private PUF-Schlüssel rekonstruiert ist, kann die hardware-programmierbare Logikeinheit für den regulären Betrieb des SoC genutzt werden. Teilbereiche der hardware-programmierbaren Logikeinheit, welche speziell für den Initialisierungsprozess konfiguriert werden, können anschließend auch für den regulären Betrieb des SoC entsprechend umkonfiguriert werden. Insbesondere wird die Physical Unclonable Function, weiter insbesondere die Enrollment-Firmware, im Zuge des regulären Betriebs des SoC nicht mehr benötigt. Entsprechende Teilbereiche der hardware-programmierbaren Logikeinheit, in welchen die Enrollment-Firmware ausgeführt wird, werden somit nach dem Initialisierungsprozess neu konfiguriert. Somit wird vermieden, dass bestimmte Ressourcen des SoC ausschließlich für den Initialisierungsprozess genutzt werden können und für den regulären Betrieb nicht zur Verfügung stehen.
-
Das Erstellen des PUF-Schlüsselpaares im Zuge des Programmierprozesses und das Hochfahren des SoC im Zuge des Initialisierungsprozesses stellen eine einfache Möglichkeit zur Absicherung eines SoC dar. Durch die Kombination des Programmierprozesses und des Initialisierungsprozesses kann eine besonders effiziente Absicherung des SoC durchgeführt werden. Insbesondere kann somit die Firmware (aus hardware-konfigurierbarer Logikeinheit und Prozessoreinheit) gegen schädliche Angriffe abgesichert werden. Insbesondere kann das SoC somit gegen Manipulation, Nachkonstruktion und nicht lizensierte Vervielfältigung geschützt werden.
-
Sowohl während des Programmierprozesses als auch während des Initialisierungsprozesses verlässt der private PUF-Schlüssel die hardware-programmierbare Logikeinheit nicht. Der private PUF-Schlüssel bleibt somit stets in der hardware-programmierbaren Logikeinheit gespeichert. Somit kann ein Angriff bzw. ein Auslesen des privaten PUF-Schlüssels ausgeschlossen werden.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs, ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Auch die Implementierung des Verfahrens in Form von Software ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere Disketten, Festplatten, Flash-Speicher, EEPROMs, CD-ROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Es versteht sich, dass die vorstehend genannten und die nachfolgend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung ausführlich beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
1 zeigt schematisch ein System-on-a-Chip, welches dazu eingerichtet ist, eine bevorzugte Ausführungsform eines erfindungsgemäßen Verfahrens durchzuführen.
-
2 zeigt schematisch einen Programmierprozess, der im Zuge einer bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens durchgeführt werden kann, als ein Blockdiagramm.
-
3 zeigt schematisch einen Initialisierungsprozess, der im Zuge einer bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens durchgeführt werden kann, als ein Blockdiagramm.
-
4 zeigt schematisch einen Konfigurationsprozess, der im Zuge einer bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens durchgeführt werden kann, als ein Blockdiagramm.
-
5 zeigt schematisch einen Aktualisierungsprozess, der im Zuge einer bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens durchgeführt werden kann, als ein Blockdiagramm.
-
Ausführungsform(en) der Erfindung
-
Die 1 bis 5 werden im Folgenden zusammenhängend beschrieben.
-
In 1 ist ein System-on-a-Chip (SoC) 100 schematisch dargestellt, welches dazu eingerichtet ist, eine bevorzugte Ausführungsform eines erfindungsgemäßen Verfahrens durchzuführen.
-
Ein Programmierprozess gemäß dieser bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens ist in 2 in Form eines Blockdiagramms 200 dargestellt.
-
Das SoC 100 umfasst eine hardware-programmierbare Logikeinheit 110 in Form eines Field Programmable Gate Arrays FPGA, eine Prozessoreinheit 130 und einen externen Speicher 120 bzw. eine Speichereinheit 120, insbesondere in Form eines Flash-Speichers.
-
In einem ersten Schritt 201 wird eine sogenannte Enrollment-Firmware in das FPGA 110 geladen. Eine Hardware des FPGA 110 wird dabei entsprechend konfiguriert. Diese Enrollment-Firmware enthält eine Physical Unclonable Function Einheit (PUF-Einheit) 111, eine Hilfsdatengenerator 112, einen privaten Schlüsselgenerator 113 und einen öffentlichen Schlüsselgenerator 114. Die PUF-Einheit 111 ist dazu eingerichtet, eine Physical Unclonable Function (PUF) durchzuführen.
-
In einem Schritt 202 erzeugt der Hilfsdatengenerator 112 Hilfsdaten, welche zur Ausführung der Physical Unclonable Function durch die PUF-Einheit 111 benötigt werden. Mittels dieser Hilfsdaten kann insbesondere eine Fehlerkorrektur durchgeführt werden. Mittels einer derartigen Fehlerkorrektur kann ein Fehler der PUF-Schlüssel durch unterschiedliche Temperatur- und Spannungsschwankungen ausgeglichen werden.
-
In Schritt 203 erzeugt der private Schlüsselgenerator 113 einen privaten PUF-Schlüssel mittels der Hilfsdaten und der ausgeführten Physical Unclonable Function durch die PUF-Einheit 111. Mittels dieses privaten PUF-Schlüssels erzeugt der öffentliche Schlüsselgenerator 114 einen öffentlichen PUF-Schlüssel.
-
In Schritt 204 übermittelt die Enrollment-Firmware den öffentlichen PUF-Schlüssel und die Hilfsdaten an eine externe Recheneinheit 150, die sogenannte Produktionsrecheneinheit (Enrollement Workstation). In Schritt 205 werden die Hilfsdaten und der öffentliche PUF-Schlüssel in dieser Produktionsrecheneinheit 150 mittels eines zweiten privaten Schlüssels signiert.
-
Dieser zweite private Schlüssel bildet zusammen mit einem zweiten öffentlichen Schlüssel ein zweites Schlüsselpaar. Insbesondere wird ein privater bzw. öffentlicher Schlüssel eines Systemanbieters als zweiter privater bzw. zweiter öffentlicher Schlüssel verwendet. Ein derartiges Schlüsselpaar des Systemanbieters ("system developer key") wird von dem Systemanbieter bzw. Produkthersteller erzeugt. Insbesondere wurde dieses Schlüsselpaar des Systemanbieters im Zuge eines Herstellungsprozesses des SoC 100 erzeugt.
-
Die Hilfsdaten und deren Signatur sowie der öffentliche PUF-Schlüssel und dessen Signatur werden in Schritt 206 von der Produktionsrecheneinheit 150 in den Flash-Speicher 120 des SoC 100 geschrieben.
-
In einem Schritt 207 wird ein Sicherheitsmodul in der Produktionsrecheneinheit 150 mittels eines dritten privaten Schlüssels signiert. Insbesondere umfasst dieses Sicherheitsmodul die Software, welche zur Verschlüsselung des SoC 100 verwendet wird, insbesondere die Physical Unclonable Function und zweckmäßige Methoden zur Überprüfung bzw. Verifikation der einzelnen Signaturen. Das Sicherheitsmodul und dessen Signatur werden in Schritt 208 von der Produktionsrecheneinheit 150 in den Flash-Speicher 120 des SoC 100 geschrieben.
-
Dieser dritte private Schlüssel bildet zusammen mit einem dritten öffentlichen Schlüssel ein drittes Schlüsselpaar. Insbesondere wird ein für das SoC spezifischer privater bzw. öffentlicher Boot-Schlüssel ("SoC specific secure boot key") als dritter privater bzw. dritter öffentlicher Schlüssel verwendet. Derartige Boot-Schlüssel werden für einen Initialisierungsprozess bzw. ein Hochfahren ("booten") des SoC erzeugt. Der dritte öffentliche Schlüssel wird insbesondere in einem nichtflüchtigen und nicht manipulierbaren Speicherbereich des SoC ("Fuses") im Programmierprozess programmiert.
-
Der Programmierprozess des SoC wird in einem sicheren Umfeld durchgeführt. Dabei haben nur autorisierte Mitarbeiter Zugang zu der Produktionsrecheneinheit 150. Die Produktionsrecheneinheit 150 ist dabei nur mit einem abgesicherten Netzwerk verbunden. Weiterhin verlässt der private PUF-Schlüssel den FPGA 110 nicht. Nachdem der öffentliche PUF-Schlüssel und dessen Signatur sowie das Sicherheitsmodul und dessen Signatur in den Flash-Speicher 120 des SoC 100 geladen wurden, kann das SoC 100 außerhalb eines derartigen sicheren Umfelds betrieben werden.
-
Dabei wird das SoC zunächst in einem Initialisierungsprozess initialisiert bzw. hochgefahren. Dieser Initialisierungsprozess gemäß dieser bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens ist in 3 in Form eines Blockdiagramms 300 dargestellt.
-
In einem Schritt 301 lädt ein sogenannter ROM-Bootloader 131, welcher insbesondere in der Prozessoreinheit 130 ausgeführt wird, das Sicherheitsmodul und dessen Signatur aus dem Flash-Speicher 120 in den FPGA 110.
-
In Schritt 302 lädt der ROM-Bootloader 131 den öffentlichen Boot-Schlüssel aus einem sicheren Speicherteil (fuse, fuse-bit) des Flash-Speichers 120. Gegebenenfalls kann auch nur eine zugehörige Hashfunktion durch den ROM-Bootloader 131 geladen und ausgeführt werden und mit entsprechenden Werten in dem sicheren Speicherteil des Speichers 120 verglichen werden, um den öffentlichen Boot-Schlüssel zu rekonstruieren. Sollte die Ausführung der Hashfunktion zu Werten führen, welche sich von den entsprechenden Werten in dem sicheren Speicherteil des Flash-Speichers 120 unterscheiden, kann das SoC in einen ausfallsicheren Zustand überführt werden.
-
In Schritt 303 wird die geladene Signatur des Sicherheitsmoduls mittels des öffentlichen Boot-Schlüssels überprüft. Wird dabei ermittelt, dass die Signatur nicht korrekt ist und kann somit die Signatur nicht als echt verifiziert werden, wird das SoC in Schritt 303a in einen ausfallsicheren Zustand überführt.
-
Wird hingegen die Echtheit der Signatur verifiziert, wird in Schritt 304 das Sicherheitsmodul aus dem Flashspeicher 120 in den FPGA 110 des SoC 100 geladen. Des Weiteren werden die Hilfsdaten und deren Signatur aus dem Flash-Speicher 120 in den FPGA 110 des SoC 100 geladen. Eine Hardware des FPGA 110 wird dabei entsprechend konfiguriert.
-
In Schritt 305 rekonstruiert das Sicherheitsmodul, insbesondere mittels der Physical Unclonable Function, die von der PUF-Einheit 111 ausgeführt wird, mittels der Hilfsdaten den privaten PUF-Schlüssel. In Schritt 306 werden der rekonstruierte private PUF-Schlüssel sowie der öffentliche PUF-Schlüssel in dem FPGA 110 gespeichert. Auch in dem Initialisierungsprozess verlässt der private PUF-Schlüssel somit den FPGA 110 nicht.
-
Mit dem rekonstruierten privaten PUF-Schlüssel bzw. dem in dem FPGA 110 gespeicherten PUF-Schlüsselpaar kann nun ein Konfigurationsprozess des SoC durchgeführt werden. Ein derartiger Konfigurationsprozess gemäß einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens ist in 4 in Form eines Blockdiagramms 400 dargestellt. Der Konfigurationsprozess kann insbesondere im Zuge des Initialisierungsprozesses durchgeführt werden.
-
Im Zuge des Konfigurationsprozess werden spezielle Hardwarekonfigurationen bzw. IP-Cores geladen Diese Hardwarekonfigurationen bzw. IP-Cores geben insbesondere spezielle Konfigurationen an, nach welchen das FPGA 110 (insbesondere für den regulären Betrieb des SoC 100) konfiguriert wird. IP-Cores stellen im übertragenen Sinne Baupläne dar, nach welchen der FPGA 110 konfiguriert wird.
-
In einem Schritt 401 wird ein derartiger verschlüsselter IP-Core zusammen mit einer entsprechenden Signatur von dem Sicherheitsmodul aus dem Flash-Speicher 120 geladen. IP-Cores wurden (insbesondere im Zuge eines Herstellungsprozesses des SoC 100) mit einem speziellen Schlüssel, einem Lagerungsschlüssel ("storage key") verschlüsselt. Des Weiteren wird mittels dieses Lagerungsschlüssels die entsprechende Signatur erzeugt. Dieser Lagerungsschlüssel wird insbesondere mit dem öffentlichen PUF-Schlüssel verschlüsselt.
-
In Schritt 402 wird die Signatur des IP-Cores überprüft. Insbesondere wird die Signatur dabei auf Modifikationen überprüft. Wird ermittelt, dass die Signatur nicht korrekt ist und kann somit die Signatur nicht als echt verifiziert werden, wird das SoC in Schritt 402a in einen ausfallssicheren Zustand überführt.
-
Wird die Echtheit der Signatur verifiziert, wird in Schritt 403 der Lagerungsschlüssel mittels des privaten PUF-Schlüssels entschlüsselt. In Schritt 404 wird mittels des entschlüsselten Lagerungsschlüssels der IP-Core entschlüsselt. In Schritt 405 wird der FPGA 110 des SoC 100 gemäß dem entschlüsselten IP-Core konfiguriert.
-
Derartige Hardwarekonfigurationen bzw. IP-Cores können im Zuge des regulären Betriebs des SoC auch von einem Server in das SoC geladen werden. Ein derartiger Server ist insbesondere ein Server des Herstellers des SoC. Dies kann insbesondere im Zuge eines Aktualisierungsprozesses durchgeführt werden. Ein derartiger Aktualisierungsprozesses gemäß einer bevorzugten Ausführungsform des erfindungsgemäßen Verfahrens ist in 5 in Form eines Blockdiagramms 500 dargestellt.
-
Dabei wird in Schritt 501 der öffentliche PUF-Schlüssel von dem SoC 100 an den Server des Herstellers übermittelt. Im Zuge dessen wird insbesondere ebenfalls eine Signatur des Herstellers von dem SoC an den Server des Herstellers übermittelt. In Schritt 502 wird diese Signatur in dem Server des Herstellers überprüft.
-
Daraufhin wird in Schritt 503 in dem Server des Herstellers ein Transportschlüssel erstellt und mit dem öffentlichen PUF-Schlüssel verschlüsselt. Dieser verschlüsselte Transportschlüssel wird in Schritt 504 von dem Server des Herstellers an das SoC übermittelt. Somit ist eine sichere Kommunikation zwischen SoC und dem Server des Herstellers etabliert.
-
In Schritt 505 übermittelt der Server des Herstellers eine neue Hardwarekonfiguration bzw. einen neuen IP-Core, welche bzw. welcher mittels des Transportschlüssels verschlüsselt wurde.
-
In Schritt 506 wird diese verschlüsselte Hardwarekonfiguration mittels des Transportschlüssels ins der SoC entschlüsselt und anschließend mittels des Lagerungsschlüssels wieder verschlüsselt. Des Weiteren wird diese erneut verschlüsselte Hardwarekonfiguration mittels des privaten PUF-Schlüssels signiert und in dem Flash-Speicher 110 des SoC 100 gespeichert.
-
Die Erfindung eignet sich beispielsweise für SoCs, welche Teil eines Mikrocontrollers bzw. eines Steuergeräts zur Steuerung von Maschinen, Anlagen oder in der Unterhaltungselektronik, z.B. in Mobiltelefonen oder Fernsehgeräten, ausgebildet sind. Die Erfindung eignet sich besonders für die Nutzung in automotiven Anwendungen, insbesondere für Kraft- bzw. Nutzfahrzeuge. Das SoC kann dabei beispielsweise als ein Teil eines Motorsteuergeräts einer Brennkraftmaschine eines Kraftfahrzeugs ausgebildet sein. Beispielsweise besteht die Aufgabe eines derartigen Motorsteuergeräts darin, Ausgangsgrößen für Stellglieder (wie Einspritzdüse oder Zündanlage) aus einer Vielzahl von Eingangssignalen (wie z.B. Drehzahl, Temperatur oder Druck) zu berechnen.
-
In derartigen Steuergeräten, beispielsweise in einem Kraftfahrzeug, kommuniziert das SoC mit anderen Komponenten des Steuergeräts oder mit anderen Steuergeräten des Kraftfahrzeugs. Die Daten, die zwischen diesen einzelnen Komponenten des Steuergeräts ausgetauscht werden, können beispielsweise spezielle Ansteuerungsbefehle, technische Daten, Steuer- oder Kennwerte umfassen. Diese Befehle bzw. Werte wurden von dem Hersteller oft in jahrelangen Entwicklungsprozessen mit hohem Forschungsaufwand durch lang andauernde und aufwendige Testreihen ermittelt und optimiert. Es ist somit im Sinne des Herstellers, dass diese Daten nicht von einer dritten Partei, einem Angreifer, ausgelesen werden können, um einen "Know-How-Schutz" zu garantieren.
-
Die Erfindung stellt dabei eine besonders einfache und effiziente Möglichkeit bereit, um ein SoC eines Steuergerätes in einem Kraftfahrzeug abzusichern. Durch die Erfindung können somit Angreife an ein derartiges Steuergerät verhindert werden und ein "Know-How-Schutz" garantiert werden. Des Weiteren kann durch die erfindungsgemäße Absicherung des SoC beispielsweise unseriöses "Chiptuning" in Kraftfahrzeugen unterbunden werden. Für das "Chiptuning" werden Steuerparameter des Steuergeräts verändert, um Leistungssteigerungen herbeizuführen. Dies kann zu Bauteilschäden und Umweltverschmutzung führen, sogar zu Personenschäden, da die gesamte Fahrzeugauslegung (Antrieb, Bremsanlage) beeinträchtigt werden kann.