-
Die
Erfindung betrifft ein Verfahren zur Änderung von Verschlüsselungsalgorithmen,
die Software und/oder Daten in einem Gerät, insbesondere Steuergerät, mittels
einer erzeugten Signatur schützen. Weiterhin
betrifft die Erfindung ein Computerprogramm und ein Computerprogrammprodukt,
jeweils mit Programmcode-Mitteln, um bei deren Ausführung auf
einem Computer oder einer Rechnereinheit einzelne Schritte des erfindungsgemäßen Verfahrens auszuführen.
-
Stand
der Technik
-
Es
ist bekannt, den Speicherinhalt von wiederbeschreibbaren Speichern
dadurch zu schützen, dass
an bestimmten Stellen im Speicher Checksummen über einen gewissen Speicherbereich
abgelegt sind. Die Check- oder Prüfsummen sind dem betreffenden
Speicherbereich eindeutig zugeordnet, so dass eine geringfügige Änderung
des Speicherinhalts bereits zu einer anderen Prüfsumme führt. Ein derartiger Schutz
dient dem Erkennen von Übertragungsfehlern,
aber auch der Abwehr von Manipulationsversuchen (Tuning), die mittlerweile
im Vordergrund stehen. Geschützt
werden können Speicherbereiche,
die allgemein Software und/oder Daten enthalten, die vor einem Zugriff
oder einer Veränderung
durch Unberechtigte geschützt
werden sollen. Aus der
EP
1128242 A2 ist bereits ein Verfahren zur Sicherstellung
der Datenintegrität
mittels einer digitalen Signatur bekannt. Aus der JP 2001-1 27747
A und der entsprechenden englischen Zusammenfassung sind bereits
Verfahren zur Änderung
eines Verschlüsselungsalgorithmus
bekannt.
-
Aus
der
DE 197 23 332
A1 sind ein Verfahren zum Schutz eines Mikrorechners sowie
ein solcher geschützter
Mikrorechner bekannt, wobei in einem Nur-Lesespeicher ein Überprüfungsprogramm
enthalten ist, bei dessen Ausführung
mittels eines Schlüssels
aus zumindestens einem Teil des in einem wiederbeschreibbaren, zu
schützenden
Speichers enthaltenen Speicherinhalts ein Codewort ermittelt und
dieses Codewort mit einem im wiederbeschreibbaren Speicher abgelegten
Vergleichscodewort verglichen wird. Ein einfaches Beispiel für ein derartiges
Codewort besteht in einer Prüfsumme.
Es sollten jedoch aufwendigere mathematische Verschlüsselungsverfahren
verwendet werden, um die Sicherheit zu erhöhen. Eine unberechtigte Änderung des
Speicherinhalts des genannten wiederbeschreibbaren Speichers scheitert
auch bei Kenntnis des Speicherplatzes des Vergleichscodeworts daran, dass
der Verschlüsselungsalgorithmus
nicht bekannt ist, so dass es nicht möglich ist, im wiederbeschreibbaren
Speicher ein korrektes Vergleichscodewort abzulegen. Ein berechtigter
Benutzer hingegen, der den Inhalt des wiederbeschreibbaren Speichers ändern will,
kann mit dem nur ihm bekannten Verschlüsselungsalgorithmus das entsprechende
Vergleichcodewort ermitteln und dieses dann im wiederbeschreibbaren
Speicher ablegen. Beim anschließenden
Betrieb des Gerätes
wird das Überprüfungsprogramm
den weiteren Betrieb des Mikrorechners freigeben.
-
Das
genannte Verfahren lässt
sich insbesondere in der Entwicklungsphase von Steuergeräteprogrammen,
bei der noch häufig
Modifikationen des im wiederbeschreibbaren Speicher gespeicherten
Programms erforderlich sind, einsetzen.
-
Daneben
besteht jedoch das Bedürfnis,
die kryptographischen Algorithmen und Schlüssel bei Bedarf in einem abgesicherten
Verfahren austauschen oder ändern
zu können,
wenn sich die Notwendigkeit dazu ergibt, beispielsweise wenn bisher eingesetzte
Verschlüsselungsalgorithmen
bekannt (geknackt) worden sind oder als nicht mehr sicher eingestuft
werden. Ein solcher Austausch kann im Zusammenhang mit der Neuprogrammierung
der Gerätesoftware
stattfinden. Häufiger
Anwendungsfall ist die Neuprogrammierung von Steuergerätesoftware
im Werkstattservice des Kundenfahrzeugs. Mit abgesichertem Austausch
ist gemeint, dass es im Rahmen einer Neuprogrammierung nicht möglich sein darf,
manipulierte Software ohne Prüfsummen-
oder Signaturschutz zu programmieren.
-
Bisher
ist bei einem laufenden Projekt kein nachträglicher Schlüsseltausch
im Kundenservice möglich.
In einem solchen Fall müssen
die betroffenen (Steuer-)Geräte
zum Hersteller zurückgerufen werden.
Nur mit der Programmierumgebung des Herstellers ist es möglich, die
an die Programmierumgebung des Kunden gekoppelten Kryptoschlüssel und -algorithmen
auszutauschen.
-
Vorliegende
Erfindung soll daher den abgesicherten Austausch von Kryptoalgorithmen
(und -schlüssel),
evtl. zusammen mit Software und Daten auf der Kundenseite ermöglichen.
-
Vorteile der
Erfindung
-
Mit
dem erfindungsgemäßen Verfahren
kann in zwei Stufen der oben beschriebene abgesicherte Austausch
von Verschlüsselungsalgorithmen
(zzgl. der Schlüssel)
erfolgen, wobei in einem ersten Schritt Software und/oder Daten,
die den neuen Verschlüsselungsalgorithmus
enthalten, zusammen mit der zugehörigen nach dem bisherigen Verschlüsselungsalgorithmus
erzeugten Signatur in das Gerät übertragen
werden und anschließend
in einem zweiten Schritt diese Software bzw. Daten zusammen mit
der zugehörigen
nach dem neuen Verschlüsselungsalgorithmus
erzeugten Signatur oder aber nur letztere Signatur in das Gerät übertragen
werden.
-
Die übertragene
Software bzw. übertragenen Daten
können
ihrerseits, aber müssen
nicht notwendigerweise neu (also unterschiedlich zum bisher Einprogrammierten)
sein. Das Verfahren eignet sich folglich sowohl zum Austausch von
Verschlüsselungsverfahren
und Schlüssel,
wenn die Software bzw. die Daten unverändert bleiben sollen, wie auch zum
Austausch von Verschlüsselungsverfahren
und Schlüssel,
wenn die Software bzw. die Daten gleichzeitig auszutauschen sind.
-
Die
Erfindung zeichnet sich dadurch aus, dass in einem ersten Schritt
die Software/Daten mit der zugehörigen,
jedoch mit dem bisherigen Verschlüsselungsverfahren erzeugten
Signatur in das Gerät
einprogrammiert werden, wobei die im Gerät noch aktive und vertrauenswürdige bisherige „alte" Programmierumgebung
diese neu ins Gerät
programmierte Software/Daten prüfen
kann, wobei diese Prüfung
aufgrund der vorhandenen, nach dem „alten" Verfahren erzeugten Signatur positiv
ausfällt. Somit
werden im ersten Schritt noch nicht aktive Software/Daten, die neue
Verschlüsselungsalgorithmen (und
Schlüssel)
enthalten, von der alten vertrauenswürdige Programmierumgebung geprüft. Dies
ist möglich,
weil die Prüfsumme
(Signatur) der „neuen" Software/Daten noch
auf das „alte" Verschlüsselungsverfahren
abgestimmt ist.
-
Im
zweiten Schritt werden dann diese Software/Daten noch einmal, diesmal
allerdings mit einer Prüfsumme
(Signatur) nach dem neuen Verschlüsselungsverfahren versehen,
in das betreffende Gerät einprogrammiert.
Theoretisch ausreichend, meist jedoch speicherarchitektonisch nicht
sinnvoll, ist die Einprogrammierung lediglich dieser neuen Signatur.
-
Nach
diesem Schritt kann nunmehr die „neue", d.h. den neuen Verschlüsselungsalgorithmus (und
Schlüssel)
enthaltende Programmierumgebung die übertragene(n) Software/Daten überprüfen, wobei
auch hier die Prüfung
positiv ausfällt,
da die nun einprogrammierte Signatur zum neuen Verschlüsselungsalgorithmus
(und Schlüssel)
korrespondiert.
-
Der
erste Schritt allein wäre
nicht ausreichend, denn nach Aktivierung der „neuen" Software/Daten würde eine Folgeüberprüfung fehlschlagen, weil
die noch alte Signatur oder Prüfsumme
nicht zur neuen Umgebung passt.
-
Vorstehende
Beschreibung ist selbstverständlich
nicht nur für
neu einzuprogrammierende Software, sondern auch allgemein für Daten
jedweder Form gültig.
Weiterhin sind im Sinne obiger Beschreibung die Begriffe Signatur
oder Prüfsumme austauschbar.
Da lineare Prüfsummen
(XOR- oder AND-Verknüpfungen)
einen vergleichsweise geringen Schutz bieten, werden heute im allgemeinen über Polynomverfahren
berechnete Prüfsummen eingesetzt.
Noch größeren Schutz
bieten mit Hilfe kryptographischer Verfahren (RSA-Verfahren, HASH-Algorithmen)
auf der Basis symmetrischer oder asymmetrischer Schlüssel erstellte
Signaturen. Bei der symmetrischen Verschlüsselung wird ein einziger geheimer Schlüssel zur
Codierung und Decodierung verwendet, während bei der asymmetrischen Verschlüsselung
hierfür
zwei Schlüssel,
und zwar ein öffentlicher
und ein privater/geheimer Schlüssel,
verwendet werden. Mit einem solchen Verfahren kann beispielsweise
der Sender eine Nachricht mit dem öffentlichen Schlüssel des
Empfängers
codieren und die auf diese Weise verschlüsselte Nachricht mittels des
privaten Schlüssels
(und nur diesen) des Empfängers
wieder entschlüsseln.
Weiterhin kann eine Nachricht (oder beliebige Daten) mittels des
privaten oder geheimen Schlüssels
signiert werden und die Echtheit der Nachricht mittels des öffentlichen Schlüssels des
Senders überprüft werden.
-
Aufgrund
der hohen Sicherheit ist ein derartiges asymmetrisches Verschlüsselungsverfahren
für die
Erfindung besonders vorteilhaft.
-
Zeichnungen
-
Die
Erfindung wird in einem Ausführungsbeispiel
anhand der beigefügten
Figuren näher
erläutert.
-
Die 1 zeigt
Sektoren eines Steuergerätespeichers
sowie schematisch den Vorgang des zweistufigen Einprogrammierens
gemäß Erfindung, wobei
jede Stufe in zwei Unterschritte unterteilt ist.
-
2 zeigt
schematisch vereinfacht ein System zur Ausführung des erfindungsgemäßen Verfahrens.
-
Beschreibung
des Ausführungsbeispiels
-
In
dem Ausführungsbeispiel
wird der erfindungsgemäße abgesicherte
Austausch eines Steuergeräteprogramms
einschließlich
des Verschlüsselungsalgorithmus
und der zugehörigen
Schlüssel
bei einem Steuergerät
beschrieben, wie es beispielsweise in Kraftfahrzeugen eingesetzt
wird.
-
In
der 1 dargestellt ist schematisch ein aus vier Sektoren
(horizontal angeordnete Kasten) bestehender Speicherbereich des
Steuergerätes, wobei
in den einzelnen Sektoren verschiedene Datentypen untergebracht
sind:
Steuergerätedaten 1 (im
obersten Sektor) und das Steuergeräteprogramm 2 (dargestellt
im darauffolgenden Sektor) sowie die Programmierumgebung 3. Im
Steuergerätedaten-Sektor
werden voreingestellte Gerätedaten,
Parameter des Fahrzeugs sowie Messwerte abgespeichert, im Steuergeräteprogramm-Sektor
ist das zur Steuerung des Fahrzeugs notwendige Programm untergebracht.
Schließlich enthält eine
Programmierumgebung 3 die zur Prüfung auf Echtheit notwendigen
Algorithmen 4, Schlüssel 5 und
erzeugte Signaturen 6. In dem Sektor, der in der Figur
als unterster Sektor eingezeichnet ist, kann von einer Bedienperson
von außen
eine neue Programmierumgebung in das Steuergerät einprogrammiert werden. Die
einzuprogrammierenden Daten bzw. Programme sind mittels eines Signiertools
mit einem geheimen Schlüssel 7 signiert.
-
Im
dargestellten Beispiel soll ein neues Steuergeräteprogramm mit der zugehörigen neuen
Programmierumgebung in das Steuergerät einprogrammiert werden, ohne
das Steuergerät
zum Hersteller zurückzuleiten.
Der Austausch soll vielmehr in der Werkstatt (bei einem Kundenservice)
erfolgen. Neue und alte Bestandteile sind in den Sektoren durch
die Zusätze
b bzw. a zu den Bezugszeichen gekennzeichnet.
-
In
der Ausgangssituation ("0") befinden sich im
obersten Sektor Steuergerätedaten 1a,
im nächsten
Sektor das alte Steuergeräteprogramm 2a sowie im
nächsten
Sektor anschließend
die alte Programmierumgebung 3a. Diese alte Programmierumgebung
enthält
den alten Verschlüsselungsalgorithmus 4a,
den alten öffentlichen
Schlüssel 5a sowie
die alte Signatur 6a. Die Programmierumgebung ist ein spezieller
Bestandteil des Steuergeräteprogramms
und diesem bei der Programmierung zugeordnet.
-
In
allen unten erläuterten
Fällen
steuert die mit dem Blitzsymbol gekennzeichnete Programmierumgebung
die Programmierung der neuen Programmierumgebung (jeweils in den
Schritten A) sowie das Prüfen
und Umkopieren nach erfolgreicher Prüfung (in den Schritten B).
-
Der
erste Schritt des erfindungsgemäßen Verfahrens
ist in zwei Schritte, bezeichnet mit 1A und 1B,
unterteilt, der zweite Schritt des erfindungsgemäßen Verfahrens ebenso in zwei
Schritte 2A und 2B. Das erfindungsgemäße Verfahren
wird nun im einzelnen dargelegt:
Über ein Programmiertool (dargestellt
durch den breiten Pfeil) wird zunächst das neue Steuergeräteprogramm 2b sowie
die zugehörige
neue, aber noch nicht aktive Programmierumgebung 3b' in das Steuergerät einprogrammiert.
Falls notwendig, können auch
neue Steuergerätedaten 1b einprogrammiert werden.
Anschließend
findet die Überprüfung auf Echtheit
statt. Geprüft
wird das neue Steuergeräteprogramm 2b und
seine neue Programmierumgebung 3b', wobei diese Prüfung durch
die alte Programmierumgebung 3a mit dem alten Verschlüsselungsalgorithmus 4a und
dem alten öffentlichen Schlüssel 5a vorgenommen
wird, woraus sich eine Signatur 6a nach alter Art ergibt,
wie sie zusammen mit der neuen Programmierumgebung 3b' in Schritt 1A einprogrammiert
wurde.
-
Damit
diese Prüfung
positiv ausfällt,
muss die über
den abzusichernden Gesamtumfang zu bildende Prüfsumme (Signatur) noch mit
Hilfe des alten Schlüssels 7a erstellt
werden. Somit wird im Schritt 1A noch nicht aktive Software,
die bereits neue Algorithmen 4b und Schlüssel 5b enthält, von
alter vertrauenswürdiger
Software geprüft.
-
Fällt diese
Prüfung
positiv aus, wird im nächsten
Schritt 1B die neue, aber noch nicht aktive Programmierumgebung 3b' in denjenigen
Sektor umkopiert, der vorher die alte Programmierumgebung 3a enthielt.
Dies ist ein an die Prüfung
gekoppelter Automatismus, der nicht von außen beeinflusst werden kann.
-
Ein
weiterer Schritt ist notwendig, um das erfindungsgemäße Verfahren
abzuschließen,
da andernfalls eine erneute Überprüfung der
im Schritt 1B vorliegenden Konfiguration fehlschlagen würde, da die
Signatur 6a alter Art noch nicht zur neuen Programmierumgebung 3b' (mit dem neuen
Algorithmus 4b und dem neuen öffentlichen Schlüssel 5b)
passt.
-
Der
zweite Schritt des erfindungsgemäßen Verfahrens
wird nunmehr dargelegt: Es werden nochmals die gleichen Programme
(und Daten) wie in Schritt 1A in das Steuergerät einprogrammiert, nunmehr
jedoch mit der neuen Signatur 6b.
-
Je
nach Speicherstruktur kann es auch ausreichend sein, lediglich die
neue Signatur 6b einzuprogrammieren, bei den zumeist eingesetzten Flash-Bausteinen
ist eine vollständige Überschreibung
der betreffenden Sektoren jedoch einfacher.
-
Die
neue Signatur 6b ist mit dem neuen geheimen Schlüssel 7b mittels
eines Signiertools über den
abzusichernden Gesamtumfang gebildet.
-
Anschließend erfolgt
die Authentizitätsprüfung durch
die neue Programmierumgebung 3b', wobei im dargestellten Fall die
neue Programmierumgebung 3b und das neue Steuergerätprogramm 2b mittels
des neuen Verschlüsselungsalgorithmus 4b und des
neuen öffentlichen
Schlüssels 5b der
Programmierumgebung 3b' überprüft werden.
Diese Überprüfung führt folgerichtig
zur neuen Signatur 6b, wie sie im untersten Sektor einprogrammiert
ist.
-
Nach
positiver Prüfung
erfolgt ein Umkopieren der neuen Programmierumgebung 3b in
den Sektor, der vorher die neue Programmierumgebung 3b' enthielt, die
bis auf die Signatur derjenigen von 3b entspricht (mit
der Signatur 6a alter Art). Nach Abschluss des Schrittes 2B ist
der erfindungsgemäße abgesicherte
Austausch beendet.
-
Die
beiden erfindungsgemäßen Schritte
des Einprogrammierens von Daten und/oder Programmen in das Steuergerät werden
vorteilhafter Weise mittels Computerprogrammen durchgeführt, die
auf einer geeigneten Rechnereinheit (Programmiertool) ausgeführt werden.
Die Computerprogramme können
auf geeigneten Datenträgern,
wie EEPROMs, Flash-Memories,
aber auch CD-ROMs, Disketten oder Festplattenlaufwerken gespeichert
sein. Auch eine Übertragung
der Computerprogramme über Kommunikationsmedien,
wie beispielsweise das Internet, ist möglich. So können beispielsweise die beiden
Schritte des erfindungsgemäßen Verfahrens durch
Aufspielen (jeweils) eines Computerprogramms auf das Steuergerät erledigt
werden, wobei das oder die entsprechenden Computerprogramme beispielsweise
auf einer Diskette oder auf einer CD-ROM gespeichert sein können, die
ihrerseits vom Hersteller beispielsweise an die den Kundenservice ausführende Werkstatt
geliefert werden. Eine andere Möglichkeit
besteht im Herunterladen dieser Programme von einer entsprechend
geschützten
Website des Herstellers im Internet.
-
2 zeigt
schematisch eine Vorrichtung 10 zum Umprogrammieren eines
Gerätes
gemäß geschilderter
Erfindung, wobei in der dargestellten Ausführungsform ein Steuergerät 11 über die
Datenübertragungsleitung 12 mit
der Vorrichtung 10 verbunden ist. Das Steuergerät 11 kann
beispielsweise zur Motorsteuerung in einem Kraftfahrzeug eingebaut
sein. Die Vorrichtung 10 kann ein geeignetes PC-gesteuertes Tool
sein.
-
Die
Umprogrammierung besteht aus einer Aneinanderreihung von sogenannten
Auftragstelegrammen. Jeder Einzelauftrag des Programmiertools 10 wird
vom Steuergerät 11 nach
Ausführung
positiv oder negativ quittiert, wodurch das Tool 10 zum
Weitermachen, Wiederholen oder Abbrechen des Vorganges veranlasst
wird. Die Einzelaufträge
können beispielsweise
in folgende Gruppen eingeteilt werden:
- 1) Identifikation
des Steuergeräts 11 und
der dort zur Zeit aktuell einprogrammierten Software (Programm/Dateien);
- 2) Freischaltung gesperrter Funktionen (Löschen und Programmieren unterliegen
einem besonderen Schutz) über
ein Seed/Key-Verfahren bzw. ein kryptographisches Verfahren. Der
Anwender weist hier seine Berechtigung nach.
- 3) Wechsel vom "Fahrprogrammmodus" bei einem Kraftfahrzeugsteuergerät in den "Programmiermodus";
- 4) Löschen
von Programm- und oder Datenbereich;
- 5) Neu-Programmierung von Programm- und oder Datenbereich;
- 6) Prüfen
der neuprogrammierten Bereiche.
-
Der
gesamte beispielhaft geschilderte Vorgang kann sowohl beim Fahrzeughersteller
als auch in dessen Servicewerkstätten
durchgeführt
werden. Denkbar ist auch eine Umprogrammierung über eine Datenverbindung (wie
das Internet) mit einer entsprechenden Einrichtung des Fahrzeugherstellers (beispielsweise
in Form einer Website).