DE102022116869A1 - Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung - Google Patents

Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung Download PDF

Info

Publication number
DE102022116869A1
DE102022116869A1 DE102022116869.7A DE102022116869A DE102022116869A1 DE 102022116869 A1 DE102022116869 A1 DE 102022116869A1 DE 102022116869 A DE102022116869 A DE 102022116869A DE 102022116869 A1 DE102022116869 A1 DE 102022116869A1
Authority
DE
Germany
Prior art keywords
processing device
data processing
reference value
program instructions
program code
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
DE102022116869.7A
Other languages
English (en)
Inventor
Roland EBRECHT
Gerd Dirscherl
Stefan Hackenberg
Florian Mendel
Stefan Witossek
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102022116869.7A priority Critical patent/DE102022116869A1/de
Priority to US18/217,693 priority patent/US20240012903A1/en
Publication of DE102022116869A1 publication Critical patent/DE102022116869A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

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

Abstract

Gemäß einem Ausführungsbeispiel wird ein Verfahren zum Ausführen eines Programms auf einer Datenverarbeitungsvorrichtung bereitgestellt, aufweisend Speichern mehrerer Programminstruktionen und von einem Prozessor der Datenverarbeitungsvorrichtung zu verarbeitender Daten in einem oder mehreren Speichern der Datenverarbeitungsvorrichtung, Empfangen, durch die Datenverarbeitungsvorrichtung von einer externen Datenverarbeitungsvorrichtung eines Referenzwerts für eine Prüfung der mehreren Programminstruktionen, Berechnen eines Prüfwerts aus den mehreren Programminstruktionen für die Prüfung durch die Datenverarbeitungsvorrichtung beim Laden der Programminstruktionen aus den ein oder mehreren Speichern in einen Befehlszwischenspeicher der Datenverarbeitungsvorrichtung oder durch Lesezugriff auf den Befehlszwischenspeicher nach dem Laden der Programminstruktionen in den Befehlszwischenspeicher aus den ein oder mehreren Speichern und Ausführen zumindest eines Teils der Programminstruktionen durch den Prozessor, falls der Prüfwert mit dem empfangenen Referenzwert übereinstimmt.

Description

  • Ausführungsbeispiele betreffen allgemein Verfahren zum Ausführen eines Programms auf einer Datenverarbeitungsvorrichtung.
  • In sicherheitskritischen Anwendungen, wie beispielsweise bei vielen Anwendungen für Chipkarten, sollen jeweilige Mikrocontroller aufgrund von Sicherheits- und Zuverlässigkeitsanforderungen nur Programmcode ausführen, dessen Integrität erfolgreich geprüft wurde.
  • Anforderungen an die Ausführungszeit von Programmcode, insbesondere beim Starten, wie z.B. beim Start einer NFC(Near Field Communication)-Kommunikation durch eine Chipkarte, verhindern jedoch den Einsatz verschiedener Ansätze zur Programm-Code-Überprüfung. So erfordert ein typischer Ansatz beispielsweise das doppelte Lesen des Programmcodes (einmal, um ihn zu prüfen, und ein weiteres Mal um ihn auszuführen), die Berechnung eines Prüfwerts (z.B. einer Prüfsumme oder einer Signatur) und den Vergleich des Prüfwerts mit einem Referenzwert, was in der Praxis zu viel Zeit erfordern kann.
  • Es sind deshalb Herangehensweisen für die Gewährleistung der Integrität von ausgeführtem Code mit geringem zeitlichem Overhead wünschenswert.
  • Gemäß einem Ausführungsbeispiel wird ein Verfahren zum Ausführen eines Programms auf einer Datenverarbeitungsvorrichtung bereitgestellt, aufweisend Speichern mehrerer Programminstruktionen und von einem Prozessor der Datenverarbeitungsvorrichtung zu verarbeitender Daten in einem oder mehreren Speichern der Datenverarbeitungsvorrichtung, Empfangen, durch die Datenverarbeitungsvorrichtung von einer externen Datenverarbeitungsvorrichtung eines Referenzwerts für eine Prüfung der mehreren Programminstruktionen und Speichern des Referenzwerts in der Datenverarbeitungsvorrichtung, Berechnen eines Prüfwerts aus den mehreren Programminstruktionen für die Prüfung durch die Datenverarbeitungsvorrichtung beim Laden der Programminstruktionen aus den ein oder mehreren Speichern in einen Befehlszwischenspeicher der Datenverarbeitungsvorrichtung oder durch Lesezugriff auf den Befehlszwischenspeicher nach dem Laden der Programminstruktionen in den Befehlszwischenspeicher aus den ein oder mehreren Speichern und Ausführen zumindest eines Teils der Programminstruktionen durch den Prozessor, falls der Prüfwert mit dem empfangenen Referenzwert übereinstimmt.
  • Gemäß einer weiteren Ausführungsform wird eine Datenverarbeitungsvorrichtung gemäß dem oben beschriebenen Verfahren bereitgestellt. Gemäß einer weiteren Ausführungsform wird ein Datenverarbeitungssystem bereitgestellt, das die Datenverarbeitungsvorrichtung und die externe Datenverarbeitungsvorrichtung, die eingerichtet ist, den Referenzwert zu erzeugen und an die Datenverarbeitungsvorrichtung zu liefern, aufweist. Es sollte beachtet werden, dass Ausführungsformen, die im Zusammenhang mit dem Verfahren beschrieben sind, analog für die Datenverarbeitungsvorrichtung gelten und umgekehrt.
  • Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
    • 1 zeigt eine Datenverarbeitungsvorrichtung.
    • 2 zeigt eine Datenverarbeitungsvorrichtung gemäß einer Ausführungsform.
    • 3 veranschaulicht eine Überprüfung von Programmcode bei der Architektur von 2.
    • 4 zeigt eine Ausführungsform, bei der eine Überprüfungseinheit zwischen CPU und Instruktions-Cache-Speicher angeordnet ist.
    • 5 zeigt eine Variante, bei der die CPU den Vergleich eines von der Überprüfungseinheit gelieferten Prüfwerts mit einem Referenzwert durchführt.
    • 6 veranschaulicht die Überprüfung eines weiteren Programmcode-Teils nach der Überprüfung von 5.
    • 7 zeigt eine Variante, bei dem die Überprüfungseinheit als Teil des Instruktions-Cache-Speichers implementiert ist und die Prüfwertberechnung sowie den Vergleich mit dem Referenzwert vornimmt.
    • 8 zeigt eine Variante, bei der für jeden mehrerer Programmcode-Teile ein jeweiliger Referenzwert zusammen mit dem Programmcode-Teil in einem nichtflüchtigen Speicher enthalten ist.
    • 9 veranschaulicht eine Ausführungsform, bei der jeder Programmcode-Teil mit einem jeweiligen Referenzwert versehen ist, der zusammen mit ihm (d.h. als Teil von ihm) gespeichert ist.
    • 10 veranschaulicht eine Ausführungsform, bei der ein erster Programmcode-Teil mit dem Referenzwert für einen zweiten Programmcode-Teil versehen ist und der zweite Programmcode-Teil mit dem Referenzwert für einen dritten Programmcode-Teil versehen ist.
    • 11 zeigt eine Datenverarbeitungsvorrichtung gemäß einer Ausführungsform.
    • 12 zeigt ein Ablaufdiagramm, das ein Verfahren zum Ausführen eines Programms auf einer Datenverarbeitungsvorrichtung veranschaulicht.
  • Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen. Im Rahmen dieser Beschreibung werden die Begriffe „verbunden“, „angeschlossen“ sowie „gekoppelt“ verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung.
  • 1 zeigt eine Datenverarbeitungsvorrichtung 100.
  • Die Datenverarbeitungsvorrichtung 100 weist eine CPU (central processing unit) sowie verschiedene Speicher, hier ein ROM (Read Only Memory) 102, eine nichtflüchtigen Speicher (NVM für non-volatile memory) 103 und ein RAM (Random-Access Memory) 104 auf.
  • Zwischen den Speichern 102, 103, 104 ist ein (Instruktions-)Cache-Speicher 105 (oder allgemein ein (Instruktions)-Zwischenspeicher für Instruktionen vorgesehen. Dieser beschleunigt die Abarbeitung von Instruktionen, die in den Speichern 102, 103, 104 gespeichert sind, durch die CPU 101, da die CPU 101 typischerweise schneller Instruktionen ausführen kann, als sie (einzeln) von den Speichern 101, 102, 103 geliefert werden könnten.
  • Ähnlich ist ein (Daten-)Cache-Speicher 106 für Daten vorgesehen, hier zwischen NVM 103 und CPU 101 und RAM 104 und CPU 101, welcher eine schnelle Verarbeitung von Daten durch die CPU 101 ermöglicht.
  • Beim Starten der Datenverarbeitungsvorrichtung 100 (z.B. wenn eine Smartcard in ein Leserfeld eingebracht wird) führt die CPU 101 Start-Programmcode (d.h. Programminstruktionen für den Start der Datenverarbeitungsvorrichtung) aus, der im ROM 102 (oder auch im NVM 103 oder einer Kombination aus beidem) gespeichert ist.
  • Diesen Start-Code führt die CPU 101 in einem besonderen Start-Modus aus. Anschließend wechselt sie in einen Benutzer-Modus, in dem sie Benutzer-Programmcode aus dem NVM 103 abruft und ausführt.
  • Im NVM 103 gespeicherter Programmcode ist allerdings veränderlich, insbesondere durch einen Angreifer. Deshalb kann bei sicherheitskritischen Anwendungen Programmcode aus dem NVM 103 durch Ausführung von entsprechendem Programmcode aus dem ROM 102 (der nicht veränderlich ist und deshalb als sicher angenommen werden kann) auf seine Integrität hin überprüft, bevor er ausgeführt wird. Dies kann beispielsweise erfolgen, indem der Programmcode im ROM vorsieht, dass eine Checksumme (allgemein ein Prüfwert, der gemäß einer vorgegebenen Prüfwert-Berechnungsfunktion berechnet wird, wie z.B. auch ein Hashwert oder eine Signatur) für den Programmcode im NVM 103, der ausgeführt werden soll, berechnet wird und diese mit eine gespeicherten in der Datenverarbeitungsvorrichtung hinterlegtem Referenzwert verglichen wird. Nur bei Übereinstimmung von Prüfwert mit dem Referenzwert führt die CPU 101 den Programmcode aus dem NVM 103 aus.
  • Der Programmcode, der die Überprüfung vornimmt, kann auch (zumindest teilweise) im NVM 103 gespeichert sein, wird aber in diesem Fall vor seiner Ausführung überprüft, sodass er vertrauenswürdig ist.
  • Die Überprüfung des Programmcodes im NVM 103 erfolgt beispielsweise blockweise (d.h. jeder Block hat einen eigenen ihm zugeordneten Referenzwert für eine solche Überprüfung).
  • Wenn so vorgegangen wird, wird für die Überprüfung des Benutzer-Programmcodes dieser zunächst in den Daten-Cache-Speicher 106 geladen, da ihn die CPU 101 als Daten gemäß dem Uberprüfungsprogrammcode aus dem ROM (welcher in den Instruktions-Cache-Speicher 105 geladen wird) verarbeitet wird. Bei erfolgreicher Überprüfung (d.h. Prüfwert ist gleich Referenzwert) wird der Benutzer-Programmcode dann als Instruktionen behandelt und für seine Ausführung in den Instruktions-Cache-Speicher 105 geladen. Der Benutzer-Programmcode wird somit zweimal in einen Cache-Speicher geladen. Zur Beschleunigung kann die Erzeugung der Prüfsumme auch durch eine Hardware-Schaltung erfolgen (d.h. nicht mittels durch ein von der CPU 101 ausgeführtes Überprüfungsprogramm). In diesem Fall sind aber zusätzliche Datentransfers zwischen der CPU 101 und dieser Hardware-Schaltung (z.B. einen Peripheriebaustein) erforderlich.
  • Bei Anwendungen, in denen wenig Zeit zur Verfügung steht, z.B. wenn ein Benutzerprogramm innerhalb der kurzen Zeit, in der eine Smartcard sich in einem NFC(Near Field Communication)-Feld befindet, ausgeführt werden muss, ist deshalb bei einer solchen Vorgehensweise keine (oder zumindest keine vollständige) Programmcode-Überprüfung möglich.
  • Gemäß verschiedenen Ausführungsformen wird eine Herangehensweise beschrieben, die eine schnellere Programmcode-Integritätsüberprüfung ermöglicht, als die oben mit Bezug auf 1 beschriebene Herangehensweise.
  • 2 zeigt eine Datenverarbeitungsvorrichtung 200 gemäß einer Ausführungsform.
  • Die Datenverarbeitungsvorrichtung 200 kann jede Art von Datenverarbeitungsvorrichtung sein, wie beispielsweise ein Computer oder ein Smartphone, eine Chipkarte (mit beliebigem Formfaktor) oder eine Steuereinrichtung (z.B. mit einem Mikrocontroller), die z.B. in einem Fahrzeug verwendet wird.
  • Ähnlich wie die Datenverarbeitungsvorrichtung 100 weist die Datenverarbeitungsvorrichtung 200 eine CPU 201, ein ROM 202 und ein NVM 203 auf. Die Datenverarbeitungsvorrichtung 200 kann auch ein RAM aufweisen. Außerdem weist die Datenverarbeitungsvorrichtung 200 einen Daten-Cache-Speicher auf. Da dieser jedoch nicht an der Überprüfung von Programmcode beteiligt ist, ist er in 2 nicht gezeigt. Das ROM 202 und das NVM 203 sind über eine Überprüfungseinheit 204 und einen Instruktions-Cache-Speicher 205 (ähnlich wie der Instruktions-Cache-Speicher 105 zum Beschleunigen der Ausführung von Instruktionen) mit der CPU 201 verbunden.
  • Die Überprüfungseinheit 204 kann zumindest teilweise als (dedizierte) Hardwareschaltung ausgeführt sein oder sie kann auch eine in Software implementierte Uberprüfungs-Engine sein (deren Programminstruktionen z.B. im ROM 202 gespeichert sind) die von der CPU 201 oder auch einer anderen programmierbaren Komponente der die Datenverarbeitungsvorrichtung 200 ausgeführt wird.
  • 3 veranschaulicht eine Überprüfung von Programmcode bei der Architektur von 2.
  • Der zu überprüfende Programmcode ist in einem NVM 303, das dem NVM 203 entspricht, gespeichert und besteht beispielhaft aus zwei Programmcode-Blöcken 306, 307.
  • In 3 sind außerdem eine Überprüfungseinheit 304 entsprechend der Überprüfungseinheit 204 sowie ein Instruktions-Cache-Speicher 305 entsprechend dem Instruktions-Cache-Speicher 205 sowie die Tätigkeiten der CPU 301 dargestellt.
  • Im Folgenden wird der in 3 durch die mit (1) bis (7) nummerierten Kreise veranschaulichte Ablauf genauer beschrieben.
  • In (1) wird die Datenverarbeitungsvorrichtung durch Ausführen von Start-Programmcode aus dem ROM 202 z.B. wie mit Bezug auf 2 beschrieben gestartet.
  • In (2) initialisiert die CPU 201 die Überprüfungseinheit 304 für das Überprüfen von Programmcode.
  • In (3) richtet die Überprüfungseinheit 304 den Instruktions-Cache-Speicher 305 für die Unterstützung der Programmcode-Überprüfung ein. In (4a) und (4b) liest der Instruktions-Cache-Speicher 305 den ersten zu überprüfenden Programmcode-Teil 306 über die Überprüfungseinheit 304 ein und sperrt diesen Programmcode-Teil 306 im Instruktions-Cache-Speicher 305 (d.h. es erfolgt ein Cache-Lock für den ersten Programmcode-Teil 306 im Instruktions-Cache-Speicher 305).
  • Die Überprüfungseinheit 304 berechnet dabei (d.h. während der Programmcode-Teil 306 über sie eingelesen wird) den Prüfwert für den ersten Programmcode-Teil 306.
  • In (5) liest die Überprüfungseinheit 304 den Referenzwert für den ersten Programmcode-Teil 306 und vergleicht den gelesenen Referenzwert mit dem berechneten Prüfwert.
  • Ist die Überprüfung erfolgreich (d.h. Prüfwert gleich Referenzwert), so führt die CPU 301 in (6) den ersten Programmcode-Teil 306 aus. Hat die CPU den ersten Programmcode-Teil 306 ausgeführt und die Ausführung eines weiteren Programmcode-Teils, hier des zweiten Programmcode-Teil 307, ist erforderlich, werden (4a), (4b) und (5) auch für den zweiten Programmcode-Teil 307 durchgeführt und (nach erfolgreicher Überprüfung auch dieses Programmcode-Teils) führt die CPU 301 den zweiten Programmcode-Teil 307 aus.
  • Detektiert die Überprüfungseinheit 304 eine Abweichung zwischen Prüfwert und Referenzwert für einen Programmcode-Teil so gibt sie ein (Fehler- oder Alarm-)Signal aus, z.B. zum Rücksetzen (d.h. Auslösen eines Sicherheits-Resets) der Datenverarbeitungsvorrichtung 100. Die CPU 301 kann den jeweiligen Programmteil auch im Falle einer Abweichung ausführen (d.h. eine Abweichung kann akzeptiert werden), wobei dann aber eine geeignete Reaktion auf das Signal erfolgt, z.B. eine Sicherheitsmaßnahme ergriffen wird wie z.B. eine Überprüfung von Verarbeitungsergebnissen.
  • Wenn alle Programmcode-Teile erfolgreich überprüft und ausgeführt wurden, kann die Überprüfungseinheit deaktiviert werden. Dies kann durch den letzten Programmcode-Teil des jeweiligen Programms erfolgen.
  • Da bei der mit Bezug auf 3 beschriebenen Vorgehensweise der zu prüfende Programmcode 306, 307 für Überprüfung und Ausführung nur einmal in einen Cache-Speicher geladen werden braucht, weil er bei seinem Laden in den Instruktions-Cache-Speicher 304 geprüft wird (oder, als Alternative, im Instruktions-Cache-Speicher 304 geprüft wird) ist eine im Vergleich zu der mit 2 beschriebenen Vorgehensweise schnellere Überprüfung und Ausführung von Programmcode möglich. Es sind für die mit Bezug auf 3 beschriebenen Vorgehensweise keine zusätzlichen Datentransfers oder Speicherressourcen (wie NVM oder RAM) erforderlich.
  • Außerdem wird die Sicherheit erhöht, da der Programmcode geprüft ist, wenn er in den Instruktionsspeicher 304 geladen ist und kein weiteres Laden auftritt, bei dem oder vor dem er wieder verändert werden könnte. Die Programmcode-Teile sind, zumindest bis sie ausgeführt wurden, im Cache gesperrt.
  • Für den Fall, dass ein schon einmal geprüfter und ausgeführter Programmteil noch einmal ausgeführt werden muss, können für die Programmteile Markierungen (z.B. ein Flag) vorgesehen sein, die es ermöglichen, dass ein solcher Programmteil als schon geprüft markiert werden kann. In diesem Fall kann die Überprüfungseinheit 304 auf eine erneute Überprüfung des Programmteils verzichten.
  • Der Instruktions-Cache-Speicher 304 kann auch ein anderer (Zwischen-)Speicher oder Speicherbereich sein, der die Abarbeitung von Programmcode beschleunigt, wie z.B. ein TCM (Tightly Coupled Memory), z.B. ein Tightly Coupled RAM, insbesondere ein Speicher mit dedizierter Verbindung zur CPU 301 zum Übertragen von Programminstruktionen. Dieser Speicher (oder Speicherbereich), der auch als Befehlszwischenspeicher bezeichnet wird, kann ein für Instruktionen dedizierter Speicher (oder Speicherbereich) sein.
  • In die Berechnung des Prüfwerts kann ein auf der Datenverarbeitungsvorrichtung 100 hinterlegter, z.B. durch unter anderen Logikzellen versteckter Logikzellen repräsentierter, Schlüsselwert verwendet werden. Dadurch kann verhindert werden, dass ein Angreifer in der Lage ist, für Schadcode den korrekten Prüfwert zu berechnen. Für die Berechnung der Referenzwerte (was z.B. beim Hersteller passiert) wird dieser geheime Schlüsselwert verwendet. Die Prüfwert-Berechnungsfunktion kann auch auf asymmetrischer Kryptographie basieren, d.h. der Prüfwert ist eine Signatur, die mittels eines privaten (geheimen und z.B. versteckten) Schlüssels berechnet wird und der Vergleich mit dem Referenzwert (d.h. die Überprüfung des Prüfwerts auf Korrektheit) erfolgt mittels eines öffentlichen (z.B. in der Firmware hinterlegten) Schlüssels.
  • Der Referenzwert kann z.B. in einem schreibgeschützten Bereich 308 des NVM 303 abgelegt werden (der z.B. nur vom Hersteller geschrieben werden kann, mittels eines Flash-Loader oder für den im Benutzer-Modus der Schreibzugriff blockiert ist). Insbesondere können sich die Referenzwerte in anderen Speicherbereichen befinden als der zu überprüfende Programmcode.
  • Wird der oben beschriebene Überprüfungsmechanismus eingesetzt, kann auf EDC (Error Detection Code) zum Schutz von Programmcode im Speicher verzichtet werden (kann aber auch als zusätzliche Maßnahme, z.B. mit einer reduzierten Anzahl von Prüfbits, vorgesehen sein). Damit kann der Overhead für den Schutz, beispielsweise des NVM 303, verringert werden, da größere Blöcke (mehrere Speicherzellen statt eine pro EDC) durch einen einzigen Referenzwert geschützt werden. Es kann somit ein besseres Verhältnis zwischen Programmcode und Referenzwerten erreicht werden. Da auf diese Weise Overhead eingespart werden kann, kann dann auch eine kompliziertere Prüfwertberechnung (mit Prüfwerten mit einer hohen Anzahl von Bits) vorgesehen werden, wodurch eine hohe Sicherheit gewährleistet werden kann. Weiterhin kann die Anzahl der Bits besser optimiert werden, da EDC auf den kompletten Speicher angewendet wird und der oben beschriebene Überprüfungsmechanismus auch nur auf einen kleinen Codebereich angewendet werden kann. Darüber hinaus bietet der obige Überprüfungsmechanismus im Gegensatz zu EDC einen Schutz gegen das Einbringen von Schadcode durch einen Angreifer mittels eines internen Schreibzugriffs.
  • Der Überprüfungsmechanismus kann von einer MMU (Memory Management Unit) und/oder von einer MPU (Memory Protection Unit) unterstützt werden, die in der Datenverarbeitungsvorrichtung vorgesehen ist bzw. sind.
  • 4 zeigt eine Ausführungsform, bei der die Überprüfungseinheit 404 zwischen CPU 401 und Instruktions-Cache-Speicher 405 angeordnet ist. Entsprechend ist der Instruktions-Cache-Speicher 402 direkt (d.h. nicht über die Überprüfungseinheit 404) mit ROM 402 und NVM 403 verbunden.
  • In dieser Ausführungsform erfolgt das Prüfen der Programmcode-Teile nicht beim Laden in den Instruktions-Cache-Speicher 405, sondern die Programmcode-Teile werden in den Instruktions-Cache-Speicher 405 geladen, die Überprüfungseinheit 404 berechnet mittels Lesezugriffen auf den Instruktions-Cache-Speicher 405 den Prüfwert und bei erfolgreicher Überprüfung eines Programmcodeteils führt die CPU ihn (aus dem Instruktions-Cache-Speicher 405 heraus) aus.
  • 5 zeigt eine Variante, bei der die CPU 501 den Vergleich des von der Überprüfungseinheit 504 (in diesem Beispiel als Teil des Instruktions-Cache-Speichers 505 implementiert) gelieferten Prüfwerts mit dem zugeordneten Referenzwert durchführt.
  • Hierbei ist in 5 die Überprüfung eines ersten Programmcode-Teils 506 nach dem Start 509 der Datenverarbeitungsvorrichtung veranschaulicht.
  • 6 veranschaulicht die Überprüfung eines weiteren Programmcode-Teils 607 nach der Überprüfung des ersten Programmcode-Teils 506 von 5.
  • Die Durchführung des Vergleichs durch die CPU wie in 5 und 6 ist beispielsweise (nur) dann vorgesehen, wenn der Referenzwert schreibgeschützt ist.
  • 7 zeigt eine Variante, bei dem die Überprüfungseinheit 704 als Teil des Instruktions-Cache-Speichers 705 implementiert ist und die Prüfwertberechnung sowie den Vergleich mit dem Referenzwert vornimmt.
  • 8 zeigt eine Variante, bei der für jeden Programmcode-Teil 806, 807 ein jeweiliger Referenzwert 809, 810 zusammen mit dem Programmcode-Teil 806, 807 im NVM 803 enthalten ist, sodass er zusammen mit dem Programmcode-Teil 806, 807 in den Instruktions-Cache-Speicher 805 geladen wird. Die Überprüfungseinheit 804 kann dann für den Vergleich auf dem im Instruktions-Cache-Speicher 805 abgelegten Referenzwert zugreifen, wenn sie den Prüfwert für den Programmcode-Teil berechnet hat.
  • 9 veranschaulicht eine Ausführungsform, bei der jeder Programmcode-Teil 906, 907, 911 mit einem jeweiligen Referenzwert 913, 914, 915 versehen ist, der zusammen mit ihm (d.h. als Teil von ihm) gespeichert ist.
  • 10 veranschaulicht eine Ausführungsform, bei der ein erster Programmcode-Teil 1001 mit dem Referenzwert für einen zweiten Programmcode-Teil 1002 versehen ist und der zweite Programmcode-Teil 1002 mit dem Referenzwert für einen dritten Programmcode-Teil 1003 (allgemein so weiter bis zum n-ten, d.h. letzten, Programmcode-Teil) versehen ist. Der letzte Programmcode-Teil 1003 ist mit keinem Referenzwert versehen. Der Referenzwert für den ersten Programmcode-Teil 1001 ist getrennt von den Programmcode-Teilen 1001, 1003, 1003, hier in einem sicheren NVM-Speicherbereich 1004, gespeichert.
  • In diesem Fall kann die Überprüfungseinheit 1005 den Prüfwert für den Code-Teil inklusive des Referenzwerts, mit dem der Code-Teil versehen ist, berechnen. Damit wird auch der Referenzwert vor Manipulation geschützt.
  • Zusammenfassend wird gemäß verschiedenen Ausführungsformen eine Datenverarbeitungsvorrichtung bereitgestellt, wie sie in 11 dargestellt ist.
  • 11 zeigt eine Datenverarbeitungsvorrichtung 1100 gemäß einer Ausführungsform.
  • Die Datenverarbeitungsvorrichtung 1100 weist einen Prozessor 1101, einen oder mehrere Speicher 1102, die eingerichtet sind, mehrere Programminstruktionen und von einem Prozessor der Datenverarbeitungsvorrichtung zu verarbeitender Daten zu speichern, einen Befehlszwischenspeicher 1103 zum Zwischenspeichern der Programminstruktionen zur Ausführung durch den Prozessor 1101 und einen Datenzwischenspeicher 1104 zum Zwischenspeichern der zu verarbeitenden Daten auf.
  • Die Datenverarbeitungsvorrichtung 1100 weist ferner eine Kommunikationsschnittstelle 1106 zu einer externen Datenverarbeitungsvorrichtung 1107 auf, die eingerichtet ist, von der externen Datenverarbeitungsvorrichtung 1107 einen Referenzwert für eine Prüfung der mehreren Programminstruktionen zu empfangen.
  • Die Datenverarbeitungsvorrichtung 1100 weist ferner eine Überprüfungseinheit 1105 auf, die eingerichtet ist, einen Prüfwert für die Prüfung beim Laden der Programminstruktionen aus den ein oder mehreren Speichern 1102 in einen Befehlszwischenspeicher 1103 der Datenverarbeitungsvorrichtung oder durch Lesezugriff auf den Befehlszwischenspeicher 1103 nach dem Laden der Programminstruktionen in den Befehlszwischenspeicher aus den ein oder mehreren Speichern 1102 zu berechnen.
  • Der der Prozessor 1101 ist eingerichtet, zumindest einen Teil der Programminstruktionen auszuführen, falls der Prüfwert mit dem empfangenen Referenzwert übereinstimmt.
  • Die externe Datenverarbeitungsvorrichtung 1107 ist gegenüber der Datenverarbeitungsvorrichtung 1100 extern, d.h. es sind getrennte Vorrichtungen, z.B. in getrennten Gehäusen. Beispielsweise kann der Referenzwert bei der Herstellung der Datenverarbeitungsvorrichtung 1100 (z.B. vor der Auslieferung an einen Kunden) mit der externen Datenverarbeitungsvorrichtung 1107 über die Kommunikationsschnittstelle 1106 verbunden werden (z.B. über entsprechende Kontakte oder auch kontaktlos) und den Referenzwert von ihr empfangen und (vorab) speichern. Beispielsweise kann die Datenverarbeitungsvorrichtung 1100 den Referenzwert zusammen mit den Programminstruktionen (also Programmcode) empfangen und dann im Betrieb sicherstellen, dass die Programminstruktionen nicht verändert wurden. Dazu speichert sie den Referenzwert in beispielsweise in einem schreibgeschützten (ggf. gesicherten) Speicherbereich.
  • Der Befehlszwischenspeicher und der Datenzwischenspeicher brauchen nicht notwendig mittels getrennter Speicher (z.B. Speicherchips) implementiert zu werden, sie können auch (getrennte) Speicherbereiche eines Speichers (oder einer Speicheranordnung) sein.
  • Der Befehlszwischenspeicher und der Datenzwischenspeicher sind beispielsweise zumindest in dem Sinne Zwischenspeicher, dass sie flüchtige Speicher sind, während der Speicher (der mehrere Speichervorrichtungen aufweisen kann) beispielsweise ein nichtflüchtiger Speicher ist. Der Befehlszwischenspeicher ist beispielsweise ein für das Zwischenspeichern von Befehlen (d.h. Programminstruktionen) dedizierter Zwischenspeicher und der Datenzwischenspeicher ist beispielsweise ein für das Speichern von zu verarbeitenden Daten (d.h. Daten, die vom Prozessor nicht als Befehle ausgeführt werden, d.h. keine Prozessorinstruktionen spezifizieren, die der Prozessor ausführt, sondern die durch ausgeführte Prozessorinstruktionen verarbeitet werden) dedizierter Zwischenspeicher.
  • 12 zeigt ein Ablaufdiagramm, das ein Verfahren zum Ausführen eines Programms auf einer Datenverarbeitungsvorrichtung, veranschaulicht.
  • In 1201 werden mehrere Programminstruktionen und von einem Prozessor der Datenverarbeitungsvorrichtung zu verarbeitende Daten in einem oder mehreren Speichern der Datenverarbeitungsvorrichtung gespeichert.
  • In 1202 wird durch die Datenverarbeitungsvorrichtung von einer externen Datenverarbeitungsvorrichtung ein Referenzwert für eine Prüfung der mehreren Programminstruktionen empfangen und gespeichert.
  • In 1203 wird ein Prüfwert für die Prüfung durch die Datenverarbeitungsvorrichtung aus den mehreren Programminstruktionen beim Laden der Programminstruktionen aus den ein oder mehreren Speichern in einen Befehlszwischenspeicher der Datenverarbeitungsvorrichtung oder durch Lesezugriff auf den Befehlszwischenspeicher nach dem Laden der Programminstruktionen in den Befehlszwischenspeicher aus den ein oder mehreren Speichern berechnet.
  • In 1204 wird zumindest ein Teil der Programminstruktionen durch den Prozessor ausgeführt, falls der Prüfwert mit dem empfangenen Referenzwert übereinstimmt.
  • Die Datenverarbeitungsvorrichtung kann beispielsweise so eingerichtet sein, dass der Referenzwert sowie der Prüfwert nicht durch den Benutzer der Datenverarbeitungsvorrichtung erzeugt werden kann. Das schließt gemäß einer Ausführungsform ein, dass der Prüfwert der in der Datenverarbeitungsvorrichtung (d.h. in der Überprüfungseinheit) berechnet wird, dem Prozessor bzw. einem ausgeführten Programm und dem Benutzer nicht bekannt ist.
  • Im Folgenden werden verschiedene Ausführungsbeispiele angegeben.
  • Ausführungsbeispiel 1 ist ein Verfahren zum Ausführen eines Programms auf einer Datenverarbeitungsvorrichtung, wie mit Bezug auf 12 beschrieben.
  • Ausführungsbeispiel 2 ist ein Verfahren nach Ausführungsbeispiel 1, aufweisend Speichern des Referenzwerts in einem schreibgeschützten Speicherbereich der Datenverarbeitungsvorrichtung.
  • Ausführungsbeispiel 3 ist ein Verfahren nach Ausführungsbeispiel 1 oder 2, wobei der Prüfwert ein kryptographischer Prüfwert ist.
  • Ausführungsbeispiel 4 ist ein Verfahren nach einem der Ausführungsbeispiele 1 bis 3, wobei der Prüfwert von einem in der Datenverarbeitungsvorrichtung verborgenen Schlüssel abgeleitet wird.
  • Ausführungsbeispiel 5 ist ein Verfahren nach einem der Ausführungsbeispiele 1 bis 4, aufweisend Berechnen des Prüfwerts beim Laden der Programminstruktionen aus den ein oder mehreren Speichern in den Befehlszwischenspeicher durch Lesezugriff auf einen Übertragungspfad zwischen den ein oder mehreren Speichern und dem Befehlszwischenspeicher.
  • Ausführungsbeispiel 6 ist ein Verfahren nach einem der Ausführungsbeispiele 1 bis 5, aufweisend Speichern des Referenzwerts in einem schreibgeschützten Speicherbereich der Datenverarbeitungsvorrichtung und Vergleichen des Prüfwerts mit dem Referenzwert durch den Prozessor.
  • Ausführungsbeispiel 7 ist ein Verfahren nach einem der Ausführungsbeispiele 1 bis 5, aufweisend Vergleichen des Prüfwerts mit dem Referenzwert durch eine Überprüfungseinheit, die den Prüfwert berechnet.
  • Ausführungsbeispiel 8 ist ein Verfahren nach einem der Ausführungsbeispiele 1 bis 7, aufweisend Ausgeben eines Signals und/oder Durchführen einer Sicherheitsmaßnahme, falls der Prüfwert nicht mit Referenzwert übereinstimmt.
  • Ausführungsbeispiel 9 ist ein Verfahren nach einem der Ausführungsbeispiele 1 bis 8, wobei für jeden mehrerer Programmcode-Teile mit jeweils mehreren Programminstruktionen eines Programms ein jeweiliger Referenzwert empfangen wird, beim Laden des Programmcode-Teils in den Befehlszwischenspeicher oder durch Lesezugriff auf den Befehlszwischenspeicher nach dem Laden des Programmcode-Teils in den Befehlszwischenspeicher ein Prüfwert berechnet wird, und wobei für jeden der mehreren Programmcode-Teile zumindest ein Teil des Programmcode-Teils durch den Prozessor ausgeführt wird, falls der für den Programmcode-Teil berechnete Prüfwert mit dem für den Programmcode-Teil empfangenen Referenzwert übereinstimmt.
  • Ausführungsbeispiel 10 ist eine Datenverarbeitungsvorrichtung, wie mit Bezug auf 11 beschrieben.
  • Ausführungsbeispiel 11 ist eine Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 10, wobei der Befehlszwischenspeicher einen gegenüber den einen oder mehreren Speichern beschleunigten Zugriff durch den Prozessor aufweist.
  • Ausführungsbeispiel 12 ist eine Datenverarbeitungsvorrichtung nach Ausführungsbeispiel 10 oder 11, wobei die Überprüfungseinheit eingerichtet ist, den Prüfwert mit dem Referenzwert zu vergleichen und ein Signal an eine andere Komponente der Datenverarbeitungsvorrichtung auszugeben, falls der Prüfwert nicht mit Referenzwert übereinstimmt.
  • Ausführungsbeispiel 13 ist eine Datenverarbeitungsvorrichtung nach einem der Ausführungsbeispiele 10 bis 12, wobei der Befehlszwischenspeicher ein Cache-Speicher oder ein Tightly Coupled RAM ist.
  • Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.
  • Bezugszeichen
  • 100
    Datenverarbeitungsvorrichtung
    101
    CPU
    102
    ROM
    103
    NVM
    104
    RAM
    105
    Instruktions-Cache
    106
    Daten-Cache
    200
    Datenverarbeitungsvorrichtung
    201
    CPU
    202
    ROM
    203
    NVM
    204
    Überprüfungseinheit
    205
    Instruktions-Cache
    301
    CPU
    303
    NVM
    304
    Überprüfungseinheit
    305
    Instruktions-Cache
    306, 307
    Programmcode-Teile
    308
    Schreibgeschützter NVM-Bereiche
    400
    Datenverarbeitungsvorrichtung
    401
    CPU
    402
    ROM
    403
    NVM
    404
    Überprüfungseinheit
    405
    Instruktions-Cache
    501
    CPU
    504
    Überprüfungseinheit
    505
    Instruktions-Cache
    506
    Programmcode-Teil
    509
    Start der Datenverarbeitungsvorrichtung
    607
    weiterer Programmcode-Teil
    704
    Übertragungseinheit
    705
    Instruktions-Cache
    803
    NVM
    804
    Überprüfungseinheit
    805
    Instruktions-Cache-Speicher
    806, 807
    Programmcode-Teile
    809, 810
    Referenzwerte
    906, 907, 911
    Programmcode-Teile
    912-914
    Referenzwerte
    1001-1003
    Programmcode-Teile
    1004
    Sicherer NVM-Speicherbereich
    1005
    Überprüfungseinheit
    1100
    Datenverarbeitungsvorrichtung
    1101
    Prozessor
    1102
    Speicher
    1103
    Befehlszwischenspeicher
    1104
    Datenzwischenspeicher
    1105
    Überprüfungseinheit
    1106
    Kommunikationsschnittstelle
    1107
    externe Datenverarbeitungsvorrichtung
    1200
    Ablaufdiagramm
    1201-1204
    Ablaufschritte

Claims (13)

  1. Verfahren zum Ausführen eines Programms auf einer Datenverarbeitungsvorrichtung, aufweisend: Speichern mehrerer Programminstruktionen und von einem Prozessor der Datenverarbeitungsvorrichtung zu verarbeitender Daten in einem oder mehreren Speichern der Datenverarbeitungsvorrichtung; Empfangen, durch die Datenverarbeitungsvorrichtung, von einer externen Datenverarbeitungsvorrichtung eines Referenzwerts für eine Prüfung der mehreren Programminstruktionen und Speichern des Referenzwerts in der Datenverarbeitungsvorrichtung; Berechnen eines Prüfwerts aus den mehreren Programminstruktionen für die Prüfung durch die Datenverarbeitungsvorrichtung beim Laden der Programminstruktionen aus den ein oder mehreren Speichern in einen Befehlszwischenspeicher der Datenverarbeitungsvorrichtung oder durch Lesezugriff auf den Befehlszwischenspeicher nach dem Laden der Programminstruktionen in den Befehlszwischenspeicher aus den ein oder mehreren Speichern; und Ausführen zumindest eines Teils der Programminstruktionen durch den Prozessor, falls der Prüfwert mit dem empfangenen Referenzwert übereinstimmt.
  2. Verfahren nach Anspruch 1, aufweisend Speichern des Referenzwerts in einem schreibgeschützten Speicherbereich der Datenverarbeitungsvorrichtung.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Prüfwert ein kryptographischer Prüfwert ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei der Prüfwert von einem in der Datenverarbeitungsvorrichtung verborgenen Schlüssel abgeleitet wird.
  5. Verfahren nach einem der Ansprüche 1 bis 4, aufweisend Berechnen des Prüfwerts beim Laden der Programminstruktionen aus den ein oder mehreren Speichern in den Befehlszwischenspeicher durch Lesezugriff auf einen Übertragungspfad zwischen den ein oder mehreren Speichern und dem Befehlszwischenspeicher.
  6. Verfahren nach einem der Ansprüche 1 bis 5, aufweisend Speichern des Referenzwerts in einem schreibgeschützten Speicherbereich der Datenverarbeitungsvorrichtung und Vergleichen des Prüfwerts mit dem Referenzwert durch den Prozessor.
  7. Verfahren nach einem der Ansprüche 1 bis 5, aufweisend Vergleichen des Prüfwerts mit dem Referenzwert durch eine Überprüfungseinheit, die den Prüfwert berechnet.
  8. Verfahren nach einem der Ansprüche 1 bis 7, aufweisend Ausgeben eines Signals und/oder Durchführen einer Sicherheitsmaßnahme, falls der Prüfwert nicht mit Referenzwert übereinstimmt.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei für jeden mehrerer Programmcode-Teile mit jeweils mehreren Programminstruktionen eines Programms ein jeweiliger Referenzwert empfangen wird, beim Laden des Programmcode-Teils in den Befehlszwischenspeicher oder durch Lesezugriff auf den Befehlszwischenspeicher nach dem Laden des Programmcode-Teils in den Befehlszwischenspeicher ein Prüfwert berechnet wird, und wobei für jeden der mehreren Programmcode-Teile zumindest ein Teil des Programmcode-Teils durch den Prozessor ausgeführt wird, falls der für den Programmcode-Teil berechnete Prüfwert mit dem für den Programmcode-Teil empfangenen Referenzwert übereinstimmt.
  10. Datenverarbeitungsvorrichtung, aufweisend: Einen Prozessor; Einen oder mehrere Speicher, die eingerichtet sind, mehrere Programminstruktionen und von einem Prozessor der Datenverarbeitungsvorrichtung zu verarbeitender Daten zu speichern; Einen Befehlszwischenspeicher zum Zwischenspeichern der Programminstruktionen zur Ausführung durch den Prozessor; Einen Datenzwischenspeicher zum Zwischenspeichern der zu verarbeitenden Daten; Eine Kommunikationsschnittstelle zu einer externen Datenverarbeitungsvorrichtung, die eingerichtet ist, von der externen Datenverarbeitungsvorrichtung einen Referenzwert für eine Prüfung der mehreren Programminstruktionen zu empfangen und in den ein oder mehreren Speichern zu speichern; und Eine Überprüfungseinheit, die eingerichtet ist, einen Prüfwert aus den Programminstruktionen für die Prüfung beim Laden der Programminstruktionen aus den ein oder mehreren Speichern in einen Befehlszwischenspeicher der Datenverarbeitungsvorrichtung oder durch Lesezugriff auf den Befehlszwischenspeicher nach dem Laden der Programminstruktionen in den Befehlszwischenspeicher aus den ein oder mehreren Speichern zu berechnen; wobei der Prozessor eingerichtet ist, zumindest einen Teil der Programminstruktionen auszuführen, falls der Prüfwert mit dem empfangenen Referenzwert übereinstimmt.
  11. Datenverarbeitungsvorrichtung nach Anspruch 10, wobei der Befehlszwischenspeicher einen gegenüber den einen oder mehreren Speichern beschleunigten Zugriff durch den Prozessor aufweist.
  12. Datenverarbeitungsvorrichtung nach Anspruch 10 oder 11, wobei die Überprüfungseinheit eingerichtet ist, den Prüfwert mit dem Referenzwert zu vergleichen und ein Signal an eine andere Komponente der Datenverarbeitungsvorrichtung auszugeben, falls der Prüfwert nicht mit Referenzwert übereinstimmt.
  13. Datenverarbeitungsvorrichtung nach einem der Ansprüche 10 bis 12, wobei der Befehlszwischenspeicher ein Cache-Speicher oder ein Tightly Coupled RAM ist.
DE102022116869.7A 2022-07-06 2022-07-06 Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung Pending DE102022116869A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102022116869.7A DE102022116869A1 (de) 2022-07-06 2022-07-06 Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung
US18/217,693 US20240012903A1 (en) 2022-07-06 2023-07-03 Method for Executing a Program on a Data Processing Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102022116869.7A DE102022116869A1 (de) 2022-07-06 2022-07-06 Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung

Publications (1)

Publication Number Publication Date
DE102022116869A1 true DE102022116869A1 (de) 2024-01-11

Family

ID=89387109

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022116869.7A Pending DE102022116869A1 (de) 2022-07-06 2022-07-06 Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung

Country Status (2)

Country Link
US (1) US20240012903A1 (de)
DE (1) DE102022116869A1 (de)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016139079A1 (de) 2015-03-02 2016-09-09 Siemens Ag Österreich Schutz von speicherinhalten eines speichers eines computersystems unter verwendung einer hashfunktion
DE102015112143B4 (de) 2015-07-24 2017-04-06 Infineon Technologies Ag Ein Verfahren zum Bestimmen einer Integrität einer Ausführung eines Codefragments und ein Verfahren zum Bereitstellen einer abstrahierten Repräsentation eines Programmcodes
DE102016223341A1 (de) 2016-11-24 2018-05-24 Robert Bosch Gmbh Integrierte Schaltung mit Hardwareprüfeinheit zum Überprüfen von ausgewählten Speicherzugriffen
EP3819804A1 (de) 2019-11-08 2021-05-12 Siemens Aktiengesellschaft Integritätsüberprüfung eines registerinhalts
EP3929784A1 (de) 2020-06-23 2021-12-29 Siemens Aktiengesellschaft Booteinrichtung für ein computerelement und verfahren zum booten eines computerelements
DE102020207866A1 (de) 2020-06-25 2021-12-30 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Durchführen einer abgesicherten Startsequenz eines Steuergeräts
DE102020216030A1 (de) 2020-12-16 2022-06-23 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum abgesicherten Start einer Recheneinheit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016139079A1 (de) 2015-03-02 2016-09-09 Siemens Ag Österreich Schutz von speicherinhalten eines speichers eines computersystems unter verwendung einer hashfunktion
DE102015112143B4 (de) 2015-07-24 2017-04-06 Infineon Technologies Ag Ein Verfahren zum Bestimmen einer Integrität einer Ausführung eines Codefragments und ein Verfahren zum Bereitstellen einer abstrahierten Repräsentation eines Programmcodes
DE102016223341A1 (de) 2016-11-24 2018-05-24 Robert Bosch Gmbh Integrierte Schaltung mit Hardwareprüfeinheit zum Überprüfen von ausgewählten Speicherzugriffen
EP3819804A1 (de) 2019-11-08 2021-05-12 Siemens Aktiengesellschaft Integritätsüberprüfung eines registerinhalts
EP3929784A1 (de) 2020-06-23 2021-12-29 Siemens Aktiengesellschaft Booteinrichtung für ein computerelement und verfahren zum booten eines computerelements
DE102020207866A1 (de) 2020-06-25 2021-12-30 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Durchführen einer abgesicherten Startsequenz eines Steuergeräts
DE102020216030A1 (de) 2020-12-16 2022-06-23 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum abgesicherten Start einer Recheneinheit

Also Published As

Publication number Publication date
US20240012903A1 (en) 2024-01-11

Similar Documents

Publication Publication Date Title
DE69717063T2 (de) Verfahren und System zur sicheren Datenverarbeitung
DE102022105069A1 (de) Systeme, verfahren und vorrichtungen für gesicherte nichtflüchtige speicher
DE10162306A1 (de) Verfahren und Anordnung zur Verifikation von NV-Fuses sowie ein entsprechendes Computerprogrammprodukt und ein entsprechendes computerlesbares Speichermedium
DE102013225445A1 (de) Verfahren und System zum Umgehen von Authentizitätsüberprüfungen für geschützte Steuermodule
DE112018006401T5 (de) Transparent zugeordnete flash-memory-sicherheit
DE102016210788B4 (de) Komponente zur Verarbeitung eines schützenswerten Datums und Verfahren zur Umsetzung einer Sicherheitsfunktion zum Schutz eines schützenswerten Datums in einer solchen Komponente
EP1262856B1 (de) Programmgesteuerte Einheit
EP2673731B1 (de) Verfahren zur programmierung eines mobilendgeräte-chips
EP3811263B1 (de) Kryptografiemodul und betriebsverfahren hierfür
EP3754530B1 (de) Verfahren zum nachladen von software auf eine chipkarte durch einen nachladeautomaten
DE102022116869A1 (de) Verfahren zum ausführen eines programms auf einer datenverarbeitungsvorrichtung
DE112019004146T5 (de) Authentifizierung von dateien
WO2004090695A1 (de) Verfahren zur überprüfung der datenintegrität von software in steuergeräten
DE102022129538A1 (de) Datenintegritätsvalidierung von externem speicher
EP4139820B1 (de) Booteinrichtung für ein computerelement und verfahren zum booten eines computerelements
DE10131577A1 (de) Verfahren zum Schutz eines Mikrorechner-Systems gegen Manipulation seines Programms
DE102022111126A1 (de) Datenverarbeitungsvorrichtung und verfahren zum prüfen der integrität eines speichers
EP1930834A1 (de) Kryptographisch gesichertes Prozessorsystem
DE102017124805A1 (de) Speicheranordnung und verfahren zum zwischenspeichern von speicherinhalten
EP3876123B1 (de) Anordnung und betriebsverfahren für einen sicheren hochfahrablauf einer elektronischen einrichtung
DE102021212994B3 (de) Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung
DE102022111925A1 (de) Halbleiterchipvorrichtung und verfahren zum prüfen der integrität eines speichers
DE102016222691A1 (de) Mikrocontrollersystem und Verfahren zur Kontrolle von Speicherzugriffen in einem Mikrocontrollersystem
DE102017202787A1 (de) Verfahren und Validierungseinheit zum Steuern des Ladens von in IT-Systemen, insbesondere Eingebetteten Systemen, benutzbaren Krypto-Schlüsseln, insbesondere "Key BLOBs"
EP3347848B1 (de) Speicherprogrammierbarer baustein und verfahren zur geschützten übertragung von daten auf einen speicherprogrammierbaren baustein

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication