-
Technischer Bereich
-
Diese Offenbarung bezieht sich allgemein auf Sicherheitstechniken, insbesondere auf Nachrichtenauthentifizierung mit sicherer Codeverifikation.
-
Hintergrund
-
In einem Beispielszenario ist ein Verfahren zur Authentifizierung von Nachrichten zwischen Geräten implementiert. Ein Client-Gerät erzeugt einen Nachrichtenauthentifizierungscode (message authentication code, MAC), indem ein Hash-Algorithmus mit einem gemeinsamen geheimen Schlüssel, der in dem Client-Gerät gespeichert ist, auf eine Nachricht angewendet wird, und die Nachricht zusammen mit dem MAC an ein Host-Gerät übertragen wird. Der gemeinsame geheime Schlüssel ist auch in dem Host-Gerät gespeichert. Das Host-Gerät überprüft die Nachricht, indem ein MAC unter Verwendung der empfangenen Nachricht und des gespeicherten gemeinsamen Geheimnis erzeugt wird. Wenn der empfangene MAC und der erzeugte MAC gleich sind, wird die Nachricht authentifiziert. Ein Angreifer könnte jedoch das sichere Hochfahren (secure boot) des Client-Geräts vortäuschen und dennoch das Nachrichtenauthentifikationsverfahren verwenden, damit ein gefälschtes System ordnungsgemäß arbeitet, z. B. mit dem Host-Gerät kommuniziert, wodurch ein betrügerischer Betrieb verursacht werden kann.
-
Zusammenfassung
-
Diese Spezifikation beschreibt Systeme, Verfahren, Schaltungen und computerlesbare Medien zur Nachrichtenauthentifizierung mit sicherer Codeverifikation. In einem Aspekt enthält ein System ein Client-Gerät, das einen Code speichert, und ein Sicherheitsgerät, das mit dem Client-Gerät gekoppelt ist. Das Sicherheitsgerät ist dazu konfiguriert, eine Eigenschaft des Codes zu empfangen, die durch das Client-Gerät erzeugt wird, die Richtigkeit der Eigenschaft des Codes zu überprüfen auf Basis von Informationen, mit dem Code verknüpft sind, um festzustellen, dass der Code ein autorisierter Code ist, wobei die Informationen innerhalb des Sicherheitsgeräts gespeichert sind. Als Reaktion auf die Feststellung, dass es sich bei dem Code um den autorisierten Code handelt, ermöglicht das Sicherheitsgerät einen Zugriff auf die innerhalb des Sicherheitsgeräts gespeicherten Daten und erzeugt eine Eigenschaft einer Nachricht auf Basis der Daten.
-
Die Details von einer oder von mehreren der offenbarten Implementierungen werden in den beigefügten Zeichnungen und der unten stehenden Beschreibung erläutert. Andere Merkmale, Aspekte und Vorteile ergeben sich aus der Beschreibung, den Zeichnungen und den Ansprüchen.
-
Kurze Beschreibung der Zeichnungen
-
1 ist ein Diagramm einer Beispielumgebung gemäß einer beispielhaften Ausführungsform.
-
2 ist ein Diagramm eines Beispielsystems, das ein beispielhaftes Sicherheitsgerät und ein beispielhaftes Client-Gerät enthält, gemäß einer beispielhaften Ausführungsform.
-
3 ist ein Flussdiagramm eines Beispielprozesses, durch den ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät durchführt, gemäß einer beispielhaften Ausführungsform.
-
4 ist ein Flussdiagramm eines Beispielprozesses, durch den ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät durchführt, gemäß einer anderen beispielhaften Ausführungsform.
-
5 ist ein Flussdiagramm eines Beispielprozesses, durch den ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät durchführt, gemäß einer anderen beispielhaften Ausführungsform.
-
6 ist ein Flussdiagramm eines Beispielprozesses, durch den ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät durchführt, gemäß einer anderen beispielhaften Ausführungsform.
-
7A ist ein Flussdiagramm eines Beispielprozesses, durch den ein Sicherheitsgerät die Authentizität von Firmware verifiziert, gemäß einer beispielhaften Ausführungsform.
-
7B ist ein Flussdiagramm eines anderen Beispielprozesses, durch den ein Sicherheitsgerät Informationen eines Teils einer Firmware speichert, gemäß einer beispielhaften Ausführungsform.
-
8 ist ein Flussdiagramm eines Beispielprozesses, durch den ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Teilverifikation für einen innerhalb eines Client-Geräts gespeicherten Code durchführt, gemäß einer beispielhaften Ausführungsform.
-
9 ist ein Flussdiagramm eines Beispielprozesses, durch den ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Teilverifikation für einen innerhalb eines Client-Geräts gespeicherten Code durchführt, gemäß einer anderen beispielhaften Ausführungsform.
-
Detaillierte Beschreibung
-
Systemüberblick
-
1 ist ein Diagramm einer Beispielumgebung 100 gemäß einer Implementierung, Zu Darstellungszwecken enthält die Umgebung 100 ein System 116 (z. B. ein clientseitiges System), das ein Sicherheitsgerät 118 und ein Client-Gerät 120 enthält. Das Sicherheitsgerät 118 ist dazu konfiguriert, zu verifizieren (oder zu validieren), ob ein innerhalb des Client-Geräts 120 gespeicherter Code autorisiert (oder authentifiziert) ist. In manchen Beispielen enthält der Code einen Boot-Code für ein Client-Gerät 120 zum Booten (oder Hochfahren), eine Anwendungs-Firmware für das Client-Gerät 120 zur Ausführung der Anwendung, oder einen Betriebscode für das Client-Gerät 120 zur Ausführung eines entsprechenden Betriebs.
-
Bei der Codeverifikation führt das Sicherheitsgerät 118 eine Aktion aus. In einer Ausführungsform ermöglicht das Sicherheitsgerät 118, bei der Codeverifikation, die Durchführung einer Nachrichtenauthentifizierung für das Client-Gerät 120. Das Sicherheitsgerät 118 ermöglicht den Zugriff auf und die Verwendung von geheimen (oder privaten) Daten (z. B. Informationen oder Werten), die in dem Sicherheitsgerät für die Nachrichtenauthentifizierung gespeichert sind. In einer Ausführungsform ermöglicht das Sicherheitsgerät 118, bei der Codeverifikation, die Änderung des Zustands eines Anschlusses (Pins) des Sicherheitsgeräts 118. Der Anschluss kann eine Komponente in dem System 116 freischalten (oder angeben oder ermöglichen). In einer Ausführungsform ermöglicht das Sicherheitsgerät 118, bei der Codeverifikation, die Ausführung von nachfolgenden Operationen auf dem Sicherheitsgerät 118, die ohne die Codeverifikation nicht ermöglicht sein können. In einer Ausführungsform ermöglicht das Sicherheitsgerät 118, bei der Codeverifikation, den Zugriff auf oder die Verwendung von geheimen/privaten Informationen auf dem Sicherheitsgerät 118, z. B. das Lesen (oder Schreiben) eines Wertes. In einer Ausführungsform wird, bei der Codeverifikation, eine Berechnungseinheit freigeschaltet, z. B. durch das Sicherheitsgerät 118, damit dieses zur Verwendung zur Verfügung steht. In einer Ausführungsform wird, bei der Codeverifikation, ein I/O-Kanal auf dem System 116 zur Verwendung aktiviert, z. B. für eine anderweitige Verwendung. In einer Ausführungsform wird, bei der Codeverifikation, ein Timer zurückgesetzt, um es dem System 116 zu ermöglichen, viel länger zu laufen, als vorgesehen ist oder normal ist, bevor eine nächste Überprüfung stattfindet.
-
Das Sicherheitsgerät 118 ist mit dem Client-Gerät 120 über eine Verbindung 119 gekoppelt. In manchen Implementierungen liegen das Sicherheitsgerät 118 und das Client-Gerät 120 ganz dicht beieinander und die Verbindung 119 wird über ein Datenkabel (z. B. ein Glasfaserkabel oder ein elektrisch leitfähiges Kabel) oder drahtlos hergestellt. In manchen anderen Implementierungen sind das Sicherheitsgerät 118 und das Client-Gerät 120 physikalisch gekoppelt, und die Verbindung 119 ist eine Hardware-Schnittstelle, wie z. B. eine PCI-Schnittstelle auf einem Motherboard. In anderen Implementierungen, bei denen das Sicherheitsgerät 118 und das Client-Gerät 120 auf einer gemeinsamen Leiterplatte integriert sind, ist die Verbindung 119 ein Leiter. Das Sicherheitsgerät 118 und das Client-Gerät 120 können separate Chips darstellen und auf der gleichen Leiterplatte integriert sein.
-
In einer Ausführungsform, wie weiter unten im Detail diskutiert wird, ist das System 116 darüber hinaus dazu konfiguriert, mit einem oder mit mehreren entfernten Geräten oder Systemen (Host-Gerät 112, Berechnungsgeräte 106a, 106b, und/oder Servercomputersystem 108) über ein Netzwerk 102 zu kommunizieren. In einer Ausführungsform ist in der Tat vorgesehen, dass das System 116 ein Client des Netzwerks 102 ist, und das Sicherheitsgerät 118 und das Client-Gerät 120 sind deshalb „lokal” miteinander auf der Client-Seite gekoppelt. Das Host-Gerät 112, die Berechnungsgeräte 106a, 106b oder das Serverberechnungssystem 108 ist ein Host des Netzwerks 102, das entfernt mit dem System 116 auf der Hostseite gekoppelt ist. Das Netzwerk 102 kann ein externes Netzwerk für das System 116 sein, z. B. ein öffentliches Kommunikationsnetzwerk (z. B. das Internet, Mobilfunkdatennetzwerk, Einwählmodems über ein Telefonnetzwerk), ein WAN (wide area network), ein LAN (local area network), ein CAN (controlled area network), ein privates Kommunikationsnetzwerk (z. B. privates LAN, Standleitungen) oder beliebige geeignete Kombinationen derselben.
-
In manchen Implementierungen kommuniziert das Client-Gerät 120 mit den entfernten Geräten über das Sicherheitsgerät 118. Das Sicherheitsgerät 118 kann Nachrichten, die von dem Client-Gerät 120 übertragen werden, mit geheimen Daten (oder Schlüsseln) verschlüsseln und die verschlüsselten Nachrichten an die entfernten Geräte senden. Die entfernten Geräte validieren die verschlüsselten Nachrichten mit entsprechenden geheimen Daten oder Schlüsseln und stellen auf Basis des Validierungsergebnisses fest, ob die Nachrichten von dem Client-Gerät 120 authentifiziert sind oder nicht. In manchen anderen Implementierungen kommuniziert das Client-Gerät 120 direkt über das Netzwerk 102 mit den entfernten Geräten. Das Sicherheitsgerät 118 stellt sicher, dass das Client-Gerät 120 ein sicheres Hochfahren, Anwendungen oder Operationen ausführt.
-
In manchen Fällen ist das Client-Gerät 120 nicht gesichert oder es fehlt ihm an Sicherheit, z. B. aufgrund beschränkter Kosten. Ein Angreifer kann das Client-Gerät 120 angreifen, um z. B. die innerhalb des Client-Geräts 120 gespeicherten Codes für betrügerische Zwecke zu modifizieren, das Client-Gerät 120 zu fälschen, um mit den Host-seitigen Geräten zu kommunizieren, um das Verfahren der Codevalidierung zu ermitteln und betrügerischen Code zu erzeugen, oder um ein einfacheres Verfahren für einen Angriff auf das Client-Gerät 120 zu veröffentlichen. In manchen Implementierungen ist das Sicherheitsgerät 118 ein zuverlässiges oder abgesichertes Gerät, wie dies im Zusammenhang mit 2 diskutiert wird. Um diese Sicherheitsprobleme mit dem Sicherheitsgerät 118 zu adressieren, wird das Sicherheitsgerät 118 mit dem Client-Gerät 120 gekoppelt und dazu konfiguriert, zunächst zu überprüfen, ob Codes (z. B. eine Anwendungs-Firmware), die innerhalb des Client-Geräts gespeichert sind, autorisierte Codes sind. Die Codeverifikation kann durchgeführt werden, wie dies in den US-Patentanmeldungen 15/044,693 und 151044,770 beschrieben wurde, die beide den Titel „CONTROLLED SECURE CODE AUTHENTICATION” tragen und am 16. Februar 2016 eingereicht wurden, deren Inhalt hiermit durch Bezugnahme in ihrer Gesamtheit mitaufgenommen wird.
-
Wenn durch das Sicherheitsgerät 118 festgestellt wurde, dass der Code ein unautorisierter Code ist, dann stellt das Sicherheitsgerät 118 fest, dass das Hochfahren oder die auf dem Client-Gerät 120 laufende Anwendung (oder Operation) nicht gesichert ist. Das Sicherheitsgerät 118 wird dann in einen abgesicherten Modus versetzt, der z. B. das Sicherheitsgerät 118 selbst darin hindert oder darin beschränkt, auf kritische Informationen zuzugreifen, wie z. B. auf geheime Daten oder kryptografische Schlüssel, die in einem sicheren Speicher gespeichert sind. Der sichere Speicher kann in dem Sicherheitsgerät 118 enthalten sein, oder mit dem Sicherheitsgerät 118 extern gekoppelt sein. Auf diese Weise können betrügerische Operationen minimiert oder eliminiert werden, und die Sicherheit des Client-Geräts 120 kann verbessert werden.
-
In manchen Implementierungen ermöglicht das Sicherheitsgerät 118 als Reaktion auf die Feststellung, dass der Code autorisiert ist, den Zugriff auf kritische Informationen, wie z. B. geheime Daten. Das Sicherheitsgerät 118 kann dann die geheimen Daten verwenden, um eine mit dem Client-Gerät 120 verknüpfte Nachricht zu schützen. In manchen Beispielen empfängt das Sicherheitsgerät 118 die Nachricht von dem Client-Gerät, die an ein entferntes Gerät gerichtet ist, z. B. an das Host-Gerät 112, die Berechnungsgeräte 106a, 106b, oder das Serverberechnungssystem 108. Das Sicherheitsgerät 118 führt die Nachrichtenauthentifizierung mit dem entfernten Gerät durch. Das Sicherheitsgerät 118 kann z. B. eine MAC unter Verwendung der Nachricht und der geheimen Daten erzeugen und die Nachricht mit der MAC an das entfernte Gerät übertragen. Das entfernte Gerät enthält ebenfalls geheime Daten entsprechend den in dem Sicherheitsgerät 118 gespeicherten geheimen Daten. Das entfernte Gerät überprüft die Nachricht, in dem eine MAC unter Verwendung der empfangenen Nachricht und der gespeicherten gemeinsamen geheimen Daten erzeugt wird. Wenn die empfangene MAC und die erzeugte MAC gleich sind oder zueinander passen, dann stellt das entfernte Gerät fest, dass die Nachricht authentifiziert ist und vertraut der Nachricht von dem Client-Gerät. Ansonsten stellt das entfernte Gerät fest, dass die Nachricht nicht authentifiziert ist und vertraut der Nachricht von dem Client-Gerät nicht.
-
In manchen Beispielen führt das Sicherheitsgerät 118 die Nachrichtenauthentifizierung mit dem Client-Gerät 120 durch, welches verwendet werden kann, um das Client-Gerät zu steuern, zu booten oder eine Anwendung auszuführen. In einer Ausführungsform führt das Sicherheitsgerät 118 die Nachrichtenauthentifizierung mit dem Client-Gerät 120 unter Verwendung eines symmetrischen Schemas oder Algorithmus durch. Das Sicherheitsgerät 118 kann einen Auszug des in dem Client-Gerät 120 gespeicherten Codes empfangen. Nach der Verifikation des Codes verwendet das Sicherheitsgerät 118 den Auszug des Codes (und/oder einer Nonce) als Nachricht, erzeugt einen MAC unter Verwendung der Nachricht und der geheimen Daten und überträgt den MAC an das Client-Gerät 120. Das Client-Gerät 120 erzeugt den MAC unter Verwendung des Auszugs des Codes und/oder der Nonce und der gleichen geheimen Daten, die in dem Client-Gerät 120 gespeichert sind. Wenn die beiden MACs zusammenpassen, führt das Client-Gerät 120 eine Anwendung aus, die den Code verwendet, oder fährt mit dem Hochfahren fort. Anderenfalls hält sich das Client-Gerät 120 selbst davon ab, die Anwendung auszuführen oder hochzufahren. Auf diese Weise wird die Funktion des Client-Geräts 120 durch das Ergebnis der Nachrichtenauthentifizierung gesteuert, welche wiederum durch das Ergebnis der Codeverifikation gesteuert wird. Andere symmetrische Schemata (oder Algorithmen) können ebenfalls für die Nachrichtenauthentifizierung verwendet werden.
-
In einer anderen Ausführungsform führt das Sicherheitsgerät 118 die Nachrichtenauthentifizierung mit dem Client-Gerät 120 unter Verwendung eines asymmetrischen Schemas oder Algorithmus durch. Das Client-Gerät 120 berechnet z. B. eine Signaturerzeugung und das Sicherheitsgerät 118 führt eine Signaturverifikationsoperation aus. Andere asymmetrische (oder differentielle) Schemata (oder Algorithmen) können ebenfalls für die Nachrichtenauthentifizierung verwendet werden.
-
In einem Beispiel enthält das Sicherheitsgerät 118 einen sicheren Speicher. Das Sicherheitsgerät 118 speichert in dem sicheren Speicher Informationen, die mit einem autorisierten Code für das Client-Gerät 120 verbunden sind. In manchen Implementierungen enthalten die Informationen ein vollständiges Abbild des autorisierten Codes, eine Signatur des autorisierten Codes, einen Auszug aus dem autorisierten Code, einen Nachrichtenauthentifizierungscode (MAC) des autorisierten Codes, oder anderer Eigenschaften des autorisierten Codes. In manchen Implementierungen enthalten die Informationen Eigenschaften einer Vielzahl von Optionen des autorisierten Codes, z. B. einen Auszug oder eine Signatur oder einen MAC für jeden Teil, oder einen Adressbereich für jeden Teil. In manchen Implementierungen enthalten die Informationen nicht das gesamte Abbild des autorisierten Codes, sondern nur den Auszug oder die Signaturen oder MACs von Teilen des autorisierten Codes und entsprechende Adressbereiche. In manchen Beispielen speichert das Sicherheitsgerät 118 kryptografische Schlüssel zur Verifizierung der Authentizität des in dem Client-Gerät 120 gespeicherten Codes.
-
Das Sicherheitsgerät 118 und das Client-Gerät 120 können Abbilder des jeweils autorisierten Codes von einer Quelle herunterladen und/oder aktualisieren. Diese Quelle kann eine sichere Quelle (z. B. eine sichere Hardware oder ein sicherer Server) oder eine nicht sichere Quelle sein. Das Sicherheitsgerät 118 kann eine Signatur oder einen MAC des gesamten Codeabbilds verifizieren, bevor das Herunterladen oder Aktualisieren der gespeicherten Informationen des Codeabbilds durchgeführt wird.
-
In manchen Implementierungen ist das Host-Gerät 112 ein Controller, der mit dem System 116 und einem oder mehreren Subsystemen kommuniziert. Jedes Subsystem enthält ein Client-Gerät und ein Sicherheitsgerät, das mit dem Client-Gerät gekoppelt ist. Das Sicherheitsgerät ist dazu konfiguriert, eine sichere Codeauthentifizierung und/oder Nachrichtenauthentifizierung für das Client-Gerät durchzuführen.
-
In manchen Implementierungen verwenden Benutzer 104a, 104b Berechnungsgeräte 106a, 106b, um mit dem System 116 über ein Netzwerk 102 zu kommunizieren. Die Berechnungsgeräte 106a, 106b können jeweils ein Berechnungsgerät, wie z. B. ein Mobilgerät, ein Laptop-Computer, ein Desktop-Computer, ein Smartphone, ein persönlicher digitaler Assistent, ein tragbares Medienabspielgerät, ein Tablet-Computer oder jedes andere Berechnungsgerät sein, das verwendet werden, um mit dem System 116 zu kommunizieren. Zu Darstellungszwecken ist in 1 das Berechnungsgerät 106a als Mobilgerät dargestellt und das Berechnungsgerät 106b ist als Desktop-Computer dargestellt. Bei dem Benutzer 104a oder 104b kann es sich um eine Entität handeln, die mit dem System 116 verbunden ist. Der Benutzer 104a oder 104b kann das Berechnungsgerät 106a oder 106b verwenden, um einen Status des Systems 116 zu überprüfen, oder um eine Operation des Systems 116 über das Netzwerk 102 aus der Ferne zu steuern. Der Benutzer 104a oder 104b kann z. B. das Berechnungsgerät 106a oder 106b verwenden, um zu überprüfen, ob der innerhalb des Client-Geräts 120 gespeicherte Code ein autorisierter Code für das Client-Gerät 120 ist, und Nachrichten mit dem Client-Gerät 120 austauschen.
-
In manchen Implementierungen kommuniziert das Serverberechnungssystem 108 mit dem System 116 über das Netzwerk 102. Das Serverberechnungssystem 108 enthält ein oder mehrere Berechnungsgeräte und ein oder mehrere maschinenlesbare Repositorien oder Datenbanken. Das Serverberechnungssystem 108 ist dazu konfiguriert, mit einer Anzahl von Systemen zu kommunizieren, inklusive des Systems 116. Für jedes System kann das Serverberechnungssystem 108 entsprechende autorisierte Codes für die jeweiligen Client-Geräte und Sicherheitsgeräte in dem System sicher speichern. Die Client-Geräte und die Sicherheitsgeräte können die entsprechenden autorisierten Codes von dem Serverberechnungssystem 108 über das Netzwerk 102 herunterladen. Ein Benutzer 109, z. B. ein Administrator oder ein Operator, des Serverberechnungssystems 108, kann das Serverberechnungssystem 108 verwenden, um mit einem einzelnen System zu kommunizieren, wie z. B. dem System 116.
-
Die offenbarten Implementierungen können in unterschiedlichen Umgebungen verwendet werden. In manchen Implementierungen ist die Umgebung 100 eine Fahrzeugumgebung. Das System 116 kann eine Steuereinheit (z. B. eine ECU) für eine Komponente in dem Fahrzeug sein, z. B. eine Fenstersteuereinheit, eine Bremsensteuereinheit oder ein Radsteuereinheit. Bei dem Host-Gerät 112 kann es sich um ein zentrales Berechnungssystem des Fahrzeugs handeln, z. B. eine elektronische Steuereinheit (ECU) oder ein Gateway zur Weiterleitung von Nachrichten von dem Client-Gerät an ein entferntes Berechnungsgerät, z. B. das Serverberechnungssystem 108, oder die Berechnungsgeräte 106a oder 106b. Der Benutzer 104a oder 104b kann der Besitzer des Fahrzeugs sein und mit dem Fahrzeug unter Verwendung eines Mobiltelefons 106a oder eines Computers 106b über das Netzwerk 102 kommunizieren. Das Serverberechnungssystem 108 kann ein Server sein, der dazu konfiguriert ist, eine Reihe von Fahrzeugen zu steuern, und mit einer Entität verknüpft sein, wie z. B. einem Fahrzeughersteller, einem Fahrzeugverkäufer oder einem Unternehmen. Es versteht sich, dass sich die offenbarten Implementierungen nicht auf die Fahrzeugumgebung beschränkt sind und in anderen Zusammenhängen anwendbar sind. Das System 116 kann z. B. in einer Einrichtung enthalten sein, wie z. B. einer Lampe, einer Alarmanlage, einem Garagentoröffner, oder einem Sensor eines Heimnetzwerks.
-
In manchen Beispielen ist ein Auszug mit einer kryptografischen Hash-Funktion verbunden. Ein Gerät, z. B. das Sicherheitsgerät 118 oder das Client-Gerät 120, nimmt einen Datenblock, z. B. einen Code oder ein Programm oder eine Firmware, und verwendet die kryptografische Hash-Funktion, um eine Zeichenfolge zu berechnen, wobei die Zeichenfolge der (kryptografische) Hashwert ist. Die zu codierenden Daten können als „Nachricht” bezeichnet werden und der Hashwert kann als „Nachrichtenauszug” oder einfach als „Auszug” bezeichnet werden. Die kryptografische Hash-Funktion kann z. B. einen sicheren Hash-Algorithmus (SHA), wie z. B. SHA1, SHA2, SHA3, SHA-256 oder einen MD5-Nachrichtenauszugsalgorithmus enthalten. Der erzeugte Auszug kann eine feste Länge oder eine variable Länge haben. Die vorliegende Technik ist aber nicht auf die Implementierung eines derartigen Beispielalgorithmus implementiert und andere Arten von Hash-Funktionen können implementiert werden.
-
In manchen Beispielen ist eine Signatur ein mathematisches Schema zum Nachweis der Authentizität einer digitalen Nachricht, z. B. eines Auszugs eines Codes. Die Signatur kann durch einen digitalen Signaturalgorithmus (DSA), z. B. ECDSA (Elliptic Curve Digital Signature Algorithm) erzeugt werden. Ein Gerät kann den DSA verwenden, um eine Signatur eines Auszugs zu berechnen oder zu erzeugen, unter Verwendung des Auszugs und eines Schlüssels, z. B. eines privaten Schlüssels oder eines öffentlichen Schlüssels. Die vorliegende Technik ist jedoch nicht auf die Implementierung eines derartigen Beispielalgorithmus beschränkt, und andere Arten von Signaturalgorithmen können implementiert werden.
-
In manchen Beispielen ist ein Nachrichtensicherheitsgerät (MAC) ein Stück Information, das verwendet wird, um eine Nachricht zu authentifizieren. Ein Algorithmus akzeptiert als Eingabe einen geheimen Schlüssel und eine Nachricht, die authentifiziert werden soll, und gibt einen MAC aus. Der Algorithmus kann z. B. HMAC (keyed-hash message authentication code) oder ein AES (Advanced Encryption Standard) CMAC(Cipher-based Message Authentication Code)(AES-CMAC)-Algorithmus sein, oder einer von vielen anderen.
-
In manchen Beispielen ist eine Prüfsumme (oder Hash-Summe) eine Information mit kleiner Größe aus einem Block digitaler Daten (z. B. einem Code) zur Detektion von Fehlern, die während seiner Übertragung oder Speicherung aufgetreten sein können. Die Prüfsumme kann verwendet werden, um die Datenintegrität zu verifizieren. Eine Prüfsumme kann durch einen Prüfsummenalgorithmus oder eine Prüfsummenfunktion erzeugt werden.
-
In manchen Implementierungen stellt ein autorisierter Code für ein Gerät einen Originalcode ohne Änderungen oder Modifikationen dar, wie er z. B. durch einen OEM (Original Equipment Manufacture) des Geräts oder einer mit dem Gerät verbundenen Entität beabsichtigt ist. Ein Code ist ein autorisierter Code, wenn er ungeändert oder unmodifiziert ist und ist ein nicht autorisierter Code, wenn er geändert oder modifiziert ist. Eine OEM-Signatur des autorisierten Codes ist eine Signatur, die durch den Hersteller unter Verwendung des autorisierten Codes und eines privaten OEM-Schlüssels erzeugt wurde.
-
In manchen Beispielen sind geheime Schlüssel oder Daten Informationen, die nur einem spezifischen Gerät oder System bekannt sind, aber anderen Geräten oder Systemen unbekannt sind. Eine Beispielart eines Geheimnisses ist ein I/O-Schutzgeheimnis, das auf dem einen oder dem anderen Gerät erzeugt wird, wenn eine PC-Platine hergestellt wird, und in einen persistenten Speicher auf beiden Geräten geschrieben wird, z. B. ein Sicherheitsgerät und ein Client-Gerät. Das I/O-Schutzgeheimnis kann durch einen RNG erzeugt werden, durch einen Sicherungssatz während der Geräteherstellung, oder in einer Metallschicht eines Chips gespeichert sein, oder durch andere Optionen durchgeführt werden. Die essentiellen Eigenschaften des I/O-Schutzgeheimnisses können enthalten: 1) jede Platine hat ein eindeutiges I/O-Schutzgeheimnis, das zwischen dem Client-Gerät und dem Sicherheitsgerät geteilt wird; 2) für beliebige Entitäten ist es schwierig, einen Wert des I/O-Schutzgeheimnisses für diese Platine zu bestimmen, das bedeutet für Vertraulichkeit.
-
Beispielhafte Sicherheits- und Client-Geräte
-
2 ist ein Blockdiagramm eines Beispielsystems 200 gemäß einer Ausführungsform. Ein beispielhaftes Sicherheitsgerät 202 führt eine sichere Codeauthentifizierung und Nachrichtenauthentifizierung für ein beispielhaftes Client-Gerät 204 durch. Das System 200 kann dem System 116 aus 1 ähneln. Das Sicherheitsgerät 202 kann dem Sicherheitsgerät 118 aus 1 ähneln. Das Client-Gerät 204 kann dem Client-Gerät 120 aus 1 ähneln. Das Sicherheitsgerät 202 ist mit dem Client-Gerät 204 unter Verwendung einer Verbindung 208 gekoppelt.
-
Die Verbindung 208 kann der Verbindung 119 aus 1 ähneln. Die Verbindung 208 ist z. B. ein physikalischer Übertragungsbus oder ein Übertragungskabel (oder ein anderes Kommunikationsmedium), mit dem Komponenten des Sicherheitsgerät 202 und des Client-Geräts 204 physikalisch oder kommunikativ gekoppelt sind. In einer Ausführungsform sind das Sicherheitsgerät 202 und das Client-Gerät 204 ganz dicht beieinander platziert und die Verbindung 208 ist entweder drahtlos oder über ein Datenkabel (z. B. ein optisches Glasfaserkabel oder ein elektrisch leitfähiges Kabel) ausgeführt. In manchen anderen Ausführungsformen sind das Sicherheitsgerät 202 und das Client-Gerät 204 physikalisch gekoppelt und die Verbindung 208 ist eine Hardwareschnittstelle, wie z. B. eine PCI-Schnittstelle auf einem Motherboard. In anderen Ausführungsformen, bei denen das Sicherheitsgerät 202 und das Client-Gerät 204 auf der gleichen Platine integriert sind, ist die Verbindung 208 ein Leiter. Das Sicherheitsgerät 202 und das Client-Gerät 204 können separate Chips sein und auf der gleichen Leiterplatte integriert sein.
-
Das Client-Gerät 204 kann ungeschützt sein oder es an einem Grad an Sicherheit ermangeln lassen. Der Speicher 222 in dem Client-Gerät 204 ist z. B. ungeschützt, und der in dem Speicher 222 gespeicherte Code und/oder damit verbundene Informationen können durch einen Angreifer modifiziert werden. Das Sicherheitsgerät 202 ist dazu konfiguriert, zuerst zu verifizieren, ob der in dem Client-Gerät 204 gespeicherte Code ein autorisierter Code ist. Bei der Verifikation führt das Sicherheitsgerät 202 eine Nachrichtenauthentifikation für das Client-Gerät 204 durch.
-
In manchen Implementierungen enthält das Sicherheitsgerät 202 unter anderem ein kryptografisches (Krypto) Modul 212, ein Zufallserzeugungsmodul 214, einen sicheren Speicher 216 und ein Authentifikationsmodul 218. In einer Ausführungsform sind das kryptografische Modul 212, das Zufallserzeugungsmodul 214, der sichere Speicher 216 und das Authentifikationsmodul 218 unterschiedliche Programme, Unterprogramme, oder Codeteile, die innerhalb eines oder mehrerer Speichergeräte innerhalb des Sicherheitsgeräts 202 gespeichert sind. Diese Module müssen daher keine getrennten physikalischen Komponenten sein, sondern können Softwaremodule sein. In manchen Implementierungen liegt der sichere Speicher 216 außerhalb des Sicherheitsgeräts 202 und ist mit dem Sicherheitsgerät 202 über einen geschützten oder sicheren Kanal verbunden. Der sichere Speicher 216 kann z. B. in einer zuverlässigen Entität eines Dritten liegen. Das Sicherheitsgerät 202 kann Informationen von dem sicheren Speicher 216 abrufen.
-
Das kryptografische Modul 212 ist dazu konfiguriert, kryptografische Eigenschaften von Code oder Nachrichten zu erzeugen und kryptografische Funktionen auszuführen. Das kryptografische Modul 212 kann einen Auszug, eine Signatur, einen Nachrichtenauthentifizierungscode (MAC) oder eine Prüfsumme für die Codes oder die Nachrichten erzeugen. In manchen Implementierungen führt das kryptografische Modul 212 Chiffrierungs- und/oder Dechiffrierungs(oder Entschlüsselungs)-Funktionen aus. Das Client-Gerät 204 verschlüsselt z. B. den innerhalb des Client-Geräts 204 gespeicherten Code. Das kryptografische Modul 212 kann den verschlüsselten Code entschlüsseln, um den ursprünglichen Code zu erhalten.
-
In manchen Implementierungen erzeugt das kryptografische Modul 212 eine Herausforderung oder Challenge für das Client-Gerät 204, z. B. unterschiedliche Challenges zu unterschiedlichen Zeiten. Eine Challenge enthält eine Abfrage an das Client-Gerät 204 zur Anforderung einer Eigenschaft eines Codes (oder eines Teils eines derartigen Codes), der in dem Client-Gerät 204 gespeichert ist. Die Eigenschaft kann eine kryptografische Eigenschaft, z. B. ein Auszug, eine Signatur, eine Prüfsumme, oder ein MAC sein. Eine Challenge kann auch eine Anforderung für eine Eigenschaft eines bestimmten Teils des autorisierten Codes enthalten. In manchen Beispielen entspricht der bestimmte Teil eines Speicheradressbereichs (physikalisch oder virtuell), z. B. ein Adresspaar, das eine Startadresse und eine Endadresse enthält, eine mittlere Adresse mit einer Breite, eine Startadresse mit einer Breite, oder eine Endadresse mit einer Breite. Die Challenge kann den Adressbereich enthalten, um den bestimmten Teil anzugeben. In manchen Implementierungen enthält eine Challenge Informationen, die mit kryptografischen oder Authentifizierungsschlüsseln für eine sichere Autorisierung und/oder Authentifizierung verbunden sind.
-
Das Zufallserzeugungsmodul (RandGen) 214 ist dazu konfiguriert, eine Zufallszahl zu erzeugen, die z. B. als Ausgangswert für kryptografische Operationen verwendet wird, die durch das Sicherheitsgerät 202 durchgeführt werden. Das Zufallserzeugungsmodul 214 kann z. B. einen Zufallszahlengenerator (RNG) enthalten, der eine bestimmte Zahl von zufälligen Bytes (z. B. 32 zufällige Bytes) an das kryptografische Modul 212 zurückgibt. In einer Ausführungsform erzeugt das Zufallserzeugungsmodul 214 eine Nonce zur direkten Verwendung von einem RNG. In einer Ausführungsform kombiniert das kryptografische Modul 212 diese erzeugte Zufallszahl mit einer separaten Eingabezahl, um eine kryptografische „Nonce” zu erzeugen, die innerhalb des Sicherheitsgeräts 202 gespeichert wird und für nachfolgende Befehle verwendet werden kann. In einer Ausführungsform ist eine Protokollnonce eine Kombination aus einer Nonce von einem Client-Gerät und einer Nonce von einem Sicherheitsgerät. Die Protokollnonce kann für kryptografische Operationen verwendet werden.
-
In manchen Beispielen ist eine Nonce eine beliebige Zahl, die nur ein einziges Mal in einer kryptografischen Kommunikation zwischen Geräten verwendet wird. Die Nonce kann eine zufällige oder pseudo-zufällige Zahl sein, die in einem Authentifizierungsprotokoll ausgegeben wird, um sicherzustellen, dass alte Kommunikationen nicht in einem Replay-Angriff wiederverwendet werden können. Eine Nonce kann auch verwendet werden, um die Sicherheit einer Stromchiffre zu gewährleisten. Um zu gewährleisten, dass eine Nonce nur ein einziges Mal verwendet wird, kann sie zeitabhängig sein (indem sie z. B. einen geeigneten, fein abgestuften Zeitstempel in ihrem Wert enthält) oder mit ausreichend zufälligen Bits erzeugt werden, um die Wahrscheinlichkeit der Wiederholung eines zuvor erzeugten Wertes hinreichend klein zu halten.
-
Der sichere Speicher 216 ist dazu konfiguriert, sichere Informationen inklusive der Informationen über einen autorisierten Code für das Client-Gerät 204, geheime Daten 215 und/oder Schlüssel 217 zu speichern. Die geheimen Daten 215 enthalten z. B. das I/O-Schutzgeheimnis, das das Sicherheitsgerät 202 verwenden kann, um Nachrichten zu schützen. Die Schlüssel 217 können einen symmetrischen kryptografischen Schlüssel oder einen asymmetrischen kryptografischen Schlüssel für Authentifizierungs- oder kryptografische Funktionen enthalten. Die Schlüssel 27 können z. B. einen öffentlichen OEM-Schlüssel enthalten, der einem privaten Schlüssel entspricht, der verwendet wird, um eine OEM-Signatur eines autorisierten Codes zu erzeugen, der dem in dem Client-Gerät gespeicherten Code entspricht. Das Sicherheitsgerät 202 kann den öffentlichen OEM-Schlüssel verwenden, um eine Signatur eines Auszugs des innerhalb des Client-Geräts 204 gespeicherten Codes zu erzeugen. Die geheimen Daten 215 und/oder Schlüssel 217 können in dem Sicherheitsgerät 202 während einer Phase des Sicherheitsgeräts 202 gespeichert werden, wie z. B. der Herstellung, der Fabrikinitialisierung, der Personalisierung oder der Verteilung.
-
In manchen Implementierungen enthält die Information über den autorisierten Code, der in dem Sicherheitsgerät 216 gespeichert ist, ein gesamtes Abbild oder eine Kopie des autorisierten Codes, einen Auszug des autorisierten Codes, eine Signatur des autorisierten Codes, einen MAC des autorisierten Codes, oder eine andere Eigenschaft des autorisierten Codes. Das gesamte Abbild des autorisierten Codes kann in dem sicheren Speicher 216 während einer Herstellungsphase des Sicherheitsgeräts 202 gespeichert werden. Das gesamte Abbild des autorisierten Codes kann auch von einer sicheren Quelle kopiert oder heruntergeladen werden, z. B. einer sicheren Hardware oder einem sicheren Server, wie z. B. dem Serverberechnungssystem 108 aus 1. Das Sicherheitsgerät 202 kann auch die gespeicherten Informationen über den autorisierten Code von der sicheren Quelle aktualisieren. In manchen Implementierungen enthält die Information des autorisierten Codes, die in dem sicheren Speicher 216 gespeichert ist, nicht das gesamte Abbild oder die Kopie des autorisierten Codes, sondern den Auszug des autorisierten Codes, die Signatur des autorisierten Codes, und/oder den MAC des autorisierten Codes.
-
In manchen Implementierungen ist die Signatur des autorisierten Codes eine OEM-Signatur für das Client-Gerät 204, die in dem Sicherheitsgerät 202 während der Herstellungsphase des Sicherheitsgeräts 202 gespeichert wird, oder nach der Herstellungsphase in das Sicherheitsgerät 202 kopiert, heruntergeladen oder aktualisiert wird. In manchen Beispielen erzeugt das Sicherheitsgerät 202 die Signatur des autorisierten Codes auf Basis des Auszugs des autorisierten Codes unter Verwendung eines öffentlichen OEM-Schlüssels 217. Das Sicherheitsgerät 202 kann die Authentizität des gesamten Abbilds des autorisierten Codes verifizieren, indem die erzeugte Signatur mit der OEM-Signatur verglichen wird.
-
In manchen Implementierungen enthalten die Informationen über den autorisierten Code, die in dem sicheren Speicher 216 gespeichert sind, Informationen über eine Vielzahl von einzelnen Teilen des autorisierten Codes, wie z. B. eine Kopie eines einzelnen Teils, eines Auszugs, einer Signatur oder eines MACs des einzelnen Teils und/oder eines Adressbereichs des einzelnen Teils. In manchen Beispielen speichert der sichere Speicher 216 die Informationen des Teils ohne die mit dem gesamten Abbild des autorisierten Codes verbundenen Intormationen. In manchen Beispielen speichert der sichere Speicher 216 eine Signatur oder einen Auszug des gesamten Abbilds des autorisierten Codes, z. B. die OEM-Signatur, in dem sicheren Speicher 216 zusammen mit den Informationen über die Abschnitte.
-
In manchen Implementierungen wählt das Sicherheitsgerät 202 eine Zahl von Speicheradressbereichen aus, die einer Zahl von Teilen des autorisierten Codes entsprechen, z. B. während des Herunterladens des gesamten Abbilds von einer sicheren Quelle. Das Sicherheitsgerät 202 ermittelt einen entsprechenden Teil für jeden Speicheradressbereich. Das Sicherheitsgerät 202 kann dann einen entsprechenden Auszug für jeden Teil unter Verwendung einer kryptografischen Hash-Funktion oder eines Algorithmus berechnen und die Auszüge der Teile in dem sicheren Speicher 216 speichern. Das Sicherheitsgerät 202 kann auch eine entsprechende Signatur für jeden Teil unter Verwendung des jeweiligen Auszugs berechnen und die Signaturen in dem sicheren Speicher 216 speichern. In manchen Implementierungen speichert das Sicherheitsgerät 202 erste Informationen, die die jeweiligen Eigenschaften (z. B. einen Auszug oder eine Signatur) der Teile des autorisierten Codes angeben, und zweite Informationen, die den jeweiligen Speicheradressbereich in dem Sicherheitsgerät 202 angeben, und die jeweiligen Speicheradressbereiche aus der Zahl der Speicheradressbereiche mit Eigenschaften aus der Zahl der Eigenschaften der Teile in dem Sicherheitsspeicher 216 assoziieren. Jedes Mal, wenn eine neue Codeverifikation startet, kann das kryptografische Modul 212 einen zufälligen Adressbereich aus der Zahl der Adressbereiche auswählen und eine Challenge auf Basis des ausgewählten Adressbereichs erzeugen. Das kryptografische Modul 212 kann auch zwei oder mehrere Adressbereiche zufällig auswählen und eine Challenge, basierend auf einer Kombination der zwei oder mehr Adressbereiche, erzeugen.
-
10050] Der sichere Speicher 216 kann ein Teil des Sicherheitsgeräts 202 sein, das starke Sicherheitsmechanismen implementiert, so dass die in den sicheren Speicher 216 enthaltenen Daten nicht einfach kopiert, geklont oder modifiziert werden können, und dass jede unautorisierte Änderung an den Daten detektiert werden kann, z. B. durch ein überprüfendes Gerät. In einer Ausführungsform ist das überprüfende Gerät entfernt mit dem Sicherheitsgerät 202 gekoppelt. Das Sicherheitsgerät kann eine Kollektion von Informationen verschlüsseln und signieren, die hinsichtlich eines Codes des Client-Geräts 204 gespeichert sind, und einen verschlüsselten Block und/oder eine Signatur an das Überprüfungsgerät schicken, das dann den verschlüsselten Block und/oder die Signatur evaluiert. In einer Ausführungsform hat das Sicherheitsgerät 202 eine interne Integritätsüberprüfung auf dem internen, geschützten nicht-flüchtigen Speicher, z. B. dem sicheren Speicher 216. Das Sicherheitsgerät 202 kann die Integritätsüberprüfung vor der Durchführung einer Operation verifizieren.
-
In manchen Implementierungen enthält der sichere Speicher 216 einen persistenten Speicher, wie z. B. einen elektronisch löschbaren Nur-Lese-Speicher (EEPROM), einen Flash-Speicher, ein Festplattenlaufwerk, oder andere geeignete Speichermechanismen, die dazu konfiguriert sind, Daten in persistenter Weise zu speichern. Wie zuvor angegeben wurde, kann der sichere Speicher 216 für die Verwendung von Informationen verwendet werden, die mit dem autorisierten Code des Client-Geräts 204, den geheimen Daten 215, Schlüsseln 217, verschiedenen schreib- und lesbaren, nur lesbaren oder geheimen Daten, Verbrauchsaufzeichnungen und Sicherheitskonfigurationen assoziiert sind. Der Zugriff auf die verschiedenen Abschnitte des sicheren Speichers 216 kann in einer Vielzahl von Weisen eingeschränkt sein und die Konfiguration kann dann gesperrt werden, um Änderungen zu verhindern.
-
In manchen Implementierungen enthält der sichere Speicher 216 flüchtigen Speicher zur temporären Datenspeicherung. Der flüchtige Speicher kann z. B. ein statisches RAM (SRAM) sein, in dem heruntergeladene oder aktualisierte Abbilder des autorisierten Codes während der sicheren Kommunikation mit einer sicheren Quelle gepuffert werden, oder Ergebnisse der kryptografischen Operationen oder der Authentifizierungsoperationen während der sicheren Kommunikation mit dem Client-Gerät 204 gepuffert werden. In einer Ausführungsform enthält der sichere Speicher ein SRAM, das mit einer Stromquelle, z. B. einer Batterie oder einem Kondensator, gesichert ist. In manchen Implementierungen wird der flüchtige Speicher zur Speicherung der Eingabebefehle oder der Ausgabeergebnisse und der Zwischenergebnisse verwendet. Der gesamte Inhalt des flüchtigen Speichers kann jedes Mal ungültig werden, wenn der sichere Speicher 216 in einen Schlafmodus fällt oder die Stromversorgung abgeschaltet wird.
-
Das Authentifizierungsmodul 218 ist dazu konfiguriert, festzustellen, ob der innerhalb des Client-Geräts 204 gespeicherte Code ein autorisierter Code ist. Das Authentifizierungsmodul 218 ist dazu konfiguriert, mit dem sicheren Speicher 216, dem kryptografischen Modul 212 und/oder dem Zufallserzeugungsmodul 214 zu kommunizieren und Informationen von ihnen zu erhalten. Das kryptografische Modul 212 sendet z. B. eine Challenge zur Anforderung einer kryptografischen Eigenschaft eines Codes des Client-Geräts 204. Das Client-Gerät 204 kann eine Antwort zurückschicken, die eine kryptografische Eigenschaft des Codes, der in dem Client-Gerät 204 gespeichert ist, enthält. Das Authentifizierungsmodul 218 kann die kryptografische Eigenschaft eines autorisierten Codes erhalten, der dem Code des Client-Geräts 204 entspricht, z. B. von Informationen, die mit in dem sicheren Speicher 216 gespeicherten autorisierten Code assoziiert sind, und feststellen, ob die kryptografische Eigenschaft des Codes, die in der Antwort empfangen wurde, mit der erhaltenen kryptografischen Eigenschaft des autorisierten Codes übereinstimmt. Wenn die kryptografische Eigenschaft des Codes zu der erhaltenen kryptografischen Eigenschaft des autorisierten Codes passt, kann das Authentifizierungsmodul 218 feststellt, dass der Innerhalb des Client-Geräts 204 gespeicherte Code der autorisierte Code ist. Wenn die kryptografische Eigenschaft des Codes nicht zu der erhaltenen kryptografischen Eigenschaft des autorisierten Codes passt, stellt das Authentifizierungsmodul 218 fest, dass der Code nicht autorisiert ist oder unautorisiert ist.
-
In manchen Implementierungen enthält das Client-Gerät 204 unter anderem einen Prozessor 220 und einen Speicher 222. Der Speicher 222 kann ein interner oder externer Speicher des Prozessors 220 sein. Der Speicher 222 ist dazu konfiguriert, einen oder mehrere Codes (z. B. einer Anwendungs-Firmware) 223 des Client-Geräts 204 und Geheimnisse 225 zu speichern. Die Geheimnisse 225 enthalten z. B. ein gemeinsames I/O-Schutzgeheimnis, das dem I/O-Schutzgeheimnis 215 entspricht, das in dem Sicherheitsgerät 202 gespeichert ist. Das Client-Gerät 204 kann einen MAC unter Verwendung des gemeinsamen I/O-Schutzgeheimnisses erzeugen. Die Geheimnisse 225 können in dem Speicher 222 während einer Herstellungsphase des Speichers 22 oder des Client-Geräts 202 gespeichert werden. Die Geheimnisse 225 können nur lesbar sein und schwer zu modifizieren.
-
Ein Code und/oder eine mit dem Code assoziierte Information (z. B. eine OEM-Signatur des Codes) kann in dem Speicher 222 während einer Herstellungsphase des Client-Geräts 204 gespeichert werden, wie z. B. der Herstellung, der Fabrikinitialisierung, der Personalisierung, oder der Verteilung. Der Code und/oder die assoziierte Information können auch aus einer sicheren Quelle, wie z. B. einer sicheren Hardware oder einem sicheren Server, kopiert oder heruntergeladen werden. Das Client-Gerät 204 kann auch den Code und/oder die assoziierte Information von der sicheren Quelle aktualisieren.
-
Der Prozessor 220 ist dazu konfiguriert, Operationen unter Verwendung des in dem Speicher 222 gespeicherten Codes durchzuführen. Der Prozessor 220 fährt z. B. unter Verwendung eines Boot-Codes hoch, führt eine Anwendung unter Verwendung einer Anwendungs-Firmware aus, oder führt eine Operation unter Verwendung eines Operationscodes aus. Der Prozessor 220 kann kryptografische Funktionen ausführen, um kryptografische Eigenschaften des Codes zu erzeugen, z. B. einen Hash-Code des Codes berechnen, um einen Auszug zu erzeugen, einen Hash-Code einer Nachricht berechnen, um einen MAC zu erzeugen, den Code verschlüsseln, oder eine Signatur erzeugen. In manchen Ausführungsformen enthält der Prozessor 220 ein Zufallserzeugungsmodul ähnlich dem Zufallserzeugungsmodul 214, das eine Zufallszahl oder eine Nonce erzeugen kann.
-
In manchen Implementierungen ist der Prozessor 220 dazu konfiguriert, auf Challenges oder Abfragen von dem Sicherheitsgerät 202 zu antworten. In manchen Fällen empfängt das Client-Gerät 204 eine Anforderung von dem Sicherheitsgerät 202, die eine Challenge für eine kryptografische Eigenschaft des Codes enthält, z. B. einen Auszug oder eine Signatur oder einen MAC des Codes. Der Prozessor 220 kann eine kryptografische Eigenschaft des Codes auf Basis von Informationen aus dem Speicher 222 erhalten oder erzeugen, inklusive des gespeicherten Codes und/oder der assoziierten Informationen, und eine Antwort zurückschicken, die die erhaltene kryptografische Eigenschaft des Codes enthält. In manchen Beispielen fordert die Challenge eine kryptografische Eigenschaft eines bestimmten Teils des Codes an. Die Challenge enthält z. B. einen bestimmten Adressbereich entsprechend des bestimmten Teils. Der Prozessor 220 kann einen Teil des Codes entsprechend des bestimmten Adressbereichs identifizieren und die kryptografische Eigenschaft des entsprechenden Teils des Codes erzeugen.
-
Beispielflussdiagramme und Ausführungsformen
-
3 ist ein Flussdiagramm eines Beispielprozesses 300, mit dem ein Sicherheitsgerät eine sichere Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät durchführt. Die Operationen in dem Kasten 301 werden z. B. durch das Client-Gerät durchgeführt, wohingegen die Operationen im Kasten 303 durch das Sicherheitsgerät durchgeführt werden. Das Sicherheitsgerät kann dem Sicherheitsgerät 118 aus 1 oder dem Sicherheitsgerät 202 aus 2 ähneln. Das Client-Gerät kann dem Client-Gerät 120 aus 1 oder dem Client-Gerät 204 aus 2 ähneln.
-
Das Client-Gerät erzeugt eine Eigenschaft des Codes, der innerhalb des Client-Geräts gespeichert ist (302). Der Code kann ein Boot-Code, eine Anwendungs-Firmware, oder ein Betriebscode sein. Die Eigenschaft des Codes kann ein Auszug des Codes oder verschlüsselte Daten des Codes sein. Das Client-Gerät kann zur Ausführung des Schritts 302 z. B. durch einen vorbestimmten Zeitplan (z. B. jede Sekunde) oder nach einer gewissen Zeitdauer nach der vorherigen Code-Authentifizierung veranlasst werden, oder jedes Mal, wenn das Client-Gerät neu hochfährt, oder bei Empfang einer Anforderung von dem Sicherheitsgerät oder einem entfernten Gerät, wie z. B. dem Host-Gerät 112, den Berechnungsgeräten 106a, 106b, oder dem Serverberechnungssystem 108 aus 1. Wie im Einzelnen im Zusammenhang mit den 8 und 9 diskutiert wird, empfängt das Client-Gerät eine Anforderung von dem Sicherheitsgerät, wobei die Anforderung einen Speicheradressbereich enthält, der einem Teil des Codes entspricht. Das Client-Gerät kann den Teil des Codes auf Basis des Speicheradressbereichs bestimmen und eine Eigenschaft des Teils des Codes erzeugen.
-
Das Client-Gerät sendet die erzeugte Eigenschaft des Codes an das Sicherheitsgerät (304). In manchen Beispielen sendet das Client-Gerät einen erzeugten Auszug des Codes zusammen mit einer validierten Signatur des Codes, z. B. einer OEM-Signatur, an das Sicherheitsgerät.
-
Das Sicherheitsgerät empfängt die Eigenschaft des Codes von dem Client-Gerät (306) und verifiziert die Korrektheit der Eigenschaft des Codes (308). Wenn das Sicherheitsgerät die fehlende Korrektheit der Eigenschaft des Codes feststellt, stellt das Sicherheitsgerät fest, dass der Code unautorisiert oder ein nicht autorisierter Code ist (310). Als Reaktion auf die Feststellung, dass der Code unautorisiert ist, fällt das Sicherheitsgerät in einen abgesicherten Modus (312). Das Sicherheitsgerät hindert sich selbst daran, auf kritische Informationen zuzugreifen, wie z. B. geheime Daten oder Schlüssel, die in einem sicheren Speicher gespeichert sind, wie z. B. dem sicheren Speicher 216 aus 2. In manchen Fällen hindert das Sicherheitsgerät das Client-Gerät als Reaktion auf die Feststellung, dass der Code unautorisiert ist, an der Kommunikation mit einem entfernten Gerät über ein Netzwerk, z. B. das Netzwerk 102 aus 1.
-
Wenn das Sicherheitsgerät die Korrektheit der Eigenschaft des Codes feststellt, stellt das Sicherheitsgerät fest, dass der Code autorisiert ist oder ein autorisierter Code ist (314). Als Reaktion auf die Feststellung, dass der Code autorisiert ist, ermöglicht das Sicherheitsgerät den Zugriff auf kritische Informationen, wie z. B. geheime Daten oder Schlüssel, die in dem sicheren Speicher gespeichert sind (316).
-
In manchen Beispielen ist die Eigenschaft des Codes ein Auszug des Codes, der durch das Client-Gerät erzeugt wird. Das Sicherheitsgerät erzeugt eine Signatur des Codes auf Basis des empfangenen Auszugs des Codes und eines öffentlichen Schlüssels (z. B. eines öffentlichen OEM-Schlüssels), der innerhalb des Sicherheitsgerät (z. B. in dem sicheren Speicher) gespeichert ist. Das Sicherheitsgerät stellt dann fest, ob die erzeugte Signatur des Codes mit der Signatur eines autorisierten Codes, der dem Code entspricht (z. B. einer OEM-Signatur des Codes) übereinstimmt. In manchen Fällen ist die Signatur des autorisierten Codes innerhalb des Sicherheitsgeräts (z. B. in dem sicheren Speicher) gespeichert. In manchen Fällen speichert das Client-Gerät die Signatur des autorisierten Codes und sendet sie an das Sicherheitsgerät zur Codeverifikation. Wenn die erzeugte Signatur des Codes mit der Signatur des autorisierten Codes übereinstimmt, stellt das Sicherheitsgerät fest, dass der Code der autorisierte Code ist (314). Anderenfalls stellt das Sicherheitsgerät fest, dass der Code nicht der autorisierte Code ist (310).
-
In manchen Beispielen ist die Eigenschaft des Codes der Auszug des Codes. Das Sicherheitsgerät speichert einen Auszug des autorisierten Codes. Wenn z. B. das Sicherheitsgerät ein gesamtes Abbild des autorisierten Codes empfängt, berechnet das Sicherheitsgerät einen Auszug des autorisierten Codes und erzeugt eine Signatur des Auszugs zur Überprüfung mit einer OEM-Signatur des autorisierten Codes. Wenn die erzeugte Signatur mit der OEM-Signatur übereinstimmt, speichert das Sicherheitsgerät den Auszug des autorisierten Codes in einem sicheren Speicher, z. B. ohne das gesamte Abbild des autorisierten Codes zu speichern. Bei der Durchführung des Schritts 308 kann das Sicherheitsgerät den empfangenen Auszug des Codes mit dem gespeicherten Auszug des autorisierten Codes vergleichen, um festzustellen, ob diese übereinstimmen. In manchen Fällen speichert das Sicherheitsgerät ein gesamtes Abbild des autorisierten Codes und erzeugt einen Auszug des autorisierten Codes zum Vergleich mit dem empfangenen Auszug des Codes von dem Client-Gerät.
-
In manchen Beispielen enthält die Eigenschaft des Codes verschlüsselte Daten des Codes. Das Client-Gerät verschlüsselt den Code, um die verschlüsselten Daten zu erzeugen. Das Sicherheitsgerät entschlüsselt die empfangenen verschlüsselten Daten des Codes, um z. B. den ursprünglich in dem Client-Gerät gespeicherten Code zu erhalten. Das Sicherheitsgerät kann dann einen Auszug der entschlüsselten Daten des Codes erzeugen. Wie oben gezeigt wurde, kann das Sicherheitsgerät zur Überprüfung der Korrektheit der Eigenschaft des Codes eine Signatur des Codes auf Basis des erzeugten Auszugs und eines gespeicherten öffentlichen Schlüssels erzeugen und feststellen, ob die erzeugte Signatur des Codes mit der Signatur des autorisierten Codes übereinstimmt.
-
Eine erfolgreiche Verifikation des in dem Client-Gerät gespeicherten Codes (314) ermöglicht es dem Sicherheitsgerät, auf die in dem sicheren Speicher gespeicherten geheimen Daten oder Schlüssel zuzugreifen (316). In manchen Implementierungen kann auf die gespeicherten geheimen Daten oder Schlüssel nur durch das Sicherheitsgerät basierend auf der erfolgreichen Verifikation des Codes zugegriffen werden. Das Sicherheitsgerät kann dann die geheimen Daten oder Schlüssel zur Authentifizierung von einer oder von mehreren Nachrichten mit dem Client-Gerät verwenden.
-
In manchen Implementierungen verwendet das Sicherheitsgerät die geheimen Daten zur Nachrichtenauthentifizierung mit einem entfernten Gerät, z. B. dem Host-Gerät 112, den Berechnungsgeräten 106a, 106b, oder dem Serverberechnungssystem 108 aus 1, mit dem das Client-Gerät kommuniziert. Das Client-Gerät sendet eine Nachricht direkt an das entfernte Gerät. Das Sicherheitsgerät empfängt die Nachricht von dem Client-Gerät und erzeugt eine Eigenschaft der Nachricht auf Basis der gespeicherten geheimen Daten oder Schlüssel. Das Sicherheitsgerät erzeugt z. B. einen MAC der Nachricht unter Verwendung der gespeicherten geheimen Daten, die mit dem entfernten Gerät geteilt werden. Das Sicherheitsgerät kann den erzeugten MAC an die Nachricht anhängen und die Nachricht mit dem angehängten MAC an das entfernte Gerät senden. Das entfernte Gerät kann die gemeinsamen geheimen Daten, die in dem entfernten Gerät gespeichert sind, verwenden, um einen MAC der Nachricht zu erzeugen und den empfangen MAC von dem Sicherheitsgerät mit dem erzeugten MAC validieren. Wenn der empfangene MAC mit dem erzeugten MAC übereinstimmt, stellt das entfernte Gerät fest, dass die Nachricht von dem Client-Gerät authentisch ist oder vertrauenswürdig. Anderenfalls stellt das entfernte Gerät fest, dass die Nachricht nicht authentisch oder nicht vertrauenswürdig ist.
-
In manchen Implementierungen verwendet das Sicherheitsgerät die geheimen Daten zur Nachrichtenauthentifizierung mit dem Client-Gerät. In manchen Beispielen erzeugt das Sicherheitsgerät als Reaktion auf die Feststellung, dass der Code autorisiert ist (314), einen Wert, der eine erfolgreiche Verifikation des Codes angibt. Das Sicherheitsgerät kann auch eine Nonce erzeugen. Das Sicherheitsgerät verwendet den Wert und/oder die Nonce als die zu authentifizierende Nachricht. In manchen Beispielen erzeugt das Client-Gerät eine Nonce und sendet die Nonce an das Sicherheitsgerät. Das Sicherheitsgerät verwendet die Nonce und/oder die empfangene Eigenschaft des Codes als die zu authentifizierende Nachricht.
-
Unter erneuter Bezugnahme auf 3 erzeugt das Sicherheitsgerät eine Eigenschaft der Nachricht (318) und sendet die Eigenschaft der Nachricht an das Client-Gerät (320). Die Eigenschaft der Nachricht kann ein MAC der Nachricht sein, der auf der Nachricht und den geheimen Daten basiert. In manchen Beispielen sendet das Sicherheitsgerät die Nachricht, z. B. den hinweisgebenden Wert und/oder die erzeugte Nonce, an das Client-Gerät.
-
Das Client-Gerät empfängt die Eigenschaft der Nachricht (322) und erzeugt eine Eigenschaft einer zweiten Nachricht auf Basis von zweiten geheimen Daten, die in dem Client-Gerät gespeichert sind (324). Die zweiten geheimen Daten können die gleichen sein wie die innerhalb des Sicherheitsgeräts gespeicherten geheimen Daten, z. B. ein gemeinsames I/O-Schutzgeheimnis. Die zweite Nachricht kann die gleichen Informationen enthalten wie die Nachricht. In manchen Beispielen enthält die Nachricht den hinweisgebenden Wert und die Nonce, die durch das Sicherheitsgerät erzeugt wurde, und die zweite Nachricht enthält auch den hinweisgebenden Wert und die Nonce, die von dem Sicherheitsgerät empfangen wurde. In manchen Beispielen enthält die Nachricht die Eigenschaft des Codes und/oder eine Nonce, die durch das Client-Gerät erzeugt wurde, und die zweite Nachricht enthält die Eigenschaft des Codes und/oder die Nonce.
-
Das Client-Gerät vergleicht die empfangene Eigenschaft der Nachricht mit der erzeugten Eigenschaft der zweiten Nachricht (326) und stellt fest, ob die diese beiden Eigenschaften zueinander passen (328). Wenn das Client-Gerät feststellt, dass die beiden Eigenschaften passen, führt das Client-Gerät eine Anwendung unter Verwendung des Codes aus (332). Wenn der Code z. B. ein Boot-Code ist, fährt das Client-Gerät mit dem Hochfahren fort. Wenn der Code eine Anwendungs-Firmware ist, führt das Client-Gerät eine entsprechende Anwendung aus. Wenn der Code ein Betriebscode ist, führt das Client-Gerät einen entsprechenden Betrieb aus. Wenn ansonsten das Client-Gerät feststellt, dass die beiden Eigenschaften nicht zueinander passen, hindert das Client-Gerät sich selbst daran, die Anwendung unter Verwendung des Codes auszuführen (334).
-
4 ist ein Flussdiagramm eines Beispielprozesses 400, mit dem ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät ausführt, gemäß einer weiteren Beispielausführungsform. Die Operationen im Kasten 401 werden z. B. durch das Client-Gerät ausgeführt, wohingegen die Operationen im Kasten 403 durch das Sicherheitsgerät ausgeführt werden. Das Sicherheitsgerät kann dem Sicherheitsgerät 118 aus 1 oder dem Sicherheitsgerät 202 aus 2 ähneln. Das Client-Gerät kann dem Client-Gerät 120 aus 1 oder dem Client-Gerät 204 aus 2 ähneln. Zu Darstellungszwecken handelt sich hier bei dem Code um eine Anwendungs-Firmware, die in dem Client-Gerät gespeichert ist.
-
Das Client-Gerät erzeugt einen Auszug der Anwendungs-Firmware (402) und sendet den Auszug der Anwendungs-Firmware an das Sicherheitsgerät (404). Das Client-Gerät sendet auch eine Firmware-Signatur (z. B. eine OEM-Signatur der Anwendungs-Firmware), die in dem Client-Gerät gespeichert ist, an das Sicherheitsgerät (406).
-
Das Sicherheitsgerät empfängt den Auszug der Anwendungs-Firmware (408) und empfängt die Firmware-Signatur (410). Das Sicherheitsgerät verifiziert dann die Korrektheit des Auszugs der Anwendungs-Firmware (414) unter Verwendung des empfangenen Auszugs, der Firmware-Signatur und eines öffentlichen Schlüssels (412), der in dem Sicherheitsgerät gespeichert ist. Der öffentliche Schlüssel kann ein öffentlicher OEM-Schlüssel sein. Das Sicherheitsgerät erzeugt eine Signatur des Auszugs der Anwendungs-Firmware auf Basis des öffentlichen Schlüssels und vergleicht dann die erzeugte Signatur mit der Firmware-Signatur.
-
Wenn die erzeugte Signatur nicht mit der Firmware-Signatur übereinstimmt, stellt das Sicherheitsgerät fest, dass die Verifikation nicht erfolgreich war (416), d. h., die Firmware ist nicht autorisiert, und das Sicherheitsgerät geht in einen abgesicherten Modus (418), ähnlich wie im Schritt 312 aus 3. Wenn die erzeugte Signatur der Firmware-Signatur entspricht, stellt das Sicherheitsgerät fest, dass die Verifikation erfolgreich war (420), d. h. die Firmware ist autorisiert. Als Reaktion auf die erfolgreiche Verifikation der Firmware, ermöglicht das Sicherheitsgerät den Zugriff auf das I/O-Schutzgeheimnis (422), das in dem Sicherheitsgerät gespeichert ist, z. B. in einem sicheren Speicher in dem Sicherheitsgerät. Das Sicherheitsgerät erzeugt einen Wert, um die erfolgreiche Verifikation der Firmware anzuzeigen (424). Dieser Wert kann eine Zahl, eine Sequenz oder ein Muster sein. Nur zu Darstellungszwecken wird eine boolesche „1” in 4 für diesen Wert verwendet. Das Sicherheitsgerät kann auch eine Nonce, z. B. eine Zufallszahl, von dem Client-Gerät empfangen und die Nonce in einem Register speichern (426). Das Sicherheitsgerät verwendet die boolesche „1” und die Nonce als Nachricht und erzeugt einen MAC der Nachricht auf Basis des I/O-Schutzgeheimnisses (428). Das Sicherheitsgerät sendet dann den erzeugten MAC an das Client-Gerät.
-
Das Client-Gerät empfängt den Wert, z. B. die boolesche „1”, (430) von dem Sicherheitsgerät, erzeugt die Nonce unter Verwendung eines Zufallszahlengenerators (RNG) (432), und verwendet die boolesche „1” und die Nonce als Nachricht. Das Client-Gerät erzeugt dann einen MAC der Nachricht (436) auf Basis des I/O-Schutzgeheimnisses (434), das in dem Client-Gerät gespeichert ist. Das Client-Gerät vergleicht dann den empfangenen MAC von dem Sicherheitsgerät mit dem erzeugten MAC, um festzustellen, ob sie übereinstimmen (438). Wenn der erzeugte MAC mit dem empfangenen MAC übereinstimmt, fährt das Client-Gerät mit der Ausführung einer entsprechenden Anwendung unter Verwendung der verifizierten Firmware fort (440). Wenn der erzeugte MAC nicht mit dem empfangenen MAC übereinstimmt, wird das Client-Gerät daran gehindert, die Anwendung auszuführen (442).
-
5 ist ein Flussdiagramm eines Beispielprozesses 500, mit dem ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät durchführt, gemäß einer weiteren Beispielausführungsform. Die Operationen im Kasten 501 werden z. B. durch das Client-Gerät ausgeführt, wohingegen die Operationen im Kasten 503 durch das Sicherheitsgerät ausgeführt werden. Das Sicherheitsgerät kann dem Sicherheitsgerät 118 aus 1 oder dem Sicherheitsgerät 202 aus 2 ähneln. Das Client-Gerät kann dem Client-Gerät 120 aus 1 oder dem Client-Gerät 204 aus 2 ähneln. Zu Darstellungszwecken handelt es sich hier bei dem Code um eine Anwendungs-Firmware, die in dem Client-Gerät gespeichert ist. Das Client-Gerät speichert die Anwendungs-Firmware und ein I/O-Schutzgeheimnis in einem Speicher des Client-Geräts. Das I/O-Schutzgeheimnis kann in einem abgesicherten Teil des Speichers gespeichert sein. Das Sicherheitsgerät speichert einen öffentlichen Fabrikschlüssel und eine Firmware-Signatur (z. B. eine OEM-Signatur der Anwendungs-Firmware), z. B. in einem sicheren Speicher.
-
Das Client-Gerät erzeugt einen Auszug der Anwendungs-Firmware (402), in dem es z. B. eine kryptografische Hash-Funktion durchführt. Die kryptografische Hash-Funktion kann z. B. einen sicheren Hash-Algorithmus (SHA) wie z. B. SHA1, SHA2, SHA3, SHA-256 oder einen MD5(message-digest)-Algorithmus enthalten. In einer bevorzugten Ausführungsform wird SHA 256 als kryptografische Hash-Funktion verwendet. Die vorliegende Technik ist nicht auf die Implementierung eines derartigen Beispielalgorithmus beschränkt, und andere Arten von Hash-Funktionen können ebenfalls implementiert werden.
-
Das Client-Gerät sendet den erzeugten Auszug der Anwendungs-Firmware an das Sicherheitsgerät (504). Nach Empfang des Firmware-Auszugs (506) überprüft das Sicherheitsgerät die Authentizität der Firmware (512) unter Verwendung des empfangenen Firmware-Auszugs, einer gespeicherten Firmware-Signatur (506) und eines gespeicherten öffentlichen Schlüssels (510). Das Sicherheitsgerät erzeugt eine Signatur auf Basis des empfangen Firmware-Auszugs und des gespeicherten öffentlichen Schlüssels und vergleicht die erzeugte Signatur mit der gespeicherten Firmware-Signatur, um festzustellen, ob diese übereinstimmen. Wenn die erzeugte Signatur nicht mit der gespeicherten Firmware-Signatur übereinstimmt, stellt das Sicherheitsgerät fest, dass die Verifikation der Firmware nicht erfolgreich war (514), d. h. die in dem Client-Geräts gespeicherte Firmware ist nicht autorisiert, und das Sicherheitsgerät geht in einen abgesicherten Modus (516), ähnlich zu dem abgesicherten Modus 312 in 3.
-
Wenn die erzeugte Signatur mit der gespeicherten Firmware-Signatur übereinstimmt, stellt das Sicherheitsgerät fest, dass die Verifikation der Firmware erfolgreich war (518). Als Reaktion auf die erfolgreiche Verifikation der Firmware ermöglicht das Sicherheitsgerät den Zugriff auf das I/O-Schutzgeheimnis, das in dem Sicherheitsgerät gespeichert ist (520). Das I/O-Schutzgeheimnis hat die Form gemeinsamer geheimer Daten mit dem Client-Gerät, das ein entsprechendes I/O-Schutzgeheimnis speichert (528).
-
Das Client-Gerät verwendet einen RNG, um eine Nonce zu erzeugen (522), z. B. einen Zähler, eine Zufallszahl und/oder eine Zeit, und sendet die Nonce an das Sicherheitsgerät. Das Sicherheitsgerät empfängt und speichert die Nonce in einem Register (524) und verwendet die Nonce und den Auszug der Anwendungs-Firmware als Nachricht. Das Sicherheitsgerät erzeugt einen MAC der Nachricht unter Verwendung des I/O-Schutzgeheimnisses (526), z. B. durch einen Algorithmus. Bei dem Algorithmus kann e sich z. B. um HMAC (keyed-hash message authentication code) oder einen AES (Advanced Encryption Standard) CMAC(Cipher-based message authentication code)(AES-CMAC)-Algorithmus oder um einen von vielen anderen Algorithmen handeln. In einer bevorzugten Ausführungsform verwendet das Sicherheitsgerät einen Verschlüsselungs-MAC-Algorithmus, z. B. AES-CMAC, um den MAC der Nachricht zu erzeugen.
-
Das Client-Gerät verwendet den erzeugten Firmware-Auszug (504) und die Nonce (522) als Nachricht und erzeugt einen MAC der Nachricht (530) unter Verwendung des gespeicherten gemeinsamen I/O-Schutzgeheimnisses (528). Das Client-Gerät empfängt den MAC, der durch das Sicherheitsgerät erzeugt wurde, und vergleicht den empfangenen MAC mit dem erzeugten MAC im Schritt 530, um festzustellen, ob diese beiden MACs miteinander übereinstimmen (532). Wenn diese beiden MACs übereinstimmen, stellt das Client-Gerät fest, dass die Nachrichtenauthentifizierung erfolgreich war und fährt mit der Ausführung einer Anwendung unter Verwendung der gespeicherten Firmware fort (534). Ansonsten, wenn die beiden MACs nicht übereinstimmen, stellt das Client-Gerät fest, dass die Nachrichtenauthentifizierung fehlgeschlagen ist und verhindert die Ausführung der Anwendung (536).
-
6 ist ein Flussdiagramm eines Beispielprozesses 600, mit dem ein Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer Codeverifikation für ein Client-Gerät durchgeführt, gemäß einer vierten beispielhaften Ausführungsform. Die Operationen im Kasten 601 werden z. B. durch das Client-Gerät ausgeführt, wohingegen die Operationen im Kasten 603 durch das Sicherheitsgerät ausgeführt werden. Das Sicherheitsgerät kann dem Sicherheitsgerät 118 aus 1 oder dem Sicherheitsgerät 202 aus 2 ähneln. Das Client-Gerät kann dem Client-Gerät 120 aus 1 oder dem Client-Gerät 204 aus 2 ähneln. Zu Darstellungszwecken handelt es sich hier bei dem Code um eine in dem Client-Gerät gespeicherte Firmware. Das Client-Gerät speichert die Anwendungs-Firmware und ein I/O-Schutzgeheimnis in einem Speicher des Client-Geräts. Das I/O-Schutzgeheimnis kann in einem abgesicherten Teil des Speichers gespeichert sein. Das Sicherheitsgerät speichert einen öffentlichen Fabrikschlüssel und eine Firmware-Signatur (z. B. eine OEM-Signatur der Anwendungs-Firmware), z. B. in einem sicheren Speicher.
-
Das Client-Gerät verschlüsselt die Anwendungs-Firmware, die in dem Client-Gerät gespeichert ist (602). Das Client-Gerät kann eine Verschlüsselungsfunktion, z. B. AES, TEA (Tiny Encryption Algorithm), XTEA (eXtended TEA), SEAL (Software-Optimized Encryption Algorithm), WAKE, oder einen von vielen anderen Algorithmen verwenden. Das Client-Gerät sendet die verschlüsselte Firmware an das Sicherheitsgerät (604). Das Sicherheitsgerät entschlüsselt die empfangene verschlüsselte Firmware, um die ursprünglich in dem Client-Gerät gespeicherte Firmware zu erhalten (606). Das Sicherheitsgerät erzeugt dann einen Auszug der entschlüsselten Firmware (608). Das Sicherheitsgerät kann eine Hardware-Hash-Engine enthalten, z. B. das kryptografische Modul 212 aus 2, das den Hashwert mit großer Geschwindigkeit erzeugen kann. Die von dem Client-Gerät verwendete Verschlüsselungsfunktion und die von dem Sicherheitsgerät verwendete Entschlüsselungsfunktion können eine hohe Geschwindigkeit und/oder hohe Sicherheit gewährleisten.
-
Das Sicherheitsgerät verifiziert die Authentizität der Firmware (614) unter Verwendung des erzeugten Auszugs, der gespeicherten Firmware-Signatur (610), und des gespeicherten öffentlichen Schlüssels (612). Das Sicherheitsgerät erzeugt eine Signatur des Auszugs unter Verwendung des gespeicherten öffentlichen Schlüssels und vergleicht die erzeugte Signatur mit der gespeicherten Firmware-Signatur. Wenn die erzeugte Signatur nicht mit der gespeicherten Firmware-Signatur übereinstimmt, stellt das Sicherheitsgerät fest, dass die Verifikation nicht erfolgreich war (616) und geht in einen abgesicherten Modus (618). Wenn die erzeugte Signatur der gespeicherten Firmware-Signatur entspricht, stellt das Sicherheitsgerät fest, dass die Verifikation erfolgreich war (620) und ermöglicht den Zugriff auf das gespeicherte I/O-Schutzgeheimnis (622).
-
Das Client-Gerät verwendet einen RNG zur Erzeugung einer Nonce (624) und sendet die Nonce an das Sicherheitsgerät. Das Sicherheitsgerät empfängt und speichert die Nonce in einem Register (626) und verwendet die Nonce als Nachricht. Das Sicherheitsgerät erzeugt dann einen MAC der Nachricht (628) unter Verwendung des I/O-Schutzgeheimnisses und sendet den erzeugte MAC an das Client-Gerät. Das Sicherheitsgerät kann den MAC parallel mit I/O-Aktivitäten erzeugen.
-
Das Client-Gerät verwendet auch die erzeugte Nonce (624) als Nachricht und erzeugt einen MAC der Nachricht (632) unter Verwendung des in dem Client-Gerät gespeicherten I/O-Schutzgeheimnisses, welches das gleiche sein kann wie das in dem Sicherheitsgerät gespeicherte I/O-Schutzgeheimnis. Das Client-Gerät vergleicht den erzeugten MAC mit dem empfangenen MAC von dem Sicherheitsgerät und stellt fest, ob die beiden MACs übereinstimmen (634). Wenn die beiden MACs übereinstimmen, stellt das Client-Gerät fest, dass die Nachrichtenauthentifizierung erfolgreich war und fährt mit der Ausführung einer Anwendung, die die gespeicherte Firmware verwendet, fort (636). Ansonsten, wenn die beiden MACs nicht übereinstimmen, stellt das Client-Gerät fest, dass die Nachrichtenauthentifizierung fehlgeschlagen ist und verhindert die Ausführung der Anwendung (638).
-
Um die Sicherheit zu erhöhen und/oder die Geschwindigkeit zu verbessern, kann ein Sicherheitsgerät eine teilweise Verifikation eines in einem Client-Gerät gespeicherten Codes durchführen, z. B. eine Verifikation eines Teils des Codes. 7A ist ein Flussdiagramm eines Beispielprozesses 700, mit dem ein Sicherheitsgerät die Authentizität einer Anwendungs-Firmware eines Client-Geräts gemäß einer beispielhaften Ausführungsform verifiziert. 7B ist ein Flussdiagramm eines anderen Beispielprozesses 750, mit dem ein Sicherheitsgerät Informationen von Teilen der Firmware für das Client-Gerät speichert, gemäß einer beispielhaften Ausführungsform. Die 8 und 9 zeigen Beispielprozesse, mit denen das Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer partieller Verifikation der Firmware für das Client-Gerät durchführt.
-
Das Sicherheitsgerät kann dem Sicherheitsgerät 118 aus 1 oder dem Sicherheitsgerät 202 aus 2 ähneln. Das Client-Gerät kann dem Client-Gerät 120 aus 1 oder dem Client-Gerät 204 aus 2 ähneln. Zu Illustrationszwecken handelt es hier bei dem Code um eine Anwendungs-Firmware, die in dem Client-Gerät gespeichert ist. Das Client-Gerät speichert die Anwendungs-Firmware und ein I/O-Schutzgeheimnis in einem Speicher des Client-Geräts. Das I/O-Schutzgeheimnis kann in einem abgesicherten Teil des Speichers gespeichert sein. Das Sicherheitsgerät speichert einen öffentlichen Fabrikschlüssel (z. B. einen öffentlichen OEM-Schlüssel) und eine authentifizierte Firmware-Signatur (z. B. eine OEM-Signatur), z. B. in einem sicheren Speicher.
-
Bezug nehmend auf 7A empfängt das Sicherheitsgerät ein Abbild der Anwendungs-Firmware (702), z. B. von einer Quelle. Bei der Quelle kann es sich um den Originalhersteller oder eine zuverlässige oder sichere Quelle handeln, wie z. B. das Host-Gerät 112, die Berechnungsgeräte 106a, 106b, oder das Serverberechnungssystem 108 aus 1. Das Sicherheitsgerät kann Informationen aktualisieren, die mit der Anwendungs-Firmware verbunden sind, in dem ein neues Abbild der Anwendungs-Firmware von der Quelle heruntergeladen wird.
-
Das Sicherheitsgerät berechnet einen Auszug der Anwendungs-Firmware (704) und erzeugt dann eine Signatur des Auszugs der Anwendungs-Firmware unter Verwendung eines öffentlichen Schlüssels (706), z. B. eines öffentlichen OEM-Schlüssels, der innerhalb des Sicherheitsgeräts gespeichert ist. Das Sicherheitsgerät vergleicht die erzeugte OEM-Signatur mit der gespeicherten Firmware-Signatur (708) und verifiziert die Authentizität der Anwendungs-Firmware auf Basis des Vergleichs (710). Wenn die erzeugte Signatur nicht mit der gespeicherten Firmware-Signatur übereinstimmt, stellt das Sicherheitsgerät fest, dass das empfangene Abbild der Anwendungs-Firmware nicht autorisiert oder nicht authentisch ist. Das Sicherheitsgerät kann dann das empfangene Abbild verwerfen. Wenn die erzeugte Signatur der gespeicherten Firmware-Signatur entspricht, stellt das Sicherheitsgerät fest, dass das empfangene Abbild der Anwendungs-Firmware autorisiert oder authentisch ist. Das Sicherheitsgerät kann einen Auszug des neuen Abbildes der Anwendungs-Firmware in dem sicheren Speicher speichern, oder mit dem Schritt 750 fortfahren, z. B. ohne das gesamte Abbild der Anwendungs-Firmware zu speichern.
-
Bezug nehmend auf 7B, kann der Prozess 750 ausgeführt werden, nachdem die Authentizität des empfangenen Abbilds der Anwendungs-Firmware verifiziert wurde. Das Sicherheitsgerät wählt eine Vielzahl von Adressbereichen für eine Vielzahl von Teilen der Anwendungs-Firmware aus (752). Das Sicherheitsgerät kann die Vielzahl der Adressbereiche zufällig aus einem Adressbereich auswählen, der durch eine Startadresse und eine Endadresse der Anwendungs-Firmware definiert ist. Die ausgewählten Adressbereiche können sich voneinander unterscheiden und die gleiche oder unterschiedliche Größen haben. Die ausgewählten Adressbereiche können Adressbereiche enthalten, die kritischen Teilen der Anwendungs-Firmware entsprechen. Das Sicherheitsgerät kann die kritischen Teile häufiger überprüfen als andere nicht kritische Teile. Jedes Mal, wenn das Sicherheitsgerät ein neues Abbild der Anwendungs-Firmware aktualisiert, kann das Sicherheitsgerät eine andere Vielzahl von Adressbereichen auswählen, die sich von den vorherigen Adressbereichen unterscheiden.
-
Das Sicherheitsgerät ermittelt einen entsprechenden Teil für jeden Adressbereich (754) und berechnet einen entsprechenden Auszug für jeden Teil (756). Das Sicherheitsgerät speichert erste Informationen, die die jeweiligen Eigenschaften der Teile der Anwendungs-Firmware angeben, und zweite Informationen, die die jeweiligen Speicheradressbereiche in dem sicheren Speicherbereich angeben (758), und verknüpft entsprechende Speicheradressbereiche aus der Vielzahl der Speicheradressbereiche mit Eigenschaften aus der Vielzahl der Eigenschaften in dem sicheren Speicherbereich (760). Man beachte, dass das Sicherheitsgerät nur die Auszüge mit verknüpften Speicheradressbereichen speichern muss, ohne das Abbild der Anwendungs-Firmware oder Teile der Anwendungs-Firmware zu speichern.
-
Bezug nehmend zu 8 zeigt der Prozess 800, dass das Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer partieller Verifikation der Firmware für das Client-Gerät durchführt. Die Operationen in der Box 801 werden z. B. durch das Client-Gerät durchgeführt, wohingegen die Operationen in der Box 803 durch das Sicherheitsgerät durchgeführt werden. Das Sicherheitsgerät wählt einen Adressbereich (802) aus den Speicheradressbereichen aus, die in dem sicheren Speicher gespeichert sind. Das Sicherheitsgerät kann den Adressbereich zufällig aus der Zahl der Speicheradressbereiche auswählen. Das Sicherheitsgerät kann auch den Adressbereich so auswählen, dass er einem kritischen Teil der Anwendungs-Firmware entspricht. Das Sicherheitsgerät kann auch den Adressbereich auf Basis von Größen entsprechender Teile der Adressspeicherbereiche auswählen. Um z. B. bestimmte Einschränkungen hinsichtlich der Hochfahrzeit zu berücksichtigen, kann das Sicherheitsgerät einen Adressbereich entsprechend eines Teils mit einem kleineren Umfang oder einem größeren Umfang auswählen.
-
In manchen Implementierungen wird verlangt, dass das Client-Gerät einen neue Validierung auf Basis eines vorgegebenen Zeitplans ausführt, z. B. jede Sekunde, oder jedes Mal, wenn das Client-Gerät hochfährt. Das Sicherheitsgerät kann jedes Mal einen anderen Speicherbereich entsprechend eines anderen Teils der Anwendungs-Firmware auswählen, so dass eine Zahl von Teilen der Anwendungs-Firmware, die in dem Client-Gerät gespeichert ist, im Verlaufe der Zeit verifiziert werden kann. Das Sicherheitsgerät kann auch die Statistik der Auswahl der unterschiedlichen Teile variieren, um eine Aufzeichnung der gespeicherten Speicherbereiche zu erschweren.
-
In manchen Implementierungen enthält ein System eine Zahl von Subsystemen, die jeweils ein entsprechendes Client-Gerät und ein entsprechendes Sicherheitsgerät enthalten. Die Subsysteme können identisch zueinander sein. Die Client-Geräte führen die gleiche Operation aus, z. B. eine Startoperation unter Verwendung des gleichen Codes. Jedes der Sicherheitsgeräte kann einen Satz von Teilen des Codes auswählen und diesen Satz von Teilen für die sichere Code-Authentifizierung mit dem entsprechend Client-Gerät verwenden. Unterschiedliche Sicherheitsgeräte können unterschiedliche Sätze von Teilen des Codes auswählen und/oder unterschiedliche Sätze von Adressbereichen für die Client-Geräte haben. In manchen Fällen aktualisiert ein Sicherheitsgerät ein neues Abbild des Codes und wählt einen neuen Satz von Teilen des Codes aus. Der neue Satz von Teilen des Codes kann sich von dem vorherigen Satz von Teilen unterscheiden, die durch das gleiche Sicherheitsgerät ausgewählt wurden.
-
In manchen Implementierungen unterscheiden sich die Subsysteme voneinander. Das Client-Gerät in jedem Subsystem kann eine entsprechende Operation unter Verwendung eines entsprechenden Codes ausführen. Jedes Sicherheitsgerät kann einen Satz von Teilen des entsprechenden Codes auswählen und den Satz von Teilen für eine sichere Code-Authentifizierung mit dem entsprechenden Client-Gerät verwenden. Die Codes für unterschiedliche Client-Geräte können sich voneinander unterscheiden. Unterschiedliche Sicherheitsgeräte können unterschiedliche Sätze von Teilen der unterschiedlichen Codes für die sichere Code-Authentifizierung mit den Client-Geräten auswählen.
-
Unter erneuter Bezugnahme auf 8 empfängt das Client-Gerät den ausgewählten Adressbereich von dem Sicherheitsgerät (804). Das Client-Gerät ermittelt einen entsprechenden Teil der Anwendungs-Firmware, die in dem Client-Gerät gespeichert ist, auf Basis des Adressbereichs. Das Client-Gerät erzeugt dann einen Auszug des Teils der Anwendungs-Firmware (806).
-
Das Client-Gerät sendet den erzeugten Auszug des Teils der Anwendungs-Firmware an das Sicherheitsgerät (808). Das Sicherheitsgerät empfängt den Auszug von dem Client-Gerät (810) und verifiziert den empfangenen Auszug mit einem gespeicherten Auszug (812), der mit dem ausgewählten Adressbereich in dem sicheren Speicher verknüpft ist (814). Wenn der empfangene Auszug nicht mit dem gespeicherten Auszug übereinstimmt, stellt das Sicherheitsgerät fest, dass die Verifikation nicht erfolgreich war (816), d. h. der Teil der Anwendungs-Firmware, der in dem Client-Gerät gespeichert ist, ist nicht autorisiert. Das Sicherheitsgerät kann feststellen, dass die in dem Client-Gerät gespeicherte Firmware nicht autorisiert oder nicht vertrauenswürdig ist. Als Reaktion auf die Feststellung, dass die Verifikation nicht erfolgreich war, geht das Sicherheitsgerät in einen abgesicherten Modus (818), ähnlich dem abgesicherten Modus (312) aus 3.
-
Wenn der empfangene Auszug dem gespeicherten Auszug entspricht, stellt das Sicherheitsgerät fest, dass die Verifikation erfolgreich war (820), d. h., der Teil der Anwendungs-Firmware, der in dem Client-Gerät gespeichert ist, ist autorisiert. Das Sicherheitsgerät kann feststellen, dass die in dem Client-Gerät gespeicherte Firmware ebenfalls autorisiert ist. in manchen Fällen kann das Sicherheitsgerät einen oder mehrere unterschiedliche Adressbereiche für nachfolgende Verifikationen mit dem Client-Gerät auswählen. Wenn alle Verifikationen erfolgreich sind, stellt das Sicherheitsgerät fest, dass die in dem Client-Gerät gespeicherte Firmware autorisiert ist.
-
Als Reaktion auf die Feststellung, dass die Verifikation erfolgreich war, gibt das Sicherheitsgerät den Zugriff auf das in dem sicheren Speicher gespeicherte I/O-Schutzgeheimnis frei, das mit dem Client-Gerät geteilt wird (822). In manchen Implementierungen verwendet das Client-Gerät einen RNG zur Erzeugung einer Nonce (824) und sendet die Nonce an das Sicherheitsgerät. Das Sicherheitsgerät empfängt und speichert die Nonce in einem Register (826) und verwendet die empfangene Nonce und den empfangenen Auszug des Teils der Anwendungs-Firmware als Nachricht. Das Sicherheitsgerät erzeugt einen MAC der Nachricht unter Verwendung des gespeicherten I/O-Schutzgeheimnisses (828) und sendet den erzeugten MAC an das Client-Gerät.
-
Das Client-Gerät speichert das gemeinsame I/O-Schutzgeheimnis (830). Das Client-Gerät verwendet den erzeugten Auszug des Teils der Anwendungs-Firmware und erzeugt eine Nonce als Nachricht, und erzeugt einen MAC der Nachricht auf Basis des gemeinsamen I/O-Schutzgeheimnisses (832). Das Client-Gerät stellt fest, ob der erzeugte MAC mit dem empfangenen MAC von dem Sicherheitsgerät übereinstimmt (834). Wenn die beiden MACs übereinstimmen, fährt das Client-Gerät mit der Ausführung einer entsprechenden Anwendung unter Verwendung der gespeicherten Anwendungs-Firmware fort, z. B. setzt das Hochfahren fort (836). Ansonsten, wenn die beiden MACs nicht übereinstimmen, hindert das Client-Gerät sich selbst an der Ausführung der Anwendung (838).
-
Bezug nehmend auf 9 zeigt der Prozess 900 eine andere Implementierung, in der das Sicherheitsgerät eine Nachrichtenauthentifizierung mit sicherer partieller Verifikation der Firmware für das Client-Gerät durchführt. Die Operationen im Kasten 901 werden z. B. durch das Client-Gerät durchgeführt, wohingegen die Operationen im Kasten 903 durch das Sicherheitsgerät ausgeführt werden.
-
Das Sicherheitsgerät wählt einen Adressbereich aus einer Vielzahl von Speicheradressbereichen aus, die in dem sicheren Speicher gespeichert sind (902). Der ausgewählte Adressbereich entspricht einem Teil der Anwendungs-Firmware und ist mit einem Auszug des Teils der Anwendungs-Firmware verknüpft (912), die in dem sicheren Speicher des Sicherheitsgeräts gespeichert ist. Der Schritt 902 kann dem Schritt 802 aus 8 ähneln.
-
Das Client-Gerät empfängt den ausgewählten Adressbereich von dem Sicherheitsgerät (904). Auf Basis des Adressbereichs ermittelt das Client-Gerät einen Teil der in dem Client-Gerät gespeicherten Anwendungs-Firmware. Das Client-Gerät verschlüsselt dann den ermittelten Teil der Anwendungs-Firmware (906) und sendet den verschlüsselten Teil der Anwendungs-Firmware an das Sicherheitsgerät.
-
Das Sicherheitsgerät entschlüsselt den empfangenen verschlüsselten Teil (908), um den ursprünglichen Teil der Anwendungs-Firmware zu erhalten. Das Sicherheitsgerät erzeugt dann einen Auszug des Teils der Anwendungs-Firmware (910) und überprüft die Korrektheit des Teils der Anwendungs-Firmware (914), indem der erzeugte Auszug mit dem gespeicherten Auszug verglichen wird (912), der mit dem Adressbereich in dem sicheren Speicher verknüpft ist. Wenn der erzeugte Auszug nicht mit dem gespeicherten Auszug übereinstimmt, stellt das Sicherheitsgerät fest, dass die Verifikation nicht erfolgreich war (916) und geht in einen abgesicherten Modus (918). Wenn der erzeugte Auszug dem gespeicherten Auszug entspricht, stellt das Sicherheitsgerät fest, dass die Verifikation erfolgreich war (920). Auf Basis der erfolgreichen Verifikation des Teils der Anwendungs-Firmware kann das Sicherheitsgerät des Weiteren feststellen, dass die in dem Client-Gerät gespeicherte Firmware autorisiert (oder vertrauenswürdig) ist.
-
Als Reaktion auf die erfolgreiche Verifikation des Teils der Firmware gibt das Sicherheitsgerät den Zugriff auf das in dem sicheren Speicher gespeicherte I/O-Schutzgeheimnis frei (922). Das I/O-Schutzgeheimnis wird mit dem Client-Gerät geteilt. Das Client-Gerät verwendet einen RNG zur Erzeugung einer Nonce (924) und sendet die Nonce an das Sicherheitsgerät. Das Sicherheitsgerät empfängt und speichert die Nonce in einem Register (926) und verwendet die Nonce als Nachricht. Das Sicherheitsgerät erzeugt einen MAC der Nachricht unter Verwendung des gespeicherten I/O-Schutzgeheimnisses (928) und sendet den erzeugten MAC an das Client-Gerät.
-
Das Client-Gerät speichert das gemeinsame I/O-Schutzgeheimnis (930). Das Client-Gerät verwendet die erzeugte Nonce als Nachricht und erzeugt einen MAC der Nachricht auf Basis des gemeinsamen I/O-Schutzgeheimnisses (932). Das Client-Gerät stellt fest, ob der erzeugte MAC dem empfangenen MAC von dem Sicherheitsgerät entspricht (934). Wenn die beiden MACs übereinstimmen, fährt das Client-Gerät mit der Ausführung einer entsprechenden Anwendung unter Verwendung der gespeicherten Anwendungs-Firmware fort, z. B. fährt mit dem Hochfahren fort (936). Ansonsten, wenn die beiden MACs nicht übereinstimmen, hindert das Client-Gerät sich selbst daran, die Anwendung auszuführen (938).
-
Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können implementiert werden, um einen oder mehrere der folgenden Vorteile zu implementieren. Diese Technik liefert eine Lösung, um eine sichere Code-Authentifizierung, z. B. sicheres Hochfahren, mit einem Schutz für Nachrichten zu verbinden. Sie ermöglicht die Verwendung von geheimen Daten als Teil eines Verifikations-MACs unter der Voraussetzung, dass das sichere Hochfahren verifiziert wurde. Wenn das sichere Hochfahren nicht verifiziert wurde, verhindert es die Verwendung des Geheimnisses als Teil des Verifikations-MACs, wodurch ein Hardware-basierter Man-in-the-Middle-Angriff erschwert wird. Diese Technik ermöglicht die Verwendung von Mikrocontrollern mit niedriger Leistungsfähigkeit und Sicherheitsfähigkeiten als Teil eines CAN (controlled area network), z. B. im Bereich der Fahrzeugtechnik oder anderen Industriebereichen für Sicherheitsanwendungen. Ein Client-Prozessor hat z. B. nicht die erforderlichen Berechnungsfähigkeiten oder Speicherkapazitäten, um eine sichere Bootoperation auszuführen, und diese kann an ein Sicherheitsgerät abgegeben werden. Diese Technik kann für ein hierarchisches sicheres Hochfahren verwendet werden, das für größere reichhaltige OS-basierte Systeme verwendet werden kann. Ein Pre-Boot-ROM verwendet z. B. ein Sicherheitsgerät, um die Authentizität des innerhalb eines Client-Geräts gespeicherten Boot-Codes zu verifizieren, z. B. kann das Sicherheitsgerät eine partielle Verifikation des Boot-Codes verwenden. Der Boot-Code kann eine Software enthalten, z. B. eine Ladesoftware, um eine nächste Stufe des Codes zu verifizieren. Die Ladesoftware kann einen Code überprüfen, bevor er in den Speicher geladen wird, was von Bedeutung sein kann, um beliebigen vertrauenswürdigen Code zu validieren. Die Technik kann im Bereich des Infotainment, der Telematik und/oder anderen Systemen verwendet werden, auf denen Linux, Android, Unix, etc. läuft.
-
Ausführungsformen des Gegenstands und der hier beschriebenen funktionalen Operationen können in digitalen elektronischen Schaltungen, in konkret ausgeführter Computer-Software oder -Firmware, in Computer-Hardware, oder in anderen der hier beschriebenen Strukturen und ihren strukturellen Äquivalenten, oder in Kombinationen derselben implementiert werden. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können in Form von einem oder von mehreren Computerprogrammen implementiert werden, d. h., in Form von einem oder von mehreren Modulen von Computerprogrammanweisungen, die auf einem greifbaren, nicht transitorischen Programmspeicher zur Ausführung durch, oder zur Steuerung des Betriebs von Datenverarbeitungseinheiten gespeichert sind. Alternativ dazu oder zusätzlich können die Programmanweisungen auf künstlich erzeugten Ausbreitungssignalen, z. B. maschinenerzeugten elektrischen, optischen oder elektromagnetischen Signalen, die erzeugt wurden, um Informationen zur Übertragung an geeignete Empfangsvorrichtungen zur Ausführung durch eine Datenverarbeitungsvorrichtung zu codieren. Das Computerspeichermedium kann ein maschinenlesbares Speichergerät, ein maschinenlesbares Speichersubstrat, ein Speichergerät mit wahlfreiem oder seriellem Zugriff, oder eine Kombination von einem oder von mehreren derselben sein.
-
Die in dieser Spezifikation beschriebenen Prozesse und logischen Abläufe können durch einen oder durch mehrere programmierbare Computer ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen auszuführen, in dem auf Eingabedaten operiert wird und Ausgaben erzeugt werden. Die Prozesse und logischen Abläufe können auch durchgeführt werden durch, und die Vorrichtungen können auch implementiert sein als, logische Schaltungen für spezielle Aufgaben, wie z. B. als FPGA (field programmable gate array) oder als ASIC (anwendungsspezifische integrierte Schaltung).
-
Computer, die für die Ausführung eines Computerprogramms geeignet sind, enthalten, z. B. können basiert sein auf Universal- oder Spezialmikroprozessoren oder beidem, oder beliebigen anderen Arten von Zentralverarbeitungseinheiten. Im Allgemeinen wird eine Zentralverarbeitungseinheit Anweisungen und Daten von einem Nur-Lese-Speicher oder einem RAM oder beidem empfangen. Die essentiellen Elemente eines Computers sind eine Zentralverarbeitungseinheit zur Durchführung oder Ausführung von Anweisungen und ein oder mehrere Speichergeräte zur Speicherung von Anweisungen und Daten. Im Allgemeinen wird ein Computer auch ein oder mehrere Massenspeichergeräte zur Speicherung von Daten enthalten oder operativ mit diesen für den Empfang von Daten von diesen gekoppelt sein, wie z. B. magnetischen, magnetooptischen Platten, oder optischen Platten. Ein Computer muss jedoch keine derartigen Geräte haben. Darüber hinaus kann ein Computer in einem anderen Gerät enthalten sein, wie z. B. einem Mobiltelefon, einem persönlichen digitalen Assistenten (PDA), einem mobilen Audio- oder Video-Abspielgerät, einer Spielekonsole, einem GPS(Global Positioning System)-Empfänger, oder einem tragbaren Speichergerät, z. B. einem USB(universal serial bus)-Speicher, um nur einige wenige zu nennen.
-
Computerlesbare Medien, die zur Speicherung von Computerprogrammanweisungen und Daten geeignet sind, enthalten alle Formen von nichtflüchtigem Speicher, Medien und Speichergeräten, wie z. B. Halbleiterspeichergeräte, z. B. EPROM, EEPROM, und Flash-Speichergeräten; magnetischen Platten z. B. interne Festplatten oder entfernbare Platten; magnetooptische Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor und der Speicher können durch logische Schaltungen für spezielle Zwecke ergänzt werden oder in diesen enthalten sein.
-
Obgleich diese Spezifikation zahlreiche spezifische Implementierungseinzelheiten enthält, sollten diese nicht als Beschränkung für den Umfang der Erfindung oder den beanspruchten Schutzumfang ausgelegt werden, sondern als Beschreibung von Merkmalen, die bestimmten Ausführungsformen von bestimmten Erfindungen zu eigen sein können. Bestimmte Merkmale, die in dieser Spezifikation 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 einzigen Ausführungsform beschrieben wurden, auch in mehreren Ausführungsformen getrennt voneinander oder in jeder geeigneten Subkombination miteinander implementiert werden. Obwohl darüber hinaus Merkmale als in bestimmten Kombinationen zusammenwirkend und sogar anfänglich derart beansprucht wurden, können ein oder mehrere Merkmale aus einer beanspruchten Kombination in manchen Fällen aus der Kombination herausgelöst werden, und die beanspruchte Kombination kann auf eine Unterkombination oder eine Variation einer Unterkombination gerichtet werden.
-
Obwohl Operationen in den Zeichnungen in einer bestimmten Reihenfolge dargestellt sind, sollten diese nicht so verstanden werden, als dass diese Operationen in der dargestellten Reihenfolge oder der Reihe nach ausgeführt werden müssen, oder dass alle dargestellten Operationen ausgeführt werden müssen, um wünschenswerte Ergebnisse zu erzielen. Unter bestimmten Umständen kann ein Multitasking oder eine parallele Verarbeitung von Vorteil sein. Darüber hinaus sollte die Trennung der verschiedenen Systemmodule und Komponenten in den oben beschriebenen Ausführungsformen nicht so verstanden werden, dass eine derartige Separation in allen Ausführungsformen erforderlich ist, und es versteht sich, dass die beschriebenen Programmkomponenten und Systems im Allgemeinen miteinander zu einem einzigen Softwareprodukt zusammengefasst werden können, oder in mehrere Softwareprodukte gepackt werden können.
-
Somit wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Andere Ausführungsformen liegen im Rahmen der vorliegenden Ansprüche. In manchen Fällen können die in den Ansprüchen angeführten Aktionen in einer anderen Reihenfolge ausgeführt werden und dennoch zu wünschenswerten Ergebnissen führen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise genau die dargestellte Reihenfolge, um wünschenswerte Ergebnisse zu erzielen. In bestimmten Implementierungen kann ein Multitasking und eine parallele Ausführung von Vorteil sein.