DE102020002055A1 - Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems - Google Patents

Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems Download PDF

Info

Publication number
DE102020002055A1
DE102020002055A1 DE102020002055.0A DE102020002055A DE102020002055A1 DE 102020002055 A1 DE102020002055 A1 DE 102020002055A1 DE 102020002055 A DE102020002055 A DE 102020002055A DE 102020002055 A1 DE102020002055 A1 DE 102020002055A1
Authority
DE
Germany
Prior art keywords
program code
processing device
data processing
storage area
function program
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
DE102020002055.0A
Other languages
English (en)
Inventor
Anmelder Gleich
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.)
Data IO Corp
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to DE102020002055.0A priority Critical patent/DE102020002055A1/de
Publication of DE102020002055A1 publication Critical patent/DE102020002055A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Die Erfindung betrifft eine Datenverarbeitungsvorrichtung (210) zur Provisionierung eines Hardware-Prozessorsystems (220) mit einem ersten Funktionsprogrammcode (227a) und einem zweiten Funktionsprogrammcode (227b), wobei das Hardware-Prozessorsystem (220) einen Prozessor (221a, 221b) und einen Arbeitsspeicher mit einem ersten Datenspeicherbereich (223a) und einem zweiten Datenspeicherbereich (223b) aufweist. Die Datenverarbeitungsvorrichtung (210) ist ausgebildet: einen ersten ausführbaren Programmcode bereitzustellen, welcher bei Ausführung durch den Prozessor (221a) ausgebildet ist, ausschließlich auf eine Adressuntermenge des Hardware-Adressraums zuzugreifen; den ersten ausführbaren Programmcode unter Verwendung eines kryptographischen Verschlüsselungsschlüssels mit einer digitalen Signatur zu signieren, um den ersten Funktionsprogrammcode (227a) zu erhalten; einen zweiten ausführbaren Programmcode bereitzustellen, welcher ausgebildet ist, auf den gesamten Hardware-Adressraum mit dem zweiten Adressbereich des zweiten Datenspeicherbereichs (223b) zuzugreifen; den zweiten ausführbaren Programmcode mit einem kryptographischen Entschlüsselungsschlüssel zu versehen, welcher dem kryptographischen Verschlüsselungsschlüssel zugeordnet ist, um den zweiten Funktionsprogrammcode (227b) zu erhalten, wobei der zweite Funktionsprogrammcode (227b) bei Ausführung durch den Prozessor (221b) ausgebildet ist, die digitale Signatur des ersten Funktionsprogrammcodes (227a) unter Verwendung des kryptographischen Entschlüsselungsschlüssels zu verifizieren; und den ersten Funktionsprogrammcode (227a) in den ersten Datenspeicherbereich (223a) zu laden und den zweiten Funktionsprogrammcode (227b) in den zweiten Datenspeicherbereich (223b) zu laden.

Description

  • Die Erfindung betrifft die Provisionierung von Hardware-Prozessorsystemen mit einem oder mehreren Prozessoren mit Funktionsprogrammen.
  • Moderne Hardware-Prozessorsysteme mit einem oder mehreren Prozessoren bzw. Prozessor-Kernen, wie sie beispielsweise in PCs, Smartphones, oder anderen elektronischen Vorrichtungen verbaut sind, müssen mit Funktionsprogrammen, welche als Funktionsprogrammcode vorliegen und beispielsweise eine Firmware realisieren, provisioniert werden, um die gewünschte Funktionsweise, beispielsweise digitale Signalverarbeitung, kryptographische Verschlüsselung oder Kommunikation über Kommunikationsnetzwerke, zu entfalten.
  • Die Funktionsprogramme werden in der Regel durch Kompilierung eines beispielsweise in einer Hochsprache wie C/C++ geschriebenen Programmcodes (Sourcecodes) in einen Binärcode umgewandelt, welcher das Funktionsprogramm darstellt.
  • Ein Hardware-Prozessorsystem kann beispielsweise als ein System-on-Chip (SoC) implementiert werden und einen Arbeitsspeicher aufweisen, in welchem beispielsweise ein Funktionsprogram wie ein Betriebssystem gespeichert sind.
  • Bei einer Fehlfunktion des Funktionsprogramms, beispielsweise verursacht durch eine Schadsoftware, kann es jedoch zu einer unerwünschten Fehlfunktion des gesamten Hardware-Prozessorsystems kommen, welche unerwünscht ist.
  • Es ist daher die Aufgabe der vorliegenden Erfindung, ein Konzept zum sichereren Betrieb eines Hardware-Prozessorsystems zu schaffen.
  • Diese Aufgabe wird durch die Merkmale der Ansprüche, der Beschreibung sowie der beiliegenden Figuren gelöst.
  • Die vorliegende Erfindung basiert auf der Erkenntnis, dass die obige Aufgabe durch eine zusätzliche Bereitstellung eines weiteren Funktionsprogrammcodes gelöst werden kann, welcher die Funktionsweise des allgemeinen Funktionsprograms überwacht. Dieses Konzept kann vorteilhaft in Hardware-Prozessorsystemen implementiert werden, welche voneinander getrennte Datenspeicherbereiche, beispielsweise eines Arbeitsspeichers aufweisen. So kann in einem ersten Datenspeicher, welcher ungesichert sein kann, ein allgemeiner Funktionsprogrammcode wie beispielswiese eine Firmware und in einem zweiten Datenspeicher, welcher gesichert sein kann, ein beispielsweise spezifischer Funktionsprogrammcode gespeichert werden.
  • Gemäß einem ersten Aspekt betrifft die Erfindung eine Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems mit einem ersten Funktionsprogrammcode und einem zweiten Funktionsprogrammcode, wobei das Hardware-Prozessorsystem einen Prozessor und einen Arbeitsspeicher mit einem ersten Datenspeicherbereich und einem zweiten Datenspeicherbereich aufweist, wobei das Hardware-Prozessorsystem einen Hardware-Adressraum aufweist, wobei dem ersten Datenspeicherbereich ein erster Adressbereich des Hardware-Adressraums zugeordnet ist, wobei dem zweiten Datenspeicherbereich ein zweiter Adressbereich des Hardware-Adressraums zugeordnet ist, und wobei die Datenverarbeitungsvorrichtung ausgebildet ist, einen ersten ausführbaren Programmcode bereitzustellen, wobei der erste ausführbare Programmcode bei Ausführung durch den Prozessor ausgebildet ist, ausschließlich auf eine Adressuntermenge des Hardware-Adressraums zuzugreifen, wobei die Datenverarbeitungsvorrichtung ausgebildet ist, den ersten ausführbaren Programmcode unter Verwendung eines kryptographischen Verschlüsselungsschlüssels mit einer digitalen Signatur zu signieren, um den ersten Funktionsprogrammcode zu erhalten, und einen zweiten ausführbaren Programmcode bereitzustellen, wobei der zweite ausführbare Programcode bei Ausführung durch den Prozessor ausgebildet ist, auf den gesamten Hardware-Adressraum mit (d.h. einschließlich) dem zweiten Adressbereich des zweiten Datenspeicherbereichs zuzugreifen, wobei die Datenverarbeitungsvorrichtung ausgebildet ist, den zweiten ausführbaren Programmcode mit einem kryptographischen Entschlüsselungsschlüssel zu versehen, welcher dem kryptographischen Verschlüsselungsschlüssel zugeordnet ist, um den zweiten Funktionsprogrammcode zu erhalten, wobei der zweite Funktionsprogrammcode bei Ausführung durch den Prozessor ausgebildet ist, die digitale Signatur des ersten Funktionsprogrammcodes unter Verwendung des kryptographischen Entschlüsselungsschlüssels zu verifizieren, wobei die Datenverarbeitungsvorrichtung ausgebildet ist, den ersten Funktionsprogrammcode in den ersten Datenspeicherbereich des Hardware-Prozessorsystems zu laden und den zweiten Funktionsprogrammcode in den zweiten Datenspeicherbereich des Hardware-Prozessorsystems zu laden.
  • Das Hardware-Prozessorsystem ist kein Element der Datenverarbeitungsvorrichtung.
  • Der Hardware-Adressraum umfasst beispielsweise alle Hardware-Adressen, welche das Hardware-Prozessorsystem aufweist. Hardware-Adressen können beispielsweise einen Adressraum mit Hardware-Adressen von 0x0000 bis OxFFFF, welche eine hexadezimale Schreibweise haben können, definieren. Die Hardware-Adressen dienen zur Adressierung von Komponenten des Hardware-Prozessorsystems, welche beispielsweise an einen Prozessor-Bus des Hardware-Prozessorsystems angeschlossen sind.
  • Der jeweilige ausführbare Programmcode ist beispielsweise ein kompilierter Source-Code.
  • Der jeweilige Funktionsprogrammcode ist ausführbar und beispielsweise ein kompilierter Source-Code.
  • Durch das Laden des jeweiligen Funktionsprogrammcodes in den jeweiligen Datenspeicherbereich wird der jeweilige Funktionsprogrammcode an den jeweiligen Datenspeicherbereich übertragen und dort gespeichert. Hierzu kann ein Prozessorbus des Hardware-Prozessorsystems verwendet werden.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung ausgebildet, den ersten ausführbaren Programmcode durch Kompilierung eines ersten Basisprogrammcodes zu erzeugen, wobei die Datenverarbeitungsvorrichtung ferner ausgebildet ist, den zweiten ausführbaren Programmcode durch Kompilierung eines zweiten Basisprogrammcodes zu erzeugen.
  • Der jeweilige Basisprogrammcode liegt beispielsweise als Source-Code vor. Die Datenverarbeitungsvorrichtung ist bevorzugt als Kompilierer ausgebildet, um den jeweiligen ausführbaren Programmcode zu erzeugen.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung ausgebildet, den ersten ausführbaren Programmcode und den zweiten ausführbaren Programmcode zu empfangen, insbesondere über ein Kommunikationsnetzwerk zu empfangen und, insbesondere in einer vor unberechtigten externen Zugriffen geschützten Umgebung, zu signieren.
  • Die Datenverarbeitungsvorrichtung kann hierzu beispielswese als ein Hardware-Sicherheitsmodul ausgebildet sein, welche den jeweiligen Programmcode über eine Schnittstelle, welche drahtlos der drahtgebunden sein kann, empfangen kann.
  • In einer Ausführungsform weist der erste ausführbare Programcode eine erste digitale Signatur auf der Basis eines ersten kryptographischen Verschlüsselungsschlüssels auf, wobei die Datenverarbeitungsvorrichtung ausgebildet ist, die erste digitale Signatur mit einem ersten kryptographischen Entschlüsselungsschlüssel, welcher dem ersten kryptographischen Verschlüsselungsschlüssel zugeordnet ist, zu verifizieren und die erste digitale Signatur nach erfolgreicher Verifizierung zu entfernen, um den ersten ausführbaren Programcode bereitzustellen, und wobei der zweite ausführbare Programcode eine zweite digitale Signatur auf der Basis eines zweiten kryptographischen Verschlüsselungsschlüssels aufweist, wobei die Datenverarbeitungsvorrichtung ausgebildet ist, die zweite digitale Signatur mit einem zweiten kryptographischen Entschlüsselungsschlüssel, welcher dem zweiten kryptographischen Verschlüsselungsschlüssel zugeordnet ist, zu verifizieren und die zweite digitale Signatur nach erfolgreicher Verifizierung zu entfernen, um den zweiten ausführbaren Programcode bereitzustellen.
  • Nach dem Entfernen der bestehenden digitalen Signaturen werden die ausführbaren Programmcodes durch die Datenverarbeitungsvorrichtung erneut signiert. Die erste und zweite digitale Signatur können beispielsweise auf der Basis eines generischen kryptographischen Testschlüssels erzeugt worden sein. Durch den Austausch dieser Signaturen wird die Systemsicherheit insgesamt erhöht.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung ausgebildet ist, eine hybride Verschlüsselung des ersten ausführbaren Programmcodes durchzuführen, d.h. den ersten ausführbaren Programmcode mit einem zufällig gewählten symmetrischen Verschlüsselungsschlüssel zu verschlüsseln und den hierfür verwendeten symmetrischen Verschlüsselungsschlüsselt mit einem asymmetrischen Verschlüsselungsschlüssel zu verschlüsseln. In dieser Ausführungsform ist der zweite Funktionsprogrammcode bei Ausführung durch den Prozessor des Hardware-Prozessorsystems zusätzlich ausgebildet, den symmetrischen Verschlüsselungsschlüssel mit dem asymmetrischen Entschlüsselungsschlüssel zu entschlüsseln und anschließend mit dem symmetrischen Verschlüsselungsschlüssel den ersten Funktionsprogrammcode zu entschlüsseln, bevor dieser zur Ausführung gebracht wird.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung ausgebildet, das Hardware-Prozessorsystem zu emulieren und den ersten und zweiten Funktionsprogrammcode auszuführen, um die gemeinsame Funktionsweise der Funktionsprogrammcodes zu testen.
  • Hierbei können insbesondere die Wechselwirkungen zwischen den Funktionsprogrammcodes überprüft werden, bevor die Funktionsprogrammcodes in die Datenspeicher geladen werden.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung ausgebildet, den ersten Funktionsprogrammcode und den zweiten Funktionsprogrammcode drahtlos, insbesondere über ein Kommunikationsnetzwerk, oder drahtgebunden, insbesondere über eine drahtgebundene Kommunikationsschnittstelle, zu übertragen.
  • In einer Ausführungsform legen die einander zugeordneten kryptographischen Entschlüsselungsschlüssel und Verschlüsselungsschlüssel eine kryptographisch symmetrische Verschlüsselung fest und sind gleich, oder die einander zugeordneten kryptographischen Entschlüsselungsschlüssel und Verschlüsselungsschlüssel legen eine kryptographisch asymmetrische Verschlüsselung fest und formen jeweils ein Schlüsselpaar mit einem kryptographischen privaten Schlüssel und einem kryptographischen öffentlichen Schlüssel.
  • In einer Ausführungsform ist der erste ausführbare Programmcode bzw. Funktionsprogrammcode ein Betriebssystem oder eine Firmware, und der zweite ausführbare Programmcode bzw. Funktionsprogrammcode implementiert eine kryptographische Funktion.
  • Gemäß einem zweiten Aspekt betrifft die Erfindung ein Provisionierungsverfahren zur Provisionierung eines Hardware-Prozessorsystems mit einem ersten Funktionsprogrammcode und einem zweiten Funktionsprogrammcode, wobei das Hardware-Prozessorsystem einen Prozessor und einen Arbeitsspeicher mit einem ersten Datenspeicherbereich und einem zweiten Datenspeicherbereich aufweist, wobei das Hardware-Prozessorsystem einen Hardware-Adressraum aufweist, wobei dem ersten Datenspeicher ein erster Adressbereich des Hardware-Adressraums zugeordnet ist, wobei dem zweiten Datenspeicher ein zweiter Adressbereich des Hardware-Adressraums zugeordnet ist, und wobei das Provisionierungsverfahren die folgenden Merkmale aufweist: Bereitstellen eines ersten ausführbaren Programmcodes, wobei der erste ausführbare Programmcode bei Ausführung durch den Prozessor ausgebildet ist, ausschließlich auf eine Adressuntermenge des Hardware-Adressraums zuzugreifen; Signieren des ersten ausführbaren Programmcodes unter Verwendung eines kryptographischen Verschlüsselungsschlüssels mit einer digitalen Signatur, um den ersten Funktionsprogrammcode zu erhalten; Bereitstellen eines zweiten ausführbaren Programmcodes, wobei der zweite ausführbare Programcode bei Ausführung durch den Prozessor ausgebildet ist, auf den gesamten Hardware-Adressraum mit (d.h. einschließlich) dem zweiten Adressbereich des zweiten Datenspeicherbereichs zuzugreifen; Versehen des zweiten ausführbaren Programmcodes mit einem kryptographischen Entschlüsselungsschlüssel, welcher dem kryptographischen Verschlüsselungsschlüssel zugeordnet ist, um den zweiten Funktionsprogrammcode zu erhalten, wobei der zweite Funktionsprogrammcode bei Ausführung durch den Prozessor ausgebildet ist, die digitale Signatur des ersten Funktionsprogrammcodes unter Verwendung des kryptographischen Entschlüsselungsschlüssels zu verifizieren; Laden des ersten Funktionsprogrammcodes in den ersten Datenspeicherbereich des Hardware-Prozessorsystems; und Laden des zweiten Funktionsprogrammcodes in den zweiten Datenspeicherbereich des Hardware-Prozessorsystems.
  • Weitere Merkmale des Provisionierungsverfahrens gemäß dem zweiten Aspekt ergeben sich unmittelbar aus der Funktionsweise der Datenverarbeitungsvorrichtung gemäß dem ersten Aspekt.
  • Das Provisionierungsverfahren wird in einer Ausführungsform durch die Datenverarbeitungsvorrichtung gemäß dem ersten Aspekt ausgeführt.
  • Weitere Ausführungsformen werden Bezug nehmend auf die beiliegenden Figuren beschrieben. Es zeigen:
    • 1 eine schematische Darstellung einer herkömmlichen Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems mit Funktionsprogrammcode;
    • 2 eine schematische Darstellung einer Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems mit Funktionsprogrammcode gemäß einer Ausführungsform der Erfindung;
    • 3 eine schematische Darstellung einer Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems mit Funktionsprogrammcode gemäß einer weiteren Ausführungsform der Erfindung;
    • 4 eine schematische Darstellung einer Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems mit Funktionsprogrammcode gemäß einer weiteren Ausführungsform der Erfindung; und
    • 5 ein Flussdiagramm, welches Schritte eines Verfahrens zur Provisionierung eines Hardware-Prozessorsystems mit Funktionsprogrammcode gemäß einer Ausführungsform der Erfindung zeigt.
  • In der folgenden ausführlichen Beschreibung wird auf die beiliegenden Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen als Veranschaulichung spezifische Ausführungsformen gezeigt sind, in denen die Erfindung ausgeführt werden kann. Es versteht sich, dass auch andere Ausführungsformen genutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne vom Konzept der vorliegenden Erfindung abzuweichen. Die folgende ausführliche Beschreibung ist deshalb nicht in einem beschränkenden Sinne zu verstehen. Ferner versteht es sich, dass die Merkmale der verschiedenen hierin beschriebenen Ausführungsbeispiele miteinander kombiniert werden können, sofern nicht spezifisch etwas anderes angegeben ist.
  • Die Aspekte und Ausführungsformen werden unter Bezugnahme auf die Zeichnungen beschrieben, wobei gleiche Bezugszeichen sich im Allgemeinen auf gleiche Elemente beziehen. In der folgenden Beschreibung werden zu Erläuterungszwecken zahlreiche spezifische Details dargelegt, um ein eingehendes Verständnis von einem oder mehreren Aspekten der Erfindung zu vermitteln. Für einen Fachmann kann es jedoch offensichtlich sein, dass ein oder mehrere Aspekte oder Ausführungsformen mit einem geringeren Grad der spezifischen Details ausgeführt werden können. In anderen Fällen werden bekannte Strukturen und Elemente in schematischer Form dargestellt, um das Beschreiben von einem oder mehreren Aspekten oder Ausführungsformen zu erleichtern. Es versteht sich, dass andere Ausführungsformen genutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne von dem Konzept der vorliegenden Erfindung abzuweichen.
  • Es werden Vorrichtungen beschrieben, und es werden Verfahren beschrieben. Es versteht sich, dass Grundeigenschaften der Vorrichtungen auch für die Verfahren gelten und umgekehrt. Deshalb wird der Kürze halber gegebenenfalls auf eine doppelte Beschreibung solcher Eigenschaften verzichtet.
  • 1 zeigt eine herkömmliche Software-Entwicklungsumgebung 110 in Form einer Datenverarbeitungsvorrichtung 110, beispielsweise eines PCs 110, welcher für die Entwicklung von Software konfiguriert ist. Hierzu weist die Datenverarbeitungsvorrichtung 110 beispielsweise entsprechende Entwicklungssoftware auf, insbesondere einen Compiler und einen Linker, welche ausgebildet sind, gegebenenfalls unter Verwendung von Software-Bibliotheken 113 einen Source-Code 111 in einer Hochsprache, wie z.B. C oder C++, in einen Funktionsprogrammcode 127 in binärer Form (auch als Binär-Code oder Maschinecode bekannt) für eine Zielplattform 120 umzuwandeln. In 1 handelt es sich bei der Zielplattform 120 um ein Hardwareprozessorsystem 120 mit einem Prozessor 121, einem Arbeitsspeicher 123 und einem Festspeicher 127, in dem der Funktionsprogrammcode 127 gespeichert ist, um zur Ausführung durch den Prozessor 121 in den Arbeitsspeicher 123 geladen zu werden.
  • Im Einzelnen sind in 1 die folgenden Abschnitte bzw. Phasen der Softwareentwicklung mit der bekannten Datenverarbeitungsvorrichtung 110 dargestellt. In einem Abschnitt „1“ übersetzt der Compiler der Datenverarbeitungsvorrichtung 110 den Source-Code 111 in den Funktionsprogrammcode 127 und der Linker der Datenverarbeitungsvorrichtung 110 legt die Adressen im Adressraum des Hardware-Prozessorsystems 120 fest, an welche der Funktionsprogrammcode 127 zur Ausführung durch den Prozessor 121 gebunden wird. In einem Abschnitt „2“ wird der Funktionsprogrammcode 127 als Binärcode in den Festspeicher 125 des Hardware-Prozessorsystems 120 geladen. In einem anschließenden Abschnitt „3“ kann der Funktionsprogrammcode 127 durch den Prozessor 121 des Hardware-Prozessorsystems 120 zu jeder Zeit ausgeführt werden (wobei dieser zur Ausführung in den Arbeitsspeicher 123 geladen wird).
  • Wie bereits erwähnt, können bei Bedarf zusätzliche Software-Bibliotheken 113 in den Funktionsprogrammcode 127 integriert werden, wie beispielsweise eine Bibliothek 113 mit Betriebssystemaufrufen (z.B. die POSIX-Bibliothek für Hardware-Prozessorsysteme 120, welche mit Linux betrieben werden, oder Treiber für Zugriffe auf Peripheriegeräte). Dabei werden aus dem Source-Code 111 und den Software-Bibliotheken 113 ausführbare Maschinenbefehle generiert, die zusammen mit Daten an bestimmte Speicheradressen des Hardware-Prozessorsystems 120 gebunden sind.
  • 2 zeigt eine Datenverarbeitungsvorrichtung 210, welche beispielweise ein PC 210 sein kann und erfindungsgemäß zur Provisionierung des Hardware-Prozessorsystems 220 mit einem ersten Funktionsprogrammcode 227a und einem zweiten Funktionsprogrammcode 227b ausgebildet ist. Das Hardware-Prozessorsystem 220, bei dem es sich beispielsweise um einen Computer, ein Smartphone oder eine andere elektronische Vorrichtung handeln kann, umfasst einen Prozessor, einen Festspeicher 225, beispielsweise einen Flash-Speicher 225 und einen Arbeitsspeicher. Wie in 2 dargestellt, umfasst sowohl der Prozessor als auch der Arbeitsspeicher des Hardware-Prozessorsystems 220 einen normalen Bereich und einen gesicherten Bereich, nämlich der Prozessor einen normalen Prozessorbereich 221a und einen sicheren Prozessorbereich 221b und der Arbeitsspeicher einen ersten normalen Datenspeicherbereich 223a und einen zweiten sicheren bzw. gesicherten Datenspeicherbereich 223b. Wie ferner in 2 dargestellt, weist das Hardware-Prozessorsystem 220 einen Hardware-Adressraum auf, wobei dem ersten normalen Datenspeicherbereich 223a ein erster Adressbereich des Hardware-Adressraums zugeordnet ist und dem zweiten sicheren Datenspeicherbereich 223b ein zweiter Adressbereich des Hardware-Adressraums zugeordnet ist. Die vorstehend beschriebene Unterteilung des Prozessors und des Arbeitsspeichers in normale Bereiche 221a, 223a und gesicherte Bereiche 221b, 223b ist dem Fachmann beispielsweise unter dem Begriff „Trusted Execution Environment“ bekannt, was nachstehend noch detaillierter beschrieben wird.
  • Generell ist die Datenverarbeitungsvorrichtung 210 erfindungsgemäß dazu ausgebildet, zwischen Programmbestandteilen für den sicheren Bereich und des Hardware-Prozessorsystems 220 zu unterscheiden. Hierfür ist die Datenverarbeitungsvorrichtung 210 im Einzelnen ausgebildet, auf der Grundlage eines Source-Code 211 in einer Hochsprache, beispielsweise C oder C++, einen ersten ausführbaren Programmcode bereitzustellen, wobei der erste ausführbare Programmcode bei Ausführung durch den Prozessor des Hardware-Prozessorsystems 220, insbesondere durch den normalen Bereich 221a des Prozessors ausgebildet ist, ausschließlich auf eine Adressuntermenge des Hardware-Adressraums zuzugreifen. Dabei kann in einer Ausführungsform der zweite Adressbereich des zweiten Datenspeicherbereichs 223b aus der Adressuntermenge ausgeschlossen sein.
  • Ferner ist die Datenverarbeitungsvorrichtung 210 ausgebildet, den ersten ausführbaren Programmcode unter Verwendung eines kryptographischen Verschlüsselungsschlüssels mit einer digitalen Signatur zu signieren, um den ersten Funktionsprogrammcode 227a zu erhalten.
  • Die Datenverarbeitungsvorrichtung 210 ist ferner ausgebildet, einen zweiten ausführbaren Programmcode bereitzustellen, wobei der zweite ausführbare Programcode bei Ausführung durch den Prozessor des Hardware-Prozessorsystems 220, insbesondere durch den sicheren Bereich 221b des Prozessors ausgebildet ist, auf den gesamten Hardware-Adressraum mit (d.h. einschließlich) dem zweiten Adressbereich des zweiten Datenspeicherbereichs 223b zuzugreifen.
  • Ferner ist die Datenverarbeitungsvorrichtung 210 ausgebildet, den zweiten ausführbaren Programmcode mit einem kryptographischen Entschlüsselungsschlüssel zu versehen, welcher dem kryptographischen Verschlüsselungsschlüssel zugeordnet ist, um den zweiten Funktionsprogrammcode 227b zu erhalten, wobei der zweite Funktionsprogrammcode 227b bei Ausführung durch den Prozessor des Hardware-Prozessorsystems 220, insbesondere durch den sicheren Bereich 221b des Prozessors ausgebildet ist, die digitale Signatur des ersten Funktionsprogrammcodes 227a unter Verwendung des kryptographischen Entschlüsselungsschlüssels zu verifizieren.
  • Die Datenverarbeitungsvorrichtung 210 ist ferner ausgebildet, den ersten Funktionsprogrammcode 227a in den ersten Datenspeicherbereich 223a des Hardware-Prozessorsystems 220 zu laden und den zweiten Funktionsprogrammcode 227b in den zweiten Datenspeicherbereich 223b des Hardware-Prozessorsystems 220 zu laden.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung 210 ausgebildet, den ersten ausführbaren Programmcode durch Kompilierung eines ersten Basisprogrammcodes zu erzeugen, wobei die Datenverarbeitungsvorrichtung 210 ferner ausgebildet ist, den zweiten ausführbaren Programmcode durch Kompilierung eines zweiten Basisprogrammcodes zu erzeugen. Wie in 2 dargestellt, kann der jeweilige Basisprogrammcode beispielsweise als Source-Code 211 vorliegen. Die Datenverarbeitungsvorrichtung 210 ist bevorzugt als Kompilierer ausgebildet, um den jeweiligen ausführbaren Programmcode zu erzeugen.
  • In einer alternativen Ausführungsform ist die Datenverarbeitungsvorrichtung 210 ausgebildet, den ersten ausführbaren Programmcode und den zweiten ausführbaren Programmcode zu empfangen, insbesondere über ein Kommunikationsnetzwerk zu empfangen und, insbesondere in einer vor unberechtigten externen Zugriffen geschützten Umgebung, zu signieren. Die Datenverarbeitungsvorrichtung 210 kann hierzu beispielswese als ein Hardware-Sicherheitsmodul ausgebildet sein, welche den jeweiligen Programmcode über eine Schnittstelle, welche drahtlos der drahtgebunden sein kann, empfangen kann.
  • In einer Ausführungsform weist der erste ausführbare Programcode eine erste digitale Signatur auf der Basis eines ersten kryptographischen Verschlüsselungsschlüssels auf, wobei die Datenverarbeitungsvorrichtung 210 ausgebildet ist, die erste digitale Signatur mit einem ersten kryptographischen Entschlüsselungsschlüssel, welcher dem ersten kryptographischen Verschlüsselungsschlüssel zugeordnet ist, zu verifizieren und die erste digitale Signatur nach erfolgreicher Verifizierung zu entfernen, um den ersten ausführbaren Funktionsprogramcode 227a bereitzustellen, und wobei der zweite ausführbare Programcode eine zweite digitale Signatur auf der Basis eines zweiten kryptographischen Verschlüsselungsschlüssels aufweist, wobei die Datenverarbeitungsvorrichtung 210 ausgebildet ist, die zweite digitale Signatur mit einem zweiten kryptographischen Entschlüsselungsschlüssel, welcher dem zweiten kryptographischen Verschlüsselungsschlüssel zugeordnet ist, zu verifizieren und die zweite digitale Signatur nach erfolgreicher Verifizierung zu entfernen, um den zweiten ausführbaren Funktionsprogramcode 227b bereitzustellen.
  • Nach dem Entfernen der bestehenden digitalen Signaturen können die ausführbaren Programmcodes durch die Datenverarbeitungsvorrichtung 210 erneut signiert werden. Die erste und zweite digitale Signatur können beispielsweise auf der Basis eines generischen kryptographischen Testschlüssels erzeugt worden sein. Durch den Austausch dieser Signaturen wird die Systemsicherheit insgesamt erhöht.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung 210 ausgebildet ist, eine hybride Verschlüsselung des ersten ausführbaren Programmcodes durchzuführen, d.h. den ersten ausführbaren Programmcode mit einem zufällig gewählten symmetrischen Verschlüsselungsschlüssel zu verschlüsseln und den hierfür verwendeten symmetrischen Verschlüsselungsschlüsselt mit einem asymmetrischen Verschlüsselungsschlüssel zu verschlüsseln. In dieser Ausführungsform ist der zweite Funktionsprogrammcode bei Ausführung durch den Prozessor des Hardware-Prozessorsystems 220 zusätzlich ausgebildet, den symmetrischen Verschlüsselungsschlüssel mit dem asymmetrischen Entschlüsselungsschlüssel zu entschlüsseln und anschließend mit dem symmetrischen Verschlüsselungsschlüssel den ersten Funktionsprogrammcode zu entschlüsseln, bevor dieser zur Ausführung gebracht wird.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung 210 ausgebildet, das Hardware-Prozessorsystem 220 zu emulieren und den ersten und zweiten Funktionsprogrammcode 227a, 227b auszuführen, um die gemeinsame Funktionsweise der Funktionsprogrammcodes 227a, 227b zu testen. Hierbei können insbesondere die Wechselwirkungen zwischen den Funktionsprogrammcodes 227a, 227b überprüft werden, bevor die Funktionsprogrammcodes 227a, 227b in die entsprechenden Datenspeicherbereiche geladen werden.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung 210 ausgebildet, den ersten Funktionsprogrammcode 227a und den zweiten Funktionsprogrammcode 227b drahtlos, insbesondere über ein Kommunikationsnetzwerk, oder drahtgebunden, insbesondere über eine drahtgebundene Kommunikationsschnittstelle, zu übertragen.
  • In einer Ausführungsform legen die einander zugeordneten kryptographischen Entschlüsselungsschlüssel und Verschlüsselungsschlüssel eine kryptographisch symmetrische Verschlüsselung fest und sind gleich, oder die einander zugeordneten kryptographischen Entschlüsselungsschlüssel und Verschlüsselungsschlüssel legen eine kryptographisch asymmetrische Verschlüsselung fest und formen jeweils ein Schlüsselpaar mit einem kryptographischen privaten Schlüssel und einem kryptographischen öffentlichen Schlüssel.
  • Im Einzelnen sind in 2 die folgenden Abschnitte bzw. Phasen der Softwareentwicklung mit der vorstehend beschriebenen erfindungsgemäßen Datenverarbeitungsvorrichtung 210 dargestellt.
  • In dem Abschnitt „1“ übersetzt die erfindungsgemäße Datenverarbeitungsvorrichtung 210 den Source-Code 211 in Binärcode bzw. Maschinencode und unterscheidet dabei zwischen dem Code, d.h. dem ersten Funktionsprogrammcode 227a, der später im normalen Bereich 221a ausgeführt wird, und dem sicherheitskritischem Code, d.h. dem zweiten Funktionsprogrammcode 227b, der gegebenenfalls auf Basis einer Sicherheitskonfiguration an Adressen im gesicherten Bereich 221b gebunden ist.
  • In den Abschnitten „2a“ und „2b“ übermittelt die Datenverarbeitungsvorrichtung 210 den normalen Code, d.h. den ersten Funktionsprogrammcode 227a, und den sicherheitskritischen Code, d.h. den zweiten Funktionsprogrammcode 227b, an das Hardware-Prozessorsystem 220, um den jeweiligen Code 227a, 227b in dem Festspeicher 225 des Hardware-Prozessorsystems 220 zu speichern. Dabei ist, wie bereits vorstehend beschrieben, der jeweilige Code 227a, 227b an unterschiedliche Adresszuweisungen für die unterschiedlichen Bereiche 223a, 223b des Arbeitsspeichers des Hardware-Prozessorsystems 220 gebunden. Wie in 2 beispielhaft dargestellt, kann der erste Funktionsprogrammcode 227a an den Adressbereich 0x1000... bis 0x1FFF... des Arbeitsspeichers gebunden sein und der zweite Funktionsprogrammcode 227b an den Adressbereich 0x2000... bis 0x2FFF... des Arbeitsspeichers gebunden sein.
  • In den Abschnitten „3a“ und „3b“ können der erste Funktionsprogrammcode 227a und der zweite Funktionsprogrammcode 227b durch den Prozessor des Hardware-Prozessorsystems 220, wie vorstehend beschrieben, ausgeführt werden.
  • In einer Ausführungsform kann die Datenverarbeitungsvorrichtung 210 zusätzliche Software-Bibliotheken 213 bei der Erstellung des ersten Funktionsprogrammcodes 227a und/oder des zweiten Funktionsprogrammcodes 227b verwenden: Insbesondere kann die Datenverarbeitungsvorrichtung 210 Software-Bibliotheken 213 mit Sicherheitsfunktionen für die Erstellung des zweiten Funktionsprogrammcodes 227b für den gesicherten Bereich 221b des Hardware-Prozessorsystems 220 verwenden. Diese Software-Bibliotheken 213 mit Sicherheitsfunktionen können zum Beispiel einen sicheren Bootmanager, ein „Trusted Execution Environment“ oder eine Bibliothek mit kryptographischen Routinen umfassen.
  • In einer Ausführungsform besitzen der sicherheitskritische Code und der normaler Code Software-Schnittstellen, die bei der Übersetzung des Programms 211 in Binärcode durch die Datenverarbeitungsvorrichtung 210 berücksichtigt werden, so dass zur Laufzeit des Codes ein Datenaustausch möglich ist.
  • In einer Ausführungsform ist die Datenverarbeitungsvorrichtung 210 ausgebildet, zwischen unterschiedlichen Sicherheitsprozessorbereichen des Hardware-Prozessorsystems 220 (von deinen einer in 2 als „Sicherheits-Subsystem“ bezeichnet ist) zu unterscheiden, beispielsweise zwischen einer Arm TrustZone, einem Samsung Secure Flash Interface (SFI), einem Renesas Trusted Service Interface Protocol (TSIP) oder einem in einm SoC (System-on-Chip) integrierten Sicherheitsprozessor (iSE), der mit einem Hauptprozessor über einen Datenbus oder eine serielle Schnittstelle verbunden ist. Wie bereits vorstehend beschrieben, beruht die Unterscheidung durch die Datenverarbeitungsvorrichtung 210 im Wesentlichen darauf, dass sicherheitskritischer Code an andere Adressen als normaler Code gebunden wird, d.h. das Sicherheits-Subsystem verfügt über einen anderen Adressbereich, der über einen Isolierungsmechanismus (wie dies in 2 schematisch dargestellt ist) vom Adressbereich im normalen Bereich getrennt ist. Wie bereits vorstehend beschrieben, kann diese Trennung mittels einer „TrustZone“ der Firma ARM implementiert werden. Zum Datenaustausch zwischen dem normalen Bereich 221a und dem gesicherten Bereich 221b (d.h. dem Sicherheits-Subsystem 221b) kann ein gemeinsamer Adressbereich verwendet werden. In einer Ausführungsform können unterschiedliche Mechanismen zum Datenaustausch mit dem gesicherten Bereich 221b (d.h. dem Sicherheits-Subsystem 221b) über eine Softwareschnittstelle vereinheitlichen werden, die durch die Datenverarbeitungsvorrichtung 210 bereitgestellt wird. Hierzu kann, wie bereits teilweise vorstehend beschrieben, die Datenverarbeitungsvorrichtung 210 Steuerelemente und Software-Komponenten für den gesicherten Bereich 221b (d.h. das Sicherheits-Subsystem 221b, welches beispielsweise als „TrustZone“ implementiert sein kann) bereitstellen. In diesen Software-Komponenten können die Funktionen implementiert sein, die über die Softwareschnittstelle in vereinheitlichter Form zur Verfügung gestellt werden. Diese Software-Komponenten können beispielsweise enthalten: Software-Komponenten für die Ver- und Entschlüsselung von Daten; Software-Komponenten für die Signatur-Erstellung und -Prüfung; Software-Komponenten für die Ableitung, d.h. Erzeugung von neuen kryptographischen Schlüsseln, z.B. zur Verwendung für eine temporär Transportverschlüsselung; Software-Komponenten für die sichere Speicherung von Daten sowie von Konfigurationseinstellungen; und/oder Software-Komponenten für die Authentisierung von externen und internen Modulen.
  • 3 zeigt eine weitere Ausführungsform der Datenverarbeitungsvorrichtung 210 von 2, welche ausgebildet ist, mit einem externen Schlüssel-Provisionierungssystem 300 zu interagieren, um insbesondere den kryptographischen Verschlüsselungsschlüssel und den zugeordneten kryptographischen Entschlüsselungsschlüssel zu erhalten.
  • Im Einzelnen sind in 3 die folgenden Abschnitte bzw. Phasen der Softwareentwicklung mit der vorstehend beschriebenen erfindungsgemäßen Datenverarbeitungsvorrichtung 210 dargestellt.
  • In dem Abschnitt „1“ übersetzt die erfindungsgemäße Datenverarbeitungsvorrichtung 210 den Source-Code 211 in Binärcode und unterscheidet dabei zwischen dem Code, der später im normalen Bereich 211a ausgeführt wird, nämlich dem ersten Funktionsprogrammcode 227a, und dem sicherheitskritischen Code, nämlich dem zweiten Funktionsprogrammcode 227b, und zwar auf der Grundlage einer Sicherheitskonfiguration, welche auch Informationen zu den benötigten kryptographischen Schlüsseln enthält und diese Informationen auch an das Schlüssel-Provisionierungssystem 300 weiterleitet.
  • In den Abschnitten „2a“ und „2b“ übermittelt die Datenverarbeitungsvorrichtung 210 den normalen Code, d.h. den ersten Funktionsprogrammcode 227a, und den sicherheitskritischen Code, d.h. den zweiten Funktionsprogrammcode 227b, an das Hardware-Prozessorsystem 220, um den jeweiligen Code 227a, 227b in dem Festspeicher 225 des Hardware-Prozessorsystems 220 zu speichern. Dabei ist, wie bereits vorstehend beschrieben, der jeweilige Code 227a, 227b an unterschiedliche Adresszuweisungen für die unterschiedlichen Bereiche 223a, 223b des Arbeitsspeichers des Hardware-Prozessorsystems 220 gebunden. Wie in 3 beispielhaft dargestellt, kann der erste Funktionsprogrammcode 227a an den Adressbereich 0x1000... bis 0x1FFF... des Arbeitsspeichers gebunden sein und der zweite Funktionsprogrammcode 227b an den Adressbereich 0x2000... bis 0x2FFF... des Arbeitsspeichers gebunden sein.
  • In dem Abschnitt „3“ werden von dem Schlüssel-Provisionierungssystem 300 geeignete kryptographische Schlüssel in das Sicherheits-Subsystem 221b, d.h. den gesicherten Prozessorbereich 221b des Hardware-Prozessorsystems 220 geschrieben. Bei diesen kryptographischen Schlüsseln kann es sich neben dem vorstehend beschriebenen kryptographischen Verschlüsselungsschlüssel und dem zugeordneten kryptographischen Entschlüsselungsschlüssel um kryptographische Schlüssel zur Authentisierung bei einem Server oder einem Netzwerk, kryptographische Schlüssel zur Autorisierung einer finanziellen Transaktion und/oder um kryptographische Schlüssel zur Verifikation einer digitalen Signatur von anderen externen oder internen Komponenten handeln, z.B. zur Verifikation der Integration von anderen Softwarebestandteilen.
  • In den Abschnitten „4a“ und „4b“ können der erste Funktionsprogrammcode 227a und der zweite Funktionsprogrammcode 227b durch den Prozessor des Hardware-Prozessorsystems 220, wie vorstehend beschrieben, ausgeführt werden. Dabei können die vorstehend beschriebenen Sicherheitsfunktionen ausgeführt werden und die kryptographischen Schlüssel von dem zweiten Funktionsprogrammcode 227b (d.h. dem sicherheitskritischen Code) im gesicherten Bereich 221b, d.h. im Sicherheits-Subsystem 221b des Hardware-Prozessorsystems 220 verwendet werden. Dabei kann eine Softwareschnittstelle den Zugriff auf diese Sicherheitsdienste unabhängig von der unterlagerten Hardware vereinheitlichen.
  • 4 zeigt eine weitere Ausführungsform der erfindungsgemäßen Datenverarbeitungsvorrichtung 210, welche neben kryptographischen Schlüsseln auch weitere Sicherheitsinformationen auf dem Hardware-Prozessorsystem 220 provisionieren kann, wie beispielsweise einen Fehlbedienungszähler, Konfigurationseinstellungen für Updates des Funktionsprogramms, Identitätsinformationen, beispielsweise ein X.509 Zertifikat, und dergleichen. Dazu kann im ersten Abschnitt der Softwareentwicklung mittels der Datenverarbeitungsvorrichtung 210 ein Sicherheitsprofil definiert werden, welches die Personalisierung steuert. Ferner kann die Datenverarbeitungsvorrichtung 210 ausgebildet sein, Platzhalter für die Ablage der kryptographischen Schlüssel zu definieren. Im Einzelnen sind in 4 die folgenden Abschnitte bzw. Phasen der Softwareentwicklung mit einer erfindungsgemäßen Datenverarbeitungsvorrichtung 210 dargestellt.
  • In einem Abschnitt „1a“ wird mittels der Datenverarbeitungsvorrichtung 210 eine Sicherheitskonfiguration definiert. Zum Beispiel kann die Datenverarbeitungsvorrichtung 210 definieren, dass Schlüssel für eine spätere Netzwerk- oder Server-Authentisierung benötigt werden. Diese Sicherheitskonfiguration kann auch Platzhalter 405 für die benötigten Schlüssel in einer Sicherheits-Software 403 definieren, die bereits als Bestandteil der Software-Entwicklungsumgebung vorhanden sein kann. Bei der Sicherheits-Software 403 kann es sich beispielsweise um einen Secure Boot Code, ein Trusted Execution Environment oder ein Chipkarten-Betriebssystem handeln.
  • In einem Abschnitt „1b“ stellt dann die Sicherheits-Software 403 über eine SoftwareSchnittstelle 401 der Anwendungssoftware, d.h. des Funktionsprogramms geeignete Sicherheitsdienste zur Verfügung, beispielsweise einen Dienst zur Netzwerk- oder Server-Authentisierung.
  • In einem Abschnitt „1c“ kann die Datenverarbeitungsvorrichtung 210 Informationen zu der vorgenommenen Sicherheitskonfiguration an ein Personalisierungssystem 400 übermitteln.
  • Der in 4 nicht dargestellte Abschnitt „2“ entspricht den im Rahmen der vorstehenden Ausführungsformen von 2 und 3 beschriebenem Abschnitt „2“ und wird daher hier nicht weiter im Detail ausgeführt.
  • In einem in 4 dargestellten Abschnitt „3“ werden die in einem Personalisierungsvorgang benötigten Schlüssel in den sicheren Prozessorbereich 221 b des Hardware-Prozessorsystems 220 eingebracht.
  • Für die Massenproduktion, d.h. die Provisionierung und Personalisierung einer Vielzahl von Hardware-Prozessorsystemen 220 kann das komplette Personalisierungssystem 400 entkoppelt von der Datenverarbeitungsvorrichtung 210 betrieben werden. Hierzu kann in der Datenverarbeitungsvorrichtung 210 in dem ersten Abschnitt einmalig ein generisches Sicherheitsprofil mit generischen Konfigurationsinformationen definiert werden, welches bei der Massenproduktion im Abschnitt 3 mittels des Personalisierungssystems 400 provisioniert und personalisiert wird.
  • 5 zeigt ein Flussdiagramm, welches Schritte eines Verfahrens 500 zur Provisionierung des Hardware-Prozessorsystems 220 mit dem ersten Funktionsprogrammcode 227a und dem zweiten Funktionsprogrammcode 227b darstellt.
  • Das in 5 dargestellte Provisionierungsverfahren 500 umfasst das Bereitstellen 501 eines ersten ausführbaren Programmcodes, wobei der erste ausführbare Programmcode bei Ausführung durch den Prozessor des Hardware-Prozessorsystems 220 ausgebildet ist, ausschließlich auf eine Adressuntermenge des Hardware-Adressraums zuzugreifen Dabei kann in einer Ausführungsform der zweite Adressbereich des zweiten Datenspeicherbereichs 223b des Hardware-Prozessorsystems 220 aus der Adressuntermenge ausgeschlossen sein.
  • Ferner umfasst das Provisionierungsverfahren 500 das Signieren 503 des ersten ausführbaren Programmcodes unter Verwendung eines kryptographischen Verschlüsselungsschlüssels mit einer digitalen Signatur, um den ersten Funktionsprogrammcode 227a zu erhalten.
  • Das Provisionierungsverfahren 500 umfasst ferner das Bereitstellen 505 eines zweiten ausführbaren Programmcodes, wobei der zweite ausführbare Programcode bei Ausführung durch den Prozessor des Hardware-Prozessorsystems 220 ausgebildet ist, auf den gesamten Hardware-Adressraum mit (d.h. einschließlich) dem zweiten Adressbereich des Datenspeichers, d.h. des zweiten Datenspeicherbereichs 223b zuzugreifen.
  • Ferner umfasst das Provisionierungsverfahren 500 das Versehen 507 des zweiten ausführbaren Programmcodes mit einem kryptographischen Entschlüsselungsschlüssel, welcher dem kryptographischen Verschlüsselungsschlüssel zugeordnet ist, um den zweiten Funktionsprogrammcode zu erhalten, wobei der zweite Funktionsprogrammcode bei Ausführung durch den Prozessor ausgebildet ist, die digitale Signatur des ersten Funktionsprogrammcodes unter Verwendung des kryptographischen Entschlüsselungsschlüssels zu verifizieren.
  • Schließlich umfasst das Provisionierungsverfahren 500 das Laden 509 des ersten Funktionsprogrammcodes 227a in den ersten Datenspeicherbereich 223a des Hardware-Prozessorsystems 220 und des zweiten Funktionsprogrammcodes 227b in den zweiten Datenspeicherbereich 223b des Hardware-Prozessorsystems 220.

Claims (10)

  1. Datenverarbeitungsvorrichtung (210) zur Provisionierung eines Hardware-Prozessorsystems (220) mit einem ersten Funktionsprogrammcode (227a) und einem zweiten Funktionsprogrammcode (227b), wobei das Hardware-Prozessorsystem (220) einen Prozessor (221a, 221b) und einen Arbeitsspeicher mit einem ersten Datenspeicherbereich (223a) und einem zweiten Datenspeicherbereich (223b) aufweist, wobei das Hardware-Prozessorsystem (220) einen Hardware-Adressraum aufweist, wobei dem ersten Datenspeicherbereich (223a) ein erster Adressbereich des Hardware-Adressraums zugeordnet ist, wobei dem zweiten Datenspeicherbereich (223b) ein zweiter Adressbereich des Hardware-Adressraums zugeordnet ist, und wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist: einen ersten ausführbaren Programmcode bereitzustellen, wobei der erste ausführbare Programmcode bei Ausführung durch den Prozessor (221a) ausgebildet ist, ausschließlich auf eine Adressuntermenge des Hardware-Adressraums zuzugreifen; den ersten ausführbaren Programmcode unter Verwendung eines kryptographischen Verschlüsselungsschlüssels mit einer digitalen Signatur zu signieren, um den ersten Funktionsprogrammcode (227a) zu erhalten; einen zweiten ausführbaren Programmcode bereitzustellen, wobei der zweite ausführbare Programcode bei Ausführung durch den Prozessor (221b) ausgebildet ist, auf den gesamten Hardware-Adressraum mit dem zweiten Adressbereich des zweiten Datenspeicherbereichs (223b) zuzugreifen; den zweiten ausführbaren Programmcode mit einem kryptographischen Entschlüsselungsschlüssel zu versehen, welcher dem kryptographischen Verschlüsselungsschlüssel zugeordnet ist, um den zweiten Funktionsprogrammcode (227b) zu erhalten, wobei der zweite Funktionsprogrammcode (227b) bei Ausführung durch den Prozessor (221b) ausgebildet ist, die digitale Signatur des ersten Funktionsprogrammcodes (227a) unter Verwendung des kryptographischen Entschlüsselungsschlüssels zu verifizieren; und den ersten Funktionsprogrammcode (227a) in den ersten Datenspeicherbereich (223a) des Hardware-Prozessorsystems (220) zu laden und den zweiten Funktionsprogrammcode (227b) in den zweiten Datenspeicherbereich (223b) des Hardware-Prozessorsystems (220) zu laden.
  2. Datenverarbeitungsvorrichtung (210) nach Anspruch 1, wobei der zweite Adressbereich des zweiten Datenspeicherbereichs (223b) aus der Adressuntermenge ausgeschlossen ist.
  3. Datenverarbeitungsvorrichtung (210) nach Anspruch 1 oder 2, wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist, den ersten ausführbaren Programmcode durch Kompilierung eines ersten Basisprogrammcodes zu erzeugen, und wobei die Datenverarbeitungsvorrichtung (210) ferner ausgebildet ist, den zweiten ausführbaren Programmcode durch Kompilierung eines zweiten Basisprogrammcodes zu erzeugen.
  4. Datenverarbeitungsvorrichtung (210) nach Anspruch 2 oder 3, wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist, den ersten ausführbaren Programmcode und den zweiten ausführbaren Programmcode zu empfangen, insbesondere über ein Kommunikationsnetzwerk zu empfangen und, insbesondere in einer vor unberechtigten externen Zugriffen geschützten Umgebung, zu signieren.
  5. Datenverarbeitungsvorrichtung (210) nach einem der vorhergehenden Ansprüche, wobei der erste ausführbare Programcode eine erste digitale Signatur auf der Basis eines ersten kryptographischen Verschlüsselungsschlüssels aufweist, wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist, die erste digitale Signatur mit einem ersten kryptographischen Entschlüsselungsschlüssel, welcher dem ersten kryptographischen Verschlüsselungsschlüssel zugeordnet ist, zu verifizieren und die erste digitale Signatur nach erfolgreicher Verifizierung zu entfernen, um den ersten ausführbaren Funktionsprogramcode (227a) bereitzustellen, und wobei der zweite ausführbare Programcode eine zweite digitale Signatur auf der Basis eines zweiten kryptographischen Verschlüsselungsschlüssels aufweist, wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist, die zweite digitale Signatur mit einem zweiten kryptographischen Entschlüsselungsschlüssel, welcher dem zweiten kryptographischen Verschlüsselungsschlüssel zugeordnet ist, zu verifizieren und die zweite digitale Signatur nach erfolgreicher Verifizierung zu entfernen, um den zweiten ausführbaren Funktionsprogramcode (227b) bereitzustellen.
  6. Datenverarbeitungsvorrichtung (210) nach einem der vorhergehenden Ansprüche, wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist, den ersten ausführbaren Programmcode mit einem symmetrischen Verschlüsselungsschlüssel zu verschlüsseln und den symmetrischen Verschlüsselungsschlüssel mit einem asymmetrischen Verschlüsselungsschlüssel zu verschlüsseln.
  7. Datenverarbeitungsvorrichtung (210) nach einem der vorhergehenden Ansprüche, wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist, das Hardware-Prozessorsystem (220) zu emulieren und den ersten und zweiten Funktionsprogrammcode (227a, 227b) auszuführen, um die gemeinsame Funktionsweise der Funktionsprogrammcodes (227a, 227b) zu testen.
  8. Datenverarbeitungsvorrichtung (210) nach einem der vorhergehenden Ansprüche, wobei die Datenverarbeitungsvorrichtung (210) ausgebildet ist, den ersten Funktionsprogrammcode (227a) und den zweiten Funktionsprogrammcode (227b) drahtlos, insbesondere über ein Kommunikationsnetzwerk, oder drahtgebunden, insbesondere über eine drahtgebundene Kommunikationsschnittstelle, zu übertragen.
  9. Datenverarbeitungsvorrichtung (210) nach einem der vorhergehenden Ansprüche, wobei der erste ausführbare Programmcode ein Betriebssystem oder eine Firmware ist und der zweite ausführbare Programmcode eine kryptographische Funktion implementiert.
  10. Verfahren (500) zur Provisionierung eines Hardware-Prozessorsystems (220) mit einem ersten Funktionsprogrammcode (227a) und einem zweiten Funktionsprogrammcode (227b), wobei das Hardware-Prozessorsystem (220) einen Prozessor (221a, 221b) und einen Arbeitsspeicher mit einem ersten Datenspeicherbereich (223a) und einem zweiten Datenspeicherbereich (223b) aufweist, wobei das Hardware-Prozessorsystem (220) einen Hardware-Adressraum aufweist, wobei dem ersten Datenspeicherbereich (223a) ein erster Adressbereich des Hardware-Adressraums zugeordnet ist, wobei dem zweiten Datenspeicherbereich (223b) ein zweiter Adressbereich des Hardware-Adressraums zugeordnet ist, und wobei das Verfahren (500) die folgenden Merkmale aufweist: Bereitstellen (501) eines ersten ausführbaren Programmcodes, wobei der erste ausführbare Programmcode bei Ausführung durch den Prozessor (221a) ausgebildet ist, ausschließlich auf eine Adressuntermenge des Hardware-Adressraums zuzugreifen; Signieren (503) des ersten ausführbaren Programmcodes unter Verwendung eines kryptographischen Verschlüsselungsschlüssels mit einer digitalen Signatur, um den ersten Funktionsprogrammcode (227a) zu erhalten; Bereitstellen (505) eines zweiten ausführbaren Programmcodes, wobei der zweite ausführbare Programcode bei Ausführung durch den Prozessor (221b) ausgebildet ist, auf den gesamten Hardware-Adressraum mit dem zweiten Adressbereich des zweiten Datenspeicherbereichs (223b) zuzugreifen; Versehen (507) des zweiten ausführbaren Programmcodes mit einem kryptographischen Entschlüsselungsschlüssel, welcher dem kryptographischen Verschlüsselungsschlüssel zugeordnet ist, um den zweiten Funktionsprogrammcode (227b) zu erhalten, wobei der zweite Funktionsprogrammcode (227b) bei Ausführung durch den Prozessor (221b) ausgebildet ist, die digitale Signatur des ersten Funktionsprogrammcodes (227a) unter Verwendung des kryptographischen Entschlüsselungsschlüssels zu verifizieren; und Laden (509) des ersten Funktionsprogrammcodes (227a) in den ersten Datenspeicherbereich (223a) des Hardware-Prozessorsystems (220) und des zweiten Funktionsprogrammcodes (227b) in den zweiten Datenspeicherbereich (223b) des Hardware-Prozessorsystems (220).
DE102020002055.0A 2020-03-30 2020-03-30 Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems Pending DE102020002055A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102020002055.0A DE102020002055A1 (de) 2020-03-30 2020-03-30 Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102020002055.0A DE102020002055A1 (de) 2020-03-30 2020-03-30 Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems

Publications (1)

Publication Number Publication Date
DE102020002055A1 true DE102020002055A1 (de) 2021-09-30

Family

ID=77658553

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020002055.0A Pending DE102020002055A1 (de) 2020-03-30 2020-03-30 Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems

Country Status (1)

Country Link
DE (1) DE102020002055A1 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160364341A1 (en) 2015-06-15 2016-12-15 Intel Corporation Virtualization-based platform protection technology
US20180152454A1 (en) 2016-11-28 2018-05-31 Samsung Electronics Co., Ltd. Method and apparatus for managing program of electronic device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160364341A1 (en) 2015-06-15 2016-12-15 Intel Corporation Virtualization-based platform protection technology
US20180152454A1 (en) 2016-11-28 2018-05-31 Samsung Electronics Co., Ltd. Method and apparatus for managing program of electronic device

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Digital signature. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 23. März 2020. URL: https://en.wikipedia.org/w/index.php?title=Digital_signature&oldid=946958930 [abgerufen am 13.11.2020]
Emulator. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 25. März 2020. URL: https://en.wikipedia.org/w/index.php?title=Emulator&oldid=947215529 [abgerufen am 15.11.2020]
GlobalPlatform Technology TEE System Architecture Version 1.2. November 2018. URL: https://globalplatform.org/wp-content/uploads/2017/01/GPD_TEE_SystemArch_v1.2_PublicRelease.pdf [abgerufen am 12.11.2020]
Hybrid cryptosystem. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 11. Februar 2020. URL: https://en.wikipedia.org/w/index.php?title=Hybrid_cryptosystem&oldid=940277514 [abgerufen am 13.11.2020]
Trusted execution environment. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 22. Februar 2020. URL: https://en.wikipedia.org/w/index.php?title=Trusted_execution_environment&oldid=942105228 [abgerufen am 12.11.2020]

Similar Documents

Publication Publication Date Title
EP3437012B1 (de) Verfahren, prozessor und gerät zur integritätsprüfung von nutzerdaten
DE10393456B4 (de) Verkapselung einer TCPA-vertrauenswürdigen Plattformmodulfunktionalität innerhalb eines Server-Management-Coprozessor-Subsystems
DE102015209116A1 (de) Verfahren und Aktualisierungsgateway zum Aktualisieren eines eingebetteten Steuergerätes
DE102015209108A1 (de) Verfahren und Entscheidungsgateway zum Autorisieren einer Funktion eines eingebetteten Steuergerätes
DE102013108020A1 (de) Authentifizierungsschema zum Aktivieren eines Spezial-Privileg-Modus in einem gesicherten elektronischen Steuergerät
DE102013108022A1 (de) Verfahren zum Aktivieren des Entwicklungsmodus eines gesicherten elektronischen Steuergeräts
DE102011056191A1 (de) Vorrichtung zum Schutz von Sicherheitstoken gegen Malware
DE102016210788B4 (de) Komponente zur Verarbeitung eines schützenswerten Datums und Verfahren zur Umsetzung einer Sicherheitsfunktion zum Schutz eines schützenswerten Datums in einer solchen Komponente
EP3811261B1 (de) Kryptografiemodul und betriebsverfahren hierfür
DE102014210282A1 (de) Erzeugen eines kryptographischen Schlüssels
DE102018217431A1 (de) Sicherer Schlüsseltausch auf einem Gerät, insbesondere einem eingebetteten Gerät
DE112014004611T5 (de) Steuersystem und Authentifikationsvorrichtung
DE102015202215A1 (de) Vorrichtung und Verfahren zum sicheren Betreiben der Vorrichtung
EP3752911A1 (de) Verfahren zum installieren eines programmcodepakets in ein gerät sowie gerät und kraftfahrzeug
DE102020002055A1 (de) Datenverarbeitungsvorrichtung zur Provisionierung eines Hardware-Prozessorsystems
DE102016208284A1 (de) Verbessern einer Geräteauthentifizierung mit Hilfe von Geräteüberwachungsdaten
DE102020206039A1 (de) Erstellen einer Container-Instanz
DE102005046696A1 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
WO2005003936A1 (de) Verfahren zur authentifikation von insbesondere in ein steuergerät eines kraftfahrzeugs ladbaren softwarekomponenten
DE102020216030A1 (de) Verfahren zum abgesicherten Start einer Recheneinheit
DE102017202787A1 (de) Verfahren und Validierungseinheit zum Steuern des Ladens von in IT-Systemen, insbesondere Eingebetteten Systemen, benutzbaren Krypto-Schlüsseln, insbesondere "Key BLOBs"
WO2014079564A1 (de) Verfahren und system zur applikationsinstallation in einem sicherheitselement
DE102009053230A1 (de) Verfahren zur Autorisierung eines externen Systems auf einem Steuergerät eines Fahrzeugs, insbesondere eines Kraftfahrzeugs
EP2569726B1 (de) Verfahren zum überprüfen, ob programmanweisungen von einem tragbaren endgerät ausgeführt wurden
DE102015207004A1 (de) Verfahren zum geschützten Zugriff auf Sicherheitsfunktionen eines Sicherheitsmoduls eines Hostsystems

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: PATENTSHIP PATENTANWALTSGESELLSCHAFT MBH, DE

R081 Change of applicant/patentee

Owner name: DATA I/O CORPORATION, REDMOND, US

Free format text: FORMER OWNER: HAMM, PAUL, 80336 MUENCHEN, DE

R082 Change of representative

Representative=s name: PATENTSHIP PATENTANWALTSGESELLSCHAFT MBH, DE

R082 Change of representative

Representative=s name: PATENTSHIP PATENTANWALTSGESELLSCHAFT MBH, DE