DE19635204A1 - Ausnahme-Sicherheitsschaltung - Google Patents

Ausnahme-Sicherheitsschaltung

Info

Publication number
DE19635204A1
DE19635204A1 DE19635204A DE19635204A DE19635204A1 DE 19635204 A1 DE19635204 A1 DE 19635204A1 DE 19635204 A DE19635204 A DE 19635204A DE 19635204 A DE19635204 A DE 19635204A DE 19635204 A1 DE19635204 A1 DE 19635204A1
Authority
DE
Germany
Prior art keywords
exception
circuit
processor
information
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.)
Ceased
Application number
DE19635204A
Other languages
English (en)
Inventor
James Scott Johnson
Tim Short
Gideon Intrater
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.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
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 National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19635204A1 publication Critical patent/DE19635204A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Description

Die Erfindung betrifft eine Ausnahme-Sicherheitsschaltung nach dem Oberbegriff des Anspruchs 1.
Sicherheitsfunktionen für Prozessoren sind im Stand der Tech­ nik bekannt.
Diese Sicherheitsfunktionen sind, falls sie vorgesehen sind, typischerweise in einem Prozessor fest verdrahtet. Einige Sicherheits­ funktionen können auch in einer Speicherverwaltungseinheit (MMU = Memory Management Unit) vorgesehen sein, doch versorgen konventionelle Prozes­ soren MMUs mit Betriebscodes oder anderen Signalen für eine bestimmte MMU.
Viele Prozessoren, insbesondere jene, die für die Verwendung bei eingebetteten Anwendungen wünschenswert sind, sind nicht konstru­ iert, um mehrere "Privileg-Niveaus" zu stützen. Dies mag daran liegen, daß die meisten eingebetteten Anwendungen keine Sicherheitsfunktionen benötigen. Einige eingebettete Anwendungen jedoch, wie die Verschlüsse­ lung, erfordern Sicherheitsfunktionen. Eine Möglichkeit, diese Sicher­ heitsfunktionen mit einem solchen Prozessor herzustellen, ist die voll­ ständige Neukonstruktion des Prozessors, um mehrere Privileg-Niveaus zu stützen. Dies würde jedoch die Zeit ausdehnen, um solche sicherheitsein­ gebetteten Anwendungen zu vermarkten.
Aufgabe der Erfindung ist es daher, eine Ausnahme-Sicherheits­ schaltung nach dem Oberbegriff des Anspruchs 1 zu schaffen, die es ermög­ licht, für einen Prozessor mittels einer Speicherverwaltungseinheit un­ terschiedliche Sicherheits- oder Privileg-Niveaus zur Verfügung zu stel­ len.
Diese Aufgabe wird durch die kennzeichnenden Merkmale des Pa­ tentanspruchs 1 gelöst.
Weitere Ausgestaltungen der Erfindung sind den Unteransprüchen und der nachfolgenden Beschreibung eines Ausführungsbeispiels zu entneh­ men, das schematisch in der Zeichnungsfigur dargestellt ist.
Die Zeichnung ist ein Blockdiagramm zur Darstellung einer Aus­ führungsform einer Speicherverwaltungseinheit (MMU) 200 und ihrer Wech­ selwirkung mit einem Prozessor 202, der keine festverdrahtete Niveau-Im­ plementierung besitzt.
Die Speicherverwaltungseinheit (MMU) 200 liefert die festver­ drahtete Sicherheitsstützung für einen Prozessor 202, der sonst keine Sicherheitsfunktionen hat.
Im weitesten Sinne liefert die MMU 200 eine Stützschaltung für den Prozessor 202 zum Simulieren einer Mehrzahl von Prozessorcode-Privi­ leg-Niveaus, wobei die Privileg-Niveaus hierarchisch angeordnet sind. Beispielsweise können zwei Niveaus von Prozessorcode-Privilegien simu­ liert werden, die hier als "Kernel" bzw. "Supervisor" bezeichnet werden, wobei "Kernel" höher als "Supervisor" ist. Eine Anzahl von Registern be­ stimmt die Betriebsweise der MMU 200.
Zunächst wird der Status eines laufenden Abarbeitungsprozesses in einem Privilegstatus-Register 204 gehalten. Auch ein programmierba­ rer Privilegschaltkreis 206 ist vorgesehen, um das Privileg-Niveau des Code (und/oder von Daten) in jedem einer Mehrzahl von Adreßblöcken zu definieren, welche von dem Prozessor 202 adressierbar sind; die Adreß­ blöcke sind in Fig. 1 mit 208a, 208b bzw. 208c markiert. Wo nur zwei Niveaus von Prozessorcode-Privilegien vorgesehen sind, kann ein Bit in dem programmierbaren Privilegschaltkreis 206 für jeden Adreßblock vorge­ sehen sein. Das gesetzte Bit indiziert, daß der entsprechende Adreßblock ein Privileg-Niveau hat, und das Löschen des Bits indiziert, daß der entsprechende Adreßblock das andere Privileg-Niveau hat. Bei einer ge­ genwärtig hergestellten MMU, die für die Verwendung mit einem Verschlüs­ selungsprozessor vorgesehen ist, werden drei Acht-Bit-Register für das Bezeichnen des Privileg-Niveaus verwendet, zugeordnet jedem von vierund­ zwanzig adressierbaren Blöcken.
Im Betrieb empfängt die MMU 200 eine virtuelle Adresse von dem Prozessor 202 über eine virtuelle Adreßleitung 210. Die virtuelle Adres­ se wird in dem Adreßumsetzschaltkreis 212 umgesetzt und als eine physi­ kalische Adresse auf eine physikalische Adreßleitung 214 gegeben. Die umgesetzte Adresse wird außerdem dem programmierbaren Privilegschalt­ kreis 206 zugeführt, der aus der von dem Adreßumsetzschaltkreis 212 ge­ lieferten physikalischen Adresse sowie dem laufenden Privilegstatus, der in dem Privilegstatus-Register gehalten wird, bestimmt, ob der von der physikalischen Adresse bezeichnete adressierbare Block tatsächlich über eine der Chip-Auswahl-Leitungen CS1, CS2 bzw. CS3 anzuwählen ist. Insbe­ sondere wählt der programmierbare Privilegschaltkreis 206 den adressier­ baren Block, angegeben durch die physikalische Adresse, nur dann an, wenn der laufende Privilegstatus gleich oder größer ist als das Privi­ leg-Niveau, das durch den programmierbaren Privilegschaltkreis 206 für den adressierten adressierbaren Block definiert ist.
Wenn beispielsweise, wie oben erwähnt, nur Kernel- und Super­ visor-Privileg-Niveaus simuliert werden und ein in der simulierten Su­ pervisor-Privileg-Domäne ablaufender Verarbeitungsprozeß (wie durch den laufenden Privilegstatus im Privilegstatus-Register 204 angezeigt) einen Versuch unternimmt, Zugriff auf einen adressierbaren Block zu nehmen, der als in der simulierten Kernel-Domäne befindlich definiert ist, ver­ hindert die MMU 200 den Zugriff, indem sie das Anwählen der Chip-Aus­ wahl-Leitung, welche dem adressierbaren Block zugeordnet ist, verwei­ gert. Vorzugsweise notifiziert die MMU 200 auch dem simulierten Kernel- Verarbeitungsvorgang über einen nicht-maskierbaren Interrupt (NMI), daß eine Domäne-Zugriffsverletzung aufgetreten ist.
Bezüglich der Interrupts ist ein signifikantes Merkmal der Privileg-Domänen-Simulation die geschützte Kopie 216 des Interrupt-Ba­ sis-Registers (INTBASE) 218 des Prozessors 202. Im Normalbetrieb des Prozessors 202 würde bei einer Unterbrechung (entweder durch einen In­ terrupt oder durch eine Ausnahme) der Prozessor 202 den INTBASE-Regi­ sterwert verwenden, um die Adresse einer Interrupt-Verteiltabelle (IDT) zu speichern, in der Adressen von Interrupt-Verarbeitungs-Routinen abge­ legt sind. Diese Adressen würden dann als "Vector" zu der entsprechenden Interrupt-Verarbeitungsroutine benutzt. Die MMU 200 liefert bei Erfas­ sung einer Ausnahme (beispielsweise über Prozessor-Statusleitungen, die von dem Prozessor 202 zu der MMU 200 führen) den Inhalt der geschützten Kopie von dem geschützten INTBASE-Register, um die oberen Bits (d. h. Bits 31 : 7) der IDT-Adresse zu überspielen, die von dem Prozessor 202 aus dem ungeschützten INTBASE-Register 218 geliefert worden ist. Auf diese Weise kann ein Angreifer nicht den Prozessor 202 programmieren, um un­ richtigerweise auf eine Interrupt-Routine zu gelangen. Das heißt, wäh­ rend ein Prozeß irgendeines Privileg-Niveaus das ungeschützte INTBASE- Register 218 ändern kann, kann der Inhalt der geschützten Kopie 216 nur durch einen Prozeß verändert werden, der ein simuliertes Kernel-Privi­ leg-Niveau hat.
Als ein zusätzliches Merkmal vergleicht die NMU 200 die oberen Bits der vom Prozessor bereitgestellten IDT-Adresse aus dem ungeschütz­ ten INTBASE-Register 218 mit dem Wert der geschützten Kopie 216, und zwar bei jedem Auftreten einer Ausnahme. Wenn diese Bits nicht ver­ gleichbar sind, setzt die MMU ein entsprechendes Status-Bit in einem MMU-Statusregister.
In einigen Ausführungsformen kann die MMU 200 Schaltkreise aufweisen, die es dem Prozessor 202 ermöglichen, den "geschützten Spei­ cher" für seinen Interrupt-Stapel auszunutzen. (Unter dem Begriff "ge­ schützter Speicher" wird ein Speicher verstanden, der sich in einem Adreßblock des Prozessors 202 befindet, der über die programmierbare Privileg-Niveau-Schaltung 206 als in einem adressierbaren Block befind­ lich definiert wurde, der ein simuliertes Privileg-Niveau aufweist, das höher ist als das simulierte Privileg-Niveau des gerade ablaufenden Ab­ arbeitungsprozesses.) In solchen Ausführungsformen ist die Interrupt- Verteiltabelle ein unveränderbarer Speicher, wie ein ROM. Außerdem muß zumindest ein Anfangsabschnitt jedes Interrupt-Kopfabschnitts, der die Gültigkeit des Interrupt-Stapelzeigers ISP überprüft (beispielsweise durch Vergleichen desselben mit einem Anfangswert oder durch Vergleichen desselben mit einem bekannten, gültigen Bereich) in einem unveränderba­ ren Speicher sein. Dies deshalb, um gegen einen Angreifer Schutz zu bie­ ten, der den Interrupt-Stapelzeiger (ISP) korrumpieren könnte, um auf den NMI-Eintrag in der IDT zu verweisen. Danach wird durch Bewirken eines NMI (beispielsweise durch den Versuch, in einen adressierbaren Block zu schreiben, der ein simuliertes Privileg-Niveau höher als das simulierte Privileg-Niveau des betreffenden Prozesses hat), die Rückkehradresse des angreifenden Prozesses für den NMI-Eintrag in dem IDT ersetzt (indem sie auf den Interrupt-Stapel geschoben wird), und der Prozessor 202 wird auf den angreifenden Prozeß verweisen anstatt auf den tatsächlichen NMI-Verarbeiter. Im einzelnen wird der Prozessor 202 auf den angreifenden Prozeß in einem simulierten Kernel-Modus verweisen, der dem angreifenden Prozeß ermöglichen würde, freien Zugriff auf geschützte Resourcen des Prozessors 202 zu bekommen. Aus diesem Grunde wird in einer bevorzugten Ausführungsform der Erfindung eine geschützte Kopie 218′ des Interrupt-Stapelzeigers in der MMU 200 in ganz ähnlicher Weise gehalten, wie eine geschützte Kopie 216 des INTBASE-Registers in der MMU 200 gehalten wird. Mit einer MMU, die eine geschützte Kopie 218′ des Interrupt-Stapelzeigers in der MMU 200 aufweist, gibt es keine Notwen­ digkeit, die Interrupt-Verteiltabelle als ROM beizubehalten, da es keine Möglichkeit gibt, den Interrupt-Stapelzeiger zu korrumpieren.
Das laufende simulierte Privileg-Niveau, gehalten im Privileg- Status-Register 204, kann nur über Software durch einen Prozeß geändert werden, der ein simuliertes Kernel-Niveau hat. Im einzelnen schiebt bei Erkennung einer Ausnahme des Prozessors 202 die MMU 200 die laufende Privileg-Niveau-Indikation auf einen Privileg-Niveau-Stapel, der Teil des programmierbaren Privileg-Schaltkreises 206 ist. Der Privileg-Ni­ veau-Stapel kann beispielsweise Speicherraum für acht solcher Privileg- Niveau-Indikationen haben. Nach Schieben der laufenden Privileg-Niveau- Indikation auf den Privileg-Niveau-Stapel setzt die MMU 200 die laufende Privileg-Niveau-Indikation in dem Privileg-Status-Register 204 auf Ker­ nel. Dann dekrementiert bei einem Ausnahmerücklauf die MMU 200 den Privileg-Niveau-Stapel, wodurch das laufende Privileg-Niveau auf seinen Zustand unmittelbar vor dem Auftreten der Ausnahme zurückgeführt wird.
Die Register der MMU 200 sind Teil des Adreßraums des Prozes­ sors 202 und werden demgemäß in derselben Weise geschützt wie andere Re­ sourcen in dem Adreßraum des Prozessors 202 (d. h. unter Verwendung des programmierbaren Privilegniveau-Schaltkreises 206). Die Register von MMU 200 werden durch Schaltungen geschützt, welche erfordern, daß allen Schreibvorgängen in irgendeinem Register von MMU 200 unmittelbar ein "Entriegelungs-Code" vorangeht, der in ein MMU-Entriegelungs-Register MM-UNLOCK eingeschrieben wird. Wenn der Entriegelungszugriff nicht aus­ geführt wird, wird der Schreibbefehl für das MMU-Register ignoriert. Vorzugsweise wird die Adressierung des MM-UNLOCK-Registers vollständig decodiert, wodurch die Möglichkeit unabsichtlicher Entriegelung des MMU- Registersatzes minimiert wird. Auch kann in einer bevorzugten Ausfüh­ rungsform ein bestimmter Entriegelungscode (beispielsweise ′6ah′) ir­ gendeine Anzahl von Malen vor dem Zugriff zu dem MMU-Register, auf das Zugriff genommen werden soll, geschrieben werden. Das heißt, bei Beendi­ gung irgendeines Schreibzyklus, ausgenommen in MM-UNLOCK, wird der Schreibzugriff auf die MMU verriegelt. Das MMU-UNLOCK-Register hat kei­ nen Einfluß auf Lesevorgänge.
In einer bestimmten Ausführungsform der Erfindung werden ande­ re Register von MMU 200 wie folgt definiert:
MM-STATUS (Status von MMU)
nur lesen (und löschen)
Anmerkung: Bits 4-1 werden gelöscht durch Schreiben einer "1" auf ein entsprechendes Setzbit. Schreiben von Bit 0 hat nie einen Ef­ fekt.
Bits 7-5: - Reserviert. Schreiben hat keine Wirkung, gelesen als 0.
Bit 4: - HWF - Hardware-Fehler. Wird gesetzt, wenn die MMU einen Fehlvergleich in der Redundanz-Überprüfungslogik erkennt. Dieses Bit muß gelöscht werden, um die Aktivierung des Interrupts erneut zu setzen.
Bit 3: - SOVF - Sicherheitsniveau-Stapelüberlauf. Wird ge­ setzt, wenn die Ausnahme-Stapeltiefe 8 übersteigt; dieses Bit muß ge­ löscht werden, um die Aktivierung des Interrupts erneut zu setzen. Das Schreiben einer eins in dieses Bit setzt den MM-Stapelzeiger auf den Leerzustand.
Bit 2: - IB-viol - INTBASE-Verletzung. Wird gesetzt, wenn die MMU erkennt, daß die vom VM32 bereitgestellte INTBASE während der Ausnahme-Handhabung abweicht von dem geschützten Wert, der im MM-INTBA- SE-Register gespeichert ist. Dieses Bit bewirkt nicht, daß das MM-int-p aktiviert wird. Alle Ausnahme-Handhaber sollten das MM-STATUS- und VM-INTBASE-Register bei der Eingabe lesen (Siehe Modell für Programmierer).
Bit 1: - Add-viol. Eine Verletzung der Adreß-Domäne. Wird gesetzt, wenn ein Zugriff auf einen geschützten Adreßblock von einem niedrigeren Sicherheitsniveau erfolgt. Dieses Bit muß gelöscht werden, um die Aktivierung des zugeordneten Interrupts wiederherzustellen.
Bit 0: - Modus. Laufendes Sicherheitsniveau; Schreiben hat keine Wirkung.
0: Kernel
1: Supervisor
Zusätzliche Bits können vorgesehen werden, wenn gewünscht wird, daß mehr als zwei mögliche Sicherheitsniveaus vorhanden sind.
MM-int-p-=Add-viol+SOVF+HWF.
MM_MODESWITCH (Umschalten des Sicherheitsmodus auf verworfene Werte) nur schreiben; die DATEN MÜSSEN ′B5h′ SEIN.
Dieses Register dient als eine Software-Indikation eines an­ hängigen nichtsequentiellen Befehls, der den Stapel auf einen neuen Sicherheitsmodus setzen soll oder den verhergehenden Sicherheitsmodus wieder herstellen soll, nachdem eine Ausnahme abgearbeitet worden ist. Die Erkennung der Ausführung des nichtsequentiellen Befehls bewirkt, daß der Sicherheitsmodus von dem Stapel entnommen und in den laufenden Mo­ dusindikator geladen wird, der sich in dem MM STATUS-Register befindet. Mehrere Befehle bewirken einen nichtsequentiellen Befehlsabruf: Bcond, BAL, BR, EXCP, Jcond, JAL, JUMP, RETX und LPR. Bcond oder Jcond bewirken einen nichtsequentiellen Befehlsabruf nur, wenn die Bedingung erfüllt ist.
Das Einschreiben in dieses Register bewirkt auch die Aktivie­ rung des Ausgangssignals mm_blkint. Dieses Signal zu der ICU blockiert die Aktivierung aller Interrupts zu dem VM32 einschließlich nichtmas­ kierbarer Interrupts. mm_blkint wird gelöscht, wenn die MMU den nicht­ sequentiellen Befehlsabruf erkennt. Es ist kritisch, daß das MM MODE- SWITCH-Register nur unmittelbar vor der Ausführung eines nichtsequen­ tiellen Befehls geschrieben wird, um die potentielle Interruptlatenz, hervorgerufen durch das Blocksignal, zu begrenzen.
MM STACK (Sicherheitsmodusstapel)
lesen/schreiben
Bits 7-1: - Reserviert.
Bit 0: - Modus - Sicherheitsmodus auf der Oberseite des Stapels. Liest unter Dekrementieren des Stapels und schreibt unter Inkrementieren des Stapels. VORSICHT: Lesen des Stapels, wenn dieser leer ist, bewirkt eine SOVF MMU-Ausnahme.
MM STACKPTR
lesen/schreiben
Lesen dieses Registers führt den laufenden Sicherheitsstapelzeiger zu­ rück. Schreiben dieses Registers modifiziert den laufenden Sicherheits­ stapelzeiger.
Bits 7-4: - Reserviert.
Bit 3: - Leer/Überlaufindikation. ′0′ indiziert, daß der Sicherheits­ stapel gültige Daten enthält. ′1′ und Zeiger[2 : 0] =′111′ indizieren, daß der Stapel leer ist. ′1′ und Zeiger[2:0]=′000′ indizieren, daß der Stapel in einem Überlaufzustand ist.
Bits 2-0: - Ptr[2 : 0] - Stapelzeiger
Anmerkungen:
  • 1. Fortgesetztes Aufschieben auf den Stapel aus irgendeinem Grund, nach­ dem ein Überlaufzustand eingetreten ist, inkrementiert nicht den Zeiger­ wert; der Zeiger bleibt ′000′.
  • 2. Das Fortsetzen des Dekrementierens eines leeren Stapels dekrementiert nicht den Zeigerwert. Der Zeiger bleibt ′111′.
  • 3. Die Daten, dekrementiert aus einem leeren oder übergelaufenen Sicherheitsstapel, sind immer ′1′, was den Supervisormodus bedeutet.
  • 4. Löschen des SOVF-Bits im MM STATUS setzt das MM_STACKPTR-Register zurück in den leeren Zustand.
  • 5. Lesen eines übergelaufenen Stapels dekrementiert den Stapelzeiger und löscht das SOVF-Bit im MM STATUS.
