DE102012109615A1 - Verwendung eines Manifest zur Präsenzaufzeichnung von gültiger Software und Kalibrierung - Google Patents

Verwendung eines Manifest zur Präsenzaufzeichnung von gültiger Software und Kalibrierung Download PDF

Info

Publication number
DE102012109615A1
DE102012109615A1 DE102012109615A DE102012109615A DE102012109615A1 DE 102012109615 A1 DE102012109615 A1 DE 102012109615A1 DE 102012109615 A DE102012109615 A DE 102012109615A DE 102012109615 A DE102012109615 A DE 102012109615A DE 102012109615 A1 DE102012109615 A1 DE 102012109615A1
Authority
DE
Germany
Prior art keywords
calibration
software
file
memory
files
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.)
Granted
Application number
DE102012109615A
Other languages
English (en)
Other versions
DE102012109615B4 (de
Inventor
Kevin M. Baltes
James T. Kurnik
Thomas M. Forest
Ansaf I. Alrabady
Ronald J. Gaynier
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.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
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 GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of DE102012109615A1 publication Critical patent/DE102012109615A1/de
Application granted granted Critical
Publication of DE102012109615B4 publication Critical patent/DE102012109615B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0428Safety, monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/24Pc safety
    • G05B2219/24034Model checker, to verify and debug control software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Automation & Control Theory (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein System und Verfahren zum Verifizieren, dass Betriebssoftware und Kalibrier-Files vorhanden und gültig sind, nachdem ein Bootloader die Files in den Speicher einer ECU eines Fahrzeugs flashprogrammiert hat, bevor erlaubt wird, dass die Betriebssoftware ausgeführt wird. Der ECU-Speicher definiert ein Speichersegment für die Betriebssoftware und die Kalibrier-Files. Ein Softwaremanifest wird in einen Speicherplatz vor dem Betriebssoftwaresegment in dem Speicher bereitgestellt. Analog dazu wird ein Kalibrier-Manifest in einem Speicherplatz vor dem Kalibrier-Segment in dem ECU-Speicher bereitgestellt. Nachdem die Software in den ECU-Speicher flashprogrammiert wurde, wird ein Software-Flag in dem Softwaremanifest-Speicherplatz gesetzt und jedes Mal, wenn ein Kalibrier-File flashprogrammiert wird, wird ein Kalibrier-Flag für das jeweilige Kalibrier-File in dem Kalibriermanifest gesetzt.

Description

  • QUERVERWEIS AUF ZUGEHÖRIGE ANMELDUNGEN
  • Diese Anmeldung beansprucht das Prioritätsdatum der U.S. Provisional Patent Application Serial No. 61/552,968 mit dem Titel: ”Verwendung eines Manifest zur Präsenzaufzeichnung von gültiger Software und Kalibrierung”, angemeldet am 28. Oktober 2011.
  • HINTERGRUND DER ERFINDUNG
  • 1. Gebiet der Erfindung
  • Diese Erfindung bezieht sich allgemein auf ein System und Verfahren zum Bestimmen, dass eine Betriebssoftware und/oder Kalibrier-Files vorhanden und gültig sind, nachdem ein Bootloader die Files in den Speicher eines Steuergerätes Flashprogrammiert hat, bevor es erlaubt wird, dass die Betriebssoftware in dem Steuergerät ausgeführt wird, und insbesondere auf ein System und ein Verfahren zum Bestimmen, dass eine Betriebssoftware und/oder Kalibrier-Files vorhanden und gültig sind, nachdem ein Bootloader die Files in den Speicher eines elektronischen Steuergeräts (ECU) eines Fahrzeugs Flashprogrammiert hat, bevor es erlaubt wird, die Betriebssoftware in der ECU auszuführen, wobei das Verfahren das Erzeugen eines Programmier-Manifests am Beginn eines Speichersegments sowohl für die Betriebssoftware als auch für die Kalibrier-Files umfasst, das identifiziert, dass all die programmierbaren Teile in den Software- und Kalibrier-Speichersegmenten gültig sind.
  • 2. Diskussion des Standes der Technik
  • Die meisten modernen Fahrzeuge beinhalten elektronische Steuereinheiten (ECUS), oder Steuergeräte, die den Betrieb der Fahrzeugsysteme, beispielsweise des Antriebsstrang, des Klimasteuersystems, des Infotainment-Systems, der Body-Systeme, der Chassis-Systeme und dergleichen steuern. Diese Steuergeräte benötigen eine besondere Software, um die Steuerfunktionen durchzuführen. Mit der zunehmenden Zahl und Komplexität dieser Steuergeräte und der wachsenden Furcht, die von Entwicklern von Schadsoftware ausgeht, ist es wichtiger denn je, die Herkunftsquelle und den Inhalt von binären Files, die in Automobilsteuergeräte geladen werden, zu authentifizieren. Die Konsequenzen vom Gebrauch von Software, die nicht einwandfrei validiert wurde oder die – schlimmer noch – schadhaft entworfen wurde, in einem Fahrzeugsteuergerät, beinhaltet das unbeabsichtigte Verhalten des Fahrzeugs oder seiner Systeme, den Verlust von Antidiebstahl-Eigenschaften auf dem Fahrzeug, das potentielle Herumpfuschen an Komponenten wie beispielsweise dem Kilometerzähler und der Verlust von anderen Fahrzeugmerkmalen und Funktionen.
  • Eine bekannte digitale Codiertechnik wird als asymmetrische Schlüsselkryptographie bezeichnet, die digitale Signaturen zum Authentifizieren von Files, die in Steuergeräte programmiert sind, verwendet. Wie von Fachleuten gut verstanden ist, verwendet die asymmetrische Schlüsselkryptographie ein Paar von mathematisch miteinander in Beziehung stehenden Schlüsseln, die als öffentlicher Schlüssel und als privater Schlüssel bekannt sind, um eine Botschaft zu verschlüsseln und zu entschlüsseln. Um eine digitale Signatur zu generieren, verwendet ein Signierer seinen privaten Schlüssel, der nur ihm selbst bekannt ist, um eine Botschaft zu verschlüsseln. Die digitale Signatur kann dann von einer anderen Partei später unter Verwendung des öffentlichen Schlüssels, der mit dem privaten Schlüssel des Signierers gepaart ist, entschlüsselt werden.
  • Flashing ist ein gut bekanntes Verfahren zum Hochladen von Software, Kalibrier-Files und anderen Anwendungen in den Speicher einer ECU eines Fahrzeugs oder eines anderen programmierbaren Gerätes. Ein Bootloader ist ein embedded Softwareprogramm, das auf die ECU geladen ist, das ein Interface zwischen der ECU und einem Programmiergerät bereitstellt, welches die Software flashprogrammiert. Der Bootloader Flashprogrammiert die Betriebssoftware und Kalibrier-Files in den ECU-Speicher, wobei die Betriebssoftware die Software bereitstellt, die bewirkt, dass verschiedene Fahrzeugfunktionen in Verbindung miteinander arbeiten und die Kalibrier-Files die verschiedenen Fahrzeugkonfigurationen und Einstellparameter, beispielsweise binäre Schalter, Schwellenwerte etc., für die jeweiligen Fahrzeugsysteme darstellen. Der Bootloader verwendet typischerweise asymmetrische Schlüsselkryptographie und speichert einen öffentlichen Schlüssel, der verwendet werden muss, um die digitale Signatur zu dekodieren, die von dem Programmiergerät übermittelt ist, bevor der ECU gestattet wird, die Software oder die Kalibrierung auszuführen.
  • Nach dem Hochfahren und/oder Zurücksetzen der ECU kann der Bootloader durch Überprüfen des Vorhandenseins spezifischer digitaler Muster, die als ”Vorhandenseins-Muster” innerhalb von Software- und/oder Kalibrier-File-Speicherblöcken bekannt sind, bestimmen, dass die Betriebssoftware und/oder Kalibrier-Files vorhanden und gültig sind. Beispielsweise muss der Bootloader ”wissen”, wo die ”Vorhandenseins-Muster” angeordnet sind, auch wenn die Muster in feste Speicherinkremente bewegt werden können. Darüber hinaus kann das Re-Partitionieren der Software und der Kalibrierung den Bootloader inkompatibel zu der Software und den Kalibrier-Files, die in dem Speicher abgespeichert sind, machen. Da die Vorhandenseins-Muster in der Software und den Kalibrier-Files beinhaltet sind, existieren die Muster bereits, bevor die Integritätsprüfung ausgeführt wird. Demzufolge besteht die Möglichkeit zwischen dem Zeitpunkt, an dem die Vorhandenseins-Muster geschrieben werden, und dem Zeitpunkt, an dem die Vorhandenseins-Prüfung ausgeführt wird, dass ein Hacker eine schädliche Software und/oder schädliche Kalibrierung in die ECUS schreibt und den Programmierbetrieb beispielsweise durch Entfernen der Batterie unterbricht. Dies würde dazu führen, dass die schädliche Software und/oder Kalibrierung ausgeführt werden würden.
  • Ein bekanntes globales Bootloader-Spezifikationsprotokoll erlaubt es dem Bootloader, die Vorhandenseins-Muster zu schreiben, nachdem die Integritätsprüfung ausgeführt wurde, nachdem die Flash-Programmierung vollständig ist. Allerdings besteht immer noch das Problem, dass nicht bekannt ist, welche Files in den anderen vorhergehenden Software- oder Kalibrier-Files sind, da das Vorhandenseins-Muster in dem letzten Software- oder Kalibrier-File ist. Beispielsweise könnte eine Person das Kalibrier-Speichersegment löschen, schädliche Files in alle Speichersegmente flashprogrammieren und ein gültiges Vorhandenseins-Muster schreiben. Mit anderen Worten folgen die bekannten Verfahren zum Flashprogrammieren von Software und Kalibrier-Files während des Flash-Prozesses einem Verfahren, bei dem mehrere Files flashprogrammiert werden würden, und der Bootloader würde danach die Integrität der flashprogrammierten Files verifizieren, indem er sicherstellt, dass das letzte File korrekt flashprogrammiert wurde. Dies stellt ein Sicherheitsproblem dar, da ein Hacker das letzte File ordungsgemäss flashprogrammieren könnte, welches der Bootloader verwendet, um zu verifizieren, dass alle Files vor dem letzten File ordungsgemäss flashprogrammiert wurden, wobei der Hacker unordungsgemässe Software oder Kalibrier-Files vor dem letzten File schadhaft flashprogrammiert haben könnte. In diesem Szenario, bei dem der Hacker das gültige letzte Software- oder Kalibrier-File bereitstellt, aber vorher schadhafte Software oder Kalibrier-Files geschrieben hat, kann dazu führen, dass der Bootloader mit dem Bootloading aufhört, um die die Betriebssoftware auszuführen, da der Bootloader annehmen wird, dass alle Files ordungsgemäss flashprogrammiert wurden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Im Einklang mit den Lehren der vorliegenden Erfindung werden ein System und ein Verfahren zum Verifizieren, dass eine Betriebssoftware und/oder Kalibrier-Files vorhanden und gültig sind, nachdem ein Bootloader die Files in den Speicher einer Fahrzeug-ECU flashprogrammiert hat, bevor gestattet wird, dass die Betriebssoftware ausgeführt wird, offenbart. Der ECU-Speicher definiert für sowohl die Betriebssoftware als auch die Kalibrier-Files ein Speichersegment. Ein Software-Manifest wird in einem Speicherplatz vor dem Betriebssoftwaresegment in dem ECU-Speicher bereitgestellt. Analog dazu wird ein Kalibrier-Manifest in einem Speicherplatz vor dem Kalibrier-Segment in dem ECU-Speicher bereitgestellt. Nachdem die Software in den ECU-Speicher flashprogrammiert wurde, wird ein Software-Flag in dem Softwaremanifest-Speicherplatz gesetzt, und zu jedem Zeitpunkt, bei dem ein Kalibrier-File flashprogrammiert wird, wird ein Kalibrier-Flag für das jeweilige Kalibrier-File in dem Kalibriermanifest gesetzt. Der Bootloader überprüft, ob alle Flags nach der Flashprogrammierung ordungsgemäss gesetzt wurden, um zu bestimmen, dass die Betriebssoftware und die Kalibrier-Files ordungsgemäss flashprogrammiert wurden, bevor der Bootloader es gestattet, dass die Betriebssoftware ausgeführt wird.
  • Weitere Merkmale der vorliegenden Erfindung werden aus der folgenden Beschreibung und den beigefügten Patentansprüchen in Verbindung mit den beigefügten Figuren deutlich.
  • KURZE BESCHREIBUNG DER FIGUREN
  • 1 ist ein Blockdiagramm eines Systems, das den Betrieb eines Verifizierprozesses für eine digitale Signatur zeigt;
  • 2 ist ein Flussdiagramm, dass ein Verfahren zum Identifizieren, ob eine Betriebssoftware und Kalibrierteile vorhanden und gültig sind in einem ECU-Speicher, um es einem Bootloader zu gestatten, die Betriebssoftware auszuführen;
  • 3 ist eine Darstellung eines Speichers in der ECU, die Programmiermanifeste zeigt, die Flags beinhalten, die identifizieren, dass die Software und Kalibrier-Files vorhanden und gültig sind; und
  • 4 ist eine andere Darstellung eines Speichers in der ECU, die Programmiermanifeste zeigt, die Flags beinhalten, die identifizieren, dass die Software und Kalibrier-Files vorhanden und gültig sind.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSBEISPIELE
  • Die folgende Diskussion der Ausführungsformen der Erfindung, die auf ein System und ein Verfahren zum Bestimmen, dass Betriebssoftware und/oder Kalibrier-Files vorhanden und gültig sind, nachdem ein Bootloader die Betriebssoftware und Kalibrier-Files in eine ECU eines Fahrzeugs flashprogrammiert hat, bevor es erlaubt wird, dass die Betriebssoftware ausgeführt wird, ist rein beispielhafter Natur und in keiner Weise dazu gedacht, die Erfindung oder ihre Anwendungen oder Verwendungen zu begrenzen. Beispielsweise bezieht sich die hier geführte Diskussion auf das Verifizieren von Software und Kalibrier-Files, die ordungsgemäss in eine ECU eines Fahrzeugs flashprogrammiert wurden. Allerdings werden Fachleute gut verstehen, dass das System und das Verfahren eine Anwendung beim Flashprogrammieren von Software und/oder Kalibrier-Files in andere Arten von Steuergeräten haben können.
  • 1 ist ein Blockdiagramm 10 eines bekannten Verfahrens zum Verwenden digitaler Signaturen mit asymmetrischen Schlüsseln zum Authentifizieren von Files, die in Steuergeräten programmiert sind. Wie Fachleuten gut bekannt ist, verwendet die asymmetrische Schlüsselkryptographie ein Paar von mathematisch miteinander in Beziehung stehenden Schlüsseln, die als privater Schlüssel und öffentlicher Schlüssel bekannt sind, um eine Botschaft zu verschlüsseln und zu entschlüsseln. Um eine digitale Signatur zu erstellen, verwendet ein Signierer seinen privaten Schlüssel, der nur ihm selbst bekannt ist, um eine digitale Botschaft zu verschlüsseln. Die digitale Signatur kann dann später von einer anderen Partei mithilfe des öffentlichen Schlüssels entschlüsselt werden, der mit dem privaten Schlüssel des Signierers gepaart ist, um ein File oder eine Botschaft zu authentifizieren.
  • In einem Signierschritt 12 wird ein Inhalt-File 14 bereitgestellt, wobei das Inhalt-File 14 ein Teil einer Software, ein kalibriertes File oder anderer „soft-part”-Inhalt sein kann, um in einem Steuergerät verwendet zu werden. Eine Hash-Berechnung wird auf dem Inhalt-File 14 ausgeführt, um einen Hash-Wert 16 zu generieren, der das Inhalt-File 14 verschlüsselt. Der Hash-Wert 16 wird dann mit dem privaten Schlüssel des Signierers verschlüsselt, um eine digitale Signatur 18 zu erstellen, wobei die digitale Signatur 18 nur für dieses jeweilige Inhalt-File gut ist.
  • Die digitale Signatur 18 und das Inhalt-File 14 werden dann in einem Verifizier-Schritt 20 verwendet, der dann durch den Bootloader in der ECU in der Anwendung, die hierin diskutiert wird, ausgeführt werden würde. Die digitale Signatur 18 wird unter Verwendung des öffentlichen Schlüssels des Signierers entschlüsselt, um einen entschlüsselten Hash-Wert 22 zu generieren. In der Zwischenzeit wird eine Hash-Berechnung auf dem Inhalt-File 14 von dem Verifizierer ausgeführt, um einen berechneten Hash-Wert 24 zu generieren. Im Kasten 26 wird der entschlüsselte Hash-Wert 22 mit dem berechneten Hash-Wert 24 verglichen. Falls der entschlüsselte Hash-Wert 22 mit dem berechneten Hash-Wert 24 übereinstimmt, dann wird im Oval 28 eine Gültigkeitsbestimmung ausgegeben und das Inhalt-File 14 wird verwendet. Falls der entschlüsselte Hash-Wert 22 nicht mit dem berechneten Hash-Wert 24 übereinstimmt, dann wird eine Bestimmung der Ungültigkeit im Oval 30 ausgegeben und das Inhalt-File 14 wird nicht verwendet.
  • Die vorliegende Erfindung schlägt ein Verfahren zum Validieren, dass eine Betriebssoftware ordungsgemäss in den Speicher einer ECU eines Fahrzeugs unter Verwendung eines Bootloaders flashprogrammiert wurde, vor. Die Technik ordnet einen vorbestimmten Speicherplatz in einer ersten Software-Flashspeicher-sektion in einem Speichersegment für die Software zu, wobei der Softwarecode unmittelbar auf diesen Speicherplatz folgt. Der Speicherplatz ist als ein Software-Programmiermanifest definiert, welches identifiziert, dass die Betriebssoftware ordungsgemäss flashprogrammiert wurde, beispielsweise durch Setzen eines Flags in dem Softwaremanifest. Das erste Speichersegment wird als das Softwaremanifest verwendet, da es zuerst während des Software-Reprogrammierens gelöscht wird, um die Software-Programmierergebnisse aufzuzeichnen. Der Speicherplatz für das Manifest ist ein Inkrement der kleinsten Schreibgröße, die durch den Bootloader-Flash erlaubt ist. Nachdem der Bootloader die Software programmiert hat, werden die Ergebnisse einer Integritätsprüfung, beispielsweise die Verifizierung einer digitalen Signatur, wie oben beschrieben, in dem Manifest aufgezeichnet.
  • Die vorliegende Erfindung schlägt darüber hinaus eine Technik zum Validieren, dass Kalibrier-Files ordungsgemäss in den Speicher einer ECU eines Fahrzeugs unter Verwendung eines Bootloader flashprogrammiert wurden, vor. Die Technik ordnet einen vorbestimmten Speicherplatz in einer ersten Kalibrier-File-Flashspeichersektion in einem Speichersegment für die Kalibrier-Files vor, wobei der Kalibrier-Filecode unmittelbar auf den Speicherplatz folgt. Der Speicherplatz ist als ein Kalibrier-Fileprogrammiermanifest definiert, welches identifiziert, dass die Kalibrier-Files ordungsgemäss flashprogrammiert wurden, beispielsweise durch Setzen eines Flags in dem Kalibrier-File Manifest. Das erste Speichersegment wird als das Kalibrier-File-Manifest verwendet, da es zuerst während des Kalibrier-File-Reprogrammieren gelöscht wird, um die Kalibrier-File Ergebnisse aufzuzeichnen. Der Speicherplatz für das Manifest ist ein Inkrement der kleinsten Schreibgröße, die von dem Bootloader-Flash erlaubt ist. Die Kalibrier-Files, die flashprogrammiert werden, überschreiben diesen Speicherplatz nicht. Nachdem der Bootloader jedes Kalibrier-File programmiert hat, werden die Ergebnisse der Integritätsprüfung in dem Manifestplatz aufgezeichnet.
  • Nach einem Zurücksetzen der ECU wird der Bootloader alle Software- und Kalibrier-Flags in den Manifesten für die Software und Kalibrier-Files überprüfen. Wenn alle Flags gültig sind, wird ein Transfer zu der Betriebssoftware erlaubt. Im anderen Fall verbleibt der Bootloader im Boot-Mode.
  • Die 2 ist ein Flussdiagramm 40, das ein Verfahren zum Verwenden von Programmiermanifesten zum Aufzeichnen des Vorhandenseins von gültiger Software und/oder Kalibrier-Files verwendet, wenn die Betriebssoftware und/oder Kalibrier-Files in den Speicher einer Fahrzeug-ECU mit einem Bootloader-Flashprogrammierverfahren flashprogrammiert werden. Eine Bootloader-Programmierausführung kontrolliert im Kasten 42 die Bootloader-Programmierfunktion. Diese Funktion kann über eine Anfrage von einem Service-Tool in einer Servicestelle eingegeben werden. Die Bootloader-Programmierausführung detektiert eine Anfrage zum Programmieren einer Software oder Kalibrierung und geht in den Kasten 44, um eine Operation auszuführen, beispielsweise das Hochladen oder Flashprogrammieren der Betriebssoftware und/oder Kalibrier-Files für die jeweilige Fahrzeug-ECU. Jedes Mal, wenn der Bootloader eine Betriebssoftware oder ein Kalibrier-File flashprogrammiert, löscht er zunächst die dafür vorgesehenen Speichersegmente, wobei er die Flags in einem Programmiermanifest-Speicherplatz setzt, um anzuzeigen, dass die Software oder ein bestimmtes Kalibrier-File nicht Flagsordungsgemäss flashprogrammiert wurden. In der Entscheidungsraute 46 bestimmt der Bootloader, ob eine gültige Flashprogrammierung ausgeführt wurde, jedes Mal, wenn ein separates Teil von Software oder Kalibrier-File flashprogrammiert wird, durch Bestimmen, dass das Flag ordungsgemäss in dem Manifest gesetzt wurde.
  • Wenn die Betriebssoftware oder ein Kalibrier-File ordungsgemäss in der Entscheidungsraute 46 flashprogrammiert wurde, führt der Bootloader dann eine Integritätsprüfung aus und aktualisiert das Programmiermanifest im Kasten 48. Der Bootloader bestimmt dann, ob die gesamte Betriebssoftware und Kalibrier-Files in der Entscheidungsraute 50 ordungsgemäss flashprogrammiert wurden, und wenn dies nicht der Fall ist, geht die Bootloader-Programmierausführung zum Kasten 42 zurück, um das nächste Stück Software oder das nächste Kalibrier-File zu flashprogrammieren. Wenn die gesamte Software und/oder Kalibrier-Files in der Entscheidungsraute 50 ordungsgemäss flashprogrammiert wurden, dann bestimmt der Bootloader, ob alle Betriebssoftware- und Kalibrier-File-Flags in dem Programmiermanifest in der Entscheidungsraute 52 ordungsgemäss gesetzt wurden und gültig sind, und wenn dies der Fall ist, gestattet die Ausführung der Betriebssoftware in dem Kasten 54. Wenn eine gültige Flashprogrammierung einer bestimmten Betriebssoftware oder eines Kalibrier-Files in der Entscheidungsraute 46 nicht geschehen ist oder alle Programmier-Flags in der Entscheidungsraute 52 ungültig sind, dann sendet der Bootloader eine negative Antwortmitteilung an den Anfragesteller, beispielsweise an das Programmierwerkzeug im Kasten 56, um anzuzeigen, dass das Flashprogrammieren nicht ordungsgemäss ausgeführt wurde.
  • 3 ist eine Darstellung eines Teils eines ECU-Speicher 60 mit einem Flash-Speichersegment 62, der Betriebssoftware und Kalibrier-Files abspeichert, die über einen Bootloader flashprogrammiert werden. In dieser Ausführungsform des Flash-Speichersegments 62 speichert der Bootloader ein Betriebssoftware-File und vier Kalibrier-Files für eine bestimmte Anwendung, die nicht beschränkend gedacht ist, ab. Die Betriebssoftware wird in eine Speichersektion 64 flashprogrammiert und die Kalibrier-Files werden in die Speichersektion 66 flashprogrammiert. Wie oben erwähnt, wird ein Programmiermanifest in dem Speichersegment 62 sowohl für die Betriebssoftware als auch für die Kalibrier-Files definiert und dieses Manifest befindet sich am Beginn des Speichersegments für die Betriebssoftware oder für die Kalibrier-Files. In diesem Ausführungsbeispiel ist das Softwaremanifest im Speicherplatz 68 vor der Software-Speichersektion 64 abgespeichert und beinhaltet nur ein einzelnes Software-Flag 70, da die Betriebssoftware nur einen einzelnen Teil, nämlich die in dem Segment 64 abgespeicherte Betriebssoftware umfasst. Analog dazu befindet sich das Kalibriermanifest im Speicherplatz 72 vor den Kalibrier-Files in der Speichersektion 66, wobei das Kalibriermanifest ein Kalibrier-Flag 74 für jedes separate Kalibrier-File abspeichert, was in diesem Ausführungsbeispiel vier Kalibrier-Flags wären. Wie oben erwähnt, ist der Manifest-Speicherplatz am Beginn des Speichersegments für die Betriebssoftware und die Kalibrier-Files vorgesehen, da dieser Platz der erste Teil des Speichers wäre, der gelöscht werden würde, wenn die Betriebssoftware oder ein bestimmtes Kalibrier-File mit neuen Files reprogrammiert werden würden, wobei ein neues Flag in dem Manifest für diese neuen Files gesetzt werden müsste. Es wird angemerkt, dass alle Kalibrier-Files, da sich die Kalibrier-Files alle in demselben Speichersegment befinden, während jedem Kalibrier-Flashprogrammiervorgang flashprogrammiert werden müssen, und dass das Segment erst einmal gelöscht wird, bevor das erste Kalibrier-File geschrieben wird.
  • Die 4 ist eine andere Ausführungsform eines Teils eines ECU-Speichers 80, wobei ähnliche Elemente aus dem ECU-Speicher 60 mit den gleichen Bezugszeichen versehen sind. In dem ECU-Speicher 80 ist anstelle eines einzelnen Kalibriermanifests für alle Kalibrier-Files unmittelbar vor den Kalibrier-Files jeweils ein Kalibriermanifest mit einem Kalibrier-Flag unmittelbar vor jedem der Kalibrier-Files vorgesehen. In dieser Ausführungsform ist beispielsweise ein Kalibriermanifest im Speicherplatz 82 für ein Kalibrier-File, das in der Speichersektion 84 abgespeichert ist, bereitgestellt, welches ein einzelnes Kalibrier-Flag umfasst, und ein Kalibrier-Manifest ist im Speicherplatz 86 für ein Kalibrier-File, das in der Speichersektion 88 abgespeichert ist, vorgesehen, welches ebenso ein einzelnes Kalibrier-Flag umfasst. Ferner ist ein Kalibrier-Manifest im Speicherplatz 90 für ein Kalibrier-File, welches in der Speichersektion 92 abgespeichert ist, bereitgestellt, welches ebenfalls ein einzelnes Kalibrier-Flag umfasst. Ein Kalibrier-Manifest ist im Speicherplatz 94 für ein Kalibrier-File, welches in der Speichersektion 96 abgespeichert ist, vorgesehen, welches ebenfalls ein einzelnes Kalibrier-Flag umfasst. Die Konfiguration des ECU-Speichers 80 kann Vorzüge gegenüber der Konfiguration des ECU-Speicher 60 haben, da die Kalibrier-Files in verschiedene Kalibrier-Segmente flashprogrammiert werden können, die nicht miteinander zusammenhängend sind, wobei ein Kalibriermanifest am jeweiligen Beginn der separaten Kalibrier-Segmente bereitgestellt werden würde, welches dann überschrieben werden könnte, sobald das neue Kalibrier-File runtergeladen werden wird.
  • In einer anderen Ausführungsform, die eine Kombination der ECU-Speicher 60 und 80 sein kann, kann die Kenntnis, welche Segmente in dem ECU-Speicher für ein oder mehrere Kalibrier-Files flashprogrammiert sind, bestimmen, wie viele Flags sich in dem Kalibrier-Manifest befinden, wobei ein Flashsegment ein einzelnes Kalibrier-File umfassen kann und andere Flashsegmente mehrere Kalibrier-Files umfassen können.
  • In einer weiteren Ausführungsform kann ein Flag für das gesamte Flashsegment vorgesehen sein, gleichgültig, ob mehr als ein Kalibrier-File in diesem Segment vorhanden ist. Der Bootloader würde sichergehen, dass alle Kalibrier-Files programmiert werden, bevor dieses Flag gesetzt wird, indem er eine Programmiersequenz von Kalibrier-Files durchführt. Beispielsweise würde jedem Kalibrier-File eine spezifische Sequenz-ID zugeordnet werden und das Flashprogrammieren der Kalibrier-Files würde in der Reihenfolge dieser IDs ausgeführt werden. Beispielsweise würde ein Kalibrier-File mit einer Sequenz-ID von 3 nicht vor einem Kalibrier-File mit einer Sequenz-ID von 2 flashprogrammiert werden. In dieser Ausführungsform muss das Programmieren des Kalibrier-Files erfolgreich sein, d. h. die Signatur muss gültig sein, bevor das nächste Kalibrier-File flashprogrammiert wird. Nachdem das letzte Kalibrier-File geschrieben und verifiziert ist, setzt der Bootloader das Flag, um ein erfolgreiches Programmieren für alle Kalibrier-Files in diesem Segment anzuzeigen.
  • Wie von Fachleuten gut verstanden wird, können verschiedene oder einige Schritte und Verfahren, die hier erörtert wurden, um die Erfindung zu beschreiben, von einem Computer, einem Prozessor oder einer anderen elektronischen Recheneinheit ausgeführt werden, die mithilfe elektrischer Phänomene Daten manipuliert und/oder transformiert. Diese Computer und elektrischen Geräte können verschiedene flüchtige und/oder nicht flüchtige Speicher inklusive einem festen computerlesbaren Medium mit einem darauf befindlichen ausführbaren Programm beinhalten, das verschiedene Codes oder ausführbare Instruktionen beinhaltet, die von dem Computer oder Prozessor ausgeführt werden, wobei der Speicher und/oder das computerlesbare Medium alle Formen und Arten von einem Speicher und anderen computerlesbaren Medien beinhalten kann.
  • Die vorhergehende Diskussion zeigt und beschreibt rein exemplarische Ausführungsbeispiele der vorliegenden Erfindung. Ein Fachmann kann leicht aus der Diskussion und den beigefügten Figuren und Patentansprüchen erkennen, dass zahlreiche Änderungen, Modifikationen und Variationen gemacht werden können, ohne dabei den Geist und den Bereich der Erfindung zu verlassen, wie er mit den folgenden Patentansprüchen definiert ist.

Claims (10)

  1. Ein Verfahren zum Verifizieren, dass Betriebssoftware und Kalibrier-Files ordnungsgemäß in ein Steuergerät flashprogrammiert wurden, bevor es erlaubt wird, dass die Betriebssoftware in dem Steuergerät ausgeführt wird, wobei das Verfahren umfasst: – Definieren eines Speichersegments in einem Steuergerät-Speicher zum Abspeichern der Betriebssoftware und eines oder mehrerer Kalibrier-Files; – Reservieren einer Software-Speichersektion für die Betriebssoftware und eine oder mehrere Kalibrier-File-Speichersektionen für das eine oder mehrere Kalibrier-Files in dem Speichersegment; – Flashprogrammieren der Betriebssoftware in die Software-Speichersektion; – Setzen eines Software-Flags in einem Softwaremanifest-Speicherplatz in der Software-Speichersektion, das anzeigt, dass die Betriebssoftware ordnungsgemäß flashprogrammiert und verifiziert wurde; – Flashprogrammieren des einen oder mehrerer Kalibrier-Files in die eine oder mehreren Kalibrier-File-Speichersektionen; – Setzen eines Kalibrier-Flags für jedes separate Kalibrier-File in zumindest einem Kalibrier-File-Manifest-Speicherplatz in der einen oder mehreren Kalibrier-File-Speichersektionen, welches anzeigt, dass das jeweilige Kalibrier-File ordnungsgemäß flashprogrammiert und verifiziert wurde; und – Verifizieren, dass alle Betriebssoftware-Flags und Kalibrier-File-Flags ordnungsgemäß gesetzt wurden, bevor erlaubt wird, dass die Betriebssoftware von dem Steuergerät ausgeführt wird.
  2. Verfahren nach Anspruch 1, wobei das Softwaremanifest vor der Betriebssoftware in der Software-Speichersektion angeordnet ist.
  3. Verfahren nach Anspruch 1, wobei das zumindest eine Kalibrier-File-Manifest vor dem einen oder mehreren Kalibrier-Files in der Kalibrier-File-Speichersektion angeordnet ist.
  4. Verfahren nach Anspruch 1, wobei das Reservieren einer oder mehrerer Kalibrier-File-Speichersektionen für das eine oder mehrere Kalibrier-Files das Reservieren einer Vielzahl von Kalibrier-File-Speichersektionen für eine Vielzahl von Kalibrier-Files umfasst, wobei ein einzelnes Kalibrier-File in jeder Kalibrier-File-Speichersektion bereitgestellt ist, und wobei das Flashprogrammieren von dem einen oder mehreren Kalibrier-Files in die eine oder mehreren Kalibrier-File-Speichersektionen das Flashprogrammieren eines separaten Kalibrier-Files in jede der Vielzahl von Kalibrier-File-Speichersektionen beinhaltet.
  5. Verfahren nach Anspruch 4, wobei die Vielzahl von Kalibrier-File-Speichersektionen miteinander zusammenhängend sind.
  6. Verfahren nach Anspruch 5, wobei das Setzen eines Kalibrier-Flags für jedes separate Kalibrier-File das Setzen eines Kalibrier-Flags in einen einzelnen Kalibrier-File-Manifestspeicherplatz umfasst, der alle Kalibrier-Flags für alle Kalibrier-Files speichert.
  7. Verfahren nach Anspruch 4, wobei das Setzen des Kalibrier-Flags für jedes separate Kalibrier-File das Bereitstellen eines separaten Kalibrier-File-Speicherplatzes für jedes Kalibrier-File, das ein einzelnes Kalibrier-Flag beinhaltet, umfasst.
  8. Verfahren nach Anspruch 7, wobei die Vielzahl von Kalibrier-File-Speichersektionen nicht miteinander zusammenhängend sind.
  9. Verfahren nach Anspruch 1, wobei das Steuergerät ein elektronisches Steuergerät (ECU) auf einem Fahrzeug ist.
  10. Ein System zum Verifizieren, dass ein oder mehrere Software-Files ordnungsgemäß in einen Speicher eines Steuergerätes flashprogrammiert wurden, bevor erlaubt wird, dass das eine oder die mehreren Software-Files in dem Steuergerät ausgeführt werden, wobei das System umfasst: – Mittel zum Definieren von zumindest einem Speichersegment in dem Speicher des Steuergeräts zum Abspeichern von zumindest einem Software-File; – Mittel zum Reservieren einer Speichersektion für das zumindest eine Software-File in dem Speichersegment; – Mittel zum Flashprogrammieren des zumindest einen Software-Files in die Speichersektion; – Mittel zum Setzen von zumindest einem Software-Flag in einem Softwaremanifestplatz in der Software-Speichersektion, welches anzeigt, dass das zumindest eine Software-File ordnungsgemäß flashprogrammiert wurde; und – Mittel zum Verifizieren, dass das Software-Flag ordnungsgemäß gesetzt wurde, bevor erlaubt wird, dass das Software-File von dem Steuergerät ausgeführt wird.
DE102012109615.5A 2011-10-28 2012-10-10 Verwendung eines Manifests zur Präsenzaufzeichnung von gültiger Software und Kalibrierung Active DE102012109615B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161552968P 2011-10-28 2011-10-28
US61/552,968 2011-10-28
US13/557,060 US8930710B2 (en) 2011-10-28 2012-07-24 Using a manifest to record presence of valid software and calibration
US13/557,060 2012-07-24

Publications (2)

Publication Number Publication Date
DE102012109615A1 true DE102012109615A1 (de) 2013-05-02
DE102012109615B4 DE102012109615B4 (de) 2022-05-12

Family

ID=48084482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012109615.5A Active DE102012109615B4 (de) 2011-10-28 2012-10-10 Verwendung eines Manifests zur Präsenzaufzeichnung von gültiger Software und Kalibrierung

Country Status (3)

Country Link
US (1) US8930710B2 (de)
CN (1) CN103198270B (de)
DE (1) DE102012109615B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016007498A1 (de) 2016-06-18 2017-12-21 Audi Ag Manipulationssichere Bereitstellung einer Funktionalität eines Assistenzsystems eines Kraftfahrzeugs

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600662B2 (en) * 2014-06-06 2017-03-21 T-Mobile Usa, Inc. User configurable profiles for security permissions
US9430220B2 (en) * 2014-07-22 2016-08-30 GM Global Technology Operations LLC Method, medium, and apparatus for re-programming flash memory of a computing device
EP3935997A1 (de) 2015-06-08 2022-01-12 Cosmetic Technologies, LLC Automatisches abgabesystem für eine kosmetikprobe
JP2017167916A (ja) * 2016-03-17 2017-09-21 株式会社デンソー 情報処理システム
US9928890B2 (en) 2016-08-29 2018-03-27 Apple Inc. System and method for calibrating memory using credit-based segmentation control
DE102016221108A1 (de) * 2016-10-26 2018-04-26 Volkswagen Aktiengesellschaft Verfahren zum Aktualisieren einer Software eines Steuergeräts eines Fahrzeugs
CN106789672B (zh) * 2017-01-18 2020-08-04 北京经纬恒润科技有限公司 一种报文路由处理方法及装置
US10430178B2 (en) 2018-02-19 2019-10-01 GM Global Technology Operations LLC Automated delivery and installation of over the air updates in vehicles
US11822955B2 (en) * 2020-01-17 2023-11-21 Steering Solutions Ip Holding Corporation System and method for decentralized vehicle software management

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US6571191B1 (en) 1998-10-27 2003-05-27 Cummins, Inc. Method and system for recalibration of an electronic control module
US6550052B1 (en) * 1999-11-09 2003-04-15 Daimlerchrysler Corporation Software development framework for constructing embedded vehicle controller software
US6505105B2 (en) * 2001-01-05 2003-01-07 Delphi Technologies, Inc. Electronic control unit calibration
US7366589B2 (en) 2004-05-13 2008-04-29 General Motors Corporation Method and system for remote reflash
CN101031880A (zh) * 2004-09-30 2007-09-05 罗伯特·博世有限公司 用于描述存储内容和用于描述存储内容的传输的方法
DE102005001430A1 (de) * 2004-09-30 2006-04-13 Robert Bosch Gmbh Verfahren zur Beschreibung von Speicherinhalten und zur Beschreibung des Transfers von Speicherinhalten
US8327153B2 (en) * 2009-12-04 2012-12-04 Electronics And Telecommunications Research Institute Method and system for verifying software platform of vehicle

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016007498A1 (de) 2016-06-18 2017-12-21 Audi Ag Manipulationssichere Bereitstellung einer Funktionalität eines Assistenzsystems eines Kraftfahrzeugs

Also Published As

Publication number Publication date
CN103198270A (zh) 2013-07-10
US8930710B2 (en) 2015-01-06
CN103198270B (zh) 2015-11-25
US20130111271A1 (en) 2013-05-02
DE102012109615B4 (de) 2022-05-12

Similar Documents

Publication Publication Date Title
DE102012109615B4 (de) Verwendung eines Manifests zur Präsenzaufzeichnung von gültiger Software und Kalibrierung
DE102013108021A1 (de) Verfahren zum selektiven Software-Rollback
DE102012109617A1 (de) Verfahren zum Ersetzen eines öffentlichen Schlüssels eines Bootloaders
DE102013108022A1 (de) Verfahren zum Aktivieren des Entwicklungsmodus eines gesicherten elektronischen Steuergeräts
DE102013108020A1 (de) Authentifizierungsschema zum Aktivieren eines Spezial-Privileg-Modus in einem gesicherten elektronischen Steuergerät
DE102012110559A1 (de) Verfahren und Vorrichtung zum sicheren Herunterladen einer Firmware unter Verwendung eines Diagnoselinkconnectors (DLC) und dem Onstar-System
DE102013105042A1 (de) Sicheres Flashprogrammieren eines sekundären Prozessors
EP3437012B1 (de) Verfahren, prozessor und gerät zur integritätsprüfung von nutzerdaten
DE102012109619A1 (de) Verfahren zum Bereitstellen einer digitalen Signatur zum Sichern einer Flash-Programmierfunktion
DE112014005412T5 (de) Programmaktualisierungssystem und Programmaktualisierungsverfahren
DE102015203776A1 (de) Verfahren zur Programmierung eines Steuergeräts eines Kraftfahrzeugs
DE10318031A1 (de) Verfahren zur Sicherstellung der Integrität und Authentizität von Flashware für Steuergeräte
DE102015209108A1 (de) Verfahren und Entscheidungsgateway zum Autorisieren einer Funktion eines eingebetteten Steuergerätes
DE102016221108A1 (de) Verfahren zum Aktualisieren einer Software eines Steuergeräts eines Fahrzeugs
DE102013225445A1 (de) Verfahren und System zum Umgehen von Authentizitätsüberprüfungen für geschützte Steuermodule
DE112016002785T5 (de) Elektronische Steuereinheiten für Fahrzeuge
EP2542995A2 (de) Verfahren zum verifizieren eines speicherblocks eines nicht-flüchtigen speichers
WO2017102295A1 (de) Verfahren und sicherheitsmodul zum bereitstellen einer sicherheitsfunktion für ein gerät
DE102010038179B4 (de) Individuelle Aktualisierung von Computerprogrammen
DE102018213615A1 (de) Kryptografiemodul und Betriebsverfahren hierfür
WO2004090695A1 (de) Verfahren zur überprüfung der datenintegrität von software in steuergeräten
DE102018211139A1 (de) Steuergerät sowie Verfahren zu dessen Betrieb
DE102005046696A1 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
EP3752911A1 (de) Verfahren zum installieren eines programmcodepakets in ein gerät sowie gerät und kraftfahrzeug
DE102020212988A1 (de) Sicheres Hochfahren eines Computersystems

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R082 Change of representative

Representative=s name: SCHWEIGER, MARTIN, DIPL.-ING. UNIV., DE

R020 Patent grant now final