[go: up one dir, main page]

DE112009002502B4 - Multilayer inhalte-schützender Mikrocontoller - Google Patents

Multilayer inhalte-schützender Mikrocontoller Download PDF

Info

Publication number
DE112009002502B4
DE112009002502B4 DE112009002502.1T DE112009002502T DE112009002502B4 DE 112009002502 B4 DE112009002502 B4 DE 112009002502B4 DE 112009002502 T DE112009002502 T DE 112009002502T DE 112009002502 B4 DE112009002502 B4 DE 112009002502B4
Authority
DE
Germany
Prior art keywords
memory
data
access
block
address
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.)
Active
Application number
DE112009002502.1T
Other languages
English (en)
Other versions
DE112009002502T5 (de
Inventor
Robert Michael Muchsel
Donald W. Loomis
Edward Tang K. Ma
Mark Alan Lovell
Michael Anthony Quarles
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.)
Maxim Integrated Products Inc
Original Assignee
Maxim Integrated Products Inc
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 Maxim Integrated Products Inc filed Critical Maxim Integrated Products Inc
Publication of DE112009002502T5 publication Critical patent/DE112009002502T5/de
Application granted granted Critical
Publication of DE112009002502B4 publication Critical patent/DE112009002502B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

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

Abstract

Sicherer Mikrocontroller (100) umfassend:
einen Speicher, der Daten speichert;
eine Prozessoreinheit, die eine Vielzahl an Befehlen erzeugt;
eine Zugriffssteuerung (102), verbunden, um die Vielzahl an Befehlen zu empfangen, wobei die Zugriffssteuerung (102) eine Vielzahl an Berechtigungs-Registern aufweist, die Zugriffsrechte zu den innerhalb des Speichers gespeicherten Daten festlegen;
ein erstes Berechtigungs-Register, innerhalb der Vielzahl an Berechtigungs-Registern, das einen ersten Satz an Zugriffsrechten zu einer ersten Menge von Daten innerhalb des Speichers festlegt;
ein zweites Berechtigungs-Register, innerhalb der Vielzahl an Berechtigungs-Registern, das einen zweiten Satz an Zugriffsrechten zu einer zweiten Menge von Daten innerhalb des Speichers festlegt,
wobei die zweite Menge anders als die erste Menge ist; und
einen mit der Zugriffssteuerung (102) verbundenen Ausnahmeverwalter, der einen Zugriffsbefehl zu der ersten Menge an Daten in Reaktion darauf, dass der Zugriffsbefehl den ersten Satz an mit der ersten Menge an Daten verbundenen Zugriffsrechten nicht erfüllt, unterbricht;
bei welchem die Zugriffsrechte eine Vielzahl von Benutzer-Berechtigungs-Ebenen für den sicheren Mikrocontroller (100) betreffen.

Description

  • Erfindungsgebiet
  • Die vorliegende Erfindung bezieht sich allgemein auf Mikrocontroller, und insbesondere auf Technologien, die den Schutz von Inhalten, wie zum Beispiel Bestandteilen geistigen Eigentums, durch Speichern mit einem Mikrocontroller ermöglichen. Mikrocontroller mit diesen Merkmalen werden allgemein als sichere Mikrocontroller bezeichnet.
  • Hintergrund der Erfindung
  • Inhalteschutz innerhalb eines Prozessors oder Mikrocontrollers ist seit geraumer Zeit eine Herausforderung für die Elektronikindustrie. Mit dem Fortschreiten der Halbleitertechnologie sind sichere Mikrocontroller komplexe Systeme auf einem Chip geworden. Kritische Systemfunktionen, die zuvor durch Hardware realisiert wurden, können nun durch Software realisiert werden, die es Original-Ausstatter-Herstellern („OEMS“) ermöglicht, schnell hochwertige, kostengünstige Mikrocontroller auf einem Markt anzubieten. Zum Beispiel ermöglichen programmierbare nichtflüchtige speicherbasierte Mikrocontroller häufige Systemaktualisierungen, einschließlich Codemodifikationen und das Hinzufügen neuer Funktionen durch zahlreiche Anwendungs-/Inhalteanbieter für den Mikrocontroller.
  • Oftmals können diese Codemodifikationen und/oder neuen Funktionen wertvolles geistiges Eigentum darstellen, welches der Anbieter besitzt und welches anfällig für nicht autorisierten Zugriff durch Dritte ist. Darüber hinaus sind Softwareimplementierungen innerhalb eines Mikrocontrollers normalerweise einfacher rückwärts zu konstruieren als Hardware. Als ein Ergebnis können nichtflüchtige speicherbasierte elektronische Baugruppen Hardwaredatenschutz beinhalten, der versucht, dieses geistige Eigentum innerhalb der elektronischen Baugruppe zu sichern.
  • Mikrocontroller beinhalten typischerweise einen für Zugriffssteuerungsinformationen reservierten Speicherbereich entsprechend dem Datenbereich in einem nichtflüchtigen Speicher. Der Datenbereich kann entweder als eine sämtliche Speicherzellen beinhaltende einzelne Einheit zum Datenspeichern oder in einer Vielzahl von Speichersegmenten entsprechend der physischen Struktur des Speicherarrays ausgestaltet sein. In Systemen des Standes der Technik wird eine Zugriffssteuerung zu einem bestimmten Segment durch Hardware durchgesetzt. Ein Programmcode kann durch den Prozessor ausgeführt werden, wobei aber Lese- und Schreiboperationen wegen der Steuerungseinstellungen untersagt sind. Typischerweise ist der einzige Weg, diesen Schutz aufzuheben, zunächst sowohl den Schutzprogrammcode als auch seine entsprechende Zugriffssteuerungsinformation zu löschen.
  • Dieser Ansatz stellt effektiven Datenschutz bereit, verursacht aber auch signifikanten Verwaltungsaufwand hinsichtlich zusätzlicher Speicherbereiche für Steuerungsinformationen und CPU-Zeit für Löschung und Umprogrammierung, selbst für kleinere Aktualisierungen. Verwaltung für CPU-Zeit senkt nicht nur die Systemeffizienz sondern steigert auch die Programmverwaltungskomplexität.
  • Diese einfache Sicherheitsanordnung aber starre Gestaltung erzwingt zu viele Einschränkungen und kann für den Endverbraucher eine Last sein. Da Programmcodes für Mikrocontrolleroperationen anspruchsvoller und komplizierter werden, kann es vorteilhaft sein, vom OEM und anderen Anbietern bereitgestellte verfügbare Softwarebibliotheken zu nutzen anstatt ein vollständiges Programm von Grund auf zu entwerfen. Eine Softwarebibliothek beinhaltet wichtige Algorithmusroutinen und bestimmte Funktionen und ist einsatzbereit für Subroutinenaufrufe. Solch eine Sofwarebibliothek stellt wesentlichen Wert als geistiges Eigentum („IP“) für das Endprodukt dar. Darüber hinaus könnte eine Programmentwicklung verschiedene Entwickler während verschiedener Phasen mit der Möglichkeit von Offshore Unterstützung und Wartung involvieren. Diese Multilayer-Programmentwicklung und Multientwickler-Teilnahme daran ergibt eine komplexe Umgebung, in welcher sicheres Erhalten geschützten IP-Inhalts schwierig ist.
  • Aktuellen Zugriffssteuerungsschemata fehlt es auch an direktem Auslesen von Betriebsparameter im Programmspeicherplatz. Betriebsparameter werden normalerweise während der Systeminitialisierung gesetzt und als Datentabellen im nichtflüchtigen Speicher gespeichert, so dass Daten im Falle eines Energieverlustes erhalten bleiben. Es ist übliche Praxis, diese kritischen Parameter im selben nichtflüchtigen Speicher mit dem/n Systemprogramm/en des Mikrocontrollers zu speichern. Wenn der geschützte Programmbereich lediglich zur Ausführung ist und das Lesen von Daten verbietet, dann kann das Lesen von Betriebsparametern ein Problem sein.
  • Die obigen Beschränkungen stellen eine Herausforderung für den IP-Schutz in Systemen auf einem Chip dar, insbesondere für kostengünstige aber hochintegrierte elektronische Systeme wie zum Beispiel sichere Mikrocontroller.
  • Hierfür relevante Offenbarungen sind beispielsweise in den Dokumenten US 2007/0050580 A1 , US 2003/0084308 A1 und US 6,845,159 B1 zu finden. Die US 2007/0050580 A1 offenbart ein Gerät, System und Verfahren zur Kontrolle von Speicherzugriffen zwischen Subkontexten in einem Rechner. Es wird eine Berechtigungszuordnung für Zugriffe zwischen den Subkontexten aufrechterhalten. Ein Steuermodul überwacht alle Zugriffe zwischen den Subkontexten und verhindert jene, für die keine Berechtigungszuordnung existiert. Die US 2003/0084308 A1 offenbart ein Verfahren zur Verschlüsselung eines Datenworts unter Kontrolle einer zugeordneten Adresse A mittels zweier kryptografischer Schritte. Hierbei wird zunächst die Adresse durch eine Hash-Funktion in eine gehashte Adresse umgewandelt. Das Datenwort wird mit der gehashten Adresse kombiniert. Das Ergebnis wird mit einem Blockverschlüsselungsverfahren verschlüsselt. Ein Dekryptor entschlüsselt das aus dem Speicher gelesene verschlüsselte Wort, ebenfalls unter Kontrolle der Adresse A. Eine inverse Blockverschlüsselung wandelt das verschlüsselte Wort in eine Zwischenform um. Ein Dekomponierer, erzeugt aus dem entschlüsselten verschlüsselten Wort und der gehashten Adresse das Klartext-Datenwort. Die US 6,845,159 B1 offenbart eine Methode und ein Gerät zur Datenverarbeitung, die für Verschlüsselung, Entschlüsselung und Authentifizierung von Nachrichten verwendet werden. Hierbei bestimmen Eingangsinformationen die Reihenfolge und Anzahl von durchgeführten Operationen. Die Operationen sind so konzipiert, dass jede mögliche Eingabezeichenfolge als gültiges Programm interpretiert wird. Der Prozess entwickelt sich für jede mögliche Eingabezeichenfolge unterschiedlich und der durch das Modul durchgeführte Prozess kann nicht durch einen Algorithmus beschrieben werden.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung betrifft einen Mikrocontroller, der Multilayerschutz von geschütztem digitalen Inhalt bietet. Mehrere Ausführungsformen des Mikrocontrollers umfassen eine sichere CPU, einen Echtzeitchiffreur und ein benutzer-programmierbares Multilayerzugriffssteuerungssystem von programmierbarem nichtflüchtigen Speicher innerhalb des Mikrocontrollers. Programmierbarer nichtflüchtiger Speicher ermöglicht für den Endbenutzer intra-System- und intra-Anwendungsprogrammieren und ist zum Erhalten von Dateninhalt fähig, wenn die Stromversorgung entfernt wird.
  • Multilayerzugriffssteuerung wird in oder mit dem Mikrocontroller angeboten und ermöglicht Vertraulichkeitsschutz für eingebetteten digitalen Inhalt durch Steuern des Lesens, Schreibens und/oder Ausführung eines Codesegments gemäß eines Satzes an benutzer-programmierten Parametern. In bestimmten Ausführungsformen bezieht ein Chiffreur einen Satz an kryptographischen Regeln zur Datenverschlüsselung und - entschlüsselung mit Reihen- und Spaltenmanipulation der Datenspeicherung mit ein. In einigen Ausführungsformen der Erfindung werden kryptographische Operationen parallel mit einer CPU Laufzeit ausgeführt, ohne dass erhebliche zusätzliche Latenzzeit und Verzögerung für Systemoperationen anfällt.
  • Bestimmte Merkmale und Vorteile der vorliegenden Erfindung wurden im Allgemeinen in diesem Zusammenfassungskapitel beschrieben; jedoch werden weitere Merkmale, Vorteile und Ausführungsformen hier präsentiert oder werden für einen durchschnittlichen Fachmann aus den Ansichten der Zeichnungen, der Spezifikation oder den Ansprüchen ersichtlich sein. Dementsprechend sollte verstanden sein, dass der Umfang der Erfindung nicht durch die bestimmten Ausführungsformen begrenzt wird, die in dieser Zusammenfassung offenbart werden.
  • Kurzbeschreibung der Zeichnungen
  • Bezug wird genommen auf Ausführungsformen der Erfindung, von denen Beispiele gegebenenfalls in den zugehörigen Figuren veranschaulicht werden. Diese Figuren sind bestimmt, erläuternd zu sein, nicht begrenzend. Obwohl die Erfindung im Allgemeinen im Zusammenhang mit diesen Ausführungsformen beschrieben wird, soll verstanden werden, dass es nicht beabsichtigt ist, den Umfang der Erfindung auf diese besonderen Ausführungsformen zu begrenzen.
    • Figur („Fig.“) 1 veranschaulicht ein Blockdiagramm eines einen Inhalte mit geistigem Eigentum schützenden Mikrocontrollers (oder sicheren Mikrocontroller) Blockdiagramm gemäß unterschiedlichen Ausführungsformen der Erfindung.
    • 2 veranschaulicht ein Blockdiagramm der Zugriffssteuerung und verbundener Schaltungen für mehrere Ausführungsformen der Erfindung.
    • 3 ist eine Tabelle, die die Programmspeichergrenzen und Berechtigungsebenen gemäß unterschiedlichen Ausführungsformen der Erfindung beschreibt.
    • 4 ist ein Diagramm der Programmspeichersegmentierung für ein Dreispeichersegment gemäß unterschiedlichen Ausführungsformen der Erfindung.
    • 5 ist ein Diagramm der Programmspeichersegmentierung für ein Zweispeichersegment gemäß unterschiedlichen Ausführungsformen der Erfindung.
    • 6 ist eine Tabelle der Berechtigungs-Registerebenen für ein Dreispeichersegment gemäß unterschiedlichen Ausführungsformen der Erfindung.
    • 7 ist ein Blockdiagramm der funktionalen Chiffrierblöcke und Schnittstellen für mehrere Ausführungsformen der Erfindung.
    • 8 ist ein Blockdiagramm der chiffrierblock-internen Struktur gemäß unterschiedlichen Ausführungsformen der Erfindung.
    • 9 ist ein Flussdiagramm, welches den Betrieb der Multilayerzugriffssteuerung gemäß unterschiedlichen Ausführungsformen der Erfindung veranschaulicht.
    • 10 ist ein Flussdiagramm, welches den Betrieb des Chiffreurs gemäß unterschiedlichen Ausführungsformen der Erfindung veranschaulicht.
  • Detaillierte Beschreibung der Erfindung
  • Ausführungsformen der vorliegenden Erfindung sehen Systeme, Vorrichtungen und Verfahren für sichere Mikrocontroller vor. In der folgenden Beschreibung werden zu Zwecken Klärung der Erläuterung, bestimmte Details dargelegt, um ein Verständnis der Erfindung zu vermitteln. Jedoch wird es für einen Fachmann ersichtlich sein, dass die Erfindung ohne diese Details ausgeführt werden kann. Ein Fachmann wird erkennen, dass nachfolgend beschriebene Ausführungsformen der vorliegenden Erfindung auf einer Vielzahl von Wegen und durch Verwenden einer Reihe von Mitteln durchgeführt werden können. Fachleute werden auch erkennen, dass zusätzliche Modifikationen, Anwendungen und Ausführungsformen innerhalb dieses Umfangs liegen, ebenso wie zusätzliche Bereiche, in welchen die Erfindung von Nutzen sein könnte. Folglich sind die nachfolgend beschriebenen Ausführungsformen veranschaulichend für besondere Ausführungsformen der Erfindung und sollen ein Verschleiern der Erfindung verhindern.
  • Bezugnahme in der Spezifikation auf „eine Ausführungsform“ oder „Ausführungsform“ bedeutet, dass ein besonderes Merkmal, Struktur, Charakteristik oder Funktion, das in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der Erfindung enthalten ist. Das Auftreten des Ausdrucks „in einer Ausführungsform“ oder dergleichen an unterschiedlichen Stellen in der Spezifikation bezieht sich nicht notwendigerweise auf dieselbe Ausführungsform.
  • A. Sicherer Mikrocontroller
  • Ein sicherer Mikrocontroller, der Kern- und funktionale Elemente mit Sicherheits- und Schutzfunktionen umfasst, wird gemäß unterschiedlichen Ausführungsformen der Erfindung beschrieben. Die Schutzfunktionen können Teil des Mikrocontrollerkerns sein, der ein Steuerungsprotokoll für Speicherzugriff entsprechend der Lese/Schreib-Berechtigung jedes Speichersegments einbezieht, das durch den Systemprogrammierer festgelegt wird. Das Berechtigungsprotokoll kann durch mit einer Speicherverwaltungseinheit und Programmroutinen, die in einem Hilfs-ROM liegen, verbundene Hardware durchgesetzt werden. Hilfsfunktionen können ein Sicherungsladeprogramm zur Systemprogrammierung und einen Schaltungs-Debugger zur Programmcodeentwicklung enthalten. Um zusätzlichen Schutz zum eingelagerten Programmcode zu gewährleisten, können Dateninhalte und Speicherplätze in Laufzeit durch einen Hardwarechiffreur entsprechend bestimmten Ausführungsformen der Erfindung verschlüsselt werden. Dadurch können ein oder mehrere Programme innerhalb eines Mikrocontrollers durch mehrere Entwickler gebaut werden, während der gesicherte Inhalt jedes Entwicklers innerhalb des Mikrocontrollers gesichert ist. In unterschiedlichen Ausführungsformen ist der gesicherte, innerhalb des Mikrocontrollers gespeicherte Inhalt jedes Entwicklers besonderen Zugriffsrechten zugeordnet, die den Zugriff auf diesen Inhalt durch andere Parteien beschränken und/oder blockieren.
  • 1 ist ein Blockdiagramm eines sicheren Mikrocontrollers 100 gemäß unterschiedlichen Ausführungsformen der Erfindung. Wie in 1 gezeigt, beinhaltet ein Mikrocontrollerkern 101 eine zentrale Prozessoreinheit („CPU“) und einen Ausnahmeverwalter. Die CPU wird auch als „Prozessoreinheit“ bezeichnet. In bestimmten Ausführungsformen der Erfindung ist die CPU des Mikrocontrollerkerns 101 als ein kanalisierter Prozessor implementiert, was einen einzigen Zeitgebertakt zum Vorausabrufen von Programmcode erlaubt. Folglich verursacht ein Befehlswort, dass ein Befehl in einem Zeitgebertakt ausgeführt wird. Dies ermöglicht höhere Systemzeitgeberfrequenzen mit Programmspeicher, der lange Zugriffszeiten hat, wie zum Beispiel einem Flash-Speicher. Die Codeausführung ist dennoch eintaktig Takt für einen Linearcode, aber Codeverzweigung zieht einen Zeitgebertaktnachteil nach sich, sofern nicht weitere Messungen realisiert werden, wie zum Beispiel eine Zweigvorhersageeinheit. Eine Befehlscodeoperation umfasst im Allgemeinen eine Anzahl von Takten an Codeausführungen, die eine besondere Funktion bestimmen. Außerdem werden die Begriffe „Code“, „Programmcode“ und „Befehlscode“ als synonym betrachtet.
  • In unterschiedlichen Ausführungsformen benutzt der Prozessor die Harvard-Speicherarchitektur mit gesonderten Programm- und Datenspeichern. Diese Speicherarchitektur verbessert die Systembandbreite durch das Zulassen simultanen Zugriffs auf Programm- und Datenspeicher; es erlaubt auch das Benutzen unterschiedlicher Wortlängen für Datenspeicherung. Zum Beispiel können sowohl die Programmspeicheradressen als auch die Datenspeicheradressen 16 Bits haben. Die 16-Bit effektive Adresse unterstützt 65536 (64K) 16-Bit Wörter des Programmspeichers und 64K 16-Bit Wörter des Datenspeichers. Um Zugriff auf Datentabellen zu gewähren, die im Programmspeicher gespeichert sind, unterstützt der Prozessor einen Von-Neumann-Architekturzugriff, wobei dieser Zugriff aber eine 1-Taktverzögerung beinhaltet, es sei denn ein Befehlscache ist implementiert. Ein Fachmann wird erkennen, dass unterschiedliche Prozessorarchitekturen, Zeitgeberschemata und Adressierungsverfahren gemäß Ausführungsformen der Erfindung realisiert werden können.
  • Der Ausnahmeverwalter ist Bestandteil des Mikrocontrollerkerns 101 und funktioniert so, dass Unterbrechungen des normalen Programmflusses verursacht werden, wenn unerwartete oder erwartete Ereignisse oder Bedingungen auftreten. Zum Beispiel kann ein unzulässiger Versuch durch einen nicht autorisierten Benutzer, auf gesicherten Inhalt zuzugreifen, eine Unterbrechung erzeugen, die effektiv solch einen Zugriff verhindert.
  • Der Programmspeicher speichert Inhalt, der einen Programmcode und Betriebsparameter enthalten kann. Der Hauptprogrammspeicher kann durch die Verwendung von nichtflüchtigem Speicher realisiert werden, wie zum Beispiel durch Flash-Speicher 106 oder EEPROM.
  • Ein ROM 105 ist ebenfalls mit dem Programmplatz gemappt, um Hilfsfunktionen zu unterstützen, die keine intra-System-Programmierbarkeit benötigen, wie zum Beispiel eine Urladeprogrammfunktion, intra-Schaltungsdebuggen und Chiptesten. Um einwandfreien Betrieb zu gewährleisten, können Löschen und Schreiben auf programmierbare nichtflüchtige Speicher durch Subroutineaufrufe auf das Hilfs-ROM 105 durchgeführt werden und dadurch nur durch den Systemcodespeicher zugreifbar sein. In bestimmten Ausführungsformen der Erfindung ist Lesezugriff auf den Flash-Speicher 106 ein Takt, wobei aber die Lösch- und Schreibzeiten nicht deterministisch sind, da diese Operationen durch einen Hilfs-ROM- 105 Code über ein Paar von Steuer- und Datenregister verarbeitet werden.
  • Datenspeicher speichert unterschiedliche Arten von Daten innerhalb des Mikrocontrollers. Ein Fachmann wird erkennen, dass der Datenspeicher durch eine Vielzahl an Speichertechnologien realisiert werden kann, wie zum Beispiel SRAM 107.
  • Ein Merkmal des sicheren Mikrocontrollers 100 ist seine hierarchische Multilayerzugriffssteuerung auf den Programmspeicher. Diese Hierarchie wird durch Verwenden eines physischen Layers, der mit der Speicherverwaltungseinheit (MMU) 103 verbunden ist, und der Zugriffssteuerung 102 und der Sicherheitsmerkmale des Mikrocontrollerkerns 101 verwirklicht. Der physische Layer enthält Überwachungs- und Komparatorschaltungen, die den Programmfluss kontinuierlich in einem Speicherschutzmodus überwachen und einen Lese/Schreib-Zugriff des Programmspeichers entsprechend den benutzerdefinierten Berechtigungsebenen für Speichersegmente steuern. In einer besonderen Ausführungsform kann der Programmspeicher in drei Speichersegmente aufgeteilt werden, die drei Zugriffsberechtigungsebenen für das System bereitstellen. Der Speicherbereich und die Zugriffsberechtigung für jedes Segment können durch Verwenden eines Satzes reservierter Register im Universal-Registerplan der CPU bestimmt sein. In bestimmten Ausführungsformen sind diese Register benutzer-programmierbar, wobei aber ihre Zugriffssequenz durch eine atomare Schaltung in Form eines Paares von sequenzgesteuerten Registern durchgesetzt wird. Eine atomare Operation bezieht sich auf einen Satz an Operationen, die kombiniert werden können, so dass sie gegenüber dem Rest des Systems als eine Operation mit nur zwei möglichen Ergebnissen erscheinen: Erfolg oder Fehlschlag.
  • In unterschiedlichen Ausführungsformen der Erfindung wird die Zugriffssteuerung im Speicherschutzmodus in Kraft treten, wenn ein Speicherschutzfreigabe- („MPE“) Bit im Systemregister gesetzt ist. In bestimmten Beispielen kann dieses Systemregister lediglich durch Programmcodes, die im höchsten Sicherheitsspeichersegment liegen, zugreifbar sein. In diesem Betriebsmodus ruft, decodiert und führt die CPU Programmbefehle in normaler Art ab bzw. aus. Die Steuerungszugriffsschaltung überwacht den Befehlsdecoder für Speicherbefehle. Wenn ein Lade- oder Speicherbefehl entdeckt wird, benutzt der Überwacher die letzte Programmadresse, um die vorhandene Zugriffsberechtigung festzustellen. Die vorhandene Berechtigung wird dann benutzt, um die Legitimität der Quelle/des Ziels zu testen, indem der Komparator die Zeigeradresse gegen die Segmentgrenzen prüft. Lediglich autorisierter Lese- oder Schreibzugriffe, d.h. zugelassene unter entsprechender Zugriffsberechtigung/ entsprechenden Zugriffsberechtigungen Zugriffe werden durch die CPU ausgeführt. Jeder unautorisierte Zugriffsversuch verursacht eine Ausnahme oder Unterbrechung, wahlweise wird das Programm gezwungen, eine benutzer-definierte Programmroutine in Reaktion auszuführen.
  • Wie in 1 veranschaulicht, kann der Mikrocontroller 100 auch einen bidirektionalen Hardwarechiffreur 104 enthalten, der Befehlscode während der Laufzeit zum Zweck des Schutzes der eingelagerten Software entsprechend unterschiedlichen Ausführungsformen der Erfindung umwandelt. Für starken kryptografischen Schutz kann ein Chiffreur verwendet werden, der einen herkömmlichen kryptografischen Algorithmus verwendet, wie zum Beispiel Tripel-DES oder AES. In bestimmten Ausführungsformen verwendet der sichere Mikrocontroller 100 eine Chiffriertechnik, die einen Schlüsselstrom durch Permutieren von Befehlsadressen mit einem geheimen Schlüssel erzeugt. Die Überlegungen für die Chiffriertechnik umfassen:
    1. 1. Ausreichendes Unklarmachen:
      • Das Chiffriermerkmal führt zu einem ausreichenden Unklarmachen, welches es schwer macht, den Klartext herzuleiten, auch in Kenntnis, dass der erste Flash-Befehl von einem wohlbekannten Inbetriebnahmecode ist.
    2. 2. Niedriger Hardwareeinfluss:
      • Das Chiffriermerkmal verbraucht keine exzessiven Ressourcen hinsichtlich Bereich und Berechnungszeit. Durch zu niedrige Flash-Speicherbetriebsgeschwindigkeit sollte das verschlüsselte Codewort, welches vom Flash abgerufen werden muss, lediglich im letzten Stadium der Dechiffrieroperation verwendet werden.
    3. 3. Reversible Funktion, die bidirektionale Operationen unterstützt:
      • Wenn ein d = fn(s, x, y, z,...) vorhanden ist, dann ist auch ein s = fn-1(d, x, y, z, ...) vorhanden. Das heißt aber nicht eine echte Umkehrung, da es verschiedene s für jedes gegebene d geben könnte, aber lediglich ein d für jede Kombination von s, x, y, z, .... Wenn fn() als „Schlüsselstrom“-Erzeuger implementiert wird, dann ist fn1() = fn(), ausgenommen für die letzte Summierung.
    4. 4. Andere mögliche Einschränkungen:
      • Es gibt für die Schlüsselregistergröße Beschränkungen. Eine Größe von 64 bis 128 Bit könnte ein guter Kompromiss zwischen Speichergröße und Schlüsselstärke sein. Operationen können Additions-Modulo, binäre Summen, Bitauswahl, etc. sein, aber einige Operationen können in Bezug auf Hardware teuer sein, zum Beispiel allgemeines Rotieren oder Mod n, wobei n nicht einer Potenz von 2 entspricht. Spezialisiertes Rotieren (mit n = 0, 1 2, 3) oder fest verdrahtetes Mod 3, Mod 5 oder Mod 7 und ähnliche Niedrig-Gatewayzählungsoperationen können verwendet werden.
  • Bezugnehmend auf 7 beinhalten die Chiffrierfunktion und die Schnittstellen 700 einen Hashblock 701 zur schnellen Komprimierung einer langen pseudozufälligen Sequenz zur Schlüsselerzeugung, Register für geheime Schlüsselspeicherung (zum Beispiel ist der Chiffrierschlüssel im Flash-Speicher 106 gespeichert), einen Bitmischer (Adressbitmischer 705) zum Verschlüsseln von Speicherplätzen und einen Chiffrierblock 703 zum Chiffrieren des Reintextcodes zum Speichern und Dechiffrieren des Chiffriertextcodes oder kritischer Daten zur Ausführung. In unterschiedlichen Ausführungsformen arbeitet der Chiffrierblock 703 auf einer Befehl-für-Befehl-Basis, welche die Adresse jedes Befehls und Teilmenge von Daten vom Schlüsselregister nimmt, um einen Schlüsselstrom zu erzeugen, der sich aus einer Sequenz von Stammoperationen ergibt. Der Schlüsselstrom wird dann binär summiert mit einem Codewort. Der Chiffreur kann auch Schaltungen beinhalten, die die eingehenden und ausgehenden Bitströme nach besonderen Mustern überprüfen und bestimmt, ob sie umgangen werden sollen. In bestimmten Ausführungsformen kann der Chiffreur 104 innerhalb der MMU 103 eingebunden sein, da er in den Datenpfad des Programmspeichers eingebunden ist und die Chiffrierfunktion üblicherweise aktiviert ist.
  • Während der gefüllte Programmplatz im Speicherschutzmodus geschützt werden kann, ist der Hardwarechiffreur 104 üblicherweise auf dem Hauptprogrammspeicher angelegt, der durch einen Flash-Speicher 106 verwirklicht ist. Das ROM 105 beinhaltet hauptsächlich allgemeine Hilfsfunktionen, die üblicherweise nicht geheim sind. Das im ROM 105 enthaltene Urladeprogramm soll nicht eine Sicherheitsbedrohung darstellen, wenn auch das Urladeprogramm zum direkten Lesen des/Schreiben auf den Flash-Speicher 106 befähigt ist, da die Ladeprogrammfunktion der Zugriffssteuerung des physischen Layers unterliegt.
  • Andere Ausführungsformen des sicheren Mikrocontrollers können ohne den Hardwarechiffreur realisiert werden. Obwohl der Programmcode nicht innerhalb des Mikrocontrollers geschützt wäre, hätte dies System immer noch die Multilayerzugriffssteuerungssicherheitsmerkmale.
  • B. Multilayerzugriffssteuerung
  • Die folgende Beschreibung der Multilayerzugriffssteuerung und der Speichersegmentierung innerhalb des Mikrocontrollers ist bestimmt, besondere Ausführungsformen der Erfindung zu veranschaulichen. Ein Fachmann wird erkennen, dass andere Zugriffssteuerungsprotokolle und Speichersegmentierungsarchitekturen gemäß Ausführungsformen der vorliegenden Erfindung verwirklicht werden können.
  • Wie zuvor angemerkt, ist ein Merkmal des sicheren Mikrocontrollers 100 seine hierarchische Multilayerzugriffssteuerung für mehrere Benutzer des Programmspeichers. Wie in 2 gezeigt wird, ermöglicht die Zugriffssteuerung 102 die Multilayerzugriffssteuerung des sicheren Mikrocontrollers 100. Ein Bestandteil der Zugriffssteuerung ist der Zugriffsüberwacher 201. Die Zugriffssteuerung 102 ist verbunden mit Steuer-, Adress- und Datensignalen von der CPU des Mikrocontrollerkerns 101. Die Steuersignale von der CPU können auch Befehle, Speicherschutz, Lese-/Schreib-Anfragen und andere dem Fachmann bekannte Signale enthalten. Die Datensignale von der CPU können die Datenbussignale, Registersignale und andere dem Fachmann bekannte Datensignale enthalten. In bestimmten Ausführungsformen sind die Datensignale mit einem bidirektionalen Datenbus verbunden. Das Adresssignal von der CPU kann auch ein Programmadresssignal oder andere dem Fachmann bekannte Adresssignale enthalten.
  • In der Zugriffssteuerung 102 sind auch die Berechtigungs-Register, umfassend PRIV, PRIVT0, PRIVT1 und PRIVF. Diese Register speichern und verwalten die Berechtigungsinformationen, die mit der Berechtigungsebene des Benutzers verbunden sind. Ein Fachmann wird erkennen, dass unterschiedliche Arten und Zahlen von Berechtigungs-Registern verwendet werden können, um Zugriff auf geschützte Daten/IP innerhalb des Mikrocontrollers 100 zu steuern.
  • Durch Überwachen und Vergleichen des Betriebes der CPU benachrichtigt die Zugriffssteuerung 102 den Ausnahmeverwalter durch Bereitstellen einer besonderen Handlung, die durch eine Berechtigungsanfrage erforderlich ist. In anderen Worten, eine Funktion der Zugriffssteuerung 102 dient zum Verwalten von Speichersegmentebenenanfragen, die mit Berechtigungsebenen verbunden ist. In besonderen Ausführungsformen der Erfindung können Bestandteile der Zugriffssteuerungsfunktion enthalten:
    • • ein Steuerprotokoll für Speicherzugriff, das mit den Lese-/Schreibberechtigungsebenen verbunden ist.
    • • Jedes der Speichersegmente entspricht der Berechtigungsebene, so dass mehrere Benutzer mit unterschiedlichen Berechtigungsebenen getrennt einen Programmcode laden können und Schreibzugriff zu den Registern der entsprechenden Berechtigungsebene haben.
    • • Der geringere Berechtigungscode kann die Grenzen für eine höhere Berechtigungsebene nicht verändern, und die Vertraulichkeit des Programmcodes gegen Lese-/Schreibversuche durch geringer berechtigte Coderegionen ist geschützt.
  • Der Hauptprogrammspeicher ist im nichtflüchtigen Speicher 106 gespeichert und kann als drei fortlaufende Speichersegmente gemäß unterschiedlichen Ausführungsformen angesehen werden. 4 veranschaulicht eine bestimmte Programmspeichersegmentierung für drei Speichersegmente. Befehlscodes liegen im Programmspeicher und sind immer durch die CPU ausführbar; jedoch unterliegt ein Lese- oder Schreibzugriff zu jedem Segment der Hardwaresteuerung gemäß der Berechtigungsebene. Die drei Segmente, festgelegt von höchster Sicherheit zu niedrigster im sicheren Mikrocontroller 100, sind: System, Benutzerladeprogramm und Benutzeranwendung. Die Tabelle in 3 skizziert diese Speichersegmente, einstellbare Flashseitengrenzen und maximale Berechtigungsebene, die mit einer Codeausführung innerhalb der Segmente gemäß bestimmten Ausführungsformen der Erfindung verbunden sein können. Auf sämtliche Berechtigungsebenen kann durch Nur-Lese-Speichercodes 105 zugegriffen werden.
  • In unterschiedlichen Ausführungsformen ist die Segmentgrenze entsprechend der Seitennummer des Flashspeichers 106 festgelegt. Das Systemsegment beginnt von Seite 0 bis zu der Seite ULDR-1, eine Seite unterhalb des Benutzerladeprogrammsegments. In der gleichen Art beginnt das Benutzerladeprogrammsegment von der Seite ULDR bis Seite UAPP-1, und das Benutzeranwendungssegment beginnt von Seite UAPP bis zur Oberseite des Flashspeichers 106.
  • Jedes der drei Speichersegmente hat eine maximal zulässige Berechtigungsebene. Die aktuelle Berechtigungsebenenzuordnung wird durch Hardware als Grundlage zur Steuerung eines Lese-/Schreibzugriffs auf andere Speichersegmente benutzt. Zusätzlich zu den drei benutzerdefinierbaren Segmenten haben auch das Hilfs-ROM und Datenspeicherregionen eine maximale Standardwert-Berechtigungsebene, die Zugriffssteuerung zum Programm- und Datenplatz bereitstellt. Die Mikrocontrollerkernarchitektur unterstützt eine Programmausführung von Daten-RAM durch Mappen des Datenspeichers auf den Programmplatz. Das Gestalten des Datenspeichers zu einem niedrigen Berechtigungssegment beseitigt die Möglichkeit, das Daten-RAM zum Umgehen der Zugriffssteuerung zu verwenden.
  • In bestimmten Ausführungsformen der Erfindung sind die Flashseitengrenzen über die internen Register User Loader Starting Page Address („ULDR“) und User Application Starting Page Address („UAPP“) eingestellt. Ein Schreibzugriff zu diesen Registern ist derart, dass niedrigerer berechtigter Code die Grenzen eines höher berechtigten Segments nicht verändern kann. Die Werte dieses Registers werden mit der Anzahl der Wörter pro Seite multipliziert, um die entsprechende Adresse für das erste Wort auf der angegebenen Seite zu bestimmen. Zum Beispiel ist ULDR*256 die Adresse für das erste Wort auf Seite ULDR, wenn die Anzahl der Wörter in einer Flashseite 256 ist.
  • Um diese kritischen Werte nichtflüchtig zu machen, werden die Werte der ULDR und UAPP im Flashspeicher 106 während der Segmentinitialisierung gespeichert. Wenn ein Benutzerladeprogrammsegment bevorzugt wird, muss der ULDR-Wert in das Systemsegment programmiert werden und der Systemcode ist zum Übertragen des ULDR-Werts zum ULDR-Register bei Einschaltrücksetzung verantwortlich. Das gleiche wird beim Benutzeranwendungssegment angewendet. Der UAPP-Wert wird in das Benutzerladeprogrammsegment programmiert und muss zum UAPP-Register durch das Benutzerladeprogramm übertragen werden.
  • In unterschiedlichen Ausführungsformen der Erfindung lassen die Flashseitengrenzen in 3 Möglichkeiten für Segmentationsoptionen offen, die nicht durch den Benutzercode erstellt worden sein können. Wenn Programmspeichersegmentation und -schutz aktiviert sind (z.B. MPE=1), dann sollte das Systemcodesegment Bestandteil der ersten Flashspeicherseite sein. Das heißt, dass die ULDR- und UAPP-Register nicht auf = 0 programmiert sind. Wenn es gewünscht ist, dass der Programmspeicher lediglich zwei Speichersegmente umfasst, dann sind das ULDR-Register und UAPP-Register programmiert, um dieselbe Startseite festzulegen, folglich werden keine Seiten innerhalb des ULDR-Segments festgelegt. Wenn das ULDR-Register auf einen Wert gleich oder größer als UAPP programmiert ist, wird kein Benutzerladeprogrammsegment festgelegt. Das UAPP-Register kann auf die Startseite für die zweite Region programmiert werden. In diesem Zustand (lediglich zwei Programmspeichersegmente) wird die letzte Seite des Systemcodespeichers (UAPP-1) sein, wie in 5 veranschaulicht. In bestimmten Zuständen wird dies einem Benutzen von User Loader als zweite Speicherregion vorgezogen, so dass lediglich HIGH und LOW Berechtigungsebenen verfügbar sind.
  • Diese Segmentierung von Programmspeicher ist vorgesehen, um das Laden von Programcodes durch mehrere Parteien in unterschiedlichen Stadien während des Produktlebenszyklus zu ermöglichen (z.B. Originalanbieter-, zweiter Benutzer-, Endbenutzerupgrade und Bibliothekdownloads). Das Segmentierungs- und Berechtigungsschema bietet auch einen Mechanismus zum Schutz der Vertraulichkeit von Code gegen Lese-/Schreibzugriffsversuche durch niedriger bevorrechtigte Coderegionen. In bestimmten Ausführungsformen ist die Fähigkeit, Hilfs-ROM zu lesen, typischerweise zugelassen, unabhängig des MPE-Bitzustandes.
  • In den folgenden Abschnitten werden Beispiele für ein Zweisegment- und Dreisegmentmultilayerzugriffssteuerungssystem angegeben. Jedoch wird ein Fachmann erkennen, dass Ausführungsformen mit mehr als drei Speichersegmenten innerhalb des Umfangs der vorliegenden Erfindung liegen.
  • C. Systemcodesegment
  • In bestimmten Ausführungsformen der Erfindung ist das System- oder Systemcodesegment die höchste Bevorrechtigungsebene und auch die höchste Sicherheitsebene, wie aus 3 bekannt. Typischerweise ist der Systemcode lediglich für den Originalanbieter des Mikrocontrollerproduktes verfügbar. Für eine Dreisegment- oder Zweisegmentausführungsform ist ein exemplarischer Systemcode in den 4 bzw. 5 veranschaulicht.
  • In bestimmten Ausführungsformen beginnt der Systemcode auf einer bestimmten Seite und erstreckt sich bis zu der Seite genau vor der Startseite der Benutzerladeprogrammstartseite. Das ULDR-Register, welches die Oberseite der Systemcoderegion festlegt, kann durch Systemcode oder ROM-Code beschreibbar sein. In unterschiedlichen Ausführungsformen der Erfindung speichert ein Verfahren zur Initialisierung der Systemcoderegion den gewünschten ULDR-Startseitenwert in der Flashwortadresse 000Fh (Wort genau vor dem Systempasswort) und lässt den Rücksetzvektorcode die ULDR-Schreiboperation wie folgt durchführen:
       org 0000h
             ; Rücksetzen
       move CP, #usr_ldr_page
       move ULDR, @CP 



       jump sys_init
       org 000Fh
       user_ldr_page:
             ; Startseitenadresse des Benutzerladeprogramms
             dw 0020h; Seite 32
       org 0010h
             ; System kennwort
             dw ..., ..., ..., ...
  • Jedoch können andere Verfahren zur Initialisierung der Systemcoderegion gemäß Ausführungsformen der vorliegenden Erfindung realisiert werden.
  • In unterschiedlichen Ausführungsformen der Erfindung wird die Lese-/Schreibzugriffsmöglichkeit des Systemcodes durch zwei Registerbits im PRIV-Berechtigungsregister festgelegt. Zum Beispiel wird das Systemleseberechtigungs- („PSYR“) Bit auf einen bestimmten Wert gesetzt, um ein Lesen der Systemcoderegion zu ermöglichen. Das Systemschreibberechtigungs- (PSYW) Bit wird auf einen bestimmten Wert gesetzt, um ein Schreiben auf die Systemcoderegion zu ermöglichen. Beide diese Bits werden automatisch durch die Hardware auf einen Wert gelöscht, wenn der aktuelle IP/Inhalt nicht in ROM-Code oder Systemcode ist. Wenn Lese-/Schreibversuche auf diese Systemregion ohne Aktivieren von PSYR/PSYW gemacht werden, werden Speicherschutzunterbrechungsflags (z.B. PSYRF und PSYWF) für Lese- bzw. Schreibversuche gesetzt. Wenn das MPE-Bit gesetzt wird, werden diese Unterbrechungsflags den normalen Programmfluss verändern, um eine benutzer-definierte Subroutine auszuführen, um die Ausnahme zu bearbeiten.
  • D. Benutzerladeprogrammcodesegment
  • In bestimmten Ausführungsformen der Erfindung ist die mittlere Berechtigungsebene und also die mittlere Sicherheitsebene das Benutzerladeprogrammsegment wie in 3 ausgeführt. Typischerweise ist der Benutzerladeprogrammcode der höchste Code, der für zweite Benutzer des Mikrocontrollerproduktes verfügbar ist. Für Dreisegmentausführungen ist ein exemplarisches Benutzerladeprogrammcodesegment in 4 veranschaulicht.
  • In unterschiedlichen Ausführungsformen der Erfindung beginnt die Benutzerladeprogrammcoderegion typischerweise auf der ULDR-Seite, die durch den Systemcode bestimmt ist und dehnt sich bis zu der Seite genau vor der Startseite der Benutzeranwendungsstartseite aus. Das UAPP-Register bestimmt die Oberseite der Benutzerladeprogrammcoderegion und ist durch einen Benutzeranwendungscode nicht beschreibbar (z.B. nur beschreibbar durch Systemcode, Benutzerladeprogramm oder ROM-Code).
  • In bestimmten Ausführungsformen ist ein Verfahren zum Konfigurieren der Benutzerladeprogrammgrenzen ähnlich zu dem, das durch die Systemcoderegion benutzt wurde. Auf der ersten ULDR-Seite wird der gewünschte Wert, der in das UAPP-Register programmiert wird, in die Wortadressenverlagerung 000Fh gesetzt, genau vor das Benutzerladeprogrammpasswort. Der Benutzerladeprogramminbetriebnahmecode am Anfang der ULDR-Seite liest den Wert, der in der ULDR*Flashseitengröße +000Fh gespeichert ist, und schreibt in das UAPP-Register.
  • In unterschiedlichen Ausführungsformen der Erfindung wird die Lese-/Schreibzugriffsmöglichkeit des Benutzerladeprogrammcodes durch zwei Registerbits im PRIV Berechtigungsregister festgelegt. Zum Beispiel wird ein Benutzerladeprogrammberechtigungs- („PULR“) Bit auf einen bestimmten Wert gesetzt, um ein Lesen der Benutzerladeprogrammcoderegion zu ermöglichen. Ein Benutzerladeprogrammschreibberechtigung- („PULW“) Bit wird auf einen bestimmten Wert gesetzt, um ein Schreiben auf die Benutzerladeprogrammregion zu ermöglichen. Beide diese Bits können automatisch auf 0 durch Hardware gelöscht werden, wenn der aktuelle IP kein ROM-Code, Systemcode oder Benutzerladeprogrammcode ist. Wenn Lese-/Schreibversuche auf die Benutzerladeprogrammregion gemacht werden, ohne zugelassen zu werden, werden Speicherschutzunterbrechungsflags (z.B. PULR Leseberechtigungsflag und PULW Schreibberechtigungsflag) für Lese- bzw. Schreibversuche gesetzt. Wenn der MPE-Bit gesetzt wird, verändern diese Unterbrechungsflags den normalen Programmfluss, um eine benutzer-definierte Subroutine auszuführen, um die Ausnahme zu bearbeiten.
  • Zweisegmentspeicherkonfiguration
  • Wenn der Umfang einer Mikrocontrolleranwendung lediglich zwei Berechtigungsebenen erfordert, dann kann eine Zweisegmentspeicherkonfiguration benutzt werden. Die Zweisegmentspeicherkonfiguration ist in 5 gemäß unterschiedlichen Ausführungsformen der Erfindung veranschaulicht. Für Vorrichtungen mit lediglich zwei Speichersegmenten ist die Benutzerladeprogrammregion ausgeschlossen, sodass lediglich die Systemspeicherregion und die Benutzeranwendungsspeicherregion verbleiben.
  • In bestimmten Ausführungsformen wird das Flashwort in Adresse 000Fh, das üblicherweise zum Bereitstellen des Wertes der Startseite für das Benutzerladeprogramm benutzt wird, stattdessen zum Bereitstellen eines Wertes für die Startseite der Benutzeranwendung verwendet, um die Zweisegmentspeicherkonfiguration zu unterstützen. Damit das Hilfs-ROM kontextabhängig weiß, dass das oben genannte Flashword Informationen über die UAPP-Startseite anstelle der ULDR-Startseite bereitstellen soll, kann das höchstwertige Bit in diesem Wort auf einen bestimmten Bit-Wert gesetzt werden. Folglich kann, wenn Systemcode das Benutzerladeprogramm ausschließen soll, der folgende Code verwendet werden und der Programmspeichersegmentationsplan würde sich entsprechend ändern:
  •        org 0000h
                 ; Rücksetzen
                 move CP, #usr_app_page
                 move UAPP, @CP
                 move ULDR, UAPP; setze ULDR=UAPP
                 jump sys_init
           org 000Fh
           user_app_page:
                 ; Startseitenadresse der Benutzeranwendung (kein
     Benutzerladeprogramm)
                 dw 8020h; Seite 32, msbit=1
           org 0010h
                 ; System kennwort
  • E. Benutzeranwendungscodesegment
  • In bestimmten Ausführungsformen der Erfindung ist die niedrigste Berechtigungsebene und auch die niedrigste Sicherheitsebene das Benutzeranwendungscodesegment, wie aus 3 bekannt. Typischerweise ist der Benutzeranwendungscode der einzige Code, der für dritte Benutzer oder einen Endbenutzer für Verbesserungen oder Bibliothekdownloads verfügbar ist. Für eine Dreisegment- oder eine Zweisegmentausführungsform ist in 4 bzw. 5 exemplarisch ein Benutzeranwendungscode veranschaulicht.
  • In bestimmten Ausführungsformen der Erfindung beginnt die Benutzeranwendungscoderegion auf der UAPP-Seite und erstreckt sich über die letzte Seite des Flashprogrammspeichers (vorausgesetzt, dass eine UAPP-Coderegion festgelegt ist). Die Berechtigung für eine Codeausführung in der Benutzeranwendungsregion kann nicht größer als „LOW“ sein, übereinstimmend mit der niedrigsten Berechtigungsebene, wie aus 3 bekannt ist. Entsprechend gibt es keine Lese-/Schreibberechtigungsfreigaben oder Speicherschutzunterbrechungsflags.
  • F. Berechtigungsregister
  • In bestimmten Ausführungsformen der Erfindung umfassen die Berechtigungsregister PRIV, PRIVT0 und PRIVT1 und sind aus 1 und 2 bekannt. 6 zeigt eine Tabelle bereit, die die Berechtigungsregisterwerte für drei Berechtigungsebenen angibt, entsprechend einer Dreisegmentspeicherkonfiguration gemäß unterschiedlichen Ausführungsformen der Erfindung. Diese Tabelle wendet die Berechtigungsregister PRIV, PRIVT0 und PRIVT1 an. Es gibt zwei Wege, die Berechtigungsebene zu ändern. Das PRIV-Register kann direkt unter der Zugriffssteuerung gelesen/beschrieben werden. Ein anderer Weg, das PRIV-Register zu aktualisieren, ist mittels der atomaren Operation, ein fortlaufendes Schreiben auf PRIVT0- und PRIVT1-Register. Das heißt, einer Schreib-PRIVT0-Operation folgt umgehend eine Schreib-PRIVT1-Operation. Das letzte Verfahren wird in Fällen empfohlen, in denen jemand den Stapelzeiger verändert, um Zugriffssteuerung zu verhindern. Hardware garantiert, dass die Inhalte des PRIV-Registers niemals höher als die maximale Berechtigungsebene des Speicherbereichs sind, auf der der Code läuft. Wenn der Benutzerladeprogramm- oder Benutzeranwendungscode zum Beispiel versucht, PRIV auf HIGH zu setzen, dann würde Hardware verhindern, dass diese Handlung ausgeführt wird. Jedoch kann jeder Code entscheiden, die Berechtigungsebene jederzeit herabzusetzen. In bestimmten Ausführungsformen der Erfindung wird die Berechtigung für aktuelle Codeausführungen das Kleinere aus:
    1. 1. der maximalen Berechtigungsebene der Speicherregion, in welcher der Code abläuft oder
    2. 2. dem Inhalt des PRIV-Registers.
  • Wenn das PRIV-Register zum Beispiel auf MEDIUM-Berechtigung gestellt wird, würde eine Codeausführung in der Systemcoderegion nur auf einer MEDIUM-Berechtigung zugelassen. In unterschiedlichen Ausführungsformen der Erfindung sind typische feste Ebenenaufträge gemäß des Bitinhalts des PRIV-Registers in 6 angegeben. Die Konstanten HIGH, MEDIUM und LOW werden gezeigt aber alle Werte von 0000b bis 1111b können benutzt werden.
  • G. Atomares PRIV-Schreiben, das PRIVT0- und PRIVT1-Register benutzt
  • Gemäß unterschiedlichen Ausführungsformen, in Ergänzung zum direkten Schreiben in das PRIV-Register, können das Register und die Berechtigungsebene auch durch Schreiben in die PRIVT0- und PRIVT1-Register in einer fortlaufenden Sequenz gesetzt werden. Dieser Befehl gilt als ein atomarer PRIV-Schreibbefehl.
  • Wie im PRIV-Register garantiert Hardware, dass die Inhalte des PRIVT0 niemals höher als die maximale Berechtigungsebene der Speicherregion sind, von der Code aus läuft. Schreiben auf den PRIVT0 hat keinen Einfluss auf das PRIV-Register, aber Schreiben auf das PRIVT1-Register veranlasst Hardware, das PRIV-Register auf das Kleinere aus:
    1. 1. der maximalen Berechtigungsebene der Speicherregion, in welcher Code abläuft
    2. 2. dem PRIVT0-Register, oder
    3. 3. dem Quellargumente für das PRIVT1-Schreiben
    zu verändern.
  • Der Sicherheitsnutzen, der sich dadurch ergibt, dass vorgesehen ist, dass das PRIVT0-, PRIVT1-Registerpaar in Sequenz geschrieben wird, um das Berechtigungs-PRIV-Register zu ändern, ist, dass Code, der zwischen die PRIVT0-, PRIVT1-Schreib-Operationen platziert wird, nicht absichtlich durch jemanden, der hofft, unautorisiert höhere Berechtigung zu erlangen, übersprungen werden kann. Schreiben auf PRIV kann automatisch PRIVT0 auf LOW zurücksetzen.
  • H. Regeln für Systemsoftware
  • Während Berechtigungsebenen in Hardware realisiert werden, gibt es mehrere Wege, wie Benutzercode versuchen kann, Speicherzugriffsschutz zu umgehen, einschließlich der Manipulation von geteilten, gemeinsamen Stapeln oder Registern, und Springen zu oder Aufrufen von Code im Systemspeicher, der kein offizieller Zugangspunkt ist. Gemäß unterschiedlichen Ausführungsformen der Erfindung können die folgenden Regeln angewendet werden, um ein sichereres System bereitzustellen und um den Erfolg dieser Angriffe zu minimieren. Erstens, der Systemcode speichert und wiederherstellt die Berechtigungsebene nicht. Stattdessen setzen Unterbrechungen und Systembibliotheksfunktionen, die die Berechtigung erhöhen, die Berechtigung auch bedingungslos vor dem Verlassen herab. Wenn es Unterbrechungen gibt, die die Berechtigungsebene herabsetzen oder Unterbrechungscode außerhalb des Systembereichs läuft, deaktiviert Code, der die Berechtigung erhöht, die Unterbrechungen für die Dauer der Berechtigungsoperation.
  • Zweitens, eine Operation, die hohe Berechtigungsebenen benötigt, ruft keine Subroutinen auf, um die Berechtigungsebene zu erhöhen. Drittens, eine Systembibliothekfunktion, die Argumente überprüft bevor sie die Berechtigungsebene erhöht, macht dies in einer atomaren Art unter Benutzung von PRIVT0 und PRIVT1, um Kurzschließen der Überprüfung zu verhindern (die Regel über Deaktivieren von Unterbrechungen wird ebenfalls angewendet).
  • Ein Fachmann erkennt, dass andere Regeln für Systemsoftware angewendet werden können, um die Sicherheit und die Unversehrtheit des Inhalts/IPs innerhalb des Mikrocontrollers zu gewährleisten.
  • Die Urladeprogrammfunktion
  • Der sichere Mikrocontroller 100 unterstützt mehrere Modi von Systemoperationen. In bestimmten Ausführungsformen der Erfindung läuft der Mikrocontroller 100 normalerweise in einem Benutzermodus, um Benutzeranwendungen zu unterstützen. Ein ROM-Urladeprogrammmodus wird zur Initialisierung von Speicher- und Systemeinstellungen benutzt. Der ROM-Urladeprogrammmodus unterstützt auch das Programmieren in Anwendungen und kritische Systemdatenaktualisierung mit Hardwareunterstützung. Ein Flussdiagramm 900 einer exemplarischen Urladeprogrammoperation wird in 9 gezeigt.
  • Eine Urladeprogrammfunktion, die im Hilfs-ROM liegt, stellt grundlegende Unterstützung für eine Systeminitialisierung und -programmierung gemäß unterschiedlichen Ausführungsformen der Erfindung bereit. Gemäß 9 startet die CPU automatisch nach jedem Zurücksetzen 901, 904 die Ausführung in einer bestimmten Adresse im Hilfs-ROM 906, die es dem Hilfs-ROM-Code erlaubt, die notwendigen Systemunterstützungsfunktionen auszuführen. Nächstens, der Systemprogrammierungsfreigabe- („SPE“) Bit wird in 907 geprüft, um festzustellen, ob das Systemprogrammieren beginnen soll oder ob dieser Code umgangen werden soll anstelle des Erzwingens der Ausführung zum Vektor zum Start des Benutzerprogrammcodes 111. Wenn das SPE-Bit zum Beispiel auf einen bestimmten Wert gesetzt wird, wird der Prozessor das zuvor beschriebene Urladeprogrammmodusprogramm 921 ausführen. Das SPE-Bit kann auch auf einen Wert voreingestellt sein.
  • Um in den Urladeprogrammmodus 921 zu gelangen, kann das SPE-Bit während des Zurücksetzens 901 auf einen bestimmten Wert durch eine Schnittstelle, wie zum Beispiel JTAG 902, 903, gesetzt werden. Das Urladeprogramm realisiert die Systemprogrammierung wie in 9 in den Schritten 922 bis 932 beschrieben. Diese Schritte beinhalten das Überprüfen des Systempassworts 925 und ULDR-Passworts 926, 927. Ein Kennwortübereinstimmung 928 annehmend, wird das Ladeprogramm entsperrt 929 und die Flashprogrammierung mit Unterstützung der seriellen Schnittstellen 931 wie verlangt realisiert. Wenn die Systemprogrammierung abgeschlossen ist, ist das Urladeprogramm befähigt, das SPE-Bit zu löschen und die Vorrichtung zurückzusetzen, so dass die Systemprogrammierungsroutine anschließend umgangen wird.
  • In bestimmten Ausführungsformen besitzt das Hilfs-ROM eine voreingestellte hohe Sicherheitsebene, da das Urladeprogramm die höchste Zugriffsberechtigung besitzt und aufgerufen werden kann, um auf jedes Programmspeichersegment zuzugreifen, einschließlich des Informationsblocks, der nicht im normalen Programmspeicherplatz gemappt ist und nicht für den generellen Gebrauch verfügbar ist.
  • In unterschiedlichen Ausführungsformen der Erfindung ist der Informationsblock ein kleines reserviertes Speichersegment im Flashspeicher 106. Für den Mikrocontrollerkern 100 wird der Informationsblock zum Speichern benutzer-geheimer Daten und Chiffrierschlüsseldaten benutzt. Das Benutzergeheimnis ist ein binärer Strom und wird zum Herstellen einer authentifizierten Verbindung mit einem entfernten, sicheren Ladeprogramm verwendet, das durch das Urladeprogramm über eine konventionelle Schnittstelle, wie zum Beispiel USB, UART oder SPI, unterstützt wird. Der Chiffrierschlüssel ist eine pseudozufällige Sequenz, die durch einen Hardwarechiffreur verwendet wird. Ein Verriegelungsmuster wird ebenfalls im Informationsblock bestimmt. Wenn das Verriegelungsmuster programmiert wird, ist weiterer Zugriff auf den Informationsblock untersagt. In bestimmten Ausführungsformen kann lediglich eine Massenlöschung, welche sämtliche Dateninhalte im Flashspeicher 106 löscht, die Verriegelung freischalten.
  • Da der Informationsblock nicht im Programmspeicherplatz ist, erfolgt ein Lese-/Schreibzugriff auf den Informationsblock für die Flashsteuerung-(„FCNT“) und Flashdaten- („FDATA“) Register, die lediglich einsatzbereit sind, wenn die CPU vom Hilfs-ROM abarbeitet. Die Sicherheitsebene des Informationsblocks ist auf HIGH voreingestellt und damit lediglich für Systemcode vor dem Ausschließen zugänglich. Exemplarisch sind FCNT und FDATA in 7 gemäß unterschiedlichen Ausführungsformen der Erfindung veranschaulicht.
  • I. Die schaltungsinterne Fehlersuchfunktion
  • Der Mikrocontroller 100 unterstützt unterschiedliche Modi von Systemoperationen. Normalerweise läuft der Mikrocontroller 100 im Benutzermodus, um Benutzeranwendungen zu unterstützen. Der Fehlersuchmodus ist vorgesehen, um schaltungsinterne Echtzeit-Fehlersuche/Emulation bereitzustellen. Der Testmodus ist angelegt, um hausinterne Chip-Tests und Qualifizierungen zu unterstützen. Sowohl der Fehlersuchmodus als auch der Testmodus werden durch eine Testzugriffsschnittstelle (TAP) und den TAP-Controller unterstützt, welcher kompatibel zum JTAG-Standard ist.
  • In unterschiedlichen Ausführungsformen der vorliegenden Erfindung werden der Hardware-schaltungsinterne Fehlersucher und Fehlersuchroutinen, die im Hilfs-ROM 105 angesiedelt sind, durch die Zugriffssteuerungshardware gesteuert. Die Fehlersuchhardwareeinrichtungen sind für Programmentwicklung und Systemfehlersuche verfügbar, aber Lese-/Schreibzugriff zum Programmspeicher folgt der Berechtigungsebene eines bestimmten Segments.
  • Indem die Fehlersuchmerkmale durch die Fehlersuchroutinen verwirklicht werden, halten die Softwareroutinen die Zugriffsregeln ein. Der Fehlersucher verfolgt die Aufrufadresse und entscheidet über seine Vorgehensweise gemäß der Berechtigungsebene des Segments. In bestimmten Ausführungsformen sind schaltungsinterne Emulationen und Datendump eines höher berechtigten Speichersegments untersagt. Während einer Nachverfolgungsoperation werden Subroutinenaufrufe eines niedrigeren Berechtigungssegments auf ein höheres Berechtigungssegment erlaubt, aber keine Zwischenregisterdaten werden angezeigt und kein Nachverfolgungscode oder Speicherdaten können ausgelesen werden. In bestimmten Ausführungsformen führt der Fehlersucher einen einzigen Schritt aus. Jedoch werden keine Zwischendaten beim einmaligen Hochsetzen auf ein höheres Berechtigungssegment zurückgeliefert. In unterschiedlichen Ausführungsformen der Erfindung wird der Fehlersucher abgeschaltet, wenn das Verriegelungsmuster im Informationsblock programmiert wurde.
  • J. Typische Inbetriebnahmecodesequenz
  • Während der Initialisierung des Mikrocontrollers 100 läuft die Vorrichtung der Reihe nach durch eine Anzahl von Schritten, die einen zuverlässigen Betrieb während des Ablaufens durch die Hierarchien der Berechtigungsebenen sicherstellen. Diese Initialisierungsprozedur wird veranschaulicht durch das Flussdiagramm 900 von 9. In unterschiedlichen Ausführungsformen der Erfindung ist die Inbetriebnahmesequenz wie folgt:
    • Erstens, der Mikrocontroller 100 wird eine Einschaltrücksetzung („POR“) 901 haben und wird prüfen, um zu sehen, ob besondere Programmierungen 902, 903 erforderlich sind, d.h., ob der SPE-Bit bestätigt wird. Wenn der SPE-Bit bestätigt wird, dann wird das Urladeprogramm eingesetzt (siehe Abschnitt J. Die Urladeprogrammfunktion und 9, Schritte 921 bis 932).
  • Wenn der SPE-Bit nicht bestätigt wird, dann wird als eine Voreinstellung das System an einer bestimmten Stelle, zum Beispiel 8000h, zurückgesetzt 904 und beginnt mit dem Laufen des ROM-Codes 906. Die ULDR- und UAPP-Register werden immer auf die letzte Seite des Flashspeichers 106 gesetzt. Für einen 64KB Flash mit der Seitengröße von 512 Bytes sind zum Beispiel ULDR und UAPP auf ihren Rücksetzwerten von 0080h. Für einen 128KB Flash mit der Seitengröße von 512 Bytes sind ULDR und UAPP auf ihren Rücksetzwerten von 0100h. Das PRIV-Register ist auf seinem Rücksetzwert auf HIGH. Der Speicherschutz ist aktiviert (MPE=1) 904.
  • Als nächstes vergleicht der ROM-Initialisierungscode das Systemkennwort 907 und deaktiviert MPE 910, wenn das Kennwort leer ist 908. Nachdem die ROM-Initialisierung vollständig ist, übergibt das ROM die Ausführung an den Systemcodespeicher in einer besonderen Adresse, wie zum Beispiel 0000h 911.
  • Als nächstes fängt der Systemcode mit dem Ausführen an und benutzt einen besonderen Datenzeiger, wie zum Beispiel 000Fh, um die Benutzerladeprogrammstartseitenadresse 913 zu lesen und sie in das ULDR-Register 915 zu schreiben. Nachdem die Systeminitialisierung vollständig ist, springt der Systemcode auf Adresse ULDR*Flashseitengröße + eine bestimmte Seitenadresse, wie zum Beispiel 0000h. Dieser Sprung senkt PRIV automatisch auf medium 916.
  • Der Benutzerladeprogrammcode beginnt mit dem Ausführen und benutzt den Datenzeiger von ULDR*Flashseitengröße + eine bestimmten Seitenadresse, wie zum Beispiel 0Fh, um die Benutzeranwendungsstartseitenadresse zu lesen und sie in das UAPP-Register 918 zu schreiben. Nachdem die Benutzerladeprogramminitialisierung vollständig ist, springt der Ladeprogrammcode auf Adresse UAPP*Flashseitengröße + eine bestimmte Seitenadresse, wie zum Beispiel 0000h. Dieser Sprung senkt PRIV automatisch auf LOW 919. Anschließend erfolgt die normale Codeausführung 920. Ein Fachmann wird beobachten, dass die zuvor genannten Schritte auf Anwendungen mit einer unterschiedlichen Anzahl an Berechtigungsebenen angepasst werden können.
  • K. Hardwarechiffreur
  • 7 veranschaulicht die hauptsächlichen funktionalen Blöcke des Hardwarechiffreurs 104 und seiner Schnittstellen mit dem Mikrocontroller 100 gemäß unterschiedlichen Ausführungsformen der Erfindung. In bestimmten Ausführungsformen bietet ein bidirektionaler Hardwarechiffreur zusätzlichen Schutz für Benutzerprogrammspeicher gegen Versuche, die digitalen Inhalte festzustellen. Der Chiffreur 104 wird lediglich für den Flashspeicher 106 in dieser besonderen Ausführung angewendet, aber wäre bei Bedarf für andere Speichertechnologien geeignet.
  • Der Chiffreur 104 ist mit der MMU 103 verbunden, wobei er die Systemadresse und Datenbusseschnittstellen zum Flashspeicher 106 abfängt. Der Chiffreur 104 wird durch die MMU 103 gesteuert, was besondere Flashsteuerungslogik und einen Zustandsautomaten umfasst, der automatisch ausgewählte Daten vom Flash zu lokalen Registern überträgt. In unterschiedlichen Ausführungsformen umfasst der Chiffreur fünf hauptsächliche funktionale Blöcke:
    1. 1. Die Hashfunktion 701 stellt eine lange pseudozufällige Sequenz bereit und erzeugt einen Hashdigest, der auf dem Chiffrierschlüssel basiert.
    2. 2. SRAM-Register 702 stellen einen Zwischenschlüsselstrom bereit, der auf zusätzlichen Manipulationen des Hashdigest beruht.
    3. 3. Der Chiffrierblock 703 stellt einen Bitstromerzeugen zum Chiffrieren von Reintextdaten und Dechiffrieren von Chiffriertextdaten bereit.
    4. 4. Der Adressbitmischer 705 verschlüsselt die physischen Flashspeicherplätze.
    5. 5. Der Prüfer 704 „prüft“ nach besonderen Datenmustern. Wenn diese Muster erkannt werden, werden besondere Handlungen vorgenommen.
  • In unterschiedlichen Ausführungsformen der Erfindung sind die funktionalen Operationen für den Benutzer erkennbar. Ausgenommen ist die Autoladefunktion, die während der Einschaltrücksetzung ausgelöst wird, andere Operationen erfolgen während der Laufzeit als Bestandteil der Pfadverzögerung im Abrufzyklus der CPU, einschließlich Speicherzugriff.
  • 1. Die Hashfunktion und die geheimen SCRAM-Register
  • In bestimmten Ausführungsformen wird die Hashfunktion 701 aktiviert, während das Zurücksetzen durch Einschaltrücksetzung ausgelöst wird. Die MMU 103 beinhaltet einen Zustandsautomaten, der automatisch den Chiffrierschlüssel aus dem Flashinformationsblock ausliest, der während des Durchführens der Systemrücksetzung im Flashspeicher 106 angeordnet ist. Der Hashblock 701 stellt eine lange binäre Sequenz bereit und erzeugt einen Digest. Der Digest wird in den SCRAM-Registern 702 gespeichert, die die Zwischenschlüsselsequenzen zum Chiffrierblock 703 bereitstellen.
  • Gemäß unterschiedlichen Ausführungsformen realisiert die Hashfunktion 701 einen der sicheren Hashalgorithmen (SHA), die 512-Bitblockgröße für den Chiffrierschlüssel unterstützen. Um die Größe des SCRAM-Registers 702 zu begrenzen, wird der Hashdigest in der aktuellen Ausführung vor dem Speichern in die SCRAM-Register 702 gekürzt. Wenn lediglich begrenzter geheimer Speicher verfügbar ist, kann die Hashfunktion 701 eine Identitätsfunktion sein, da die Größe der SCRAM-Register 701 und die Größe des gespeicherten Geheimnisses gleich sein kann. Die Stärke der SHA-Algorithmen beruht auf mehrfachen Durchgängen komplizierter Operationen. Die lange Verzögerung ist nicht kritisch, da die SCRAM-Register 702 lediglich für eine Einschaltrücksetzung aktualisiert werden müssen.
  • Da Daten, die im Informationsblock gespeichert werden, nicht chiffriert werden, können beliebige unbenutzte Speicherplätze mit Zufallsdaten programmiert werden. Zusätzlich können die Adressen des Informationsblocks verschlüsselt werden, was Versuche zum Offenlegen von Benutzergeheimnissen und Chiffrierschlüsseln schwieriger macht.
  • 2. Der Chiffrierblock
  • In bestimmten Ausführungsformen der Erfindung ist der Ciffrierblock 703 in Reihe mit dem Systemdatenbus zwischen der MMU 103 und dem Flash-Speicher 106 eingefügt. Der Systemadressbus ist ebenfalls mit dem Chiffrierblock 703 verbunden, welcher eine physische Adresse mit der Schlüsselsequenz zur Schlüsselstromerzeugung bereitstellt. Die physische Adresse kommt von verschiedenen Quellen, abhängig vom Operationsmodus, entweder ein Ladeprogrammmodus oder ein normaler Betriebsmodus.
  • Während des Ladeprogrammmodus wird die physische Adresse vom FDATA zur Speicherinitialisierung und systeminternen Programmierung auf den Flashspeicher 106 bezogen. In diesem Betriebsmodus werden die Speicherroutinen, die im Hilfs-ROM 105 angesiedelt sind, durch das Urladeprogramm oder das Hauptprogramm aufgerufen. Diese Speicherroutinen bearbeiten Benutzeridentifikation, Flashlöschen und Programmierungsprotokoll, Betriebssequenz und Taktung. Zugriffssteuerung wird durch Hardware und die Speichersegmentberechtigung durchgesetzt. Der Chiffrierblock 703 chiffriert Reintextcodes, die im Flashspeicher 106 gespeichert werden sollen.
  • Während des normalen Betriebsmodus kann die physische Adresse vom Anweisungszeiger (IP) oder Datenzeigern (CP, FP, DP0 oder DP1) bezogen werden. Im normalen Betrieb wird ein Anweisungscode als durch den IP adressiert vorabgerufen. Der Chiffrierblock dechiffriert den Chiffriertextcode zum Decoder zur CPU Ausführung. Wenn eine Leseoperation decodiert wird, wird die physische Adresse vom aktiven Datenzeiger abgerufen, um Flashdaten auszulesen. Der Chiffrierblock dechiffriert auch die Chiffriertextdaten zum Zielregister über das Übertragungsnetzwerk. Zugriffssteuerung wird durch Hardware und die Speichersegmentberechtigung durchgesetzt. Eine Schreiboperation wird durch einen Subroutinenaufruf zum Hilfs-ROM 105 erreicht, genau wie im Ladeprogrammmodus.
  • 8 zeigt ein Blockdiagramm 800, das die grundlegenden Funktionen und den Datenpfad des Chiffrierblocks gemäß unterschiedlichen Ausführungsformen der Erfindung veranschaulicht. Die SCRAM-Register 702 stellen zusammen mit den CONST-Registern 801 pseudozufällige Sequenzen zum Chiffrierblock 703 zur Subschlüsselerzeugung bereit. Die SCRAM-Register 702 beinhalten einen Hashdigest, wie zum Beispiel einen 61-Bit Hash, der durch die Hashfunktion 701 erzeugt wird. Die CONST-Register 801 sind, durch zufällig vorbestimmte Nummern, fest verdrahtet in den Chip. Diese Konstanten formen zusammen mit den pseudozufälligen Sequenzen von den SCRAM-Registern 702 effektiv eine lange pseudozufällige Sequenz und fügen Entropie zu den Schlüsselströmen ohne jegliche Hardwareaddierer hinzu. Das bedeutet, dass eine Hälfte der pseudozufälligen Sequenz in Chiplogik liegt und die andere Hälfte in nichtflüchtigem Speicher.
  • In bestimmten Ausführungsformen der Erfindung nimmt der Chiffrierblock 703 die physische Adresse des Zielanweisungworts und beginnt den Prozess, der zwei Bitströme verwendet, die durch den Subschlüsselerzeugungsblock 803 erzeugt werden. Diese Bitströme sind die Ergebnisse von zwei 64-Bitoperationen, die durch die Adressbits nach einer binären Summenoperation gesteuert werden.
  • Die binären Stammoperationen für Schlüssel- und Datenpermutationen sind wie folgt bestimmt:
    • XOR - bitweise exklusiv OR
    • ADD - Additionsmodulo 216
    • ROL - Rotier links des Worts
    • MOD - Achtbitmodulo
    • MUX - Multiplexer
  • Der Adresspermutationsblock 804 nimmt einen Subschlüssel und die physische Adresse auf. Das niedrigere Byte der Adresse wird zuerst durch das Achtbitmodulo („MOD“) verarbeitet, um eine Ausgabe für Additionsmodulo 216 („ADD“)- und Rotier-links („ROL“)-Operationen zu erzeugen. Das MOD ist im Wesentlichen eine Sequenz von Additionsoperationen mit einem Multiplexer für eine abschließende Ausgabeauswahl. Der resultierende Bitstrom wird für Adress- und Datentransformationen verwendet. Die physische Adresstransformation ist eine einfache binäre Summe des Bitstroms.
  • Die Datenpermutation ist eine Sequenz von Stammoperationen. Der Datenpermutationsblock 805 ist in 8 veranschaulicht. Ein Block von Multiplexern („MUX“) komprimiert den Subschlüssel, bereitgestellt vom Subschlüsselerzeuger, und den Bitstrom vom Adresspermutationsblock in einen einzigen Bitstrom. Die Bitanordnungen der Eingabe zum MUX werden neu geordnet und die Auswahl hängt vom binären Wert der Auswahlbits ab, bereitgestellt von den SCRAM-Registern 702. Dieser Bitstrom wird weiterhin verbreitert durch Additionsmodulo 216-Operationen mit dem transformierten Adressbitstrom. Nach einer ROL-Bitrotation wird der resultierende Bitstrom binär summiert mit Daten zum Chiffrieren oder Dechiffrieren gemäß einer benötigten Operation.
  • 3. Adressbitmischer
  • Der Adressbitmischer 705 ist in Reihe mit dem physischen Adressbus angeordnet, um Verwirrung der Speicherinhalte durch Ändern der Speicherplätze gemäß mehrerer Ausführungsformen der Erfindung hinzuzufügen.
  • Ein einfacher Adressbitmischer 705 ordnet neu und möglicherweise invertiert die Adressbits wenn er auf den Flashspeicher 106 zugreift. Der Adressbitmischer 705 kann statisch sein. Ohne Mischen würde der wohlbekannte Inbetriebnahmecode an der bekannten Stelle 0000h sein und Unterbrechungsvektorcode würde an bekannten Tabellenadressenstellen sein. Adressbitmischen kann lediglich innerhalb einer Flashseite geschehen, um eine anwendungsinterner Programmierung zu unterstützen. Das Adressbitmischen wird lediglich auf den Flashprogrammspeicher 106 angewendet. Wenn Adressbitmischen auf das Hilfs-ROM 105 ohne Codeverschlüsseln und mit Wissen des Hilfs-ROM-Inhalts angewendet würde, könnte das Mischschema des Flash bestimmt werden, wenn das gleiche Schema benutzt werden würde.
  • 4. Der Prüfer
  • Der Prüferblock 704 beinhaltet hauptsächlich Komparatoren, um besondere Datenmuster aufgrund der Merkmale des Flashspeichers 106 zu bearbeiten. Für bestimmte Ausführungsformen gibt es zwei besondere Fälle, wie nachstehend bemerkt.
  • Im ersten Fall versucht der Mikrocontroller 100 eine Flashwortadresse mit dem Muster FFFFh zu programmieren (oder unprogrammiert zu lassen). Mit dem aktivierten Chiffrieren können Flashspeicherzellen im Zielwort auf 0 programmiert werden, so dass benötigtes Löschen vor zusätzlicher Programmierung auf das Wort durchgeführt werden kann. Dies würde nicht für den Benutzer erkennbar sein, da der Benutzer erwarten würde, in der Lage zu sein, dass Wort, das absichtlich unprogrammiert gelassen wurde, programmieren zu können. Das FFFFh-Datenmuster sollte nicht durch den Chiffrierblock 703 chiffriert oder dechiffriert werden.
  • Es zu versuchen, ein Flashwort mit einem Muster zu programmieren, dies, wenn mit dem Schlüsselstrom chiffriert, würde zu in dem FFFFh-Muster führen. Da das FFFFh-Muster nicht dechiffriert wird, sollte keine chiffrierte Version des FFFFh-Musters im Flash gezeigt werden, da dies ein Dilemma im Bestimmen des beabsichtigten Musters im Flashspeicher 106 darstellen würde. Diese Muster sollten nicht vom Chiffrierblock 703 chiffriert oder dechiffriert werden.
  • Im zweiten Fall vergleicht die Prüferschaltung 704 die Eingabe- und Ausgabedaten des Chiffrierblocks 703 gegen das FFFFh-Bitmuster:
    • Für Schreiboperationen, wenn die Reintexteingabe FFFFh ist, umgeht FFFFh den Chiffrierblock und wird in den Flashspeicher 106 programmiert. Alternativ, wenn die Chiffrierblockausgabe FFFFh ist, werden die chiffrierten Daten verworfen. Die Reintextdaten umgehen den Chiffrierblock 703 und werden in den Flashspeicher 106 programmiert.
    • Für Befehlsabrufe und Leseoperationen, wenn die Flashausgabe FFFFh ist, umgeht FFFFh den Chiffrierblock 703 und wird zum Decoder oder zum Zielregister versendet. Alternativ, wenn die Chiffrierblockausgabe 703 FFFFh ist, werden die chiffrierten Daten verworfen. Die Flashspeicherausgabe 106 umgeht den Chiffrierblock 703 und wird an den Decoder oder das Zielregister versendet.
  • 5. Chiffrieroperation
  • 10 ist ein Flussdiagramm 1000, welches die Chiffrieroperationen für mehrere Ausführungsformen der Erfindung veranschaulicht. Einer POR 1001 folgend wird der Chiffrierschlüssel vom nichtflüchtigen Speicher 106 abgerufen 1002. Der Chiffrierschlüssel wird dann durch eine Hashoperation 1003 mit dem resultierenden Digest, welches im Schlüsselregister 1005 gespeichert wird, verarbeitet. Dieses Digest wird dann zusammen mit Eingaben des Hardwarechiffrierschlüssels 1005, einer Programmadresse 1006 von der MMU 103 und Eingabedaten 1007 an die Datenchiffrierung 1008 übergeben. Die Eingabedaten 1007 und die Ausgabe des Datenchiffrierens 1008 werden dann nach besonderen Mustern 1009, 1010, 1011, 1012 geprüft. Wenn besondere Muster entdeckt werden, werden Eingabedaten unter Umgehen der Chiffrieroperation verwendet. Andernfalls werden die chiffrierten Daten mit dem nichtflüchtigen Speicher 106 oder der MMU 103 verbunden. Siehe Schritte Ausgabedaten 1013, zu NVM für Speicheroperationen 1016, zu MMU für Ladeoperationen 1017. Gleichzeitig verschlüsselt der Adressmischer 1014 die Programmadressen.
  • Die vorhergehende Beschreibung der Erfindung wurde zum Zwecke der Klarheit und des Verständnisses dargelegt. Sie dient nicht dazu, die Erfindung auf diese offenbarte genaue Form einzuschränken. Unterschiedliche Modifikationen können innerhalb des Umfangs und der Entsprechung der angehängten Ansprüche möglich sein.
  • Claims (26)

    1. Sicherer Mikrocontroller (100) umfassend: einen Speicher, der Daten speichert; eine Prozessoreinheit, die eine Vielzahl an Befehlen erzeugt; eine Zugriffssteuerung (102), verbunden, um die Vielzahl an Befehlen zu empfangen, wobei die Zugriffssteuerung (102) eine Vielzahl an Berechtigungs-Registern aufweist, die Zugriffsrechte zu den innerhalb des Speichers gespeicherten Daten festlegen; ein erstes Berechtigungs-Register, innerhalb der Vielzahl an Berechtigungs-Registern, das einen ersten Satz an Zugriffsrechten zu einer ersten Menge von Daten innerhalb des Speichers festlegt; ein zweites Berechtigungs-Register, innerhalb der Vielzahl an Berechtigungs-Registern, das einen zweiten Satz an Zugriffsrechten zu einer zweiten Menge von Daten innerhalb des Speichers festlegt, wobei die zweite Menge anders als die erste Menge ist; und einen mit der Zugriffssteuerung (102) verbundenen Ausnahmeverwalter, der einen Zugriffsbefehl zu der ersten Menge an Daten in Reaktion darauf, dass der Zugriffsbefehl den ersten Satz an mit der ersten Menge an Daten verbundenen Zugriffsrechten nicht erfüllt, unterbricht; bei welchem die Zugriffsrechte eine Vielzahl von Benutzer-Berechtigungs-Ebenen für den sicheren Mikrocontroller (100) betreffen.
    2. Sicherer Mikrocontroller (100) nach Anspruch 1, bei welchem die Zugriffssteuerung (102) weiterhin umfasst: einen Adressüberwacher, der eine Speicheradresse eines ersten Befehls, innerhalb der Vielzahl an Befehlen, mit dem ersten Berechtigungs-Register verbindet; und einen Adressenvergleicher, der Zugriff zu der ersten Menge an Daten gewährt, basierend auf Zugriffsrechten, die innerhalb des ersten Berechtigungs-Registers festgelegt sind.
    3. Sicherer Mikrocontroller (100) nach Anspruch 2, weiterhin umfassend eine Speicherverwaltungseinheit (103), verbunden mit dem Speicher, der Prozessoreinheit (101) und der Zugriffssteuerung (102), und Bereitstellen einer Vielzahl an Ausgängen zum Speicher und der Zugriffssteuerung (102), wobei die Speicherverwaltungseinheit (103) Verwaltung der Datenübertragung zwischen dem Speicher, der Prozessoreinheit (101) und der Zugriffssteuerung (102) bereitstellt.
    4. Sicherer Mikrocontroller (100) nach Anspruch 3, bei dem der Speicher schreibgeschützten Speicher (105), nichtflüchtigen Speicher (106) und Datenspeicher (107) umfasst.
    5. Sicherer Mikrocontroller (100) nach Anspruch 4, bei dem der Datenspeicher (107) RAM-Speicher ist und bei dem nichtflüchtiger Speicher (106) Flash-Speicher ist.
    6. Sicherer Mikrocontroller (100) nach Anspruch 4, weiterhin umfassend einen Programmspeicher, welcher in dem schreibgeschützten Speicher (105) und dem nichtflüchtigen Speicher (106) liegt.
    7. Sicherer Mikrocontroller (100) nach Anspruch 6, bei dem der nichtflüchtige Speicher (106) weiterhin umfasst: eine Vielzahl an Speichersegmenten; jedes der Speichersegmente, innerhalb der Vielzahl an Speichersegmenten, entspricht einer bestimmten Berechtigungs-Ebene innerhalb der Vielzahl an Berechtigungs-Ebenen, so dass ein erster Benutzer einen ersten Anweisungscode in ein erstes Speichersegment lädt, welches einer ersten Berechtigungs-Ebene innerhalb einer Vielzahl an Berechtigungs-Ebenen entspricht, und so dass ein zweiter Benutzer einen zweiten Anweisungscode in ein zweites Speichersegment lädt, welches der zweiten Berechtigungs-Ebene innerhalb der Vielzahl an Berechtigungs-Ebenen entspricht; und bei dem Zugriffsrechte zu den ersten und zweiten Speichersegmenten durch die ersten und zweiten Berechtigungs-Ebenen festgelegt sind.
    8. Sicherer Mikrocontroller (100) nach Anspruch 7, bei dem der zweite Benutzer, verknüpft mit einer niedrigeren Berechtigungs-Ebene, am Zugreifen auf das erste Speichersegment, welches der ersten Berechtigungs-Ebene zugeordnet ist, gehindert wird.
    9. Sicherer Mikrocontroller (100) nach Anspruch 7, bei dem die erste Berechtigungs-Ebene innerhalb der Vielzahl an Berechtigungs-Ebenen basierend auf einem Betriebszustand der Zugriffssteuerung (102) bestimmt ist, wobei der, durch die erste Berechtigungs-Ebene für einen ersten, durch einen ersten Benutzer geladenen Anweisungscode gekennzeichnete Betriebszustand, festgelegt ist als ein kleinerer aus entweder einer maximalen Berechtigungs-Ebene des Speichersegments, in welchem der Anweisungscode ausgeführt wird, oder einem in dem ersten Berechtigungs-Register festgelegten Wert ist, .
    10. Sicherer Mikrocontroller (100) nach Anspruch 7, bei dem der schreibgeschützte Speicher (105) die erste Berechtigungs-Ebene hat, und der Datenspeicher (107) die zweite Berechtigungs-Ebene hat, wobei die erste Berechtigungs-Ebene höher als die zweite ist.
    11. Sicherer Mikrocontroller (100) nach Anspruch 7, bei dem ein Systemcode durch eine Sicherheitsprozedur vor Sicherheitsangriffen geschützt ist.
    12. Sicherer Mikrocontroller (100) nach Anspruch 11, bei dem die Sicherheitsprozedur die Schritte umfasst: Herabsetzen einer bestehenden Berechtigungs-Ebene bevor eine Anweisungscodeoperation verlassen wird, nachdem Unterbrechungs- und Bibliotheksfunktionen die aktuelle Berechtigungs-Ebene während der Codeoperation hochgesetzt haben; Sperren von Unterbrechungen für eine Dauer der Anweisungscodeoperation, in welcher der Anweisungscode die aktuelle Berechtigungs-Ebene hochsetzt, für Unterbrechungen, die die Berechtigungs-Ebene herabsetzen, oder für einen Unterbrechungscode, der außerhalb des Systemcode umfassenden Speichersegments läuft; und wobei der Systemcode daran gehindert wird, die aktuelle Berechtigungs-Ebene der Anweisungscodeoperation zu speichern und wiederherzustellen.
    13. Sicherer Mikrocontroller (100) nach Anspruch 11, bei dem die Sicherheitsprozedur den Schritt umfasst: Verhindern, dass eine Anweisungscodeoperation die bestehende Berechtigungs-Ebene mittels eines Subroutineaufrufs hochsetzt.
    14. Sicherer Mikrocontroller (100) nach Anspruch 11, bei dem die Sicherheitsprozedur den Schritt umfasst: Überprüfen von Argumenten einer Systembibliothek vor dem Hochsetzen einer bestehenden Berechtigungs-Ebene, wobei die Sicherheitsprozedur in einer atomaren Art unter Benutzung des zweiten Berechtigungs-Registers und eines dritten Berechtigungs-Registers durchgeführt wird.
    15. Sicherer Mikrocontroller (100) nach Anspruch 7, bei dem der nichtflüchtige Speicher (106) weiterhin einen Informationsblock umfasst, der benutzergeheime Daten und Chiffrierschlüsseldaten speichert; und bei dem eine Vielzahl an unbenutzten Speicherplätzen des Informationsblocks mit Zufallsdaten programmiert sind und eine Vielzahl an Adressen des Informationsblocks verschlüsselt sind.
    16. Mikrocontroller (100) nach Anspruch 15, bei dem der schreibgeschützte Speicher (105) ein Urladeprogramm beinhaltet, das eine höhere Berechtigungs-Ebene besitzt, und auf jedes der Speichersegmente zugreifen kann; und worin die benutzergeheimen Daten zum Herstellen einer authentifizierten Verbindung mit einem Fernsicherungsladeprogramm benutzt werden.
    17. Sicherer Mikrocontroller (100) nach Anspruch 15, weiterhin umfassend einen Hardwarechiffreur (104), welcher umfasst: einen Hashblock (701), welcher schnelles Komprimieren einer langen pseudozufälligen Sequenz eines Chiffrierschlüssels zur Schlüsselerzeugung bereitstellt; Register (702) für geheime Schlüsselspeicherung; einen Adressbitmischer (705), welcher verschlüsselte Speicherplätze bereitstellt; einen Chiffrierblock (703), welcher Chiffrieren und Dechiffrieren bereitstellt; und wobei kryptographische Operationen parallel mit einer Prozessoreinheitlaufzeit ausgeführt werden.
    18. Sicherer Mikrocontroller (100) nach Anspruch 17, bei dem der Hardwarechiffreur (104) weiterhin umfasst: einen Hashblock (701), verbunden, um Daten vom nichtflüchtigen Speicher (106) zu empfangen, der Hashblock (701) legt eine Datenauswahl basierend auf der pseudozufälligen Sequenz des Chiffrierschlüssels an; Verschlüsselregister (702), verbunden, um Daten vom Hashblock (701) zu empfangen, die Verschlüsselregister (702) erzeugen einen Schlüsselstrom, welcher sich aus weiterer Änderungen der Hashauswahl ergibt; einen Adressbitmischer (705), verbunden, um eine Speicheradresse und ein Steuersignal zu empfangen, der Adressbitmischer (705) verschlüsselt die Speicheradressplätze; einen Prüfer (704), verbunden mit dem Chiffrierblock (703) und der Speicherverwaltungeinheit (103) über einen bidirektionalen Datenbus, der Prüfer (704) stellt eine besondere Datenmusterverwaltung bereit; und der Chiffrierblock (703), verbunden, um vom verbundenen Verschlüsselregister (702) Daten zu empfangen; und verbunden mit der Speicherverwaltungseinheit (103), dem nichtflüchtigen Speicher (106) und dem Prüfer (704) über den bidirektionalen Datenbus, der Chiffrierblock (703) erzeugt einen Bitstrom an chiffrierten Reintextdaten und dechiffrierten Chiffriertextdaten.
    19. Sicherer Mikrocontroller (100) nach Anspruch 18, bei dem der Chiffrierblock (703) weiterhin umfasst: eine Vielzahl an Schnittstellen, an welchen pseudozufällige Sequenzen von den Verschlüsselregistern (702) und konstanten Registern (702) empfangen werden; ein Subschlüsselerzeugungsblock, verbunden, um Daten von mindestens einer physischen Adresse der Speicherverwaltungseinheit (103) zu empfangen, der Subschlüsselerzeugungsblock erzeugt einen Subschlüssel; ein Adresspermutationsblock, verbunden mit dem Subschlüsselerzeugungsblock und der Speicherverwaltungseinheit (103), der Adresspermutationsblock stellt einen Bitstrom zu einem Datenpermutationsblock bereit; der Datenpermutationsblock, verbunden mit den Verschlüsselregistern (702), dem Subschlüsselerzeugungsblock, dem Adresspermutationsblock und einem Dateneingang von der Speicherverwaltungseinheit (103), der Datenpermutationsblock erzeugt einen Chiffrier-/Dechiffrierbitstrom verbunden mit dem Prüfer (704) und der Speicherverwaltungseinheit (103); und wobei die konstanten Register (702) durch zufällig gewählte Nummern vorbestimmt sind, die im sicheren Mikrocontroller (100) fest verdrahtet sind.
    20. Sicherer Mikrocontroller (100) nach Anspruch 19, bei dem die physische Adresse entweder von einer externen Datenschnittstelle oder einem Anweisungszeiger oder einem Datenzeiger zur Speicherinitialisierung und In-System-Programmierung des nichtflüchtigen Speichers (106) bezogen wird.
    21. Sicherer Mikrocontroller (100) nach Anspruch 19, bei dem der Adresspermutationsblock einen Bitstrom erzeugt durch Durchführen der Schritte: Empfangen des Subschlüssels und der physischen Adresse; Verarbeiten eines geringeren Bytes der physischen Adresse durch eine Achtbitmodulo (MOD)- Operation, um einen ersten Bitstrom zu erzeugen; Verarbeiten des ersten Bitstroms durch eine Additionsmodulo 216 (ADD)- Operation, um einen zweiten Bitstrom zu erzeugen; Durchführen einer Rotierlinks (ROL)- Operation an dem zweiten Bitstrom, um einen Adresspermutationsbitstrom zu erzeugen; und wobei das MOD eine Sequenz von Additionsoperationen mit einem Multiplexer ist.
    22. Sicherer Mikrocontroller (100) nach Anspruch 19, bei dem der Datenpermutationsblock eine Ausgabe erzeugt durch Durchführen der Schritte: Komprimieren des Subschlüssels vom Subschlüsselerzeuger und des Bitstroms vom Adresspermutationsblock in einen ersten Bitstrom, welcher eine Vielzahl von Multiplexern verwendet; Verarbeiten des ersten Bitstroms durch eine Additionsmodulo 216-Operation mit einem umgewandelten Adressbitstrom, der einen zweiten Bitstrom erzeugt; Durchführen einer Rotierlinks (ROL)- Operation auf den zweiten Bitstrom, um den endgültigen Bitstrom zu erzeugen; Chiffrieren oder Dechiffrieren der Eingangsdaten, welche den endgültigen Bitstrom verwenden; und Verbinden des Chiffrier-/Dechiffrierbitstroms mit dem Chiffrierblock (703) und dem Prüfer (704).
    23. Sicherer Mikrocontroller (100) nach Anspruch 19, bei dem der Prüfer (704) Komparatoren umfasst, um besondere mit den Kennzeichen des nichtflüchtigen Speichers (106) zusammenhängende Datenmuster zu handhaben, und verhindert wird, dass das besondere Datenmuster durch den Chiffrierblock (703) chiffriert oder dechiffriert zu wird.
    24. Verfahren zur Sicherung von Inhalt innerhalb eines Mikrocontrollers (100), wobei das Verfahren die Schritte umfasst: Speichern eines ersten Satzes von Daten, empfangen von einem ersten Benutzer, innerhalb eines Speichers eines Mikrocontrollers (100); Verbinden eines ersten Satzes von Zugriffsrechten für die erste Gruppe von gespeicherten Daten; Verwalten des Zugriffs auf den ersten Satz von Zugriffsrechten, welcher Zugriffsberechtigungen auf den ersten Satz von gespeicherten Daten festlegt; und Verhindern von Zugriff auf den zweiten Satz von gespeicherten Daten, die zuvor in den Speicher (107) durch einen zweiten Benutzer geschrieben wurden, in Übereinstimmung mit einem zweiten Satz von Zugriffsrechten, der mit dem zweiten Satz gespeicherter Daten verknüpft ist, der zweite Satz von Zugriffsrechten legt Zugriffsberechtigungen zum zweiten Satz gespeicherter Daten fest.
    25. Verfahren nach Anspruch 24, weiterhin umfassend: Speichern des ersten Satzes von Daten, verbunden mit den ersten Zugriffsrechten, und des zweiten Satzes von Daten, verbunden mit den zweiten Zugriffsrechten, in verschiedenen Segmenten eines nichtflüchtigen Speichers (106); Regeln des Zugriffs zu den Speichersegmenten basierend auf den Zugriffsrechten eines Benutzers; wobei Zugriffsrechte durch mit einer Speicherverwaltungseinheit (103) und Programmroutinen, die in einem Hilfs-ROM (105) liegen, verbundene Hardware durchgesetzt werden.
    26. Sicherer Mikrocontroller (100) umfassend: einen Speicher, der Daten speichert; eine Prozessoreinheit, die eine Vielzahl an Befehlen erzeugt; eine Zugriffssteuerung (102), verbunden, um eine Vielzahl an Befehlen zu empfangen, wobei die Zugriffssteuerung (102) eine Vielzahl von Berechtigungs-Registern aufweist, die Zugriffsrechte zu den gespeicherten Daten innerhalb des Speichers festlegen; ein erstes Berechtigungs-Register, innerhalb der Vielzahl an Berechtigungs-Registern, das einen ersten Satz an Zugriffsrechten zu einer ersten Menge von Daten innerhalb des Speichers festlegt; ein zweites Berechtigungs-Register, innerhalb der Vielzahl an Berechtigungs-Registern, das einen zweiten Satz an Zugriffsrechten zu einer zweiten Menge von Daten innerhalb des Speichers festlegt, wobei die zweite Menge anders als die erste Menge ist; und einen Ausnahmeverwalter, verbunden mit der Zugriffssteuerung (102), der in Reaktion darauf, dass der Zugriffsbefehl den ersten Satz an mit der ersten Menge an Daten verbundenen Zugriffsrechten nicht erfüllt, unterbricht; und einen Hardwarechiffreur (104) umfassend: einen Hashblock (701), verbunden, um bidirektionale Daten vom Speicher und der Prozessoreinheit (101) zu empfangen, der Hashblock (701) stellt schnelle Komprimierung einer langen pseudozufälligen Sequenz eines Chiffrierschlüssels zur Schlüsselerzeugung bereit, ein Adressbitmischer (705), verbunden mit einer Speicherverwaltungseinheit (103) und dem Speicher, der Adressbitmischer (705) stellt verschlüsselte Speicherplätze bereit, ein Chiffrierblock (703), der Chiffrieren und Dechiffrieren bereitstellt und mit der Speicherverwaltungseinheit (103) und dem Speicher verbunden ist, wobei der Hardwarechiffreur (104) einen Chiffrierschlüssel vom Speicher empfängt.
    DE112009002502.1T 2008-10-23 2009-09-30 Multilayer inhalte-schützender Mikrocontoller Active DE112009002502B4 (de)

    Applications Claiming Priority (3)

    Application Number Priority Date Filing Date Title
    US12/257,339 US8555015B2 (en) 2008-10-23 2008-10-23 Multi-layer content protecting microcontroller
    US12/257,339 2008-10-23
    PCT/US2009/059130 WO2010047930A1 (en) 2008-10-23 2009-09-30 Multi-layer content protecting microcontroller

    Publications (2)

    Publication Number Publication Date
    DE112009002502T5 DE112009002502T5 (de) 2012-10-04
    DE112009002502B4 true DE112009002502B4 (de) 2024-07-25

    Family

    ID=41469877

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE112009002502.1T Active DE112009002502B4 (de) 2008-10-23 2009-09-30 Multilayer inhalte-schützender Mikrocontoller

    Country Status (5)

    Country Link
    US (2) US8555015B2 (de)
    CN (1) CN102197382B (de)
    DE (1) DE112009002502B4 (de)
    TW (1) TWI460604B (de)
    WO (1) WO2010047930A1 (de)

    Families Citing this family (46)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US8719589B2 (en) * 2010-05-25 2014-05-06 Via Technologies, Inc. Microprocessor that facilitates task switching between multiple encrypted programs having different associated decryption key values
    FR2976147B1 (fr) * 2011-05-30 2013-11-22 Maxim Integrated Products Schema d'entrelacement de donnees pour une memoire externe d'un microcontroleur securise
    US9262340B1 (en) * 2011-12-29 2016-02-16 Cypress Semiconductor Corporation Privileged mode methods and circuits for processor systems
    KR101975027B1 (ko) 2012-05-04 2019-05-03 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
    US9754133B2 (en) * 2013-03-14 2017-09-05 Microchip Technology Incorporated Programmable device personalization
    US9208105B2 (en) 2013-05-30 2015-12-08 Dell Products, Lp System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
    US9530000B2 (en) 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
    CN103413098B (zh) * 2013-08-01 2016-05-18 广州杰赛科技股份有限公司 硬件加密方法与系统及其装置
    FR3043229B1 (fr) * 2015-11-03 2018-03-30 Proton World International N.V. Demarrage securise d'un circuit electronique
    US10146681B2 (en) * 2015-12-24 2018-12-04 Intel Corporation Non-uniform memory access latency adaptations to achieve bandwidth quality of service
    US9990474B2 (en) * 2016-03-16 2018-06-05 Konica Minolta Laboratory U.S.A., Inc. Access control for selected document contents using document layers and access key sequence
    US11442760B2 (en) 2016-07-01 2022-09-13 Intel Corporation Aperture access processors, methods, systems, and instructions
    US10389693B2 (en) * 2016-08-23 2019-08-20 Hewlett Packard Enterprise Development Lp Keys for encrypted disk partitions
    US10379768B2 (en) * 2016-09-30 2019-08-13 Intel Corporation Selective memory mode authorization enforcement
    CN106919865B (zh) * 2017-03-02 2020-06-05 上海东软载波微电子有限公司 非易失性存储器数据加密系统
    FR3069935A1 (fr) * 2017-08-01 2019-02-08 Maxim Integrated Products, Inc. Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
    US10872043B2 (en) * 2017-08-17 2020-12-22 Microchip Technology Incorporated Systems and methods for integrity checking of code or data in a mixed security system while preserving confidentiality
    GB201721608D0 (en) 2017-12-21 2018-02-07 Nordic Semiconductor Asa A hardware cipher engine
    JP2019133345A (ja) * 2018-01-30 2019-08-08 東芝メモリ株式会社 データ蓄積装置、データ処理システムおよびデータ処理方法
    KR102510451B1 (ko) * 2018-05-09 2023-03-16 삼성전자주식회사 집적 회로 장치 및 집적 회로 장치의 동작 방법
    JP7109992B2 (ja) * 2018-05-22 2022-08-01 キオクシア株式会社 メモリシステムおよび制御方法
    US11113422B2 (en) 2018-08-03 2021-09-07 Micron Technology, Inc. Data protection in computer processors
    US11074198B2 (en) * 2018-09-18 2021-07-27 Micron Technology, Inc. Key management in computer processors
    CN111240581B (zh) * 2018-11-29 2023-08-08 北京地平线机器人技术研发有限公司 存储器访问控制方法、装置和电子设备
    TWI738135B (zh) * 2019-04-07 2021-09-01 新唐科技股份有限公司 監控系統開機之安全裝置及其方法
    KR102660388B1 (ko) * 2019-05-09 2024-04-26 에스케이하이닉스 주식회사 메모리 모듈, 메모리 모듈의 동작 방법, 메모리 시스템 및 메모리 모듈의 동작 방법
    EP3736716B1 (de) * 2019-05-10 2021-12-22 Aptiv Technologies Limited Verfahren zum schutz einer elektronischen steuerungseinheit
    CN110554298B (zh) * 2019-08-27 2022-03-22 江苏芯盛智能科技有限公司 芯片和芯片测试方法
    CN110990331B (zh) * 2019-12-03 2023-09-05 飞腾信息技术有限公司 片上系统密钥管理方法、装置、设备及可读存储介质
    US11227046B2 (en) 2019-12-24 2022-01-18 Stmicroelectronics International N.V. Dynamic randomization of password challenge
    US11281795B2 (en) * 2019-12-24 2022-03-22 Stmicroelectronics International N.V. Hierarchical random scrambling of secure data storage resulting in randomness across chips and on power on resets of individual chips
    FR3111441B1 (fr) 2020-06-10 2022-08-05 Proton World Int Nv Démarrage sécurisé d'un circuit électronique
    JP2022050899A (ja) * 2020-09-18 2022-03-31 キオクシア株式会社 メモリシステム
    US20220166762A1 (en) * 2020-11-25 2022-05-26 Microsoft Technology Licensing, Llc Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith
    DE102021102777A1 (de) * 2021-02-05 2022-08-11 Infineon Technologies Ag Verarbeitung von in einem speicher gespeicherter daten
    CN112885403B (zh) * 2021-02-08 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种Flash控制器的功能测试方法、装置及设备
    CN113420308A (zh) * 2021-07-01 2021-09-21 联芸科技(杭州)有限公司 用于加密存储器的数据访问控制方法及控制系统
    CN114580036A (zh) * 2022-03-17 2022-06-03 杭州士兰微电子股份有限公司 存储安全组件、片上系统、嵌入式系统及代码调用方法
    TWI805341B (zh) * 2022-04-27 2023-06-11 智原科技股份有限公司 系統單晶片架構及其資料保護方法
    CN119301575A (zh) * 2022-06-10 2025-01-10 株式会社自动网络技术研究所 车载装置、信息处理方法及信息处理程序
    TWI895618B (zh) * 2022-06-30 2025-09-01 新唐科技股份有限公司 密碼裝置及其密碼方法
    FR3142570B1 (fr) * 2022-11-25 2025-07-18 St Microelectronics Alps Sas Système sur puce comportant un système d’isolation des ressources et procédé de gestion de l’isolation des ressources correspondant.
    CN116720227A (zh) * 2023-01-16 2023-09-08 合肥沛睿微电子股份有限公司 用于存储器的数据加解密系统及数据加解密方法
    US12499280B2 (en) * 2023-05-01 2025-12-16 Mellanox Technologies, Ltd Integrated-circuit memory dump using hardware security mechanism
    CN116595594A (zh) * 2023-05-19 2023-08-15 无锡摩芯半导体有限公司 一种基于ucb的flash的安全控制方法
    TWI892327B (zh) * 2023-11-28 2025-08-01 瑞昱半導體股份有限公司 位址監視裝置及位址監視方法

    Citations (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US20030084308A1 (en) 2001-10-03 2003-05-01 Van Rijnswou Sander Matthijs Memory encryption
    US6845159B1 (en) 1998-10-07 2005-01-18 Protego Information Ab Processing method and apparatus for converting information from a first format into a second format
    US20070050580A1 (en) 2005-08-31 2007-03-01 Lewis Russell L Apparatus, system, and method for implementing protected virtual memory subcontexts

    Family Cites Families (23)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5504814A (en) * 1991-07-10 1996-04-02 Hughes Aircraft Company Efficient security kernel for the 80960 extended architecture
    US6003133A (en) * 1997-11-17 1999-12-14 Motorola, Inc. Data processor with a privileged state firewall and method therefore
    US7124170B1 (en) * 1999-08-20 2006-10-17 Intertrust Technologies Corp. Secure processing unit systems and methods
    US20010037450A1 (en) * 2000-03-02 2001-11-01 Metlitski Evgueny A. System and method for process protection
    US6792528B1 (en) * 2000-05-17 2004-09-14 Chien-Tzu Hou Method and apparatus for securing data contents of a non-volatile memory device
    US6952778B1 (en) * 2000-10-26 2005-10-04 Cypress Semiconductor Corporation Protecting access to microcontroller memory blocks
    US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
    DE10115118A1 (de) 2001-03-27 2002-10-10 Philips Corp Intellectual Pty Verfahren zur Übertragung von Daten über einen Datenbus
    US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
    US7231476B2 (en) * 2002-11-18 2007-06-12 Arm Limited Function control for a processor
    WO2004046916A2 (en) * 2002-11-18 2004-06-03 Arm Limited Exception types within a secure processing system
    FR2849233B1 (fr) 2002-12-24 2005-05-20 Trusted Logic Procede de securisation des systemes informatiques par confinement logiciel
    US7774619B2 (en) * 2004-11-17 2010-08-10 Broadcom Corporation Secure code execution using external memory
    US20060265544A1 (en) * 2005-05-17 2006-11-23 John Rudelic Internally authenticated flash remediation
    FR2888433A1 (fr) * 2005-07-05 2007-01-12 St Microelectronics Sa Protection d'une quantite numerique contenue dans un circuit integre comportant une interface jtag
    EP1742152B1 (de) 2005-07-07 2012-09-12 Texas Instruments Inc. Verfahren und System für eine mehrfach nutzbare Speicherzugangsbeschränkung
    US20070162964A1 (en) * 2006-01-12 2007-07-12 Wang Liang-Yun Embedded system insuring security and integrity, and method of increasing security thereof
    JP4795812B2 (ja) * 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
    JP2008027327A (ja) * 2006-07-25 2008-02-07 Sony Corp メモリアクセス制御装置および方法、並びに、通信装置
    JP4712017B2 (ja) * 2006-11-13 2011-06-29 韓國電子通信研究院 ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
    US8190885B2 (en) * 2006-12-21 2012-05-29 Spansion Llc Non-volatile memory sub-system integrated with security for storing near field transactions
    US8307416B2 (en) 2007-01-03 2012-11-06 Texas Instruments Incorporated Data structures for use in firewalls
    US8056143B2 (en) 2007-01-19 2011-11-08 Research In Motion Limited Selectively wiping a remote device

    Patent Citations (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US6845159B1 (en) 1998-10-07 2005-01-18 Protego Information Ab Processing method and apparatus for converting information from a first format into a second format
    US20030084308A1 (en) 2001-10-03 2003-05-01 Van Rijnswou Sander Matthijs Memory encryption
    US20070050580A1 (en) 2005-08-31 2007-03-01 Lewis Russell L Apparatus, system, and method for implementing protected virtual memory subcontexts

    Also Published As

    Publication number Publication date
    TW201030550A (en) 2010-08-16
    TWI460604B (zh) 2014-11-11
    DE112009002502T5 (de) 2012-10-04
    US9311255B2 (en) 2016-04-12
    US8555015B2 (en) 2013-10-08
    US20100106954A1 (en) 2010-04-29
    WO2010047930A1 (en) 2010-04-29
    US20140040584A1 (en) 2014-02-06
    CN102197382B (zh) 2016-01-13
    CN102197382A (zh) 2011-09-21

    Similar Documents

    Publication Publication Date Title
    DE112009002502B4 (de) Multilayer inhalte-schützender Mikrocontoller
    DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
    DE102008011925B4 (de) Sicheres Initialisieren von Computersystemen
    EP3259698B1 (de) Autonom bootendes system mit einem sicherheitsmodul
    DE19781829C2 (de) Verfahren und Vorrichtung zum Schützen eines Flash-Speichers
    DE10196006B4 (de) Erzeugen einer Schlüsselhierarchie zur Verwendung in einer isolierten Ausführungsumgebung
    DE112005003340B4 (de) Mechanismus zum Bestimmen der Vertrauenswürdigkeit von Außerbandverwaltungsagenten
    DE102008006759B4 (de) Prozessor-Anordnung und Verfahren zum Betreiben der Prozessor-Anordnung ohne Verringerung der Gesamtsicherheit
    DE19782169C2 (de) Kryptographisch geschütztes Seitenwechsel-Subsystem
    DE60302844T2 (de) Halbleitervorrichtung mit Verschlüsselung, Halbleitervorrichtung mit externer Schnittstelle, und Inhaltswiedergabeverfahren
    DE102018115491A1 (de) System, vorrichtung und verfahren zur seitengranularen, softwaregesteuerten speicherverschlüsselung mit mehreren schlüsseln
    DE102009013384B4 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
    DE102018115489A1 (de) Krypto-erzwungene rechte für isolation
    DE112010005842T5 (de) Verwürfeln einer Adresse und Verschlüsseln von Schreibdaten zum Speichern einer Speichervorrichtung
    DE112009005466T5 (de) Verfahren und Vorrichtung zum Bereitstellen einer sicheren Anwendungsausführung
    DE102013108394A1 (de) Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
    DE102020119389A1 (de) Vorrichtung und Verfahren zum sicheren Verwalten von Schlüsseln
    DE102013200161A1 (de) Datenverschlüsselung/-Komprimierung auf der Grundlage einer Speicheradressübersetzung
    DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
    DE102012200613A1 (de) System und Verfahren zur Unterstützung von JIT in einem sicheren System und zufällig zugewiesenen Speicherbereichen
    WO2011054639A1 (de) Kryptographisches Hardwaremodul bzw. Verfahren zur Aktualisierung eines kryptographischen Schlüssels
    DE102015113468A1 (de) Datenverarbeitungsvorrichtung und verfahren zum sichern einer datenverarbeitungsvorrichtung gegen angriffe
    DE102021110766B3 (de) Forensik-Modul und eingebettetes System
    DE102008050631A1 (de) Datenverarbeitungssystem
    DE112006004173T5 (de) Schutz eines programmierbaren Speichers gegen unberechtigte Veränderung

    Legal Events

    Date Code Title Description
    R082 Change of representative

    Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

    R082 Change of representative

    Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

    R081 Change of applicant/patentee

    Owner name: MAXIM INTEGRATED PRODUCTS, INC., SAN JOSE, US

    Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS, SUNNYVALE, CALIF., US

    Effective date: 20140508

    Owner name: MAXIM INTEGRATED PRODUCTS, INC., US

    Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS, SUNNYVALE, US

    Effective date: 20140508

    R082 Change of representative

    Representative=s name: PATENTANWAELTE CANZLER & BERGMEIER PARTNERSCHA, DE

    Effective date: 20140508

    Representative=s name: PATENTANWAELTE CANZLER & BERGMEIER PARTNERSCHA, DE

    Effective date: 20121116

    Representative=s name: PATENTANWAELTE CANZLER & BERGMEIER PARTNERSCHA, DE

    Effective date: 20121009

    Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

    Effective date: 20121116

    Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

    Effective date: 20121009

    Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

    Effective date: 20140508

    R012 Request for examination validly filed
    R016 Response to examination communication
    R130 Divisional application to

    Ref document number: 112009005596

    Country of ref document: DE

    R018 Grant decision by examination section/examining division
    R020 Patent grant now final