MM INTBASE (Geschützte Interruptbasisadresse)
Adresse 200h; lesen/schreiben.
Die geschützte Interruptbasisadresse dupliziert die Funktion des VM32A INTBASE-Registers, tut dies jedoch in einer geschützten Art. Der Sicherheitsmechanismus erfordert, daß die niedrigstelligen 7 Bits von VM32A INTBASE ′0′ sind, während die oberen 25 Bits auf einem konstanten Wert gehalten werden. Bei jedem Zugriff auf die IDT werden die oberen 25 Bits des Adressbusses von der MMU aufgegriffen und von MM INTBASE[31 : 7] zugeführt. Die unteren 7 Bits laufen von der VM32A-Adresse durch. Wenn die oberen 25 Bits der Adresse, zugeführt während eines IDT-Zugriffs, sich von dem Wert des MM INTBASE[31 : 7] unterscheiden, wird das ′IB viol′-Bit in dem MM STATUS-Register gesetzt.
Die Adressberechnung für die IDT-Eingabe ist INTBASE + (Vektor * 4). Der Vektor ist beschränkt auf den Bereich 0h → 17h durch die Interruptsteuereinheit. Dieser Vektorbereich stützt alle Fallen, den NMI und acht maskierbare Interrupts.
Es ist festzuhalten, daß es für irgendeine Software möglich ist, das VM INTBASE-Register zu modifizieren. Wenn die Software die niedrigstelligen 7 Bits auf einen von null verschiedenen Wert setzt, wird VM32A eine unkorrekte Eingabe von der Verteiltabelle im Speicher abrufen. Dies tritt ein, weil der VM32A die IDT-Eingabe als VM32A INTBASE + (Vektor 4) berechnet. Die MMU überläuft dann NUR die oberen 25 Bits der IDT-Adresse mit ihrem MM INTBASE-Wert. Da die niedrigstelligen 7 Bits nicht auf einen Nullwert bezogen sind, wird die falsche IDT-Ein­ gabe abgerufen. Deshalb müssen die Verteiltabellen mit 32 gültigen Ein­ gaben definiert werden. Jede Ausnahme-Handhabungsroutine muß die unteren 7 Bits des VM32A INTBASE-Registers auf Nullen überprüfen um sicherzu­ stellen, daß der korrekte IDT-Eintrag abgerufen worden ist.
Sicherheitsschutzregister
Ein Registerbit ist für jeden Block von adressierbarem Pro­ zessorspeicherraum vorgesehen. Vorzugsweise ist auch eine redundante Kopie des Sicherheitsschutzregisters vorgesehen, die mittels eingebauter Prüf-Software verwendet werden kann, um die Korrektheit der Schutzlogik zu verifizieren.
In einer bestimmten Ausführungsform werden drei Sicherheits­ schutzregister (MM PROTECT0, MM PROTECT1 und MM PROTECT2) verwendet. Für diese Ausführungsform definiert die folgende Tabelle die Speicherblock/ Registerbit-Umsetzung:
Zusätzliche Register
MM VIOLADD (Verletzung der Adresse) hält die Adresse, ausge­ geben während eines Buszyklus, der einen Speicherdomänen-Verletzungs­ interrupt bewirkte.
MM VIOLDAT (Verletzung der Daten) hält die Daten, zugeführt für einen Schreibbefehl, welcher den Speicherdomänen-Verletzungsinter­ rupt bewirkte.
MM VIOLACT (Verletzung der Aktion) indiziert die Anzahl von Kernbus-Byteentsperrungen für die Aktion, welche den Speicherdomänen- Verletzungsinterrupt bewirkte, indiziert, ob die Aktion ein Lese- oder ein Schreibvorgang war, und indiziert den laufenden Sicherheitsmodus zum Zeitpunkt der Speicherdomänenverletzung.
MM MADR liefert Speicherblockadressen (d. h. den oberen Ab­ schnitt der Speicheradresse) während Bushauptzyklen. Die unteren Bits der Adresse werden von dem Hauptbus bereitgestellt.
Ein Modell für Programmierer folgt nun, mit dem die Merkmale der oben beschriebenen Ausführungsform der MMU 200 programmiert werden können:
Um die MMU-Register zu beschreiben, sollten die folgenden Schritte ausgeführt werden:
  • 1. Sperre maskierbare Interrupts.
  • 2. Schreibe 6Ah in MM UNLOCK
  • 3. Schreibe gewünschte Daten in Register.
  • 2a. Schreibzugriffe verriegeln automatisch bei Beendigung der Last.
  • 4. Wiederhole 2 bis 3 für zusätzliche Registerschreibvor­ gänge.
  • 5. Entsperre maskierbare Interrupts.
