DE102017205948A1 - Nachrichtenauthentifizierung mit sicherer Codeverifikation - Google Patents

Nachrichtenauthentifizierung mit sicherer Codeverifikation Download PDF

Info

Publication number
DE102017205948A1
DE102017205948A1 DE102017205948.6A DE102017205948A DE102017205948A1 DE 102017205948 A1 DE102017205948 A1 DE 102017205948A1 DE 102017205948 A DE102017205948 A DE 102017205948A DE 102017205948 A1 DE102017205948 A1 DE 102017205948A1
Authority
DE
Germany
Prior art keywords
code
client device
security device
message
property
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102017205948.6A
Other languages
English (en)
Inventor
Kerry Maletsky
Oscar Sanchez
Nicolas Schieli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atmel Corp
Original Assignee
Atmel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atmel Corp filed Critical Atmel Corp
Publication of DE102017205948A1 publication Critical patent/DE102017205948A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0853Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Storage Device Security (AREA)

Abstract

Systeme, Verfahren, Schaltungen und computerlesbare Medien zur Nachrichtenauthentifizierung mit sicherer Codeverifikation werden zur Verfügung gestellt. 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 wurde, die Korrektheit der Eigenschaft des Codes auf Basis von Informationen zu verifizieren, die mit dem Code assoziiert sind, um festzustellen, dass der Code ein autorisierter Code ist, wobei die Informationen in dem Sicherheitsgerät gespeichert sind. Als Reaktion auf die Feststellung, dass der Code der autorisierte Code ist, ermöglicht das Sicherheitsgerät den Zugriff auf in dem Sicherheitsgerät gespeicherte Daten und erzeugt eine Eigenschaft einer Nachricht auf Basis der Daten.

Description

  • 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.

