DE102022203720A1 - Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit - Google Patents

Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit Download PDF

Info

Publication number
DE102022203720A1
DE102022203720A1 DE102022203720.0A DE102022203720A DE102022203720A1 DE 102022203720 A1 DE102022203720 A1 DE 102022203720A1 DE 102022203720 A DE102022203720 A DE 102022203720A DE 102022203720 A1 DE102022203720 A1 DE 102022203720A1
Authority
DE
Germany
Prior art keywords
unit
program code
computing unit
character string
checked
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022203720.0A
Other languages
English (en)
Inventor
Friedrich Wiemer
Manuel Jauss
Marcel Kneib
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102022203720.0A priority Critical patent/DE102022203720A1/de
Priority to CN202310390091.3A priority patent/CN116910819A/zh
Priority to US18/184,331 priority patent/US20230333964A1/en
Publication of DE102022203720A1 publication Critical patent/DE102022203720A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0739Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/02Ensuring safety in case of control system failures, e.g. by diagnosing, circumventing or fixing failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Human Computer Interaction (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit (6) unter Verwendung einer Bestätigungseinheit (2), wobei das Computerprogramm durch einen Referenz-Programmcode spezifiziert ist und in der zu prüfenden Recheneinheit in Form gespeicherten Programmcodes vorliegt, umfassend: Auswählen (110), durch die Bestätigungseinheit, eines Paares aus einer Liste von Paaren, in der jedes Paar eine Zufalls-Zeichenkette und einen Referenz-Prüfwert umfasst, der basierend auf der Zufalls-Zeichenkette des Paares und dem Referenz-Programmcode mittels einer Prüfwert-Funktion berechnet wurde; Übermitteln (120), durch die Bestätigungseinheit, der Zufalls-Zeichenkette des Paares an eine Nachweiseinheit; Empfangen, durch die Bestätigungseinheit (2), eines Vergleichs-Prüfwerts, der basierend auf der übermittelten Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion berechnet wurde; Vergleichen (150), durch die Bestätigungseinheit, des empfangenen Vergleichs-Prüfwerts mit dem Referenz-Prüfwert des ausgewählten Paares, wobei die Integrität des gespeicherten Programmcodes bestätigt wird, wenn der empfangene Vergleichs-Prüfwert gleich dem Referenz-Prüfwert des ausgewählten Paares ist, und nicht bestätigt wird, wenn der empfangene Vergleichs-Prüfwert nicht gleich dem Referenz-Prüfwert ist.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit sowie ein System zu dessen Durchführung und eine Bestätigungseinheit und eine Nachweiseinheit.
  • Hintergrund der Erfindung
  • In Maschinen und Fahrzeugen werden programmierbare Steuergeräte eingesetzt, um diese oder auch Komponenten davon, zu steuern. Beispielsweise kann ein Kraftfahrzeug Steuergeräte für die Motorsteuerung, für das Bremssystem usw. enthalten. Die Steuergeräte umfassen üblicherweise mindestens einen Prozessor mit einem oder mehreren Prozessor-Kernen. In diesen Prozessorkernen wird eine Steuerungssoftware ausgeführt, d.h. es werden in einem Speicher gespeicherte Computerprogramme ausgeführt, um die Steuerungsfunktion des Steuergeräts zu erzielen. Aus Sicherheitsgründen kann vorgesehen sein, dass die Integrität von Computerprogrammen durch das Steuergerät unter Verwendung etwa eines Hardware-Sicherheits-Modul geprüft wird, um zu verhindern, dass ein manipuliertes Computerprogramm, d.h. dessen gespeicherter Programmcode, ausgeführt wird. Dazu können insbesondere kryptographische Funktionen verwendet werden.
  • Offenbarung der Erfindung
  • Erfindungsgemäß werden ein Verfahren zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit sowie ein System zu dessen Durchführung und eine Bestätigungseinheit und eine Nachweiseinheit mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
  • Im Rahmen der Erfindung wird eine Bestätigungseinheit verwendet. Dabei wählt die Bestätigungseinheit ein Paar aus einer Liste von Paaren, in der jedes Paar eine Zufalls-Zeichenkette und einen Referenz-Prüfwert umfasst, aus und übermittelt die Zufalls-Zeichenkette des ausgewählten Paares an eine Nachweiseinheit. Die Bestätigungseinheit empfängt und vergleicht einen Vergleichs-Prüfwert, der basierend auf der (von der Berechnungseinheit) übermittelten Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion berechnet wurde, mit dem Referenz-Prüfwert des ausgewählten Paares und bestätigt die Integrität des gespeicherten Programmcodes, wenn diese gleich sind. Zur Berechnung der Referenz-Prüfwerte und der Vergleichs-Prüfwerte wird dieselbe Prüffunktion verwendet. Eine Speicherung von Referenz-Prüfwerten oder geheimen Schlüsseln in der zu prüfenden Recheneinheit ist nicht notwendig. Dies ist vorteilhaft, da so eine Integritätsprüfung von Computerprogrammen für zu prüfende Recheneinheiten, die über keinen Vertrauensanker, wie z.B. ein Hardware-Sicherheits-Modul (HSM) oder Trusted Platform Modul (TPM), verfügen oder in denen dieser durch Hardware- oder Software-Fehler kompromittiert ist, durchgeführt und bestätigt werden kann.
  • Wenn der Vergleichs-Prüfwert nicht gleich dem Referenz-Prüfwert ist, wird die Integrität des gespeicherten Programmcodes nicht bestätigt. Ebenso wird vorzugsweise die Integrität des gespeicherten Programmcodes nicht bestätigt, wenn kein Vergleichs-Prüfwert empfangen wird. D.h. vorzugsweise umfasst das Verfahren, insbesondere als Teil des Schritts des Empfangens des Vergleichs-Prüfwerts, ein Warten nach dem Übermitteln, bis der Vergleichs-Prüfwert empfangen wird oder ein vorbestimmter maximaler Zeitraum verstrichen ist (d.h. Warten, bis eines von beiden erfüllt ist), wobei die Integrität des gespeicherten Programmcodes nicht bestätigt wird, wenn der Vergleichs-Prüfwert nicht innerhalb des vorbestimmten maximalen Zeitraums empfangen wird.
  • Das Computerprogramm, dessen Integrität bestätigt werden soll, liegt dabei in Form eines Programmcodes bzw. von Programmdaten vor, wobei der Begriff „Programmcode“ sowohl ausführbare Computeranweisungen als auch bei der Ausführung benötigte Daten einschließen soll. Der „Referenz-Programmcode“ ist dabei der korrekte, nicht manipulierte Programmcode. Der „gespeicherte Programmcode“ ist der in der Recheneinheit (als „zu prüfenden Recheneinheit“ bezeichnet) gespeicherte Programmcode, der möglicherweise manipuliert bzw. gegenüber dem Referenz-Programmcode verändert ist.
  • Die Bestätigungseinheit und die weiter unten genannte Nachweiseinheit können als Hardware (Prozessorkerne, Speicher, ...) bzw. Hardwaremodul in einer Recheneinheit und/oder als in einer Recheneinheit ausgeführtes Softwaremodul (Computerprogrammmodul) implementiert sein. Die Bestätigungseinheit ist als von der zu prüfenden Recheneinheit unabhängige Recheneinheit ausgeführt. Die Bestätigungseinheit kann im selben Fahrzeug bzw. in derselben Maschine wie die zu prüfende Recheneinheit umfasst sein. Die Bestätigungseinheit kann insbesondere auch in einem von der Nachweiseinheit unterschiedlichen Rechnersystem (z.B. Server, Cloud-Server, o.Ä.) implementiert sein. Die Nachweiseinheit ist bevorzugt innerhalb der zu prüfenden Recheneinheit implementiert. Die Nachweiseinheit kann aber auch unabhängig von der zu prüfenden Recheneinheit sein, z.B. in einem Fahrzeug in einem anderen Steuergerät implementiert sein, wenn die zu prüfende Recheneinheit ein Steuergerät des Fahrzeugs ist.
  • Mittels der Prüffunktion wird ein Prüfwert basierend auf einer Zeichenkette und einem Programmcode berechnet. Die Prüffunktion kann allgemein als Abbildung angesehen werden, die die beiden Eingabewerte (Zeichenkette, Programmcode) auf einen Ausgabewert (Prüfwert) abbildet; Prüfwert = f(Zeichenkette, Programmcode), wobei f die Prüffunktion ist. Alternativ bzw. im Besonderen kann die Prüffunktion als Abbildung angesehen werden, die einen Eingabewert, der aus der Zeichenkette und dem Programmcode gebildet wird, beispielsweise durch Aneinanderfügen, auf einen Ausgabewert (Prüfwert) abbildet; z.B. Prüfwert = f(Zeichenkette 11 Programmcode). Der Begriff Prüffunktion soll in einem allgemeinen Sinn verstanden werden, so dass beide Möglichkeiten umfasst sind, wobei selbstverständlich auch weitere Möglichkeiten denkbar sind und mit Begriff Prüffunktion umfasst sein sollen. Da die Längen der Zeichenkette und des Programmcodes im Allgemeinen unbestimmt sind, sollte in jedem Fall die Prüffunktion Eingabewerte beliebiger Länder auswerten können (beispielsweise durch Blockauswertung bzw. -berechnung).
  • Als Prüffunktion zur Berechnung der Prüfwerte kann eine Hashfunktion, insbesondere eine kryptographische Hashfunktion, verwendet werden, die Prüfwerte können dann als Hashwerte angesehen werden. Weitergehend kann die Prüffunktion das ein oder mehrmalige Anwenden wenigstens einer Hashfunktion, insbesondere wenigstens einer kryptographischen Hashfunktion, umfassen.
  • Eine verwendete kryptographische Hashfunktion sollte eine oder mehrere der folgenden Eigenschaften aufweisen:
    • - jeder berechnete Hashwert sollte eine bestimmte, fixe Länge aufweisen, unabhängig von der Länge der eingegebenen Zeichenfolge;
    • - Kollisionsresistenz: es ist also nicht praktikabel zwei verschiedene Eingabewerte zu finden, die den gleichen Hashwert ergeben;
    • - nicht praktikabel umkehrbar;
    • - Lawineneffekt: die Hashwerte zweier Eingaben, die sich nur gering, z.B. um ein Bit unterscheiden, sollten sehr unterschiedlich sein.
  • „Nicht praktikabel“ soll heißen, dass ein sehr hoher zeitlicher und/oder rechentechnischer Aufwand nötig wäre. Geeignete kryptographische Hashfunktionen sind z.B. Hashfunktionen gemäß SHA-1 oder SHA-2, d.h. SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256, die etwa aus dem Dokument FIPS PUB 180-4 (http://dx.doi.org/10.6028/NIST.FIPS.180-4) des NIST (National Institute of Standards and Technology) oder auch aus RFC 6234 bekannt sind. Die Länge der Hashwerte ist bei SHA-1 160 Bit, bei Hashfunktionen der SHA-2-Familie 224, 256, 384 bzw. 512 Bit. Ebenso ist auch die Verwendung von MD5 (Message-Digest Algorithm 5, RFC1321), Länge 128 Bit, oder SHA-3 (FIPS PUB 202, http://dx.doi.org/10.6028/NIST.FIPS.202), Länge je nach Version 224, 256, 384, 512 Bit oder beliebig, möglich.
  • Ein Beispiel für eine Prüffunktion, die das Anwenden einer kryptographischen Hashfunktion umfasst, ist HMAC (hash-based message authentication code; Hash-basierter Nachrichtenauthentifizierungscode) entsprechend RFC2104 bzw. FIPS PUB 198 (http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf). HMAC umfasst das mehrmalige Anwenden einer Hashfunktion, insbesondere eine der vorstehend genannten kryptographischen Hashfunktionen. Allgemeiner kann auch ein anderer Nachrichtenauthentifizierungscode (MAC) verwendet werden, in dessen Abbildung ein Schlüssel (Zufalls-Zeichenkette) und eine Nachricht (Programmcode) eingehen. Die HMAC-Abbildung bzw. die MAC-Abbildung eines Schlüssels (Zufalls-Zeichenkette) und einer Nachricht (Programmcode) auf einen Authentifizierungscode (Prüfwert) stellen entsprechend Prüffunktionen dar.
  • Jede Zufalls-Zeichenketten (vereinfacht auch als Zeichenkette bezeichnet) ist eine beliebige Folge bzw. Kette von Zeichen (etwa Bits oder auch entsprechende Dezimal-, Hexadezimaldarstellungen oder Ähnliches). Die Zufalls-Zeichenketten der Liste sollen unabhängig voneinander sein, beispielsweise sollte es sich nicht um aufeinanderfolgende Nummern handeln. Aus der Kenntnis einer Zufalls-Zeichenkette der Liste bzw. deren Paaren kann also nicht darauf geschlossen werden, welche weiteren Zufalls-Zeichenketten in der Liste eingeschlossen sind. Dies soll durch den Begriff „Zufall“ angedeutet werden. Typischerweise sind die Zeichen jeder Zeichenkette zufällig gewählt.
  • Die Liste von Paaren sollte nur der Bestätigungseinheit bekannt bzw. durch diese gespeichert sein. Dabei sollte sichergestellt sein, dass die Liste außerhalb der Bestätigungseinheit nicht bekannt ist, so dass insbesondere Angreifer, die den gespeicherten Computercode manipulieren, die Liste nicht kennen. Die Nachweiseinheit und die zu prüfende Recheneinheit kennen die Liste ebenso nicht.
  • Bevorzugt wird, durch die Bestätigungseinheit, das ausgewählte Paar als nicht mehr auswählbar gekennzeichnet oder von der Liste gestrichen, und/oder es wird bei mehrmaliger Durchführung (der Integritätsprüfung beginnend mit dem Auswählen bis einschließlich des Vergleichs) jedes Paar maximal einmal durch die Bestätigungseinheit ausgewählt. Ein Streichen des Paares von der Liste sollte offensichtlich erst erfolgen, nachdem der Referenz-Prüfwert ausgewertet wurde, z.B. bis nach dem Vergleich zwischengespeichert wurde, oder erst nach dem Vergleich. Durch diese Ausgestaltung können sogenannte Replay-Angriffe verhindert werden, da bei jeder Fernbestätigung eine andere Zufalls-Zeichenkette verwendet wird und somit, vorausgesetzt es wird eine geeignete Prüfwert-Funktion (Hashfunktion mit Lawineneffekt) zur Berechnung des Prüfwerts verwendet, jedes Mal ein anderer Prüfwert auftritt. Weiter bevorzugt erfolgt die Kennzeichnung des ausgewählten Paares als nicht mehr auswählbar bzw. das Streichen von der Liste unmittelbar nach Übermitteln der Zufalls-Zeichenkette. Im Falle des Streichens wird der Referenz-Prüfwerte zwischengespeichert, bis der Vergleichs-Prüfwert empfangen wurde, wobei eine maximale Zeitspanne vorgegeben ist, innerhalb derer auf den Empfang gewartet wird. Ebenso weiter bevorzugt wird bei mehrmaliger Durchführung jedes Paar, dessen Zufalls-Zeichenkette einmal übermittelt wurde, maximal einmal durch die Bestätigungseinheit ausgewählt, d.h. eine erneute Auswahl eines Paares wird unterbunden, sobald die im Paar umfasste Zufalls-Zeichenkette einmalig übermittelt wurde.
  • Bevorzugt wird die Liste von Paaren durch eine Programmiereinheit, die das Referenz-Computerprogramm in der Recheneinheit speichert bzw. an die Recheneinheit überträgt und dessen Speicherung veranlasst, erzeugt und wird an die Bestätigungseinheit übermittelt. Da die Programmiereinheit im Besitz des Referenz-Programmcodes ist, kann diese zweckmäßigerweise bei Speicherung des Programmcodes in der zu prüfenden Recheneinheit die Liste von Paaren manipulationssicher erzeugen.
  • Bevorzugt umfasst das Verfahren ein Übermitteln, durch die Bestätigungseinheit, eines Ergebnisses, ob oder ob nicht die Integrität bestätigt wird, an eine Datenkommunikationseinheit, die zur Datenkommunikation mit der zu prüfenden Recheneinheit eingerichtet ist (d.h. Senden einer Nachricht mit einem Inhalt, der anzeigt, ob oder ob nicht die Integrität bestätigt wird bzw. wurde), und ein Senden, durch die Datenkommunikationseinheit, von Daten an die zu prüfende Recheneinheit in Abhängigkeit von dem Ergebnis und/oder ein Verwenden, durch die Datenkommunikationseinheit, von der zu prüfenden Recheneinheit empfangener Daten in Abhängigkeit von dem Ergebnis. Die Datenkommunikationseinheit kann z.B. bei angenommener Manipulation (im Sinne der Fernbestätigung) Daten von der zu prüfenden Recheneinheit aus Sicherheitsgründen verwerfen, um Fehlfunktionen zu vermeiden. Weitergehend kann vorgesehen sein, dass, wenn die Datenkommunikationseinheit kein Ergebnis von der Bestätigungseinheit empfängt (z.B. innerhalb einer maximalen Zeitspanne), die Datenkommunikationseinheit als Ergebnis (in Abhängigkeit von welchem Daten gesendet bzw. verwendet werden) bestimmt bzw. annimmt, dass die Integrität nicht bestätigt wird.
  • Bevorzugt umfasst das Verfahren ein Empfangen, durch die Nachweiseinheit, der Zufalls-Zeichenkette, die von der Bestätigungseinheit übermittelt bzw. gesendet wurde, ein Berechnen, durch die Nachweiseinheit, eines Vergleichs-Prüfwerts basierend auf der empfangenen Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion und ein Übermitteln bzw. Senden, durch die Nachweiseinheit, des Vergleichs-Prüfwerts an die Bestätigungseinheit. Diese Ausgestaltung ist zweckmäßig, um den Vergleichs-Prüfwert zu bestimmen.
  • Bevorzugt wird, wenn die Integrität nicht bestätigt wird, durch die Bestätigungseinheit an die Nachweiseinheit übermittelt, dass die Integrität nicht bestätigt wird, und durch die Nachweiseinheit die Ausführung des gespeicherten Programmcodes unterbunden bzw. die Unterbindung der Ausführung des gespeicherten Programmcodes veranlasst und/oder durch die Nachweiseinheit die Verwendung bestimmter Funktionalitäten der Recheneinheit unterbunden bzw. die Unterbindung die Verwendung bestimmter Funktionalitäten der Recheneinheit veranlasst, und/oder, durch die Nachweiseinheit und/oder die Bestätigungseinheit, eine Fehlermeldung in einem Protokoll gespeichert und/oder an eine entfernte Überwachungseinheit gesendet. Soweit die Nachweiseinheit die Ausführung des gespeicherten Programmcodes unterbindet bzw. eine Unterbindung der Ausführung des gespeicherten Programmcodes veranlasst, sollten die Nachweiseinheit und/oder die zu prüfende Recheneinheit über eine entsprechende Funktionalität verfügen. Etwa durch ein Sicherheitsmodul (z.B. HSM) oder ähnliches implementiert. Wenn beispielsweise die Nachweiseinheit nicht Teil der zu prüfenden Recheneinheit ist, kann die zu prüfende Recheneinheit ein solches Sicherheitsmodul umfassen, und die Nachweiseinheit kann an dieses eine Anweisung senden, die Ausführung des gespeicherten Programmcodes zu unterbinden, d.h. die Nachweiseinheit veranlasst die Unterbindung. Wen beispielsweise die Nachweiseinheit Teil der zu prüfenden Recheneinheit ist, insbesondere wenn die Nachweiseinheit ein solches Sicherheitsmodul umfass, kann die Nachweiseinheit die Ausführung des gespeicherten Programmcodes direkt unterbinden. Die Unterbindung die Verwendung bestimmter Funktionalitäten der Recheneinheit bezieht sich darauf, dass nur ein eingeschränkter Funktionsumfang der Recheneinheit verwendet wird, wenn die Integrität nicht bestätigt wird.
  • Bevorzugt ist die Nachweiseinheit dazu eingerichtet, einen Speicherbereich, in dem der gespeicherte Programmcode in der zu prüfenden Recheneinheit gespeichert ist, auszulesen; und/oder die zu prüfende Recheneinheit dazu eingerichtet, den Inhalt des Speicherbereichs, in dem der gespeicherte Programmcode in der zu prüfenden Recheneinheit gespeichert ist, in Reaktion auf eine entsprechende Aufforderung von der Nachweiseinheit an die Nachweiseinheit zu übermitteln. Dies ist insbesondere zweckmäßig, wenn die Nachweiseinheit nicht in der zu prüfenden Recheneinheit implementiert ist.
  • Bevorzugt umfasst das Verfahren ein Ergänzen der Liste um wenigstens ein neues Paar, wobei durch die Bestätigungseinheit eine Anforderung, das wenigstens eine neue Paar für die Liste zu erzeugen, an die Nachweiseinheit übermittelt wird, durch die Nachweiseinheit wenigstens eine neue Referenz-Prüfsumme basierend auf wenigstens einer neuen Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion berechnet wird, durch die Nachweiseinheit das wenigstens eine neue Paar, das die wenigstens eine neue Zufalls-Zeichenkette und die wenigstens eine neue Referenz-Prüfsumme umfasst, an die Bestätigungseinheit übermittelt wird, und durch die Bestätigungseinheit die Liste durch das übermittelte wenigstens eine neue Paar ergänzt wird, wobei die wenigstens eine neue Zufalls-Zeichenkette durch die Bestätigungseinheit erzeugt und mit der Anforderung an die Nachweiseinheit übermittelt wird oder durch die Nachweiseinheit erzeugt wird, wobei insbesondere die wenigstens eine neue Zufalls-Zeichenkette als wenigstens eine Kette zufällig gewählter Zeichen erzeugt wird. Der Begriff „Ergänzen“ schließt auch ein Ergänzen einer leeren Liste um Einträge bzw. Paare ein. Ein leere Liste kann z.B. dann gegeben sein, wenn nur eine einmalige Verwendung jedes Paares zugelassen ist und alle Paare „aufgebraucht“ sind, d.h. verwendet wurden. Auch kann dies unmittelbar nach Programmierung, d.h. Schreiben des Programmcodes in den Speicher der zu prüfenden Recheneinheit der Fall sein, etwa bei der Fertigung des Fahrzeugs bzw. der Maschine, in der die zu prüfende Recheneinheit verwendet wird, oder bei Einbau der zu prüfenden Recheneinheit. Bei der Programmierung kann davon ausgegangen werden, dass der gespeicherte Programmcode nicht manipuliert ist, da dies in einer abgesicherten Umgebung geschieht.
  • Weiter bevorzugt wird das Ergänzen der Liste durchgeführt, wenn (bzw. nachdem) die Integrität bestätigt wird, und/oder nicht durchgeführt wird, wenn die Integrität nicht bestätigt wird. Wenn nur eine einmalige Verwendung jedes Paares zugelassen ist, kann der Fall auftreten, dass nur noch ein Paar oder einige wenige Paare in der List noch nicht verwendet wurden. Entsprechend kann, bevor alle Paare verwendet wurden, ein Ergänzen vorgesehen sein, wobei dadurch, dass dies nur dann erfolgt, wenn die Integrität bestätigt wurde, sichergestellt wird, dass der gespeicherte Programmcode, basierend auf dem die neuen Referenz-Prüfwerte berechnet werden, nicht manipuliert ist. Die Anforderung, neue Paare zu erzeugen, sollte innerhalb eines möglichst kurzen Zeitraums nach der Bestätigung der Integrität erfolgen, so dass eine Manipulation innerhalb dieses kurzen Zeitraums unwahrscheinlich oder sogar ausgeschlossen ist, etwa, wenn der Zeitraum kürzer als eine zum Schreiben neuen Programmcodes notwendige Zeitdauer ist. Falls die zu prüfende Recheneinheit über ein Sicherheitsmodul o.Ä. verfügt, das entsprechende Funktionalitäten aufweist, kann vorgesehen sein, dass die zu prüfende Recheneinheit in einen abgesicherten Zustand (Speicherschutz) versetzt wird, in dem Schreiben bzw. Neuprogrammieren von Programmcode in der zu prüfenden Recheneinheit unterbunden wird, wenn bzw. sobald die Integrität bestätigt wird, oder mit der Anforderung, und erst wieder erlaubt wird, nachdem die wenigstens eine neue Referenz-Prüfsumme berechnet wurde.
  • Ein erfindungsgemäßes System ist dazu eingerichtet, das erfindungsgemäße Verfahren durchzuführen. Eine erfindungsgemäße Bestätigungseinheit oder Nachweiseinheit ist dazu eingerichtet (insbesondere programmtechnisch), die Schritte des erfindungsgemäßen Verfahrens, die dazu vorgesehen sind, von der Bestätigungseinheit bzw. Nachweiseinheit durchgeführt zu werden, durchzuführen.
  • Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form von Computerprogrammen bzw. Computerprogrammmodulen oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn die ausführende Recheneinheit noch für weitere Aufgaben genutzt wird. Schließlich ist ein maschinenlesbares Speichermedium vorgesehen mit einem darauf gespeicherten Computerprogramm bzw. Computerprogrammmodul 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 von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
  • Kurze Beschreibung der Zeichnungen
    • 1 zeigt ein Ablaufdiagramm gemäß einer bevorzugten Ausführungsform der Erfindung.
    • 2A, 2B zeigen schematisch Systeme mit einer Bestätigungseinheit und einer Nachweiseinheit, die zur Integritätsprüfung eines in einer zu prüfenden Recheneinheit gespeicherten Computerprogramms eingesetzt werden.
  • Ausführungsform(en) der Erfindung
  • 1 zeigt ein Ablaufdiagramm gemäß einer bevorzugten Ausführungsform der Erfindung.
  • In einem optionalen Schritt 100 wird, etwa durch eine Programmiereinheit, beim Programmieren einer Recheneinheit (im Weiteren zu prüfende Recheneinheit) mit dem Computerprogramm bzw. Speichern/Schreiben des Referenz-Programmcodes des Computerprogramms eine Liste mit Paaren, die jeweils eine Zeichenkette und einen Referenz-Prüfwert umfassen (oder aus diesen bestehen), erzeugt und durch eine Bestätigungseinheit gespeichert (d.h. in einem Speicher der Bestätigungseinheit gespeichert und/oder in einem Speicher, auf den die Bestätigungseinheit Zugriff hat gespeichert). Der Referenz-Prüfwert jedes Paares wird dabei durch die Programmiereinheit, die über den Referenz-Programmcode verfügt, basierend auf dem Referenz-Programmcode und der Zufallszeichenkette des jeweiligen Paares mittels einer Prüffunktion (insbesondere Hashfunktion) berechnet. Die Zufallszeichenketten werden zufällig gewählt. Die Anzahl der Paare in der Liste kann z.B. abhängig von der geplanten Einsatzdauer der zu prüfenden Recheneinheit und/oder der Integritäts-Prüfungsfrequenz gewählt werden. Die Liste kann z.B. einige bis einige hundert oder einige tausend Paare umfassen. Die weiteren Schritte beziehen sich auf die Integritätsbestätigung während des regulären Einsatzes des Computerprogramms in der zu prüfenden Recheneinheit.
  • In Schritt 110 wird durch die Bestätigungseinheit eines der Paare der Liste von Paaren ausgewählt, z.B. zufällig oder entsprechend einer Reihenfolge der Listeneinträge. Vorzugsweise wird bei mehrmaliger Durchführung jedes Paar maximal einmal ausgewählt. Die im ausgewählten Paar enthaltene Zeichenkette wird in einem Schritt 120 mittels einer Datenverbindung (z.B. Mobilfunkverbindung) an eine Nachweiseinheit übermittelt bzw. gesendet, die die Zeichenkette empfängt.
  • Im bevorzugten Schritt 130 berechnet die Nachweiseinheit mittels der Prüffunktion basierend auf der übermittelten bzw. empfangenen Zeichenkette und dem in der zu prüfenden Recheneinheit gespeicherten Programmcode einen Vergleichs-Prüfwert. Die Nachweiseinheit sollte dazu direkt oder indirekt Zugriff auf den Speicherbereich der zu prüfenden Recheneinheit haben, in dem der Programmcode gespeichert ist. Ein direkter Zugriff kann gegeben sein, wenn die Nachweiseinheit in der zu prüfenden Recheneinheit umfasst ist oder wenn ein Direkt-Speicherzugriff (DMA: Direct Memory Access) gegeben ist. Ein indirekter Zugriff kann z.B. dadurch gegeben sein, dass die zu prüfende Recheneinheit dazu eingerichtet ist, in Reaktion auf eine entsprechende Aufforderung (Speicherbereichsabfrage), den Inhalt dieses Speicherbereichs an die Nachweiseinheit zu übermitteln.
  • Der berechnete Vergleichs-Prüfwert wird im bevorzugten Schritt 140 von der Nachweiseinheit an die Bestätigungseinheit übermittelt bzw. gesendet, die diesen empfängt.
  • In Schritt 150 führt die Bestätigungseinheit einen Vergleich zwischen dem übermittelten bzw. empfangenen Vergleichs-Prüfwert und dem Referenz-Prüfwert des in Schritt 110 ausgewählten Paares durch. Wenn der Vergleichs-Prüfwert gleich dem Referenz-Prüfwert ist, wird davon ausgegangen, dass der gespeicherte Programmcode unverändert bzw. nicht manipuliert ist, es wird also die Integrität des gespeicherten Programmcodes bestätigt. Andernfalls, d.h. wenn der Vergleichs-Prüfwert nicht gleich dem Referenz-Prüfwert ist, wird die Integrität des gespeicherten Programmcodes nicht bestätigt. Diese Bestätigung bzw. Nicht-Bestätigung erfolgt im Sinne der Prüffunktion, d.h. die Prüffunktion sollte die Eigenschaft aufweisen, dass unterschiedliche Eingaben zu unterschiedlichen Ausgaben führen, so dass, wenn der gespeicherte Programmcode gegenüber dem Referenz-Programmcode geändert wurde, die Prüfwerte nicht übereinstimmen. Da zusätzlich die Zeichenkette eingeht, die für verschiedene Integritätsprüfungen verschieden ist, wird sichergestellt, insbesondere bei maximal einmaliger Verwendung jedes Paares der Liste, dass erkannt wird, wenn bereits ermittelte (vor Manipulation, korrekte) Vergleichs-Prüfwerte von einem Angreifer aufgezeichnet und später (nach Manipulation) wiedergegeben werden (sogenannter Replay-Angriff). Wenn innerhalb eines maximalen Zeitraums nach Übermitteln der Zufalls-Zeichenkette kein Vergleichs-Prüfwert empfangen wird, wird die Integrität ebenfalls nicht bestätigt, d.h. es wird von einer Manipulation ausgegangen.
  • Wenn die Integrität nicht bestätigt wird, kann in einem bevorzugten Schritt 160 eine Fehlermeldung o.Ä. erzeugt werden, die z.B. protokolliert oder an eine Überwachungseinheit gesendet wird. Insbesondere kann in diesem Fall auch ein Unterbinden der Ausführung des gespeicherten Programmcodes vorgesehen sein (etwa wenn in der zu prüfenden Recheneinheit ein Sicherheitsmodul mit geeigneter Funktionalität vorgesehen ist).
  • Wenn andererseits die Integrität bestätigt wird, wird in einem bevorzugten Schritt 170 die Ausführung des gespeicherten Programmcodes zugelassen. Optional kann nach Schritt 170 vorgesehen sein, dass das Verfahren, d.h. die Integritätsbestätigung erneut durchgeführt wird, d.h. es kann zu Schritt 110 zurückgesprungen werden (Pfeil 175). Dies kann z.B. an regelmäßig oder zufällig gewählten Zeitpunkten erfolgen.
  • In beiden Fällen (Schritte 160, 170) könnte zusätzlich oder alternativ auch vorgesehen sein, dass eine Nachricht mit dem Ergebnis der Integritätsprüfung an eine andere Recheneinheit (etwa die Datenkommunikationseinheit in 2A oder 2B) übermittelt bzw. gesendet wird.
  • In einem bevorzugten Schritt 180 kann ein Ergänzen der Liste um ein oder mehrere neue Paare (mit neuen Zeichenketten und neuen Referenz-Prüfwerten) erfolgen. Es wird hier davon ausgegangen, dass ein nicht manipulierter Zustand der zu prüfenden Recheneinheit vorliegt (etwa nachdem die Integrität des gespeicherten Programmcodes bestätigt wurde). Die neuen Zeichenketten werden beispielsweise von der Bestätigungseinheit oder der Nachweiseinheit zufällig gewählt. Die Nachweiseinheit berechnet mittels der Prüffunktion basierend auf den neuen Zeichenketten und dem gespeicherten Programmcode die neuen Referenz-Prüfwerte. Anschließend werden die neuen Paare an die Bestätigungseinheit übermittelt und von dieser die Liste um die neuen Paare ergänzt, d.h. es werden neue Listeneinträge erzeugt. In Schritt 110 bzw. statt der dort beschriebenen Vorgehensweise zur Erzeugung der Liste könnte dort ebenso die Vorgehensweise nach Schritt 180 verwendet werden.
  • 2A zeigt schematisch ein System mit einer (entfernten) Bestätigungseinheit 2 und einer Nachweiseinheit 4, die zur Integritätsprüfung eines in einer zu prüfenden Recheneinheit 6 gespeicherten Computerprogramms eingesetzt werden. Die Bestätigungseinheit 2, die Nachweiseinheit 4 bzw. die zu prüfende Recheneinheit 6 sind dazu eingerichtet, diejenigen Schritte des Verfahrens zur Fernbestätigung der Integrität eines Computerprogramms, die sie jeweilig betreffen, auszuführen.
  • Bei der zu prüfenden Recheneinheit 6 handelt es sich beispielhaft um ein Steuergerät eines Fahrzeugs 8. Die Nachweiseinheit 4 ist ebenso in dem Fahrzeug 8 vorgesehen und kann mit der Nachweiseinheit 4 über eine drahtgebundene oder drahtlose Verbindung Daten austauschen (Pfeil 12). Z.B. könnten die Nachweiseinheit 4 und die zu prüfende Recheneinheit 6 über Ethernet oder einen CAN-Bus verbunden sein (CAN: Controller Area Network). Die Nachweiseinheit 4 kann eine eigens zur Implementierung des erfindungsgemäßen Verfahrens vorgesehene Nachweiseinheit sein oder in einer Recheneinheit, die auch für andere Funktionen verwendet wird, eingeschlossen sein. Die Nachweiseinheit 4 könnte insbesondere in der zu prüfenden Recheneinheit 6 eingeschlossen sein. Die dargestellte Ausführung, in der die Nachweiseinheit 4 von der zu prüfenden Recheneinheit 6 getrennt ist, ist zweckmäßig, wenn die zu prüfende Recheneinheit nicht über ausreichend Ressourcen (Rechenleistung, Speicher) verfügt, um selbst als Nachweiseinheit wirken zu können, insbesondere zu wenig Ressourcen, um den Vergleichs-Prüfwert mittels der Prüffunktion zu berechnen. Bei wie gezeigt getrennter Ausführung sollte die Nachweiseinheit 4 den Speicherbereich der zu prüfenden Recheneinheit 6, in dem der Programmcode gespeichert ist, auslesen können oder die zu prüfende Recheneinheit 6 diesen Speicherbereich (bzw. darin gespeicherte Daten) an die Nachweiseinheit 4 übermitteln können. Anders als dargestellt ist es prinzipiell auch möglich, dass sich die Nachweiseinheit 4 nicht in dem Fahrzeug 8, bzw. allgemeiner einer Maschine, die durch die zu prüfende Recheneinheit 6 gesteuert wird, befindet.
  • Die Bestätigungseinheit 2, beispielsweise ein Rechnersystem oder Server, befindet sich entfernt von der zu prüfenden Recheneinheit 6 und der Nachweiseinheit 4. Die Bestätigungseinheit 2 ist mit der Nachweiseinheit 4 zum Datenaustausch verbunden (Pfeil 14). Dazu wird vorzugsweise eine drahtlose Verbindung, z.B. eine Mobilfunk-Verbindung, verwendet.
  • Weiterhin ist eine Datenkommunikationseinheit 10 dargestellt, die dazu eingerichtet ist, Daten mit der zu prüfenden Recheneinheit 6 zu kommunizieren. Es kann sich um Daten, die von der Datenkommunikationseinheit 10 an die zu prüfende Recheneinheit 6 gesendet werden, um von dieser verwendet zu werden, und/oder um Daten, die von der zu prüfenden Recheneinheit 6 an die Datenkommunikationseinheit 10 gesendet werden, um von der Datenkommunikationseinheit verwendet zu werden, handeln. Die Datenkommunikationseinheit 10 kann die Datenkommunikation (Pfeil 18) mit der zu prüfenden Recheneinheit in Abhängigkeit von dem Ergebnis der Integritätsprüfung durchführen. Dazu wird das Ergebnis, ob oder ob nicht die Integrität bestätigt wurde, von der Bestätigungseinheit 10 an die Datenkommunikationseinheit 10 gesendet (Pfeil 16). Insbesondere kann vorgesehen sein, dass bestimmte Daten nur dann von der Datenkommunikationseinheit 10 an die zu prüfende Recheneinheit 6 gesendet werden, wenn die Integrität bestätigt wurde (ansonsten werden keine oder andere Daten gesendet). Ebenso kann vorgesehen sein, dass Daten, die von der zu prüfenden Recheneinheit 6 an die Datenkommunikationseinheit 10 gesendet werden, von der Datenkommunikationseinheit nicht oder nur in eingeschränktem Umfang (d.h. bestimmte Computerprogramme) verwendet werden.
  • Wenn, wie dargestellt, die zu prüfende Recheneinheit 6 in einem Fahrzeug 8 als Steuergerät verwendet wird, könnte es sich beispielsweise bei der Datenkommunikationseinheit 10 um ein Steuergerät eines anderen Fahrzeugs oder ein Rechensystem, das Daten, die ein bestimmtes geografisches Gebiet betreffen (sogenannter Edge-Server), verarbeitet, handeln. In diesem Fall könnten die Daten autonome Fahrfunktionen, die z.B. kooperativ ausgeführt werden, betreffen, wobei die Datenkommunikationseinheit 10 von der zu prüfenden Recheneinheit 6 übermittelte Daten nur dann verwendet, wenn die Integrität bestätigt wurde, da ansonsten eine Manipulation vorliegen könnte, die im Zusammenhang mit der autonomen Fahrfunktion zu Gefährdungen führen könnte.
  • In 2A befinden sich die Bestätigungseinheit 2 und die Datenkommunikationseinheit 10 außerhalb des Fahrzeugs 8. Diese können sich unabhängig voneinander auch im Fahrzeug 8 befinden. In 2B ist der Fall dargestellt, dass sich beide im Fahrzeug 8 befinden. Zusätzlich ist in 2B die Nachweiseinheit 4 beispielhaft in der (zu prüfenden) Recheneinheit 6 umfasst, z.B. als Sicherheitsmodul bzw. Hardwaresicherheitsmodul der Recheneinheit 6.
  • Die Bestätigungseinheit 2 kann als zentrale Bestätigungs-Recheneinheit im Fahrzeug 8 angesehen werden, die die Integrität von Programmcode in zu prüfenden Recheneinheiten bestätigt, z.B. wenn die zu prüfende Recheneinheit Hardwarevoraussetzungen nicht erfüllt, um Integritätsprüfungen selbst durchzuführen. Die Datenkommunikationseinheit 10 könnte z.B. ein Steuergerät des Fahrzeugs 8 sein, das Daten mit der zu prüfenden Recheneinheit 6, die ebenfalls ein Steuergerät des Fahrzeugs sein kann, austauscht. Die Verbindungen zum Datenaustausch zwischen der Bestätigungseinheit 2, der Nachweiseinheit 4 bzw. der zu prüfenden Recheneinheit 6 (die Nachweiseinheit 4 verwendet als Komponente der zu prüfenden Recheneinheit 6 insbesondere deren Kommunikationsschnittstellen) und der Datenkommunikationseinheit 10 sind in der Ausgestaltung der 2B vorzugsweise drahtgebunden ausgeführt, z.B. über Ethernet oder einen CAN-Bus.
  • Abgesehen von der Anordnung der Bestätigungseinheit 2, der Datenkommunikationseinheit 10 und der Nachweiseinheit 4 und deren Datenaustausch-Verbindung gelten weiterhin die Ausführungen zu 2A, so dass die Beschreibung hier nicht wiederholt, sondern auf die Beschreibung der 2A verwiesen wird.

Claims (16)

  1. Verfahren zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit (6) unter Verwendung einer Bestätigungseinheit (2), wobei das Computerprogramm durch einen Referenz-Programmcode spezifiziert ist und in der zu prüfenden Recheneinheit in Form gespeicherten Programmcodes vorliegt, umfassend: Auswählen (110), durch die Bestätigungseinheit (2), eines Paares aus einer Liste von Paaren, in der jedes Paar eine Zufalls-Zeichenkette und einen Referenz-Prüfwert umfasst, der basierend auf der Zufalls-Zeichenkette des jeweiligen Paares und dem Referenz-Programmcode mittels einer Prüfwert-Funktion berechnet wurde; Übermitteln (120), durch die Bestätigungseinheit (2), der Zufalls-Zeichenkette des ausgewählten Paares an eine Nachweiseinheit (4); Empfangen, durch die Bestätigungseinheit (2), eines Vergleichs-Prüfwerts, der basierend auf der übermittelten Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion berechnet wurde; Vergleichen (150), durch die Bestätigungseinheit (2), des empfangenen Vergleichs-Prüfwerts mit dem Referenz-Prüfwert des ausgewählten Paares, wobei die Integrität des gespeicherten Programmcodes bestätigt wird, wenn der empfangene Vergleichs-Prüfwert gleich dem Referenz-Prüfwert des ausgewählten Paares ist, und nicht bestätigt wird, wenn der empfangene Vergleichs-Prüfiniert nicht gleich dem Referenz-Prüfwert des ausgewählten Paares ist.
  2. Verfahren nach Anspruch 1, wobei durch die Bestätigungseinheit (2) das ausgewählte Paar als nicht mehr auswählbar gekennzeichnet wird oder von der Liste gestrichen wird; und/oder wobei bei mehrmaliger Durchführung jedes Paar maximal einmal durch die Bestätigungseinheit ausgewählt wird.
  3. Verfahren nach einem der vorstehenden Ansprüche, umfassend: Warten nach dem Übermitteln der Zufalls-Zeichenkette, bis der Vergleichs-Prüfiniert empfangen wird oder ein vorbestimmter maximaler Zeitraum verstrichen ist, wobei die Integrität des gespeicherten Programmcodes nicht bestätigt wird, wenn der Vergleichs-Prüfwert nicht innerhalb des vorbestimmten maximalen Zeitraums empfangen wird.
  4. Verfahren nach einem der vorstehenden Ansprüche, wobei die Liste von Paaren durch eine Programmiereinheit, die das Referenz-Computerprogramm in der Recheneinheit speichert bzw. an die Recheneinheit überträgt und dessen Speicherung veranlasst, erzeugt wird und an die Bestätigungseinheit übermittelt wird (100).
  5. Verfahren nach einem der vorstehenden Ansprüche, umfassend: Übermitteln, durch die Bestätigungseinheit (2), eines Ergebnisses, ob oder ob nicht die Integrität bestätigt wird, an eine Datenkommunikationseinheit (10), die zur Datenkommunikation mit der zu prüfenden Recheneinheit eingerichtet ist; Senden, durch die Datenkommunikationseinheit (10), von Daten an die zu prüfende Recheneinheit (2) in Abhängigkeit von dem Ergebnis; und/oder Verwenden, durch die Datenkommunikationseinheit, von der zu prüfenden Recheneinheit empfangener Daten in Abhängigkeit von dem Ergebnis.
  6. Verfahren nach einem der vorstehenden Ansprüche, Empfangen, durch die Nachweiseinheit (4), der Zufalls-Zeichenkette, die von der Bestätigungseinheit übermittelt bzw. gesendet wurde; Berechnen (130), durch die Nachweiseinheit (4), eines Vergleichs-Prüfwerts basierend auf der empfangenen Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion; Übermitteln bzw. Senden (140), durch die Nachweiseinheit (4), des Vergleichs-Prüfwerts an die Bestätigungseinheit (2).
  7. Verfahren nach einem der vorstehenden Ansprüche, wobei die Prüfwert-Funktion auf eine Zeichenkette angewandt wird, die durch Aneinanderfügen der Zufalls-Zeichenkette und des Referenz-Programmcodes bzw. des gespeicherten Programmcodes erhalten wird; und/oder wobei die Prüfwert-Funktion eine kryptographische Hashfunktion ist bzw. umfasst; und/oder wobei die Prüfwert-Funktion als Nachrichtenauthentifizierungscode implementiert ist.
  8. Verfahren nach einem der vorstehenden Ansprüche, wobei, wenn die Integrität nicht bestätigt wird, durch die Bestätigungseinheit (2) an die Nachweiseinheit (4) übermittelt wird, dass die Integrität nicht bestätigt wird, und durch die Nachweiseinheit (4), die Ausführung des gespeicherten Programmcodes unterbunden wird (160) oder die Unterbindung der Ausführung des gespeicherten Programmcodes veranlasst wird und/oder durch die Nachweiseinheit die Verwendung bestimmter Funktionalitäten der Recheneinheit unterbunden bzw. die Unterbindung die Verwendung bestimmter Funktionalitäten der Recheneinheit veranlasst; und/oder, durch die Nachweiseinheit (4) und/oder die Bestätigungseinheit (2), eine Fehlermeldung in einem Protokoll gespeichert und/oder an eine entfernte Überwachungseinheit gesendet wird.
  9. Verfahren nach einem der vorstehenden Ansprüche, wobei die Nachweiseinheit (4) als Hardwaremodul in der zu prüfenden Recheneinheit (6) und/oder als in der zu prüfenden Recheneinheit ausgeführtes Softwaremodul implementiert ist.
  10. Verfahren nach einem der Ansprüche 1 bis 8, wobei die Nachweiseinheit (4) als Hardwaremodul in einer Nachweis-Recheneinheit und/oder als in der Nachweis-Recheneinheit ausgeführtes Softwaremodul implementiert ist; wobei die Nachweis-Recheneinheit von der zu prüfenden Recheneinheit verschieden ist.
  11. Verfahren nach einem der vorstehenden Ansprüche, wobei die Nachweiseinheit (4) dazu eingerichtet ist, einen Speicherbereich, in dem der gespeicherte Programmcode in der zu prüfenden Recheneinheit (6) gespeichert ist, auszulesen; und/oder wobei die zu prüfende Recheneinheit (6) dazu eingerichtet ist, den Inhalt des Speicherbereichs, in dem der gespeicherte Programmcode in der zu prüfenden Recheneinheit gespeichert ist, in Reaktion auf eine entsprechende Aufforderung von der Nachweiseinheit (4) an die Nachweiseinheit zu übermitteln.
  12. Verfahren nach einem der vorstehenden Ansprüche, umfassend ein Ergänzen (180) der Liste um wenigstens ein neues Paar, wobei, durch die Bestätigungseinheit (2) eine Anforderung, das wenigstens eine neue Paar für die Liste zu erzeugen, an die Nachweiseinheit (4) übermittelt wird; durch die Nachweiseinheit (4) wenigstens eine neue Referenz-Prüfsumme basierend auf wenigstens einer neuen Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion berechnet wird; durch die Nachweiseinheit (4) das wenigstens eine neue Paar, das die wenigstens eine neue Zufalls-Zeichenkette und die wenigstens eine neue Referenz-Prüfsumme umfasst, an die Bestätigungseinheit (2) übermittelt wird; und durch die Bestätigungseinheit (2) die Liste durch das übermittelte wenigstens eine neue Paar ergänzt wird; wobei die wenigstens eine neue Zufalls-Zeichenkette durch die Bestätigungseinheit erzeugt und mit der Anforderung an die Nachweiseinheit übermittelt wird, oder durch die Nachweiseinheit erzeugt wird, wobei insbesondere die wenigstens eine neue Zufalls-Zeichenkette als wenigstens eine Kette zufällig gewählter Zeichen erzeugt wird.
  13. Verfahren nach Anspruch 12, wobei das Ergänzen (180) der Liste durchgeführt wird, wenn die Integrität bestätigt wird, und/oder nicht durchgeführt wird, wenn die Integrität nicht bestätigt wird.
  14. Bestätigungseinheit (2) zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit (6), wobei das Computerprogramm durch einen Referenz-Programmcode spezifiziert ist und in der zu prüfenden Recheneinheit in Form gespeicherten Programmcodes vorliegt, wobei die Bestätigungseinheit dazu eingerichtet ist, ein Paar aus einer Liste von Paaren auszuwählen (100), wobei in der jedes Paar eine Zufalls-Zeichenkette und einen Referenz-Prüfwert umfasst, der basierend auf der Zufalls-Zeichenkette des jeweiligen Paares und dem Referenz-Programmcode mittels einer Prüfwert-Funktion berechnet wurde; die Zufalls-Zeichenkette des ausgewählten Paares an eine Nachweiseinheit (4) zu übermitteln (120); einen Vergleichs-Prüfwert von der Nachweiseinheit zu empfangen; den empfangenen Vergleichs-Prüfwert mit dem Referenz-Prüfwert des ausgewählten Paares zu vergleichen (150); die Integrität des gespeicherten Programmcodes zu bestätigen, wenn der übermittelte Vergleichs-Prüfwert gleich dem Referenz-Prüfwert des ausgewählten Paares ist, und die Integrität des gespeicherten Programmcodes nicht zu bestätigen, wenn der übermittelte Vergleichs-Prüfwert nicht gleich dem Referenz-Prüfwert des ausgewählten Paares ist.
  15. Nachweiseinheit (4), zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit (6), wobei das Computerprogramm durch einen Referenz-Programmcode spezifiziert ist und in der zu prüfenden Recheneinheit in Form gespeicherten Programmcodes vorliegt, wobei die Nachweiseinheit dazu eingerichtet ist, eine Zufalls-Zeichenkette von einer Bestätigungseinheit zu empfangen; einen Vergleichs-Prüfwerts basierend auf der empfangenen Zufalls-Zeichenkette und dem gespeicherten Programmcode mittels der Prüfwert-Funktion zu berechnen (130); den Vergleichs-Prüfwert an die Bestätigungseinheit zu übermitteln (140).
  16. System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit (2), wobei das Computerprogramm durch einen Referenz-Programmcode spezifiziert ist und in der zu prüfenden Recheneinheit in Form gespeicherten Programmcodes vorliegt, wobei das System eine Bestätigungseinheit (2) und eine Nachweiseinheit (4) umfasst und dazu eingerichtet ist, das Verfahren nach einem der Ansprüche 1 bis 13 durchzuführen.
DE102022203720.0A 2022-04-13 2022-04-13 Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit Pending DE102022203720A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102022203720.0A DE102022203720A1 (de) 2022-04-13 2022-04-13 Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit
CN202310390091.3A CN116910819A (zh) 2022-04-13 2023-04-12 远程确认要检查计算单元中计算机程序的完整性的方法和系统
US18/184,331 US20230333964A1 (en) 2022-04-13 2023-07-26 Method and system for remote verification of the integrity of a computer program in a computing unit to be checked

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102022203720.0A DE102022203720A1 (de) 2022-04-13 2022-04-13 Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit

Publications (1)

Publication Number Publication Date
DE102022203720A1 true DE102022203720A1 (de) 2023-10-19

Family

ID=88191864

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022203720.0A Pending DE102022203720A1 (de) 2022-04-13 2022-04-13 Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit

Country Status (3)

Country Link
US (1) US20230333964A1 (de)
CN (1) CN116910819A (de)
DE (1) DE102022203720A1 (de)

Also Published As

Publication number Publication date
CN116910819A (zh) 2023-10-20
US20230333964A1 (en) 2023-10-19

Similar Documents

Publication Publication Date Title
DE102017125826A1 (de) Nachrichtenauthentifizierung über controller area network
DE102020124163A1 (de) Verifizierung von fahrzeugdaten
DE102016110414A1 (de) Verfahren und vorrichtungen zur steuerung der kommunikation von endpunkten in einem industrieunternehmenssystem auf der basis von integrität
DE102013105042A1 (de) Sicheres Flashprogrammieren eines sekundären Prozessors
DE102013108022A1 (de) Verfahren zum Aktivieren des Entwicklungsmodus eines gesicherten elektronischen Steuergeräts
DE102013108021A1 (de) Verfahren zum selektiven Software-Rollback
DE112011100182T5 (de) Transaktionsprüfung für Datensicherheitsvorrichtungen
DE102018101479A1 (de) Steuerungsschnittstelle für ein autonomes fahrzeug
WO2019081395A1 (de) Verfahren und vorrichtung zum aktualisieren von software eines kfz-steuergerätes
DE102012109619A1 (de) Verfahren zum Bereitstellen einer digitalen Signatur zum Sichern einer Flash-Programmierfunktion
EP3654222B1 (de) Fahrzeug, netzwerkkomponente, verfahren, computerprogramm und vorrichtung zum generieren einer kennung für einen ausrüstungszustand eines fahrzeugs
DE102014113582A1 (de) Vorrichtung, Verfahren und System für die kontextbewusste Sicherheitssteuerung in einer Cloud-Umgebung
DE102016221108A1 (de) Verfahren zum Aktualisieren einer Software eines Steuergeräts eines Fahrzeugs
WO2019063256A1 (de) System, insbesondere authentizitätssystem
EP2442251B9 (de) Individuelle Aktualisierung von Computerprogrammen
EP3369027A1 (de) Verfahren und sicherheitsmodul zum bereitstellen einer sicherheitsfunktion für ein gerät
EP3811261B1 (de) Kryptografiemodul und betriebsverfahren hierfür
EP3337085A1 (de) Nachladen kryptographischer programminstruktionen
DE102022105476A1 (de) System und Verfahren zum Aufbauen eines fahrzeugintegrierten Kryptografiemanagers
DE112019003096T5 (de) Abgesicherte kommunikation aus einer nichtflüchtigen speichervorrichtung heraus
DE102022203720A1 (de) Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit
EP1614012A1 (de) Verfahren zur überprüfung der datenintegrität von software in steuergeräten
DE102022212965A1 (de) Sicheres kraftfahrzeugsystem
WO2022022997A1 (de) Kanalbasierte kommunikation in einem iot-netzwerk
DE102016225436A1 (de) Sensor zum Erfassen von Messwerten, Verfahren, Vorrichtung und computerlesbares Speichermedium mit Instruktionen zur Verarbeitung von Messwerten eines Sensors