-
Die Erfindung betrifft ein Verfahren zum Starten einer Datenverarbeitungseinrichtung, wobei in einem Datenspeicher der Datenverarbeitungseinrichtung Programmdaten, die mehrere Datensegmente umfassen, eine jeweilige dem jeweiligen Datensegment zugeordnete Prüfinformation und eine Validierungsinformation gespeichert sind. Daneben betrifft die Erfindung eine Datenverarbeitungseinrichtung und ein Kraftfahrzeug.
-
In vielen Anwendungsbereichen, insbesondere in Embedded-Anwendungen, beispielsweise im Kraftfahrzeugbereich, ist es häufig hochrelevant, die Integrität und Authentizität von ausgeführter Software sicherzustellen, um diese beispielsweise vor Speicherfehlern und vor Manipulationen durch Angreifer zu schützen. In einigen Fällen kann es hierzu ausreichen, entsprechende Softwarekomponenten in internen Speichern von Datenverarbeitungseinrichtungen, also beispielsweise in Steuereinrichtungen, beziehungsweise Host-Controllern, zu speichern. Da jedoch häufig eine zusätzliche Sicherung gewünscht ist und zudem der Trend dazu geht, auf interne Flash-Speicher oder Ähnliches zu verzichten beziehungsweise zumindest zusätzliche externe Flash-Speicher zu verwenden, sind häufig weitere Ansätze zur Softwareabsicherung erforderlich.
-
Eine Möglichkeit hierfür ist der sogenannte „Secure-Boot“-Ansatz, bei dem Softwarekomponenten zunächst validiert werden und erst nach der Validierung ein Start der Softwarekomponenten erfolgt. Dieser Ansatz wird beispielsweise in der Druckschrift
US 2019/0018669 A1 genutzt, um ein fehlerhaftes Update zu erkennen und in diesem Fall auf eine valide Vorabversion zurückfallen zu können.
-
Insbesondere dann, wenn relativ umfangreiche Software validiert werden soll, wie es auch in Embedded-Anwendungen zunehmend der Fall ist, und hierbei zudem durch kryptographische Validierungsverfahren, beispielsweise eine Signaturprüfung, eine hohe Manipulationssicherheit erreicht werden soll, kann eine vollständige Validierung der Software vor dem Systemstart aufgrund der in Embedded-Anwendungen häufig recht begrenzten zur Verfügung stehenden Rechenleistung zu einer deutlichen Verzögerung des Systemstarts führen. Dies kann beispielsweise im Kraftfahrzeugbereich zu Akzeptanzproblemen bei Nutzern führen.
-
Ein alternativer Ansatz zur Validierung von Software ist es, diese erst nach dem Starten zu prüfen und bei Fehlern beispielsweise entsprechende Hinweise in einen Fehlerspeicher zu schreiben, Funktionen abzuwerfen oder Ähnliches. Dies wird auch als „Authenticated-Boot“ bezeichnet. Dieser Ansatz vermeidet zwar lange Wartezeiten beim Starten der Software und ist gut geeignet, um Manipulationen, beispielsweise das Erschleichen von an sich gesperrten Funktionalitäten, eine Manipulation von Wartungsintervallen und Ähnliches zu erkennen. Die Softwarekomponente wird bei diesem Ansatz zunächst jedoch in einem undefinierten, potentiell manipulierten Zustand betrieben, so dass dieser Ansatz in vielen Anwendungsfällen, beispielsweise wenn fahrrelevante Funktionen in Kraftfahrzeugen bereitgestellt werden sollen, nicht oder zumindest nicht ohne weiteres nutzbar ist.
-
Der Erfindung liegt somit die Aufgabe zugrunde, einen verbesserten Ansatz zum Starten einer Datenverarbeitungseinrichtung anzugeben, durch den die jeweiligen Nachteile der beiden obig erläuterten Ansätze „Secure-Boot“ und „Authenticated-Boot“ reduziert oder zumindest vermieden werden können.
-
Die Aufgabe wird durch ein Verfahren der eingangs genannten Art gelöst, wobei bei dem jeweiligen Startvorgang der Datenverarbeitungseinrichtung eine von der Validierungsinformation abhängige Schnellstartbedingung ausgewertet wird,
- - wobei bei Erfüllung der Schnellstartbedingung wenigstens eines der Datensegmente, jedoch nicht alle der Datensegmente, als zu prüfendes Datensegment ausgewählt wird und ein durch die Programmdaten beschriebenes Programm ausschließlich dann gestartet wird, wenn jedes der zu prüfenden Datensegmente eine Prüfbedingung erfüllt, deren Erfüllung zusätzlich von der dem jeweiligen zu prüfenden Datensegment zugeordneten Prüfinformation abhängt, und
- - wobei bei Nichterfüllung der Schnellstartbedingung alle der Datensegmente als zu prüfende Datensegmente ausgewählt werden, wobei das Programm ausschließlich dann gestartet wird und zusätzlich die Validierungsinformation auf einen Wert gesetzt wird, der die Schnellstartbedingung erfüllt, wenn jedes der zu prüfenden Datensegmente die Prüfbedingung erfüllt.
-
Erfindungsgemäß werden die Validierungsinformation beziehungsweise die Auswertung der Schnellstartbedingung genutzt, um zumindest bei einigen Startvorgängen, nämlich dann, wenn die Schnellstartbedingung erfüllt ist, nur eines der Datensegmente beziehungsweise zumindest nicht alle der Datensegmente zu prüfen, wodurch die zur Auswertung der Prüfbedingung für die zu prüfenden Datensegmente erforderliche Zeit merklich reduziert werden kann. Werden beispielsweise nur 20 % oder nur 40 % der Datensegmente geprüft, kann unter Umständen eine Beschleunigung des Startvorgangs um den Faktor 2 bis 5 erreicht werden. Dennoch kann durch die stichprobenartige Prüfung eines oder einiger der Datensegmente eine Vielzahl von Problemen, beispielsweise Speicherfehler, robust erkannt werden.
-
Ein solcher Schnellstart kann dann genutzt werden, wenn bereits mit hoher Wahrscheinlichkeit davon ausgegangen werden kann, dass gültige Programmdaten vorliegen, also insbesondere dann, wenn bei einem vorangehenden Start aufgrund der Nichterfüllung der Schnellstartbedingung alle Datensegmente geprüft wurden und als gültig erkannt wurden. Wird hingegen beispielsweise bei einem im laufenden Betrieb durchgeführten Prüfen weiterer Datensegmente erkannt, dass die Programmdaten potentiell nicht valide sind und/oder bei erfolgter Änderung der Programmdaten, beispielsweise im Rahmen eines Updates, und/oder bei Erkennung anderer Indizien dafür, dass potentielle Manipulationen beziehungsweise Fehler vorliegen könnten, beispielsweise ein Austausch von Komponenten und/oder ein Öffnen eines Gehäuses oder Ähnliches, kann die Validierungsinformation auf einen Wert gesetzt werden, der die Schnellstartbedingung nicht erfüllt, so dass bei einem erneuten Starten wiederum eine vollständige Prüfung der Programmdaten erfolgt.
-
Mit dem vorgeschlagenen Vorgehen kann somit annähernd die gleiche Robustheit erreicht werden wie mit einem „Secure-Boot“-Ansatz, wobei demgegenüber jedoch zumindest bei den meisten Startvorgängen erheblich reduzierte Startzeiten erreicht werden können.
-
Die Schnellstartbedingung kann insbesondere dann erfüllt sein, wenn die Validierungsinformation einen bestimmten Wert aufweist, und ansonsten nicht erfüllt sein. Die Validierungsinformation kann beispielsweise ein Boolescher Wert sein und somit angeben, ob ein Schnellstart erfolgen soll oder nicht. Wird bei einem Schnellstart beziehungsweise bei Erfüllung der Schnellstartbedingung anschließend die Prüfbedingung durch wenigstens eines der zu prüfenden Datensegmente nicht erfüllt, kann insbesondere auch die Validierungsinformation auf einen Wert gesetzt werden, der die Schnellstartbedingung nicht erfüllt. Ein erneutes Starten der Datenverarbeitungseinrichtung führt in diesem Fall stets zu einer Prüfung aller Datensegmente, da bei einem Fehler beziehungsweise einer Manipulation eines Datensegments zumindest auch das Risiko von Fehlern in beziehungsweise Manipulationen an anderen Datensegmenten besteht.
-
Die Prüfbedingung kann im einfachsten Fall eine durch die Prüfinformation vorgegebene Prüfsumme mit der Prüfsumme für das jeweilige Datensegment vergleichen und/oder eine zyklische Redundanzprüfung (englisch: cyclic redundancy check, CRC) mithilfe der Prüfinformation durchführen. Insbesondere dann, wenn auch gezielte Manipulationen an Datensegmenten durch Angreifer robust erkannt werden sollen, kann es jedoch vorteilhaft sein, ergänzend oder alternativ als Prüfinformation einen kryptographischen Hashwert des Datensegments zu nutzen und/oder mithilfe der Prüfinformation eine Signaturprüfung für eine Codesignatur durchzuführen.
-
Wird die Prüfbedingung für wenigstens eines der zu prüfenden Datensegmente nicht erfüllt, wird unabhängig davon, ob die Schnellstartbedingung erfüllt ist, vorzugsweise ein Starten der Datenverarbeitungseinrichtung abgebrochen beziehungsweise die Datenverarbeitungseinrichtung angehalten. Ein solcher Startfehler kann durch ein Ausgabemittel der Datenverarbeitungseinrichtung unmittelbar ausgegeben werden oder an eine andere Einrichtung, beispielsweise eine andere Komponente des Kraftfahrzeugs, kommuniziert werden, beispielsweise um einen Rückfallbetrieb ohne Nutzung der Datenverarbeitungseinrichtung zu ermöglichen beziehungsweise ein Starten der übergeordneten Einrichtung zu unterbinden.
-
Der Datenspeicher kann verschiedene Speichersegmente beziehungsweise Bausteine umfassen, auf die insbesondere durch verschiedene Komponenten der Datenverarbeitungseinrichtung beziehungsweise einer übergeordneten Einrichtung mit unterschiedlichen Rechten zugegriffen werden kann. Umfasst die Datenverarbeitungseinrichtung beispielsweise eine Prüfeinrichtung, durch die die Prüfbedingung ausgewertet wird, und eine Ausführungseinrichtung, die das Programm ausführen soll, ist es beispielsweise möglich, dass die Validierungsinformation ausschließlich durch die Prüfeinrichtung schreibbar ist. Ein Schreibzugriff auf den die Programmdaten beziehungsweise die Prüfinformationen umfassenden Speicherbereich kann beispielsweise nur durch autorisierte Komponenten beziehungsweise Einrichtungen zulässig sein. Beispielsweise kann ein Schreibzugriff bezüglich der Prüfinformationen ausschließlich durch ein Schlüsselverwaltungssystem einer übergeordneten Einrichtung, beispielsweise eines Kraftfahrzeugs, zulässig sein.
-
Die Prüfeinrichtung kann beispielsweise ein Security-Controller sein, der beispielsweise als Trustzone beziehungsweise als Hardware Security Module (HSM) implementiert sein kann. Als Ausführungseinrichtung kann beispielsweise ein Host-Controller verwendet werden. Die Prüfeinrichtung und/oder Ausführungseinrichtung können jeweils durch Micro-Controller aber auch durch andere Prozessoren oder Ähnliches implementiert sein.
-
Vorzugsweise sind zumindest jene Teile des Datenspeichers, die die Programmdaten und die Prüfinformationen und vorzugsweise auch die Validierungsinformation speichern, derart eingerichtet, dass sie auch stromlos beziehungsweise nach Stoppen des Programms ihren Inhalt beibehalten. Beispielsweise kann der Datenspeicher oder können zumindest Teile des Datenspeichers durch einen Flash-Speicher, ein EEPROM oder Ähnliches gebildet sein.
-
Bei Erfüllung der Schnellstartbedingung kann nach dem Starten des Programms für wenigstens ein weiteres der Datensegmente, das vor dem Starten des Programms nicht als zu prüfendes Datensegment ausgewählt war, oder für alle weiteren Datensegmente, die vor dem Starten des Programms nicht als zu prüfende Datensegmente ausgewählt waren, geprüft werden, ob das jeweilige weitere Datensegment und die zugeordnete Prüfinformation die Prüfbedingung erfüllen, wobei bei Nichterfüllung der Prüfbedingung durch das weitere Datensegment oder wenigstens eines der weiteren Datensegmente die Validierungsinformation auf einen Wert gesetzt werden kann, der die Schnellstartbedingung nicht erfüllt, und/oder ein Eintrag in einen Fehlerspeicher der Datenverarbeitungseinrichtung erfolgen kann.
-
Durch die Prüfung des weiteren Datensegments beziehungsweise der weiteren Datensegmente zeitlich nach dem Programmstart führt diese Prüfung nicht zu einer Verzögerung des Startvorgangs und kann im Hintergrund und somit für Nutzer der Datenverarbeitungseinrichtung beziehungsweise einer übergeordneten Einrichtung unerkennbar erfolgen. Im Gegensatz zu dem eingangs erläuterten „Authenticated-Boot“-Ansatz wird jedoch nicht die Prüfung aller Programmdaten nach den Start der Einrichtung verlagert, sondern es werden zumindest Teile der Datensegmente bereits vor Programmstart geprüft, wodurch die Robustheit der Datenverarbeitung selbst bei einem Schnellstart gegenüber üblichen „Authenticated-Boot“-Ansätzen weiter erhöht ist.
-
Die Prüfung des weiteren Datensegments beziehungsweise der weiteren Datensegmente kann unmittelbar oder zumindest zeitnah nach dem Start des Programms erfolgen. Ergänzend oder alternativ kann es jedoch auch vorteilhaft sein, die weiteren, bislang noch nicht geprüften Datensegmente beziehungsweise auch bereits schon geprüfte Datensegmente im laufenden Betrieb wiederholt zeitlich beabstandet zu prüfen, wie im Folgenden noch erläutert wird.
-
Die Änderung der Validierungsinformationen bei Nichterfüllung der Prüfbedingungen durch zumindest eines der weiteren Datensegmente führt dazu, dass beim nächsten Startvorgang der Datenverarbeitungseinrichtung alle Datensegmente geprüft werden und, falls der entsprechende Fehler beziehungsweise eine entsprechende Manipulation bis dorthin nicht behoben sein sollte, ein erneuter Start robust verhindert wird. Je nachdem, inwieweit Manipulationen oder Fehler in bestimmten Datensegmenten die Betriebssicherheit der Datenverarbeitungseinrichtung beziehungsweise einer übergeordneten Einrichtung negativ beeinflussen können, kann es auch ausreichend sein, entsprechende Fehler in einem Fehlerspeicher zu verzeichnen beziehungsweise es kann zweckmäßig sein, eine solche Fehlerprotokollierung ergänzend durchzuführen. Der Fehlerspeicher kann Teil des Datenspeichers sein oder auch separat von diesem ausgebildet sein.
-
Nach dem Programmstart kann zu mehreren zeitlich beabstandeten Prüfzeitpunkten wenigstens ein jeweiliges der Datensegmente ausgewählt und geprüft werden, ob dieses Datensegment und die jeweils zugeordnete Prüfinformation die Prüfbedingung erfüllen, wobei bei Nichterfüllung der Prüfbedingung die Validierungsinformation auf einen Wert gesetzt werden kann, der die Schnellstartbedingungen nicht erfüllt, und/oder einen Eintrag in den oder einen Fehlerspeicher der Datenverarbeitungseinrichtung erfolgen kann.
-
Durch eine Prüfung von Datensegmenten zu mehreren zeitlich beabstandeten Prüfzeitpunkten nach dem Programmstart können mehrere Vorteile erreicht werden. Zum einen kann hierbei die erforderliche Rechenleistung zum Prüfen der Programmdaten oder zumindest der zu prüfenden Teile der Programmdaten über ein längeres Zeitintervall bereitgestellt werden, indem beispielsweise periodisch oder auch dann, wenn gerade freie Rechenleistung zur Verfügung steht, eine Prüfung eines oder mehrerer Datensegmente erfolgt. Zum anderen können auch über längere Betriebszeiträume hinweg Datensegmente wiederholt geprüft werden, um auch Manipulationen oder Fehler im laufenden Betrieb erkennen zu können. Zweiteres kann auch dann zweckmäßig sein, wenn beim ursprünglichen Start der Datenverarbeitungseinrichtung die Schnellstartbedingung nicht erfüllt war.
-
Für zumindest einen Teil der Prüfzeitpunkte können voneinander unterschiedliche Datensegmente ausgewählt werden, für die die Erfüllung der Prüfbedingungen geprüft wird. Dies ermöglicht es insbesondere, die gesamten Programmdaten über mehrere Prüfzeitpunkte hinweg verteilt zu prüfen. Im einfachsten Fall kann das zu einem jeweiligen Prüfzeitpunkt gewählte Datensegment zufällig gewählt werden. Bei einer Nutzung von hinreichend vielen Prüfzeitpunkten wird zumindest mit überwiegender Wahrscheinlichkeit eine Prüfung der gesamten Programmdaten erreicht. Alternativ können jedoch auch feste Abfolgen der zu wählenden Datensegmente genutzt werden oder es kann beispielsweise eine zufällige Auswahl aus den noch nicht geprüften beziehungsweise für eine gewisse Zeit nicht geprüften Datensegmenten erfolgen.
-
Ergänzend oder alternativ kann das bei Erfüllung der Schnellstartbedingung ausgewählte, zu prüfende Datensegment zufällig gewählt werden und/oder das Starten der Datenverarbeitungseinrichtung kann zu mehreren zeitlich beabstandeten Startzeitpunkten durchgeführt werden, wobei sich die Auswahl des wenigstens einen zu prüfenden Datensegments für wenigstens zwei der Startzeitpunkte, an denen die Schnellstartbedingung erfüllt wird, voneinander unterscheidet. Zweiteres kann beispielsweise durch eine zufällige Auswahl erreicht werden, jedoch auch durch eine feste Reihenfolge der ausgewählten Datensegmente oder Ähnliches.
-
Durch Nutzung unterschiedlicher Wahrscheinlichkeiten für die Auswahl verschiedener Datensegmente beziehungsweise eine geeignete vorgegebene Reihenfolge der Prüfung kann beispielsweise auch erreicht werden, dass bestimmte, beispielsweise besonders für die Robustheit von bereitgestellten Funktionen relevante, Datensegmente häufiger geprüft werden als andere Datensegmente. Durch eine zufällige Wahl des bei dem Schnellstart zu prüfenden Datensegments beziehungsweise durch eine veränderliche Auswahl bei aufeinanderfolgenden Startvorgänge kann trotz der stichprobenartigen Prüfung über mehrere Schnellstarts hinweg erkannt werden, wenn irgendeines der Datensegmente manipuliert oder fehlerhaft ist.
-
Vor dem Startvorgang oder wenigstens einem der Startvorgänge der Datenverarbeitungseinrichtung kann wenigstens eines der Datensegmente verändert oder überschrieben werden, um das Programm zu ändern, wobei die Validierungsinformation auf einen Wert gesetzt wird, der die Schnellstartbedingung nicht erfüllt. Das Beschreiben des Datensegments kann insbesondere innerhalb eines Updates erfolgen, das durch eine externe Einrichtung bereitgestellt wird. Ein Schreibzugriff zur Änderung eines der Datensegmente kann beispielsweise nur dann freigegeben werden, wenn die Validierungsinformation auf einen Wert gesetzt ist, der die Schnellstartbedingung nicht erfüllt beziehungsweise jeder Schreibzugriff kann automatisch zu einer geeigneten Änderung der Validierungsinformation führen. Die Änderung von Programmdaten führen beim beschriebenen Vorgehen somit automatisch dazu, dass beim nächsten Startvorgang die Schnellstartbedingung nicht erfüllt ist und somit die gesamten Programmdaten geprüft werden. Erst nach einer anfänglichen Gesamtüberprüfung der Programmdaten nach einer solchen Änderung sind erneute Schnellstarts möglich.
-
Der Inhalt wenigstens eines der Datensegmente und die diesem Datensegment zugeordnete Prüfinformation können durch voneinander unterschiedliche Einrichtungen an die Datenverarbeitungseinrichtung bereitgestellt werden, wobei die Prüfinformation insbesondere über ein Schlüsselverwaltungssystem zur Verwaltung von in der Datenverarbeitungseinrichtung genutzten kryptographischen Schlüsseln bereitgestellt wird.
-
Ergänzend oder alternativ kann bei Bereitstellung einer geänderten Prüfinformation diese nur dann als eine der Prüfinformationen übernommen werden, wenn einerseits eine Quelle der geänderten Prüfinformation gegenüber der Datenverarbeitungseinrichtung oder einem Authentifizierungsmodul der Datenverarbeitungseinrichtung authentifiziert ist und/oder wenn andererseits der geänderten Prüfinformation eine Authentifizierungsinformation zugeordnet ist, die eine Authentifizierungsbedingung erfüllt.
-
Die Authentifizierungsinformation kann insbesondere eine digitale Signatur oder Ähnliches sein. Die Authentifizierung einer Quelle der Prüfinformation kann durch an sich bekannte Verfahren, beispielsweise ein kryptographisches Challenge-Response-Verfahren, erfolgen. Die Nutzung eines Schlüsselmanagements zur Bereitstellung der Prüfinformation ist besonders vorteilhaft, da dort für ein Bereitstellen von Schlüsseln eine geeignete Infrastruktur, die in der Regel eine entsprechende Authentifizierung umfasst, existiert.
-
Die Programmdaten beziehungsweise das geänderte Datensegment kann beispielsweise über ein Wartungsmodul in einer Werkstatt oder allgemein im Rahmen einer Wartung eingespielt werden, wobei typischerweise eine Authentifizierung eines solchen Wartungsmoduls gegenüber der Datenverarbeitungseinrichtung beziehungsweise einer übergeordneten Einrichtung, beispielsweise einem Kraftfahrzeug, erforderlich ist. Werden somit die Programmdaten beziehungsweise die Inhalte der geänderten Datensegmente und die Prüfinformation durch unterschiedliche Einrichtungen bereitgestellt, wobei jeweils eine Authentifizierung der Quelle beziehungsweise der Daten erforderlich ist, müssen sich somit zwei Quellen unabhängig gegenüber der Datenverarbeitungseinrichtung beziehungsweise beispielsweise einem Kraftfahrzeug authentifizieren, um eine Programmänderung zu ermöglichen, womit eine Art Zweifaktorautorisierung erreicht wird.
-
Die Prüfung, ob das jeweilige zu prüfende Datensegment und die zugeordnete Prüfinformation die Prüfbedingung erfüllen, und die Ausführungen des Programms können durch voneinander unterschiedliche Datenverarbeitungskomponenten der Datenverarbeitungseinrichtung erfolgen. Insbesondere kann die Datenverarbeitungseinrichtung als Datenverarbeitungskomponente die eingangs erläuterte Prüfeinrichtung und die eingangs erläuterte Ausführungseinrichtung umfassen.
-
Ergänzend oder alternativ kann die Datenverarbeitung durch wenigstens eine Datenverarbeitungskomponente der Datenverarbeitungseinrichtung, insbesondere durch die Ausführungseinrichtung, erst nach Erfüllung der Prüfbedingung durch alle zu prüfenden Datensegmente freigegeben werden. Anders ausgedrückt kann bezüglich der zu prüfenden Datensegmente eine Art „Secure-Boot“-Ansatz implementiert werden, wobei bei Erfüllung der Schnellstartbedingung jedoch nicht alle Datensegmente vor dem Start überprüft werden.
-
Die Auswertung der Schnellstartbedingung und/oder der Prüfbedingung kann durch einen Bootloader der Datenverarbeitungseinrichtung implementiert werden, der in dem Datenspeicher gespeichert ist, wobei der Start des Programms und/oder die Auswertung der Prüfbedingung nur dann erfolgen, wenn der Bootloader eine Initialisierungsbedingung erfüllt, die zusätzlich von einer in dem Datenspeicher gespeicherten Referenzinformation abhängt. Die Initialisierungsbedingung kann, abgesehen von den anderen genutzten Eingangsdaten, der Prüfbedingung entsprechen beziehungsweise, wie obig zur Prüfbedingung erläutert wurde, implementiert sein. Beispielsweise kann die Initialisierungsbedingung eine Prüfsumme mit der Referenzinformation vergleichen, mit Hilfe der Referenzinformation eine zyklische Redundanzprüfung (englisch: cyclic redundancy check, CRC) durchführen, die Referenzinformation kann ein kryptographischere Hash-Wert des Bootloaders beziehungsweise eine Code-Signatur des Bootloaders sein und/oder Ähnliches.
-
Durch die zusätzliche Prüfung des Bootloaders kann die Robustheit und Manipulationssicherheit der Datenverarbeitungseinrichtung weiter erhöht werden.
-
Neben dem erfindungsgemäßen Verfahren betrifft die Erfindung eine Datenverarbeitungseinrichtung mit einem Datenspeicher, wobei die Datenverarbeitungseinrichtung zur Durchführung des erfindungsgemäßen Verfahrens eingerichtet ist. Die Datenverarbeitungseinrichtung umfasst insbesondere wenigstens eine Datenverarbeitungskomponente, um die Prüfbedingung und die Schnellstartbedingung auszuwerten und das Programm auszuführen. Vorzugsweise werden mehrere Datenverarbeitungskomponenten, insbesondere die obig erläuterte Prüfeinrichtung und die obig erläutert Ausführungseinrichtung, verwendet.
-
Die Datenverarbeitungseinrichtung kann somit wenigstens eine Prüfeinrichtung und wenigstens eine Ausführungseinrichtung umfassen, wobei die Prüfeinrichtung dazu eingerichtet sein kann, die Schnellstartbedingung und die Prüfbedingung auszuwerten und bei Erfüllung der Prüfbedingung durch alle zu prüfenden Datensegmente die Ausführung des Programms durch die Ausführungseinrichtung freizugeben.
-
Die erfindungsgemäße Datenverarbeitungseinrichtung kann mit den zum erfindungsgemäßen Verfahren erläuterten Merkmalen mit den dort genannten Vorteilen weitergebildet werden und umgekehrt.
-
Zudem betrifft die Erfindung ein Kraftfahrzeug, das eine erfindungsgemäße Datenverarbeitungseinrichtung umfasst. Die Nutzung einer solchen Datenverarbeitungseinrichtung in Kraftfahrzeugen ist besonders vorteilhaft, da dort für viele Anwendungen hohe Zuverlässigkeitsanforderungen und gleichzeitig das Bedürfnis nach einem schnellen Systemstart zusammenfallen. Wie obig erläutert, kann diese Kombination durch das erfindungsgemäße Verfahren beziehungsweise durch Nutzung der erfindungsgemäßen Datenverarbeitungseinrichtung erreicht werden. Die Datenverarbeitungseinrichtung kann prinzipiell zu jedem Zweck im Kraftfahrzeug dienen, also beispielsweise zur Implementierung von Fahrfunktionen, Multimediafunktionen, Assistenzsystemen usw.
-
Weitere Vorteile und Einzelheiten der Erfindung ergeben sich aus den folgenden Ausführungsbeispielen sowie den zugehörigen Zeichnungen. Hierbei zeigen schematisch:
- 1 ein Ausführungsbeispiel eines erfindungsgemäßen Kraftfahrzeugs, das ein Ausführungsbeispiel einer erfindungsgemäßen Datenverarbeitungseinrichtung umfasst,
- 2 ein Ablaufdiagramm eines Ausführungsbeispiels des erfindungsgemäßen Verfahrens, und
- 3 weitere Schritte, die in dem in 2 gezeigten Verfahren im laufenden Betrieb der Datenverarbeitungseinrichtung durchgeführt werden können.
-
1 zeigt eine Datenverarbeitungseinrichtung 1 die, wie in 1 nur schematisch dargestellt ist, Teil eines Kraftfahrzeugs 23 ist und dort beispielsweise fahrrelevante Funktionen und/oder Multimediafunktionen implementieren kann. Insbesondere bei einer Implementierung von fahrrelevanten Funktionen ist es hierbei wesentlich, ein Programm 18 beziehungsweise alle Programme die durch die Datenverarbeitungseinrichtung 1 ausgeführt werden sollen, hinreichend zu validieren, da hierdurch beispielsweise durch Speicherfehler oder Manipulationen verursachte Fehlfunktionen rechtzeitig erkannt werden können, um eine Beeinträchtigung des Fahrbetriebs zu vermeiden.
-
Um einerseits eine robuste Erkennung von Fehlern zu ermöglichen und andererseits lange Anstartzeiten, wie sie bei einer vollständigen Prüfung der Programmdaten 3 bei jedem Start der Datenverarbeitungseinrichtung 1 erforderlich wären, zu vermeiden, nutzt die Datenverarbeitungseinrichtung 1 einen hybriden Validierungsansatz, bei dem zumindest dann, wenn die Programmdaten 3 voraussichtlich valide sind, nur Teile der Programmdaten 3 geprüft werden, bevor die Ausführung des Programms 18 begonnen wird. Hierdurch kann für einen Großteil der Startvorgänge der Start erheblich beschleunigt werden.
-
Das zum Starten der Datenverarbeitungseinrichtung 1 genutzte Verfahren wird im Folgenden mit zusätzlichem Bezug auf 2 erläutert, die ein Ablaufdiagramm einer beispielhaften Ausgestaltung eines solchen Verfahrens zeigt. Wesentlich ist hierbei, dass ein Datenspeicher 2 der Datenverarbeitungseinrichtung 1, der in realen Implementierungen auch durch mehrere Speicherbausteine mit gleicher oder unterschiedlicher Speichertechnologie gebildet sein kann, neben den Programmdaten 3, die in mehrere Datensegmente 4 bis 8 unterteilt sind, für jedes der Datensegmente 4 bis 8 eine zugeordnete Prüfinformation 9 bis 13 umfasst. Zudem ist dort auch eine Validierungsinformation 14 gespeichert, die indiziert, ob die Programmdaten 3 voraussichtlich valide sind und daher eine Schnellstartbedingung 15 erfüllt wird, bei deren Erfüllung ein schnelleres Starten ermöglicht werden kann, da nur Teile der Datensegmente 4 bis 8 als zu prüfende Datensegmente 16 ausgewählt und geprüft werden, bevor das Programm 18 gestartet wird.
-
Bei Nichterfüllung der Schnellstartbedingung werden hingegen alle Datensegmente geprüft, so dass einmalig, beispielsweise nach einem Update der Programmdaten 3 oder einer Erkennung von Handlungen, die auf Manipulationsversuche beziehungsweise Wartungsarbeiten hindeuten, ein längerer Start in Kauf genommen werden kann, um eine robuste Prüfung der Programmdaten 3 sicherzustellen.
-
In dem in 1 gezeigten Beispiel erfolgt die Datenverarbeitung selbst durch zwei Datenverarbeitungskomponenten 19, 20, wobei die Datenverarbeitungskomponente 19 eine Prüfeinrichtung 21 ist, die die Prüfung der Programmdaten 3 beziehungsweise die Auswertung der Prüfbedingung 17 implementiert und die Datenverarbeitungskomponente 20 eine Ausführungseinrichtung 22 ist, die erst nach Freigabe durch die Prüfeinrichtung 19 nach Prüfung der zu prüfenden Datensegmente 16 gestartet wird.
-
In dem in 2 dargestellten Ausführungsbeispiel wird zum Startzeitpunkt 27 in Schritt S1 die Datenverarbeitungseinrichtung 1 gestartet, beispielsweise durch Beginn der Bestromung der Datenverarbeitungseinrichtung 1 beziehungsweise in dem Kraftfahrzeug 23 durch Verbindung der „Klemme 15“, also bei Erfüllung einer Fahrzeugstartbedingung. Je nach implementierter Funktion der Datenverarbeitungseinrichtung 1 kann diese jedoch auch zu anderen Starterzeitpunkten 27 gestartet werden, beispielsweise erst dann, wenn bestimmte Komponenten im Kraftfahrzeug aktiviert werden oder bei Vorliegen von bestimmten Sensorsignalen.
-
In dem in 1 gezeigten Ausführungsbeispiel wird die Prüfung der Schnellstartbedingung 15 sowie der Prüfbedingung 17 durch einen Bootloader 36 der Datenverarbeitungseinrichtung 1 realisiert, der ebenfalls im Datenspeicher 2 gespeichert ist und der unmittelbar nach dem Start der Datenverarbeitungseinrichtung 1 durch die Prüfeinrichtung 21 ausgeführt wird. Die Ausführungseinrichtung 22 bleibt hingegen zunächst inaktiv.
-
Durch den Bootloader 36 wird im Schritt S2 zunächst ein Selbsttest durchgeführt, wobei insbesondere geprüft wird, ob der Bootloader 36 eine Initialisierungsbedingung 38 erfüllt, die zusätzlich von einer Referenzinformation 37 abhängt. Die Referenzinformation 37 kann beispielsweise ein kryptographischer Hash-Wert der Daten des Bootloaders 36 sein beziehungsweise dazu genutzt werden, eine Code-Signatur des Bootloaders 36 zu prüfen oder Ähnliches. Schlägt dieser Selbsttest fehl, beziehungsweise ist die Initialisierungsbedingung 38 nicht erfüllt, so endet das Verfahren unmittelbar in Schritt S8, in dem der Betrieb der Datenverarbeitungseinrichtung 1 beendet wird und beispielsweise ein Fehlersignal an eine externe, nicht gezeigte Einrichtung des Kraftfahrzeugs 23 ausgegeben wird.
-
Ist die Initialisierungsbedingung 38 hingegen erfüllt, so wird in Schritt S3 durch den Bootloader 36 eine Schnellstartbedingung 15 geprüft, deren Erfüllung von der Validierungsinformation 14 abhängt. Im einfachsten Fall ist die Validierungsinformation 14 ein Boolescher Wert und die Schnellstartbedingung 15 ist genau dann erfüllt, wenn der Wert der Validierungsinformation 14 „wahr“ ist. Die Validierungsinformation 14 indiziert vorliegend, ob bereits davon ausgegangen werden kann, dass die Programmdaten 3 voraussichtlich valide sind. Nach einer Änderung wenigstens eines der Datensegmente 4 bis 8 im Rahmen eines Updates beziehungsweise beim ersten Starten der Datenverarbeitungseinrichtung 1 nach ihrer anfänglichen Herstellung und Programmierung wird die Validierungsinformation 14 somit zunächst einen Wert aufweisen, für den die Schnellstartbedingung 15 nicht erfüllt ist, so dass in diesem Fall das Verfahren mit Schritt S4 fortgesetzt wird.
-
In Schritt S4 werden aufgrund der Nichterfüllung der Schnellstartbedingung 15 alle Datensegmente 4 bis 8 der Programmdaten 3 als zu prüfende Datensegmente ausgewählt und es wird für jedes der Datensegmente 4 bis 8 geprüft, ob eine Prüfbedingung 17, die zusätzlich von der dem jeweiligen zu prüfenden Datensegment 4 bis 8 zugeordneten Prüfinformation 8 bis 13 abhängt, erfüllt ist.
-
Die Prüfbedingung 17 entspricht hierbei abgesehen von den unterschiedlichen Eingangsdaten insbesondere der Initialisierungsbedingung 38 und kann somit beispielsweise prüfen, ob ein kryptographischer Hash oder eine Code-Signatur, die als Prüfinformation 9 bis 13 abgelegt ist, für das jeweilige Datensegment 4 bis 8 gültig ist. Ist dies für wenigstens eines der Datensegmente 4 bis 8 nicht der Fall, ist also die Prüfbedingung 17 zumindest einmalig nicht erfüllt, so wird wiederum zu Schritt S8 verzweigt und das Verfahren endet mit einer angehaltenen Datenverarbeitungseinrichtung 1.
-
Ist hingegen die Prüfbedingung für alle Datensegmente 4 bis 8 erfüllt, so sind die gesamten Programmdaten 3 validiert, womit in Schritt S5 zunächst die Validierungsinformation 14 auf einen Wert gesetzt werden kann, der die Schnellstartbedingung 15 erfüllt.
-
Anschließend kann in Schritt S6 das Programm 18 gestartet werden, womit die Datenverarbeitungseinrichtung 1 Funktionen an Nutzer beziehungsweise andere Komponenten des Kraftfahrzeugs 23 bereitstellen kann.
-
Das in 2 gezeigte Verfahren endet in diesem Fall mit Schritt S7, in dem ein normaler Betrieb der Datenverarbeitungseinrichtung 1 beziehungsweise ein kontinuierliches Ausführen des Programms 18 erfolgt. Wird zu irgendeinem Zeitpunkt der Betrieb der Datenverarbeitungseinrichtung 1 unterbrochen, beispielsweise durch ein Abstellen des Kraftfahrzeugs 23 beziehungsweise bestimmter Komponenten des Kraftfahrzeugs 23, und wurde während dieses Betriebs die Validierungsinformation 14 nicht geändert, so ist bei einem nachfolgenden Start zu einem späteren Startzeitpunkt 27 und somit bei einer späteren Wiederholung der in 2 gezeigten Verfahrensschritte in Schritt S3 die Schnellstartbedingung 15 erfüllt und das Verfahren wird somit in diesem Fall in Schritt S9 fortgesetzt.
-
In Schritt S9 wird zunächst wenigstens eines der Datensegmente 4 bis 8, jedoch nicht alle der Datensegmente 4 bis 8, als zu prüfendes Datensegment 16 ausgewählt. Die Anzahl der auszuwählenden Datensegmente kann in Abhängigkeit einer zumutbaren Startzeit der Datenverarbeitungseinrichtung 1, beispielsweise durch Experimente bezüglich der Nutzererfahrung, optimiert werden. Prinzipiell ist es ausreichend, nur eines der Datensegmente 4 bis 8 als zu prüfendes Datensegment 16 auszuwählen, die Auswahl mehrerer zu prüfender Datensegmente 16 in Schritt S9 kann die Robustheit der Prüfung jedoch weiter verbessern.
-
Die Auswahl des zu prüfenden Datensegments 16 beziehungsweise der zu prüfenden Datensegmente 16 erfolgt vorzugsweise derart, dass zu unterschiedlichen Startzeitpunkten 27, zu denen die Schnellstartbedingung 15 erfüllt ist, auch unterschiedliche zu prüfende Datensegmente 16 beziehungsweise unterschiedliche Gruppen von zu prüfenden Datensegmenten 16 ausgewählt werden, so dass nach mehreren Startvorgängen zumindest mit hoher Wahrscheinlichkeit alle Datensegmente 4 bis 8 wenigstens einmal geprüft wurden. Dies kann beispielsweise durch zufällige Auswahl des zu prüfenden Datensegments 16 beziehungsweise der zu prüfenden Datensegmente 16 in Schritt S9 realisiert werden. Alternativ könnten jedoch beispielsweise feste Reihenfolgen, mit denen die ausgewählten zu prüfenden Datensegmente 16 durchgewechselt werden, vorgegeben werden oder Ähnliches.
-
In Schritt S10 wird ausschließlich für die in Schritt S9 gewählten, zu prüfenden Datensegmente 16 und somit nicht für alle der Datensegmente 4 bis 8 jeweils geprüft, ob diese und die ihnen jeweils zugeordnete Prüfinformation 9 bis 13 die Prüfbedingung 17 erfüllen. Abgesehen davon, dass die Prüfbedingung 17 in Schritt S10 nicht für alle Datensegmente 4 bis 8 der Programmdaten 3 geprüft wird, entspricht Schritt S10 somit Schritt S4. Entsprechend wird dann, wenn für zumindest eines der zu prüfenden Datensegmente 16 die Prüfbedingung 17 nicht erfüllt ist, ebenfalls zu Schritt S8 verzweigt und das Verfahren endet mit einem Anhalten der Datenverarbeitungseinrichtung 1.
-
Ist die Prüfbedingung 17 in Schritt S10 hingegen für alle zu prüfenden Datensegmente 16 erfüllt, so wird in Schritt S11 das Programm 18 gestartet. Da einerseits die Erfüllung der Schnellstartbedingung 15 beziehungsweise der Wert der Validierungsinformation 14 indizieren, dass die Programmdaten 3 voraussichtlich valide sind und die in Schritt S9 stichprobenhaft gewählten zu prüfenden Datensegmente 16 aufgrund der Erfüllung der Prüfbedingung 17 tatsächlich valide sind, kann mit hoher Konfidenz davon ausgegangen werden, dass das Starten des Programms 18 unproblematisch ist.
-
In dem in 2 gezeigten Ausführungsbeispiel werden unmittelbar nach dem Starten des Programms 18 in Schritt S11 in Schritt S12 jene weiteren Datensegmente 24 ausgewählt, die in Schritt S9 nicht als zu prüfende Datensegmente 16 gewählt wurden und in Schritt S13 wird die Erfüllung der Prüfbedingung 17 durch diese weiteren Datensegmente 24 beziehungsweise die ihnen zugeordneten Prüfinformationen 9 bis 13 geprüft. Der Schnellstart unterscheidet sich somit im gezeigten Ausführungsbeispiel dadurch vom Starten über die Schritte S4 bis S6, dass bei dem Schnellstart für Teile der Datensegmente 4 bis 8 die Prüfbedingung 17 erst nach dem Starten des Programms 18 geprüft wird.
-
Ist die Prüfbedingung 17 auch für die weiteren Datensegmente 24 erfüllt, kann der Betrieb in Schritt S7 normal fortgesetzt werden und es sind, wie auch bei einem normalen Starten ohne Schnellstart, alle Programmdaten 3 validiert.
-
Ist die Prüfbedingung 17 hingegen für wenigstens eines der weiteren Datensegmente 24 nicht erfüllt, so erfolgt in Schritt S14 zunächst eine Fehlerbehandlung, bei der einerseits die Validierungsinformation 14 auf einen Wert gesetzt wird, der die Schnellstartbedingung 15 bei einem erneuten Starten nicht erfüllt, so dass beim nächsten Starten der Verarbeitungseinrichtung 1 eine vollständige Validierung der gesamten Programmdaten 3 erfolgen muss, um ein Starten zu ermöglichen. Zudem erfolgt ein entsprechender Eintrag in den Fehlerspeicher 25, um eine Diagnose beziehungsweise eine Behebung von Fehlern zu erleichtern.
-
In alternativen Ausgestaltungen wäre es auch möglich, in Schritt S12 nur Teile der in Schritt S9 nicht gewählten Datensegmente 4 bis 8 für eine Prüfung zu wählen beziehungsweise die Schritt S12 bis S14 sogar vollständig wegzulassen, da, wie im Folgenden noch mit Bezug auf 3 erläutert werden wird, auch während des normalen Betriebs der Datenverarbeitungseinrichtung 1 zu späteren Zeitpunkten noch eine Prüfung von Datensegmenten 4 bis 8 durchgeführt werden kann beziehungsweise da bei wiederholtem Starten aufgrund der veränderten Auswahl des zu prüfenden Datensegments 16 in Schritt S9 die Datensegmente über mehrere Starts hinweg kontinuierlich durchgeprüft werden können.
-
3 zeigt weitere Schritte S15 bis S26, die im laufenden Betrieb der Datenverarbeitungseinrichtung 1, also mit dem Erreichen des Schritts S7 in 2, durchgeführt werden können. Das in 3 gezeigte Ablaufdiagramm beginnt mit Schritt S15, in dem das Programm 18 bereits durchgeführt wird. In Schritt S16 erfolgt zu einem jeweiligen Prüfzeitpunkt 26 die Auswahl eine der Datensegmente 4 bis 8, wobei die Datensegmente zufällig oder auch in einer bestimmten Reihenfolge ausgewählt werden können.
-
Anschließend wird in Schritt S17 die Erfüllung der Prüfbedingung 17 durch das in Schritt S16 ausgewählte Datensegment 4 bis 8 und die zugeordnete Prüfinformation 9 bis 13 überprüft.
-
Ist die Prüfbedingung 17 in S17 nicht erfüllt, so wird in Schritt S18 die Validierungsinformation 14 auf einen Wert gesetzt, der die Schnellstartbedingung 15 nicht erfüllt und/oder es erfolgt ein Eintrag im Fehlerspeicher 25. Hierdurch kann insbesondere ermöglicht werden, dass bei dem nächsten Start die Datenverarbeitungseinrichtung 1 eine vollständige Prüfung der Programmdaten 3 durchgeführt.
-
Unabhängig davon, ob die Prüfbedingung 17 in Schritt S17 erfüllt war, wird in Schritt S19 geprüft, ob eine Aktualisierung der Programmdaten 18 erfolgen soll. Ist dies nicht der Fall, so wird in Schritt S20 geprüft, ob der Betrieb der Datenverarbeitungseinrichtung 1 beendet werden soll, was beispielsweise von einem Klemmenzustand des Kraftfahrzeugs 23 beziehungsweise eine Bestromung der Datenverarbeitungseinrichtung 1 abhängen kann.
-
Bei einer Fortsetzung des Betriebs wird das Verfahren in Schritt S16, insbesondere nach einer gewissen Wartezeit, fortgesetzt, um zu einem neuen Prüfzeitpunkt 26 wiederum ein Datensegment 4 bis 8 zu prüfen. Wird der Betrieb hingegen beendet, so endet das Verfahren mit Schritt S26, wobei zu einem späteren Startzeitpunkt 27, beispielsweise bei erneuter Änderung des Klemmenzustands des Kraftfahrzeugs, der Betrieb beziehungsweise das Verfahren wieder mit Schritt S1 begonnen werden kann.
-
Um die Programmdaten zu aktualisieren beziehungsweise allgemein um den Inhalt wenigstens eines der Datensegmente 4 bis 8 zu überschreiben beziehungsweise zu verändern, wird zunächst über eine erste Quelle 28, beispielsweise ein Serviceterminal im Rahmen der Wartung, der Inhalt des jeweiligen Datensegments 4 bis 8 beziehungsweise der Programmdaten 18 zugeführt. Hierbei ist es insbesondere möglich, dass der Einrichtung 28 nur dann ein Schreibzugriff auf den Datenspeicher 2 beziehungsweise konkret die Datensegmente 4 bis 8 ermöglicht wird, wenn der bereitgestellte Inhalt beziehungsweise die Einrichtung 28 entsprechend authentifiziert sind, was in Schritt S22 geprüft werden kann.
-
In Schritt S23 wird über eine weitere Quelle 29, beispielsweise ein Backend für eine Schlüsselverwaltung, über ein Schlüsselverwaltungssystem 30 des Kraftfahrzeugs 23 eine jeweilige geänderte Prüfinformation 31 für alle zu ändernden Datensegmente 4 bis 8 bereitgestellt, wobei hierbei zusätzlich eine Authentifizierungsinformation 34 mitübertragen wird. In Schritt S24 wird anschließend durch das Authentifizierungsmodul 22 der Datenverarbeitungseinrichtung 1 eine Authentifizierungsbedingung 35 ausgewertet, die prüft, ob die Authentifizierungsinformation 34 beziehungsweise die Authentifizierung der Quelle 32 einen Zugriff auf den geschützten Speicherbereich 39 erlauben, in dem die bisherigen Prüfinformationen 9 bis 13 abgelegt sind. Anderenfalls können diese nicht ersetzt werden.
-
Um ausführbare Programmdaten in die Datenverarbeitungseinrichtung 1 einzuspeisen, ist somit eine Art Zwei-Faktor-Authentifizierung erforderlich. Einerseits ist zum Einspielen der Programmdaten 18 selbst eine entsprechende Autorisierung für die Einrichtung 28 notwendig. Andererseits muss zum Aktualisieren der Prüfinformationen 9 bis 13, ohne das das Programm 18 aufgrund des vorangehend erläuterten Vorgehens nach einer Änderung nicht gestartet werden kann, eine Autorisierung über das Schlüsselmanagement 30 erfolgen.
-
Mit der Änderung des Inhalts des Datenspeichers 2 in den Schritten S21 bis S24 wird notwendig in Schritt S25 auch die Validierungsinformation 14 auf einen Wert gesetzt, für den die Schnellstartbedingung 15 nicht erfüllt ist. Beim nächsten Starten der Datenverarbeitungseinrichtung 1 nach der Durchführung der Schritte S21 bis S25 erfolgt somit notwendig eine Prüfung aller Programmdaten 3 in Schritt S4, da kein Schnellstart erfolgen wird.
-
Da nach der ersten vollständigen Validierung allerdings, wie obig erläutert, die Validierungsinformation 14 auf einen Wert gesetzt wird, der die Schnellstartbedingung 15 erfüllt, ist nach einer Änderung beziehungsweise Aktualisierung der Programmdaten 18 in der Regel nur ein einziger langsamer Start erforderlich, bevor zukünftige Starts der Datenverarbeitungseinrichtung 1 wieder über Schnellstarts und somit in deutlich kürzerer Zeit möglich sind. Die Nutzererfahrung wird somit durch das vorgeschlagene Vorgehen deutlich verbessert.
-
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
-
- US 2019/0018669 A1 [0003]