Claims (25)

  1. System, umfassend: ein Client-Gerät, das einen Code speichert; und ein Sicherheitsgerät, das mit dem Client-Gerät gekoppelt ist und dazu konfiguriert ist: eine erste durch das Client-Gerät erzeugte Eigenschaft des Codes zu empfangen; die Korrektheit der ersten Eigenschaft des Codes auf Basis von Informationen zu überprüfen, die mit dem Code assoziiert sind, um festzustellen, dass der Code ein autorisierter Code ist, wobei die Informationen in dem Sicherheitsgerät gespeichert sind; als Reaktion auf die Feststellung, dass der Code der autorisierte Code ist, das Sicherheitsgerät in die Lage zu versetzen, auf erste Daten zuzugreifen, die in dem Sicherheitsgerät gespeichert sind; und eine zweite Eigenschaft einer ersten Nachricht auf Basis der ersten Daten zu erzeugen.
  2. System nach Anspruch 1, wobei das Client-Gerät dazu konfiguriert ist: die erzeugte zweite Eigenschaft der ersten Nachricht von dem Sicherheitsgerät zu empfangen; die zweite Eigenschaft einer zweiten Nachricht auf Basis von zweiten Daten zu erzeugen, die in dem Client-Gerät gespeichert sind, wobei die zweiten Daten den ersten Daten entsprechen, die in dem Sicherheitsgerät gespeichert sind; festzustellen, ob die erzeugte zweite Eigenschaft der zweiten Nachricht gültig ist auf Basis der empfangenen erzeugten zweiten Eigenschaft der ersten Nachricht; als Reaktion auf die Feststellung, dass die erzeugte zweite Eigenschaft der zweiten Nachricht gültig ist, eine Anwendung auf dem Client-Gerät unter Verwendung des Codes auszuführen; und ansonsten, als Reaktion auf die Feststellung, dass die erzeugte Eigenschaft der zweiten Nachricht ungültig ist, des Client-Gerät an der Ausführung der Anwendung auf dem Client-Gerät unter Verwendung des Codes zu hindern.
  3. System nach Anspruch 2, wobei das Client-Gerät dazu konfiguriert ist, eine Nonce an das Sicherheitsgerät zu senden, und wobei die erste Nachricht die Nonce umfasst, und die zweite Nachricht die Nonce umfasst.
  4. System nach Anspruch 3, wobei die erste Nachricht die empfangene erste Eigenschaft des Codes umfasst, und wobei die zweite Nachricht die erste Eigenschaft des Codes umfasst.
  5. System nach Anspruch 2, wobei das Sicherheitsgerät dazu konfiguriert ist: als Reaktion auf die Feststellung, dass der Code der autorisierte Code ist, einen Wert an das Client-Gerät zu senden, der die erfolgreiche Verifikation des Codes anzeigt; und eine Nonce von dem Client-Gerät zu empfangen, wobei die erste Nachricht den Wert und die Nonce umfasst, und die zweite Nachricht den empfangenen Wert und die Nonce umfasst.
  6. System nach Anspruch 1, wobei das Sicherheitsgerät dazu konfiguriert ist: die erste Nachricht von dem Client-Gerät zu empfangen, wobei die erste Nachricht an ein entferntes Gerät gerichtet ist; die erzeugte zweite Eigenschaft der ersten Nachricht an die erste Nachricht anzuhängen; und zu veranlassen, dass die erste Nachricht zusammen mit der angehängten zweiten Eigenschaft der ersten Nachricht an das entfernte Gerät gesendet wird.
  7. System nach Anspruch 1, wobei der Code einen Boot-Code enthält, der in dem Client-Gerät gespeichert ist.
  8. System nach Anspruch 1, wobei die zweite Eigenschaft der ersten Nachricht einen Nachrichtenauthentifizierungscode (MAC) der ersten Nachricht umfasst.
  9. Nichttransitorisches, computerlesbares Speichermedium mit darauf gespeicherten Anweisungen, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren dazu veranlassen, Operationen auszuführen, die umfassen: Zugreifen auf eine Eigenschaft eines Codes, wobei der Code in einem Client-Gerät gespeichert ist; Überprüfen der Korrektheit der Eigenschaft des Codes auf Basis von Informationen, die mit dem Code assoziiert sind und in einem Sicherheitsgerät gespeichert sind, um festzustellen, dass der Code ein autorisierter Code ist; als Reaktion auf die Feststellung, dass der Code der autorisierte Code ist, Zugreifen auf Daten, die in dem Sicherheitsgerät gespeichert sind; und Erzeugen einer Eigenschaft einer Nachricht auf Basis der Daten.
  10. Computerlesbares Speichermedium nach Anspruch 9, wobei die Operationen umfassen: als Reaktion auf die Feststellung, dass der Code der autorisierte Code ist, Veranlassen, dass ein Wert, der die erfolgreiche Verifikation des Codes anzeigt, an das Client-Gerät gesendet wird; und Zugreifen auf eine Nonce von dem Client-Gerät, wobei die Nachricht den Wert und die Nonce umfasst.
  11. Computerlesbares Speichermedium nach Anspruch 9, wobei die Operationen umfassen: Zugreifen, an dem Sicherheitsgerät, auf eine Nonce von dem Client-Gerät, und wobei die Nachricht die Nonce umfasst.
  12. Computerlesbares Speichermedium nach Anspruch 9, wobei die Nachricht die Eigenschaft des Codes umfasst.
  13. Computerlesbares Speichermedium nach Anspruch 9, wobei die Eigenschaft des Codes einen Auszug des Codes umfasst, der durch das Client-Gerät erzeugt wurde, wobei Informationen, die mit dem Code assoziiert sind, eine Signatur des autorisierten Codes, der in dem Sicherheitsgerät gespeichert ist, umfassen und wobei die Verifikation der Korrektheit der Eigenschaft des Codes umfasst; Erzeugen einer Signatur des Codes auf Basis des Auszugs des Codes und eines öffentlichen Schlüssels, der in dem Sicherheitsgerät gespeichert ist; und Feststellen, dass die erzeugte Signatur des Codes mit der gespeicherten Signatur des autorisierten Codes übereinstimmt.
  14. Computerlesbares Speichermedium nach Anspruch 9, wobei die Eigenschaft des Codes verschlüsselte Daten des Codes umfasst, wobei die Operationen umfassen: Entschlüsseln, an dem Sicherheitsgerät, der verschlüsselten Daten des Codes; und Erzeugen eines Auszugs der verschlüsselten Daten des Codes, und wobei die Verifikation der Korrektheit der Eigenschaft des Codes umfasst: Erzeugen einer Signatur des Codes auf Basis des erzeugten Auszugs und eines öffentlichen Schlüssels, der in dem Sicherheitsgerät gespeichert ist; und Feststellen, dass die erzeugte Signatur des Codes mit der Signatur des autorisierten Codes übereinstimmt.
  15. Computerlesbares Speichermedium nach Anspruch 9, wobei die Operationen umfassen: Auswählen einer Vielzahl von Speicheradressbereichen des autorisierten Codes; Ermitteln eines entsprechenden Teils des autorisierten Codes für jeden der Vielzahl der Speicheradressbereiche; Berechnen einer entsprechenden Eigenschaft eines jeden ermittelten Teils des autorisierten Codes; Speichern erster Informationen, die die entsprechenden Eigenschaften der Teile des autorisierten Codes angeben, und zweiter Informationen, die die jeweiligen Speicheradressbereiche in dem Sicherheitsgerät angeben; und Verknüpfen von Speicheradressbereichen aus der Vielzahl der Speicheradressbereiche mit Eigenschaften aus den Eigenschaften der Teile.
  16. Computerlesbares Speichermedium nach Anspruch 15, wobei die Operationen umfassen: Auswählen eines bestimmten Speicheradressbereichs aus der Vielzahl der Speicheradressbereiche; und Veranlassen, dass Daten, die den bestimmten Speicheradressbereich angeben, an das Client-Gerät gesendet werden, wobei der bestimmte Speicheradressbereich einem bestimmten Teil des autorisierten Codes entspricht.
  17. Computerlesbares Speichermedium nach Anspruch 16, wobei die Eigenschaft des Codes einen Auszug eines Teils des Codes umfasst, und wobei die Verifikation der Korrektheit der Eigenschaft des Codes umfasst: Feststellen, dass der Auszug des Teils des Codes mit einem Auszug des bestimmten Teils des autorisierten Codes übereinstimmt, der in dem Sicherheitsgerät gespeichert ist.
  18. Computerlesbares Speichermedium nach Anspruch 16, wobei die Eigenschaft des Codes verschlüsselte Daten eines Teils des Codes umfasst, wobei die Operationen umfassen: Entschlüsseln, an dem Sicherheitsgerät, der verschlüsselten Daten des Teils des Codes, um einen entschlüsselten Teil des Codes zu erhalten; und Erzeugen eines Auszugs des entschlüsselten Teils des Codes, und wobei die Verifikation der Korrektheit der Eigenschaft des Codes umfasst: Feststellen, dass der erzeugte Auszug des entschlüsselten Teils des Codes mit dem gespeicherten Auszug des bestimmten Teils des autorisierten Codes übereinstimmt.
  19. Computerlesbares Speichermedium nach Anspruch 9, wobei die Operationen umfassen: Zugreifen auf ein gesamtes Abbild des autorisierten Codes; Zugreifen auf eine Signatur des autorisierten Codes; Berechnen eines Auszugs aus dem gesamten Abbild des autorisierten Codes; Erzeugen einer Signatur des Auszugs auf Basis eines öffentlichen Schlüssels, der in dem Sicherheitsgerät gespeichert ist; und Verifikation der Authentizität des gesamten Abbilds des autorisierten Codes auf Basis der zugegriffenen Signatur und der erzeugten Signatur.
  20. Computerlesbares Speichermedium nach Anspruch 9, wobei die Eigenschaft des Codes einen Auszug des Codes umfasst, der durch das Client-Gerät erzeugt wurde, wobei mit dem Code assoziierte Informationen einen öffentlichen Schlüssel umfassen, der in dem Sicherheitsgerät gespeichert ist, und wobei die Operationen umfassen: Zugreifen, an dem Sicherheitsgerät, auf eine Signatur des autorisierten Codes von dem Client-Gerät, wobei die Signatur des autorisierten Codes in dem Client-Gerät gespeichert ist; und Erzeugen einer Signatur des empfangenen Auszugs des Codes auf Basis des gespeicherten öffentlichen Schlüssels, und wobei die Verifikation der Korrektheit der Eigenschaft des Codes umfasst: Feststellen, dass die erzeugte Signatur des Auszugs des Codes mit der empfangenen Signatur des autorisierten Codes übereinstimmt.
  21. Computerlesbares Speichermedium nach Anspruch 9, wobei die Operationen umfassen: Zugreifen auf die Nachricht von dem Client-Gerät, wobei die Nachricht an ein entferntes Gerät gerichtet ist; Anhängen der erzeugten Eigenschaft der Nachricht an die Nachricht; und Veranlassen, dass die Nachricht zusammen mit der angehängten Eigenschaft der Nachricht an das entfernte Gerät gesendet wird.
  22. Computerlesbares Speichermedium nach Anspruch 9, wobei die Eigenschaft der Nachricht einen Nachrichtenauthentifizierungscode (MAC) der Nachricht umfasst.
  23. Computerlesbares Speichermedium nach Anspruch 9, wobei die Operationen umfassen: Zugreifen auf eine Eigenschaft eines zweiten Codes; Verifizieren der Inkorrektheit der Eigenschaft des zweiten Codes auf Basis von Informationen, die mit dem zweiten Code assoziiert sind und in dem Sicherheitsgerät gespeichert sind; und auf Basis der Verifikation der Inkorrektheit der Eigenschaft des zweiten Codes, Verhindern, dass das Sicherheitsgerät auf die in dem Sicherheitsgerät gespeicherten Daten zugreift.
  24. Computerlesbares Speichermedium nach Anspruch 23, wobei die Operationen umfassen: basierend auf der Verifikation der Inkorrektheit der Eigenschaft des zweiten Codes, Verhindern, dass das Client-Gerät mit einem entfernten Gerät über ein Netzwerk kommuniziert.
  25. Verfahren, umfassend: Empfangen, an einem Sicherheitsgerät, einer Eigenschaft eines Codes von einem Client-Gerät, wobei der Code in dem Client-Gerät gespeichert ist; Verifizieren, durch das Sicherheitsgerät, der Korrektheit der Eigenschaft des Codes auf Basis von Informationen, die mit dem Code assoziiert sind und in dem Sicherheitsgerät gespeichert sind, um festzustellen, dass der Code ein autorisierter Code ist; und als Reaktion auf die Feststellung, dass der Code der autorisierte Code ist, das Sicherheitsgerät in die Lage versetzen, auf Daten zuzugreifen, die in dem Sicherheitsgerät gespeichert sind; und Erzeugen, durch das Sicherheitsgerät, einer Eigenschaft einer Nachricht auf Basis der Daten.
