DE19635204A1 - Ausnahme-Sicherheitsschaltung - Google Patents
Ausnahme-SicherheitsschaltungInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/073—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, 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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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)
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)
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)
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 |
-
1995
- 1995-09-01 US US08/523,052 patent/US5684948A/en not_active Expired - Lifetime
-
1996
- 1996-08-30 DE DE19635204A patent/DE19635204A1/de not_active Ceased
Patent Citations (1)
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 |