-
Die vorliegende Erfindung ist auf ein computerimplementiertes Verfahren zur Integritätsvalidierung von Daten gerichtet, die in einem nichtflüchtigen ersten Speichergerät einer Verarbeitungseinheit gespeichert sind, wobei das erste Speichergerät ein Urladermodul und zumindest ein Anwendungsmodul in jeweiligen logischen Blöcken speichert. Die Erfindung ist weiter auf eine entsprechende Verarbeitungseinheit, eine Verarbeitungsanordnung, die eine derartige Verarbeitungseinheit beinhaltet, ein Kraftfahrzeug, das eine derartige Verarbeitungsanordnung beinhaltet, sowie Computerprogrammprodukte gerichtet.
-
Bei Verarbeitungseinheiten, insbesondere bei eingebetteten Systemen, zum Beispiel bei Applikationen im Automobilbereich, können unterschiedliche Softwaremodule, einschließlich Anwendungsmodulen, die Software enthalten, die es der Verarbeitungseinheit erlauben, spezifische Anwendungen auszuführen, auf einem nichtflüchtigen Speicher, insbesondere einem Festwertspeicher, ROM (englisch: read-only memory), oder einem Flash-Speicher oder einem elektrisch löschbaren Festwertspeicher, EEPROM (englisch: electrically erasable programmable read-only memory), gespeichert sein.
-
Es ist wünschenswert, mögliche böswillige Manipulationen oder versehentliche Änderungen der gespeicherten Daten detektieren zu können. Es ist allgemein bekannt, zyklische Redundanzüberprüfung, CRC (englisch: cyclic redundancy check) zur Detektion von Fehlern oder Änderungen in digitalen Daten zu verwenden. Dabei werden jeweilige CRC-Werte für Datenblöcke gemäß einem bekannten Algorithmus, zum Beispiel CRC32, berechnet. Falls der CRC-Wert eines bestimmten Datenblocks verändert wird, kann eine Korrekturmaßnahme eingeleitet werden.
-
Das Dokument
US 2014/0301550 A1 beschreibt ein Verfahren zur Datenübertragung zwischen einem Sensor und einer elektronischen Steuer- und/oder Regelungseinheit, ECU, wobei Manipulationen der übertragenen Sensordaten und/oder des Sensors erkannt werden. Ein Sitzungsschlüssel kann von der ECU abhängig von einem geheimen Schlüssel verschlüsselt werden. Der geheime Schlüssel wird sowohl in dem Sensor als auch in der ECU in einem Speicher gespeichert. Ein kryptographischer Algorithmus, der von dem Sensor verwendet wird, um den empfangenen verschlüsselten Sitzungsschlüssel zu entschlüsseln und den Sitzungsschlüssel ermitteln, kann derselbe Algorithmus sein, der auch von dem Sensor verwendet wird, um ein MAC über zumindest einen Teil der zu übertragenden Sensordaten während der Verwendung des Sitzungsschlüssels zu erzeugen.
-
Eine Aufgabe der vorliegenden Erfindung ist es, die Datensicherheit von Daten, die auf einem nichtflüchtigen Speicher einer Verarbeitungseinheit gespeichert sind, angesichts möglicher Manipulationen zu erhöhen.
-
Diese Aufgabe wird durch den jeweiligen Gegenstand der unabhängigen Ansprüche erreicht. Weitere Ausführungen und bevorzugte Ausführungsformen sind Gegenstand der abhängigen Ansprüche.
-
Die Erfindung beruht auf dem Gedanken, die CRC-Werte von Daten, die in zumindest einem ersten Speichergerät gespeichert sind, mittels eines Urladermoduls (englisch: bootloader module) zu berechnen und die berechneten CRC-Werte auf ein zweites Speichergerät zu speichern, auf das von dem Urladermodul sowie von einem Anwendungsmodul zugegriffen werden kann. Das Anwendungsmodul kann dann die CRC-Werte auslesen und einen gemeinsamen Hash-Wert zur Datenintegritätsvalidierung basierend auf ihnen berechnen.
-
Erfindungsgemäß wird ein computerimplementiertes Verfahren zur Integritätsvalidierung von Daten in zumindest einem nichtflüchtigen ersten Speichergerät einer Verarbeitungseinheit bereitgestellt. Dabei speichert das zumindest eine erste Speichergerät ein Urladermodul und zumindest ein Anwendungsmodul in jeweiligen logischen Blöcken. Ein jeweiliger zyklischer Redundanzüberprüfungswert wird für jeden der logischen Blöcke von dem Urladermodul berechnet und, insbesondere von dem Urladermodul, auf ein nichtflüchtiges zweites Speichergerät der Verarbeitungseinheit, insbesondere auf einen Sektor des zweiten Speichergeräts, gespeichert. Die berechneten CRC-Werte, insbesondere alle der berechneten CRC-Werte, werden von einem ersten Anwendungsmodul des zumindest einen Anwendungsmoduls aus dem zweiten Speichergerät gelesen. Ein gemeinsamer Hash-Wert zur Validierung der Integrität des Urladermoduls und des zumindest einen Anwendungsmoduls wird von dem ersten Anwendungsmodul abhängig von den ausgelesenen CRC-Werten, insbesondere abhängig von allen der CRC-Werte, unter Verwendung einer vordefinierten Hash-Funktion berechnet.
-
Soweit nicht anders angegeben, können alle Schritte des computerimplementierten Verfahrens von einer Recheneinheit durchgeführt werden, die zum Beispiel eine Recheneinheit eines Fahrzeugs, insbesondere eines Kraftfahrzeugs, ist. Die Recheneinheit beinhaltet die Verarbeitungseinheit oder besteht bei manchen Ausführungen aus der Verarbeitungseinheit. Die Verarbeitungseinheit kann zum Beispiel als ein Mikrocontroller implementiert sein oder einen solchen beinhalten. Die Verarbeitungseinheit kann zum Beispiel als ein Einchip-System, SoC (englisch: systemon-a-chip) implementiert sein. Bei manchen Ausführungen kann die Recheneinheit als ein SoC, das den Mikrocontroller beinhaltet, implementiert sein. Bei manchen Ausführungen kann die Recheneinheit auch als eine elektronische Steuereinheit, ECU (englisch: electronic control unit), des Fahrzeugs implementiert sein. Bei verschiedenen Ausführungsformen beinhaltet die Recheneinheit eine oder mehrere Hardware- und/oder Softwareschnittstellen und/oder eine oder mehrere weitere Speichereinheiten. Eine weitere Speichereinheit kann als flüchtiger Datenspeicher, beispielsweise als dynamischer Speicher mit wahlfreiem Zugriff, DRAM (englisch: „dynamic random access memory“) oder statischer Speicher mit wahlfreiem Zugriff, SRAM (englisch: „static random access memory“), oder als nicht-flüchtiger Datenspeicher, beispielsweise als Festwertspeicher, ROM (englisch: „read-only memory“), als programmierbarer Festwertspeicher, PROM (englisch: „programmable read-only memory“), als löschbarer programmierbarer Festwertspeicher, EPROM (englisch: „erasable programmable read-only memory“), als elektrisch löschbarer programmierbarer Festwertspeicher, EEPROM (englisch: „electrically erasable programmable read-only memory“), als Flash-Speicher oder Flash-EEPROM, als ferroelektrischer Speicher mit wahlfreiem Zugriff, FRAM (englisch: „ferroelectric random access memory“), als magnetoresistiver Speicher mit wahlfreiem Zugriff, MRAM (englisch: „magnetoresistive random access memory“) oder als Phasenwechselspeicher mit wahlfreiem Zugriff, PCRAM (englisch: „phase-change random access memory“), implementiert sein.
-
Das zumindest eine erste Speichergerät enthält eine Vielzahl logischer Blöcke oder mit anderen Worten die jeweiligen Speicherplätze der Datenblöcke, die auf dem zumindest einen ersten Speichergerät gespeichert sind, sind entsprechend der Vielzahl logischer Blöcke festgelegt. Das Urladermodul und das zumindest eine Anwendungsmodul sind jeweils in einem entsprechenden der Vielzahl logischer Blöcke gespeichert.
-
Die Daten, die der Integritätsvalidierung gemäß dem computerimplementierten Verfahren unterzogen werden, entsprechen Daten, die auf dem zumindest einen ersten Speichergerät gespeichert sind die dem Urladermodul und dem zumindest einen Anwendungsmodul entsprechen. Das Urladermodul, das im Folgenden auch als Urlader bezeichnet werden kann, und das zumindest eine Anwendungsmodul sind Softwaremodule, die von einer oder mehreren Komponenten der Verarbeitungseinheit, zum Beispiel von einer zentralen Verarbeitungseinheit, CPU (englisch: central processing unit), einem Co-Prozessor und/oder einem Hardwarebeschleuniger ausgeführt werden können. Das Urladermodul ist für das Hochfahren der Verarbeitungseinheit zuständig und hat Zugriff, beispielsweise vollständigen Zugriff, auf das zumindest eine erste Speichergerät, das zumindest einen Teil der für das Hochfahren erforderlichen Daten speichert.
-
Das zweite Speichergerät kann zum Beispiel dynamische und/oder veränderbare Daten speichern, die über unterschiedliche Leistungszyklen (englisch: power cycles) hinweg benötigt werden. Der Urlader hat Zugriff auf das zweite Speichergerät, zum Beispiel vollständigen Zugriff auf alle Sektoren des zweiten Speichergeräts. In jedem Fall hat der Urlader Zugriff auf den gemeinsamen Sektor des zweiten Speichergeräts. Das erste Anwendungsmodul hat ebenso Zugriff auf den gemeinsamen Sektor, insbesondere um die CRC-Werte auszulesen. Andererseits kann es sein, dass das zumindest eine Anwendungsmodul keinen vollständigen Zugriff auf das zumindest eine erste Speichergerät hat, es kann also sein, dass es keinen Zugriff auf alle der Vielzahl logischer Blöcke hat. In diesem Fall ist das zumindest eine Anwendungsmodul nicht dazu in der Lage, alle der CRC-Werte direkt basierend auf den Daten, die in dem zumindest einen ersten Speichergerät gespeichert sind, zu berechnen. Des Weiteren kann es sein, dass das zumindest eine Anwendungsmodul nicht dazu in der Lage ist, seine Hauptausführungsprozesse anzuhalten, um einen Arbeitsauftrag zur Berechnung der CRC-Werte auszuführen.
-
Der gemeinsame Hash-Wert ist ein Ergebnis der auf die Daten angewendeten Hash-Funktion, das von allen der CRC-Werten abhängt. Zum Beispiel können alle CRC-Werte verkettet werden und die Hash-Funktion kann auf die verketteten CRC-Werte angewendet werden. Die Hash-Funktion kann jedoch auch auf Daten angewendet werden, die von den CRC-Werten und von weiteren Informationen abhängen, die zum Beispiel die Vielzahl von logischen Blöcken oder die darin gespeicherten Daten betreffen.
-
Der gemeinsame Hash-Wert kann dazu benutzt werden, die Integrität von Daten zu validieren, die in dem zumindest einen ersten Speichergerät gespeichert sind, insbesondere die Daten, die dem Urladermodul und dem zumindest einen Anwendungsmodul entsprechen. Zu diesem Zweck kann überprüft werden, ob der gemeinsame Hash-Wert, der von dem ersten Anwendungsmodul berechnet wurde, identisch zu einem vorab autorisierten Hash-Wert ist. Falls die auf dem zumindest einen ersten Speichergerät gespeicherten Daten manipuliert worden sind, wird der gemeinsame Hash-Wert nicht mit dem vorab autorisierten Hash-Wert übereinstimmen und die Datenmanipulation kann folglich identifiziert werden. Die Integritätsvalidierung, mit anderen Worten die Überprüfung, ob der gemeinsame Hash-Wert mit dem vorab autorisierten Hash-Wert übereinstimmt, kann zum Beispiel von einer weiteren Recheneinheit durchgeführt werden, die zum Fahrzeug gehören kann oder sich außerhalb des Fahrzeugs befinden kann, zum Beispiel einem Servercomputer. Der gemeinsame Hash-Wert kann von dem ersten Anwendungsmodul an die weitere Recheneinheit ausgegeben werden, die den vorab autorisierten Hash-Wert speichert, und die weitere Recheneinheit kann die Integritätsvalidierung durchführen.
-
Folglich wird die Datensicherheit der auf dem ersten nichtflüchtigen Speicher der Verarbeitungseinheit gespeicherten Daten erhöht. Wird festgestellt, dass der gemeinsame Hash-Wert nicht mit dem vorab autorisierten Hash-Wert übereinstimmt, so ist ein Benutzer, zum Beispiel ein Kraftfahrzeugunternehmen, dazu in der Lage, eine Manipulation oder einen Fehler in der jeweiligen Verarbeitungseinheit zu identifizieren.
-
Gemäß einigen Ausführungen ist das Verarbeitungsgerät als ein Mikrocontroller implementiert.
-
Gemäß einigen Ausführungen ist das zumindest eine erste Speichergerät als zumindest ein Flash-Speicher ROM, Codeflash-Programming-ROM und/oder Flash-EEPROM implementiert.
-
Gemäß einigen Ausführungen ist das zweite Speichergerät als ein Flash-Speicher oder ein Flash-EEPROM implementiert.
-
Gemäß einigen Ausführungen wird zum Berechnen des gemeinsamen Hash-Werts ein Datensatz, der den jeweiligen ausgelesenen CRC-Wert beinhaltet, für jeden der logischen Blöcke, insbesondere durch das erste Anwendungsmodul, erzeugt. Die Datensätze der logischen Blöcke, insbesondere aller der logischen Blöcke, werden verkettet, insbesondere durch das erste Anwendungsmodul. Die Hash-Funktion wird auf die verketteten Datensätze angewendet, insbesondere durch das erste Anwendungsmodul.
-
Die Datensätze der logischen Blöcke können jeweilige Folgen von Werten sein und die verketteten Datensätze sind dann auch eine einzige Folge von Werten. Somit werden Eingangsdaten für die Hash-Funktion auf eine besonders einfache Weise erzeugt.
-
Gemäß einigen Ausführungen beinhaltet der Datensatz für jeden der logischen Blöcke einen Blockidentifikator, auch als Block-ID bezeichnet, des jeweiligen logischen Blocks. Folglich wird das Sicherheitsniveau weiter erhöht.
-
Gemäß einigen Ausführungen beinhaltet der Datensatz für jeden der logischen Blöcke, die eines des zumindest einen Anwendungsmoduls speichern, einen Softwareversionidentifikator, auch als Softwareversion-ID bezeichnet, des jeweiligen Anwendungsmoduls. Alternativ oder zusätzlich beinhaltet der Datensatz für den logischen Block, der das Urladermodul speichert, einen Softwareversionidentifikator des Urladermoduls. Das Sicherheitsniveau wird folglich weiter erhöht.
-
Gemäß einigen Ausführungen wird die Berechnung der CRC-Werte und das Speichern der berechneten CRC-Werte auf das zweite Speichergerät durch das Urladermodul während eines ersten Leistungszyklus der Verarbeitungseinheit, zum Beispiel nach einer Software-Aktualisierung oder als Reaktion auf eine spezifische externe Triggeranforderung, die zum Beispiel von einem Diagnosewerkzeug erhalten wird, ausgeführt. Das Auslesen der berechneten CRC-Werte aus dem zweiten Speichergerät und die Berechnung des gemeinsamen Hash-Werts durch das erste Anwendungsmodul werden während eines zweiten Leistungszyklus der Verarbeitungseinheit nach dem ersten Leistungszyklus ausgeführt.
-
Ein Leistungszyklus kann als eine Zeitdauer zwischen dem Anschalten und dem Abschalten des Verarbeitungsgeräts verstanden werden. Der zweite Leistungszyklus liegt nach dem ersten Leistungszyklus. Der erste und der zweite Leistungszyklus können aufeinanderfolgende Leistungszyklen sein. Zum Beispiel kann der erste Leistungszyklus Teil eines Software-Aktualisierungsvorgangs sein, während dessen zumindest ein Teil der in dem zumindest einen ersten Speichergerät gespeicherten Daten aktualisiert wird. Insbesondere kann das Urladermodul und/oder das zumindest eine Anwendungsmodul geändert oder durch eine jeweilige andere Version während des Software-Aktualisierungsvorgangs ersetzt werden.
-
Folglich werden die CRC-Werte als Teil des Software-Aktualisierungsvorgangs während des ersten Leistungszyklus berechnet. Zum Beispiel können die CRC-Werte während jedes Software-Aktualisierungsvorgangs erneut berechnet oder aktualisiert werden. Folglich kann die Datenintegrität insbesondere kurz oder unmittelbar nach oder zusammen mit dem Software-Aktualisierungsvorgang validiert werden, was eine besonders anfällige Zeit in Bezug auf eine böswillige Datenmanipulation darstellt.
-
Gemäß einigen Ausführungen wird eine CRC32-Funktion verwendet, um die CRC-Werte zu berechnen. Auf diese Weise wird eine zuverlässige und robuste Berechnung der CRC-Werte erreicht.
-
Gemäß einigen Ausführungen ist die Hash-Funktion durch eine vordefinierte kryptographische Hash-Funktion, zum Beispiel eine SHA-2-Hash-Funktion, insbesondere eine SHA-256-Hash-Funktion gegeben.
-
Derartige Hash-Funktionen sind durch eine besonders hohe Preimage-Resistenz und Kollisionsresistenz gekennzeichnet. Folglich wird die Manipulationssicherheit der Integritätsvalidierung der Daten verbessert.
-
Gemäß einigen Ausführungen beinhaltet das zumindest eine Anwendungsmodul ein zweites Anwendungsmodul, das einen Computer-Vision-Algorithmus enthält.
-
Computer-Vision-Algorithmen, die auch als Maschinen-Vision-Algorithmen oder Algorithmen zur automatischen visuellen Wahrnehmung bezeichnet werden können, können als Computer-Algorithmen zur automatischen Durchführung einer visuellen Wahrnehmungsaufgabe betrachtet werden. Eine visuelle Wahrnehmungsaufgabe, auch als Computer-Vision-Aufgabe bezeichnet, kann zum Beispiel als eine Aufgabe zum Extrahieren visueller Informationen aus Bilddaten verstanden werden. Insbesondere kann die visuelle Wahrnehmungsaufgabe in einigen Fällen im Prinzip von einem Menschen durchgeführt werden, der dazu imstande ist, ein den Bilddaten entsprechendes Bild visuell wahrzunehmen. Im vorliegenden Kontext werden visuelle Wahrnehmungsaufgaben jedoch automatisch durchgeführt, ohne dass die Unterstützung durch einen Menschen erforderlich wäre.
-
Zum Beispiel kann ein Computer-Vision-Algorithmus als ein Bildverarbeitungsalgorithmus oder ein Algorithmus zur Bildanalyse verstanden werden, der unter Verwendung von maschinellem Lernen trainiert wird und zum Beispiel auf einem künstlichen neuronalen Netzwerk, insbesondere einem faltenden neuronalen Netzwerk, basieren kann. Zum Beispiel kann der Computer-Vision-Algorithmus einen Objekterkennungsalgorithmus, einen Hinderniserkennungsalgorithmus, einen Objektverfolgungsalgorithmus, einen Klassifikationsalgorithmus, einen Segmentierungsalgorithmus und/oder einen Tiefenschätzungsalgorithmus beinhalten.
-
Das Konzept der Computer-Vision kann auch auf Sensorgeräte übertragen werden, die nicht in einem Bereich arbeiten, der von einem Menschen unmittelbar wahrnehmbar ist, wie etwa Infrarotlicht, zum Beispiel im Fall einer Infrarotkamera oder eines Lidarsystems, oder von Ultraschallwellen.
-
Computer-Vision-Algorithmen sind für viele Fahrerassistenzfunktionen in einem Fahrzeug und andere Funktionen zum autonomen oder teilautonomen Führen eines Fahrzeugs unerlässlich. Derartige Funktionen sind oftmals in hohem Maß sicherheitsrelevant und die Datenintegritätsvalidierung ist in derartigen Ausführungen folglich besonders vorteilhaft.
-
Gemäß einigen Ausführungen wird der gemeinsame Hash-Wert an eine weitere Verarbeitungseinheit übermittelt, insbesondere durch das erste Anwendungsmodul, und die Integrität des Urladermoduls und des zumindest einen Anwendungsmoduls wird abhängig von dem gemeinsamen Hash-Wert durch die weitere Verarbeitungseinheit validiert, insbesondere durch Vergleichen des gemeinsamen Hash-Werts mit einem vorab autorisierten Hash-Wert, der zum Beispiel auf der weiteren Verarbeitungseinheit gespeichert sein kann.
-
Für Anwendungsfälle oder Anwendungssituationen, die bei dem Verfahren auftreten können und die hier nicht explizit beschrieben sind, kann es vorgesehen sein, dass in Übereinstimmung mit dem Verfahren, eine Fehlernachricht und/oder eine Aufforderung zu einem Benutzer-Feedback ausgegeben wird und/oder eine Standardeinstellung und/oder ein vorbestimmter Ausgangszustand eingestellt wird.
-
Gemäß einem weiteren Aspekt der Erfindung wird eine Verarbeitungseinheit bereitgestellt. Die Verarbeitungseinheit beinhaltet zumindest ein nichtflüchtiges erstes Speichergerät, welches ein Urladermodul und zumindest ein Anwendungsmodul in entsprechenden logischen Blöcken speichert. Das Urladermodul ist dazu angepasst, einen jeweiligen zyklischen Redundanzüberprüfungswert, CRC-Wert, für jeden der logischen Blöcke zu berechnen und die berechneten CRC-Werte auf ein nichtflüchtiges zweites Speichergerät der Verarbeitungseinheit zu speichern. Ein erstes Anwendungsmodul des zumindest einen Anwendungsmoduls ist dazu angepasst, die berechneten CRC-Werte aus dem zweiten Speichergerät auszulesen und einen gemeinsamen Hash-Wert zur Validierung der Integrität des Urladermoduls und des zumindest einen Anwendungsmoduls abhängig von den ausgelesenen CRC-Werten unter Verwendung der vordefinierten Hash-Funktion zu berechnen.
-
Die Verarbeitungseinheit kann als ein SoC implementiert sein oder kann Teil eines SoC sein. Gemäß einigen Ausführungen ist die Verarbeitungseinheit ein Mikrocontroller.
-
Gemäß einigen Ausführungen beinhaltet die Verarbeitungseinheit eine Ausgabeschnittstelle, zum Beispiel zum Verbinden der Verarbeitungseinheit mit einem Fahrzeugkommunikationsbus. Die Verarbeitungseinheit, insbesondere das erste Anwendungsmodul, ist dazu eingerichtet, den gemeinsamen Hash-Wert über eine Ausgabeschnittstelle der Verarbeitungseinheit auszugeben.
-
Weitere Ausführungen der erfindungsgemäßen Verarbeitungseinheit ergeben sich unmittelbar aus den verschiedenen Ausführungsformen des erfindungsgemäßen computerimplementierten Verfahrens und umgekehrt. Insbesondere lassen sich einzelne Merkmale und entsprechende Erklärungen sowie Vorteile, die die verschiedenen Ausführungen des erfindungsgemäßen computerimplementierten Verfahrens betreffen, analog auf entsprechende Ausführungen der erfindungsgemäßen Verarbeitungseinheit übertragen. Insbesondere ist die erfindungsgemäße Verarbeitungseinheit dazu ausgestaltet oder programmiert, das erfindungsgemäße computerimplementierte Verfahren auszuführen. Insbesondere führt die erfindungsgemäße Verarbeitungseinheit das erfindungsgemäße computerimplementierte Verfahren aus.
-
Gemäß einem weiteren Aspekt der Erfindung wird eine Verarbeitungsanordnung bereitgestellt. Die Verarbeitungsanordnung beinhaltet eine erfindungsgemäße Verarbeitungseinheit, insbesondere in einer Ausführung, welche die genannte Ausgabeschnittstelle beinhaltet. Die Verarbeitungsanordnung beinhaltet die weitere Verarbeitungseinheit, die mit der Verarbeitungseinheit über die Ausgabeschnittstelle verbunden ist und dazu eingerichtet ist, den gemeinsamen Hash-Wert zu empfangen und die Integrität des Urladermoduls und des zumindest einen Anwendungsmoduls abhängig von dem gemeinsamen Hash-Wert zu validieren.
-
Gemäß einem weiteren Aspekt der Erfindung wird ein Kraftfahrzeug bereitgestellt, das eine erfindungsgemäße Verarbeitungseinheit aufweist.
-
Bei einigen Ausführungen weist das Kraftfahrzeug eine erfindungsgemäße Verarbeitungsanordnung und einen Fahrzeugkommunikationsbus auf, wobei die weitere Verarbeitungseinheit mit der Verarbeitungseinheit über die Ausgabeschnittstelle und den Fahrzeugkommunikationsbus verbunden ist.
-
Gemäß einem weiteren Aspekt der Erfindung wird ein Computerprogramm, welches Befehle beinhaltet, bereitgestellt. Wenn die Befehle durch eine erfindungsgemäße Verarbeitungseinheit ausgeführt werden, veranlassen die ersten Befehle die Verarbeitungseinheit dazu, ein erfindungsgemäßes computerimplementiertes Verfahren zur Integritätsvalidierung durchzuführen.
-
Gemäß einem weiteren Aspekt der Erfindung wird ein computerlesbares Speichermedium bereitgestellt, das ein erfindungsgemäßes Computerprogramm speichert.
-
Das Computerprogramm und das computerlesbare Speichermedium können auch als jeweilige die Befehle beinhaltende Computerprogrammprodukte bezeichnet werden.
-
Weitere Merkmale der Erfindung ergeben sich aus den Ansprüchen, den Figuren und der Figurenbeschreibung. Die vorstehend in der Beschreibung genannten Merkmale und Merkmalskombinationen sowie die nachfolgend in der Figurenbeschreibung genannten und/oder in den Figuren gezeigten Merkmale und Merkmalskombinationen können von der Erfindung nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen umfasst sein. Insbesondere können auch Ausführungsformen und Merkmalskombinationen von der Erfindung umfasst sein, die nicht alle Merkmale eines ursprünglich formulierten Anspruchs aufweisen. Darüber hinaus können Ausführungsformen und Merkmalskombinationen von der Erfindung umfasst sein, die über die in den Rückbezügen der Ansprüche dargelegten Merkmalskombinationen hinausgehen oder davon abweichen.
-
Im Folgenden wird die Erfindung im Einzelnen mit Bezug auf spezifische beispielhafte Ausführungen und jeweilige schematische Zeichnungen erläutert. In den Zeichnungen können identische oder funktionsgleiche Elemente mit denselben Bezugszeichen bezeichnet sein. Die Beschreibung identischer oder funktionsgleicher Elemente wird mit Bezug auf andere Figuren nicht notwendigerweise wiederholt.
-
In den Figuren zeigen:
- 1 schematisch eine beispielhafte Ausführung eines erfindungsgemäßen Kraftfahrzeugs;
- 2 ein schematisches Blockdiagramm einer beispielhaften Ausführung einer erfindungsgemäßen Verarbeitungseinheit; und
- 3 ein Flussdiagramm einer beispielhaften Ausführung eines erfindungsgemäßen computerimplementierten Verfahrens zur Integritätsvalidierung.
-
In 1 ist eine beispielhafte Ausführung eines erfindungsgemäßen Fahrzeugs 5, insbesondere eines Kraftfahrzeugs, schematisch gezeigt. Das Fahrzeug 5 beinhaltet eine beispielhafte Ausführung einer erfindungsgemäßen Verarbeitungseinheit 1. Die Verarbeitungseinheit 1 kann zum Beispiel ein Mikrocontroller sein.
-
Die Verarbeitungseinheit 1 kann bei manchen Ausführungen des Fahrzeugs 5, in einer erfindungsgemäßen Verarbeitungsanordnung 3 enthalten sein. Die Verarbeitungsanordnung 3 weist einen Fahrzeugkommunikationsbus 10 auf, zum Beispiel einen CAN-Bus, der eine weitere Verarbeitungseinheit 2 mit einer Ausgabeschnittstelle 9 der Verarbeitungseinheit 1 verbindet.
-
Die Verarbeitungseinheit 1 beinhaltet zumindest ein nichtflüchtiges Speichergerät 6, das in 1 der Einfachheit halber durch ein nichtflüchtiges erstes Speichergerät 6, zum Beispiel ein Codeflash-Programming-ROM, dargestellt ist, das ein Urladermodul 11 (siehe 2) und zumindest ein Anwendungsmodul 12 (siehe 2) in jeweiligen logischen Blöcken speichert. Das zumindest eine erste Speichergerät kann über eine oder mehrere physische Komponenten, zum Beispiel SoCs mit einem oder mehreren Programing Flash Devices für unterschiedliche Anwendungen verteilt sein. Zum Beispiel kann eine ECU des Fahrzeugs 5 eines oder mehrere Anwendungsprogramme haben, die sich auf unterschiedlichen Speicherchips befinden und mit unterschiedlichen logischen Block-IDs gekennzeichnet sind.
-
Bei manchen Ausführungen kann eines des zumindest einen Anwendungsmoduls 12 dazu angepasst sein, einen Computer-Vision-Algorithmus abhängig von Sensordaten auszuführen, die von einem Umgebungssensorsystem 4, zum Beispiel einer Kamera oder einem Lidar-System, des Fahrzeugs 5 erzeugt werden. Die Verarbeitungseinheit 1 kann zum Beispiel eine CPU 8 und/oder einen oder mehrere weitere Prozessoren, Co-Prozessoren und/oder Hardwarebeschleuniger beinhalten. Teile des Sensorsystems 4 und der Verarbeitungseinheit 1 können zum Beispiel in einem SoC kombiniert sein.
-
Die Verarbeitungseinheit 1 beinhaltet ein nichtflüchtiges zweites Speichergerät 7, das insbesondere einen gemeinsamen Sektor enthält, auf den sowohl das Urladermodul als auch ein erstes Anwendungsmodul 12a (siehe 3) des zumindest einen Anwendungsmoduls 12 zugegriffen werden kann. Insbesondere kann das Urladermodul 11 zumindest auf den gemeinsamen Sektor schreiben und das erste Anwendungsmodul kann zumindest den gemeinsamen Sektor lesen.
-
Die Verarbeitungseinheit 1 kann ein erfindungsgemäßes computerimplementiertes Verfahren zur Integritätsvalidierung von Daten ausführen, die in dem ersten Speichergerät 6, insbesondere des Urladermoduls 11 und des zumindest einen Anwendungsmoduls 12 gespeichert sind. 2 zeigt ein schematisches Blockdiagramm der Verarbeitungseinheit 1.
-
Um das computerimplementierte Verfahren auszuführen, wird ein jeweiliger CRC-Wert 13, zum Beispiel unter Verwendung von CRC32, für jeden der logischen Blöcke berechnet und von dem Urladermodul 11 auf das zweite Speichergerät 7, insbesondere auf den gemeinsamen Sektor, gespeichert. Die berechneten und gespeicherten CRC-Werte 13 werden von dem ersten Anwendungsmodul 12a des zumindest einen Anwendungsmoduls 12 aus dem zweiten Speichergerät 7 gelesen.
-
Ein gemeinsamer Hash-Wert 18 zur Validierung der Integrität des Urladermoduls 11 und des zumindest einen Anwendungsmoduls 12 wird von dem ersten Anwendungsmodul 12a abhängig von den ausgelesenen CRC-Werten 13 unter Verwendung einer vordefinierten Hash-Funktion, zum Beispiel SHA-256, berechnet.
-
Das erste Anwendungsmodul 12a übermittelt den gemeinsamen Hash-Wert 18 über die Ausgabeschnittstelle 9 und den Fahrzeugkommunikationsbus 10 an die weitere Verarbeitungseinheit 2. Die weitere Verarbeitungseinheit 2 validiert die Integrität des Urladermoduls 11 und des zumindest einen Anwendungsmoduls 12 abhängig von dem gemeinsamen Hash-Wert 18, insbesondere durch Vergleichen des gemeinsamen Hash-Werts 18 mit einem vorab autorisierten Hash-Wert, der zum Beispiel von der weiteren Verarbeitungseinheit 2 gespeichert wird.
-
3 zeigt ein Flussdiagramm einer weiteren beispielhaften Ausführung eines erfindungsgemäßen computerimplementierten Verfahrens zur Datenintegritätsvalidierung. In diesem Beispiel beinhaltet das zumindest eine Anwendungsmodul 12 das erste Anwendungsmodul 12a und ein zweites Anwendungsmodul 12b. In anderen Ausführungen kann die Anzahl der Anwendungsmodule 12 abweichen.
-
In Schritt 300 berechnet das Urladermodul 11 die CRC-Werte 13, die einen Urlader-CRC-Wert 13_11 für das Urladermodul 11, einen ersten CRC-Wert 13_12a für das erste Anwendungsmodul 12a und einen zweiten CRC-Wert 13_12b für das zweite Anwendungsmodul 12b enthalten.
-
In Schritt 310 liest das erste Anwendungsmodul 12a die berechneten CRC-Werte 13_11, 13_12a, 12c13_12b und erzeugt einen entsprechenden Datensatz, der den jeweiligen ausgelesenen CRC-Wert 13_11, 13_12a, 13_12b für jeden logischen Block beinhaltet. Insbesondere wird ein Urladerdatensatz für das Urladermodul 11 erzeugt, ein erster Datensatz wird für das erste Anwendungsmodul 12a erzeugt und ein zweiter Datensatz 16_12b wird für das zweite Anwendungsmodul 12b erzeugt.
-
Die Datensätze können aus den jeweiligen CRC-Werten 13_11, 13_12a, 13_12b bestehen. Die Datensätze können jedoch abgesehen von den CRC-Werten 13_11, 13_12a, 13_12b weitere Informationen, wie etwa jeweilige logische Blockidentifikatoren und/oder jeweilige Softwareversionidentifikatoren enthalten.
-
Das erste Anwendungsmodul 12a kann die Datensätze aller logischen Blöcke in Schritt 320 verketten und die Hash-Funktion auf die verketteten Datensätze 17 in Schritt 330 anwenden, um den gemeinsamen Hash-Wert 18 zu berechnen. In Schritt 340 wird der gemeinsame Hash-Wert 18 mit dem vorab autorisierten Hash-Wert verglichen.
-
Wie insbesondere in Bezug auf die Figuren beschrieben, erhöht die Erfindung die Datensicherheit von Daten, die auf einem nichtflüchtigen Speicher einer Verarbeitungseinheit gespeichert sind, angesichts möglicher Manipulationen.
-
Insbesondere kann die Erfindung ein Konzept der Validierung der Datenintegrität durch Erzeugen des gemeinsamen Hash-Werts implementieren. Ein Konzept zur Datenintegritätsvalidierung ist zum Beispiel durch die Vorschrift „UNECE R156 SUMS“ der United Nations Economic Commission for Europe, UNECE vorgeschrieben. Eine Absicht dieser Vorschrift ist es, Software-Aktualisierungen, SU (englisch: software update) und ein Software-Aktualisierungs-Management-System, SUMS (englisch: software update management system) auf sichere und geschützte Weise zu definieren, gerichtet an Kraftfahrzeughersteller, die zum Beispiel Over-the-Air-Software-Aktualisierungen, OTA-Software-Aktualisierungen, realisieren.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-