DE102017205948.6A 2016-04-18 2017-04-07 Nachrichtenauthentifizierung mit sicherer Codeverifikation Pending DE102017205948A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/131,919 US10616197B2 (en) 2016-04-18 2016-04-18 Message authentication with secure code verification
US15/131,919 2016-04-18

Publications (1)

Publication Number Publication Date
DE102017205948A1 true DE102017205948A1 (de) 2017-10-19

Family

ID=59980770

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017205948.6A Pending DE102017205948A1 (de) 2016-04-18 2017-04-07 Nachrichtenauthentifizierung mit sicherer Codeverifikation

Country Status (4)

Country Link
US (2) US10616197B2 (de)
CN (1) CN107306184A (de)
DE (1) DE102017205948A1 (de)
TW (1) TW201802719A (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US10482255B2 (en) * 2016-02-16 2019-11-19 Atmel Corporation Controlled secure code authentication
US10303883B2 (en) * 2016-10-25 2019-05-28 Hewlett Packard Enterprise Development Lp Firmware verification through data ports
US10944566B2 (en) * 2017-11-15 2021-03-09 International Business Machines Corporation Methods and systems for supporting fairness in secure computations
US10009325B1 (en) 2017-12-07 2018-06-26 Karamba Security End-to-end communication security
US11829478B2 (en) * 2019-01-08 2023-11-28 Oracle International Corporation Full server recovery architecture for cloud bare metal instances
US11128474B2 (en) * 2019-03-25 2021-09-21 Micron Technology, Inc. Secure device communication
CN112422595B (zh) * 2019-08-20 2022-10-11 华为技术有限公司 车载系统安全保护方法及设备
US11165588B1 (en) * 2020-04-09 2021-11-02 International Business Machines Corporation Key attribute verification
US20210334380A1 (en) * 2020-04-24 2021-10-28 Vmware, Inc. Trusted firmware verification
US11797680B2 (en) * 2020-08-28 2023-10-24 Micron Technology, Inc. Device with chain of trust
US11651077B2 (en) * 2021-01-22 2023-05-16 Dell Products L.P. Systems and methods for providing secured boot and scan for devices with limited access
US11698971B2 (en) 2021-04-15 2023-07-11 Honeywell International Inc. Secure boot device
US11818574B2 (en) * 2021-05-27 2023-11-14 Citrix Systems, Inc. Provisioning devices securely using zero touch deployments
US20230087521A1 (en) * 2021-09-20 2023-03-23 Ford Global Technologies, Llc Computing device verification

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5422632A (en) 1992-10-28 1995-06-06 Intellitouch 2000, Inc. Electronic security system
US6212635B1 (en) 1997-07-18 2001-04-03 David C. Reardon Network security system allowing access and modification to a security subsystem after initial installation when a master token is in place
US6708273B1 (en) 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
US6704871B1 (en) 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6601172B1 (en) 1997-12-31 2003-07-29 Philips Electronics North America Corp. Transmitting revisions with digital signatures
US6141756A (en) * 1998-04-27 2000-10-31 Motorola, Inc. Apparatus and method of reading a program into a processor
EP1018821A1 (de) 1999-01-08 2000-07-12 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Kommunikationsendgerät und Verfahren
US7430668B1 (en) 1999-02-15 2008-09-30 Hewlett-Packard Development Company, L.P. Protection of the configuration of modules in computing apparatus
EP1076279A1 (de) 1999-08-13 2001-02-14 Hewlett-Packard Company Computerplattformen und deren Betriebsverfahren
US6708049B1 (en) 1999-09-28 2004-03-16 Nellcor Puritan Bennett Incorporated Sensor with signature of data relating to sensor
US6826690B1 (en) 1999-11-08 2004-11-30 International Business Machines Corporation Using device certificates for automated authentication of communicating devices
DE69941335D1 (de) 1999-12-02 2009-10-08 Sony Deutschland Gmbh Nachrichtenauthentisierung
FR2802693B1 (fr) 1999-12-15 2002-08-02 Store Electronic Systems Techn Systeme perfectionne d'etiquettes electroniques notamment pour l'affichage de prix sur lieux de vente
US6996710B1 (en) 2000-03-31 2006-02-07 Intel Corporation Platform and method for issuing and certifying a hardware-protected attestation key
US6961858B2 (en) 2000-06-16 2005-11-01 Entriq, Inc. Method and system to secure content for distribution via a network
US20020026578A1 (en) 2000-08-22 2002-02-28 International Business Machines Corporation Secure usage of digital certificates and related keys on a security token
WO2002021243A2 (en) 2000-09-08 2002-03-14 International Business Machines Corporation Software secure authenticated channel
DE10065684A1 (de) * 2000-12-29 2002-07-18 Aladdin Knowledge Systems Gmbh System und Verfahren zum Erteilen der Laufberechtigung für ein auf einem Rechner installiertes Programm
US7779267B2 (en) 2001-09-04 2010-08-17 Hewlett-Packard Development Company, L.P. Method and apparatus for using a secret in a distributed computing system
US20030093663A1 (en) 2001-11-09 2003-05-15 Walker Jesse R. Technique to bootstrap cryptographic keys between devices
US20030138105A1 (en) 2002-01-18 2003-07-24 International Business Machines Corporation Storing keys in a cryptology device
US7313705B2 (en) 2002-01-22 2007-12-25 Texas Instrument Incorporated Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory
US7142674B2 (en) 2002-06-18 2006-11-28 Intel Corporation Method of confirming a secure key exchange
ES2611408T3 (es) 2002-10-31 2017-05-08 Telefonaktiebolaget Lm Ericsson (Publ) Implementación y utilización segura de datos de seguridad específicos de dispositivo
US7565533B2 (en) * 2002-11-05 2009-07-21 Sun Microsystems, Inc. Systems and methods for providing object integrity and dynamic permission grants
US20040101141A1 (en) 2002-11-27 2004-05-27 Jukka Alve System and method for securely installing a cryptographic system on a secure device
US7165181B2 (en) 2002-11-27 2007-01-16 Intel Corporation System and method for establishing trust without revealing identity
US7593530B2 (en) 2002-12-11 2009-09-22 Broadcom Corporation Secure legacy media peripheral association with authentication in a media exchange network
US7802087B2 (en) 2003-03-10 2010-09-21 Igt Universal method for submitting gaming machine source code software to a game certification laboratory
JP3928589B2 (ja) 2003-06-12 2007-06-13 コニカミノルタビジネステクノロジーズ株式会社 通信システムおよび方法
US9106479B1 (en) 2003-07-10 2015-08-11 F5 Networks, Inc. System and method for managing network communications
EP2228988B1 (de) 2003-08-15 2012-02-08 STMicroelectronics (Research & Development) Limited Datenspeicher mit beschränktem Zugang
JP4625000B2 (ja) 2003-10-16 2011-02-02 パナソニック株式会社 データ保護システム及び記録担体
WO2005109360A1 (en) * 2004-05-10 2005-11-17 Hani Girgis Secure pin entry using personal computer
CA2922172A1 (en) 2004-10-25 2006-05-04 Security First Corp. Secure data parser method and system
GB2419787B (en) 2004-10-28 2007-07-04 Hewlett Packard Development Co Method and apparatus for providing short-term private keys in public-key cryptographic systems
US7369856B2 (en) 2004-11-24 2008-05-06 Intel Corporation Method and system to support fast hand-over of mobile subscriber stations in broadband wireless networks
US7577848B2 (en) 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US20060218649A1 (en) 2005-03-22 2006-09-28 Brickell Ernie F Method for conditional disclosure of identity information
US20060236098A1 (en) 2005-03-31 2006-10-19 Alexander Gantman Multisigning - a protocol for robust multiple party digital signatures
WO2006116871A2 (en) * 2005-05-05 2006-11-09 Certicom Corp. Retrofitting authentication onto firmware
US7716497B1 (en) 2005-06-14 2010-05-11 Xilinx, Inc. Bitstream protection without key storage
US7596812B2 (en) 2005-06-14 2009-09-29 Motorola, Inc. System and method for protected data transfer
WO2007011786A2 (en) 2005-07-15 2007-01-25 Revolution Money, Inc. System and method for establishment of rules governing child accounts
US20100203960A1 (en) 2005-07-20 2010-08-12 Wms Gaming Inc. Wagering game with encryption and authentication
JP4912772B2 (ja) 2005-09-22 2012-04-11 富士通株式会社 暗号化方法,暗号復号化方法,暗号化装置,暗号復号化装置,送受信システムおよび通信システム
DE602006018408D1 (de) 2005-10-14 2011-01-05 Research In Motion Ltd Mobiles Kommunikationsgerät mit einem intelligenten Batteriesystem
JP4769608B2 (ja) * 2006-03-22 2011-09-07 富士通株式会社 起動検証機能を有する情報処理装置
US20070237366A1 (en) 2006-03-24 2007-10-11 Atmel Corporation Secure biometric processing system and method of use
US8165301B1 (en) 2006-04-04 2012-04-24 Bitmicro Networks, Inc. Input-output device and storage controller handshake protocol using key exchange for data security
CN101512535B (zh) 2006-08-31 2011-05-18 国际商业机器公司 计算平台的证明
WO2008066671A2 (en) 2006-11-08 2008-06-05 Voltage Security, Inc. Indentity-based-encryption extensions formed using multiple instances of an identity based encryption scheme
US7685263B2 (en) 2006-12-19 2010-03-23 Blue Coat Systems, Inc. Method and system for configuring a device with a wireless mobile configurator
CN101272240B (zh) * 2007-03-21 2013-01-23 华为技术有限公司 一种会话密钥的生成方法、系统和通信设备
US8347374B2 (en) 2007-11-15 2013-01-01 Red Hat, Inc. Adding client authentication to networked communications
US8356181B2 (en) 2007-11-15 2013-01-15 Intel Corporation Apparatus and method for a direct anonymous attestation scheme from short-group signatures
KR100925329B1 (ko) 2007-12-03 2009-11-04 한국전자통신연구원 디지털케이블 방송망에서 다운로더블 제한수신시스템을위한 상호인증 및 키 공유 방법과 장치
JP4508234B2 (ja) * 2007-12-13 2010-07-21 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置、および、画像形成プログラム
JP5508752B2 (ja) 2008-04-09 2014-06-04 パナソニック株式会社 電池認証システム、および電子機器
US8522354B2 (en) 2008-05-24 2013-08-27 Via Technologies, Inc. Microprocessor apparatus for secure on-die real-time clock
US20110099362A1 (en) 2008-06-23 2011-04-28 Tomoyuki Haga Information processing device, encryption key management method, computer program and integrated circuit
CN101616136B (zh) 2008-06-26 2013-05-01 阿里巴巴集团控股有限公司 一种提供互联网服务的方法及服务集成平台系统
US20100005318A1 (en) 2008-07-02 2010-01-07 Akram Hosain Process for securing data in a storage unit
US8736225B2 (en) * 2008-08-20 2014-05-27 San Diego Gas & Electronic Company Modularized interface and related method for connecting plug-in electric vehicles to the energy grid
US8161285B2 (en) 2008-09-26 2012-04-17 Microsoft Corporation Protocol-Independent remote attestation and sealing
US8127146B2 (en) 2008-09-30 2012-02-28 Microsoft Corporation Transparent trust validation of an unknown platform
US9230109B2 (en) 2008-10-07 2016-01-05 Microsoft Technology Licensing, Llc Trusted platform module security
US20100130166A1 (en) 2008-11-24 2010-05-27 Yossef Tsuria Slim authentication tag
US8649509B2 (en) 2008-12-18 2014-02-11 At&T Intellectual Property I, L.P. Systems and computer program products for generating and verifying randomized hash values
US8468355B2 (en) 2008-12-19 2013-06-18 University Of South Carolina Multi-dimensional credentialing using veiled certificates
CN105072088A (zh) 2010-01-22 2015-11-18 交互数字专利控股公司 一种在具有用户的无线设备处执行的方法
US20110219427A1 (en) 2010-03-04 2011-09-08 RSSBus, Inc. Smart Device User Authentication
US9418205B2 (en) 2010-03-15 2016-08-16 Proxense, Llc Proximity-based system for automatic application or data access and item tracking
WO2011119169A1 (en) * 2010-03-26 2011-09-29 Hewlett-Packard Development Company, L.P. Storage device access authentication upon resuming from a standby mode of a computing device
US8898453B2 (en) 2010-04-29 2014-11-25 Blackberry Limited Authentication server and method for granting tokens
US9118469B2 (en) 2010-05-28 2015-08-25 Aquantia Corp. Reducing electromagnetic interference in a received signal
US8892855B2 (en) 2010-08-10 2014-11-18 Maxlinear, Inc. Encryption keys distribution for conditional access software in TV receiver SOC
US8997239B2 (en) 2011-03-31 2015-03-31 Infosys Limited Detecting code injections through cryptographic methods
US9104985B2 (en) 2011-08-17 2015-08-11 International Business Machines Corporation Processing system using metadata for administering a business transaction
US8843740B2 (en) 2011-12-02 2014-09-23 Blackberry Limited Derived certificate based on changing identity
US9544075B2 (en) * 2012-02-22 2017-01-10 Qualcomm Incorporated Platform for wireless identity transmitter and system using short range wireless broadcast
US9323950B2 (en) 2012-07-19 2016-04-26 Atmel Corporation Generating signatures using a secure device
US9088891B2 (en) 2012-08-13 2015-07-21 Wells Fargo Bank, N.A. Wireless multi-factor authentication with captive portals
US9129536B2 (en) 2012-08-31 2015-09-08 Freescale Semiconductor, Inc. Circuit for secure provisioning in an untrusted environment
US20140089670A1 (en) 2012-09-27 2014-03-27 Atmel Corporation Unique code in message for signature generation in asymmetric cryptographic device
US20140188949A1 (en) 2013-01-03 2014-07-03 Dell Products L.P. Methods and systems for supply chain assurance of information handling system code
US9118467B2 (en) 2013-03-13 2015-08-25 Atmel Corporation Generating keys using secure hardware
WO2014200496A1 (en) 2013-06-13 2014-12-18 Intel Corporation Secure pairing for communication across devices
US9178881B2 (en) 2013-10-09 2015-11-03 Microsoft Technology Licensing, Llc Proof of device genuineness
US9762395B2 (en) 2014-04-30 2017-09-12 International Business Machines Corporation Adjusting a number of dispersed storage units
US20150339195A1 (en) 2014-05-23 2015-11-26 Sandisk Technologies Inc. Method and system for secure system recovery
KR102383157B1 (ko) 2014-09-19 2022-04-06 삼성전자주식회사 디바이스 대 디바이스 통신을 지원하는 무선 통신 시스템에서 통신 방법 및 장치
WO2016061395A2 (en) 2014-10-16 2016-04-21 Revolution Technologies, Inc. Tagged proximity training and timning
CN104462965B (zh) 2014-11-14 2018-03-13 华为技术有限公司 应用程序完整性验证方法及网络设备
US9742762B2 (en) 2014-12-01 2017-08-22 Microsoft Technology Licensing, Llc Utilizing a trusted platform module (TPM) of a host device
CN104537302B (zh) * 2015-01-16 2017-12-12 宇龙计算机通信科技(深圳)有限公司 一种终端的安全启动方法、装置及终端
US9984310B2 (en) 2015-01-23 2018-05-29 Highspot, Inc. Systems and methods for identifying semantically and visually related content
KR101736100B1 (ko) 2015-11-10 2017-05-16 현대자동차주식회사 차량 및 차량의 제어방법
US10482255B2 (en) 2016-02-16 2019-11-19 Atmel Corporation Controlled secure code authentication
US10474823B2 (en) 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication

Also Published As

Publication number Publication date
US20200236097A1 (en) 2020-07-23
TW201802719A (zh) 2018-01-16
CN107306184A (zh) 2017-10-31
US20170302640A1 (en) 2017-10-19
US11876791B2 (en) 2024-01-16
US10616197B2 (en) 2020-04-07

Similar Documents

Publication Publication Date Title
DE102017205948A1 (de) Nachrichtenauthentifizierung mit sicherer Codeverifikation
DE102017202423A1 (de) Gesteuerte sichere Codeauthentifizierung
EP3447667B1 (de) Kryptographische sicherung für eine verteilte datenspeicherung
EP2956852B1 (de) Datensicherheitsdienst
DE102017202424A1 (de) Gesteuerte sichere Code-Authentifizierung
DE112020000269T5 (de) Ferngewährung des zugangs zu einer gesperrten datenspeichervorrichtung
CN115618359A (zh) 联盟区块链网络的建立
US10771467B1 (en) External accessibility for computing devices
DE102013213568A1 (de) Sicheres Speichern und Signatur
CN109937419A (zh) 安全功能强化的设备的初始化方法及设备的固件更新方法
DE112008001436T5 (de) Sichere Kommunikation
DE112008003931T5 (de) Systeme und Verfahren für Datensicherheit
EP3246839B1 (de) Zugangskontrolle mit einem mobilfunkgerät
CN111740854B (zh) 用于安全装置通信的设备、方法和系统
EP3123689A1 (de) Verfahren und system zur verbesserung der datensicherheit bei einem kommunikationsvorgang
DE102015209108A1 (de) Verfahren und Entscheidungsgateway zum Autorisieren einer Funktion eines eingebetteten Steuergerätes
WO2018210567A1 (de) Verfahren, computerlesbares medium, system und fahrzeug umfassend das system zum bereitstellen eines datensatzes eines fahrzeugs an einen dritten
CN107508791A (zh) 一种基于分散密钥加密的终端身份验证方法及系统
DE112020000244T5 (de) Initialisierung einer Datenspeicherungsvorrichtung mit einer Managervorrichtung
DE112020000234T5 (de) Drahtlos-sicherheitsprotokoll
DE112020000238T5 (de) Wiederherstellungsschlüssel zum entriegeln einer datenspeicherungsvorrichtung
EP3595237B1 (de) Nachladen kryptographischer programminstruktionen
DE102014204252A1 (de) Sicherheitssystem mit Zugriffskontrolle
DE112020000236T5 (de) Mehrrollenentsperrung einer datenspeicherungsvorrichtung
DE112020000180T5 (de) Mehrvorrichtungsentsperrung einer datenspeichervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed