DE102016117495A1 - Datenverarbeitungseinrichtung und verfahren zum ausführen von computerprogrammcode - Google Patents

Datenverarbeitungseinrichtung und verfahren zum ausführen von computerprogrammcode Download PDF

Info

Publication number
DE102016117495A1
DE102016117495A1 DE102016117495.5A DE102016117495A DE102016117495A1 DE 102016117495 A1 DE102016117495 A1 DE 102016117495A1 DE 102016117495 A DE102016117495 A DE 102016117495A DE 102016117495 A1 DE102016117495 A1 DE 102016117495A1
Authority
DE
Germany
Prior art keywords
data processing
processing unit
registers
processing device
computer program
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.)
Ceased
Application number
DE102016117495.5A
Other languages
English (en)
Inventor
Markus Güller
Johann Schoetz
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 DE102016117495.5A priority Critical patent/DE102016117495A1/de
Publication of DE102016117495A1 publication Critical patent/DE102016117495A1/de
Ceased 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

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

Abstract

Eine Datenverarbeitungseinrichtung ist beschrieben, die eine erste Datenverarbeitungseinheit, die einen Prozessor mit einem oder mehreren Registern umfasst, und eine zweite Datenverarbeitungseinheit, die einen Speicher umfasst, der Computerprogrammcode und anfängliche Registerzustandsinformationen speichert, umfasst, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, den Computerprogrammcode und die anfänglichen Registerzustandsinformationen an die erste Datenverarbeitungseinheit bereitzustellen und die erste Datenverarbeitungseinheit zu steuern, damit das eine oder die mehreren Register initialisiert werden, indem die anfänglichen Registerzustandsinformationen in das eine oder die mehreren Register gespeichert werden, und den Computerprogrammcode unter Verwendung des einen oder der mehreren initialisierten Register auszuführen.

Description

  • Die vorliegende Offenbarung betrifft Datenverarbeitungseinrichtungen und Verfahren zum Ausführen von Computerprogrammcode.
  • Die sichere Ausführung von Computersoftware ist wünschenswert, um Angreifer daran zu hindern, die Ausführung zu manipulieren und Daten zu manipulieren und Zugang zu vertraulichen Informationen zu erlangen. Obwohl Angriffe beispielsweise unter Verwendung einer Integritätsprüfung, die z. B. durch Integritätsprüfungssoftware ausgeführt wird, detektiert werden können, verbleibt weiterhin das Problem, die Integritätsprüfungssoftware selbst davor zu schützen, angegriffen zu werden und z. B. manipuliert zu werden, so dass sie nicht richtig arbeitet. Dementsprechend sind Ansätze wünschenswert, die eine zuverlässige Ausführung eines Computerprogramms, z. B. eines Integritätsprüfungsprogramms, ermöglichen.
  • Eine Datenverarbeitungseinrichtung ist bereitgestellt, die eine erste Datenverarbeitungseinheit, die einen Prozessor mit einem oder mehreren Registern beinhaltet, und eine zweite Datenverarbeitungseinheit, die einen Speicher beinhaltet, der Computerprogrammcode und anfängliche Registerzustandsinformationen speichert, beinhaltet, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, den Computerprogrammcode und die anfänglichen Registerzustandsinformationen an die erste Datenverarbeitungseinheit bereitzustellen und die erste Datenverarbeitungseinheit zu steuern, so dass das eine oder die mehreren Register initialisiert werden, indem die anfänglichen Registerzustandsinformationen in das eine oder die mehreren Register gespeichert werden, und den Computerprogrammcode unter Verwendung des einen oder der mehreren initialisierten Register auszuführen.
  • In den Zeichnungen verweisen gleiche Bezugszeichen allgemein auf dieselben Teile in den verschiedenen Ansichten. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu, stattdessen wird allgemein Wert auf Veranschaulichung der Prinzipien der Erfindung gelegt. In der folgenden Beschreibung werden verschiedene Aspekte unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in welchen:
  • 1 ein Beispiel für ein Mobiltelefon darstellt.
  • 2 ein System auf einem Chip darstellt.
  • 3 ein System auf einem Chip gemäß einer Ausführungsform darstellt.
  • 4 ein Beispiel einer Datenverarbeitungsanordnung gemäß einer Ausführungsform darstellt, bei der eine Prozedur für einen Hochleistungslaufzeitintegritätsschutz auf eine teilweise externe System-auf-einem-Chip-Weise implementiert wird.
  • 5 ein System auf einem Chip gemäß einer Ausführungsform darstellt.
  • 6 ein Beispiel einer Datenverarbeitungsanordnung gemäß einer Ausführungsform darstellt, bei der eine Prozedur für eine vertrauenswürdige (d. h. sichere) Hochleistungslogikausführung auf eine teilweise externe SoC-Weise implementiert wird.
  • 7 eine Datenverarbeitungseinrichtung gemäß einer Ausführungsform darstellt.
  • 8 ein Flussdiagramm darstellt, das ein Verfahren zum Ausführen von Computerprogrammcode gemäß einer Ausführungsform veranschaulicht.
  • Die folgende ausführliche Beschreibung bezieht sich auf die beigefügten Zeichnungen, die zur Veranschaulichung spezifische Einzelheiten und Aspekte dieser Offenbarung darstellen, in denen die Erfindung ausgeübt werden kann. Andere Aspekte können benutzt werden und strukturelle, logische und elektrische Änderungen können vorgenommen werden, ohne vom Schutzumfang der Erfindung abzuweichen. Die verschiedenen Aspekte dieser Offenbarung schließen sich nicht unbedingt gegenseitig aus, da manche Aspekte dieser Offenbarung mit einem oder mehreren anderen Aspekten dieser Offenbarung kombiniert werden können, um neue Aspekte zu bilden.
  • 1 stellt ein Beispiel für ein Mobiltelefon 100 dar.
  • Das Mobiltelefon 100 beinhaltet, als Beispielkomponenten unter anderen möglichen, eine Antenne 101, ein Funksubsystem 102 (das z. B. einen Leistungsverstärker, einen Modulator, einen Demodulator usw. beinhaltet), das mit der Antenne 101 gekoppelt ist, einen Speicher 103, eine Audioschnittstelle 104, einen Lautsprecher 105, der mit der Audioschnittstelle 104 gekoppelt ist, einen Prozessor 106 und eine Anzeige 107.
  • Der Prozessor (oder die Zentralverarbeitungseinheit CPU) 106 ist zum Beispiel ein ARM-Prozessor und wird zum Beispiel als Teil eines Systems auf einem Chip (SoC) z. B. gemäß einer ARM-Architektur implementiert.
  • Ein System auf einem Chip, das auf ARMv7-A- oder ARMv8-A-Architektur und TrustZone®-Technologie basiert, ermöglicht, dass ARM-Trusted-World(vertrauenswürdige Laufzeitumgebung)-Software Anlagen und sensible Daten wie Fingerabdruckauthentifizierungsdaten vor Software schützt, die in der Normal World (normalen Laufzeitumgebung) läuft (z. B. Android OS). Schwachstellen und Exploits innerhalb der Trusted World ermöglichen jedoch die Installation von Rootkits und Malware, die in der Trusted World während eines normalen Gerätebetriebs nicht detektiert werden. Dies ist in 2 veranschaulicht.
  • 2 stellt ein System auf einem Chip 200 dar.
  • Das SoC 200 weist eine ARM-Architektur auf und beinhaltet einen Prozessor 201. Der Prozessor 201 führt Computerprogramme in entweder einer Normal World (d. h. einer weniger sicheren Umgebung mit einem geringeren Sicherheitsprofil) 202, wie etwa einem Betriebssystem (z. B. Android), oder in einer Trusted World (d. h. einer sichereren Umgebung mit einem höheren Sicherheitsprofil) 203 aus. Ein Angreifer kann ein Rootkit 204 in der Trusted World installieren.
  • Ein Ansatz zum Ansprechen der Gefahr derartiger Rootkits ist softwarebasierte Attestierung, deren Ziel ist, einen dynamischen Vertrauensanker ohne Hardwareunterstützung, d. h. ohne Zugriff auf SoC-Systembetriebsmittel, z. B. basierend auf einem Frage/Antwort-Schema, zu verwirklichen. Eine Frage/Antwort, die auf Ausführungszeit basiert, funktioniert jedoch typischerweise nur für eine bestimmte Hardwarekonfiguration.
  • Andere Ansätze besitzen Zugang zu Systembetriebsmitteln, aber erlauben nur die Detektion von Rootkits in der Normal World 202, jedoch nicht in der Trusted World 203, oder sind auf eine spezifische Architektur angepasst, z. B. basieren auf einer eingebetteten Mikrosteuerung im Chipsatz.
  • Im Folgenden werden Ansätze basierend auf einem Mechanismus beschrieben, der für ein beliebiges System auf einem Chip (SoC) verallgemeinert ist oder verallgemeinert werden kann, das ein Hochleistungscomputersubsystem mit einer Haupt-CPU und einem Hauptspeicher und ein vertrauenswürdiges CPU-Steuerungscomputersubsystem enthält, das typischerweise mit einer niedrigeren Leistung arbeitet. Daher können sie unabhängig von einer spezifischen ARM-CPU-Architektur und dem Vorhandensein einer Normal World und Trusted World wie oben beschrieben angewendet werden.
  • Zuerst wird ein Ansatz unter Bezugnahme auf 3 beschrieben, der spezifisch für das oben beschriebene Problem angesehen werden kann.
  • 3 stellt ein SoC 300 dar.
  • Das SoC 300 beinhaltet ein Hochleistungscomputersubsystem 301, das Hardware und Software beinhaltet. Beispielsweise ist dies als ein ARM-Client-SoC implementiert und beinhaltet zum Beispiel:
    • • Einen Hochleistungsprozessor 302 (z. B. einen ARMv7, ARMv8 Cortex-A), der Teil einer Prozessorgruppe, die einen CPU-Laufzeitzustand 303 enthält, was Gegenstand der Laufzeitintegritätsverletzungsdetektion ist. Der CPU-Laufzeitzustand kann den Inhalt von Prozessorregistern und Systemregistern (z. B. ARM-Systemregistern wie etwa Cachesteuerungsregistern, Zählersteuerungsregistern, Systemsteuerungsregistern, Registern, die Informationen über Empfänge usw. enthalten) sowie den Inhalt von Systemperipherien (z. B. zugänglich über einen im Speicher abgebildeten E/A), beispielsweise DMA-Steuerung, Interrupt-Steuerung usw., umfassen.
    • • Ein On-Chip-Speichersystem 304 (wie ein vertrauenswürdiger RAM), das CPU-Laufzeit-Code und -Daten 305 enthält, was Gegenstand der Laufzeitintegritätsverletzungsdetektion sind. Es kann auch ein (z. B. Doppeldatenraten DDR) Off-Chip-Speichersystem (nicht dargestellt) vorhanden sein, das CPU-Laufzeit-Code und -Daten enthält, was Gegenstand der Laufzeitintegritätsverletzungsdetektion ist.
  • Das SoC 300 beinhaltet ferner ein vertrauenswürdiges CPU-Steuerungssubsystem 306, das Hardware und Software beinhaltet. Dies kann zum Beispiel als ein Systemsteuerungsprozesssubsystem (SPC) implementiert werden und beinhaltet beispielsweise als Hardwarekomponenten:
    • • Einen dedizierten Systemsteuerungsprozessor (z. B. einen ARM-Cortex-M)
    • • Private Speicherbetriebsmittel (RAM/ROM)
    • • Im Speicher abgebildeten Zugang zu SoC-Systembetriebsmitteln (z. B. zum Hauptspeicher 304)
    • • Zugang zu einer vertrauenswürdigen Laufzeitmesslogik 311 Software:
    • • Einen CPU-&Speicherinjektionsdienst 307, der über prozessorspezifischen Befehlscode realisiert wird, der in den privaten Speicherbetriebsmitteln gespeichert ist und ausgeführt wird
    • • Einen Steuerungs-&Evaluierungsdienst 308, der über prozessorspezifischen Befehlscode realisiert wird, der in den privaten Speicherbetriebsmitteln gespeichert ist und ausgeführt wird
    • • Eine Messrichtlinie 309 und einen Laufzeitattestierungsreferenzwert 310, die in privaten Speicherbetriebsmitteln gespeichert sind
    • • Laufzeitmesslogik 311 und sicheren Zustand 312, die in Form von prozessorspezifischen Befehlen und Registerwerten repräsentiert werden, die spezifisch für den Hochleistungsprozessor 301 sind und in privaten Speicherbetriebsmitteln gespeichert werden.
  • Im Folgenden wird eine Prozedur zum Hochleistungslaufzeitintegritätsschutz (durch Durchführen einer Integritätsprüfung), die im SoC 300 integriert sein kann, d. h. während der Laufzeit des Haupt-CPU 302, auch unter Bezugnahme auf 3 beschrieben.
  • Bei 321 steuert der Steuerungs- und Evaluierungsdienst 308 den CPU-&Speicherinjektionsdienst 307, was die Messrichtlinie 309 zum Injizieren der Laufzeitmesslogik 311 und des sicheren Zustands 312 in das Hochleistungscomputersubsystem 301 bei 322 bereitstellt. Dies kann Stoppen der Haupt-CPU-Ausführung und Speichern des CPU-Laufzeitzustands 303 beinhalten, bevor der sichere Zustand 312 injiziert wird.
  • Der sichere Zustand kann den Inhalt von Prozessorregistern und Systemregistern (z. B. ARM-Systemregistern wie etwa Cachesteuerungsregistern, Zählersteuerungsregistern, Systemsteuerungsregistern, Registern, die Informationen über Empfänge usw. enthalten) sowie den Inhalt von Systemperipherien (z. B. zugänglich über einen im Speicher abgebildeten E/A), beispielsweise DMA-Steuerung, Interrupt-Steuerung usw., umfassen.
  • Bei 323 steuert der CPU- und Speicherinjektionsdienst 307 die geschützte Ausführung der Laufzeitmesslogik 311 am Hochleistungscomputersubsystem 301 auf eine vertrauenswürdige Art und Weise und löst diese aus.
  • Bei 324 misst die Laufzeitmesslogik 311 den CPU-Laufzeit-Code 305 und den möglicherweise gespeicherten CPU-Laufzeit-Codezustand 303 basierend auf der Messrichtlinie 309 und erzeugt einen Laufzeitmesswert als das Messergebnis.
  • Bei 325 ruft der CPU- und Speicherinjektionsdienst 307 das Verarbeitungsergebnis (d. h. den Laufzeitmesswert) der Laufzeitmesslogik 311 ab. Dies kann Wiederherstellen des CPU-Laufzeitzustands 303 und Fortsetzen der Haupt-CPU-Ausführung beinhalten.
  • Bei 326 evaluiert der Steuer- und Evaluierungsdienst 308 den Laufzeitmesswert, indem er ihn mit dem Laufzeitattestierungsreferenzwert 310 vergleicht.
  • Der unter Bezugnahme auf 3 beschriebene Ansatz ermöglicht das zuverlässige Detektieren der Injektion von Rootkits 327 in die Haupt-CPU-Laufzeitumgebung, während sogar die Hochleistungsmerkmale des Hochleistungscomputersubsystems 301 benutzt werden.
  • 4 stellt ein Beispiel einer Datenverarbeitungsanordnung 450, die ein SoC 400 beinhaltet, dar, bei der die Prozedur für einen Hochleistungslaufzeitintegritätsschutz auf eine teilweise externe SoC-Weise implementiert wird.
  • Zusätzlich zum SoC 400 beinhaltet die Datenverarbeitungsanordnung 450 eine SoC-externe Mikrosteuerung, z. B. eine Sicherheitssteuerung, 430.
  • Das SoC 400 beinhaltet ein Hochleistungscomputersubsystem 401 wie das Hochleistungscomputersubsystem 301 des SoC 300 von 3.
  • Das SoC 400 beinhaltet ferner ein vertrauenswürdiges CPU-Steuerungssubsystem 406, das Hardware und Software beinhaltet. Dies kann zum Beispiel als ein Systemsteuerungsprozesssubsystem (SPC) implementiert werden und beinhaltet beispielsweise Hardwarekomponenten wie das vertrauenswürdige CPU-Steuerungssubsystem 306 des SoC 300 von 3 und zusätzlich dazu eine eingebettete Steuerbusschnittstelle zur externen Mikrosteuerungskommunikation
    und als Softwarekomponenten:
    • • Einen CPU-&Speicherinjektionsdienst 407, der über prozessorspezifischen Befehlscode realisiert wird, der in den privaten Speicherbetriebsmitteln des vertrauenswürdigen CPU-Steuerungssubsystems 406 gespeichert ist und ausgeführt wird
    • • Laufzeitmesslogik 411 und Zustand 412, die in Form von prozessorspezifischen Befehlen und Registerwerten, die spezifisch für den Hochleistungsprozessor sind und in privaten Speicherbetriebsmitteln gespeicherten werden, repräsentiert werden. Es versteht sich, dass dies optional auch in der externen Mikrosteuerung 430 gespeichert werden könnte.
    • • Einen Gerätetreiber (nicht dargestellt) zum Kommunizieren mit der externen Mikrosteuerung 430
    • • Mittel wie kryptographische Protokolle zur geschützten und authentifizierten Kommunikation mit der externen Mikrosteuerung 430.
  • Die externe Mikrosteuerung 430 beinhaltet auch Hardware und Software. Dies kann zum Beispiel mittels einer Sicherheitssteuerung implementiert werden und beinhaltet
    • • Einen Steuerungs- und Evaluierungsdienst 408, der über prozessorspezifischen Befehlscode realisiert wird, der in der externen Mikrosteuerung 430 gespeichert ist und ausgeführt wird
    • • Eine Messrichtlinie 409 und einen Laufzeitattestierungsreferenzwert 410, die in der externen Mikrosteuerung 430 gespeichert sind
    • • Eine eingebettete Steuerschnittstelle zur Kommunikation mit dem vertrauenswürdigen CPU-Steuerungssubsystem 406
    • • Mittel (z. B. kryptographische Protokolle) zur geschützten Kommunikation zum Austauschen von Daten mit dem vertrauenswürdigen CPU-Steuerungssubsystem 406.
  • Diese Komponenten können eine Prozedur für einen Hochleistungslaufzeitintegritätsschutz, die 421 bis 426 einschließt, die 321 bis 326 wie oben unter Bezugnahme auf 3 beschrieben entsprechen, durchführen, mit dem Unterschied, dass der Steuerungs- und Evaluierungsdienst 408 und die Messrichtlinie 409 und der Laufzeitattestierungsreferenzwert 410 Teil der externen Mikrosteuerung 430 anstatt des vertrauenswürdigen CPU-Steuerungssubsystems 406 sind. Somit besteht bei 421 und 426 eine Kommunikation über die Schnittstelle zwischen der externen Mikrosteuerung 430 und dem vertrauenswürdigen CPU-Steuerungssubsystem 406.
  • Die externe Mikrosteuerung 430 kann auch auf einem eingebetteten sicheren Element, das wie durch Global Platform und EMVCO (VISA, Mastercard ...) definierte sichere Zahlungsdienste bereitstellt, basieren oder mit diesem kombiniert werden. Mit einem derartigen Ansatz könnte der Beginn einer Zahlungstransaktion einen Laufzeitintegritätsmesszyklus auslösen, was sicherstellt, dass sich die zahlungsrelevante Sicherheitsfunktionalität, die auf dem SoC 400 läuft, wie eine vertrauenswürdige Benutzerschnittstelle, die einen Betrag usw. darstellt und nach einer Bestätigung der Transaktion durch den Benutzer fragt, in einem verifizierten vertrauenswürdigen Zustand befindet.
  • Ähnliche Verbesserungen könnten erreicht werden, wenn dies mit einem vertrauenswürdigen Plattformmodul, wie durch die Trusted Computing Group definiert, kombiniert wird, was die Verwendung von Schlüsseln nicht nur durch die während der Inbetriebsetzung vorgenommenen Codemessungen sondern auch durch das Verifizieren des tatsächlichen Laufzeitzustands des SoC 400 sperren könnte, bevor kryptographische Operationen damit verarbeitet werden.
  • Weitere Kombinationen sind möglich, wie FIDO (Fast Identity Online), U2F (Universal Second Factor) sowie UAF(Universal Authentification Framework)-Authentifizierung, die biometrische Benutzerauthentifizierung und Transaktionsfestlegung kombiniert, usw.
  • All diese können auch im Zusammenhang des zweiten Beispielansatzes, der im Folgenden beschrieben wird, angewendet werden.
  • Der zweite Beispielansatz kann als eine Verallgemeinerung des unter Bezugnahme auf 3 und 4 beschriebenen Ansatzes angesehen werden, da er die Eigenschaften des unter Bezugnahme auf 3 und 4 beschriebenen Ansatzes teilt, aber nicht dem oben beschriebenen Problem gewidmet ist, d. h. er ist unabhängig vom oben beschriebenen Problem. Daher kann er als allgemeiner und flexibler angesehen werden. Er wird unter Bezugnahme auf 5 beschrieben.
  • 5 stellt ein SoC 500 dar.
  • Das SoC 500 beinhaltet ein Hochleistungscomputersubsystem 501, das Hardware und Software beinhaltet. Beispielsweise ist dies als ein ARM-Client-SoC implementiert und beinhaltet zum Beispiel:
    • • Einen Hochleistungsprozessor 502 (z. B. einen ARMv7, ARMv8 Cortex-A), der Teil einer Prozessorgruppe ist, die einen CPU-Laufzeitzustand enthält,
    • • Ein On-Chip-Speichersystem 504 (wie ein vertrauenswürdiger RAM), das CPU-Laufzeit-Code und -Daten 505 enthält. Es kann auch ein (z. B. Doppeldatenraten DDR) Off-Chip-Speichersystem (nicht dargestellt) vorhanden sein, das CPU-Laufzeit-Code und -Daten enthält, was Gegenstand der Laufzeitintegritätsverletzungsdetektion ist.
  • Das SoC 500 beinhaltet ferner ein vertrauenswürdiges CPU-Steuerungssubsystem 506, das Hardware und Software beinhaltet. Dies kann zum Beispiel als ein Systemsteuerungsprozesssubsystem (SPC) implementiert werden und beinhaltet beispielsweise als Hardwarekomponenten:
    • • Einen dedizierten Systemsteuerungsprozessor (z. B. einen ARM-Cortex-M)
    • • Private Speicherbetriebsmittel (RAM/ROM)
    • • Im Speicher abgebildeten Zugang zu SoC-Systembetriebsmitteln (z. B. zum Hauptspeicher 504)
    • • Zugang zu einer sicheren Logik 511 Software:
    • • Einen CPU-&Speicherinjektionsdienst 507, der über prozessorspezifischen Befehlscode realisiert wird, der in den privaten Speicherbetriebsmitteln gespeichert ist und ausgeführt wird
    • • Einen Steuerungs-&Evaluierungsdienst 508, der über prozessorspezifischen Befehlscode realisiert wird, der in den privaten Speicherbetriebsmitteln gespeichert ist und ausgeführt wird
    • • Eine sichere Logikausführungsrichtlinie 509, die in privaten Speicherbetriebsmitteln gespeichert ist
    • • Sichere Logik 511 und sicherer Zustand 512, die in Form von prozessorspezifischen Befehlen und Registerwerten, die spezifisch für den Hochleistungsprozessor 501 sind und in den privaten Speicherbetriebsmitteln gespeichert werden, repräsentiert werden.
  • Im Folgenden wird eine Prozedur zur vertrauenswürdigen (d. h. sicheren) Hochleistungslogikausführung, d. h. während der Laufzeit des Haupt-CPU 502, beschrieben, die im SoC 500 integriert sein kann.
  • Bei 521 steuert der Steuerungs- und Evaluierungsdienst 508 den CPU-&Speicherinjektionsdienst 507 basierend auf der sicheren Logikausführungsrichtlinie 509.
  • Bei 522 injiziert der CPU- und Speicherinjektionsdienst 507 die sichere Logik 511 und den sicheren Zustand 512 in das Hochleistungscomputersubsystem 501. Dies kann Stoppen der Haupt-CPU-Ausführung und Speichern des CPU-Laufzeitzustands 503 beinhalten, bevor der sichere Zustand 312 injiziert wird.
  • Bei 523 steuert der CPU- und Speicherinjektionsdienst 507 eine geschützte Ausführung der sicheren Logik 511 am Hochleistungscomputersystem 501 auf eine vertrauenswürdige Art und Weise und löst diese aus.
  • Bei 524 ruft der CPU- und Speicherinjektionsdienst 507 das Verarbeitungsergebnis der Ausführung der sicheren Logik 511 ab. Dies kann Wiederherstellen des CPU-Laufzeitzustands 503 und Fortsetzen der Haupt-CPU-Ausführung beinhalten.
  • Bei 525 evaluiert der Steuerungs- und Evaluierungsdienst 508 das Verarbeitungsergebnis gegenüber einer Referenzrichtlinie. Dies kann beispielsweise eine Entscheidung und abhängig vom Ergebnis eine Durchsetzung entsprechender Maßnahmen beinhalten.
  • Der unter Bezugnahme auf 5 beschriebene Ansatz stellt einen flexiblen Mechanismus zum Ausführen von vertrauenswürdigen Funktionen für eine externe vertrauenswürdige Entität während der Laufzeit in einem Hochleistungscomputersubsystem bereit. Dies ermöglicht, dass das System auf zukünftige Verwendungsfälle reagiert, ohne diese im Voraus zu kennen, und eine ideale Innovationsplattform erzeugt. In einem abstrakten Sinn kann das SoC als ein vertrauenswürdiger Co-Prozessor des vertrauenswürdigen CPU-Steuerungscomputersubsystems 506 angesehen werden.
  • 6 stellt ein Beispiel einer Datenverarbeitungsanordnung 650, die ein SoC 600 beinhaltet, dar, bei der die Prozedur für eine vertrauenswürdige (d. h. sichere) Hochleistungslogikausführung auf eine teilweise externe SoC-Weise implementiert wird.
  • Zusätzlich zum SoC 600 beinhaltet die Datenverarbeitungsanordnung 650 eine SoC-externe Mikrosteuerung 630, z. B. eine Sicherheitssteuerung.
  • Das SoC 600 beinhaltet ein Hochleistungscomputersubsystem 601 wie das Hochleistungscomputersubsystem 501 des SoC 500 von 5.
  • Das SoC beinhaltet ferner ein vertrauenswürdiges CPU-Steuerungssubsystem 606, das Hardware und Software beinhaltet. Dies kann zum Beispiel als ein Systemsteuerungsprozesssubsystem (SPC) implementiert werden und beinhaltet beispielsweise Hardwarekomponenten wie das vertrauenswürdige CPU-Steuerungssubsystem 506 des SoC 500 von 5 und zusätzlich dazu eine eingebettete Steuerbusschnittstelle zur externen Mikrosteuerungskommunikation
    und als Softwarekomponenten:
    • • Einen CPU-&Speicherinjektionsdienst 607, der über prozessorspezifischen Befehlscode realisiert wird, der in den privaten Speicherbetriebsmitteln des vertrauenswürdigen CPU-Steuerungssubsystems 606 gespeichert ist und ausgeführt wird
    • • Sichere Logik 611 und sicherer Zustand 612, die in Form von prozessorspezifischen Befehlen und Registerwerten, die spezifisch für den Hochleistungsprozessor sind und in privaten Speicherbetriebsmitteln gespeichert werden, repräsentiert werden. Es versteht sich, dass dies optional auch in der externen Mikrosteuerung 630 gespeichert werden könnte.
    • • Einen Gerätetreiber (nicht dargestellt) zum Kommunizieren mit der externen Mikrosteuerung 630
    • • Mittel wie kryptographische Protokolle zur geschützten und authentifizierten Kommunikation mit der externen Mikrosteuerung 630.
  • Die externe Mikrosteuerung 630 beinhaltet auch Hardware und Software. Dies kann zum Beispiel mittels einer Sicherheitssteuerung implementiert werden und beinhaltet
    • • Einen Steuerungs- und Evaluierungsdienst 608, der über prozessorspezifischen Befehlscode realisiert wird, der in der externen Mikrosteuerung 630 gespeichert ist und ausgeführt wird
    • • Eine sichere Logikausführungsrichtlinie 609, die in der externen Mikrosteuerung 630 gespeichert ist
    • • Eine eingebettete Steuerschnittstelle zur Kommunikation mit dem vertrauenswürdigen CPU-Steuerungssubsystem 606
    • • Mittel (z. B. kryptographische Protokolle) zur geschützten Kommunikation zum Austauschen von Daten mit dem vertrauenswürdigen CPU-Steuerungssubsystem 606.
  • Diese Komponenten können eine Prozedur für eine vertrauenswürdige (d. h. sichere) Hochleistungslogikausführung, die 621 bis 625 einschließt, die 521 bis 525 wie oben unter Bezugnahme auf 5 beschrieben entsprechen, durchführen, mit dem Unterschied, dass der Steuerungs- und Evaluierungsdienst 608 und die sichere Logikausführungsrichtlinie 609 Teil der externen Mikrosteuerung 630 anstatt des vertrauenswürdigen CPU-Steuerungssubsystems 606 sind. Somit besteht bei 621 und 625 eine Kommunikation über die Schnittstelle zwischen der externen Mikrosteuerung 630 und dem vertrauenswürdigen CPU-Steuerungssubsystem 606.
  • Die Authentifizierung der externen Mikrosteuerung 430, 630 kann zum Beispiel auf einer PKI(öffentliche Schlüsselinfrastruktur)-Signaturauthentifizierung zwischen dem vertrauenswürdigen SoC-CPU-Steuerungssubsystem 406, 606 und der externen Mikrosteuerung und einem Schlüsselerstellungsprotokoll basieren, was zu einem gemeinsam genutzten Geheimnis führt. Die verwendete Kryptographie basiert zum Beispiel auf Kryptographie mit öffentlicher Schlüsselinfrastruktur, die 128 Bit von Sicherheit oder höher, wie Elliptische-Kurven-Kryptographie, repräsentiert. Zusätzlich zu der Authentifizierung kann eine Kopplung durchgeführt werden, so dass die Funktionalität (insbesondere die Kommunikation zwischen der externen Mikrosteuerung 430, 630 und dem vertrauenswürdigen CPU-Steuerungssubsystem 606) nur durchgeführt werden kann, wenn die externe Mikrosteuerung 430, 630 und das vertrauenswürdige CPU-Steuerungssubsystem 406, 606 während einer spezifischen Lebenszyklusphase gekoppelt worden sind. Die Vertraulichkeit und der Integritätsschutz der Daten, die durch die externe Mikrosteuerung 430, 630 und das vertrauenswürdige CPU-Steuerungssubsystem 406, 606 ausgetauscht werden, können auf einem sicheren Kanal basieren.
  • Zusammengefasst ist eine Datenverarbeitungseinrichtung wie in 7 veranschaulicht gemäß verschiedener Ausführungsformen bereitgestellt.
  • 7 stellt eine Datenverarbeitungseinrichtung 700 gemäß einer Ausführungsform dar.
  • Die Datenverarbeitungseinrichtung 700 beinhaltet eine erste Datenverarbeitungseinheit 701, die einen Prozessor 702 mit einem oder mehreren Registern 703 beinhaltet.
  • Die Datenverarbeitungseinrichtung 700 beinhaltet ferner eine zweite Datenverarbeitungseinheit 704, die einen Speicher 705 beinhaltet, der Computerprogrammcode und anfängliche Registerzustandsinformationen speichert.
  • Die zweite Datenverarbeitungseinheit 704 ist dazu konfiguriert, den Computerprogrammcode und die anfänglichen Registerzustandsinformationen an die erste Datenverarbeitungseinheit 701 bereitzustellen und die erste Datenverarbeitungseinheit 701 zu steuern, damit das eine oder die mehreren Register 702 initialisiert werden, indem die anfänglichen Registerzustandsinformationen in das eine oder die mehreren Register 702 gespeichert werden, und den Computerprogrammcode unter Verwendung des einen oder der mehreren initialisierten Register 702 auszuführen.
  • Gemäß verschiedener Ausführungsformen weist mit anderen Worten eine zweite Datenverarbeitungseinheit, die z. B. teilweise durch eine Sicherheitssteuerung implementiert wird, Software (die auf eine sichere Art und Weise ausgeführt werden sollte) einer ersten Datenverarbeitungseinheit zu, wobei sie zur gleichen Zeit die erste Datenverarbeitungseinheit in einen sicheren (anfänglichen) Zustand setzt, von dem sie die Software ausführt, indem sie Initialisierungsdaten für zumindest manche (oder möglicherweise alle) Register, die an der Ausführung der Software beteiligt sind, bereitstellt.
  • Die Initialisierung der Register vor der Ausführung der Computersoftware ermöglicht das Vermeiden von Angriffen basierend auf einer Manipulation der Registerinhalte, z. B. einer Manipulation eines Programmzählers oder einer Interrupt-Vektortabelle, die ein Angreifer verwenden könnte, um den Programmfluss zu verändern und zum Beispiel die Ausführung von schädlichen Prozeduren, die durch den Angreifer eingeführt wurden, auszulösen.
  • Die Datenverarbeitungseinrichtung ist zum Beispiel ein Kommunikationsendgerät und/oder eine Handkommunikationseinrichtung, z. B. ein Mobiltelefon.
  • Die Kommunikationseinrichtung 700 führt zum Beispiel ein Verfahren wie in 8 veranschaulicht aus.
  • 8 stellt ein Flussdiagramm 800 dar, das ein Verfahren zum Ausführen von Computerprogrammcode veranschaulicht.
  • Bei 801 stellt eine zweite Datenverarbeitungseinheit Computerprogrammcode und anfängliche Registerzustandsinformationen an eine erste Datenverarbeitungseinheit bereit.
  • Bei 802 steuert die zweite Datenverarbeitungseinheit die erste Datenverarbeitungseinheit, damit ein oder mehrere Register der ersten Datenverarbeitungseinheit initialisiert werden, indem sie die anfänglichen Registerzustandsinformationen in das eine oder die mehreren Register speichert.
  • Bei 803 steuert die zweite Datenverarbeitungseinheit die erste Datenverarbeitungseinheit, so dass der Computerprogrammcode unter Verwendung des einen oder der mehreren initialisierten Register ausgeführt wird.
  • Im Folgenden werden verschiedene Ausführungsformen beschrieben.
  • Ausführungsform 1 ist eine Datenverarbeitungseinrichtung wie unter Bezugnahme auf 7 beschrieben.
  • Ausführungsform 2 ist die Datenverarbeitungseinrichtung nach Ausführungsform 1, wobei der Prozessor ein oder mehrere Register umfasst und die anfänglichen Prozessorzustandsinformationen den Inhalt des einen oder der mehreren Register im anfänglichen Zustand definieren.
  • Ausführungsform 3 ist die Datenverarbeitungseinrichtung nach Ausführungsform 1 oder 2, wobei das Initialisieren des einen oder der mehreren Register Überschreiben der Inhalte des einen oder der mehreren Register durch die anfänglichen Registerzustandsinformationen umfasst.
  • Ausführungsform 4 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 3, wobei das Initialisieren des einen oder der mehreren Register vollständiges Überschreiben der Inhalte des einen oder der mehreren Register umfasst.
  • Ausführungsform 5 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 4, wobei das eine oder die mehreren Register Laufzeitsteuerungsregister sind.
  • Ausführungsform 6 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 5, wobei der Inhalt des einen oder der mehreren Register Speicheradressen von während der Ausführung des Computerprogramms auszuführendem Code spezifiziert.
  • Ausführungsform 7 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 6, wobei die erste Datenverarbeitungseinheit eine höhere Verarbeitungsleistung als die zweite Datenverarbeitungseinheit aufweist.
  • Ausführungsform 8 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 7, wobei der Prozessor der ersten Datenverarbeitungseinheit ein erster Prozessor ist und die zweite Datenverarbeitungseinheit einen zweiten Prozessor umfasst.
  • Ausführungsform 9 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 8, wobei die zweite Datenverarbeitungseinheit zumindest teilweise durch eine Sicherheitssteuerung implementiert wird.
  • Ausführungsform 10 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 9, wobei die Datenverarbeitungseinrichtung ein System auf einem Chip umfasst, das die erste Datenverarbeitungseinheit und zumindest teilweise die zweite Datenverarbeitungseinheit umfasst.
  • Ausführungsform 11 ist die Datenverarbeitungseinrichtung nach Ausführungsform 10, wobei das System auf einem Chip eine ARM-Architektur aufweist.
  • Ausführungsform 12 ist die Datenverarbeitungseinrichtung nach Ausführungsform 10 oder 11, wobei die zweite Datenverarbeitungseinheit zumindest teilweise durch eine Mikrosteuerung, die sich extern vorn System auf einem Chip befindet, implementiert wird.
  • Ausführungsform 13 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 12, wobei der Computerprogrammcode Code eines Integritätsprüfungscomputerprogramms ist.
  • Ausführungsform 14 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 13, wobei die Ausführung des Computerprogrammcodes veranlasst, dass die erste Datenverarbeitungseinheit eine Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, prüft.
  • Ausführungsform 15 ist die Datenverarbeitungseinrichtung nach Ausführungsform 14, wobei die Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, Daten, die in einem Speicher der ersten Datenverarbeitungseinheit gespeichert sind, und/oder Laufzeit-Code der ersten Datenverarbeitungseinheit und/oder einen Laufzeitzustand des Prozessors der ersten Datenverarbeitungseinheit umfassen.
  • Ausführungsform 16 ist die Datenverarbeitungseinrichtung nach Ausführungsform 14 oder 15, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, eine Ausführung eines anderen Computerprogrammcodes durch die erste Datenverarbeitungseinheit zu unterbrechen, die erste Datenverarbeitungseinheit zu steuern, um einen Laufzeitzustand der zweiten Datenverarbeitungseinheit vor der Initialisierung des einen oder der mehreren Register zu speichern, und, nach der Ausführung des Computerprogrammcodes, den Laufzeitzustand der ersten Datenverarbeitungseinheit wiederherzustellen und die erste Datenverarbeitungseinheit zu steuern, um die Ausführung des anderen Computerprogrammcodes fortzusetzen.
  • Ausführungsform 17 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 14 bis 16, die dazu konfiguriert ist, vor dem Durchführen einer sicheren Handlung zu detektieren, ob eine Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, in einem vorbestimmten Zeitraum erfolgreich geprüft worden ist, und die sichere Handlung nur durchzuführen, wenn die Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, im vorbestimmten Zeitraum erfolgreich geprüft worden ist.
  • Ausführungsform 18 ist die Datenverarbeitungseinrichtung nach Ausführungsform 17, wobei die sichere Handlung eine sichere Zahlung ist.
  • Ausführungsform 19 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 18, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, ein Ergebnis der Ausführung des Computerprogramms abzurufen und das Ergebnis zu evaluieren.
  • Ausführungsform 20 ist die Datenverarbeitungseinrichtung nach Ausführungsform 19, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, eine Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, basierend auf der Evaluierung des Ergebnisses zu prüfen.
  • Ausführungsform 21 ist die Datenverarbeitungseinrichtung nach Ausführungsform 19 oder 20, wobei die zweite Datenverarbeitungseinheit einen Referenzwert speichert und dazu konfiguriert ist, das Ergebnis basierend auf einem Vergleich des Ergebnisses mit dem Referenzwert zu evaluieren.
  • Ausführungsform 22 ist die Datenverarbeitungseinrichtung nach einer beliebigen der Ausführungsformen 1 bis 21, wobei die die zweite Datenverarbeitungseinheit dazu konfiguriert ist, die erste Datenverarbeitungseinheit zu steuern, um den Computerprogrammcode gemäß einer Richtlinie, die in der zweiten Datenverarbeitungseinheit gespeichert ist, auszuführen.
  • Ausführungsform 23 ist ein Verfahren zum Ausführen von Computerprogrammcode wie unter Bezugnahme auf 8 beschrieben.
  • Gemäß einer weiteren Ausführungsform ist eine Datenverarbeitungsanordnung bereitgestellt, die eine erste Datenverarbeitungseinheit (z. B. einen ersten Prozessor) und eine zweite Datenverarbeitungseinheit (z. B. einen zweiten Prozessor) beinhaltet, wobei der zweite Prozessor eine höhere Sicherheitsstufe als der erste Prozessor aufweist und wobei der zweite Prozessor dazu konfiguriert ist, ein Computerprogramm und einen anfänglichen Prozessorzustand zum ersten Prozessor zu liefern und den ersten Prozessor zu steuern, um das Computerprogramm angefangen vom anfänglichen Zustand auszuführen.
  • Es versteht sich, dass Ausführungsformen, die im Zusammenhang der Datenverarbeitungseinrichtung beschrieben sind, sinngemäß für das Verfahren zum Ausführen von Computerprogrammcode und die Datenverarbeitungsanordnung gültig sind und umgekehrt.
  • Obwohl spezifische Aspekte beschrieben worden sind, versteht der Fachmann, dass verschiedene Änderungen der Form und der Einzelheiten vorgenommen werden können, ohne vorn Wesen und Schutzumfang der Aspekte dieser Offenbarung, wie sie durch die anhängenden Ansprüche definiert ist, abzuweichen. Der Schutzumfang wird daher von den anhängenden Ansprüchen angegeben, und alle Änderungen, die in die Bedeutung und den Äquivalenzbereich der Ansprüche fallen, sind daher einzuschließen.

Claims (23)

  1. Datenverarbeitungseinrichtung, die Folgendes umfasst: eine erste Datenverarbeitungseinheit, die einen Prozessor mit einem oder mehreren Registern umfasst; und eine zweite Datenverarbeitungseinheit, die einen Speicher umfasst, der Computerprogrammcode und anfängliche Registerzustandsinformationen speichert, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, den Computerprogrammcode und die anfänglichen Registerzustandsinformationen an die erste Datenverarbeitungseinheit bereitzustellen und die erste Datenverarbeitungseinheit zu steuern, das eine oder die mehreren Register zu initialisieren, indem sie die anfänglichen Registerzustandsinformationen in das eine oder die mehreren Register speichert, und den Computerprogrammcode unter Verwendung des einen oder der mehreren initialisierten Register auszuführen.
  2. Datenverarbeitungseinrichtung nach Anspruch 1, wobei der Prozessor ein oder mehrere Register umfasst und die anfänglichen Prozessorzustandsinformationen den Inhalt des einen oder der mehreren Register im anfänglichen Zustand definieren.
  3. Datenverarbeitungseinrichtung nach Anspruch 1 oder 2, wobei das Initialisieren des einen oder der mehreren Register Überschreiben der Inhalte des einen oder der mehreren Register durch die anfänglichen Registerzustandsinformationen umfasst.
  4. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 3, wobei das Initialisieren des einen oder der mehreren Register vollständiges Überschreiben der Inhalte des einen oder der mehreren Register umfasst.
  5. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 4, wobei das eine oder die mehreren Register Laufzeitsteuerungsregister sind.
  6. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 5, wobei der Inhalt des einen oder der mehreren Register Speicheradressen von während der Ausführung des Computerprogramms auszuführendem Code spezifiziert.
  7. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 6, wobei die erste Datenverarbeitungseinheit eine höhere Verarbeitungsleistung als die zweite Datenverarbeitungseinheit aufweist.
  8. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 7, wobei der Prozessor der ersten Datenverarbeitungseinheit ein erster Prozessor ist und die zweite Datenverarbeitungseinheit einen zweiten Prozessor umfasst.
  9. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 8, wobei die zweite Datenverarbeitungseinheit zumindest teilweise durch eine Sicherheitssteuerung implementiert wird.
  10. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 9, wobei die Datenverarbeitungseinrichtung ein System auf einem Chip umfasst, das die erste Datenverarbeitungseinheit und zumindest teilweise die zweite Datenverarbeitungseinheit umfasst.
  11. Datenverarbeitungseinrichtung nach Anspruch 10, wobei das System auf einem Chip eine ARM-Architektur aufweist.
  12. Datenverarbeitungseinrichtung nach Anspruch 10 oder 11, wobei die zweite Datenverarbeitungseinheit zumindest teilweise durch eine Mikrosteuerung, die sich extern vom System auf einem Chip befindet, implementiert wird.
  13. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 12, wobei der Computerprogrammcode Code eines Integritätsprüfungscomputerprogramms ist.
  14. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 13, wobei die Ausführung des Computerprogrammcodes veranlasst, dass die erste Datenverarbeitungseinheit eine Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, prüft.
  15. Datenverarbeitungseinrichtung nach Anspruch 14, wobei die Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, Daten, die in einem Speicher der ersten Datenverarbeitungseinheit gespeichert sind, und/oder Laufzeit-Code der ersten Datenverarbeitungseinheit und/oder einen Laufzeitzustand des Prozessors der ersten Datenverarbeitungseinheit umfassen.
  16. Datenverarbeitungseinrichtung nach Anspruch 14 oder 15, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, eine Ausführung eines anderen Computerprogrammcodes durch die erste Datenverarbeitungseinheit zu unterbrechen, die erste Datenverarbeitungseinheit zu steuern, so dass ein Laufzeitzustand der zweiten Datenverarbeitungseinheit vor der Initialisierung des einen oder der mehreren Register gespeichert wird, und, nach der Ausführung des Computerprogrammcodes, den Laufzeitzustand der ersten Datenverarbeitungseinheit wiederherzustellen und die erste Datenverarbeitungseinheit zu steuern, damit die Ausführung des anderen Computerprogrammcodes fortgesetzt wird.
  17. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 14 bis 16, die dazu konfiguriert ist, vor dem Durchführen einer sicheren Handlung zu detektieren, ob eine Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, in einem vorbestimmten Zeitraum erfolgreich geprüft worden ist, und die sichere Handlung nur durchzuführen, wenn die Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, im vorbestimmten Zeitraum erfolgreich geprüft worden ist.
  18. Datenverarbeitungseinrichtung nach Anspruch 17, wobei die sichere Handlung eine sichere Zahlung ist.
  19. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 18, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, ein Ergebnis der Ausführung des Computerprogramms abzurufen und das Ergebnis zu evaluieren.
  20. Datenverarbeitungseinrichtung nach Anspruch 19, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, eine Integrität von Daten, die in der ersten Datenverarbeitungseinheit gespeichert sind, basierend auf der Evaluierung des Ergebnisses zu prüfen.
  21. Datenverarbeitungseinrichtung nach Anspruch 19 oder 20, wobei die zweite Datenverarbeitungseinheit einen Referenzwert speichert und dazu konfiguriert ist, das Ergebnis basierend auf einem Vergleich des Ergebnisses mit dem Referenzwert zu evaluieren.
  22. Datenverarbeitungseinrichtung nach einem beliebigen der Ansprüche 1 bis 21, wobei die zweite Datenverarbeitungseinheit dazu konfiguriert ist, die erste Datenverarbeitungseinheit zu steuern, so dass der Computerprogrammcode gemäß einer Richtlinie, die in der zweiten Datenverarbeitungseinheit gespeichert ist, ausgeführt wird.
  23. Verfahren zum Ausführen von Computerprogrammcode, das Folgendes umfasst: Bereitstellen von Computerprogrammcode und anfänglichen Registerzustandsinformationen von einer zweiten Datenverarbeitungseinheit an eine erste Datenverarbeitungseinheit; Steuern der ersten Datenverarbeitungseinheit, damit ein oder mehrere Register der ersten Datenverarbeitungseinheit initialisiert werden, indem die anfänglichen Registerzustandsinformationen in das eine oder die mehreren Register gespeichert werden; und Steuern der ersten Datenverarbeitungseinheit, so dass der Computerprogrammcode unter Verwendung des einen oder der mehreren initialisierten Register ausgeführt wird.
DE102016117495.5A 2016-09-16 2016-09-16 Datenverarbeitungseinrichtung und verfahren zum ausführen von computerprogrammcode Ceased DE102016117495A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102016117495.5A DE102016117495A1 (de) 2016-09-16 2016-09-16 Datenverarbeitungseinrichtung und verfahren zum ausführen von computerprogrammcode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102016117495.5A DE102016117495A1 (de) 2016-09-16 2016-09-16 Datenverarbeitungseinrichtung und verfahren zum ausführen von computerprogrammcode

Publications (1)

Publication Number Publication Date
DE102016117495A1 true DE102016117495A1 (de) 2018-03-22

Family

ID=61302106

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016117495.5A Ceased DE102016117495A1 (de) 2016-09-16 2016-09-16 Datenverarbeitungseinrichtung und verfahren zum ausführen von computerprogrammcode

Country Status (1)

Country Link
DE (1) DE102016117495A1 (de)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0354899B1 (de) 1987-02-06 1993-03-03 AT&T Corp. Multiprozessorverfahren und -anordnung
US6085307A (en) 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US20150195302A1 (en) 2010-11-15 2015-07-09 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0354899B1 (de) 1987-02-06 1993-03-03 AT&T Corp. Multiprozessorverfahren und -anordnung
US6085307A (en) 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US20150195302A1 (en) 2010-11-15 2015-07-09 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor

Similar Documents

Publication Publication Date Title
US10516533B2 (en) Password triggered trusted encryption key deletion
DE102007057900B4 (de) Authentifikation von verdächtigen Daten unter Verwendung von Schlüsseltabellen
EP2947594A2 (de) Schutz kritischer datenstrukturen in einem eingebetteten hypervisor-system
Vasudevan et al. CARMA: A hardware tamper-resistant isolated execution environment on commodity x86 platforms
CN108604274A (zh) 安全片上系统
CN109918919A (zh) 认证变量的管理
DE102013114953B4 (de) System-on-Chip mit eingebettetem Sicherheitsmodul
DE10393662T5 (de) Bereitstellen eines sicheren Ausführungsmodus in einer Preboot-Umgebung
DE112020000792T5 (de) Durch grafikverarbeitungseinheit beschleunigte vertrauenswürdige ausführungsumgebung
US9659178B1 (en) Device blanking
DE102009013384A1 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
DE102011115135A1 (de) Mikroprozessorsystem mit gesicherter Laufzeitumgebung
US20200134180A1 (en) Enhanced protections against adversarial machine learning threats utilizing cryptography and hardware assisted monitoring in accelerators
CN104573553A (zh) 一种面向Xen的虚拟机内存共享的安全隔离方法
Strackx et al. Salus: Kernel support for secure process compartments
Branco et al. Blinded random corruption attacks
DE102022108380A1 (de) Verwaltung der speicherung von geheimnissen in speichern von baseboard-management-controller
EP2911080A1 (de) Verfahren und Vorrichtung zum sicheren Initialisieren eines Computers
Zhou et al. Smile: Secure memory introspection for live enclave
DE102008050631A1 (de) Datenverarbeitungssystem
Qin et al. RIPTE: runtime integrity protection based on trusted execution for IoT device
Zhao et al. Gracewipe: Secure and Verifiable Deletion under Coercion.
US11876835B2 (en) Techniques to enforce policies for computing platform resources
DE102016117495A1 (de) Datenverarbeitungseinrichtung und verfahren zum ausführen von computerprogrammcode
CN101894234A (zh) 一种cos通用文件访问控制系统

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final