DE102017208199A1 - Arithmetic unit and operating method for a computing unit - Google Patents

Arithmetic unit and operating method for a computing unit Download PDF

Info

Publication number
DE102017208199A1
DE102017208199A1 DE102017208199.6A DE102017208199A DE102017208199A1 DE 102017208199 A1 DE102017208199 A1 DE 102017208199A1 DE 102017208199 A DE102017208199 A DE 102017208199A DE 102017208199 A1 DE102017208199 A1 DE 102017208199A1
Authority
DE
Germany
Prior art keywords
function
machine code
code
arithmetic unit
ref
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
DE102017208199.6A
Other languages
German (de)
Inventor
Heiko Baur
Paulius Duplys
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 DE102017208199.6A priority Critical patent/DE102017208199A1/en
Publication of DE102017208199A1 publication Critical patent/DE102017208199A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Betreiben einer Recheneinheit (100), die dazu ausgebildet ist, ein Computerprogramm (CP) auszuführen, wobei das Computerprogramm (CP) wenigstens einen Funktionsaufruf einer in Form von Maschinencode bereitgestellten Funktion aufweist, umfassend die folgenden Schritte: Laden (200) wenigstens eines Teils des Maschinencodes der Funktion, Vergleichen (210) des wenigstens einen Teils des Maschinencodes der Funktion oder von hieraus abgeleiteten sekundären Daten mit einem vorgebbaren Referenzcode (REF).The invention relates to a method for operating a computing unit (100) which is designed to execute a computer program (CP), the computer program (CP) having at least one function call of a function provided in the form of machine code, comprising the following steps: loading ( 200) of at least a portion of the machine code of the function, comparing (210) the at least a portion of the machine code of the function or secondary data derived therefrom with a predetermined reference code (REF).

Description

Stand der TechnikState of the art

Die Erfindung betrifft eine Recheneinheit, die dazu ausgebildet ist, ein Computerprogramm auszuführen, wobei das Computerprogramm wenigstens einen Funktionsaufruf einer in Form von Maschinencode bereitgestellten Funktion aufweist. Die Erfindung betrifft ferner ein Betriebsverfahren für eine derartige Recheneinheit.The invention relates to a computing unit which is designed to execute a computer program, wherein the computer program has at least one function call of a function provided in the form of machine code. The invention further relates to an operating method for such a computing unit.

Recheneinheiten und Betriebsverfahren der vorstehend genannten Art sind bekannt. Über den Funktionsaufruf wird ermöglicht, die Funktionalität des Computerprogramms durch andere Computerprogramme bzw. Programmbibliotheken zu erweitern, indem das Computerprogramm unter Verwendung der genannten Funktionsaufrufe die in den anderen Computerprogrammen bzw. Programmbibliotheken vorliegenden Funktionen aufruft. Insbesondere ist dadurch auch eine getrennte Wartung und Modifikation des Computerprogramms einerseits und der Programmbibliotheken andererseits ermöglicht. Beispielsweise können Erweiterungen an der Programmbibliothek und den darin enthaltenen Funktionen vorgenommen werden, ohne dass das Computerprogramm geändert werden muss, und umgekehrt.Arithmetic units and operating methods of the aforementioned type are known. The function call makes it possible to extend the functionality of the computer program by other computer programs or program libraries in that the computer program calls the functions present in the other computer programs or program libraries using the function calls mentioned. In particular, this also allows separate maintenance and modification of the computer program on the one hand and the program libraries on the other hand. For example, extensions to the program library and the functions contained therein can be made without having to change the computer program, and vice versa.

Die in Form von Maschinencode bereitgestellte Funktion kann beispielsweise zusammen mit dem Computerprogramm, also in demselben Speicher der Recheneinheit, gespeichert werden, oder auch in einem anderen Speicher, insbesondere auch extern zu der Recheneinheit. Insbesondere kann die Funktion auch als Bestandteil von Systembibliotheken (libc, „stdio.h“, *.dll, usw.) von Betriebssystemen für die Recheneinheit oder Standardbibliotheken vorgesehen sein. Betriebssysteme bzw. Standardbibliotheken können beispielsweise bei einer Inbetriebnahme der Recheneinheit auf einem Speicher bzw. einer Speichereinrichtung der Recheneinheit vorab installiert werden und ein oder mehrere der vorstehend genannten Funktionen, insbesondere vorgesehen in Form von Standardbibliotheken, umfassen. Gegebenenfalls später auf der Recheneinheit auszuführende Anwendungsprogramme wie beispielsweise das vorstehend genannte Computerprogramm können dann vorteilhaft auf die bereits vorinstallierten Funktionen zugreifen, im Wege der vorstehend beschriebenen Funktionsaufrufe.The function provided in the form of machine code can be stored, for example, together with the computer program, that is to say in the same memory of the arithmetic unit, or also in another memory, in particular also externally to the arithmetic unit. In particular, the function may also be provided as part of system libraries (libc, "stdio.h", * .dll, etc.) of operating systems for the computing unit or standard libraries. Operating systems or standard libraries, for example, can be installed in advance on a memory or a memory device of the arithmetic unit during commissioning of the arithmetic unit and comprise one or more of the aforementioned functions, in particular provided in the form of standard libraries. Optionally later on the arithmetic unit to be executed application programs such as the aforementioned computer program can then advantageously access the already pre-installed functions, by way of the function calls described above.

Es ist bekannt, dass Angriffe auf bestehende Systeme und deren Implementierungen derart möglich sind, dass bestehende Funktionen, die beispielsweise Bestandteil von Systembibliotheken oder Standardbibliotheken sind, gegen manipulierte Funktionen ausgetauscht werden, welche z.B. zusätzlich zu oder anstelle der regulären Funktionalitäten der bestehenden Programmfunktionen Schadcode und dergleichen enthalten. Beispielsweise kann direkt der Maschinencode der betreffenden Funktion ausgetauscht bzw. manipuliert („gepatcht“) werden. Dadurch werden die manipulierten Funktionen gleichsam in eine man-in-the-middle-Angriffsposition versetzt, die es ihnen ermöglicht, Funktionsaufrufe bzw. Systemaufrufe (Funktionsaufrufe von Funktionen, die von einem Betriebssystem bereitgestellt werden) von auf der Recheneinheit ablaufenden Anwendungsprogrammen zu manipulieren und/oder deren Ausgabe bzw. Rückgabewerte an das Anwendungsprogramm zu verändern bzw. zu kopieren und ggf. an einen unbefugten Empfänger zu übermitteln.It is known that attacks on existing systems and their implementations are possible in such a way that existing functions, which for example are part of system libraries or standard libraries, are exchanged for manipulated functions, which are e.g. in addition to or instead of the regular functionalities of the existing program functions include malicious code and the like. For example, the machine code of the relevant function can be exchanged or manipulated ("patched") directly. This places the manipulated functions, as it were, in a man-in-the-middle attack position, allowing them to manipulate function calls or system calls (function calls of functions provided by an operating system) from application programs running on the arithmetic unit, and / or to change or copy their output or return values to the application program and if necessary to transmit them to an unauthorized recipient.

Offenbarung der ErfindungDisclosure of the invention

Demgemäß ist es Aufgabe der vorliegenden Erfindung, eine Recheneinheit der eingangs genannten Art und ein Betriebsverfahren der eingangs genannten Art dahingehend zu verbessern, dass eine gesteigerte Zuverlässigkeit und Sicherheit gegenüber den vorstehend genannten Angriffen gegeben ist.Accordingly, it is an object of the present invention to improve a computing unit of the type mentioned and an operating method of the type mentioned in that an increased reliability and security against the aforementioned attacks is given.

Diese Aufgabe wird bei dem Verfahren der eingangs genannten Art erfindungsgemäß durch die folgenden Schritte gelöst: Laden wenigstens eines Teils des Maschinencodes der Funktion, Vergleichen des wenigstens einen Teils des Maschinencodes der Funktion mit einem vorgebbaren Referenzcode. This object is achieved in the method of the type mentioned according to the invention by the following steps: loading at least a part of the machine code of the function, comparing the at least part of the machine code of the function with a predetermined reference code.

Alternativ können auch sekundäre Daten, die aus dem wenigstens einen geladenen Teil des Maschinencodes der Funktion abgeleitet worden sind, mit einem vorgebbaren Referenzcode verglichen werden.Alternatively, secondary data derived from the at least one loaded part of the machine code of the function may also be compared with a predefinable reference code.

Dies ermöglicht vorteilhaft die Feststellung der „Echtheit“ des betreffenden Maschinencodes bzw. wenigstens des geladenen Teils des Maschinencodes. Beispielsweise kann die Recheneinheit bei ihrer Herstellung oder zu einem späteren Zeitpunkt mit einem Referenzcode für eine bestimmte Funktion versehen werden, für die das Computerprogramm der Recheneinheit ein oder mehrere Funktionsaufrufe aufweist. Unter Anwendung des erfindungsgemäßen Prinzips kann die Recheneinheit dann, beispielsweise bevor der Funktionsaufruf der bestimmten Funktion erfolgen soll, wenigstens einen Teil des Maschinencodes der Funktion laden, und diesen geladenen Teil mit dem bereits in der Recheneinheit vorhandenen Referenzcode vergleichen. Sofern diese Informationen übereinstimmen, kann darauf geschlossen werden, dass es sich bei der Funktion bzw. dem Maschinencode, dessen Teil zuvor geladen und mit dem Referenzcode abgeglichen worden ist, um einen nicht manipulierten Maschinencode der Funktion handelt, mithin einen Maschinencode, der dem Referenzcode entspricht. Sofern diese Informationen nicht übereinstimmen, kann darauf geschlossen werden, dass es sich bei der Funktion bzw. dem Maschinencode, dessen Teil geladen und mit dem Referenzcode verglichen worden ist, um einen gegenüber dem ursprünglich vorhandenen Maschinencode der Funktion geänderten bzw. manipulierten Maschinencode handelt.This advantageously makes it possible to ascertain the "authenticity" of the relevant machine code or at least of the loaded part of the machine code. For example, the arithmetic unit can be provided with a reference code for a specific function during its manufacture or at a later time, for which the computer program of the arithmetic unit has one or more function calls. Using the principle according to the invention, the arithmetic unit can then load at least part of the machine code of the function, for example before the function call of the specific function is to take place, and Compare this loaded part with the already existing in the arithmetic unit reference code. If this information matches, it can be concluded that the function or machine code whose part has been previously loaded and matched with the reference code is a non-manipulated machine code of the function, hence a machine code corresponding to the reference code , Unless this information matches, it can be concluded that the function or machine code whose part has been loaded and compared to the reference code is a machine code modified or manipulated from the original machine code of the function.

Bei einer bevorzugten Ausführungsform umfasst der Schritt des Ladens wenigstens einen der folgenden Schritte: - Laden einer vorgebbaren Anzahl von Bytes von dem Anfang des Maschinencodes der Funktion, also beispielsweise das Laden von n vielen Bytes beginnend mit der Startadresse des Maschinencodes der Funktion, - Laden einer vorgebbaren Anzahl von Bytes von dem Ende des Maschinencodes der Funktion, also beispielsweise das Laden von m vielen Bytes bis hin zu der Endadresse des Maschinencodes der Funktion, - Laden einer vorgebbaren Anzahl von Bytes von einer vorgebbaren Stelle des Maschinencodes der Funktion, wobei die vorgebbare Stelle von dem Anfang und dem Ende des Maschinencodes bzw. der Startadresse und der Endadresse verschieden ist, - Laden einer vorgebbaren Anzahl von Bytes von einer pseudozufällig oder zufällig gewählten Stelle des Maschinencodes der Funktion. In a preferred embodiment, the loading step comprises at least one of the following steps: loading a predeterminable number of bytes from the beginning of the machine code of the function, eg loading n many bytes starting with the starting address of the machine code of the function, loading one predeterminable number of bytes from the end of the machine code of the function, thus, for example, the loading of m many bytes up to the end address of the machine code of the function, - loading a predefinable number of bytes from a predefinable position of the machine code of the function, wherein the specifiable location is different from the beginning and the end of the machine code and the starting address and the end address, respectively - Loading a predefinable number of bytes from a pseudorandom or randomly selected location of the machine code of the function.

Bei der vorstehend gewählten Variante - oder einer Kombination mehrerer Varianten hieraus - ist es zweckmäßig, einen hierzu passenden vorgebbaren Referenzcode für die Recheneinheit für den Vergleich mit den geladenen Daten bereitzustellen bzw. der Recheneinheit spätestens für den Zeitpunkt des Vergleichs verfügbar zu machen.In the above-selected variant - or a combination of several variants thereof - it is expedient to provide a matching predefinable reference code for the arithmetic unit for comparison with the loaded data or to make the arithmetic unit available at the latest for the time of comparison.

Das Bereitstellen des vorgebbaren Referenzcodes kann beispielsweise während einer Fertigung der Recheneinheit erfolgen, indem der vorgebbare Referenzcode in einen der Recheneinheit zugeordneten internen und/oder externen Speicher geschrieben wird. Alternativ oder ergänzend kann das Bereitstellen auch später, beispielsweise auch im Feld, erfolgen, indem ein oder mehrere entsprechende Referenzcodes an die Recheneinheit übermittelt werden, wobei diese von der Recheneinheit zumindest zeitweise, insbesondere für eine zukünftige Verwendung, gespeichert werden können.The predeterminable reference code can be provided, for example, during production of the arithmetic unit by writing the predefinable reference code into an internal and / or external memory assigned to the arithmetic unit. Alternatively or additionally, the provision can also be made later, for example also in the field, by transmitting one or more corresponding reference codes to the arithmetic unit, which can be stored by the arithmetic unit at least temporarily, in particular for future use.

Bei einer weiteren vorteilhaften Ausführungsform können die sekundären Daten in Abhängigkeit des geladenen wenigstens einen Teils des Maschinencodes unter Verwendung einer Hashfunktion (Streuwertfunktion) ermittelt werden. Insbesondere ist es bei weiteren Ausführungsformen möglich, ein oder mehrere Bereiche des Maschinencodes der Funktion zu laden und der Hashwertbildung zugrunde zu legen. Besonders bevorzugt kann eine kryptografisch sichere Hashfunktion, z.B. nach dem SHA-2-Standard (Spezifikation z.B. verfügbar unter der Internetadresse http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf), verwendet werden, wodurch die Manipulationssicherheit weiter gesteigert wird.In a further advantageous embodiment, the secondary data can be determined as a function of the loaded at least part of the machine code using a hash function (scatter value function). In particular, in further embodiments it is possible to load one or more areas of the machine code of the function and to base the hash value formation on. Particularly preferred may be a cryptographically secure hash function, e.g. according to the SHA-2 standard (specification available, for example, available at the Internet address http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf), thereby further enhancing tamper resistance.

Sofern sekundäre Daten von dem wenigstens einen geladenen Teil des Maschinencodes der Funktion abgeleitet werden, kann der Schritt des Vergleichens mit einem vorgebbaren Referenzcode einen Vergleich des Referenzcodes mit den sekundären Daten, z.B. dem entsprechenden Hashwert, umfassen. Beispielsweise kann in diesem Fall ein Referenz-Hashwert als Referenzcode vorgesehen sein.If secondary data is derived from the at least one loaded portion of the machine code of the function, the step of comparing with a predeterminable reference code may comprise comparing the reference code with the secondary data, e.g. the corresponding hash value. For example, in this case, a reference hash value may be provided as the reference code.

Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass eine Fehlerreaktion eingeleitet wird, wenn der Vergleich einen Unterschied zwischen dem wenigstens einen Teil des Maschinencodes der Funktion und dem Referenzcode oder zwischen den sekundären Daten und dem Referenzcode bzw. Referenz-Hashwert ergibt.In a further advantageous embodiment it is provided that an error reaction is initiated if the comparison results in a difference between the at least one part of the machine code of the function and the reference code or between the secondary data and the reference code or reference hash value.

Sofern der vorgenannte Vergleich keinen Unterschied ergibt, kann bei weiteren Ausführungsformen vorgesehen sein, dass die Funktion aufgerufen wird. In diesem Fall kann durch den vorangehenden erfindungsgemäßen Vergleich nämlich darauf geschlossen werden, dass der betreffende Funktionsaufruf des Computerprogramms gefahrlos ausgeführt werden kann, weil der Maschinencode der aufzurufenden Funktion als nicht manipuliert eingestuft worden ist.If the aforementioned comparison does not result in a difference, it can be provided in further embodiments that the function is called. In this case, it can be concluded from the preceding comparison according to the invention that the relevant function call of the computer program can be carried out without danger, because the machine code of the function to be called has been classified as non-manipulated.

Weitere Aspekte der vorliegenden Erfindung betreffen eine Recheneinheit gemäß Patentanspruch 7. Bei weiteren bevorzugten Ausführungsformen ist die Recheneinheit zur Ausführung wenigstens einer Ausführungsform des vorstehend beschriebenen Verfahrens ausgebildet.Further aspects of the present invention relate to a computing unit according to claim 7. In further preferred embodiments, the computing unit is designed to carry out at least one embodiment of the method described above.

Ein weiterer Aspekt der vorliegenden Erfindung ist durch eine Vorrichtung zur Verarbeitung von Daten gemäß Patentanspruch 9 angegeben. Die Vorrichtung ist zur Ausführung der folgenden Schritte ausgebildet: Speichern wenigstens eines Teils eines Maschinencodes einer mittels einer Recheneinheit, insbesondere mittels der erfindungsgemäßen Recheneinheit, ausführbaren Funktion, Übertragen des wenigstens einen Teils des Maschinencodes als Referenzcode an die Recheneinheit. Die erfindungsgemäße Vorrichtung ermöglicht vorteilhaft die effiziente Bereitstellung der Referenzcodes für die Anwendung des erfindungsgemäßen Prinzips innerhalb der Recheneinheit. Another aspect of the present invention is provided by a data processing apparatus according to claim 9. The device is designed to carry out the following steps: storing at least a part of a machine code of a function that can be executed by means of a computing unit, in particular by means of the inventive computing unit, transmitting the at least one part of the machine code as the reference code to the computing unit. The device according to the invention advantageously enables the efficient provision of the reference codes for the application of the inventive principle within the computing unit.

Bei einer bevorzugten Ausführungsform kann der Vorrichtung eine Datenbank zur Speicherung der Referenzcodes zugeordnet sein. Bei weiteren Ausführungsformen kann die Vorrichtung auch dazu ausgebildet sein, eine Hashfunktion auf dem wenigstens einen Teil des Maschinencodes auszuführen, um den Referenzcode zu erhalten. Auch die hierbei als Referenzcode erhaltenen Referenz-Hashwerte können zumindest zeitweise in der Datenbank oder in einem sonstigen Speicher gespeichert werden und ggf. ein oder mehreren Recheneinheiten als Referenzcode zur Verfügung gestellt werden, damit diese Recheneinheiten zukünftig unter Anwendung des erfindungsgemäßen Prinzips die Echtheit eines Maschinencodes einer bereitgestellten Funktion überprüfen können.In a preferred embodiment, the device may be associated with a database for storing the reference codes. In further embodiments, the device may also be configured to execute a hash function on the at least part of the machine code to obtain the reference code. The reference hash values obtained here as reference code can also be stored at least temporarily in the database or in other memory and possibly one or more arithmetic units provided as reference code, so that these arithmetic units in the future using the inventive principle, the authenticity of a machine code can check the provided function.

Ein weiterer Aspekt der vorliegenden Erfindung ist durch ein Verfahren zur Verarbeitung von Daten gemäß Patentanspruch 11 angegeben. Das Verfahren kann beispielsweise durch die vorstehend beschriebene Vorrichtung zur Verarbeitung von Daten ausgeführt werden.Another aspect of the present invention is provided by a method of processing data according to claim 11. The method may be performed, for example, by the data processing apparatus described above.

Weitere Merkmale, Anwendungsmöglichkeiten und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen der Erfindung, die in den Figuren der Zeichnung dargestellt sind. Dabei bilden alle beschriebenen oder dargestellten Merkmale für sich oder in beliebiger Kombination den Gegenstand der Erfindung, unabhängig von ihrer Zusammenfassung in den Patentansprüchen oder deren Rückbeziehung sowie unabhängig von ihrer Formulierung bzw. Darstellung in der Beschreibung bzw. in der Zeichnung.Other features, applications and advantages of the invention will become apparent from the following description of embodiments of the invention, which are illustrated in the figures of the drawing. All described or illustrated features, alone or in any combination form the subject matter of the invention, regardless of their summary in the claims or their dependency and regardless of their formulation or representation in the description or in the drawing.

In der Zeichnung zeigt:

  • 1A, 1B, 1C jeweils schematisch ein vereinfachtes Flussdiagramm einer Ausführungsform eines erfindungsgemäßen Betriebsverfahrens für eine Recheneinheit,
  • 2 schematisch ein Blockdiagramm einer Ausführungsform einer erfindungsgemäßen Recheneinheit,
  • 3 schematisch einen Maschinencode einer Funktion gemäß einer Ausführungsform,
  • 4 schematisch ein Blockdiagramm einer Ausführungsform einer erfindungsgemäßen Vorrichtung zur Verarbeitung von Daten,
  • 5 schematisch ein vereinfachtes Flussdiagramm einer Ausführungsform eines erfindungsgemäßen Verfahrens zur Verarbeitung von Daten,
  • 6 schematisch ein Betriebsszenario gemäß einer Ausführungsform,
  • 7 schematisch ein Betriebsszenario gemäß einer weiteren Ausführungsform, und
  • 8 schematisch ein Betriebsszenario gemäß einer weiteren Ausführungsform.
In the drawing shows:
  • 1A . 1B . 1C each schematically a simplified flowchart of an embodiment of an operating method according to the invention for a computing unit,
  • 2 1 is a schematic block diagram of an embodiment of a computing unit according to the invention;
  • 3 schematically a machine code of a function according to an embodiment,
  • 4 1 is a schematic block diagram of an embodiment of a data processing device according to the invention;
  • 5 1 is a simplified flowchart of an embodiment of a method according to the invention for processing data;
  • 6 schematically an operating scenario according to an embodiment,
  • 7 schematically an operating scenario according to another embodiment, and
  • 8th schematically an operating scenario according to another embodiment.

1A zeigt schematisch ein vereinfachtes Flussdiagramm einer Ausführungsform eines erfindungsgemäßen Betriebsverfahrens für eine Recheneinheit 100, die beispielhaft schematisch in 2 abgebildet ist. Bei der Recheneinheit 100 kann es sich beispielhaft um wenigstens eine der folgenden Komponenten handeln: CPU (central processing unit), Prozessor, Mikrocontroller, digitaler Signalprozessor, usw. 1A schematically shows a simplified flowchart of an embodiment of an operating method according to the invention for a computing unit 100 schematically exemplified in 2 is shown. At the arithmetic unit 100 It may, for example, be at least one of the following components: CPU (central processing unit), processor, microcontroller, digital signal processor, etc.

Die Recheneinheit 100 ist zur Ausführung von Computerprogrammen CP (zum Beispiel Anwendungsprogrammen) ausgebildet und weist wenigstens einen Rechenkern 110 sowie eine Speichereinrichtung 120 auf, bei der es sich um einen flüchtigen Speicher oder einen nichtflüchtigen Speicher oder beliebige Kombinationen hieraus handeln kann. Das Computerprogramm CP kann beispielsweise in der Speichereinrichtung 120 gespeichert sein. Besonders bevorzugt kann die Recheneinheit 100 eine Recheneinheit eines sogenannten eingebetteten Systems (englisch: „embedded system“) sein, das Teil eines Steuergeräts für ein Kraftfahrzeug oder eines loT (Internet-of-Things)-Gerät ist. Ein Betriebssystem BS für die Recheneinheit 100 kann ebenfalls in der Speichereinrichtung 120 gespeichert sein.The arithmetic unit 100 is designed to execute computer programs CP (for example application programs) and has at least one calculation kernel 110 and a memory device 120 which may be volatile memory or nonvolatile memory or any combinations thereof. The computer program CP can, for example, in the storage device 120 be saved. Particularly preferably, the arithmetic unit 100 an arithmetic unit of a so-called embedded system, which is part of a control unit for a motor vehicle or a loT (Internet of Things) device. An operating system BS for the computing unit 100 can also be in the storage device 120 be saved.

Das Computerprogramm CP kann ein oder mehrere Funktionsaufrufe FA (englisch: function calls; im Falle des Aufrufs von Systemfunktionen z.B. des Betriebssystems BS auch „system calls“) enthalten, die in an sich bekannter Weise die Ausführung von entsprechenden Funktionen F einleiten. Die Funktion F bzw. ein ihr zugeordneter Maschinencode, der durch den Rechenkern 110 ausführbar ist, kann bei manchen Ausführungsformen Bestandteil des Computerprogramms CP sein und insoweit insbesondere in der Speichereinrichtung 120, ggf. zusammen mit dem Computerprogramm CP, gespeichert sein. Bei anderen Ausführungsformen kann der Maschinencode der Funktion(en) F auch in Form einer gesondert von dem Computerprogramm CP gespeicherten Programmbibliothek bzw. Funktionsbibliothek vorgesehen sein. Derartige Bibliotheken können beispielsweise ebenfalls in der Speichereinrichtung 120, zum Beispiel als Teil des dort installierten Betriebssystems für die Recheneinheit 100, oder auch extern zu der Recheneinheit 100, vorgesehen sein. Vorliegend ist die Funktion F, welche mittels des genannten Funktionsaufrufs FA des Computerprogramms CP ausführbar ist, in 2 symbolisch extern zu der Recheneinheit 100 abgebildet, um zu verdeutlichen, dass der zur Funktion F zugehörige Maschinencode generell an beliebiger Stelle gespeichert werden kann, solange sichergestellt ist, dass die Recheneinrichtung 100 für den Funktionsaufruf FA darauf zugreifen kann. The computer program CP can contain one or more function calls FA (in the case of the call of system functions, for example of the operating system BS, also "system calls") which initiate the execution of corresponding functions F in a manner known per se. The function F or a machine code assigned to it, by the calculation kernel 110 is executable, may be part of the computer program CP in some embodiments, and in particular in the memory device 120 , possibly together with the computer program CP be saved. In other embodiments, the machine code of the function (s) F may also be in the form of a separate from the computer program CP be stored program library or function library. Such libraries may also be included in the memory device, for example 120 For example, as part of the operating system for the processing unit installed there 100 , or externally to the arithmetic unit 100 , be provided. In the present case, the function F, which by means of said function call FA of the computer program CP is executable, in 2 symbolic external to the arithmetic unit 100 shown to illustrate that the function F associated machine code can generally be stored anywhere, as long as it is ensured that the computing device 100 for the function call FA can access it.

3 zeigt schematisch beispielhaft einen Maschinencode MCF der Funktion F gemäß 2. Ein Anfang, charakterisiert durch eine Startadresse in einem den Maschinencode MCF enthaltenden Speicher, ist mit dem Bezugszeichen A bezeichnet, und ein Ende, charakterisiert durch eine Endadresse in dem den Maschinencode MCF enthaltenden Speicher, ist mit dem Bezugszeichen E bezeichnet. 3 schematically shows by way of example a machine code MCF the function F according to 2 , A beginning characterized by a start address in one of the machine code MCF containing memory is denoted by the reference numeral A and an end characterized by an end address in which the machine code MCF containing memory is denoted by the reference numeral e designated.

Das erfindungsgemäße Verfahren, vergleiche 1A, sieht die folgenden Schritte vor. Zunächst wird in einem ersten Schritt 200 wenigstens ein Teil T, vergleiche 3, des Maschinencodes MCF, durch die Recheneinheit 100 (2) geladen. Das Laden 200 kann beispielsweise unter Verwendung an sich bekannter Programmfunktionen bzw. Betriebssystemfunktionen erfolgen, beispielsweise durch Kopieren eines entsprechenden Teils T (3) des Maschinencodes MCF der Funktion F in einen Arbeitsspeicher 120 der Recheneinheit 100. Im Gegensatz zu einem direkten Funktionsaufruf FA, wie er bei konventionellen Programmabläufen von Computerprogrammen CP vorgesehen ist, bei denen die Funktion F ausgeführt werden soll, wird also bei dem Schritt 200 (vorerst) nur ein Teil des die Funktion F bildenden Maschinencodes MCF von dem den Maschinencode MCF enthaltenden Speicher in beispielsweise den Arbeitsspeicher der Recheneinheit 100 geladen bzw. kopiert.The inventive method, see 1A , provides the following steps. First, in a first step 200 at least a part T , compare 3 , the machine code MCF , by the arithmetic unit 100 ( 2 ). The loading 200 can be done, for example, using known program functions or operating system functions, for example by copying a corresponding part T ( 3 ) of the machine code MCF the function F in a working memory 120 the arithmetic unit 100 , Unlike a direct function call FA as with conventional program flows of computer programs CP is provided, where the function F is to be executed, so at the step 200 (for the time being) only a part of the machine code MCF forming the function F from which the machine code MCF containing memory in, for example, the main memory of the arithmetic unit 100 loaded or copied.

Danach erfolgt in Schritt 210 (1A) ein Vergleich des zuvor geladenen wenigstens einen Teils T des Maschinencodes mit einem vorgebbaren Referenzcode REF. Der vorgebbare Referenzcode REF ist bei einer bevorzugten Ausführungsform in der Recheneinheit 100 bzw. ihrer Speichereinrichtung 120 gespeichert, liegt also beispielsweise bereits vor, wenn der Teil T geladen wird. Bei anderen Ausführungsformen ist es denkbar, dass der vorgebbare Referenzcode REF auch während der Ausführung des Computerprogramms CP durch die Recheneinheit von einer externen Einheit (nicht gezeigt) geladen wird.Then in step 210 ( 1A ) a comparison of the previously loaded at least one part T of the machine code with a predefinable reference code REF , The predefinable reference code REF is in a preferred embodiment in the arithmetic unit 100 or their storage device 120 stored, for example, is already present when the part T is loaded. In other embodiments, it is conceivable that the predefinable reference code REF even during the execution of the computer program CP is loaded by the arithmetic unit from an external unit (not shown).

Wenn der Vergleich 210 einen Unterschied zwischen dem wenigstens einen Teil T und dem Referenzcode REF ergibt, kann einer Ausführungsform zufolge darauf geschlossen werden, dass der geladene Teil T bzw. der gesamte Maschinencode MCF, von dem der Teil T in dem Schritt 200 geladen worden ist, manipuliert worden ist, weil er nicht mit dem Referenzcode REF übereinstimmt. In diesem Fall kann gemäß 1A eine optionale Fehlerreaktion 220 eingeleitet werden. Die Fehlerreaktion 220 kann beispielsweise zum Gegenstand haben, dass von einem eigentlich in dem Computerprogramm CP vorgesehenen Funktionsaufruf FA der Funktion F (2) abgesehen wird, um nicht die als manipuliert erkannte Funktion F zur Ausführung zu bringen.If the comparison 210 indicates a difference between the at least one part T and the reference code REF, it can be concluded from one embodiment that the loaded part T or the entire machine code MCF of which the part T in the step 200 has been manipulated because it does not match the reference code REF. In this case, according to 1A an optional error reaction 220 be initiated. The error reaction 220 For example, it may be the subject matter of one actually in the computer program CP provided function call FA the function F ( 2 ), except for the function recognized as being manipulated F to carry out.

Mit anderen Worten kann bei manchen Ausführungsformen ein durch das Computerprogramm CP für die Recheneinheit 100 vorgesehener Funktionsaufruf FA bedingt ausgeführt werden, und zwar unter der Bedingung, dass der erfindungsgemäße Vergleich 210 eine nicht manipulierte Funktion bzw. einen nicht manipulierten Maschinencode MCF bzw. Teil T des Maschinencodes ergeben hat. Diese Ausführungsform ist auch durch das Flussdiagramm gemäß 1B angedeutet. Die Schritte 200, 210 entsprechen den vorstehend unter Bezugnahme auf 1A beschriebenen Schritten. Schritt 230 von 1B repräsentiert das Aufrufen bzw. Ausführen der Funktion F mittels des Funktionsaufrufs FA (2), sofern der Vergleich 210 (1B) keinen Unterschied zwischen dem geladenen Teil T des Maschinencodes und dem Referenzcode REF ergeben hat.In other words, in some embodiments, one may be through the computer program CP for the arithmetic unit 100 provided function call FA conditionally executed, under the condition that the inventive comparison 210 a non-manipulated function or a non-manipulated machine code MCF or part T of the machine code. This embodiment is also illustrated by the flowchart of FIG 1B indicated. The steps 200 . 210 correspond to the above with reference to 1A described steps. step 230 from 1B represents the calling or execution of the function F by means of the function call FA ( 2 ), provided the comparison 210 ( 1B ) no difference between the charged part T the machine code and the reference code REF has resulted.

1C zeigt einen Verfahrensablauf gemäß einer weiteren Ausführungsform. Die Schritte 200, 210 entsprechen i.w. wiederum den bereits zuvor unter Bezugnahme auf die 1A, 1B beschriebenen Schritten 200, 210. Schritt 205 sieht vor, dass in Abhängigkeit des geladenen wenigstens einen Teils T (3) des Maschinencodes MCF der Funktion F sekundäre Daten ermittelt werden, insbesondere unter Verwendung einer Hashfunktion. Ferner werden in dem Schritt 210 des Vergleichens nunmehr nicht der geladene Teil T direkt mit dem Referenzcode REF verglichen, sondern der ermittelte Hashwert aus Schritt 205 mit einem entsprechenden Referenz-Hashwert, der analog zu dem Referenzcode REF beispielsweise in der Speichereinrichtung 120 der Recheneinheit 100 gespeichert sein kann. Sofern der Vergleich 210 gemäß 1C ergibt, dass der in dem Schritt 205 ermittelte Hashwert mit dem Referenz-Hashwert REF übereinstimmt, kann in Schritt 230 wiederum die Ausführung der Funktion F mittels des Funktionsaufrufs FA durchgeführt werden. Andernfalls ist wiederum eine optionale Fehlerreaktion, die nicht in 1C dargestellt ist, vorstellbar. 1C shows a method sequence according to another embodiment. The steps 200 . 210 iw correspond in turn to those previously described with reference to the 1A . 1B described steps 200 . 210 , step 205 provides that, depending on the charged at least one part T ( 3 ) of the machine code MCF the function F secondary data, in particular using a hash function. Further, in the step 210 Comparing now not the loaded part T directly compared with the reference code REF, but the determined hash value from step 205 with a corresponding reference hash value, which is analogous to the reference code REF in the memory device, for example 120 the arithmetic unit 100 can be stored. Unless the comparison 210 according to 1C that results in the step 205 determined hash value with the reference hash value REF can agree in step 230 again the execution of the function F by means of the function call FA be performed. Otherwise, again, is an optional error reaction that is not in 1C is imaginable.

Bei einer weiteren Ausführungsform kann der Schritt 200 (1A) des Ladens vorsehen, dass eine vorgebbare Anzahl von Bytes ab dem Anfang A (3) bzw. der Startadresse des Maschinencodes MCF geladen wird. Ebenso ist bei weiteren Ausführungsformen denkbar, dass eine vorgebbare Anzahl von Bytes bis zu dem Ende E bzw. der Endadresse des Maschinencodes MCF geladen wird. Das Laden einer vorgebbaren Anzahl von Bytes des Maschinencodes der Funktion aus einer beliebigen Speicherstelle zwischen Anfang A und Ende E heraus ist ebenfalls bei weiteren Ausführungsformen denkbar. Bei anderen Ausführungsformen kann auch vorgesehen sein, dass eine vorgebbare Anzahl von Bytes von einer pseudozufällig oder zufällig gewählten Speicherstelle des Maschinencodes MCF der Funktion F geladen wird, um dem Vergleich 210 zugeführt zu werden. Bei den vorstehend genannten Ausführungsformen sind vorteilhaft entsprechend passende Referenzcodes REF, die mit den zu ladenden Speicherstellen korrespondieren, vorzusehen. Wenn z.B. bei einer Ausführungsform die letzten drei Bytes des Maschinencodes MCF der Funktion F in Schritt 200 geladen werden, dann kann ein Referenzcode REF für die entsprechenden letzten drei Bytes einer nicht manipulierten Referenzfunktion bzw. ihres Maschinencodes vorgesehen werden.In a further embodiment, the step 200 ( 1A ) of the loading, that a predeterminable number of bytes from the beginning A ( 3 ) or the start address of the machine code MCF is loaded. It is also conceivable in further embodiments that a predefinable number of bytes is loaded up to the end E or the end address of the machine code MCF. The loading of a predeterminable number of bytes of the machine code of the function from any memory location between beginning A and end E is also conceivable in further embodiments. In other embodiments, provision may also be made for a predeterminable number of bytes to be loaded from a pseudorandom or randomly selected memory location of the machine code MCF of the function F to the comparison 210 to be fed. In the above-mentioned embodiments, corresponding matching reference codes are advantageous REF , which correspond to the memory locations to be loaded, provide. For example, in one embodiment, if the last three bytes of the machine code MCF the function F in step 200 can be loaded, then a reference code REF for the corresponding last three bytes of a non-manipulated reference function or its machine code.

4 zeigt schematisch eine Vorrichtung 300 zur Verarbeitung von Daten, die vorteilhaft dazu vorgesehen ist, in Abhängigkeit einer ihr als Eingangsdaten zugeführten Funktion F bzw. des Maschinencodes MCF der Funktion F einen entsprechenden Referenzcode REF zu ermitteln. Das Ermitteln des Referenzcodes REF kann beispielsweise ein Auswählen von einem oder mehreren Bytes aus dem Maschinencode MCF der Funktion F umfassen, wobei diese ausgewählten Bytes bei einer Ausführungsform als Referenzcode REF zur Verfügung gestellt werden. Besonders bevorzugt kann der durch die Vorrichtung 300 ermittelte Referenzcode REF (allein oder auch zusammen mit der als Eingangsdaten hierfür zugeführten Funktion F bzw. mit dem Maschinencode MCF der Funktion F) durch die Vorrichtung 300 gespeichert werden. Dies kann beispielsweise in einer in der Vorrichtung 300 vorgesehenen Speichereinrichtung 301 oder generell in einer der Vorrichtung 300 zugeordneten Speichereinrichtung (nicht gezeigt) erfolgen. Bei einer Ausführungsform kann die Vorrichtung 300 beispielsweise eine Recheneinheit 100 gemäß 2 umfassen, die z.B. als Referenzsystem für die Ermittlung der Referenzcodes REF nutzbar ist. Bei anderen Ausführungsformen kann die Vorrichtung 300 beispielsweise auch Teil einer Software-Entwicklungsumgebung für die Recheneinheit 100 bzw. für Computerprogramme CP für die Recheneinheit 100 sein. 4 schematically shows a device 300 for processing data, which is advantageously provided in dependence on a function supplied to it as input data F or the machine code MCF the function F a corresponding reference code REF to investigate. Determining the reference code REF For example, selecting one or more bytes from the machine code MCF the function F in one embodiment, these selected bytes are used as a reference code REF to provide. Particularly preferred by the device 300 determined reference code REF (alone or together with the function F supplied as input data for this purpose or with the machine code MCF of the function F ) through the device 300 get saved. This can for example be in one in the device 300 provided memory device 301 or generally in one of the devices 300 associated memory device (not shown) take place. In one embodiment, the device 300 for example, a computing unit 100 according to 2 include, for example, can be used as a reference system for the determination of the reference codes REF. In other embodiments, the device may 300 For example, also part of a software development environment for the processing unit 100 or for computer programs CP for the arithmetic unit 100 be.

Optional kann die Vorrichtung 300 auch über eine Einheit 302 zur Bildung von Hash-Werten verfügen, so das als Referenzcode für die eingangsseitig zugeführten Funktionen bzw. deren Maschinencode auch entsprechende Hashwerte durch die Vorrichtung 300 bildbar sind. Auch die Hashwerte können entweder lokal in der Speichereinrichtung 301 der Vorrichtung 300 oder in einer der Vorrichtung 300 zugeordneten, möglicherweise auch extern hierzu vorgesehenen, Speichereinrichtung (nicht gezeigt) zumindest zeitweise gespeichert werden.Optionally, the device 300 also about a unit 302 for the formation of hash values, the reference code for the functions supplied on the input side or their machine code also has corresponding hash values through the device 300 are imageable. Also, the hash values can either be local to the memory device 301 the device 300 or in one of the device 300 associated, possibly also provided externally thereto, memory device (not shown) are stored at least temporarily.

Die mittels der Vorrichtung 300 erhaltenen Referenzcodes REF bzw. Referenz-Hashwerte können entweder direkt nach deren Ermittlung oder auch zu einem späteren Zeitpunkt oder gegebenenfalls periodisch einem Zielsystem wie beispielsweise der Recheneinheit 100 zur Verfügung gestellt werden, damit die Recheneinheit 100 den vorstehend beschriebenen Vergleich 210 ausführen kann.The means of the device 300 obtained reference codes REF or reference hash values can either directly after their determination or at a later time or, if appropriate, periodically a target system such as the arithmetic unit 100 be made available to the arithmetic unit 100 the comparison described above 210 can perform.

5 zeigt schematisch ein Flussdiagramm einer Ausführungsform eines Betriebsverfahrens für die Vorrichtung 300 gemäß 4. In dem Schritt 400 wird wenigstens ein Teil des Maschinencodes MCF gespeichert, beispielsweise in der Speichereinrichtung 301. In dem Schritt 410 wird der wenigstens eine Teil als Referenzcode REF an die Recheneinheit 100 übertragen. 5 schematically shows a flowchart of an embodiment of an operating method for the device 300 according to 4 , In the step 400 at least part of the machine code MCF is stored, for example in the memory device 301 , In the step 410 the at least one part is referred to the arithmetic unit as a reference code REF 100 transfer.

Optional kann auch ein Schritt 405 zwischen den Schritten 400, 410 ausgeführt werden, der die vorstehend bereits genannte Bildung des Hashwerts in Abhängigkeit des eingangsseitig zugeführten Maschinencodes MCF der Funktion F zum Gegenstand hat. In diesem Fall kann in Schritt 410 auch der Referenz-Hashwert, der in Schritt 405 gebildet worden ist, der Recheneinheit 100 zugeführt werden.Optionally, also a step 405 between the steps 400 . 410 be executed, the above-mentioned formation of the hash value in dependence of the input side supplied machine code MCF the function F has the object. In this case, in step 410 also the reference hash value in step 405 has been formed, the arithmetic unit 100 be supplied.

6 zeigt schematisch ein Betriebsszenario gemäß einer Ausführungsform. Gezeigt ist eine Laufzeitumgebung 500, wie sie durch die Recheneinheit 100 gemäß 2, beispielsweise zusammen mit einem Betriebssystem BS für die Recheneinheit 100, bereitgestellt wird. Insbesondere kann die Laufzeitumgebung 500 auch wenigstens eine Programmbibliothek umfassen, die die Funktion F bzw. den Maschinencode MCF der Funktion F bereithält, sodass dieser durch Funktionsaufrufe FA (2) seitens des Computerprogramms CP aufrufbar ist. Bezugszeichen 502 bezeichnet vorliegend einen Betriebszustand, der die Bildung wenigstens eines Referenzcodes REF bzw. Referenz-Hashwerts für die Funktion F bzw. deren Maschinencode MCF zum Gegenstand hat. Die hierbei ermittelten Referenzcodes REF können sodann in einer Datenbank Db zumindest zeitweise gespeichert werden. 6 schematically shows an operating scenario according to an embodiment. Shown is a runtime environment 500 as determined by the arithmetic unit 100 according to 2 , for example together with a operating system BS for the arithmetic unit 100 , provided. In particular, the runtime environment 500 also include at least one program library having the function F or the machine code MCF holds the function F so that it can be called by function calls FA ( 2 ) from the computer program CP is callable. reference numeral 502 In the present case, an operating state is defined that involves the formation of at least one reference code REF or reference hash value for the function F or their machine code MCF has the object. The reference codes determined here REF can then be stored at least temporarily in a database Db.

Das vorstehend unter Bezugnahme auf 6 beschriebene Betriebsszenario kann beispielsweise unter Verwendung der Recheneinheit 100 realisiert werden, wobei die Recheneinheit 100 anstelle oder zusätzlich zu der Ausführung des Computerprogramms CP, bei dem es sich insbesondere um ein Anwendungsprogramm handelt, vorteilhaft zur Bildung der Referenzcode REF nutzbar ist. Insoweit entspricht die Funktionalität der Konfiguration gemäß 6 bzw. der zugehörigen Recheneinheit 100 im Wesentlichen der Konfiguration der Vorrichtung 300 gemäß 4.The above with reference to 6 described operating scenario, for example, using the arithmetic unit 100 be realized, wherein the arithmetic unit 100 instead of or in addition to the execution of the computer program CP , which is in particular an application program, advantageous for the formation of the reference code REF is usable. In that regard, the functionality of the configuration corresponds to 6 or the associated arithmetic unit 100 essentially the configuration of the device 300 according to 4 ,

Bei weiteren Ausführungsformen ist jedoch auch denkbar, dass die Vorrichtung 300 gemäß 4 das Betriebsszenario gemäß 6 realisiert, beispielsweise durch Vorsehung einer Referenz-Recheneinheit, die identisch oder ähnlich zu der Recheneinheit 100 gemäß 2 ausgebildet ist. Besonders bevorzugt wird das Szenario gemäß 6 in einer sicheren Betriebsumgebung realisiert, beispielsweise im Rahmen einer Fertigung der Recheneinheit 100, wodurch verhindert wird, dass bereits bei der Bildung der Referenzcodes REF Manipulationen durch Angreifer erfolgen.In further embodiments, however, it is also conceivable that the device 300 according to 4 the operating scenario according to 6 realized, for example by providence of a reference computing unit, the identical or similar to the arithmetic unit 100 according to 2 is trained. Particularly preferred is the scenario according to 6 realized in a secure operating environment, for example as part of a production of the computing unit 100 , which prevents manipulation by attackers when the reference codes REF are formed.

7 zeigt schematisch ein Betriebsszenario gemäß einer weiteren Ausführungsform. Es wird davon ausgegangen, dass ein oder mehrere Referenzcodes REF, deren Bildung bereits vorstehend unter Bezugnahme auf die 4, 5, 6 beschrieben worden ist, vorliegen und zumindest zeitweise in der Datenbank Db gespeichert sind. Bezugszeichen 504 gemäß 7 bezeichnet, zusammen mit Pfeil 410', die Übertragung von wenigstens einem Referenzcode aus der Datenbank Db an ein Zielsystem, beispielsweise die Recheneinheit 100 gemäß 2. Diese Übertragung entspricht beispielsweise auch dem Schritt 410 des vorstehend unter Bezugnahme auf 5 beschriebenen Verfahrens. 7 schematically shows an operating scenario according to another embodiment. It is assumed that one or more reference codes REF whose formation has already been described above with reference to the 4 . 5 . 6 has been described, present and at least temporarily stored in the database Db. reference numeral 504 according to 7 designated, together with arrow 410 ' , the transmission of at least one reference code from the database Db to a target system, for example the arithmetic unit 100 according to 2 , This transmission also corresponds to the step, for example 410 of the above with reference to 5 described method.

Nach der Übertragung an die Recheneinheit 100 kann die Recheneinheit 100, beispielsweise vor einem geplanten Funktionsaufruf FA einer Funktion F im Rahmen der Ausführung des Anwendungsprogramms CP, zunächst die Schritte 200, 210 gemäß 1A ausführen, um unter Vergleich mit dem Referenzcode REF eine Echtheit des Maschinencodes der Funktion F zu überprüfen.After transmission to the arithmetic unit 100 can the arithmetic unit 100 For example, before a scheduled function call FA a function F as part of the execution of the application program CP , first the steps 200 . 210 according to 1A Run to compare with the reference code REF verify the authenticity of the machine code of function F.

8 zeigt schematisch ein Betriebsszenario gemäß einer weiteren Ausführungsform. Bezugszeichen 506 bezeichnet eine Anwendungsebene (englisch: „user-level-application“), die beispielsweise mit der Ausführung des Computerprogramms CP (2) auf der Recheneinheit 100 assoziiert ist. Bezugszeichen 500 repräsentiert die bereits vorstehend unter Bezugnahme auf 6 beschriebene Laufzeitumgebung. 8th schematically shows an operating scenario according to another embodiment. reference numeral 506 denotes an application level (English: "user-level application"), for example, with the execution of the computer program CP ( 2 ) on the arithmetic unit 100 is associated. reference numeral 500 it already represents the above with reference to 6 described runtime environment.

Bezugszeichen 200 in 8 symbolisiert den bereits vorstehend unter Bezugnahme auf 1A beschriebenen Schritt des Ladens wenigstens eines Teils T (3) des Maschinencodes MCF einer Funktion F (2), die gegebenenfalls durch das Computerprogramm CP im Rahmen eines Funktionsaufrufs FA ausgeführt werden soll. Bezugszeichen 200' gemäß 8 bezeichnet eine Übergabe der geladenen Daten T an die Anwendungsebene 506. Bezugszeichen 210 bezeichnet den vorstehend bereits beschriebenen Schritt des Vergleichens des geladenen Teils T mit einem Referenzcode REF. Bezugszeichen 230 bezeichnet den bereits vorstehend beschriebenen Schritt des Aufrufens der Funktion F für den Fall, dass der vorangehende Vergleich 210 ergeben hat, dass keine Manipulation des Maschinencodes der Funktion F vorliegt. Bezugszeichen 230' bezeichnet eine Rückkehr zu dem Computerprogramm CP nach der Ausführung der Funktion F im Wege des Funktionsaufrufs FA.reference numeral 200 in 8th symbolizes the above with reference to 1A described step of loading at least a part T ( 3 ) of the machine code MCF a function F ( 2 ), if necessary by the computer program CP in the context of a function call FA to be executed. reference numeral 200 ' according to 8th denotes a transfer of the loaded data T to the application level 506 , reference numeral 210 denotes the previously described step of comparing the charged part T with a reference code REF , reference numeral 230 denotes the step of calling the function already described above F in the event that the previous comparison 210 has revealed that no manipulation of the machine code of the function F is present. reference numeral 230 ' denotes a return to the computer program CP after the execution of the function F in the way of the function call FA ,

Nachfolgend ist beispielhaft als „Listing 1“ ein Quellcode eines in der Programmiersprache C abgefassten Computerprogramms zur Veranschaulichung von Aspekten der Ausführungsformen wiedergegeben. Den einzelnen Codezeilen sind Zeilennummern, vorliegend von 1-33, vorangestellt, um eine nachfolgende Erläuterung und Referenzierung auf den Quellcode zu vereinfachen:

1 #include <stdio.h>

 2 #include <stdlib.h>
 3 #include <dlfcn.h>
 4
 5 // The assembler of the function fopen starts with
 6 const unsigned char g_FirstSomeByte[3] =
 7 { 0x83, 0xec, 0x1c};
 8
 9 int main()
 10 {
 11 //
 12//
 13 const unsigned char* ptFopenCode =
 14 (const unsigned char*)dlsym( RTLD_NEXT, „fopen“);
 15 // only for debugging purpose:
 16 printf(„fopen = %p [0x%02X, 0x%02X, 0x%02X, ... ]\n“,
 17 &fopen,
 18 ptFopenCode[0], ptFopenCode[1],
 19 ptFopenCode[2]);
 20
 21 // this check for the correct function - depends on the glibc version !!
 22 if (
 23 (ptFopenCode[0]!=g_FirstSomeByte[0]) ||
 24 (ptFopenCode[1]!=g_FirstSomeByte[1]) ||
 25 (ptFopenCode[2]!=g_FirstSomeByte[2])
 26 ){
 27 printf(„»> It seems to be i am hacked !!!\n“);
 28 printf(„»> I will leave the program ...\n“);
 29 exit(-1);
 30 }
 31 printf(„Hello World\n“);
 32 return 0;
 33 }
Hereinafter, by way of example, "Listing 1" is a source code of a computer program written in the C programming language to illustrate aspects of the embodiments. The individual lines of code are preceded by line numbers, in this case 1-33, in order to simplify a following explanation and referencing to the source code:
 1 #include <stdio.h>

 2 #include <stdlib.h>
 3 #include <dlfcn.h>
  4
 5 // The assembler of the function fopen starts with
 6 const unsigned char g_FirstSomeByte [3] =
 7 {0x83, 0xec, 0x1c};
 8th
 9 int main ()
 10 {
 11 //
 12 //
 13 const unsigned char * ptFopenCode =
 14 (const unsigned char *) dlsym (RTLD_NEXT, "fopen");
 15 // only for debugging purpose:
 16 printf ("fopen =% p [0x% 02X, 0x% 02X, 0x% 02X, ...] \ n",
 17 & fopen,
 18 ptFopenCode [0], ptFopenCode [1],
 19 ptFopenCode [2]);
 20
 21 // this check for the correct function - depends on the glibc version !!
 22 if (
 23 (ptFopenCode [0]! = G_FirstSomeByte [0]) ||
 24 (ptFopenCode [1]! = G_FirstSomeByte [1]) ||
 25 (ptFopenCode [2]! = G_FirstSomeByte [2])
 26) {
 27 printf (""> It seems to be on the hacked !!! \ n ");
 28 printf (""> I will leave the program ... \ n ");
 29 exit (-1);
 30}
 31 printf ("Hello World \ n");
 32 return 0;
 33} 

Die Zeilen 6, 7 von Listing 1 enthalten eine Konstantendefinition der ersten 3 Byte eines Maschinencodes einer vorliegend beispielhaft betrachteten nicht manipulierten Funktion „fopen()“ (Öffnen einer Datei). Diese Definition entspricht dem Referenzcode REF, wie er vorliegend beispielhaft unter Bezugnahme auf 2 beschrieben worden ist. Mit anderen Worten liegt der Referenzcode REF in Form dieser Konstantendefinition in dem vorliegenden betrachteten Listing 1 bereits vor.The lines 6 . 7 by listing 1 contain a constant definition of the first 3 bytes of a machine code of a presently considered non-manipulated function "fopen ()" (opening a file). This definition corresponds to the reference code REF as exemplified herein with reference to 2 has been described. In other words, the reference code lies REF in the form of this constant definition in the present Listing considered 1 already before.

In den Zeilen 13,14 wird mittels der Funktion „dlsym()“ der Maschinencode MCF der vorliegend betrachteten, tatsächlich in der betreffenden Bibliothek „stdio.h“ bzw. „glibc“ enthaltenen Funktion „fopen()“ geladen, vergleiche Schritt 200 gemäß 1A.In the lines 13 . 14 the function "dlsym ()" is used to load the machine code MCF of the function "fopen ()" actually considered in the relevant library "stdio.h" or "glibc", cf. step 200 according to 1A ,

In den Zeilen 22-30 wird der durch die Zeilen 13,14 geladenen Maschinencode der tatsächlich enthaltenen Funktion „fopen()“ mit dem vorliegend als Konstanten definierten Referenzcode REF verglichen und vermöge des Programmcodes der Zeilen 26-29 ausgewertet.In the lines 22 - 30 gets through the lines 13 . 14 loaded machine code of the actually contained function "fopen ()" compared with the reference code REF defined here as a constant and by virtue of the program code of the lines 26 - 29 evaluated.

Das erfindungsgemäße Prinzip ermöglicht vorteilhaft, Angriffe auf beispielsweise eine Laufzeitumgebung für Computerprogramme CP für eine Recheneinheit 100 zu erkennen, insbesondere eine Manipulation von Maschinencode einer oder mehrerer bereitgestellter Funktionen F zu erkennen. Dadurch können vorteilhaft auch Anwendungsprogramme CP gegenüber solchen Manipulationen abgesichert werden bzw. zumindest in die Lage versetzt werden, solche Manipulationen zu erkennen. Gegenüber konventionellen Methoden der Software-Sicherheit, welche sich primär auf Aspekte der Sicherheit des Computerprogramms bzw. der Anwendungsprogramme CP an sich beziehen, ermöglicht der erfindungsgemäße Ansatz vorteilhaft die Erkennung von Manipulationen im Bereich der Laufzeitumgebung, also insbesondere im Bereich von mittels Funktionsaufrufen FA aufrufbaren Funktionen F, die beispielsweise mittels Programmbibliotheken oder Systembibliotheken oder dergleichen bereitgestellt werden.The inventive principle advantageously allows attacks on, for example, a runtime environment for computer programs CP for a computing unit 100 to recognize, in particular a manipulation of machine code one or more provided functions F to recognize. As a result, application programs CP can advantageously also be protected against such manipulations or at least put in a position to detect such manipulations. Compared to conventional methods of software security, which focus primarily on aspects of the security of the computer program or the application programs CP In itself, the approach according to the invention advantageously makes it possible to detect manipulations in the area of the runtime environment, that is to say in particular in the area of by means of function calls FA Callable functions F, which are provided for example by means of program libraries or system libraries or the like.

Das erfindungsgemäße Prinzip arbeitet insbesondere unabhängig von Schedulingalgorithmen bzw. zeitlichen Schwankungen während der Ausführung der Funktion F, da es auf einem Vergleich des Maschinencodes MCF der Funktion F mit dem Referenzcode REF basiert. Daher ist das erfindungsgemäße Prinzip auch auf Recheneinheiten 100 einsetzbar, welche eine Prozessablaufplanung („scheduling“) mit Unterbrechungen („preemptive scheduling“) nutzen.The inventive principle works in particular independent of scheduling algorithms or temporal fluctuations during the execution of the function F as it is on a comparison of the machine code MCF the function F with the reference code REF based. Therefore, the inventive principle is also on computing units 100 can be used, which use a "scheduling" with interruptions ("preemptive scheduling").

Das erfindungsgemäße Prinzip kann sehr flexibel und bedarfsgerecht eingesetzt werden. Beispielsweise kann ein Softwareentwickler, der das Computerprogramm CP entwickelt, festlegen, welche Funktionen F unter Anwendung des erfindungsgemäßen Prinzips zu überprüfen bzw. abzusichern sind. Es ist bei manchen Ausführungsformen beispielsweise denkbar, dass weniger wichtige Programmfunktionen bzw. deren Aufrufe nicht durch das erfindungsgemäße Prinzip abgesichert werden, wohingegen wichtigere Funktionen abgesichert werden. Eine dynamische Festlegung, wann das erfindungsgemäße Prinzip Anwendung findet, ist anderen Ausführungsformen zufolge ebenfalls denkbar, beispielsweise während der Laufzeit des Computerprogramms CP, beispielsweise in Abhängigkeit von ein oder mehreren Betriebsparametern des Computerprogramms CP oder der Recheneinheit 100. Beispielsweise kann vorgesehen sein, dass die erfindungsgemäße Überprüfung z.B. gemäß den Schritten 200, 210 nach 1A bei manchen Ausführungsformen immer dann für gewisse Funktionen F vorgesehen ist, wenn die Recheneinheit in einem bestimmten Zielsystem integriert ist, was beispielsweise aufgrund von Kommunikationsmustern oder sonstigen Betriebsparametern der Recheneinheit 100 erkannt werden kann.The principle according to the invention can be used very flexibly and as needed. For example, a software developer who runs the computer program CP developed, specify which functions F are to be checked or secured using the principle of the invention. For example, it is conceivable in some embodiments that less important program functions or their calls are not hedged by the inventive principle, whereas more important functions are safeguarded. A dynamic definition of when the inventive principle applies, according to other embodiments is also conceivable, for example during the term of the computer program CP , for example, depending on one or more operating parameters of the computer program CP or the arithmetic unit 100 , For example, it can be provided that the check according to the invention, for example, according to the steps 200 . 210 to 1A in some embodiments always for certain functions F is provided when the arithmetic unit is integrated in a specific target system, which, for example, due to communication patterns or other operating parameters of the arithmetic unit 100 can be recognized.

Besonders vorteilhaft bedingt die Anwendung des erfindungsgemäßen Prinzips vergleichsweise wenig Zusatzaufwand, insbesondere bezüglich der Ausführungszeit des Computerprogramms CP, weil effiziente Befehle und Mechanismen zum Vergleichen des wenigstens einen Teils T des Maschinencodes MCF der Funktion F bzw. von entsprechenden Hashwerten mit zugehörigen Referenzcodes REF bzw. Referenz-Hashwerten verfügbar sind. Der Programmieraufwand ist ebenfalls vergleichsweise gering, vergleiche das vorstehend beispielhaft beschriebene Listing 1.Particularly advantageously, the application of the principle according to the invention requires comparatively little additional effort, in particular with regard to the execution time of the computer program CP because efficient instructions and mechanisms for comparing the at least one part T of the machine code MCF function F or corresponding hash values with associated reference codes REF or reference hash values. The programming effort is also comparatively low, compare the listing described above by way of example 1 ,

Des Weiteren ist das erfindungsgemäße Prinzip auch dann effizient nutzbar, wenn sich die Laufzeitumgebung bzw. die Programmbibliothek(en) bzw. darin enthaltene Funktionen F oder deren Maschinencode MCF ändern. In diesem Fall sind lediglich entsprechend aktualisierte Referenzcodes REF bereitzustellen, beispielsweise mittels der Vorrichtung 300 gemäß 4 bzw. mittels des Verfahrens gemäß 5.Furthermore, the principle according to the invention can also be used efficiently if the runtime environment or the program library (s) or functions F contained therein or their machine code MCF to change. In this case, only correspondingly updated reference codes are available REF to provide, for example by means of the device 300 according to 4 or by the method according to 5 ,

Claims (11)

Verfahren zum Betreiben einer Recheneinheit (100), die dazu ausgebildet ist, ein Computerprogramm (CP) auszuführen, wobei das Computerprogramm (CP) wenigstens einen Funktionsaufruf (FA) einer in Form von Maschinencode bereitgestellten Funktion (F) aufweist, umfassend die folgenden Schritte: Laden (200) wenigstens eines Teils (T) des Maschinencodes (MCF) der Funktion, Vergleichen (210) des wenigstens einen Teils des Maschinencodes der Funktion oder von hieraus abgeleiteten sekundären Daten mit einem vorgebbaren Referenzcode (REF).A method of operating a computing unit (100) adapted to execute a computer program (CP), the computer program (CP) having at least one function call (FA) of a function (F) provided in the form of machine code, comprising the following steps: Loading (200) at least a part (T) of the machine code (MCF) of the function, comparing (210) the at least part of the machine code of the function or secondary data derived therefrom with a predefinable reference code (REF). Verfahren nach Anspruch 1, wobei der Schritt des Ladens (200) wenigstens einen der folgenden Schritte umfasst: Laden einer vorgebbaren Anzahl von Bytes von dem Anfang (A) des Maschinencodes der Funktion, Laden einer vorgebbaren Anzahl von Bytes von dem Ende (E) des Maschinencodes der Funktion, Laden einer vorgebbaren Anzahl von Bytes von einer vorgebbaren Stelle des Maschinencodes der Funktion, Laden einer vorgebbaren Anzahl von Bytes von einer pseudozufällig oder zufällig gewählten Stelle des Maschinencodes der Funktion.Method according to Claim 1 wherein the step of loading (200) comprises at least one of the following steps: loading a predetermined number of bytes from the beginning (A) of the machine code of the function, loading a predetermined number of bytes from the end (E) of the machine code of the function, Loading a predeterminable number of bytes from a predefinable location of the machine code of the function, loading a predeterminable number of bytes from a pseudorandom or randomly selected location of the machine code of the function. Verfahren nach einem der vorstehenden Ansprüche, wobei nach dem Laden (200) der folgende Schritt vorgesehen ist: Ermitteln (205) der sekundären Daten in Abhängigkeit des geladenen wenigstens einen Teils des Maschinencodes unter Verwendung einer Hashfunktion.The method of any one of the preceding claims, wherein after loading (200), the step of: determining (205) the secondary data in response to the loaded at least a portion of the machine code using a hash function. Verfahren nach Anspruch 3, wobei der Schritt (210) des Vergleichens das Vergleichen der sekundären Daten mit einem Referenz-Hashwert umfasst.Method according to Claim 3 wherein the step (210) of comparing comprises comparing the secondary data with a reference hash value. Verfahren nach einem der vorstehenden Ansprüche, wobei eine Fehlerreaktion (220) eingeleitet wird, wenn der Vergleich (210) einen Unterschied zwischen dem wenigstens einen Teil des Maschinencodes und dem Referenzcode oder zwischen den sekundären Daten und dem Referenzcode bzw. Referenz-Hashwert ergibt.The method of any one of the preceding claims, wherein an error response (220) is initiated when the comparison (210) results in a difference between the at least a portion of the machine code and the reference code or between the secondary data and the reference code or reference hash value. Verfahren nach einem der vorstehenden Ansprüche, wobei die Funktion (F) aufgerufen (230) wird, wenn der Vergleich (210) keinen Unterschied zwischen dem wenigstens einen Teil des Maschinencodes und dem Referenzcode oder zwischen den sekundären Daten und dem Referenzcode bzw. Referenz-Hashwert ergibt.The method of any preceding claim, wherein the function (F) is called (230) if the comparison (210) does not discriminate between the at least a portion of the machine code and the reference code or between the secondary data and the reference code or reference hash value results. Recheneinheit (100), die dazu ausgebildet ist, ein Computerprogramm (CP) auszuführen, wobei das Computerprogramm (CP) wenigstens einen Funktionsaufruf (FA) einer in Form von Maschinencode bereitgestellten Funktion (F) aufweist, wobei die Recheneinheit (100) dazu ausgebildet ist, die folgenden Schritte auszuführen: Laden (200) wenigstens eines Teils des Maschinencodes (MCF) der Funktion, Vergleichen (210) des wenigstens einen Teils des Maschinencodes der Funktion oder von hieraus abgeleiteten sekundären Daten mit einem vorgebbaren Referenzcode (REF). Arithmetic unit (100) which is designed to execute a computer program (CP), wherein the computer program (CP) has at least one function call (FA) of a function (F) provided in the form of machine code, wherein the arithmetic unit (100) is designed for this purpose performing the steps of: loading (200) at least part of the machine code (MCF) of the function, comparing (210) the at least one part of the machine code of the function or secondary data derived therefrom with a predefinable reference code (REF). Recheneinheit (100) nach Anspruch 7, wobei die Recheneinheit (100) zur Ausführung des Verfahrens nach einem der Ansprüche 2 bis 6 ausgebildet ist.Arithmetic unit (100) according to Claim 7 wherein the arithmetic unit (100) for carrying out the method according to one of Claims 2 to 6 is trained. Vorrichtung (300) zur Verarbeitung von Daten, wobei die Vorrichtung (300) zu Ausführung der folgenden Schritte ausgebildet ist: Speichern (400) wenigstens eines Teils eines Maschinencodes (MCF) einer mittels einer Recheneinheit, insbesondere mittels einer Recheneinheit (100) nach einem der Ansprüche 7 bis 8, ausführbaren Funktion (F), Übertragen (410) des wenigstens einen Teils des Maschinencodes als Referenzcode (REF) an die Recheneinheit (100).Device (300) for processing data, wherein the device (300) is designed for carrying out the following steps: storing (400) at least a part of a machine code (MCF) by means of a computing unit, in particular by means of a computing unit (100) according to one of Claims 7 to 8th , executable function (F), transmitting (410) of the at least part of the machine code as a reference code (REF) to the arithmetic unit (100). Vorrichtung (300) nach Anspruch 9, wobei die Vorrichtung (300) dazu ausgebildet ist, eine Hashfunktion auf dem wenigstens einen Teil des Maschinencodes auszuführen (405), um den Referenzcode (REF) zu erhalten.Device (300) according to Claim 9 wherein the apparatus (300) is adapted to perform a hash function on the at least a portion of the machine code (405) to obtain the reference code (REF). Verfahren zur Verarbeitung von Daten, wobei das Verfahren die folgenden Schritte aufweist: Speichern (400) wenigstens eines Teils eines Maschinencodes (MCF) einer mittels einer Recheneinheit, insbesondere mittels einer Recheneinheit (100) nach einem der Ansprüche 7 bis 8, ausführbaren Funktion (F), Übertragen (410) des wenigstens einen Teils des Maschinencodes als Referenzcode (REF) an die Recheneinheit (100).A method of processing data, the method comprising the steps of: storing (400) at least part of a machine code (MCF) of one by means of a computing unit, in particular by means of a computing unit (100) according to one of Claims 7 to 8th , executable function (F), transmitting (410) of the at least part of the machine code as a reference code (REF) to the arithmetic unit (100).
DE102017208199.6A 2017-05-16 2017-05-16 Arithmetic unit and operating method for a computing unit Pending DE102017208199A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102017208199.6A DE102017208199A1 (en) 2017-05-16 2017-05-16 Arithmetic unit and operating method for a computing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102017208199.6A DE102017208199A1 (en) 2017-05-16 2017-05-16 Arithmetic unit and operating method for a computing unit

Publications (1)

Publication Number Publication Date
DE102017208199A1 true DE102017208199A1 (en) 2018-11-22

Family

ID=64278211

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017208199.6A Pending DE102017208199A1 (en) 2017-05-16 2017-05-16 Arithmetic unit and operating method for a computing unit

Country Status (1)

Country Link
DE (1) DE102017208199A1 (en)

Similar Documents

Publication Publication Date Title
DE602004008413T2 (en) Device and method for dynamic security management
EP3891642B1 (en) Method for ensuring the trustworthiness of source codes
EP1798653B1 (en) Method, computer program product and device for protecting a program comprising a function block
EP2913772A1 (en) Method and computer system for protecting a computer program against influence
DE102014117971B4 (en) A method of data processing for determining whether an error has occurred during execution of a program and data processing arrangements for generating program code
EP3811260B1 (en) Cryptography module and method for operating same
WO2022008201A1 (en) Method for the extended validation of a container image
EP1636700A1 (en) Method for booting up a software in the boot sector of a programmable read-only memory
DE102005046696B4 (en) A method for generating protected program code and method for executing program code of a protected computer program and computer program product
DE102017208199A1 (en) Arithmetic unit and operating method for a computing unit
DE10131577A1 (en) Process for protecting a microcomputer system against manipulation of its program
DE102021114574A1 (en) COMPUTER PROGRAM TRUST ASSURANCE FOR INTERNET OF THINGS (IOT) DEVICES
EP3588340B1 (en) Computer-implemented method for operating a data storage device
DE102021212994B3 (en) Method for detecting anomalies indicating tampering during a secure boot process of a software-controlled device
EP3876123B1 (en) Arrangement and operating method for a secure start-up of an electronic device
DE102007059798B3 (en) Executable program code i.e. executable file, coding method for computer, involves combining chains of sequential instructions to code fragments, and coding and storing detected code fragments belonging to methods in program library
EP4254174A1 (en) Method for producing software containers in a build process
EP3786818A1 (en) Method for protecting a software application against unauthorzed use
EP1105798A1 (en) Method, array and set of several arrays for protecting several programs and/or files from unauthorized access by a process
DE102015016059A1 (en) Method for executing a program code
DE102020212988A1 (en) Safe booting of a computer system
DE102022207883A1 (en) Method for programming a programmable logic controller using an executable control program and programmable logic controller system
AT524619A1 (en) Computer-implemented method for authorized execution of software, data processing system, computer program product and computer-readable storage medium
WO2024022830A1 (en) Method for programming a programmable logic controller by means of an executable control programme, and programmable logic controller system
DE102017208192A1 (en) Arithmetic unit and operating method for a computing unit

Legal Events

Date Code Title Description
R012 Request for examination validly filed