Zum Setzen des Schutzniveaus für Speicherblöcke sollten die folgenden Schritte ausgeführt werden:
  • 1. Lese aus einem simulierten Kernel-Niveau-Prozeß MM PROTECT.
  • 2. Modifiziere gewünschte Blockschutzniveaus.
  • 3. Sperre maskierbare Interrupts.
  • 4. Schreibe 6Ah in MM UNLOCK.
  • 5. Schreibe modifiziertes Schutzbyte in MM PROTECT.
  • 6. Entsperre maskierbare Interrupts.
Zum Setzen der geschützten INTBASE-Register sollten die fol­ genden Schritte ausgeführt werden:
  • 1. Sperre alle Interrupts.
  • 2. Schreibe das INTBASE-Register in den Prozessor 202. Die niedrigststelligen 7 Bits müssen Nullen sein.
  • 3. Schreibe 6Ah in MM UNLOCK.
  • 4. Schreibe INTBASE in MM INTBASE.
  • 5. Entsperre alle Interrupts.
Um auf Domänenverletzungen zu reagieren, sollten die folgenden Schritte ausgeführt werden:
  • 1. Inspiziere die sieben niedrigststelligen Bits des Prozes­ sor-INTBASE-Registers. Wenn diese Bits nicht alle null sind, ist eine unkorrekte Ausnahmeroutine abgerufen wor­ den. Dies sollte entsprechend den Software-Vorschriften gehandhabt werden.
  • 2. Inspiziere den Interruptstapelzeiger (ISP). Wenn dieser unkorrekt ist, sollte er eingestellt werden entsprechend den Software-Vorschriften.
  • 3. Falls erwünscht, inspiziere das MM STATUS-Register für "IB viol", um IDT-Adressfehlanpassungen zu erkennen. Wenn es eine Fehlanpassung gibt, reagiere entsprechend den Software-Vorschriften.
  • 4. Frage die Interruptsteuereinheit (ICU) ab, um die Ursache für den nichtmaskierbaren Interrupt zu bestimmen. Wenn es eine MMU-Domänenverletzung gibt, fahre hier fort.
