Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR TRANSFERRING A BOOT CODE WITH IMPROVED DATA SECURITY
Document Type and Number:
WIPO Patent Application WO/2020/221776
Kind Code:
A1
Abstract:
The invention relates to a method for transferring a boot code from a programming device (10) to a microcontroller (20) with improved data security. The method comprises the steps: a) creating a first public key, a first private key and a password; b) generating a bootloader binary for execution on the microcontroller (20), with the bootloader binary comprising at least a bootstrap program, the password, the first public key encrypted by means of the password and a set of bootloader routines encrypted by means of the password; c) estimating a tolerable total processing duration which consists of the processing durations of steps d) to f); d) transferring the bootloader binary from the programming device (10) to the microcontroller (20); e) executing the bootstrap code by means of the microcontroller (20), the decryption routine to decrypt the bootloader routines encrypted by means of the password, and the decrypted bootloader routines; f) transferring at least the second public key from the microcontroller (20) to the programming device (10); g) aborting the method if the actual processing durations of steps d) to f) lie outside the tolerable total processing duration; and h) otherwise, encrypting, by means of the programming device (10), the boot code by means of the second public key and transferring an encrypted boot code from the programming device (10) to the microcontroller (20).

Inventors:
BIEGER STEFAN (DE)
Application Number:
PCT/EP2020/061814
Publication Date:
November 05, 2020
Filing Date:
April 29, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
CONTINENTAL AUTOMOTIVE GMBH (DE)
International Classes:
G06F21/57
Foreign References:
US9454662B12016-09-27
US20140068238A12014-03-06
GB2457172A2009-08-12
Download PDF:
Claims:
Patentansprüche

1. Verfahren zur Übertragung eines Boot-Codes, mit verbesserter

Datensicherheit, von einem Programmiergerät (10) zu einem

Mikrocontroller (20), mit den Schritten:

a) Erstellen, mittels des Programmiergeräts (10), eines ersten Public-Keys, eines ersten Private-Keys und eines Passworts;

b) Generieren, mittels des Programmiergeräts (10), eines Bootlader-Binary zur Ausführung auf dem Mikrocontroller (20), wobei das Bootlader-Binary mindestens umfasst:

- einen Urlader zur Ausführung auf dem Mikrocontroller (20),

- das Passwort,

- den mittels des Passworts verschlüsselten ersten Public-Key,

- eine Menge von mittels des Passworts verschlüsselten

Bootlader-Routinen zur Ausführung auf dem Mikrocontroller (20), wobei die Menge der verschlüsselten Bootlader-Routinen umfasst: eine Generierungsroutine zum Generieren eines zweiten

Public-Keys und eines zweiten Private-Keys, und eine Entschlüsselungsroutine zur Entschlüsselung des ersten Public-Keys; und

- eine Entschlüsselungsroutine, zur Ausführung auf dem

Mikrocontroller, zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen;

c) Abschätzen, mittels des Programmiergeräts (10), einer tolerierbaren Gesamtbearbeitungsdauer, welche aus den Bearbeitungsdauern der Schritte d) bis f) besteht.

d) Übertragen des Bootlader-Binary von dem Programmiergerät (10) an den Mikrocontroller (20);

e) Ausführen, mittels des Mikrocontrollers (20), des Urlader-Codes,

der Entschlüsselungsroutine zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen, und der entschlüsselten Bootlader-Routinen;

f) Übertragen mindestens des zweiten Public-Keys von dem Mikrocontroller (20) an das Programmiergerät (10);

g) Wenn die tatsächlichen Bearbeitungsdauern der Schritte d) bis f) außerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, Abbrechen des Verfahrens; und

h) Wenn die tatsächlichen Bearbeitungsdauern der Schritte d) bis f) innerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen,

Verschlüsseln, mittels des Programmiergeräts (10), des Boot-Codes mittels des zweiten Public-Keys und Übertragen eines verschlüsselten Boot-Codes von dem Programmiergerät (10) an den Mikrocontroller (20).

2. Verfahren nach Anspruch 1 ,

wobei die tolerierbare Gesamtbearbeitungsdauer durch eine maximale Gesamtbearbeitungsdauer, eine minimale Gesamtbearbeitungsdauer oder ein Zeitfenster zwischen der maximalen Gesamtbearbeitungsdauer und der minimalen Gesamtbearbeitungsdauer definiert ist.

3. Verfahren nach Anspruch 1 oder 2,

wobei die Menge der verschlüsselten Bootlader-Routinen weiterhin eine Routine zur Erzeugung einer Pause einer vordefinierten Dauer umfasst.

4. Verfahren nach einem der vorhergehenden Ansprüche,

wobei die Menge der verschlüsselten Bootlader-Routinen weiterhin eine Ausleseschutzroutine umfasst.

5. Verfahren nach einem der vorhergehenden Ansprüche,

wobei die Menge der Bootlader-Routinen weiterhin eine Routine zum Auslesen einer Seriennummer des Mikrocontrollers umfasst, und wobei der Boot-Code weiterhin die Seriennummer umfasst, mit dem weiteren Schritt:

f1 ) Übertragen zusätzlich der Seriennummer von dem Mikrocontroller (20) an das Programmiergerät (10).

6. Verfahren nach einem der vorhergehenden Ansprüche, wobei das

Bootlader-Binary weiterhin den ersten Public-Key umfasst, mit dem weiteren Schritt:

f2) Wenn der von dem Mikrocontroller (20) gesendete erste Public-Key sich von dem, von dem Programmiergerät (10) gesendeten, ersten Public-Key unterscheidet, Abbrechen des Verfahrens.

7. Programmiergerät (10) zur Übertragung eines Boot-Codes, mit

verbesserter Datensicherheit, zu einem Mikrocontroller (20), wobei das Programmiergerät (10) dazu eingerichtet ist,

einen ersten Private-Key und ein Passwort zu erstellen;

ein Bootlader-Binary zur Ausführung auf dem Mikrocontroller (20) zu generieren, wobei das Bootlader-Binary mindestens umfasst:

- einen Urlader,

- das Passwort,

- den mittels des Passworts verschlüsselten ersten Public-Key,

- eine Menge von mittels des Passworts verschlüsselten

Bootlader-Routinen zur Ausführung auf dem Mikrocontroller (20), wobei die Menge der verschlüsselten Bootlader-Routinen umfasst: eine Generierungsroutine zum Generieren eines zweiten

Public-Keys und eines zweiten Private-Keys, und eine Entschlüsselungsroutine zur Entschlüsselung des ersten Public-Keys; und - eine Entschlüsselungsroutine, zur Ausführung auf dem

Mikrocontroller, zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen;

eine tolerierbare Gesamtbearbeitungsdauer abzuschätzen;

das Bootlader-Binary von dem Programmiergerät (10) an den

Mikrocontroller (20) zu übertragen;

von dem Mikrocontroller (20) mindestens einen zweiten Public-Key zu empfangen;

wenn die tatsächlichen Bearbeitungsdauern von dem Übertragen des Bootlader-Binary bis zu dem Empfangen des zweiten Public-Keys außerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, abbrechen des Verfahrens; und

wenn die tatsächlichen Bearbeitungsdauern von dem Übertragen des Bootlader-Binary bis zu dem Empfangen des zweiten Public-Keys innerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, verschlüsseln des Boot-Codes mittels des zweiten Public-Keys und übertragen des

verschlüsselten Boot-Codes an den Mikrocontroller (20).

8. Mikrocontroller (20) zur Übertragung eines Boot-Codes, mit verbesserter Datensicherheit, von einem Programmiergerät (10), wobei der

Mikrocontroller (20) dazu eingerichtet ist,

ein Bootlader-Binary von dem Programmiergerät (10) zu empfangen, wobei das Bootlader-Binary mindestens einen Urlader-Code, das Passwort, eine Entschlüsselungsroutine zur Entschlüsselung von mittels des Passworts verschlüsselten Bootlader-Routinen, und eine Menge von mittels des Passworts verschlüsselten Bootlader-Routinen umfasst;

den Urlader-Code, die Entschlüsselungsroutine, und die entschlüsselten Bootlader-Routinen auszuführen;

mindestens den zweiten Public-Key an das Programmiergerät (10) zu übertragen; und einen verschlüsselten Boot-Code von dem Programmiergerät (10) zu empfangen.

9. Verwendung eines Programmiergeräts (10) nach Anspruch 7, eines

Mikrocontrollers (20) nach Anspruch 8 und/oder eines Verfahrens nach einem der Ansprüche 1 bis 6 zur Übertragung eines Boot-Codes, mit verbesserter Datensicherheit, von dem Programmiergerät (10) zu dem Mikrocontroller (20). 10. Programmelement, welches, wenn es auf einem Programmiergerät (10) ausgeführt wird, das Programmiergerät (10) anleitet, das Verfahren nach einem der Ansprüche 1 bis 6 durchzuführen.

11. Computerlesbares Medium, auf dem ein Programmelement nach Anspruch 10 gespeichert ist.

Description:
Beschreibung

Verfahren und Vorrichtung zum Übertragen eines Boot-Codes mit

verbesserter Datensicherheit

Die Erfindung betrifft ein Verfahren zum Übertragen eines Boot-Codes, mit ver besserter Datensicherheit, von einem Programmiergerät auf einen Mikrocontroller. Weiterhin betrifft die Erfindung ein Programmiergerät und einen Mikrocontroller. Außerdem betrifft die Erfindung eine Verwendung, ein Programmelement und ein computerlesbares Medium.

Ein Mikrocontroller, auf dem sich noch keine ablauffähige Software oder Firmware befindet, benötigt eine Basis-Software oder Firmware, den sog. Boot-Code, um seine Funktion erfüllen zu können. Da es sich dabei zumindest in einigen Fällen um geheimzuhaltende Software handelt, liegt diese zumindest in einigen Fällen verschlüsselt vor. Da eine verschlüsselte Software per se auf einem Computer oder Mikrocontroller nicht ablauffähig ist, muss vor dem Starten des Boot-Codes eine Entschlüsselungs-Software zur Verfügung gestellt werden. Durch das Übertragen dieser Entschlüsselungs-Software wird sowohl die Entschlüsselungs-Software als auch der verschlüsselte Boot-Code anfällig für sicherheitsrelevante Aktionen eines potentiellen Angreifers, beispielsweise für Diebstahl, unkontrolliertes Kopieren und/oder Veränderung der Entschlüsselungs-Software und/oder des Boot-Codes.

Es ist Aufgabe der Erfindung, die Übertragungssicherheit zumindest bei einem Teil der genannten Aktionen zu verbessern.

Diese Aufgabe wird durch den Gegenstand der unabhängigen Patentansprüche gelöst. Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen und der folgenden Beschreibung.

Gemäß einem ersten Aspekt wird ein Verfahren zum Übertragen einer Software mit verbesserter Datensicherheit von einem Programmiergerät auf einen Mikro controller beschrieben.

Ein Mikrocontroller ist ein Computer, der dazu eingerichtet oder geeignet ist, vor definierte Steuerungsaufgaben durchzuführen. In zumindest einigen Ausführungs formen kann der Mikrocontroller dazu eingerichtet oder geeignet sein, als sog. „General-Purpose-Computer“ zu dienen, z.B. mit den Aufgaben eines Personal Computers. Der Mikrocontroller kann ein spezialisierter Computer oder auch ein Standard-Computer sein und/oder Standard-Software und/oder spezialisierte Software zur Erfüllung zumindest eines Teils seiner intendierten Aufgaben ver wenden. Bei der Software kann es sich um z.B. um Software, Firmware, Mikrocode, FPGA-Iesbare Anweisungen und/oder um Dateien, die mittels irgendeiner

Komponente des Mikrocontrollers dessen Ablauf bestimmen können oder könnten. Der Boot-Code kann schützenswerte Ideen und/oder Routinen enthalten und/oder geheimzuhalten sein. Der Boot-Code kann verschlüsselt vorliegen und/oder in verschlüsselter Form übertragen werden.

Das Programmiergerät ist ein Computer, welcher mindestens dazu geeignet ist, Software, Firmware und/oder andere Dateien auf den Mikrocontroller zu über tragen. Ferner ist das Programmiergerät geeignet, Routinen auszuführen, die auf der Erzeugung einer Zufallszahl basieren. Dabei wird das Programmiergerät als vertrauenswürdig eingestuft. Weiterhin liegt dem Programmiergerät mindestens ein Boot-Code und eine Entschlüsselungs-Software vor, die - gegebenenfalls nach mindestens einer weiteren Entschlüsselung - auf dem Mikrocontroller ablauffähig sind. Eine Übertragung des Boot-Codes von einem Programmiergerät auf einen Mikrocontroller kann über eine Leitung durchgeführt werden, die nicht als vertrauenswürdig eingestuft wird.

Das Verfahren zur Übertragung eines Boot-Codes von einem Programmiergerät auf einen Mikrocontroller mit verbesserter Datensicherheit weist folgende Schritte auf: a) Erstellen, mittels des Programmiergeräts, eines ersten Public-Keys, eines ersten Private-Keys und eines Passworts.

Das Public-Keys/Private-Key-Paar dient dabei als Basis für Verschlüsselungen. Das Erstellen der Schlüssel (Keys) und des Passworts kann die Verwendung einer Standard-Routine und/oder die Verwendung von Spezial-Hardware zur Erzeugung des Public-Key/Private-Key-Paars und der Zufallszahl umfassen. b) Generieren, mittels des Programmiergeräts, eines Bootlader-Binary zur Aus führung auf dem Mikrocontroller, wobei das Bootlader-Binary mindestens umfasst:

- einen Urlader zur Ausführung auf dem Mikrocontroller,

- das Passwort,

- den mittels des Passworts verschlüsselten ersten Public-Key, - eine Menge von mittels des Passworts verschlüsselten Bootlader-Routinen zur Ausführung auf dem Mikrocontroller, wobei die Menge der verschlüsselten

Bootlader-Routinen umfasst:

eine Generierungsroutine zum Generieren eines zweiten Public-Keys und eines zweiten Private-Keys, und eine Entschlüsselungsroutine zur Entschlüsselung mindestens des ersten Public-Keys;

- eine Entschlüsselungsroutine, zur Ausführung auf dem Mikrocontroller, zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen.

Das Bootlader-Binary kann dabei als Zusammenstellung der aufgezählten

Software-Teile realisiert sein oder als Verkettung dieser Teile. In Abwandlungen kann die Menge der mittels des Passworts verschlüsselten Bootlader-Routinen andere und/oder weitere Routinen beinhalten und insbesondere umfangreicher sein. Mindestens der Urlader weist dabei einen Code auf, der auf dem Mikro controller unmittelbar ablauffähig ist. Die Verschlüsselung der Menge der verschlüsselten Bootlader-Routinen kann z.B. dazu dienen, eine Manipulation der Bootlader-Routinen im Wesentlichen während der Übertragung bzw. während der Übertragungszeit („on-the-fly Manipulation“) zu verhindern. c) Abschätzen, mittels des Programmiergeräts, einer tolerierbaren Gesamt bearbeitungsdauer, welche aus den Bearbeitungsdauern der Schritte d) bis f) besteht.

Die Schritte d) bis f), die im Folgenden im Detail beschrieben werden, umfassen im Wesentlichen eine Übertragungszeit einer ersten Datenmenge von dem

Programmiergerät an den Mikrocontroller, eine Übertragungszeit einer zweiten Datenmenge von dem Mikrocontroller an das Programmiergerät und eine definierte Bearbeitungszeit von vordefinierten Routinen, wie sie z.B. in dem oben

beschriebenen Bootlader-Binary enthalten sind. Wenn das Bootlader-Binary mehr oder weniger auszuführende Routinen umfasst als die oben beschriebenen Routinen, dann kann sich die Gesamtbearbeitungsdauer entsprechend ändern.

Das Abschätzen einer tolerierbaren Gesamtbearbeitungsdauer„mittels des Programmiergeräts“ kann dabei beispielsweise mittels einer Routine auf dem Programmiergerät vorgenommen werden, die z.B. eine Abschätzung der

Dateigrößen verwendet. Die Abschätzung kann auf einer Messreihe basieren, welche mehrfach eine Gesamtbearbeitungsdauer der Schritte d) bis f) bei

Beispielübertragungen misst (oder vor der Abschätzung gemessen hat) und daraus z.B. einen Maximalwert und/oder eine zeitliche Streuung der Beispielübertragungen bestimmt. Das Abschätzen kann z.B. von einem Entwickler durchgeführt werden und/oder mittels eines Tools unterstützt werden. Die aus dieser Messreihe und/oder mittels anderer Methoden bestimmte und/oder geschätzte Gesamtbearbeitungs dauer wird dem Programmiergerät mitgeteilt; das Programmiergerät verwendet diese Zeit als geschätzte Gesamtbearbeitungsdauer. Aus der Messreihe kann auch

- z.B. unter Berücksichtigung der gemessenen zeitlichen Streuung und/oder anderer Faktoren - eine tolerierbare Gesamtbearbeitungsdauer bestimmt werden. d) Übertragen des Bootlader-Binary von dem Programmiergerät an den Mikro controller.

Dabei sind in dem Bootlader-Binary die oben genannten Daten enthalten oder - in Abwandlungen - mehr oder weniger Daten bzw. auszuführende Routinen enthalten. In einer Abwandlung kann das Passwort auch getrennt von den anderen Teilen des Bootlader-Binary übertragen werden; dies kann Auswirkungen auf die geschätzte Gesamtbearbeitungsdauer haben. e) Ausführen, mittels des Mikrocontrollers,

des Urlader-Codes,

der Entschlüsselungsroutine zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen, und

der entschlüsselten Bootlader-Routinen.

Dabei weist der Urlader einen Code auf, der auf dem Mikrocontroller unmittelbar ablauffähig ist. Dabei kann der Urlader beispielsweise zunächst einen„Start-Code“ ausführen, der z.B. von Spezifika des Mikrocontrollers abhängig sein kann. Dann kann der Urlader die Entschlüsselungsroutine ausführen, um die mittels des Pass worts verschlüsselten Bootlader-Routinen zu entschlüsseln. Zur Entschlüsselung dieser Routinen kann das in dem Bootlader-Binary enthaltene (oder anderweitig übermittelte) Passwort verwendet werden. Anschließend - oder möglicherweise nach einer vordefinierten Pause - können die Bootlader-Routinen ausgeführt werden. Wenn das Bootlader-Binary die oben beschriebenen Routinen enthält, dann werden auf dem Mikrocontroller folgende Bootlader-Routinen ausgeführt:

- eine Generierungsroutine zum Generieren eines zweiten

Public-Key/Private-Key-Paars (und ggf. zum Verschlüsseln, mittels des ersten Public Keys, des zweiten Public-Keys), und

- eine Entschlüsselungsroutine zur Entschlüsselung des ersten Public-Keys. f) Übertragen des (ggf. verschlüsselten) zweiten Public-Keys von dem Mikrocontroller an das Programmiergerät. g) Wenn die tatsächlichen Bearbeitungsdauern der Schritte d) bis f) außerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, Abbrechen des Verfahrens.

Die Ablauf- und/oder Übertragungszeiten der oben beschriebenen Schritte des Verfahrens - und gegebenenfalls auch vordefinierte Variationen davon - können in einem engen Rahmen vorbestimmt und/oder mit geringen Abweichungen gemessen werden (z.B. in einer Messreihe, wie oben beschrieben). So kann beispielsweise aus einer Messreihe von Bearbeitungsdauern - z.B. unter Berück sichtigung der gemessenen zeitlichen Streuung und/oder anderer Faktoren - (z.B. in einem engen zeitlichen Rahmen) eine tolerierbare Gesamtbearbeitungsdauer für die Schritte d) bis f) bestimmt werden. Diese tolerierbare Gesamtbearbeitungsdauer kann dann mit den tatsächlichen Bearbeitungsdauern verglichen werden. Das Programmiergerät kann also z.B., beginnend mit Schritt d), auf das Ende der Übertragung von Schritt f) nur so lange warten, wie das als tolerierbare Gesamt bearbeitungsdauer bestimmt wurde. h) Wenn die tatsächlichen Bearbeitungsdauern der Schritte d) bis f) innerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, Verschlüsseln, mittels des

Programmiergeräts, des Boot-Codes mittels des zweiten Public-Keys und

Übertragen eines verschlüsselten Boot-Codes von dem Programmiergerät an den Mikrocontroller.

Mit dem geschilderten Verfahren kann der Boot-Code also wesentlich sicherer an den Mikrocontroller übertragen werden. Dadurch wird zumindest wesentlich erschwert und/oder verhindert, dass ein Angreifer z.B. das Bootlader-Binary mitlesen, modifizieren und/oder ein modifiziertes Bootlader-Binary anstelle des originalen Bootlader-Binarys auf den Mikrocontroller laden kann. Dieser Vorteil ist auch dann gegeben, wenn ein potentieller Angreifer in der Lage sein sollte, die Kommunikation zwischen dem Programmiergerät und dem Mikrocontroller (und in Gegenrichtung) in Echtzeit mitzulesen und/oder zu manipulieren. Denn z.B. wegen der engen zeitlichen Rahmenbedingungen (und der Überprüfung) würde z.B. eine Unterbrechung der Übertragung durch einen potentiellen Angreifer bemerkt werden. Darüber hinaus würden Aktionen, die für eine Manipulation erforderlich wären, zu lange dauern und deshalb bemerkt werden. Diese Aktionen können z.B. das Lesen, Identifizieren, Manipulieren und Übertragen des manipulierten Boot- lader-Binary umfassen. Auch ist der verschlüsselte Boot-Code schwer zu lesen und zur nicht-autorisierten Programmierung eines Mikrocontrollers zu verwenden.

In einer Ausführungsform ist die tolerierbare Gesamtbearbeitungsdauer durch eine maximale Gesamtbearbeitungsdauer, eine minimale Gesamtbearbeitungsdauer oder ein Zeitfenster zwischen der maximalen Gesamtbearbeitungsdauer und der minimalen Gesamtbearbeitungsdauer definiert.

Bei dieser Ausführungsform kann z.B. entdeckt werden, wenn ein potentieller Angreifer die Übertragung unterbricht und/oder z.B. mittels einer Routine Teile des Bootlader-Binarys ersetzt, weil dadurch die Schritte d) bis f) zu lange dauern, d.h. die tolerierbare Gesamtbearbeitungsdauer überschreiten. Bei dieser Ausführungs form kann darüber hinaus entdeckt werden, wenn ein potentieller Angreifer nach (bzw.„sofort“ nach) einem Entdecken der Übertragung in Schritt d) eine Übertra gung vornimmt, wie sie in Schritt f) erwartet wird; denn diese Übertragung könnte schneller erfolgen als eine minimale Gesamtbearbeitungsdauer. Die Verwendung eines Zeitfensters kann diese Vorteile kombinieren.

In einigen Ausführungsformen umfasst die Menge der verschlüsselten

Bootlader-Routinen (in dem Bootlader-Binary) weiterhin eine Routine zu Erzeugung einer Pause einer vordefinierten Dauer. Diese Routine wird in Schritt e) zusätzlich zu den oben genannten Bootlader-Routinen auf dem Mikrocontroller ausgeführt. Diese Ausführungsformen können eine veränderte Gesamtbearbeitungsdauer aufweisen.

Diese Routine kann eine vordefinierte Anzahl an Wiederholungen eines

Kommandos definierter Länge umfassen. Die Dauer der Pause kann mittels eines Zufallsgenerators gewählt werden. Die Dauer der Pause kann zwischen einer vordefinierten minimalen und maximalen Länge liegen. Die Dauer der Pause ist nur dem Programmiergerät bekannt; daher kann durch bei dieser Ausführungsform die Sicherheit, die durch eine Überprüfung der Gesamtbearbeitungsdauer verbessert wird, weiter verbessert werden.

In einigen Ausführungsformen umfasst die Menge der verschlüsselten

Bootlader-Routinen (in dem Bootlader-Binary) weiterhin eine Ausleseschutzroutine. Diese Routine wird in Schritt e) zusätzlich zu den oben genannten

Bootlader-Routinen auf dem Mikrocontroller ausgeführt. Diese Ausführungsformen können eine veränderte Gesamtbearbeitungsdauer aufweisen. Diese Routine kann z.B. das Setzen eines Registers umfassen, das einen Aus leseschutz für bestimmte Bereiche des Speichers oder den gesamten Speicher des Mikrocontrollers bestimmt. Dies kann das Auslesen z.B. des Boot-Codes und/oder weiterer Speicherbereiche des Mikrocontrollers verhindern.

In einigen Ausführungsformen umfasst die Menge der Bootlader-Routinen weiterhin eine Routine zum Auslesen einer Seriennummer des Mikrocontrollers, und der Boot-Code umfasst weiterhin die Seriennummer, mit dem weiteren Schritt:

f1 ) Übertragen zusätzlich der Seriennummer von dem Mikrocontroller an das Programmiergerät. Diese Ausführungsformen können eine veränderte Gesamt bearbeitungsdauer aufweisen.

Dadurch kann z.B. gewährleistet werden, dass der Boot-Code nur auf diesem Mikrocontroller - oder ggf. auf einer Familie von Mikrocontrollern - ausgeführt wird. Die Seriennummer kann auch für weitere gezielte Modifikationen des Boot-Codes, die die z.B. für eine Familie von Mikrocontrollern nützlich und/oder erforderlich sind, genutzt werden.

In einer Ausführungsform umfasst das Bootlader-Binary weiterhin den ersten Public-Key. Weiterhin umfasst diese Ausführungsform den Schritt:

f2) Wenn der von dem Mikrocontroller gesendete erste Public-Key sich von dem, von dem Programmiergerät gesendeten, ersten Public-Key unterscheidet,

Abbrechen des Verfahrens.

Der Schritt f2) wird nach dem Schritt f) - und ggf. nach Schritt f1 ) - und vor den Schritten g) bzw. h) durchgeführt. Diese Ausführungsform kann eine veränderte Gesamtbearbeitungsdauer aufweisen.

Durch diese Überprüfung wird die Wahrscheinlichkeit einer Entdeckung einer Manipulation weiter erhöht.

Ein weiterer Aspekt betrifft ein Programmiergerät zur Übertragung eines

Boot-Codes, mit verbesserter Datensicherheit, zu einem Mikrocontroller, wobei das Programmiergerät dazu eingerichtet ist,

einen ersten Private-Key und ein Passwort zu erstellen;

ein Bootlader-Binary zur Ausführung auf dem Mikrocontroller zu generieren, wobei das Bootlader-Binary mindestens umfasst:

- einen Urlader, - das Passwort,

- den mittels des Passworts verschlüsselten ersten Public-Key,

- eine Menge von mittels des Passworts verschlüsselten Bootlader-Routinen zur Ausführung auf dem Mikrocontroller, wobei die Menge der verschlüsselten

Bootlader-Routinen umfasst:

eine Generierungsroutine zum Generieren eines zweiten Public-Keys und eines zweiten Private-Keys, und

eine Entschlüsselungsroutine zur Entschlüsselung des ersten Public-Keys; und - eine Entschlüsselungsroutine, zur Ausführung auf dem Mikrocontroller, zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen; eine tolerierbare Gesamtbearbeitungsdauer abzuschätzen;

das Bootlader-Binary von dem Programmiergerät an den Mikrocontroller zu übertragen;

von dem Mikrocontroller mindestens einen zweiten Public-Key zu empfangen; wenn die tatsächlichen Bearbeitungsdauern von dem Übertragen des

Bootlader-Binary bis zu dem Empfangen des zweiten Public-Keys außerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, abbrechen des Verfahrens; und wenn die tatsächlichen Bearbeitungsdauern von dem Übertragen des

Bootlader-Binary bis zu dem Empfangen des zweiten Public-Keys innerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, verschlüsseln des Boot-Codes mittels des zweiten Public-Keys und übertragen des verschlüsselten Boot-Codes an den Mikrocontroller.

Ein weiterer Aspekt betrifft einen Mikrocontroller zur Übertragung eines

Boot-Codes, mit verbesserter Datensicherheit, von einem Programmiergerät, wobei der Mikrocontroller dazu eingerichtet ist,

ein Bootlader-Binary von dem Programmiergerät zu empfangen, wobei das

Bootlader-Binary mindestens einen Urlader-Code, das Passwort, eine

Entschlüsselungsroutine zur Entschlüsselung von mittels des Passworts

verschlüsselten Bootlader-Routinen, und eine Menge von mittels des Passworts verschlüsselten Bootlader-Routinen umfasst;

den Urlader-Code, die Entschlüsselungsroutine, und die entschlüsselten

Bootlader-Routinen auszuführen;

mindestens den zweiten Public-Key an das Programmiergerät zu übertragen; und einen verschlüsselten Boot-Code von dem Programmiergerät zu empfangen.

Ein weiterer Aspekt betriff eine Verwendung eines Programmiergeräts wie oben und/oder nachfolgend beschrieben, eines Mikrocontrollers wie oben und/oder nachfolgend beschrieben und/oder eines Verfahrens wie oben und/oder nachfolgend beschrieben zur Übertragung eines Boot-Codes, mit verbesserter Datensicherheit, von dem Programmiergerät zu dem Mikrocontroller.

Ein weiterer Aspekt betriff ein Programmelement, welches, wenn es auf einem Programmiergerät ausgeführt wird, das Programmiergerät anleitet, das Verfahren wie oben und/oder nachfolgend beschrieben durchzuführen.

Ein weiterer Aspekt betriff ein computerlesbares Medium, auf dem ein

Programmelement wie oben beschrieben gespeichert ist.

Zur weiteren Verdeutlichung wird die Erfindung anhand von in den Figuren abgebildeten Ausführungsformen beschrieben. Diese Ausführungsformen sind nur als Beispiel, nicht aber als Einschränkung zu verstehen.

Fig. 1 zeigt schematisch ein Message Sequence Diagramm nach einer

Ausführungsform.

Fig. 1 zeigt ein Message-Sequence Diagramm (Message Sequence Chart, MSC) 100, das schematisch eine Ausführungsform eines Verfahrens zur Übertragung eines Boot-Codes, mit verbesserter Datensicherheit, von einem

Programmiergerät 10 zu einem Mikrocontroller 20 skizziert. Das

Programmiergerät 10 ist ein Computer, welcher mindestens dazu geeignet ist, Software, Firmware und/oder andere Dateien auf den Mikrocontroller zu

übertragen. Ferner ist das Programmiergerät 10 geeignet, Routinen auszuführen, die auf der Erzeugung einer Zufallszahl basieren. Der Mikrocontroller 20 ist ein Computer, der dazu eingerichtet oder geeignet ist, vordefinierte

Steuerungsaufgaben durchzuführen. Dazu benötigt der Mikrocontroller 20 eine Basis-Software oder Firmware, den sog. Boot-Code, um seine Funktion erfüllen zu können. Wenn sich auf dem Mikrocontroller 20 noch keine ablauffähige Software oder Firmware befindet, benötigt der Mikrocontroller 20 eine Basis-Software oder Firmware, den sog. Boot-Code.

In einem Schritt 101 erstellt das Programmiergerät 10 einen ersten Public-Key, einen ersten Private-Key und ein Passwort. In einem Schritt 102 generiert das Programmiergerät 10 ein Bootlader-Binary, das zur Ausführung auf dem

Mikrocontroller 20 geeignet ist. Das Bootlader-Binary umfasst mindestens einen Urlader zur Ausführung auf dem Mikrocontroller 20, das Passwort, den mittels des Passworts verschlüsselten ersten Public-Key, eine Menge von mittels des Passworts verschlüsselten Bootlader-Routinen, die zur Ausführung auf dem

Mikrocontroller 20 geeignet sind, und eine Entschlüsselungsroutine, die zur Ausführung auf dem Mikrocontroller geeignet ist, zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen. Dabei umfasst die Menge der verschlüsselten Bootlader-Routinen mindestens eine Generierungsroutine zum Generieren eines zweiten Public-Keys und eines zweiten Private-Keys, und eine Entschlüsselungsroutine zur Entschlüsselung des ersten Public-Keys. Darüber hinaus kann die Menge der verschlüsselten Bootlader-Routinen, optional, beispielsweise noch eine Routine zur Erzeugung einer Pause einer vordefinierten Dauer, eine Ausleseschutzroutine, eine Routine zum Auslesen einer Seriennummer des Mikrocontrollers und/oder weitere Routinen umfassen, die zur Ausführung auf dem Mikrocontroller 20 geeignet sind. Die Pause wird vorteilhafterweise durch das Ausführen von Funktionen erzeugt, die ein für den jeweiligen Mikrocontroller charakteristisches Laufzeitverhalten haben. So ist die Pausendauer als

identifizierbares Merkmal des Mikrocontrollers zu verstehen.

In einem Schritt 103 schätzt das Programmiergerät 10 eine tolerierbare Gesamt bearbeitungsdauer 1 10, welche aus den Bearbeitungsdauern der folgenden Schritte 104 bis 106 (markiert durch den gestrichelten Kasten 1 10) besteht. Das Abschätzen kann dabei z.B. auf Statistiken von Zeitdauern einer zuvor

durchgeführten Messreihe zugreifen. In einem Schritt 104 wird das

Bootlader-Binary von dem Programmiergerät 10 an den Mikrocontroller 20 übertragen. Das Übertragen kann z.B. von dem Programmiergerät 10 initiiert und/oder durchgeführt werden.

In einem Schritt 105 führt der Mikrocontroller 20 den Urlader-Code, die Entschlüs selungsroutine zur Entschlüsselung der mittels des Passworts verschlüsselten Bootlader-Routinen und mindestens einen Teil der Menge der mittels des Pass worts verschlüsselten Bootlader-Routinen aus. In einem Schritt 106 wird min destens der zweiten Public-Key von dem Mikrocontroller 20 an das Programmier gerät 10 übertragen. Das Übertragen kann z.B. von dem Mikrocontroller 20 initiiert und/oder durchgeführt werden.

In einem Schritt 107 überprüft das Programmiergerät 10 die tatsächlichen Bearbei tungsdauern der Schritte 104 bis 106. Wenn die tatsächlichen Bearbeitungsdauern der Schritte 104 bis 106 außerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, wird das Verfahren abgebrochen (in dem MSC nicht dargestellt). Abhängig von den Bootlader-Routinen und/oder weiteren Plausibilitätschecks und/oder Überprüfungen kann das Verfahren auch an weiteren Stellen abgebrochen werden. Wenn die tatsächlichen Bearbeitungsdauern der Schritte 104 bis 106 innerhalb der tolerierbaren Gesamtbearbeitungsdauer liegen, wird der Boot-Codes mittels des zweiten Public-Keys verschlüsselt und, in einem Schritt 108, der verschlüsselte Boot-Code von dem Programmiergerät 10 an den Mikrocontroller 20 übertragen. In einem Schritt 109 kann dann, auf dem Mikrocontroller 20, der Boot-Code und/oder weitere Programmstücke ausgeführt werden.

Liste der Bezuqszeichen

10 Programmiergerät

20 Mikrocontroller

100 Message-Sequence Diagramm (MSC)

101 109 Schritte

1 10 tolerierbare Gesamtbearbeitungsdauer