-
TECHNISCHER BEREICH
-
Diese Offenbarung bezieht sich auf sichere Informationsverarbeitung.
-
HINTERGRUND
-
Beim Entwurf von Produkten mit Mikrokontrollersystemen kann es wünschenswert sein, den Programmcode direkt in einen sicheren Speicher einzuprogrammieren, so dass ein Kunde den Code ausführen kann, ihn aber nicht kopieren oder modifizieren kann. Zusätzlich kann es wünschenswert sein, eine Anwendung in sichere und nicht sichere Domänen aufzuteilen, wobei die sichere Domäne die Verarbeitung von kritischen Informationen (z. B. kryptografischen Schlüsseln) durch einen in dem sicheren Speicher gespeicherten Code mit vollständigem Systemzugriff ermöglicht, wohingegen die nicht sichere Domäne keinen Zugriff auf den sicheren Speicher hat. Eine derartige Architektur mit aufgeteilten Domänen verbessert die Sicherheit, in dem verhindert wird, dass Softwarefehler Informationen aus der sicheren Domäne zufällig in die nicht sichere Domäne gelangen lassen. Mikrokontrollersysteme mit einer aufgeteilten Domänenarchitektur sind für eine einzelne Zentralverarbeitungseinheit (CPU) ausgelegt, die dazu ausgelegt ist, in sicheren und nicht sicheren Betriebsarten zu arbeiten, um einen sicheren Übergang zwischen einem sicheren Betrieb und einem nicht sicheren Betrieb sicherzustellen.
-
ZUSAMMENFASSUNG
-
Es werden Systeme, Verfahren und computerlesbare Medien offenbart, die einen sicheren Zugriff in einem Mikrokontrollersystem zur Verfügung stellen. In manchen Implementierungen umfasst ein Mikrokontrollersystem einen Systembus und eine sichere Zentralverarbeitungsarbeit (CPU), die mit dem Systembus gekoppelt ist. Die sichere CPU ist dazu konfiguriert, einen sicheren Zugriff auf den Systembus zur Verfügung zu stellen. Eine nicht sichere CPU ist ebenfalls mit dem Systembus gekoppelt und ist dazu konfiguriert, einen nicht sicheren Zugriff auf den Systembus zur Verfügung zu stellen. Ein nicht sicherer Speicher ist mit dem Systembus gekoppelt und dazu konfiguriert, es der sicheren CPU und der nicht sicheren CPU zu ermöglichen, Daten auszutauschen und miteinander zu kommunizieren. Eine Peripheriezugriffssteuereinheit (Peripheral Access Controller, PAC) ist mit dem Systembus gekoppelt und dazu konfiguriert, einen sicheren Zugriff auf ein Peripheriegerät durch die sichere CPU zu ermöglichen, während ein nicht sicherer Zugriff auf das Peripheriegerät auf Basis eines nicht sicheren Zustands der nicht sicheren CPU verhindert wird.
-
In manchen Implementierungen umfasst ein Verfahren die folgenden Schritte: Detektieren, durch ein Mikrokontrollersystem, eines Systemereignisses; und als Reaktion auf das Systemereignis: Konfigurieren einer ersten CPU des Mikrokontrollersystems, so dass diese in einer sicheren Betriebsart arbeitet, wobei die sichere Betriebsart sichere Zugriffe auf einen Systembus des Mikrokontrollersystems und die Ausführung von sicheren Codes auf der ersten CPU ermöglicht; Konfigurieren einer zweiten CPU, so dass diese in einer nicht sicheren Betriebsart arbeitet, wobei die nicht sichere Betriebsart nicht sichere Zugriffe auf den Systembus und die Ausführung nicht sicheren Codes auf der zweiten CPU ermöglicht; Konfigurieren der ersten CPU und der zweiten CPU, so dass diese Daten austauschen und miteinander unter Verwendung eines nicht sicheren gemeinsamen Speichers kommunizieren; und Konfigurieren einer Peripheriezugriffssteuereinheit (PAC), die mit dem Systembus gekoppelt ist, so dass eine sichere Kommunikation zwischen dem PAC und einem mit dem PAC gekoppelten Peripheriegerät ermöglicht wird.
-
In manchen Implementierungen hat ein nicht-transitorisches, computerlesbares Speichermedium Anweisungen darauf gespeichert, die, wenn diese durch zwei oder mehrere Zentralverarbeitungseinheiten eines Mikrokontrollersystems ausgeführt werden, die zwei oder mehreren Zentralverarbeitungseinheiten des Mikrokontrollersystems dazu veranlassen, Operationen auszuführen, die umfassen: Detektieren eines Systemereignisses; und als Reaktion auf das Systemereignis: Konfigurieren einer ersten CPU, so dass diese in einer sicheren Betriebsart arbeitet, wobei die sichere Betriebsart einen sicheren Zugriff auf einen Systembus des Mikrokontrollersystems und die Ausführung von sicherem Code auf der ersten CPU ermöglicht; Konfigurieren einer zweiten CPU, so dass diese in einer nicht sicheren Betriebsart arbeitet, wobei die nicht sichere Betriebsart einen nicht sicheren Zugriff auf den Systembus und die Ausführung von nicht sicherem Code auf der zweiten CPU ermöglicht; Konfigurieren der ersten CPU und der zweiten CPU, so dass diese Daten austauschen und miteinander unter Verwendung eines nicht sicheren gemeinsamen Speichers kommunizieren; und Konfigurieren einer Peripheriezugriffssteuereinheit (PAC), die mit dem Systembus gekoppelt ist, wobei der PAC eine sichere Kommunikation zwischen dem PAC und einem mit dem PAC gekoppelten Peripheriegerät ermöglicht.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein konzeptionelles Blockdiagramm eines Mikrokontrollersystems mit einer sicheren Informationsverarbeitungserweiterung, gemäß bestimmter Implementierungen.
-
2 ist ein Flussdiagramm eines Beispielprozesses, der durch ein Mikrokontrollersystem mit einer sicheren Informationsverarbeitungserweiterung ausgeführt wird, gemäß bestimmter Implementierungen.
-
DETAILLIERTE BESCHREIBUNG
-
Beispielhafte Systemarchitektur
-
1 ist ein konzeptionelles Blockdiagramm eines Mikrokontrollersystems 100 mit einer sicheren Informationsverarbeitungserweiterung, gemäß bestimmter Implementierungen. Das Mikrokontrollersystem 100 kann ein Debug Master-Modul 101, eine Zentralverarbeitungseinheit (CPU) 102, eine CPU 103, eine Direktspeicherzugriffssteuereinheit (DMA) 104, einen Speicher 106 (z. B. Flash), 107 (z. B. RAM), eine Slave-Steuereinheit 108, Brücken 109, 113, Slave-Module 110, 111 und eine Peripheriezugriffssteuereinheit (PAC) 114 enthalten. Die Master- und Slave-Module 110, 111, 112 und der PAC 114 sind direkt oder indirekt (z. B. über die Brücken 109, 113) mit dem Systembus 115 (z. B. eine Busmatrix) gekoppelt. Der Systembus ist dazu konfigurierbar, sichere Zugriffsanforderungen von der sicheren CPU 102 weiterzuleiten. In manchen Implementierungen können die sicheren Zugriffsanforderungen mit einem Signal assoziiert sein, das angibt, dass die Anforderung durch die sichere CPU 102 initiiert wurde. In manchen Implementierungen ist das Slave-Modul 110 ein kryptografisches Slave-Modul zur Implementierung einer Integritätsüberprüfungsüberwachung (Integrity Check Monitor, ICM), das in der Lage ist, einen kryptografischen Hash-Algorithmus auszuführen, und das Slave-Modul 111 ist ein kryptografisches Slave-Modul zur Implementierung eines AES (Advanced Encryption Standard) Algorithmus. In manchen Implementierungen empfangen die Slave-Module 110, 111 sichere Signale 122a, 122b von dem PAC 114. Wenn die sicheren Signale 122a, 122b high (oder low) sind, sind nur sichere Buszugriffe gestattet. In manchen Implementierungen können die Slave-Module 110, 111 Softwarewrapperschichten für den Empfang von sicheren Signalen 122a, 122b enthalten. Das Mikrokontrollersystem 100 kann andere Mastermodule 105 und andere Slave-Module 112 zusätzlich zu oder anstelle der in 1 dargestellten Master- und Slave-Module enthalten. Andere Slave-Module 112 können, wenn sie als sichere Slave-Module konfiguriert sind, dazu konfiguriert sein, sichere Signale von dem PAC 114 zu empfangen, um ausschließlich sichere Buszugriffe zu ermöglichen.
-
Als Hilfestellung für den Leser enthält 1 eine Legende, die Schraffurmuster mit sicherem (schräg vorwärts schraffiert) und optional sicheren (schräg rückwärts schraffiert) Master- und Slave-Modulen in dem Mikrokontrollersystem 100 verknüpft. Die Legende zeigt auch, dass kreuzweise schraffierte Blöcke Sicherungen 119a bis 119d (z. B. schreibgeschützte Pseudosicherungen) angeben. In manchen Implementierungen können die Sicherungen 119a bis 119d echte Sicherungen sein, die im Speicher (z. B. Speicher 106) beim System-Reset abgefragt werden, oder Pseudosicherungen, die von einem Speicher (z. B. einem nicht flüchtigen Speicher) ausgelesen werden und beim System-Reset in einer Speichersteuereinheit (nicht dargestellt) aufgefangen werden. Das Mikrokontrollersystem 100 kann um zusätzliche CPUs erweitert werden, wobei jede zusätzliche CPU als sichere oder als nicht sichere CPU konfiguriert werden kann, und jede sichere CPU kann die gleichen sicheren Speicherressourcen mitverwenden.
-
Als Reaktion auf ein Systemereignis (z. B. einem System-Reset) kann die CPU 102 als eine sichere CPU und die CPU 103 als eine nicht sichere CPU konfiguriert werden. Die sichere CPU 102 führt einen sicheren Code aus und stellt einen sicheren Zugriff auf den Systembus 115 zur Verfügung, wohingegen die nicht sichere CPU 103 einen nicht sicheren Code ausführt und einen nicht sicheren Zugriff auf den Systembus 115 zur Verfügung stellt. Die Sicherheitskonfiguration kann statisch (z. B. hartverdrahtet) oder über Pseudosicherungen 119a (FV; FlashVault Enable), 119b (FVDE, FlashVault Debug Enable), 119c (FVFLSZ; FlashVault Flash Size) und 119d (FVRAMSZ; FlashVault RAM Size) (z. B. schreibgeschützte Pseudosicherungen) sein. Die Pseudosicherungen können beim System-Reset geladen werden, um das Mikrokontrollersystem 100 zu konfigurieren, bevor ein Client-Anwendungscode ausgeführt wird.
-
Die oben stehend beschriebene Sicherheitskonfiguration ermöglicht es, dass sicherer Code auf der sicheren CPU 102 ausgeführt wird, wohingegen der Datenaustausch und die Kommunikation zwischen der sicheren CPU 102 und der nicht sicheren CPU 103 in nicht sicheren Teilen der Speicher 106, 107 stattfindet. In manchen Implementierungen kann die sichere CPU 102 sich selbst konfigurieren (z. B. mittels interner Steuerregister 116), um vorübergehend einen nicht sicheren Zugriff auf den Systembus 115 zur Verfügung zu stellen. Dies kann die Robustheit verbessern, wenn nicht sicherer und sicherer Code auf der gleichen CPU ausgeführt werden muss. Sichere Buszugriffe können gesperrt werden, bevor der nicht sichere Code ausgeführt wird, und dann wieder freigegeben werden, wenn weiterer sicherer Code ausgeführt wird. Dies verhindert, dass Softwarefehler in dem nicht sicheren Code versehentlich Daten aus dem sicheren Speicher lesen.
-
Die Slave-Module 110, 111, 112 (z. B. Peripheriegeräte) in dem Mikrokontrollersystem 100 können durch die sichere CPU 102 oder die nicht sichere CPU 103 angesprochen werden. Wenn die sichere Software von sicheren Interaktionen mit einem Peripheriegerät (z. B. den Kryptografischen Modulen 110, 111) abhängt, dann sollte der Zugriff auf das Peripheriegerät auf sichere Zugriffe beschränkt sein. In manchen Implementierungen können sichere Zugriffe in dem Mikrokontrollersystem 100 durch den PAC 114 zentralisiert werden, der dazu konfiguriert werden kann, ein oder mehrere Signale an jedes Slave-Modul oder Peripheriegerät des Systems 100 zu verteilen, um jedes Slave-Modul oder Peripheriegerät anzuweisen, nur sichere Zugriffe zu akzeptieren, die durch die sichere CPU 102 geliefert werden. Das eine oder die mehreren Signale können durch ein oder mehrere Bits geschaltet werden, die in das Steuerregister 117 in dem PAC 114 geschrieben werden. Das Steuerregister 117 kann durch einen sicheren Zugriff, der durch die sichere CPU 102 geliefert wird, geschrieben werden. Das Steuerregister 117 ermöglicht es der sicheren CPU 102, einen sicheren Zugriff auf kritische Peripheriegeräte solange wie erforderlich freizuschalten, und sichere Zugriffe zu sperren, wenn die sichere Operation abgeschlossen ist, so dass das Peripheriegerät durch die nicht sichere CPU 103 gesteuert werden kann.
-
In manchen Implementierungen kann die sichere CPU 102 gesichert werden, in dem die Sicherung FV gesetzt wird. Die sichere CPU 102 kann optional den sicheren Buszugriff abschalten, in dem ein oder mehrere Bits in dem Steuerregister 116 gesetzt werden, welches extern oder intern bezüglich der sicheren CPU 102 sein kann (in 1 als intern bezüglich der sicheren CPU 102 dargestellt). Die sichere CPU 102 kann durch Busabbildungssteuerregister (nicht dargestellt) gesteuert und debugged werden. Wenn FV gesetzt ist, können die Busabbildungssteuerregister durch einen sicheren Zugriff modifiziert werden, der durch die sichere CPU 102 zur Verfügung gestellt wird. In manchen Implementierungen kann die sichere CPU 102 von einem Boot-Code 118 booten, der in einem sicheren Teil des nicht flüchtigen (NV) Speichers 106 (z. B. Flash-Speicher) gespeichert ist. Die oberen Teile des NVM 106 und der flüchtige Speicher 107 (z. B. RAM) können für sichere Operationen reserviert werden. Diese sicheren Teile des Speichers können durch entsprechende Sicherungen FVFLSZ (NVM 106) und FVRAMSZ (RAM 107) eingestellt werden. Die NVM und RAM Steuereinheiten (z. B. DMA 104) stellen einen sicheren Zugriff auf die sicheren Speicherregionen sowie sichere oder nicht sichere Zugriffe auf nicht sichere Speicherregionen zur Verfügung.
-
In manchen Implementierungen enthält der PAC 114 ein Steuerregister 117, in dem ein Benutzer ein Peripheriegerätkennzeichen schreiben kann, das angibt, welches Peripheriegerät für einen Zugriff verwendet werden soll, und einen KEY-Wert, um einen sicheren Zugriff auf das Peripheriegerät freizuschalten oder zu sperren. Der KEY-Wert kann durch die sichere CPU 102 in Form einer sicheren Schreiboperation geschrieben/programmiert werden. Das Steuerregister 117 kann auch dazu verwendet werden, um einen Schreibschutz für das Peripheriegerät unter Verwendung anderer KEY-Werte zu setzen, die durch einen nicht sicheren Zugriff in das Steuerregister 117 geschrieben werden können.
-
In manchen Implementierungen wird das Debug Master-Modul 101 durch einen externen Debugger (extern bezüglich des Mikrokontrollersystems 100) gesteuert und ermöglicht einen Zugriff auf interne Ressourcen für die Programmierung und Fehlersuche. Als Grundeinstellung kann das Debug Master-Modul 101 nicht sicher sein und nicht sichere Zugriffe auf nicht sicheren Speicher und Peripheriegeräte zur Verfügung stellen. Um bei der Entwicklung von sicherem Code zu helfen, kann das Debug Master-Modul 101 vorübergehend sicher gemacht werden, indem die FVDE Sicherung gesetzt wird. Wenn FVDE gesetzt ist, ist das Debug Master-Modul 101 sicher und kann auf alle Speicher und Peripheriegeräte in dem Mikrokontrollersystem 100 zugreifen, inklusive der Steuerregister in der sicheren CPU 102 und dem PAC 114. In manchen Implementierungen kann ein Benutzer die FVDE Sicherung löschen, bevor die Anwendung an den Endbenutzer übergeben wird, um sicherzustellen, dass der externe Debugger die sicheren Speicher in einer Kundenanwendung nicht auslesen kann. In dem dargestellten Beispiel ist SEC 120 eine Sicherheitssicherung, die jeglichen externen Debugger-Zugriff sperrt, wenn sie gesetzt ist. Die SEC 120 kann nur durch einen vollständigen Chip-Löschbefehl zurückgesetzt werden, der alle Speicherinhalte löscht. SWD 121 ist eine Serial Wire Debug-Schnittstelle zur Kommunikation mit dem externen Debugger über einen seriellen Bus.
-
Beispielprozess
-
2 ist ein Flussdiagramm eines Beispielprozesses 200, der durch ein Mikrokontrollersystem mit einer sicheren Informationsverarbeitungserweiterung ausgeführt wird, gemäß einer Implementierung. Der Prozess 200 kann z. B. in dem Mikrokontrollersystem 100 implementiert werden, das im Zusammenhang mit 1 beschrieben wurde.
-
In manchen Implementierungen kann der Prozess 200 damit beginnen, dass durch das Mikrokontrollersystem der Start einer System-Reset-Sequenz detektiert wird (202). Als Reaktion auf das Systemereignis kann der Prozess 200 dadurch fortgesetzt werden, dass eine erste CPU des Mikrokontrollersystems für einen Betrieb in der sicheren Betriebsart konfiguriert wird, welche sichere Zugriffe auf einen Systembus des Mikrokontrollersystems und die Ausführung von sicherem Code auf der ersten CPU ermöglicht (204). Das Systemereignis kann z. B. ein System-Reset sein und ein Sicherungsbit kann beim System-Reset gesetzt werden, das die erste CPU für den Betrieb in der sicheren Betriebsart konfiguriert.
-
Der Prozess 200 kann dadurch fortgesetzt werden, dass eine zweite CPU für einen Betrieb in der nicht sicheren Betriebsart konfiguriert wird, welche nicht sichere Zugriffe auf den Systembus und die Ausführungen von nicht sicherem Code auf der zweiten CPU ermöglicht (206).
-
Der Prozess 200 kann dadurch fortgesetzt werden, dass die erste CPU und die zweite CPU dazu konfiguriert werden, Daten auszutauschen und miteinander unter Verwendung eines nicht sicheren gemeinsamen Speichers zu kommunizieren (208). Der mit dem Systembus gekoppelte Speicher kann z. B. in sichere und nicht sichere Teile aufgeteilt werden, und die sichere CPU und die nicht sichere CPU können Daten austauschen und unter Verwendung des nicht sicheren Teils des gemeinsamen Speichers miteinander kommunizieren.
-
Der Prozess 200 kann dadurch fortgesetzt werden, dass eine Peripheriezugriffssteuereinheit PAC, die mit dem Systembus gekoppelt ist, dazu konfiguriert wird, eine sichere Kommunikation zwischen dem PAC und einem oder mehreren Peripheriegeräten zu ermöglichen, die mit dem PAC gekoppelt sind (210). Der PAC kann z. B. direkt oder indirekt (z. B. über die Brücke 113 in 1) mit dem Systembus gekoppelt sein und ein oder mehrere Signale an jedes Peripheriegerät verteilen, um das Peripheriegerät anzuweisen, nur sichere Zugriffe zuzulassen.
-
Wenn der Prozess 200 die System-Reset-Sequenz beendet (212), kann die CPU ihre erste Anweisung ausführen (214).
-
Obgleich dieses Dokument zahlreiche spezifische Implementierungseinzelheiten enthält, sollten diese nicht als Beschränkung des beanspruchten Schutzumfangs verstanden werden, sondern als Beschreibung von Merkmalen, die bestimmten Ausführungsformen zu eigen sein können. Bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit getrennten Ausführungsformen beschrieben wurden, können auch in Kombination miteinander in einer einzigen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben wurden, auch in mehreren Ausführungsformen getrennt voneinander oder in jeder geeigneten Unterkombination implementiert werden. Obwohl darüber hinaus Merkmale oben stehend als in bestimmten Kombinationen miteinander zusammenwirkend beschrieben wurden und sogar anfänglich derart beansprucht wurden, können in manchen Fällen ein oder mehrere Merkmale aus einer beanspruchten Kombination herausgelöst werden und die beanspruchte Kombination kann auf eine Unterkombination oder eine Variation einer Unterkombination gerichtet werden.