Anmerkung: Das laufende Sicherheitsniveau (MM STATUS[0]) wird von der MMU 200 auf den simulierten Kernel-Modus (0) bei Er­ kennung der Ausnahme, die den nichtmaskierbaren Interrupt her­ vorgerufen hat, gesetzt.
  • 5. Lies MM STATUS, um zu bestimmen, welche Art von Fehler aufgetreten ist.
  • 6. Wenn ′ADD viol′ gesetzt ist, lies MM VIOLADD, MM VIOLDAT und MM VIOLACT.
  • 6a. Schreibe 6Ah in MM UNLOCK.
  • 6b. Schreibe eine 1 in das Add viol-bit des MM STATUS-Regi­ sters. Dies "leert" den MMU-Sicherheitsniveaustapel.
  • 6c. Handhabe gemäß Software-Anweisungen.
Wichtige Anmerkung: Alle Allgemeinzwecken dienenden Prozessor­ register und irgendwelche anderen Geräte, die zu einem direk­ ten Speicherzugriff fähig sind, müssen zu diesem Zeitpunkt aus Sicherheitsgründen gelöscht sein. Während die MMU 200 tatsäch­ lich den Zugriff auf die beabsichtigte Zieladresse während ei­ ner Adressenverletzung blockiert, hält die MMU nicht den Pro­ zessor (oder ein Gerät mit direktem Speicherzugriff) vom Lesen des Datenbusses ab. Demgemäß wäre die Information auf den Hal­ tern des Datenbusses für angreifende Software verfügbar, wenn nicht alle Allgemeinzweck-Prozessorregister und alle Geräte mit direktem Speicherzugriff gelöscht sind.
  • 6d. Schreibe 6Ah in MM UNLOCK
  • 6e. Schreibe BAh in MM MODESWITCH, gefolgt von dem RETX-Be­ fehl, um zurückzukehren, falls der eingreifenden Software wieder die Steuerung erlaubt werden soll.
  • 7. Wenn ′SOVF′ gesetzt ist, ist das Sicherheitsniveau der Software, welche die Ausnahme erzeugte, verlorengegangen.
    Entweder erlaubt man der MMU 200, bei Rückkehr zum Super­ visorniveau den Fehler zu beheben, oder man setzt den Si­ cherheitsniveaustapel und das System zurück. Zum Rück­ setzen des Sicherheitsniveaustapels:
  • 7a. Schreibe 6Ah in MM UNLOCK.
  • 7b. Schreibe eine in das SOVF-Bit des MM STATUS-Registers zum Löschen der NMI-Quelle.
  • 7c. Justiere den Stapel entsprechend Software-Vorgaben.
  • 7d. Schreibe 6Ah in MM UNLOCK.
  • 7d. Schreibe 6Ah in MM UNLOCK.
  • 7e. Schreibe B5h in MM MODESWITCH, gefolgt von dem RETX Be­ fehl für das Zurückkehren, wenn die eingreifende Software wieder die Steuerung übernehmen darf.
Anmerkung zu SOVF: Da irgendeine Ausnahmebedingung dies her­ vorrufen könnte, ist es nicht empfehlenswert, der MMU zu er­ möglichen, diesen Fehler auf Supervisorniveau zu beheben, da die Rückkehr zu einem unterbrochenen Ausnahmehandhaber in ei­ nem simulierten Kernel-Prozeßgeschützten Speicher führen kann, womit eine "Add viol"-Ausnahme erzeugt würde.
Um vom Kernel-Sicherheitsniveau zum Supervisor-Sicherheitsni­ veau zu wechseln, sollten die folgenden Schritte ausgeführt werden:
  • 1. Sperre maskierbare Interrupts.
  • 2. Schreibe 6Ah in MM UNLOCK.
  • 3. Schiebe das Supervisor-Sicherheitsniveau auf den Sicher­ heitsniveaustapel durch Beschreiben desselben mit MM STACK.
  • 4. Schreibe 6Ah in MM UNLOCK.
  • 5. Schreibe B5h in MM MODESWITCH.
  • 6. Rufe die Stelle des Supervisor-Sicherheitsniveaucodes auf oder springe dorthin. Das Supervisor-Sicherheitsniveau wird vom Sicherheitsstapel abgezogen und ist nun in Kraft.
  • 7. Entsperre maskierbare Interrupts.
Um vom Supervisor-Sicherheitsniveau zum Kernel-Niveau zu wech­ seln, sollten die folgenden Schritte ausgeführt werden:
ANMERKUNG: Die einzige Möglichkeit, um das laufende Sicher­ heitsniveau anzuheben, besteht darin, eine Prozessor-202-Aus­ nahme zu bewirken.
Typischerweise erfolgt dies durch einen "Fallenbefehl". Dieses Niveau wird automatisch auf den Kernel-Modus gehoben.
  • 1. Setze die Allgemeinzweckregister mit SVC-Aufrufparametern.
  • 2. Der SVC-Prozessor erzeugt eine SVC-Fallenausnahme. Die MMU 200 schaltet auf Kernel-Sicherheitsniveau. Die MMU zwingt die geschützte IDT-Adresse auf den Adressbus.
  • 3. Der Kernel-SVC-Handhaber inspiziert die unteren 7 Bits des Prozessor-INTBASE-Registers bezüglich Nullen um sicherzu­ stellen, daß R in angemessener Weise aufgerufen wurde.
  • 4. Der Kernel-SVC-Handhaber inspiziert ISP und, falls inkor­ rekt, justiert er entsprechend den Software-Vorschriften.
  • 5. Falls erwünscht, inspiziere MM STATUS hinsichtlich "IB viol" zum Erkennen von IDT-Adressfehlanpassungen und rea­ giere entsprechend den Software-Vorschriften.
  • 6. Der simulierte Kernel-Niveau-Prozeß führt nun die gewünsch­ te Funktion für den Supervisor-Modus aus, falls die Softwa­ re dies zuläßt.
  • 7. Der Kernel schreibt die Resultate in ein oder mehrere All­ gemeinzweckregister und den Supervisorspeicher, falls er­ forderlich.
  • 8. Schreibe 6Ah in MM UNLOCK.
  • 9. Schreibe BSh in MM MODESWITCH, gefolgt von dem RETX-Befehl für das Rückkehren von der SVC-Falle. Das Supervisor Si­ cherheitsniveau wird aus dem Sicherheitsniveaustapel abge­ worfen und ist wiederum in Kraft.
Zum Rücksetzen des MMU-Status sollten die folgenden Schritte ausgeführt werden:
ANMERKUNG: Wie in den Registerdefinitionen dargelegt, beginnt die MMU in Kernel-Modus mit allen adressierbaren Inhalten geschützt zu arbeiten.
In einem bestimmten Anwendungsfall können die Kernel- und Su­ pervisor-Domänen derart definiert werden, daß die Code-Abarbeitung aus irgendeinem auf dem Chip befindlichen Speicher definiert wird, in der simulierte Kernel-Exekutions-Domäne zu sein. Der Prozeß in dieser simu­ lierten Domäne kann Lese- oder Schreibzugriff auf alle Register des Pro­ zessors 202, alle speichergruppierten Peripherien, die sich auf dem Chip und außerhalb des Chipspeichers befinden und alle auf und außer dem Chip befindlichen Speicherstellen in dem Prozessoradreßraum nehmen. Im Gegen­ satz dazu wird die Code-Exekution aus irgendeinem außerhalb des Chips befindlichen Speicher definiert in der simulierten SupervisorExekutions­ domäne zu liegen. Die simulierte Supervisor-Domäne stützt den Lese- Schreibzugriff auf alle Register des Prozessors 202, auf alle speicher­ gruppierten Peripherien, die sich außerhalb des Chipspeichers befinden, und auf alle außerhalb des Chips befindlichen Speicherstellen in dem Prozessor-Adreßraum. Jede simulierte Exekutionsdomäne hat ihren eigenen zugeordneten Stapel, der sich innerhalb ihres eigenen geschützten Spei­ cherraumes befindet.
Ein Prozeß in einer Exekutions-Domäne kann auf Dienstleistun­ gen oder Daten in einer anderen Exekutions-Domäne nur über einen be­ stimmten Eingabepunkt zugreifen, der als ein Gatter bezeichnet wird. Die Vektoren in der Interrupt-Verteiltabelle (IDT) in dem Prozessor 202 de­ finieren diese Gatter. Alle Fallen und Interrupts gelangen durch separa­ te Kernel-Domänen-Service-Routinen.
Beispielsweise kann die Prozessor-Software einen Supervisor- Aufruf-Fallen-Befehl verwenden (EXCP SVC) als Gatter, durch welches der Supervisor-Domänen-Code auf Kernel-Domänen-Prozessor oder Daten zu­ greift. Die SVC-Ausnahme-Verarbeitungs-Routine wird dann einen angefor­ derten Befehl ausführen und einen Status-Code rückführen. In einer Aus­ führungsform lädt beispielsweise die Supervisor-Domänen-Software spezi­ fizierte Prozessor-Register mit einem Befehls-Code und anderen Parame­ tern für den angeforderten Service, bevor der Supervisor-Aufrufbefehl erfolgt. Die SVC-Ausnahme-Service-Routine verifiziert dann den Befehls- Code und Parameter, eingegeben in die Register und Zweige zu der ange­ forderten Befehls-Service-Routine (beispielsweise VERSCHLÜSSELN). Wenn die Befehls-Service-Routine die angeforderte Operation abgeschlossen hat, kehrt die Ausfürungssteuerung zu der SVC-Ausnahme-Service-Routine zurück. Die SVC-Ausnahme-Service-Routine lädt dann ein Prozessor-Regi­ ster mit einem Befehls-Status-Code, justiert den PC, den man auf dem In­ terrupt-Stapel findet (PC + 4), führt einen Schreibvorgang zum Register MM MODESWITCH der MMU 200 aus und kehrt über einen RETX-Befehl zu der externen Software zurück.

Claims (9)

1. Ausnahme-Sicherheitsschaltung für einen ausnahmebefähigten Prozessor (202), bei der der Prozessor (202) in einem ungesicherten Mo­ dus auf eine Ausnahme durch Entnehmen ungeschützter Ausnahmeinformation aus einer generell zugänglichen Ausnahmeinformation-Registerschaltung und Abarbeiten einer Ausnahmeroutine entsprechend der ungeschützten Aus­ nahmeinformation reagiert, gekennzeichnet durch eine Registerschaltung für gesicherte Ausnahmeinformation, die eine geschützte Kopie (216) der Ausnahmeinformation hält, und durch eine Ausnahme-Erkennungsschaltung, die beim Erkennen einer Ausnahme die Registerschaltung für gesicherte Ausnahmeinformation dazu bringt, dem Prozessor (202) die geschützte Ko­ pie der gesicherten Ausnahmeinformation anstelle der ungeschützten Aus­ nahmeinformation bereitzustellen, die sonst dem Prozessor (202) von der generell zugänglichen Ausnahmeinformation-Registerschaltung bereitge­ stellt würde, so daß der Prozessor (202) eine Ausnahmeroutine entspre­ chend der geschützten Kopie (216) der Ausnahmeinformation abarbeitet.
2. Schaltung nach Anspruch 1, gekennzeichnet durch eine auf die Ausnahme-Erkennungsschaltung reagierende Vergleichsschaltung, die die geschützte Kopie (216) der Ausnahmeinformation mit der in der allgemein zugänglichen Ausnahmeinformation-Registerschaltung gehaltenen Ausnah­ meinformation vergleicht und einen Fehlvergleich derselben indiziert.
3. Schaltung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Ausnahmeinformation eine Adresse einer Ausnahmeverteiltabelle ist, welche eine Adresse der Ausnahmeverarbeitungsroutine enthält.
4. Schaltung nach einem der Ansprüche 1 bis 3, dadurch gekenn­ zeichnet, daß die Ausnahmeinformation eine Adresse eines Ausnahmestapels ist, auf den ein laufender Prozessorstatus bei Auftreten einer Prozes­ sorausnahme geschoben wird.
5. Schaltung nach einem der Ansprüche 1 bis 4, gekennzeichnet durch eine Schaltung für das Halten einer laufenden Sicherheitsmodus-In­ dikation, durch eine Stapelschaltung für das Halten einer Mehrzahl von Sicherheitsniveau-Indikationen, und durch eine Ausnahmestart-Erkennungs­ schaltung, die auf das Erkennen einer Ausnahme mit dem Verschieben der laufenden Sicherheitsmodusindikation auf die Stapelschaltung und dem Setzen der laufenden Sicherheitsniveau-Indikation auf ein vorbestimmtes Niveau reagiert.
6. Schaltung nach einem der Ansprüche 1 bis 5, gekennzeichnet durch eine Ausnahmeende-Erkennungsschaltung, die auf das Erkennen des Endes einer Ausnahmeverarbeitung mit Verschieben der laufenden Sicher­ heitsniveau-Indikation von der Stapelschaltung in die Schaltung für das Halten der laufenden Sicherheitsmodus-Indikation reagiert.
7. Schaltung nach einem der Ansprüche 1 bis 6, dadurch gekenn­ zeichnet, daß die Ausnahmeende-Erkennungsschaltung das Ende der Ausnah­ meverarbeitung anhand eines nicht-sequentiellen Befehlsabrufs des Pro­ zessors erkennt.
8. Schaltung nach einem der Ansprüche 1 bis 7, gekennzeichnet durch eine jedem aus einer Mehrzahl von prozessoradressierbaren Spei­ cherblöcken (208a, 208b, 208c) für das Halten einer entsprechenden Pri­ vileg-Indikation zugeordnete programmierbare Schaltung (206) und durch eine Zugriffvalidierungsschaltung (204), die bestimmt, welcher der Spei­ cherblöcke (208a, 208b, 208c) von dem Prozessor (202) adressiert wird, und die laufende Privileg-Indikation mit der dem adressierten Speicher­ block (208a, 208b, 208c) zugeordneten Privileg-Zugriffsindikation ver­ gleicht.
9. Schaltung nach einem der Ansprüche 1 bis 8, dadurch gekenn­ zeichnet, daß die Zugriffvalidierungsschaltung Verletzungs-Indikations­ mittel umfaßt, die ein Vergleichsergebnis indizieren.
DE19635204A 1995-09-01 1996-08-30 Ausnahme-Sicherheitsschaltung Ceased DE19635204A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/523,052 US5684948A (en) 1995-09-01 1995-09-01 Memory management circuit which provides simulated privilege levels

Publications (1)

Publication Number Publication Date
DE19635204A1 true DE19635204A1 (de) 1997-05-15

Family

ID=24083479

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19635204A Ceased DE19635204A1 (de) 1995-09-01 1996-08-30 Ausnahme-Sicherheitsschaltung

Country Status (2)

Country Link
US (1) US5684948A (de)
DE (1) DE19635204A1 (de)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5948097A (en) * 1996-08-29 1999-09-07 Intel Corporation Method and apparatus for changing privilege levels in a computer system without use of a call gate
AU7347500A (en) * 1999-09-03 2001-04-10 General Instrument Corporation Resource access control system
US6643783B2 (en) 1999-10-27 2003-11-04 Terence T. Flyntz Multi-level secure computer with token-based access control
US6351817B1 (en) * 1999-10-27 2002-02-26 Terence T. Flyntz Multi-level secure computer with token-based access control
US6389542B1 (en) * 1999-10-27 2002-05-14 Terence T. Flyntz Multi-level secure computer with token-based access control
US7356817B1 (en) 2000-03-31 2008-04-08 Intel Corporation Real-time scheduling of virtual machines
US6996710B1 (en) 2000-03-31 2006-02-07 Intel Corporation Platform and method for issuing and certifying a hardware-protected attestation key
US6957332B1 (en) 2000-03-31 2005-10-18 Intel Corporation Managing a secure platform using a hierarchical executive architecture in isolated execution mode
US7089418B1 (en) * 2000-03-31 2006-08-08 Intel Corporation Managing accesses in a processor for isolated execution
US6934817B2 (en) 2000-03-31 2005-08-23 Intel Corporation Controlling access to multiple memory zones in an isolated execution environment
US7013484B1 (en) 2000-03-31 2006-03-14 Intel Corporation Managing a secure environment using a chipset in isolated execution mode
US7111176B1 (en) 2000-03-31 2006-09-19 Intel Corporation Generating isolated bus cycles for isolated execution
US7082615B1 (en) 2000-03-31 2006-07-25 Intel Corporation Protecting software environment in isolated execution
US6990579B1 (en) 2000-03-31 2006-01-24 Intel Corporation Platform and method for remote attestation of a platform
US6959352B1 (en) * 2000-04-29 2005-10-25 Hewlett-Packard Development Company, L.P. System and method for allowing non-trusted processors to interrupt a processor safely
US6976162B1 (en) 2000-06-28 2005-12-13 Intel Corporation Platform and method for establishing provable identities while maintaining privacy
US6895508B1 (en) * 2000-09-07 2005-05-17 International Business Machines Corporation Stack memory protection
US7215781B2 (en) * 2000-12-22 2007-05-08 Intel Corporation Creation and distribution of a secret value between two devices
US7035963B2 (en) 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7818808B1 (en) 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
US7225441B2 (en) * 2000-12-27 2007-05-29 Intel Corporation Mechanism for providing power management through virtualization
US6907600B2 (en) 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US7117376B2 (en) * 2000-12-28 2006-10-03 Intel Corporation Platform and method of creating a secure boot that enforces proper user authentication and enforces hardware configurations
US7096497B2 (en) * 2001-03-30 2006-08-22 Intel Corporation File checking using remote signing authority via a network
US20020144121A1 (en) * 2001-03-30 2002-10-03 Ellison Carl M. Checking file integrity using signature generated in isolated execution
US7272831B2 (en) * 2001-03-30 2007-09-18 Intel Corporation Method and apparatus for constructing host processor soft devices independent of the host processor operating system
JP4837844B2 (ja) * 2001-07-19 2011-12-14 富士通株式会社 シミュレーションシステム、方法、プログラム及び記録媒体
US7191440B2 (en) 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
US7024555B2 (en) 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
US7103771B2 (en) * 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US20030126454A1 (en) * 2001-12-28 2003-07-03 Glew Andrew F. Authenticated code method and apparatus
US20030126453A1 (en) * 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7698522B1 (en) * 2002-01-11 2010-04-13 Global Foundries Method and apparatus for linear address based page level security scheme to determine current security context
EP1331539B1 (de) * 2002-01-16 2016-09-28 Texas Instruments France Sicherer Modus für Prozessoren, die Speicherverwaltung und Unterbrechungen unterstützen
US7480806B2 (en) * 2002-02-22 2009-01-20 Intel Corporation Multi-token seal and unseal
US7631196B2 (en) 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7028149B2 (en) * 2002-03-29 2006-04-11 Intel Corporation System and method for resetting a platform configuration register
US20030191943A1 (en) * 2002-04-05 2003-10-09 Poisner David I. Methods and arrangements to register code
US20030196096A1 (en) * 2002-04-12 2003-10-16 Sutton James A. Microcode patch authentication
US7076669B2 (en) * 2002-04-15 2006-07-11 Intel Corporation Method and apparatus for communicating securely with a token
US20030196100A1 (en) * 2002-04-15 2003-10-16 Grawrock David W. Protection against memory attacks following reset
US7058807B2 (en) * 2002-04-15 2006-06-06 Intel Corporation Validation of inclusion of a platform within a data center
US7127548B2 (en) * 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
US7165135B1 (en) * 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
US6843013B2 (en) * 2002-04-22 2005-01-18 Jorge Enrique Cutini Trigger safety lock for pistols and trigger assembly
US7139890B2 (en) * 2002-04-30 2006-11-21 Intel Corporation Methods and arrangements to interface memory
US7451324B2 (en) * 2002-05-31 2008-11-11 Advanced Micro Devices, Inc. Secure execution mode exceptions
US20030226014A1 (en) * 2002-05-31 2003-12-04 Schmidt Rodney W. Trusted client utilizing security kernel under secure execution mode
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US6820177B2 (en) * 2002-06-12 2004-11-16 Intel Corporation Protected configuration space in a protected environment
US7142674B2 (en) 2002-06-18 2006-11-28 Intel Corporation Method of confirming a secure key exchange
US7392415B2 (en) * 2002-06-26 2008-06-24 Intel Corporation Sleep protection
US20040003321A1 (en) * 2002-06-27 2004-01-01 Glew Andrew F. Initialization of protected system
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US7296267B2 (en) * 2002-07-12 2007-11-13 Intel Corporation System and method for binding virtual machines to hardware contexts
US7383587B2 (en) * 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
RU2005115083A (ru) * 2002-11-18 2006-01-20 Арм Лимитед (Gb) Переключение процессора между защищенным и незащищенным режимами
AU2003278347A1 (en) * 2002-11-18 2004-06-15 Arm Limited Exception types within a secure processing system
US7117284B2 (en) * 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
GB0226905D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Exception tyres within a secure processing system
US7231476B2 (en) * 2002-11-18 2007-06-12 Arm Limited Function control for a processor
AU2003278342A1 (en) 2002-11-18 2004-06-15 Arm Limited Security mode switching via an exception vector
US7165181B2 (en) 2002-11-27 2007-01-16 Intel Corporation System and method for establishing trust without revealing identity
US7073042B2 (en) 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US20040117318A1 (en) * 2002-12-16 2004-06-17 Grawrock David W. Portable token controlling trusted environment launch
US7318235B2 (en) * 2002-12-16 2008-01-08 Intel Corporation Attestation using both fixed token and portable token
US7900017B2 (en) * 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US7076802B2 (en) * 2002-12-31 2006-07-11 Intel Corporation Trusted system clock
US20040128528A1 (en) * 2002-12-31 2004-07-01 Poisner David I. Trusted real time clock
GB2398134A (en) * 2003-01-27 2004-08-11 Hewlett Packard Co Applying a data handing policy to predetermined system calls
DE60320649D1 (de) * 2003-08-15 2008-06-12 Sgs Thomson Microelectronics Datenspeicher mit beschränktem Zugang
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7424709B2 (en) * 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US7287197B2 (en) 2003-09-15 2007-10-23 Intel Corporation Vectoring an interrupt or exception upon resuming operation of a virtual machine
US7739521B2 (en) 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
US7610611B2 (en) 2003-09-19 2009-10-27 Moran Douglas R Prioritized address decoder
US20050071656A1 (en) * 2003-09-25 2005-03-31 Klein Dean A. Secure processor-based system and method
US7177967B2 (en) 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US7366305B2 (en) * 2003-09-30 2008-04-29 Intel Corporation Platform and method for establishing trust without revealing identity
US7636844B2 (en) 2003-11-17 2009-12-22 Intel Corporation Method and system to provide a trusted channel within a computer system for a SIM device
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US20050133582A1 (en) * 2003-12-22 2005-06-23 Bajikar Sundeep M. Method and apparatus for providing a trusted time stamp in an open platform
US7802085B2 (en) 2004-02-18 2010-09-21 Intel Corporation Apparatus and method for distributing private keys to an entity with minimal secret, unique information
US7356735B2 (en) 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7620949B2 (en) 2004-03-31 2009-11-17 Intel Corporation Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment
US7490070B2 (en) 2004-06-10 2009-02-10 Intel Corporation Apparatus and method for proving the denial of a direct proof signature
US7305592B2 (en) 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7840962B2 (en) 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US8146078B2 (en) 2004-10-29 2012-03-27 Intel Corporation Timer offsetting mechanism in a virtual machine environment
US8924728B2 (en) 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US7395405B2 (en) 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7809957B2 (en) 2005-09-29 2010-10-05 Intel Corporation Trusted platform module for generating sealed data
CN101004723A (zh) * 2006-01-18 2007-07-25 鸿富锦精密工业(深圳)有限公司 信息交互系统和方法
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US7934092B2 (en) * 2006-07-10 2011-04-26 Silverbrook Research Pty Ltd Electronic device having improved security
US20080010636A1 (en) * 2006-07-10 2008-01-10 Silverbrook Research Pty Ltd Pictbridge printer firmware upgrades via memory stick
US20080010637A1 (en) * 2006-07-10 2008-01-10 Silverbrook Research Pty Ltd Pictbridge printer firmware upgrades via camera
US7681000B2 (en) * 2006-07-10 2010-03-16 Silverbrook Research Pty Ltd System for protecting sensitive data from user code in register window architecture
EP1912149A1 (de) * 2006-10-09 2008-04-16 Texas Instruments France Überprüfen der Integrität des Überwachungsmodus
WO2008045824A2 (en) * 2006-10-09 2008-04-17 Texas Instruments Incorporated Monitor mode integrity verification
US7765374B2 (en) * 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US20100280817A1 (en) * 2009-04-30 2010-11-04 Spansion Llc Direct pointer access and xip redirector for emulation of memory-mapped devices
AU2014318585B2 (en) 2013-09-12 2018-01-04 Virsec Systems, Inc. Automated runtime detection of malware
DE102014212018A1 (de) * 2014-06-23 2015-12-24 Continental Teves Ag & Co. Ohg Verfahren und Schaltkreis zur Vermeidung von Speicherschutzverletzungen
CN107077412B (zh) 2014-06-24 2022-04-08 弗塞克系统公司 单层或n层应用的自动化根本原因分析
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US10908909B2 (en) * 2015-06-09 2021-02-02 Optimum Semiconductor Technologies Inc. Processor with mode support
WO2017218872A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
JP6955858B2 (ja) * 2016-10-17 2021-10-27 オークマ株式会社 制御装置
US10223242B1 (en) 2018-08-27 2019-03-05 Capital One Services, Llc Testing an application in a production infrastructure temporarily provided by a cloud computing environment
US10795829B2 (en) * 2018-09-28 2020-10-06 Intel Corporation Device, method and system to selectively provide data validation functionality

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013477A1 (en) * 1991-12-23 1993-07-08 Onyx Technologies (Usa) Inc. Computer protection device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4758950A (en) * 1983-04-18 1988-07-19 Motorola, Inc. Method and apparatus for selectively delaying an interrupt of a coprocessor
JPS61206043A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
US4779187A (en) * 1985-04-10 1988-10-18 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US5109329A (en) * 1987-02-06 1992-04-28 At&T Bell Laboratories Multiprocessing method and arrangement
EP0510244A1 (de) * 1991-04-22 1992-10-28 Acer Incorporated Verfahren und Anordnung zum Schutz eines Computers gegen Computerviren
US5390332A (en) * 1992-09-15 1995-02-14 Sun Microsystems, Inc. Method and apparatus for performing a takeover of a microprocessor
US5410709A (en) * 1992-12-17 1995-04-25 Bull Hn Information System Inc. Mechanism for rerouting and dispatching interrupts in a hybrid system environment
US5535397A (en) * 1993-06-30 1996-07-09 Intel Corporation Method and apparatus for providing a context switch in response to an interrupt in a computer process
US5481725A (en) * 1993-08-03 1996-01-02 Intel Corporation Method for providing programmable interrupts for embedded hardware used with programmable interrupt controllers
US5511200A (en) * 1993-12-01 1996-04-23 Intel Corporation Method and apparatus for providing an enhanced programmable priority interrupt controller
US5483649A (en) * 1994-07-01 1996-01-09 Ybm Technologies, Inc. Personal computer security system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013477A1 (en) * 1991-12-23 1993-07-08 Onyx Technologies (Usa) Inc. Computer protection device

