-
Die vorliegende Erfindung betrifft ein Verfahren zur Validierung von übermittelten Nachrichten sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung.
-
Stand der Technik
-
In Fahrzeugen wird häufig ein Bussystem eingesetzt, über das verschiedene Einheiten und Steuergeräte zur Übertragung von Daten, wie etwa Messwerten, Steuersignalen und weiteren Informationen miteinander verbunden sind. Ein Beispiel ist der weit verbreitete CAN-Bus. Dabei unterliegen die auf solchen Bussystemen übermittelten Nachrichten jedoch häufig keinen Sicherheitsmechanismen und können daher leicht verfälscht werden. Insbesondere in der Abgassensorik wird häufig der vom Stickoxid-Sensor übermittelte Wert manipuliert, mit dem Ziel, den im Abgasbehandlungssystem verwendeten Harnstoff (AdBlue) einzusparen.
-
Maßnahmen zur Authentifizierung oder Integritätsprüfung der Daten wie beispielsweise die Verschlüsselung der übermittelten Daten sind jedoch im Fahrzeugumfeld nicht immer möglich, da nicht jedes teilnehmende Gerät wie etwa ein Sensorsteuergerät über ausreichende Hardwareeigenschaften verfügt, d.h. häufig übersteigen die Rechenzeitanforderungen solcher Verfahren die vorhandene Prozessorkapazität. Auch die Datenübertragungskapazität auf dem übermittelnden Bussystem zwischen den Einheiten ist relativ begrenzt.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zur Validierung von übermittelten Daten sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Insbesondere wird ein Verfahren vorgeschlagen, welches in einem Sender die folgenden Schritte umfasst: Senden einer vorgegebenen Anzahl von Datennachrichten, welche jeweils Daten enthalten, an einen Empfänger; Speichern eines Datensatzes für jede der gesendeten Datennachrichten, welcher mindestens die in den gesendeten Datennachrichten enthaltenen Daten umfasst; nach dem Senden und Speichern der vorgegebenen Anzahl von Datennachrichten, Berechnen eines Prüfwerts auf Grundlage einer Kombination der gespeicherten Datensätze; und Senden des Prüfwerts an den Empfänger in Prüfwertnachrichten. Insbesondere kann der Prüfwert in einer einzelnen oder mehreren Prüfwertnachrichten gesendet werden. Die Verwendung des Plurals des Begriffs „Prüfwertnachrichten“ soll im Sinne der vorliegenden Erfindung folglich nicht implizieren, dass die Anzahl der Prüfwertnachrichten zwingend größer oder gleich zwei sein muss. Eine Prüfwertnachricht im Sinne der vorliegenden Erfindung ist eine Nachricht, die einen Teil eines Prüfwertes oder einen vollständigen Prüfwert umfasst.
-
Der Prüfwert kann vorteilhafterweise in mehreren Prüfwertnachrichten gesendet werden, die je einen Teil des Prüfwerts umfassen. Ein Empfänger kann dann die verschiedenen Teile des Prüfwertes aus den Prüfwertnachrichten extrahieren und den Prüfwert ermitteln. Besonders vorteilhaft ist es, die Teile des Prüfwertes so zu gestalten, dass die Teile des Prüfwertes in Nachrichten integriert werden können, die sowieso von dem Sender an den Empfänger versendet werden, wie z.B. regelmäßig ausgesendete CAN-Frames, falls diese vorteilhafte Ausgestaltung des erfindungsgemäßen Verfahrens zur Validierung von mittels dem CAN-Bus übertragenen Nachrichten Anwendung findet. Eine Prüfwertnachricht kann z.B. eine Datennachricht sein, die neben den Daten auch mindestens einen Teil eines Prüfwertes umfasst. In vorteilhafter Ausgestaltung können Datennachrichten als Prüfwertnachrichten verwendet werden.
-
Auf diese Weise können mehrere gesendete Nachrichten oder darin enthaltene Daten durch einen Prüfwert validiert werden, der sich auf mehrere Nachrichten in Kombination bezieht. Damit wird ein rechenzeitschonendes Verfahren zur Authentifizierung der übermittelten Daten ermöglicht, das auch die Buslast bei der Datenübertragung effektiv verringert. Somit kann ein derartiges Verfahren auch in Hardware mit begrenzter Prozessorausstattung durchgeführt werden, z.B. in einem Sensorsteuergerät oder ähnlichen Elementen. Besonders geeignet ist ein derartiges Verfahren beispielsweise in Fahrzeugen, die häufig über ein zentrales Bussystem gesteuert werden und eine Vielzahl von Hardwarekomponenten mit eingeschränkten Rechenkapazitäten umfassen.
-
In beispielhaften Ausführungsformen kann der berechnete Prüfwert zusätzlich vor dem Senden an den Empfänger mit einem kryptographischen Schlüssel, z.B. einem symmetrischen Schlüssel oder einem Teil eines asymmetrischen Schlüsselpaars, verschlüsselt werden, wobei der an den Empfänger gesendete Prüfwert dann der verschlüsselte Prüfwert ist. Damit ist sichergestellt, dass der Prüfwert nach der Berechnung und dem Versand nicht mehr verändert wurde.
-
Optional kann weiter eine Zufallszahl vom Empfänger empfangen werden, die dann mit den gespeicherten Datensätzen kombiniert wird, beispielsweise durch Voranstellen oder Anhängen, wobei der Prüfwert auf Grundlage der Kombination aus der Zufallszahl und den gespeicherten Datensätzen berechnet wird. Die Verwendung einer vom Empfänger erhaltenen Zufallszahl bei der Bildung des Prüfwerts verhindert, dass beispielsweise ein Angreifer eine gewisse Zeit die Kommunikation vom Sender zum Empfänger abhört und aufzeichnet und anschließend die aufgezeichneten Daten zum Empfänger sendet. Damit kann also ein weitergehender Schutz gegen Manipulationen bei der Übermittlung, insbesondere gegen sogenannte „Man-in-the-middle“-Angriffe, geboten werden.
-
In vorteilhafter Ausgestaltung wird die Zufallszahl aus Informationen aus mehreren empfangenen Zufallszahlnachrichten gebildet. Beispielsweise kann die Zufallszahl in mehrere Zufallszahlteile zerlegt werden, wobei je ein Zufallszahlteil mit je einer Zufallszahlnachricht übermittelt wird. Somit können beispielsweise sowieso ausgetauschte Nachrichten, wie z.B. CAN-Frames, zum Übermittelt der Zufallszahl verwendet werden. In diesem Fall wird ein beliebiger CAN-Frame zu einer Zufallszahlnachricht, indem mittels des CAN-Frames ein Zufallszahlteil übermittelt wird.
-
Entsprechend wird im Empfänger ein Verfahren vorgeschlagen, welches das Empfangen einer Anzahl von Datennachrichten von einem Sender und das Speichern eines Datensatzes für jede der empfangenen Datennachrichten umfasst, wobei der Datensatz mindestens in den gesendeten Datennachrichten enthaltene Daten umfasst, wobei weiter eine Prüfwertnachrichten empfangen werden, welche jeweils zumindest einen Teil eines Prüfwerts umfassen. Eine Prüfwertnachricht im Sinne der vorliegenden Erfindung ist eine Nachricht, die einen Teil des Prüfwerts oder den vollständigen Prüfwert umfasst. Bei einem Teil des Prüfwertes handelt es sich um einen Prüfwertteil. Es werden dabei mindestens so viele Prüfwertnachrichten empfangen, dass der Prüfwert ermittelt werden kann. Falls der Prüfwert in nur einer Prüfwertnachricht übermittelt wird, muss nur diese eine Prüfwertnachricht empfangen werden. Falls der Prüfwert mittels mehrerer Prüfwertnachrichten übermittelt wird, die je einen Prüfwertteil umfassen, werden mindestens alle Prüfwertnachrichten empfangen, die Informationen tragen, die zur Bildung des Prüfwertes nötig sind. Falls der Prüfwert mittels mehrerer Prüfwertnachrichten übermittelt wurde, wird der Prüfwert durch die in den empfangenen Prüfwertnachrichten enthaltenen Prüfwertteile gebildet. Wird der Prüfwert mit nur einer Prüfwertnachricht übertragen wird der Prüfwert durch Extraktion aus der Prüfwertnachricht gebildet. Dann wird auf Grundlage einer Kombination der gespeicherten Datensätze ein Vergleichsprüfwert berechnet, der dann mit dem empfangenen Prüfwert verglichen wird. Falls der Vergleich erfolgreich ist, werden die empfangenen zugehörigen Datennachrichten als validiert bewertet.
-
Die Verwendung von mehreren Prüfwertnachrichten ermöglicht vorteilhafterweise, den zu übertragenden Prüfwert in derart kleine Prüfwertteile aufzuteilen, dass die Prüfwertteile mittels sowieso zu übertragender Nachrichten übertragen werden können. Beispielsweise können die Prüfwertteile in sowieso ausgetauschte CAN-Frames integriert werden, sodass zur Übertragung des Prüfwertes keine zusätzlichen Frames übertragen werden müssen.
-
Neben den verringerten Anforderungen an die Rechenzeit besteht auch der Vorteil, dass der Empfänger selbständig entscheiden kann, ob die Datennachrichten bzw. die Daten validiert werden sollen oder nicht. Damit können in einem Empfänger, der keine ausreichenden Kapazitäten zur Durchführung der Prüfwertberechnung aufweist, optional auch die nicht validierten Daten auf herkömmliche Weise weiter verwendet werden, während der Sender die Prüfwerte senden kann, ohne weitere Informationen über die Ausstattung des Empfängers zu benötigen.
-
Wenn vom Sender ein verschlüsselter Prüfwert empfangen wird, kann einerseits auf Seiten des Empfängers mit einem vorgegebenen kryptographischen Schlüssel (idealerweise demselben wie der Sender) ebenfalls ein verschlüsselter Vergleichsprüfiniert gebildet werden, so dass zwei verschlüsselte Werte verglichen werden; oder alternativ kann der empfangene Prüfwert mit einem vorgegebenen kryptographischen Schlüssel vor dem Vergleichen des Prüfwerts mit dem Vergleichsprüfiniert entschlüsselt werden, so dass zwei entschlüsselte Werte verglichen werden.
-
In erweiterten Ausführungsformen kann im Empfänger eine Zufallszahl erzeugt werden, die dann an den Sender zur Verwendung bei der Prüfwertbildung gesendet wird. Der im Empfänger gebildete Prüfwert wird dann außerdem auf Grundlage einer Kombination aus der Zufallszahl und den gespeicherten Datensätzen berechnet. Wie bereits vorstehend angemerkt, kann durch das Austauschen einer Zufallszahl, die in die Prüfwerte eingeht, eine Manipulation durch Abhörung der Datenübertragung erschwert werden. Dabei kann beispielsweise nach jedem Empfangen eines Prüfwerts eine neue Zufallszahl erzeugt und gesendet werden.
-
Die beidseitig gebildeten Prüfwerte können nach einem geeigneten Algorithmus gebildet werden; der Prüfwert kann beispielsweise eine Prüfsumme oder ein Hashwert sein. Dabei kann die Komplexität des Algorithmus auch angepasst an die vorhandenen Verarbeitungskapazitäten sein.
-
Dabei kann beispielsweise jeder Datensatz in bestimmten Ausführungsformen auch nur die Daten einer Datennachricht oder alternativ die ganze Datennachricht umfassen, und der Prüfwert kann dann entsprechend auf Grundlage der Kombination entweder der Daten oder der Datennachrichten gebildet werden.
-
Das Verfahren kann beispielsweise vorsehen, dass die Datennachrichten in vorgegebenen Abständen gesendet werden. Eine derartige zyklische Übertragung von Daten findet häufig beispielsweise bei der Übermittlung von regelmäßig erfassten Messwerten zur Auswertung oder weiteren Verarbeitung statt.
-
Optional kann die Prüfwertnachricht eine Angabe darüber enthalten, auf welche Datennachrichten sich der enthaltene Prüfwert bezieht. Damit kann die Anzahl der Datennachrichten, über die der Prüfwert berechnet wird, durch diese Angabe vorgegeben werden, so dass auch Verzögerungen bei der Datenübermittlung ausgeglichen werden.
-
Die Datensätze können beim Sender und/oder Empfänger beispielsweise in einem Ringspeicher, einer anderen als Zwischenspeicher geeigneten Speichereinheit oder in einem Langzeitspeicher gespeichert werden.
-
In beispielhaften Ausführungsformen kann das Verfahren in Zusammenhang mit einem Bus-System eingesetzt werden, auf dem die verschiedenen Nachrichten gesendet und/oder empfangen werden. Ein Beispiel ist ein CAN-Bus. Ebenso sind aber auch andere Übermittlungswege denkbar.
-
Falls das Verfahren beispielsweise in einem Fahrzeug eingesetzt wird, wobei die Nachrichten zwischen Steuereinheiten oder ähnlichen Komponenten in einem Fahrzeug übermittelt werden, können die Daten z.B. folgendes umfassen: einen Messwert eines Sensors, ein Steuersignal, eine berechnete Variable. Insbesondere bei der Übermittlung von Messwerten im Abgassystem, z.B. Stickoxidwerten oder Partikelwerten, sind häufig Manipulationen zu finden, gegen die die hier vorgestellten Verfahren schützen können.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs, ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Figurenliste
-
- 1 zeigt eine schematische Darstellung eines Systems zur Verwendung mit einer ersten Ausführungsform;
- 2 zeigt eine schematische Darstellung einer erweiterten beispielhaften Ausführungsform; und
- 3 zeigt ein Ablaufdiagramm eines beispielhaften Verfahrens gemäß der Erfindung.
-
Ausführungsformen der Erfindung
-
In 1 ist ein beispielhaftes System dargestellt, in dem Ausführungsformen der Erfindung zur Anwendung kommen können. Dabei werden Nachrichten zwischen einem Sender 100 und einem Empfänger 120 übermittelt, wobei die Übermittlung über eine geeignete Signalleitung wie etwa ein Bussystem stattfinden kann. Dabei kann es sich um einen CAN-Bus (Controller Area Network), der als Fahrzeugbus häufig eingesetzt wird, oder ein anderes beliebiges System zur Datenübertragung handeln.
-
Der Sender 100 kann beispielsweise eine Einheit im Fahrzeug sein, die wiederholt Daten an eine andere Steuereinheit sendet, wie etwa eine Sensorsteuereinheit. Dabei kann es sich um beliebige Sensoren handeln; als Beispiel kann ein NOx-(Stickoxid)-Sensor oder ein Partikelsensor genannt werden. Der Empfänger 120 kann eine weitere Einheit im Fahrzeug sein, beispielsweise ein Motorsteuergerät (ECU, engine control unit) oder eine andere zentrale Steuereinheit, welche Daten von mehreren Einheiten sammelt, verarbeitet und Signale zur Ansteuerung ausgibt. Dabei versteht es sich, dass die hier zugewiesenen Rollen von Sender und Empfänger nicht fest vergeben sein sollen, sondern nur in Bezug auf das nachstehend beschriebene Verfahren angegeben sind, und dass jede Einheit sowohl Sender als auch Empfänger sein könnte, entweder gleichzeitig oder auch wechselnd. Ebenso können üblicherweise weitere Einheiten mit dem Bussystem verbunden sein, die ebenfalls Daten und Signale an andere Einheiten oder auch an eine der beiden am hier beschriebenen Verfahren beteiligten Einheiten übertragen oder Daten von diesen empfangen können.
-
Auf dem Bussystem werden nun Daten 110 von dem Sender 100 zu dem Empfänger 120 übermittelt. Insbesondere kann es sich dabei um Daten handeln, die wiederholt und/oder regelmäßig übertragen werden, beispielsweise Messdaten eines Sensors, die kontinuierlich von einer empfangenden Steuereinheit ausgewertet werden, oder Steuersignale, die in bestimmten Abständen von einer Steuereinheit an einen Aktor gesendet werden. Dabei können die Daten in festen oder variierenden Zeitabständen gesendet werden. Es kann sich also um zyklische Nachrichten 114 handeln, die jeweils in vorgegebenen Zeitabständen bzw. in vorgegebenen Frames auf dem Bussystem gesendet werden, oder auch um Nachrichten, die in Reaktion auf bestimmte Anforderungen oder Ereignisse übermittelt werden.
-
Ein beispielhafter Ablauf von Verfahrensschritten in dem System aus 1 wird nun unter zusätzlichem Verweis auf 3 beschrieben. Dabei sind die Verfahrensschritte auf Seite eines Senders auf der linken Seite dargestellt, während auf der rechten Seite die beispielhaften Verfahrensschritte eines Empfängers gezeigt sind. Die gestrichelten Pfeile deuten die Übermittlung von Nachrichten zwischen den beiden Einheiten an.
-
Daten 110a, 110b, ... 100n, die in dem Sender 100 zur Übermittlung bereit stehen oder z.B. unmittelbar durch einen Sensor erfasst werden, werden auf geeignete Weise an den Empfänger 120 über die Busleitung in Schritt 300 übertragen. Insbesondere kann es sich um Daten handeln, die regelmäßig übertragen werden, etwa Sensormesswerte, die zur Steuerung von Komponenten kontinuierlich durch eine Steuereinheit ausgewertet werden sollen und optional mit weiteren Daten verknüpft werden. Beispielsweise könnte vorgesehen sein, dass ein Messwert eines Stickoxid-Sensors im Abgassystem in vorgegebenen Abständen, z.B. alle 10 ms, erfasst und von einem Sensorsteuergerät des Stickoxid-Sensors an eine zentrale Steuereinheit gesendet wird. Natürlich ist die Zeitangabe nur beispielhaft zu verstehen und kann länger oder kürzer vorgegeben sein. Die zu sendenden Daten 110a, 110b, ... 110n können dazu jeweils auf geeignete Weise in eine Nachricht 114a, 114b, ... 114n eingebettet sein, deren Aufbau je nach verwendetem Protokoll unterschiedlich sein kann und die beispielsweise verschiedene Kennzeichnungsfelder, Adressierungsdaten, Header oder andere Merkmale aufweisen kann. Als Nachricht 114 kann dabei jedes Element verstanden werden, das die Übermittlung von Daten über eine geeignete Verbindung, wie etwa eine Busleitung, gemäß geeigneter Protokolle ermöglicht, also z.B. ein Frame in einem CAN-Bus-System.
-
Dabei kann die Häufigkeit der Datenübertragung der Häufigkeit der Datenerfassung entsprechen, oder es können auch unabhängige Zeitabstände gewählt werden, so dass die an den Empfänger 120 übermittelten Daten beispielsweise in zeitlich fest geplanten Nachrichten 114 bzw. Frames übertragen werden. Ebenso könnten auch Daten zunächst lokal beim Sender 100 gesammelt werden, etwa mehrere Messwerte eines Sensors, oder noch weiter verarbeitet werden, bevor sie an den Empfänger 120 übermittelt werden.
-
Die Daten 110a, 110b, 110n, die an den Empfänger in Schritt 300 übermittelt werden, können außerdem in Schritt 310 in einer geeigneten Speichereinheit 130 zumindest vorübergehend zwischengespeichert werden. Dabei eignet sich jede flüchtige oder nichtflüchtige Speichereinheit, in der die Daten zur weiteren Verwendung gespeichert werden können. Auf diese Weise liegen in der Speichereinheit die nacheinander versendeten Daten vor. Es kann beispielsweise auch ein Ringspeicher oder ein ähnliches Speicherelement eingesetzt werden, bei dem die gespeicherten Daten nach einer gewissen Anzahl von Einträgen überschrieben werden. In anderen Ausführungsformen können die Daten optional aber auch langfristig gespeichert werden.
-
Es kann nun also eine vorgegebene Anzahl n von Datennachrichten 114a, 114b, ... 114n, die wie beschrieben zu sendende Daten 110a, 110b, ...110n beinhalten, an den Empfänger nacheinander übermittelt und im Sender abgespeichert werden. Diese vorgegebene Anzahl kann fest im System vorgegeben sein, beispielsweise im Sender 100 fest abgespeichert sein bzw. in einem Protokoll vorgegeben sein, oder kann alternativ auch angepasst werden, beispielsweise auf Anforderung des Empfängers 120 oder in Abhängigkeit von anderen Ereignissen.
-
In Schritt 320 kann über einen Zähler geprüft werden, ob bereits die vorgegebene Zahl von Nachrichten gesendet und abgespeichert wurde; falls die vorgegebene Zahl noch nicht erreicht ist, wird erneut gemäß den Schritten 300 und 310 eine weitere Datennachricht gesendet und gespeichert. Bei einem überschreibenden Speicherelement 130 sollte daher mindestens ausreichender Speicherplatz für eine Anzahl von Einträgen, die der vorgegebenen Anzahl n von Datennachrichten 114a, 114b, ... 114n entspricht, vorhanden sein; je nach Variante kann aber auch eine höhere Speicherkapazität erforderlich sein, falls z.B. Daten aus einem vorherigen Prüfvorgang wiederholt übermittelt werden sollen und zu diesem Zweck erneut abgerufen werden sollen.
-
Nachdem die vorgegebene Anzahl n von Nachrichten versendet und gespeichert wurde, kann von einer dazu geeigneten Einheit im Sender, z.B. einem Prozessor oder einer anderen Recheneinheit, in Schritt 330 ein Prüfwert 140 auf Grundlage der gespeicherten Datensätze gebildet werden. In den Prüfwert 140 sollen die Daten mit einbezogen werden, die bisher abgesendet wurden und noch nicht durch einen vorherigen Prüfwert erfolgreich beim Empfänger validiert wurden, und/oder die nicht in einem vorherigen Prüfwert verwendet wurden.
-
Zur Bildung des Prüfwerts 140 in Schritt 330 sind verschiedene Varianten denkbar. Beispielsweise kann eine einfache Aufsummierung der Datenwerte aller Daten 110a, 11 0b, .... 110n, die zu der vorgegebenen Anzahl von versendeten Datennachrichten 114a, 114b, ..., 114n gehören, vorgenommen werden, so dass eine Prüfsumme erhalten wird. Ebenso sollen aber unter einem Prüfwert 140 komplexere Verfahren verstanden werden, die eine Integritätsüberprüfung der Daten ermöglichen, wie etwa andere Berechnungsverfahren als eine reine Addition, oder auch die Anwendung einer Hashfunktion auf die Daten zum Gewinnen eines Hashwerts.
-
Dabei kann der Prüfwert 140 aus den reinen Daten (z.B. Messwerten) gebildet werden, die dann in entsprechenden Nachrichten bzw. Frames über den Bus übertragen werden, oder der Prüfwert kann aus der gesamten Nachricht gebildet werden, in der die Daten enthalten sind. Entsprechend können auch in Schritt 310 für jede versendete Nachricht entweder die reinen Daten (z.B. Sensorwerte) oder die gesamte Datennachricht, in der die Sensorwerte enthalten sind, in dem Zwischenspeicher abgespeichert werden. Durch Verwenden der gesamten Datennachricht bei der Bildung des Prüfwerts muss der Empfänger zur Validierung der enthaltenen Daten diese nicht zuerst aus den Nachrichten extrahieren.
-
Der so gebildete Prüfwert kann nun in Schritt 350 ebenfalls über das Bussystem in einer Prüfwertnachricht 144 an den Empfänger 120 übermittelt werden. Bevorzugt wird der Prüfwert 140 bzw. die Prüfwertnachricht 144 nach der letzten Nachricht 114n, deren Daten in dem Prüfwert enthalten sind, übermittelt, so dass ein klarer Bezug vorhanden ist. Falls beispielsweise die vorgegebene Anzahl von Datennachrichten mit einer bestimmten zyklischen Häufigkeit versendet werden, kann auch für die darauffolgende Prüfwert-Nachricht eine entsprechende zeitliche Vorgabe gewählt werden, z.B. ein Prüfwert nach jeweils 1000 ms.
-
Dabei soll beachtet werden, dass die in der Figur gezeigte Übermittlung von Nachrichten nur schematisch in unterschiedlichen Bereichen dargestellt ist, um die unterschiedlichen Inhalte zu verdeutlichen und bevorzugt auf übliche Weise alle Nachrichten (d.h. Datennachrichten, Prüfwertnachrichten, ...) auf demselben Bussystem übertragen werden können.
-
Falls in einem System zwischen Sender 100 und Empfänger 120 mehr als eine Möglichkeit zur Datenübermittlung besteht, beispielsweise mehrere parallele Übertragungsleitungen oder verschiedene Übertragungswege, können auch verschiedene Leitungen verwendet werden, solange es dem Empfänger möglich ist, den gesendeten Prüfwert den zuvor gesendeten Daten zuzuordnen.
-
Auf der Seite des Empfängers 120 können die Datennachrichten in Schritt 400 nacheinander empfangen und die Daten 110 und/oder die gesamten Nachrichten 114 ebenfalls zumindest vorübergehend in Schritt 410 in einer Speichereinheit 150 abgespeichert werden. Die Anzahl der empfangenen Datennachrichten kann in Schritt 420 beispielsweise explizit überprüft werden, falls eine vorgegebene Anzahl auf der Seite des Empfängers 120 bekannt ist, oder es kann in Schritt 420 geprüft werden, ob eine Prüfwertnachricht empfangen wurde. Falls keine Prüfwertnachricht empfangen wurde, kann in der zweiten Variante das Empfangen und Speichern von Datennachrichten in den Schritten 400 und 410 fortgesetzt werden.
-
Aus den empfangenen Daten oder Datennachrichten kann dann entsprechend wie auf der Seite des Senders in Schritt 430 ein Vergleichsprüfwert 160 gebildet werden. Dabei kann die Art der Prüfwertbildung im Voraus auf beiden Seiten festgelegt sein und/oder beispielsweise in einem Header der Prüfwertnachricht 144 angegeben werden. Der Vergleichsprüfwert wird auf Seite des Empfängers ebenfalls über die vorgegebene Anzahl von empfangenen Datennachrichten 114a, 114b, ..., 114n bzw. Daten 110a, 110b, ... 110n gebildet. Dabei kann diese vorgegebene Anzahl explizit auch auf der Seite des Empfängers festgelegt sein, oder es kann beispielsweise ein Vergleichsprüfwert 160 aus allen Nachrichten bzw. Daten gebildet werden, die zwischen einer vorherigen und einer aktuell empfangenen Prüfwertnachricht 144 empfangen und abgespeichert wurden.
-
Dem Empfänger 120 liegt dann in diesem Beispiel ein auf Seite des Empfängers berechneter Vergleichsprüfwert 160 sowie ein vom Sender 100 gebildeter und in einer Prüfwertnachricht 144 empfangener Prüfwert 140 vor. Diese beiden Prüfwerte können nun in Schritt 450 miteinander verglichen werden. Falls alle vom Sender gesendeten Daten korrekt und ohne Änderungen, Fehler oder Manipulationen empfangen wurden, sollten die Prüfwerte 140 und 160 identisch sein. Damit ist es also möglich, durch die Validierung des empfangenen Prüfwerts 140 mit einem Vergleichsprüfwert 160 die Integrität der zuvor empfangenen Anzahl von Datennachrichten bzw. der in diesen Nachrichten enthaltenen Daten zu beurteilen. Falls die Validierung des Prüfwerts erfolgreich ist, können die empfangenen Daten in Schritt 460 zur weiteren Verwendung freigegeben werden.
-
Falls dagegen die Validierung des Prüfwerts in Schritt 450 ergibt, dass der empfangene Prüfwert und der berechnete Vergleichsprüfwert unterschiedlich sind, muss zunächst von einem Fehler bei der Übertragung ausgegangen werden. Optional können dann verschiedene weitere Schritte eingeleitet werden. Beispielsweise könnte der Sender 100 darüber informiert werden, dass die empfangenen Daten nicht korrekt validiert werden konnten. Je nach Ausführungsform könnte dann der Sender die gesamte Gruppe von Daten, für die der empfangene Prüfwert 140 gültig war, erneut senden und auf beiden Seiten ein neuer Prüfwert gebildet und versendet bzw. empfangen werden. Dies ist insbesondere möglich, wenn die gesendeten Daten beim Sender ausreichend lange gespeichert werden, so dass sie für den erneuten Versand aus dem Speicher 130 abgerufen werden können. Alternativ ist auch denkbar, dass der Empfänger bei einer nicht erfolgreichen Validierung einer Anzahl von empfangenen Daten diese Daten vollständig verwirft und/oder als nicht sicher kennzeichnet, so dass sie nicht zur weiteren Auswertung, z.B. zur Katalysatorregelung oder zur Motorsteuerung verwendet werden.
-
Darüber hinaus könnte bei dem Auftreten von nicht erfolgreichen Validierungen ausgewertet werden, wie häufig diese Fehler auftreten. Auf diese Weise kann beispielsweise erkannt werden, dass ein grundsätzlicher Fehler bei der Übertragung oder eine Manipulation der Werte vorliegt, so dass ein entsprechendes Fehlersignal z.B. für eine Diagnose ausgegeben werden kann. Dafür könnte auch ein Schwellwert optional definiert werden, so dass einzelne Übertragungsfehler noch kein Fehlersignal auslösen, während ein innerhalb eines gewissen Zeitraums häufiger auftretender Validierungsfehler das Fehlersignal auslösen.
-
Optional kann die Prüfwertnachricht 144, welche den Prüfwert 140 enthält, zusätzlich verschlüsselt werden. Dazu kann beispielsweise ein symmetrisches oder asymmetrisches kryptographisches Verschlüsselungssystem genutzt werden. Dazu erforderliche Schritte zum Austausch von Schlüsseln zwischen den Einheiten können beispielsweise bei der Installation von Komponenten am Bussystem vorgenommen werden, aber auch nachträglich, etwa durch den Austausch geeigneter Nachrichten.
-
Der aus den gesammelten Nachrichten gebildete Prüfwert 140 (oder eine Nachricht 144, in der der Prüfwert enthalten ist) kann dann also beispielsweise mit einem öffentlichen Schlüssel 170 eines asymmetrischen Schlüsselpaars des Empfängers, etwa einer zentralen Steuereinheit, vor dem Versand im zusätzlichen Schritt 340 verschlüsselt werden. Der verschlüsselte Prüfwert 140 kann dann wiederum an den Empfänger 120 gesendet werden und dort mit einem zugehörigen privaten Schlüssel 172, der beim Empfänger abgespeichert ist, entschlüsselt und geprüft werden. Bei Verwendung einer symmetrischen Verschlüsselung wird der Prüfwert auf beiden Seiten mit demselben Schlüssel ver- und entschlüsselt. Alternativ oder zusätzlich kann der aus den gesammelten Nachrichten gebildete Prüfwert 140 (oder eine Nachricht 144, in der der Prüfwert enthalten ist) mit einem privaten Schlüssel eines asymmetrischen Schlüsselpaars des Senders vor dem Versand im zusätzlichen Schritt 340 signiert werden. Der signierte Prüfwert 140 kann dann wiederum an den Empfänger 120 gesendet werden und dort mit einem zugehörigen öffentlichen Schlüssel, der beim Empfänger abgespeichert ist, geprüft werden.
-
2 zeigt eine weiterführende Ausführungsform zur Validierung von Nachrichten auf einem Bussystem.
-
Dabei entsprechen die Schritte und Optionen zur Übermittlung der Datennachrichten 214a, 214b, ... 214n zwischen dem Sender 200 und dem Empfänger 200 über den Bus (Schritt 300, 340), zur Zwischenspeicherung der Daten (Schritte 310, 410) in Speichereinheiten 230, 250 und zur Bildung (Schritte 330, 430) und Validierung (Schritt 450, 460) der Prüfwerte aus den Daten 210a, 210b, ... 210 n im Wesentlichen denen, die bereits in Verbindung mit 1 beschrieben wurden und wie sie in 3 dargestellt sind.
-
Zusätzlich kann nun im Empfänger 220 in einem geeigneten Modul 282 eine Zufallszahl 280 erzeugt werden. Für die Erzeugung dieser Zufallszahl können übliche Verfahren angewendet werden. Die Zufallszahl 280 wird dann in einer Nachricht 284 an den Sender gesendet. Dort wird die Zufallszahl zusammen mit den im Speicher 230 abgelegten Daten 210a, 210b, ... 210n bzw. den Datennachrichten 214a, 214b, ... 214n verwendet, um einen Prüfwert 240 zu bilden. Optional kann die Zufallszahl 280 zu diesem Zweck ebenfalls zwischengespeichert werden, z.B. in demselben Speicher 230, in dem die Daten gespeichert werden.
-
Die Zufallszahl 280 kann beispielsweise an einer vorgegebenen Stelle an die für den Prüfwert 240 relevanten Daten angehängt werden, um einen kombinierten Datensatz aus den Daten/Datennachrichten und der Zufallszahl 280 zu bilden, und anschließend kann der Prüfwert 240 wie im vorherigen Beispiel aus diesem kombinierten Datensatz gebildet werden, also z.B. durch Bilden einer Prüfsumme oder eines Hashwerts aus dem kombinierten Datensatz. Dabei kann die Zufallszahl natürlich auf beliebige, im Voraus festgelegte Weise in den kombinierten Datensatz eingehen, also z.B. auch durch Voranstellen oder andere Operationen. Der gebildete Prüfwert wird wie auch im ersten Beispiel in einer Prüfwertnachricht 244 an den Empfänger 220 gesendet.
-
Auch auf der Empfängerseite kann die gebildete Zufallszahl 280 optional zumindest vorübergehend im Speicher 250 gespeichert werden und dann entsprechend dem Beispiel aus 1 mit den empfangenen Daten 210a, 210b, ... 210n oder Datennachrichten 214a, 214b, ... 214n kombiniert werden, um einen Vergleichsprüfwert 260 aus den empfangenen Daten zu bilden. Dabei sollte durch eine entsprechende Festlegung oder z.B. durch eine Angabe in einer der versendeten Nachrichten sichergestellt sein, dass die Kombination der Zufallszahl mit den Daten beim Sender 200 und beim Empfänger 220 auf dieselbe Weise erfolgt. Anschließend können der so gebildete Vergleichsprüfwert 260 auf der Empfängerseite und der Prüfwert 240, der vom Empfänger in der Prüfwertnachricht 244 empfangen wurde, miteinander verglichen werden, um die Integrität der zugehörigen Daten zu validieren.
-
Auch hier kann der vom Sender gebildete Prüfwert 240 zunächst in Schritt 340 zusätzlich mit einem Schlüssel 270 verschlüsselt werden, während der Vergleichsprüfiniert 260 vom Empfänger in Schritt 440 mit einem Schlüssel 272 verschlüsselt wird. Der Abgleich der Prüfwerte kann auf dieselben verschiedenen Arten stattfinden wie bereits zu 1 erläutert.
-
Dabei kann für jeden Prüfwert 240, d.h. für jede Gruppe 210a, 210b, ... 210n von zu validierenden Daten eine neue Zufallszahl 280 erzeugt, versendet und verwendet werden. Dies könnte beispielsweise erreicht werden, indem das Erzeugen und Versenden einer neuen Zufallszahl im Empfänger 220 ausgelöst wird, sobald vom Sender 200 eine Nachricht 244 mit einem aktuellen Prüfwert 240 empfangen wurde, oder alternativ sobald der aktuelle Prüfwert erfolgreich in Schritt 450 bzw. 460 validiert wurde. Dabei sollte unter Berücksichtigung der Wiederholungsraten der Datenübertragungen und der Zahl der Daten, die in jeweils einen Prüfwert eingehen, sichergestellt sein, dass die neue Zufallszahl rechtzeitig beim Sender eintrifft, um dort den nächsten Prüfwert zu bilden. Es kann auch in einer weiteren Ausführungsoption festgelegt sein, dass bei Fehlen einer neuen Zufallszahl erneut die letzte Zufallszahl zur Bildung eines Prüfwerts verwendet wird; entsprechend soll dann auf Seiten des Empfängers bei Fehlschlagen der Prüfung 450 des Prüfwerts mit der aktuellen Zufallszahl ein Vergleichsprüfiniert mit der vorherigen Zufallszahl gebildet und überprüft werden. Eine nicht rechtzeitige Übertragung könnte beispielsweise dann stattfinden, falls es sich um ein Bussystem mit Vorgaben zur Priorisierung von Nachrichten handelt und die Priorisierung eine Verschiebung der Sendezeitpunkte bewirkt. Alternativ könnte festgelegt sein, dass der Empfänger die Bildung eines neuen Prüfwerts so lange verzögert, bis eine neue Zufallszahl beim Empfänger eingetroffen ist. Optional kann auch der Versand weiterer Datennachrichten dann entsprechend verzögert werden.
-
Weitere Abwandlungen der beschriebenen Verfahren sind ebenfalls möglich. Beispielsweise könnte in der Prüfwertnachricht 144, 244, welche den Prüfwert 140, 240 umfasst, unter anderem ein Zahlenwert angegeben sein, aus dem erkennbar ist, wieviele und/oder welche Datennachrichten in den Prüfwert eingegangen sind. So könnte beispielsweise angegeben sein, dass sich der Prüfwert auf eine bestimmte Anzahl n von Datennachrichten bezieht, so dass der Empfänger dann davon ausgehen kann, dass die letzten n Datennachrichten in den Prüfwert eingegangen sind. Alternativ könnten auch Zeitstempel oder Kennungen der Datennachrichten, die in den Prüfwert eingangen sind, in der Nachricht enthalten sind, soweit solche Datenelemente im verwendeten System anwendbar sind. Eine Nutzung von Kennungen oder Zeitstempeln würde ermöglichen, dass eine korrekte Validierung der Daten auch möglich ist, falls die Datennachrichten und der zugehörige Prüfwert nicht unmittelbar nacheinander oder nicht synchron über unterschiedliche Übertragungswege an den Empfänger übermittelt werden oder falls Verzögerungen beim Versand der Datennachrichten oder des Prüfwerts auftreten.
-
Alternativ oder zusätzlich zu dem oben vorgestellten Verfahren können die Zufallszahl und/oder die Prüfwertnachricht in Zufallszahlteile bzw. Prüfwertteile aufgeteilt werden, sodass die Zufallszahlteile bzw. Prüfwertteile in sowieso zu übertragende Nachrichten, beispielsweise CAN-Frames, integriert werden können. Zweckmäßigerweise wird die Größe der Zufallszahlteile bzw. der Prüfwertteile dabei so gewählt, dass die Zufallszahlteile bzw. Prüfwertteile unter Ausnutzung der durch die sowieso ausgetauschten Nachrichten nicht ausgenutzten Bereiche in dem zugehörigen Datenfeld, beispielsweise dem Datenfeld eines CAN-Frames, integriert werden können. Somit können die Zufallszahl und/oder der Prüfwert mittels mehrerer Nachrichten übermittelt werden, sodass keine zusätzlichen Nachrichten, beispielsweise CAN-Frames, übermittelt werden müssen.