-
Die vorliegende Erfindung betrifft ein Verfahren zum Überprüfen eines mehrere Einzelkomponenten aufweisenden Systems zum gemeinsamen Durchführen einer Funktion durch die mehreren Einzelkomponenten sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung.
-
Hintergrund der Erfindung
-
Sicherheitskritische Anwendungen wie Fahrzeuge sind heutzutage immer stärker mit externen Systemen, wie z.B. Cloud- oder Edge-Systemen vernetzt. Es ist absehbar, dass diese Vernetzung so weit geht, dass auch sicherheitskritische Funktionen und Berechnungen aus dem Fahrzeug in die Cloud oder Edge verlagert werden. Damit dies auch für sicherheitsbezogene Anwendungen nutzbar ist, müssen darin wirksame Sicherheitsmechanismen implementiert werden. Heutige Cloud-Computing-Technologien bieten bereits entsprechende Diagnose- und Robustheitsmechanismen (z.B. Speicherüberwachung bzw. -verteilung) auf technischem Level, diese wurden und werden aber üblicherweise nicht nach einem Sicherheitsstandard entwickelt, sondern sind sogenannte „Commercial Off-The-Shelf“ (COTS) Komponenten.
-
Diese Sicherheitsmechanismen können also auch selbst Fehler enthalten, sogenannte Latentfehler, die zwar von sich aus nicht zu einer Sicherheitszielverletzung führen, jedoch in Kombination mit einem weiteren Einzelfehler gefährlich sein können. Latente Fehler sind nicht sofort sichtbar und kompromittieren die Sicherheitsfunktionen des Systems nicht sofort, sondern werden erst in Kombination mit weiteren Fehlern kritisch. Typische Beispiele aus Embedded Systemen hierfür sind Überwachungsfunktionen, die „stuck-at“ sind, also immer ein „fehlerfrei“-Signal aussenden, auch wenn Fehler im überwachten Element (z.B. RAM) auftreten, oder Fehler auf dem Abschaltpfad, die verhindern, dass das System beim Auftreten eines Einzelfehlers in den sicheren Zustand übergehen kann (z.B. Abschaltung der Ansteuersignale eines Motors).
-
Die ISO 26262:2018 fordert daher ab einem gewissen Sicherheitsintegritätslevel (ASIL) explizit die Überwachung auf Latentfehler und die Erreichung von Zielwerten der darauf bezogenen HW-Metrik (LFM: Latent-Fault Metric).
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zum Überprüfen eines mehrere Einzelkomponenten aufweisenden Systems zum gemeinsamen Durchführen einer Funktion durch die mehreren Einzelkomponenten 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.
-
In verteilten Systemen, wie beispielsweise in Verweis auf 1 beschrieben, ist eine zentrale Überwachung der Funktionsfähigkeit aller Sicherheitsmechanismen schwierig bis ausgeschlossen. Stattdessen müssen sich Elemente in solchen Systemen herkömmlicherweise „blind“ auf die Funktionsfähigkeit der anderen Elemente verlassen. Auch eine zentrale Bestimmung von Latentfehlermetriken entlang von Signalketten ist in verteilten Systemen nicht möglich.
-
Hier setzt nun die Erfindung an und beschreibt - anstelle einer zentralen Diagnose - eine dezentrale, verteile Diagnose und Kommunikation von Latentfehlern entlang der jeweiligen Signalkette bzw. redundanten Signalpfaden.
-
Im Einzelnen wird ein Verfahren insbesondere für die verteilte Ausführung einer sicherheitskritischen Funktion vorgestellt, bei dem die Einzelkomponenten in einem Prüfzustand initialisiert werden. Bei dem Prüfzustand handelt es sich insbesondere um einen sicheren Zustand, d.h. einen Zustand, in dem Fehler einzelner Komponenten keine Auswirkungen auf die Funktionsfähigkeit des Systems haben. Das System wird als Netzwerk aus den mehreren Einzelkomponenten gebildet, und die mehreren Einzelkomponenten werden auf Latentfehler geprüft, wobei ein Latentfehlerstatus für jede der mehreren Einzelkomponenten erhalten wird.
-
Es wird bestimmt, ob die aktuellen Latentfehlerstatus akzeptabel für die durchzuführende Funktion sind, und wenn die die aktuellen Latentfehlerstatus akzeptabel für die durchzuführende Funktion sind, wird ein Übergang der Einzelkomponenten aus dem Prüfzustand in einen Betriebszustand freigegeben und die durchzuführende Funktion initiiert. Andernfalls kann eine Fehlerreaktion eingeleitet werden.
-
Vorteilhafterweise umfasst das Durchführen einer Latentfehlerprüfung wenigstens einer der mehreren Einzelkomponenten zum Erhalten des Latentfehlerstatus der wenigstens einen der mehreren Einzelkomponenten wenigstens eines der folgenden: Prüfen eines Abschaltpfads, Durchführen einer Watchdog-Prüfung, Durchführen einer Speicherprüfung, Durchführen einer Kommunikationsprüfung, Durchführen einer Programmablaufkontrolle
-
Beim Prüfen eines Abschaltpfads wird insbesondere ein Übergang in einen sicheren Zustand („safe state“) veranlasst, d.h. die Einzelkomponente wird beispielsweise in dem Prüfzustand initialisiert und anschließend wird die Deaktivierbarkeit (Übergang in einen „safe state“) innerhalb eines vorgegebenen Zeitraums („Fault Tolerant Time Interval“) geprüft.
-
Das Durchführen einer Watchdog-Prüfung kann eine Prüfung umfassen, ob ein in der Einzelkomponente vorhandener Watchdog reagiert, z.B. eine Hochzählung eines Fehlerzählers, eine Fehlermeldung nach extern, eine Abschaltung eines Systems, veranlasst, indem dem Watchdog gezielt ein Fehlverhalten vorgespielt wird, z.B. falsche oder verspätete Antworten gegeben werden. Der Begriff Watchdog (englisch für Wachhund; auch watchdog timer genannt) bezeichnet eine Funktion zur Ausfallerkennung eines digitalen Systems, vorwiegend in Steuerungsanwendungen. Wird dabei eine mögliche Fehlfunktion erkannt, so wird entweder dies gemäß Systemvereinbarung an andere Komponenten signalisiert (z. B. Umschalten auf ein redundantes System), eine geeignete Sprunganweisung bzw. ein Reset zur selbsttätigen Behebung des Ausfalls eingeleitet, oder ein sicheres Abschalten veranlasst.
-
Das Durchführen einer Speicherprüfung kann insbesondere die Prüfung der Beschreibbarkeit bzw. der Funktionsfähigkeit von Speicherschutzmechanismen (z.B. ECC, EDC) umfassen.
-
Das Durchführen einer Kommunikations-Prüfung kann eine Prüfung umfassen, ob eine in der Einzelkomponente vorhandene Kommunikationsabsicherung reagiert, z.B. eine Hochzählung eines Fehlerzählers, eine Fehlermeldung nach extern, eine Abschaltung eines Systems veranlasst, indem fehlerbehaftete Endezu-Ende-Absicherungsmechanismen (z.B. Botschaftszähler, Checksumme, Timeout-Monitoring) gezielt erzeugt werden.
-
Das Durchführen einer Programmablaufkontrolle kann eine Prüfung umfassen ob eine in der Einzelkomponente vorhandene Programmablaufkontrolle reagiert, indem beispielsweise Berechnungen gezielt falsch sequenziert werden, d.h. in eine fehlerhafte Reihenfolge gebracht werden.
-
Es wäre auch denkbar, dass die Parameter der Latentfehlerdiagnosen, z.B. erlaubte Latenz im Timeout-Monitoring, erlaubte Latenz in der Systemabschaltung, erlaubte Anzahl von Fehlern in der Speicherüberwachung, erlaubte Abweichungen vom definierten Programmablauf usw., abhängig von der auszuführenden sicherheitskritischen Funktion angepasst werden. Beispielsweise kann eine Funktion, die beim autonomen Fahren verwendet wird, sicherheitskritischer sein und daher weniger Latenzen usw. zulassen als beispielsweise eine Funktion des Navigationssystems oder eine Multi-Media-Funktion.
-
Vorzugsweise umfasst das Prüfen der mehreren Einzelkomponenten auf Latentfehler ein Abfragen des Latentfehlerstatus einer ersten der mehreren Einzelkomponenten durch eine zweite der mehreren Einzelkomponenten. Insbesondere kann dadurch eine gegenseitige Überwachung erfolgen. Der Latentfehlerstatus kann beispielsweise „Latentfehler präsent“, „Verdacht auf Latentfehler“ oder „keine Latentfehler“ umfassen, wobei beispielsweise ein Wert zwischen „0“ (frei) und „1“ (sicherer Fehler) mit beliebigen Unterteilungen ausgegeben werden kann. Vorteilhafterweise wird auch bewertet, z.B. über Zeitstempel, ob die Status veraltet sind, d.h. eine neue Latentfehlerdiagnose angestoßen werden sollte.
-
Alternativ oder zusätzlich zu einem Abfragen des Latentfehlerstatus kann auch ein Durchführen einer Latentfehlerprüfung einer ersten der mehreren Einzelkomponenten durch eine zweite der mehreren Einzelkomponenten erfolgen, d.h. die zweite Einzelkomponente erfragt nicht das Prüfungsergebnis der ersten Einzelkomponente, sondern prüft diese direkt. Die erste und die zweite Einzelkomponente können beispielsweise beliebige ausgewählt sein aus Recheneinheit (Steuergerät) im Fahrzeug, Sensor im Fahrzeug, Recheneinheit in der Umgebung des Fahrzeugs, z.B. in einer Infrastrukturkomponente (z.B. sog. „Edge“-Recheneinheit), Recheneinheit in einem Rechenzentrum (z.B. sog. „Cloud“-Recheneinheit).
-
Für die Erfindung besonders bevorzugte Fehlerreaktionen können auf unterschiedlichen Ebenen erfolgen. Beispielsweise kann eine Einzelkomponente wie eine Recheneinheit ein Update einer Software (z.B. Firmware usw.) anfordern, oder die für die Sicherheitsfunktionen reservierten Ressourcen (z.B. RAM, ROM, CPU usw.) verändern.
-
Auf Netzwerkebene kann anstelle einer geplanten, aber fehlerhaften Einzelkomponente eine andere, fehlerfreie Einzelkomponente für die Funktionsdurchführung verwendet werden. Alternativ oder zusätzlich kann der Fehlerstatus im Netzwerk kommuniziert werden, so dass er auch für andere geplante Funktionsdurchführungen bekannt ist. Auch ein Eintrag in einen globalen Fehlerspeicher kann erfolgen, insbesondere unter Berücksichtigung von Regeln für das Eintragen und Überschreiben von Fehlerstatus (z.B. auf Basis der Integrität / Vertrauenswürdigkeit des Eintragenden).
-
Auf Systemebene kann ein Verschieben von Funktionen zu anderen Systemen erfolgen. Alternativ oder zusätzlich können Mitigationsmaßnahmen, z.B. eine Einschränkung des Verhaltens, ein Ansteuern einer sicheren Position, z.B. auch in der Nähe einer Werkstatt, eingeleitet werden. Zur Gewährleistung des Übergangs in den sicheren Zustand können diverse Abschaltpfade (z.B. SW-Pfade oder physikalische Systeme) kombiniert werden.
-
Die Erfindung erlaubt somit insbesondere:
- 1) Gegenseitige Diagnosen zwischen den Elementen des Gesamtsystems, beispielsweise Komponente - Komponente, Cloud/Edge - Cloud/Edge, Cloud/Edge
- - Fahrzeug, Cloud/Edge - Sensor, Fahrzeug - Sensor usw.
- 2) Die Kommunikation von entdeckten Fehlern an alle (oder verbundene) Systeme bzw. Komponenten des Gesamtsystems, z.B. über
- a) ein dezentrales Fehlermanagement, z.B. Broadcasting, pub/sub des aktuellen Status, Austausch von Metadaten zwischen verbundenen Elementen
- b) ein zentrales Fehlermanagement, z.B. Speicherung des aktuellen Status in einem globalen Speicher, der bei Bedarf abgefragt werden kann
- 3) Die Nutzung von Elementen für die Ausführung von sicherheitsbezogenen Funktionen erst nach (negativer) Prüfung der mit diesem Element verbundenen Sicherheitsmechanismen auf Latentfehler.
- 4) Die Mitigation von entdeckten Latentfehlern über Nutzung der im Gesamtsystem verfügbaren Elemente, z.B. zum Verschieben von Funktionen, damit Updates / Reinstall durchgeführt werden können.
-
Die Erfindung führt vorteilhaft zu einer Reduzierung unentdeckter Latentfehler in einem verteilen System und zur Erhöhung der Sicherheit bzw. Robustheit gegen Mehrfachfehler. Weiterhin wird ein Übergang von sicherheitskritischen Systemen / Aktuatoren in den sicheren Zustand in einem verteilen System gewährleistet. Sie schafft weiterhin die Möglichkeit, für verteilte Funktionen Konfigurationen in verteilten Systemen zu wählen, welche einen geforderten Maximalwert der Latentfehlermetrik unterschreiten. Als Nebeneffekt wird es auch einem Angreifer erschwert, in diese gegenseitige Diagnose eingebundene Module zu ersetzen (erhöht die „Security“) oder unerkannt falsche Botschaften (Spoofing) in das Netzwerk einzubringen.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Fahrzeugs, ist, oder eine erfindungsgemäße Anordnung aus mehreren Recheneinheiten, 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. Schließlich ist ein maschinenlesbares Speichermedium vorgesehen mit einem darauf gespeicherten Computerprogramm wie oben beschrieben. Geeignete Speichermedien bzw. 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. Ein solcher Download kann dabei drahtgebunden bzw. kabelgebunden oder drahtlos (z.B. über ein WLAN-Netz, eine 3G-, 4G-, 5G- oder 6G-Verbindung, etc.) erfolgen.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand eines Ausführungsbeispiels/von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
- 1 zeigt schematisch ein System zum Durchführen einer Funktion durch mehrere Einzelkomponenten, wie es der vorliegenden Erfindung zugrunde liegen kann.
- 2 zeigt schematisch in einem Flussdiagramm eine bevorzugte Ausführungsform eines erfindungsgemäßen Verfahrens.
-
Ausführungsform(en) der Erfindung
-
In 1 ist beispielhaft eine Anordnung gemäß einer bevorzugten Ausführungsform der Erfindung dargestellt, bei der die Erfindung vorteilhaft eingesetzt werden kann. Insbesondere sind dort mehrere Einzelkomponenten gezeigt, die jeweils zumindest eine Recheneinheit aufweisen bzw. Rechenkapazität zur Verfügung stellen können. Dabei handelt es sich insbesondere um Recheneinheiten 111, 112, 113 usw. in einem Fahrzeug 110, welches ohne Einschränkung der Allgemeinheit einen Kern bzw. eine Zentrale eines Systems zum Durchführen einer Funktion durch mehrere Einzelkomponenten darstellen soll. Bei den Recheneinheiten kann es sich insbesondere um einen sogenannten Fahrzeugcomputer, Entertainmentsysteme, intelligente Sensorik, Steuergeräte usw. handeln.
-
Beispielsweise kann das Fahrzeug 110 bei einer üblichen Fahrt mit anderen Fahrzeugen 120 und darin vorhandenen Recheneinheiten, Infrastrukturkomponenten 130 wie z.B. Verkehrsleitsysteme, Ladesäulen, Verkehrssignalen und darin vorhandenen Recheneinheiten (sog. „Edge“-Recheneinheiten), Recheneinheiten in einem Rechenzentrum 140 (sog. „Cloud“-Recheneinheiten) usw. in Kontakt kommen. Die eigenen und fremden Recheneinheiten weisen jeweils eine bestimmte Rechenkapazität auf, die sie jedoch nicht dauerhaft selbst benutzen und somit auch extern zur Verfügung stellen können. Durch gemeinsame Nutzung der von zahlreichen Einzelkomponenten bereitgestellten Rechenkapazität können beispielsweise auch aufwendige Funktionen in einem Fahrzeug ausgeführt werden, dessen eigene Rechenkapazitäten dazu nicht ausreichen würden.
-
In Abhängigkeit davon, was die durchzuführende Funktion beinhaltet, ist es jedoch notwendig, dass die an der Funktionsdurchführung beteiligten Einzelkomponenten bzw. Recheneinheiten möglichst (oder sicher) fehlerfrei arbeiten. Dies kann gemäß einer bevorzugten Ausführungsform der Erfindung, die im Folgenden unter Bezugnahme auf 2 erläutert wird, überprüft werden.
-
Insbesondere ist dabei eine (beliebige) Recheneinheit, beispielsweise in dem Fahrzeug oder auch extern, als übergeordnete Instanz vorgesehen, welche die folgenden Schritte überwacht, anstößt oder selbst ausführt.
-
In einem Schritt 201 werden die Einzelkomponenten in einem Prüfzustand initialisiert, d.h. in einem Zustand, in dem mögliche Fehler keine systemweiten Auswirkungen haben, da insbesondere die geplante (möglicherweise sicherheitskritische) Funktion noch nicht durchgeführt wird.
-
In einem Schritt 202 wird aus den vorhandenen mehreren Einzelkomponenten das System als Netzwerk, d.h. als miteinander in Datenkommunikation stehende Komponenten, gebildet. Insbesondere werden dabei aus allen theoretisch verfügbaren Einzelkomponenten geeignete ausgewählt, wobei diese Auswahl beispielsweise anhand der verfügbaren Rechenkapazität, der notwendigen Datenübertragungsdauer zwischen den Einzelkomponenten usw. getroffen werden kann.
-
In einem Schritt 203 werden die Einzelkomponenten auf Latentfehler überprüft und dabei wird für jede der Einzelkomponenten ein Latentfehlerstatus erhalten. Der Latentfehlerstatus kann beispielsweise ein Zahlenwert zwischen 0 und 1 sein, wobei 0 bedeutet, dass die Einzelkomponente sicher latentfehlerfrei ist, und 1 bedeutet, dass die Einzelkomponente sicher Latentfehler aufweist. Werte zwischen 0 und 1 können eine Wahrscheinlichkeit für Latentfehler oder Schwere von Latentfehlern charakterisieren.
-
In einem Schritt 204 wird bestimmt, ob die aktuellen Latentfehlerstatus akzeptabel für die durchzuführende Funktion sind. Beispielsweise können sicherheitskritische Funktionen einen geringeren Latentfehlerstatus erfordern als Funktionen, die beispielsweise den Fahrkomfort erhöhen oder der Unterhaltung dienen.
-
Wenn die aktuellen Latentfehlerstatus akzeptabel für die durchzuführende Funktion sind (Zweig „1“), wird in einem Schritt 205 ein Übergang der Einzelkomponenten aus dem Prüfzustand in einen Betriebszustand freigegeben und die durchzuführende Funktion initiiert.
-
Wenn die aktuellen Latentfehlerstatus nicht akzeptabel für die durchzuführende Funktion sind (Zweig „0“), wird in Schritt 206 eine Fehlerreaktion ausgeführt.
-
Beispielsweise kann eine Einzelkomponente wie eine Recheneinheit ein Update einer Software (z.B. Firmware usw.) anfordern, oder die für die Sicherheitsfunktionen reservierten Ressourcen (z.B. RAM, ROM, CPU usw.) verändern.
-
Auf Netzwerkebene kann anstelle einer geplanten, aber fehlerhaften Einzelkomponente eine andere, fehlerfreie Einzelkomponente für die Funktionsdurchführung verwendet werden. Alternativ oder zusätzlich kann der Fehlerstatus im Netzwerk kommuniziert werden, so dass er auch für andere geplante Funktionsdurchführungen bekannt ist. Auch ein Eintrag in einen globalen Fehlerspeicher kann erfolgen, insbesondere unter Berücksichtigung von Regeln für das Eintragen und Überschreiben von Fehlerstatus (z.B. auf Basis der Integrität / Vertrauenswürdigkeit des Eintragenden).
-
Auf Systemebene kann ein Verschieben von Funktionen zu anderen Systemen erfolgen. Alternativ oder zusätzlich können Mitigationsmaßnahmen, z.B. eine Einschränkung des Verhaltens, ein Ansteuern einer sicheren Position, z.B. auch in der Nähe einer Werkstatt, eingeleitet werden. Zur Gewährleistung des Übergangs in den sicheren Zustand können diverse Abschaltpfade (z.B. SW-Pfade oder physikalische Systeme) kombiniert werden.