Also Published As

Publication number Publication date
US5684948A (en) 1997-11-04

Similar Documents

Publication Publication Date Title
DE19635204A1 (de) Ausnahme-Sicherheitsschaltung
DE3901457C2 (de)
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE69533312T2 (de) Geschütztes speichersystem und verfahren dafür
DE3048365C2 (de)
DE112009000344B4 (de) Zugriffsrechte auf eine Speicher-Map
EP0011685B1 (de) Programmierbare Speicherschutzeinrichtung für Mikroprozessorsysteme und Schaltungsanordnung mit einer derartigen Einrichtung
DE60131864T2 (de) Speichern von stapeloperanden in registern
EP1358558B1 (de) Mikroprozessorschaltung für datenträger und verfahren zum organisieren des zugriffs auf in einem speicher abgelegten daten
DE102010046892A1 (de) Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen
EP0951673A1 (de) Verfahren zur überwachung der vorgeschriebenen ausführung von softwareprogrammen
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE102016220639A1 (de) Speicherschutzeinheit und Verfahren zum Schützen eines Speicheradressraumes
DE10297494T5 (de) System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit
DE102021124623A1 (de) Schützen vor ungültigen arbeitsspeicherreferenzen
DE102004034766A1 (de) Fehlererfassungsverfahren und System für Prozessoren, das verriegelungsschrittweise betriebene gleichzeitige Teilprozesse verwendet
DE102015222096A1 (de) Schaltung, System und Verfahren zum Speicher-Patchen
DE3911721C2 (de)
WO2007057270A1 (de) Programmgesteuerte einheit und verfahren zum betreiben derselbigen
DE60010847T2 (de) Verfahren zur Fehlerbeseitigung in einem Thread-Programm
DE10297686T5 (de) System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems
DE3700800C2 (de) Einrichtung zur Erzeugung eines Unterbrechungspunktes in einem Mikroprozessor
DE69626263T2 (de) System zur Zuteilung mehrerer Befehle ohne Verzweigungsunterbrechung in einem Pipelineprozessor
DE3410497A1 (de) Rechneranordnung
DE4042161A1 (de) Rom mit sicherheitsschaltung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection