DE10297687T5 - Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit - Google Patents

Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit Download PDF

Info

Publication number
DE10297687T5
DE10297687T5 DE10297687T DE10297687T DE10297687T5 DE 10297687 T5 DE10297687 T5 DE 10297687T5 DE 10297687 T DE10297687 T DE 10297687T DE 10297687 T DE10297687 T DE 10297687T DE 10297687 T5 DE10297687 T5 DE 10297687T5
Authority
DE
Germany
Prior art keywords
permission
port
instruction
security context
port number
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.)
Granted
Application number
DE10297687T
Other languages
English (en)
Other versions
DE10297687B4 (de
Inventor
Rodney W. Drippings Springs Schmidt
Brian C. Round Rock Barnes
Geoffrey S. Austin Strongin
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE10297687T5 publication Critical patent/DE10297687T5/de
Application granted granted Critical
Publication of DE10297687B4 publication Critical patent/DE10297687B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • 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/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Bus Control (AREA)

Abstract

Prozessor (202) der zur Ankopplung an einen Speicher (206) ausgebildet ist, wobei der Prozessor (202) umfasst:
eine Ausführungseinheit (400), die ausgebildet ist, I/O-Instruktionen auszuführen;
eine Speicherverwaltungseinheit (402), die ausgebildet ist, Daten in dem Speicher (206) zu speichern; und
eine Busschnittstelleneinheit (406), die angeschlossen ist, um eine Eingabe/Ausgabe- (I/O)-Port-Nummer und ein Erlaubnisbit entsprechend der I/O-Port-Nummer zu empfangen und um ein Ausgangssignal in Abhängigkeit eines Wertes des Erlaubnisbits zu erzeugen, und
wobei die Ausführungseinheit (400) so angeschlossen ist, um das Ausgangssignal zu empfangen und ferner so ausgebildet ist, um die I/O-Instruktion in Abhängigkeit des Ausgangssignals auszuführen.

Description

  • Technisches Gebiet
  • Diese Erfindung betrifft im Allgemeinen Speicherverwaltungssysteme und Verfahren und betrifft insbesondere Speicherverwaltungssysteme und Verfahren, die einen Schutz für in einem Speicher gespeicherte Daten gewähren.
  • Hintergrund
  • Die 80x86 (d. h. „x86") Prozessorarchitektur bietet einen Eingabe/Ausgabe- (I/O-Adressenraum, der separat zu einem Speicheradressenraum vorhanden ist. Der x86-I/O-Adressenraum ist ein zusammenhängender Block aus 64k 8-Bit Dateneinheiten, die an Adressen angeordnet sind, die von 0 bis 65535 reichen (0000h bis FFFFh, wobei „h" eine Hexadezimalzahl bezeichnet) und dieser wird typischerweise für die Kommunikation mit peripheren Geräten (beispielsweise einer Tastatur, Plattenlaufwerken, etc.) verwendet. Periphere Geräte enthalten typischerweise spezielle Zugriffsregister, die als „I/O-Ports" oder einfach als „Ports" bezeichnet werden. Die I/O-Ports können 8-Bit Ports, 16-Bit Ports, oder 32-Bit Ports sein. Auf die 8-Bit Ports wird unter Anwendung ihrer einzigartigen Bit-Adressen zugegriffen. Die 16-Bit I/O-Ports enthalten zwei zusammenhängende Bits und 32 Bit I/O-Ports enthalten vier zusammenhängende Bytes. Auf die 16- und 32-Bit I/O-Ports wird zugegriffen, indem die kleinste Adresse aller ihrer zusammenhängende Bytes verwendet wird.
  • Adressen in dem I/O-Adressenraum eines x-86-Prozessors können unterschiedlichen Ports von peripheren Geräten entsprechen, die mit dem x86-Prozessor verbunden sind. Der x86-Prozessor steuert eine M/IO (Speicher-I/O) Signalleitung mit einem M/IO-Signal an, das anzeigt, ob eine Adresse, die mittels Adresssignalen auf den Adresssignalleitungen übertragen wird, in dem Speicheradressenraum oder dem I/O-Adressenraum liegt.
  • Der x86-Instruktionssatz enthält spezielle I/O-Instruktionen, um auf den I/O-Adressenraum zuzugreifen. Die x86-I/O-Instruktionen stellen Verfahren zum Austauschen von Daten zwischen internen Registern eines x86-Prozessors und I/O-Ports, die auf den I/O-Adressenraum abgebildet sind, und zwischen einem mit dem x86-Prozessor verbundenen Speicher und den I/O-Ports bereit. Die x86-I/O-Instruktionen enthalten die "IN"-(Eingabe von dem Port) und „OUT"- (Ausgabe auf den Port) Register – I/O-Instruktionen sowie die „INS"-(Zeichenketteeingabe von dem Port) und „OUTS"-(Zeichenketteausgabe zum Port) Block- oder Zeichenketten-I/O-Instruktionen. Die Block-x86-Instruktionen übertragen Daten direkt von einem I/O-Port zu dem Speicher und von dem Speicher zu dem I/O-Port.
  • Eine „Aufgabe" ist ein einzelner, sequenzieller Pfad an Anweisungen. Der 80286 und spätere x86-Prozessoren unterstützen die Parallelverarbeitung, d. h. die Fähigkeit, mehrere Aufgaben gleichzeitig abzuarbeiten. Tatsächlich wird nur eine einzige Aufgabe zu einer gegebenen Zeit abgearbeitet. Der x86-Prozessor schaltet einfach zwischen mehreren Aufgaben nach Vereinbarung um.
  • Moderne x86-Prozessoren sind in der Lage, in diversen verschiedenen Modi zu arbeiten, wozu der Modus mit realen Adressen oder der „reale" Modus, der geschützte Modus mit virtueller Adresse oder „geschützte" Modus und der virtuelle 8086 Modus oder „virtuelle" Modus gehören. In dem geschützten Modus wird die Anwendung der I/O-Instruktion durch Festlegen des IOPL- (I/O-Privilegebene) Feldes in den FLAGS-Registern gesteuert. In 80386 und späteren x86-Prozessoren wird der Zugriff auf einzelne Ports, die auf den I/O-Adressenraum abgebildet sind, durch eine I/O-Erlaubnisbitstruktur bzw. Bitmap in dem Aufgabenzustandssegment (TSS) der Aufgabe gesteuert. Die meisten Betriebssysteme, die im geschützten Modus arbeiten, beschränken den Zugriff auf I/O-Ports auf sich selbst (Privilegebene 0) und auf eine kleine Anzahl „vertrauenswürdiger" Gerätetreiber (Privilegebene 1).
  • Wenn ein 80386-Prozessor oder ein späterer x86-Prozessor in dem geschützten Modus arbeitet, können zwei Mechanismen angewendet werden, um den Zugriff von Aufgaben auf den I/O-Adressenraum zu beschränken. Zunächst wird die Anwendung der I/O-Instruktionen durch das Festlegen des I/O-Privilegebenen- (IOPL) Feldes in den Markierungs- bzw. Flag-(EFLAGS) Registern gesteuert. Zum Zweiten kann der Zugriff auf einzelne I/O-Ports in dem I/O-Raum über eine I/O-Erlaubnis-Bit-Struktur in einem Aufgabenzustandssegment (TSS) jeder der Aufgaben gesteuert werden. Zu beachten ist, dass der I/O-Erlaubnisbitstrukturmechanismus lediglich auf dem 80386 Prozessor und späteren x86-Prozessoren eingerichtet ist.
  • Die meisten Betriebsysteme, die in dem geschützten Modus arbeiten, versuchen die Anwendung der I/O-Instruktionen auf sich selbst und eine kleine Anzahl „vertrauenswürdig" Gerätetreiber zu beschränken. In dem Privilegmodell mit konzentrischen Ringen der x86-Prozessorarchitektur arbeitet die Betriebssystemsoftware mit geschütztem Modus typischerweise in dem inneren Ring auf der Privilegebene 0 und eine vertrauenswürdige Gerätetreibersoftware arbeitet typischerweise in einem Ring, der den inneren Ring umgibt, auf der Privilegebene 1 oder auf der Privilegebene 0. Anwendungsprogramme laufen typischerweise in einem äußeren Ring mit der Privilegebene 3.
  • Wenn ein x86-Prozessor, der in dem geschützten Modus arbeitet, eine I/O-Instruktion einer Aufgabe abarbeitet, vergleicht der x86-Prozessor zunächst die aktuelle Privilegebene (CPL) der Aufgabe mit der I/O-Privilegebene (IOPL). Wenn die aktuelle Privilegebene (CPL) der Aufgabe mindestens vom gleichen Rang ist (d. h. numerisch kleiner oder gleich zu) der I/O-Privilegebene (IOPL) ist, führt der x86-Prozessor die I/O-Struktion aus. Wenn andererseits die aktuelle Privilegebene (CPL) der Aufgabe nicht so privilegiert ist wie (d. h. numerisch größer ist als) die I/O-Privilegebene (IOPL), überprüft der x86-Prozessor die I/O-Erlaubnis Bit-Struktur in dem Aufgabenzustandssegment (TSS) der Aufgabe.
  • 1 wird nunmehr verwendet, um den gut bekannten I/O-Erlaubnisbitstrukturschutzmechanismus der x86-Architektur darzustellen. 1 ist eine Ansicht, die ein Aufgabenzustandssegment (TSS) 102 und eine entsprechende I/O-Erlaubnisbitstruktur bzw. Bitmap 104, die in einem Speicher 100 gespeichert sind, zeigt. Das Aufgabenzustandssegment (TSS) 103 beginnt am Anfang (d. h. an der Basis) eines Speichersegments und die I/O-Erlaubnisbitstruktur 104 endet an einem Ende (d. h. einer Grenze) des Speichersegments. Das Aufgabenzustandssegment (TSS) 102 enthält eine 16-Bit „I/O-Strukturbasis" an der relativen Adresse 66h innerhalb des Speichersegments. Die I/O-Strukturbasis enthält einen Offset in Bytes eines ersten Bytes der entsprechenden I/O-Erlaubnisbitstruktur 104.
  • Jedes Bit der I/O-Erlaubnisbitstruktur 104 entspricht einem Byte in dem I/O-Raum. Beispielsweise repräsentiert das erste Bit der I/O-Erlaubnisbitstruktur 104 ein 8-Bit-Port bei der Adresse „0" in dem I/O-Raum, das zweite Bit repräsentiert einen 8-Bit-Port bei der Adresse „1" in dem I/O-Raum usw. Die Nummer des I/O-Ports, auf den zugegriffen wird, wird als ein Bit-Offset für die I/O-Erlaubnisbitstruktur 104 verwendet. Wenn das Bit in der I/O- Erlaubnisbitstruktur 104, das dem I/O-Port entspricht, auf den zugegriffen wird, auf „0" zurückgesetzt ist, führt der x86-Prozessor (der mit dem Speicher 100 verbunden ist und auf die I/O-Erlaubnisbitstruktur 104 zugreift), die I/O-Instruktion aus. Wenn das Bit auf „1" gesetzt ist, führt der x86-Prozessor die I/O-Instruktion nicht aus und erzeugt einen allgemeinen Schutzfehler. Wenn 16-Bit/Wort oder 32-Bit/Doppelwort I/O-Ports angesprochen werden, müssen alle Bits, die zusammenhängende Bytes der Ports repräsentieren, auf „0" gesetzt sein, wenn der x86-Prozessor die I/O-Instruktion ausführen soll.
  • Da I/O-Räume tendenziell wenig bevölkert sind, und 8k Bytes erforderlich sind, um alle 64k Ports der I/O-Räume zu repräsentieren, enthält der I/O-Erlaubnisbitstrukturschutzmechanismus eine Möglichkeit, I/O-Erlaubnisbitstrukturen abzukürzen. I/O-Ports mit Adressen, die über das Ende einer I/O-Erlaubnisbitstruktur hinausreichen, werden so behandelt, als ob die entsprechenden Bits in der I/O-Erlaubnisbitstruktur auf „1" gesetzt sind.
  • Ein Problem tritt dabei dahingehend auf, dass der I/O-Erlaubnisbitstrukturmechanismus der x86-Prozessorarchitektur nicht ausreichend ist, um in geeigneter Weise den I/O-Adressenraum zu schützen. Beispielsweise kann eine beliebige Aufgabe, die auf der übergeordneten Ebene (z. B. mit einer CPL von 0) ausgeführt wird, auf einen beliebigen Port des I/O-Adressenraumes zu jeder Zeit zugreifen. Ferner kann eine erste Aufgabe, die auf der übergeordneten Ebene ausgeführt wird, die Bits in einer I/O-Erlaubnisbitstruktur einer zweiten Aufgabe modifizieren, um der zweiten Aufgabe einen Zugriff auf einige oder alle der Ports in dem I/O-Adressenraum zu gewähren. Die zweite Aufgabe kann dann fortfahren, auf einen oder mehrere dieser Ports zuzugreifen. Die vorliegende Erfindung richtet sich an Systeme und/oder Verfahren, um das zuvor beschriebene nicht adäquate Problem des Schutzes des I/O-Raumes der x86-Architektur zu lösen oder zumindest zu reduzieren.
  • Überblick über die Erfindung
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-(I/O) Instruktion bereitgestellt. Das Verfahren umfasst das Erzeugen einer Eingabe/Ausgabe-(I/O) Erlaubnisbitstruktur bzw. Bitmap in einem Speicher und das Empfangen einer I/O-Portnummer und eines Sicherheitskontextidentifizierungs-(SCID) Wertes. Das Verfahren umfasst ferner das Verwenden des SCID-Wertes und der I/O-Portnummer, um auf die gespeicherte I/O-Erlaubnisbitstruktur zuzugreifen, um ein Erlaubnisbit, das dem I/O-Port entspricht zu ermitteln, und das Ausführen der I/O-Instruktion in Abhängigkeit eines Wertes des Erlaubnisbits, das dem I/O-Port entspricht. Die I/O-Erlaubnisbitstruktur enthält mehrere Erlaubnisbits. Jedes der Erlaubnisbits entspricht einem anderen Port von mehreren I/O-Ports. Jedes der Erlaubnisbits besitzt einen Wert, der anzeigt, ob ein Zugriff auf den entsprechenden I/O-Port zulässig ist. Die I/O-Portnummer kennzeichnet den I/O-Port, der von der I/O-Instruktion angesprochen wird. Der SCID-Wert bezeichnet einen Sicherheitskontextpegel bzw. eine Sicherheitskontextebene einer Speicherstelle, die die I/O-Instruktion enthält.
  • Kurze Beschreibung der Zeichnungen
  • Die Erfindung kann durch Bezugnahme auf die folgende Beschreibung im Zusammenhang mit den begleitenden Zeichnungen verstanden werden, wobei gleiche Bezugszeichen ähnliche Elemente kennzeichnen und wobei:
  • 1 eine Ansicht ist, die ein Aufgabezustandssegment (TSS) der x86-Architektur und eine entsprechende I/O-Erlaubnisbitstruktur der x86-Architektur, die in einem Speicher gespeichert sind, zeigt;
  • 2 eine Ansicht einer Ausführungsform eines Computersystems ist mit einer zentralen Recheneinheit (CPU), einer System- oder „Host"-Brücke, einem Speicher, einem ersten Gerätebus (beispielsweise einen peripheren Komponentenverbindungs- oder PCI-Bus), einer Gerätebusbrücke, einem zweiten Gerätebus (beispielsweise einem Industriestandardarchitektur- oder ISA-Bus) und vier Gerätehardwareeinheiten, wobei die CPU eine Eingabe/Ausgabe-(I/O) Sicherheitsprüfeinheit (SCU) aufweist, die verwendet wird, um die Gerätehardwareeinheiten vor unautorisierten Zugriffen zu schützen, die von der CPU erzeugt werden;
  • 3 eine Ansicht ist, die die Abhängigkeiten zwischen den diversen Hard- und Softwarekomponenten des Computersystems aus 2 zeigt;
  • 4 eine Ansicht einer Ausführungsform der CPU des Computersystems 200 aus 2 ist, wobei die CPU eine Ausführungseinheit, eine Speicherverwaltungseinheit (MMU) und eine Busschnittstelleneinheit (BIU), die mit der Ausführungseinheit und der MMU gekoppelt ist, aufweist und wobei die BIU die I/O-SCU enthält;
  • 5 eine Ansicht ist, die eine Ausführungsform der I/O-SCU aus 4 zeigt;
  • 6 eine Ansicht ist, die eine Ausführungsform einer I/O-Erlaubnisbitstruktur für einen sicheren Exekutions- bzw. Ausführungsmodus (SEM) ist, die in dem Speicher aus 2 gespeichert ist, und eine Ausführungsform eines Mechanismus zum Zugreifen auf die SEM-I/O-Erlaubnisbitstruktur zeigt;
  • 7 eine Ansicht ist, die eine weitere Ausführungsform der SEM-I/O-Erlaubnisbitstruktur aus 6 und eine weitere Ausführungsform des Mechanismus zum Zugreifen auf die SEM-I/O-Erlaubnisbitstruktur zeigt;
  • 8 eine Ansicht einer alternativen Ausführungsform der CPU des Computersystems aus 2 ist, wobei die CPU eine Ausführungseinheit, eine MMU, eine Busschnittstelleneinheit (BIU), die mit der Ausführungseinheit und der MMU verbunden ist, und eine Mikrocodierungsmaschine aufweist, die mit der Ausführungseinheit, der MMU und der BIU verbunden ist, und wobei die Mikrocodierungsmaschine Mikrocodierungsinstruktionen ausführt, die in einem Mikrocodierungsspeicherbereich gespeichert sind, und Signale erzeugt, die den Arbeitsablauf der Ausführungseinheit, der MMU und der BIU in Abhängigkeit der Mikrocodierungsinstruktionen steuern; und
  • 9 eine Ansicht ist, die die Beziehungen zwischen den diversen Hardware- und Softwarekomponenten des Computersystems aus 2 zeigt, wobei ein erster Gerätetreiber und eine entsprechende erste Gerätehardwareeinheit in einem ersten Sicherheits- „Abteil", und ein zweiter Gerätetreiber und eine entsprechende zweite Gerätehardwareeinheit in einem zweiten Sicherheitsabteil, das separat und funktionsmäßig von dem ersten Sicherheitsabteil getrennt ist, angeordnet sind.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, werden spezielle Ausführungsformen davon beispielhaft in den Zeichnungen dargestellt und hierin detailliert beschrieben. Es sollte jedoch selbstverständlich sein, dass die Beschreibung spezieller Ausführungsformen nicht beabsichtigt ist, um die Erfindung auf die speziellen offenbarten Formen einzuschränken, sondern es ist vielmehr beabsichtigt, alle Modifizierungen, Äquivalente und Alternativen abzudecken, die innerhalb des Grundgedankens und Schutzbereichs der Erfindung liegen, wie sie durch die angefügten Patentsansprüche definiert ist.
  • Art bzw. Arten zum Ausführen der Erfindung
  • Es werden nun anschauliche Ausführungsformen der Erfindung beschrieben. Der Einfachheit halber sind nicht alle Merkmale einer tatsächlichen Implementierung in der Beschreibung aufgeführt. Es soll jedoch betont werden, dass bei der Entwicklung einer derartigen tatsächlichen Ausführungsform zahlreiche implementationsspezifische Entscheidungen getroffen werden müssen, um die speziellen Ziele der Entwickler, etwa die Kompatibilität mit systembezogenen und geschäftsbezogenen Rahmenbedingungen, zu erreichen, die sich von Implementierung zu Implementierung unterscheiden können. Ferner ist zu beachten, dass ein derartiger Entwicklungsaufwand komplex und zeitaufwendig sein kann, aber dennoch eine Routinemaßnahme für den Fachmann darstellt, der im Besitz der vorliegenden Offenbarung ist.
  • 2 ist eine Ansicht einer Ausführungsform eines Computersystems 200 mit einer CPU (Prozessor) 202, einer System- oder „Host" Brücke 204, einem Speicher 206, einem ersten Gerätebus 208 (beispielsweise einem peripheren Komponentenverbindungs- (PCI-Bus)), einer Gerätebusbrücke 210, einem zweiten Gerätebus 212 (beispielsweise einem Industriestandardarchitektur- (ISA-Bus)), und vier Gerätehardwareeinheiten 214a bis 214d. Die Host-Brücke 204 ist mit der CPU 202, dem Speicher 206 und dem ersten Gerätebus 208 verbunden. Die Host-Brücke 204 leitet Signale zwischen der CPU 202 und dem ersten Gerätebus 208 weiter und verbindet funktionsmäßig den Speicher 206 mit der CPU 202 und dem ersten Gerätebus 208. Die Gerätebusbrücke 210 ist zwischen dem ersten Gerätebus 208 und dem zweiten Gerätebus 212 angeordnet und vermittelt Signale zwischen dem ersten Gerätebus 208 und dem zweiten Gerätebus 212. In der Ausführungsform aus 2 sind die Gerätehardwareeinheiten 214a und 214b mit dem ersten Gerätebus 208 verbunden, und die Gerätehardwareeinheiten 214c und 214d sind mit dem zweiten Gerätebus 212 verbunden. Eine oder mehrere der Gerätehardwareeinheiten 214a bis 214d können beispielsweise Speichereinrichtungen (z. B. Festplatten, Diskettenlaufwerke und CD-Rom-Laufwerke), Kommunikationseinrichtungen (beispielsweise ein Modem und Netzwerkadapter), oder Eingabe- oder Ausgabe ter), oder Eingabe- oder Ausgabe-Einrichtungen (beispielsweise Video-Einrichtungen, Audiogeräte und Drucker) sein.
  • In der Ausführungsform aus 2 umfasst die CPU 202 eine Eingabe/Ausgabe-(I/O) Sicherheitsprüfeinheit (SCU) 216. Die Gerätehardwareeinheiten 214a bis 214d können diversen I/O-Ports des I/O-Raums der CPU 202 zugeordnet sein, und die CPU 202 kann mit den Gerätehardwareeinheiten 214a bis 214d über entsprechende I/O-Ports kommunizieren. Hierbei wird die I/O-SCU 216 verwendet, um die Gerätehardwareeinheiten 214a bis 214d vor unautorisierten Zugriffen, die von der CPU 202 erzeugt werden, zu schützen. Zu beachten ist, dass in anderen Ausführungsformen die Host-Brücke 204 ein Teil der CPU 202 sein kann, wie in 2 gezeigt ist.
  • 3 ist eine Ansicht, die die Beziehungen zwischen den diversen Hardware- und Softwarekomponenten des Computersystems 200 aus 2 zeigt. In der Ausführungsform aus 3 sind mehrere Anwendungsprogramme 300, ein Betriebssystem 302, ein Sicherheitskernel 304 und Gerätetreiber 306a bis 306d in dem Speicher 206 abgelegt. Die Anwendungsprogramme 300, das Betriebssystem 302, der Sicherheitskernel 304 und die Gerätetreiber 306a bis 306d enthalten Instruktionen, die von der CPU 202 ausgeführt werden. Das Betriebssystem 302 stellt eine Anwenderschnittstelle und eine Software- „Plattform" bereit, auf der die Anwendungsprogramme 300 laufen. Das Betriebssystem 302 kann ferner beispielsweise grundlegende Hilfsfunktionen bereitstellen, einschließlich der Dateisystemverwaltung, der Prozessverwaltung und der Eingabe/Ausgabe-(I/O)-Steuerung.
  • Das Betriebssystem 302 kann ferner grundlegende Sicherheitsfunktionen bereitstellen. Beispielsweise kann die CPU 202 (2) ein x86-Prozessor sein, der Instruktionen des x86-Instruktionssatzes ausführt. Hierbei kann die CPU 202 spezialisierte Hardwareelemente aufweisen, die sowohl Schutzmerkmale für den virtuellen Speicher als auch für den physikalischen Speicher in dem geschützten Modus, wie dies zuvor beschrieben ist, bereitstellen. Das Betriebssystem 302 kann beispielsweise ein Betriebssystem aus der Windows-Familie sein (Microsoft Corporation, Redmond, WA), das die CPU 302 im geschützten Modus betreibt und spezialisierte Hardwareelemente der CPU 202 verwendet, um sowohl virtuellen Speicher- als auch Speicherschutz in dem geschützten Modus bereitzustellen.
  • Wie nachfolgend detaillierter beschrieben ist, liefert der Sicherheitskernel 304 weitere Sicherheitsfunktionen, die über die von dem Betriebssystem 302 bereitgestellten Sicherheitsfunktionen hinausgehen, um Daten, die in dem Speicher 206 abgelegt sind, vor einem unautorisierten Zugriff zu schützen. Wie in 3 gezeigt ist, ist der Sicherheitskernel 304 mit der I/O-SCU 216 verbunden. Wie nachfolgend detaillierter beschrieben ist, überwacht die I/O-SCU 216 alle softwareinitiierten Zugriffe auf die I/O-Ports in dem I/O-Adressenraum und erlaubt lediglich autorisierte Zugriffe auf die I/O-Ports.
  • In der Ausführungsform aus 3 sind die Gerätetreiber 306a bis 306d funktionsmäßig den entsprechenden Gerätehardwareeinheiten 214a bis 214d zugeordnet und mit diesen verbunden. Die Gerätehardwareeinheiten 214a bis 214d können beispielsweise „sichere" Geräte bzw. Einrichtungen sein und die entsprechenden Gerätetreiber 306a und 306d können „sichere" Gerätetreiber sein. Der Sicherheitskernel 304 ist zwischen dem Betriebssystem 302 und den sicheren Gerätetreibern 306a und 306d angeordnet und überwacht alle Zugriffe von den Anwendungsprogrammen 300 und dem Betriebssystem 302 auf die sicheren Gerätetreiber 306a und 306d und die entsprechenden sicheren Geräte 214a und 214d. Der Sicherheitskernel 304 kann nicht autorisierte Zugriffe auf die sicheren Gerätetreiber 306a und 306d und die entsprechenden sicheren Geräte 214a und 214d von den Anwendungsprogrammen 300 und dem Betriebsystem 302 verhindern. Die Gerätetreiber 306b und 306c können andererseits „nicht sichere" Gerätetreiber sein und die entsprechenden Gerätehardwareeinheiten 214b und 214c können „nicht sichere" Gerätehardwareeinheiten sein. Die Gerätetreiber 306b und 306c und die entsprechenden Gerätehardwareeinheiten 214b und 214c können beispielsweise „vererbte" Gerätetreiber und Gerätehardwareeinheiten sein.
  • Anzumerken ist, dass in anderen Ausführungsformen der Sicherheitskernel 304 ein Teil des Betriebssystems 302 sein kann. In noch weiteren Ausführungsformen können der Sicherheitskernel 304, die Gerätetreiber 306a und 306d und/oder die Gerätetreiber 306b und 306d Teil des Betriebssystems 302 sein.
  • 4 ist eine Ansicht einer Ausführungsform der CPU 202 des Computersystems 200 aus 2. in der Ausführungsform aus 4 enthält die CPU 202 eine Ausführungseinheit 400, eine Speicherverwaltungseinheit (MMU) 402, eine Cache- bzw. Kernspeichereinheit 404, eine Busschnittstelleneinheit (BIU) 406, einen Satz an Steuerregistern 408 und einen Satz aus Sicherheitsexekutions- bzw. Ausführungsmodus- (SEM) Registern 410. Die BIU 406 ist mit der Host-Brücke 204 (2) verbunden und bildet eine Schnittstelle zwischen der CPU 202 und der Host-Brücke 204. Die BIU 406 ist ferner mit dem Speicher 206 (2) über die Host-Brücke 204 gekoppelt und bildet eine Schnittstelle zwischen der CPU 202 und dem Speicher 206. In der Ausführungsform aus 4 ist die I/O SCU 216 in der BIU 406 angeordnet.
  • Wie nachfolgend detaillierter beschrieben ist, wird der Satz aus SEM-Registern 410 verwendet, um einen sicheren Exekutions- bzw. Ausführungsmodus (SEM) in dem Computersystem 200 aus 2 einzurichten, und der Betrieb der I/O SCU 216 wird von dem Inhalt des Satzes an SEM-Registern 410 gesteuert. Auf die SEM-Register 410 wird von dem Sicherheitskernel 304 (3) zugegriffen (d. h. diese werden beschrieben und/oder ausgelesen von dem Sicherheitskernel 304).
  • In der Ausführungsform aus 4 enthält der Satz aus SEM-Registern 410 ein Sicherheitsausführungsmodus- (SEM-) Bit. Das Computersystem 200 aus 2 kann beispielsweise in dem sicheren Ausführungsmodus (SEM) arbeiten, wenn: (i) die CPU 202 ein x86 Prozessor ist, der in dem geschützten x-86 Modus arbeitet, (ii) die Speicherseiteneinteilung aktiviert ist und (iii) ds SEM-Bit auf „1" gesetzt ist.
  • Im Allgemeinen steuert der Inhalt des Satzes der Steuerregister 408 die Arbeitsweise der CPU 202. Folglich steuert der Inhalt des Satzes der Steuerregister 408 die Arbeitsweise der Ausführungseinheit 400, der MMU 402, der Kernspeichereinheit 404 und/oder der BIU 406. Der Satz an Steuerregistern 408 kann beispielsweise die mehreren Steuerregister der x86-Prozessorarchitektur enthalten.
  • Die Ausführungseinheit 400 der CPU 202 holt die Instruktionen (beispielsweise x86-Instruktionen) und Daten ab, führt die abgeholten Instruktionen aus und erzeugt Signale (beispielsweise Adressen-, Daten- und Steuersignale) während der Abarbeitung der Instruktionen. Die Ausführungseinheit 400 ist mit der Kernspeichereinheit 404 gekoppelt und kann die Instruktionen von dem Speicher 206 (2) über die Kernspeichereinheit 404 und die BIU 406 empfangen.
  • Der Speicher 206 (2) des Computersystems 200 enthält mehrere Speicherplätze, von denen jede eine einzigartige physikalische Adresse besitzt. Beim Arbeiten in dem geschützten Modus mit aktivierter Seiteneinteilung wird ein Adressenraum der CPU 202 in mehrere Blöcke unterteilt, die als Seitenrahmen oder „Seiten" bezeichnet sind. In dem Speicher 206 werden zu einer gegebenen Zeit lediglich Daten abgelegt, die einem Bereich der Seiten entsprechen. In der Ausführungsform aus 4 repräsentieren Adresssignale, die von der Ausführungseinheit 400 während der Instruktionsabarbeitung erzeugt werden, segmentierte (d. h. „logische") Adressen. Die MMU 402 übersetzt die von der Ausführungseinheit 400 erzeugten segmentierten Adressen in entsprechende physikalische Adressen des Speichers 206. Die MMU 402 leitet die physikalischen Adressen der Kernspeichereinheit 404 zu. Die Kernspeichereinheit 404 ist eine relativ kleine Speichereinheit, die zur Speicherung von Instruktionen und Daten verwendet wird, die zuvor von der Ausführungseinheit 400 abgerufen wurden.
  • Die BIU 406 ist zwischen der Kernspeichereinheit 404 und der Host-Brücke 204 angeordnet. Die BIU 406 wird verwendet, um Instruktionen und Daten, die nicht in der Kernspeichereinheit 404 vorhanden sind, aus dem Speicher 206 über die Host-Brücke 204 zu holen. Die BIU 406 enthält ferner die I/O SCU 216. Die I/O SCU 216 ist mit den SEM-Registern 410, der Ausführungseinheit 404 und der MMU 402 verbunden. Wie zuvor beschrieben ist, überwacht die I/O SCU 216 alle softwareinitiierten Zugriffe auf die I/O-Ports und den I/O-Adressenraum und erlaubt lediglich autorisierte Zugriffe auf die I/O-Ports.
  • 5 ist eine Ansicht, die eine Ausführungsform der I/O SCU 216 aus 4 darstellt. In der Ausführungsform aus 5 enthält die I/O SCU 216 eine Sicherheitsprüflogik 500. Die Sicherheitsprüflogik 500 empfängt ein „Freigabe"-Signal und I/O-Port-Nummer von der Ausführungseinheit 400 und einen Sicherheitskontextidentifizierungs-(SCID) Wert von der MMU 402. Die Ausführungseinheit 400 kann das Freigabesignal vor dem Ausführen einer I/O-Instruktion erstellen, die auf einen „Ziel"-I/O-Port in dem I/O-Adressenraum zugreift. Die I/O-Port-Nummer ist die Nummer des Ziel-I/O-Ports. Der SCID-Wert bezeichnet einen Sicherheitskontextpegel bzw. eine Sicherheitskontextebene der Speicherseite, die die I/O-Instruktion enthält.
  • Wenn das Computersystem 200 aus 2 in dem sicheren Ausführungsmodus (SEM) arbeitet, erzeugt der Sicherheitskernel 304 (3) eine oder mehrere Sicherheitsattributda tenstrukturen (beispielsweise Tabellen) in dem Speicher 206 (2) und verwaltet diese. Jede Speicherseite besitzt einen entsprechenden Sicherheitskontextidentifizierungs- (SCID) Wert, und der entsprechende Sicherheitskontextidentifizierungs- (SCID) Wert wird in den Sicherheitsattributdatenstrukturen gespeichert. Die MMU 402 verwendet eine Adresse, die während der Instruktionsausführung erzeugt wird (beispielsweise eine physikalische Adresse), um auf eine oder mehrere Sicherheitsattributdatenstrukturen zuzugreifen, um die Sicherheitskontextidentifizierungen (SCID's) der entsprechenden Speicherseiten zu ermitteln. Im Allgemeinen besitzt das Computersystem 200n unterschiedliche Sicherheitskontextidentifizierungs-(SCID) Werte, wobei n eine Ganzzahl und n ≥ 1 ist.
  • Wenn das Computersystem 200 aus 2 in dem sicheren Ausführungsmodus (SEM) arbeitet, erzeugt der Sicherheitskernel 304 (3) ferner eine I/O-Erlaubsnisbitstruktur für einen sicheren Ausführungsmodus (SEM) in dem Speicher 206 (2) und verwaltet diese. Wenn die Ausführungseinheit 400 (4) eine I/O-Instruktion einer Aufgabe ausführt, vergleicht eine Logik in der CPU 202 eine aktuelle Privilegebene (CPL) der Aufgabe mit einer I/O-Privilegebene (IOPL). Wenn die aktuelle Privilegebene (CPL) der Aufgabe mindestens so privilegiert ist wie (d. h. numerisch kleiner oder gleich ist zu) der I/O-Privilegebene (IOPL), kann die Logik innerhalb der CPU 202 die Sicherheitsausführungsmodus-(SEM) I/O-Erlaubnisbitstruktur prüfen. Wenn andererseits die aktuelle Privilegebene (CPL) der Aufgabe nicht so privilegiert ist wie (d. h. numerisch größer ist als) die I/O-Privilegebene (IOPL), dann führt die Ausführungseinheit 400 die I/O-Instruktion nicht aus. In einer Ausführungsform tritt dabei ein allgemeiner Schutzfehler auf.
  • Wenn die Ausführungseinheit 400 (4) das Freigabesignal erstellt, liefert die Sicherheitsprüflogik 500 das Freigabesignal, den empfangenen Sicherheitskontextidentifizierungs-(SCID) Wert und die empfangene I/O-Port-Nummer zu der Logik innerhalb der BIU 406. Die Logik in der BIU 406 verwendet den Sicherheitskontextidentifizierungs- (SCID) Wert und die empfangene I/O-Port-Nummer, um auf die Sicherheitsausführungsmodus (SEM) I/O-Erlaubnisbitstruktur zuzugreifen und liefert das entsprechende Bit von der Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur an die Sicherheitsprüflogik 500. Wenn das entsprechende Bit von der Sicherheitsausführungsmodus (SEM) I/O-Erlaubnisbitstruktur auf „0" zurückgesetzt ist, kann die Sicherheitsprüflogik 500 ein Ausgangs- „Ausführungs-" Signal erstellen, das der Ausführungseinheit 400 zugeleitet wird. In Reaktion auf die erzeugten Ausführungssignale kann dann die Ausführungseinheit 400 die I/O-Instruktion aus führen. Wenn andererseits das entsprechende Bit auf „1" gesetzt ist, kann die Sicherheitsprüflogik 500 ein Ausgangs- (SEM) „Sicherheitsausnahme-" Signal erzeugen, das der Ausführungseinheit 400 zugeleitet ist. In Reaktion auf das erzeugte SEM-Sicherheitsausnahmesignal führt die Ausführungseinheit 400 die I/O-Instruktion nicht aus und kann stattdessen eine Sicherheitsausführungsmodus- (SEM) Ausnahmehandhabungsroutine ausführen.
  • Wenn die I/O-Instruktion versucht, auf einen 16-Bit/Wort-I/O-Port oder einen 32-Bit/Doppelwort-I/O-Port zuzugreifen, kann die Ausführungseinheit 400 die I/O-Portnummern mit mehreren Bytes der Sicherheitsprüflogik 500 der Reihe nach zuleiten. Wenn die Sicherheitsprüflogik 500 das Ausführungssignal für jedes Byte der I/O-Port-Nummer erzeugt, kann die Ausführungseinheit 400 die I/O-Anweisung ausführen. Wenn andererseits die Sicherheitsprüflogik 500 das SEM-Sicherheitsausnahmesignal für eines oder mehrere Bytes der I/O-Port-Nummer erstellt, führt die Ausführungseinheit 400 die I/O-Instruktion nicht aus und kann stattdessen die Sicherheitsausführungsmodus- (SEM) Ausnahmehandhabungsroutine ausführen.
  • 6 ist eine Ansicht, die eine Ausführungsform der Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnis-Bit-Struktur, die in 6 mit 600 bezeichnet ist, und eine Ausführungsform eines Mechanismus zum Zugreifen auf die Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur 600 zeigt. Der Mechanismus aus 6 kann in der Logik innerhalb der BIU 406 (4) eingerichtet sein und kann anwendbar sein, wenn das Computersystem 200 in dem sicheren Ausführungsmodus (SEM) betrieben wird. In 6 enthält der Satz an Sicherheitsausführungsmodus- (SEM) Registern 410 ein modellspezifisches Register (MSR) 602. Das modellspezifische Register (MSR) 602 wird verwendet, um eine Anfangs- (d. h. Basis-) Adresse der Sicherheitsausführungsmodus (SEM) I/O-Erlaubnisbitstruktur 600 zu speichern. Wie zuvor beschrieben ist, besitzt das Computersystem 200n unterschiedliche Sicherheitskontextidentifizierungs- (SCID) Werte, wobei n eine Ganzzahl und n ≥ 1 ist. Die Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur 600 enthält eine unterschiedliche I/O-Bitstruktur für jeden der n unterschiedlichen Sicherheitskontextidentifizierungs- (SCID) Werte. Jede der unterschiedlichen I/O-Erlaubnisbitstrukturen enthält 64 k Bits oder 8 k Bytes.
  • In der Ausführungsform aus 6 wird der Sicherheitskontextidentifizierungs- (SCID) Wert der Speicherseite, die die I/O-Instruktion enthält, die auf den I/O-Port zugreift, als ein Offset von dem Inhalt des modellspezifischen Registers 602 (d. h. die Basisadresse der Sicherheitsausführungsmodus- I/O-Erlaubnisbitstruktur 600) in die eine oder mehreren 64 k Bit (8 k-Byte) I/O-Erlaubnisbitstrukturen verwendet, die die Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur 600 bilden. Als Folge davon wird diejenige I/O-Erlaubnisbitstruktur, die dem Sicherheitskontextidentifizierungs- (SCID) Wert entspricht, angesprochen. Die I/O-Port-Nummer wird dann als ein Bit-Offset in die I/O-Erlaubnisbitstruktur verwendet, die dem Sicherheitskontextidentifizierungs- (SCID) Wert entspricht. Das Bit, auf das in dieser Weise zugegriffen wird, ist das Bit, das dem durch die I/O-Port-Nummer gekennzeichneten I/O-Port entspricht.
  • 7 ist eine Ansicht, die eine weitere Ausführungsform der Sicherheitsausführungsmodus (SEM) I/O-Erlaubnisbitstruktur, die in 7 als 700 bezeichnet ist, und eine weitere Ausführungsform des Mechanismus zum Zugreifen auf die Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur zeigt. Der Mechanismus aus 7 kann in der Logik in der BIU 406 (4) eingerichtet sein. In der Ausführungsform aus 7 enthält die Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur 700 eine einzelne 64 k Bit (8k Byte) I/O-Erlaubnisbitstruktur. Die I/O-Port-Nummer wird als ein Bit-Offset von dem Inhalt des modellspezifischen Registers 602 (d. h. die Basisadresse der Sicherheitsausführungsmodus-(I/O-Erlaubnisbitstruktur 700) in die I/O-Erlaubnisbitstruktur verwendet. Das auf diese Weise angesprochene Bit ist das Bit, das dem durch die I/O-Port-Nummer definierten I/O-Port entspricht.
  • 8 ist eine Ansicht einer alternativen Ausführungsform der CPU 202 des Computersystems 200 aus 2. In der Ausführungsform aus 8 enthält die CPU 202 die Ausführungseinheit 404, die Speicherverwaltungseinheit (MMU) 402, die Cache- bzw. Kernspeichereinheit 404, die Busschnittstelleneinheit (BIU) 406, den Satz an Steuerregistern 408 und den Satz an Sicherheitsausführungsmodus- (SEM) Registern 410, die zuvor beschrieben sind. Ferner umfasst die CPU 202 eine Mikrocodierungsmaschine 800 und eine Mikrocodierungsspeicher 802. Die Mikrocodierungsmaschine 800 ist mit der Ausführungseinheit 400, der MMU 402, der Kernspeichereinheit 404, der BIU 406, dem Satz an Steuerregistern 408 und dem Satz an Sicherheitsausführungsmodus- (SEM) Registern 410 verbunden. Die Mikrocodierungsmaschine 800 führt Mikrocodierungsinstruktionen aus, die in dem Mikroco dierungsspeicher 802 abgelegt sind, und erzeugt Signale, die die Vorgänge in der Ausführungseinheit 400, der MMU 402, der Kernspeichereinheit 404 und der BIU 406 in Abhängigkeit von den Mikrocodierungsinstruktionen und den Inhalten des Satzes der Steuerregister 408 und des Satzes der Sicherheitsausführungsmodus- (SEM) Register 410 steuern. Die Mikrocodierungsmaschine 800 kann die Ausführungseinheit 400 beim Ausführen komplexerer Instruktionen des x86-Instruktionssatzes unterstützen.
  • In der Ausführungsform aus 8 bildet ein Teil der Mikrocodierungsinstruktionen, die in dem Mikrocodierungsspeicher 802 abgelegt sind, eine I/O-Sicherheitsprüfcodierung 804. Die I/O-Sicherheitsprüfcodierung 804 wird ausgeführt, wenn das Computersystem 200 aus 2 in dem Sicherheitsausführungsmodus (SEM) betrieben wird und eine I/O-Instruktion der Ausführungseinheit 400 zur Abarbeitung zugeleitet wird. Insbesondere bewirken die Mikrocodierungsinstruktionen der I/O-Sicherheitsprüfcodierung 804, dass die Mikrocodierungsmaschine 800 und die BIU 406 die Funktionen der I/O-SCU 216 (2 bis 4), die zuvor beschrieben ist, ausführen.
  • Wenn beispielsweise eine I/O-Instruktion an die Ausführungseinheit 400 zur Abarbeitung geleitet wird, kann die Ausführungseinheit 400 das Vorhandensein der I/O-Instruktion der Mikrocodierungsmaschine 800 anzeigen. Die Mikrocodierungsmaschine kann Signale an die MMU 402 und die BIU 406 leiten. In Reaktion auf ein Signal von der Mikrocodierungsmaschine 800 kann die MMU 402 den Sicherheitskontextidentifizierungs- (SCID) Wert der Speicherseite, die die I/O-Instruktion enthält, für die BIU 406 bereitstellen. Die Ausführungseinheit 400 kann die I/O-Port-Nummer, auf die von der I/O-Instruktion zugegriffen wird, der BIU 406 zuführen.
  • In Reaktion auf ein Signal von der Mikrocodierungsmaschine 800 kann die BIU 406 den Sicherheitskontextidentifizierungs- (SCID) Wert und die empfangene I/O-Port-Nummer verwenden, um auf die Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur in der oben beschriebenen Weise zuzugreifen, und kann das entsprechende Bit von der Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur der Mikrocodierungsmaschine 800 zuführen. Wenn das entsprechende Bit von der Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur auf „0" zurückgesetzt ist, fährt die Mikrocodierungsmaschine 800 fort, die Ausführungseinheit 400 beim Fertigstellen der Ausführung der I/O-Instruktion zu unterstützen. Wenn andererseits das entsprechende Bit auf „1" gesetzt ist, kann die Mikrocodie rungsmaschine der Ausführungseinheit 400 signalisieren, die Ausführung der I/O-Instruktion zu beenden und die Ausführung der Instruktion der Sicherheitsausführungsmodus- (SEM) Ausnahmehandhabungsroutine zu beginnen.
  • 9 wird nunmehr verwendet, um zu beschreiben, wie die Zuordnung der Sicherheitskontextidentifizierungs- (SCID) Werte und die Erzeugung entsprechender Sicherheitsausführungsmodus (SEM) I/O-Erlaubnisbitstrukturen dazu dienen, Gerätetreiber und zugeordnete Hardwaregeräteeinheiten in dem Computersystem 200 aus 2 für Sicherheitszwecke „in Abteile aufzuteilen". 9 ist eine Ansicht, in der die Abhängigkeiten zwischen den diversen Hardware- und Softwarekomponenten des Computersystems 200 aus 2 dargestellt sind, wobei der Gerätetreiber 306a und die entsprechende Gerätehardwareeinheit 214a in einem ersten Sicherheits- „Abteil" 900 angeordnet sind und wobei der Gerätetreiber 306d und die entsprechende Gerätehardwareeinheit 214d in einen zweiten Sicherheitsabteil 902 angeordnet sind. Die Sicherheitsabteile 900 und 902 sind voneinander getrennt und sind auch funktionelle voneinander isoliert. Lediglich der Gerätetreiber 306a darf auf die Gerätehardwareeinheit 214a zugreifen, und nur der Gerätetreiber 306d darf auf die Gerätehardwareeinheit 214d zugreifen. Diese „Einteilung in Abteile" der Gerätetreiber und der zugeordneten Gerätehardwareeinheiten hilft dabei zu verhindern, dass schadhafte oder fehlerhafte Codierungen den Zustand der Gerätehardwareeinheiten negativ beeinflussen oder den korrekten Betrieb des Computersystems 200 aus 2 stören.
  • Beispielsweise können in der Ausführungsform aus 9 die Speicherseiten mit den Instruktionen der Gerätetreiber 306a und 306d unterschiedlichen Sicherheitskontextidentifizierungs- (SCID) Werten zugeordnet sein. Eine erste Sicherheitsausführungsmodus- (SEM) I/O- Erlaubnisbitstruktur, die für den SCID-Wert des Gerätetreibers 306a erzeugt wurde, kann dem Gerätetreiber 306a erlauben, auf einen ersten Bereich eines I/O-Adressenraumes des Computersystems 200 zuzugreifen, der der Gerätehardwareeinheit 214 zugeordnet ist und kann ferner dem Gerätetreiber 306a verbieten, auf einen zweiten Bereich des I/O-Adressenraumes zuzugreifen, der der Gerätehardwareeinheit 214d zugeordnet ist. In ähnlicher Weise kann eine zweite Sicherheitsausführungsmodus- (SEM) I/O-Erlaubnisbitstruktur, die für den SCID-Wert des Gerätetreibers 306d erzeugt wurde, diesem erlauben, auf den zweiten Bereich des I/O-Adressenraumes zuzugreifen, der der Gerätehardwareeinheit 214d zugeordnet ist, und kann dem Gerätetreiber 306a verbieten, auf den ersten Bereich des I/O-Adressenraumes zuzugreifen, der der Gerätehardwareeinheit 214a zugeordnet ist. Als Folge davon darf lediglich der Gerätetreiber 306a auf die Gerätehardwareeinheit 214a und nur der Gerätetreiber 206d auf die Gerätehardwareeinheit 214d zugreifen.
  • Einige Aspekte der Erfindung, wie sie zuvor dargestellt ist, sind in Hard- oder Software implementierbar. Somit sind einige Teile der detaillierten Beschreibung in Begriffen eines hardwareimplementierten Prozesses und einige Bereiche der detaillierten Beschreibung sind daher im Hinblick auf einen softwareimplementierten Prozess beschrieben, der symbolische Darstellungen von Operationen an Datenbits innerhalb eines Speichers eines Computersystems oder einer Computereinrichtung beinhaltet. Diese Beschreibungen und Darstellungen sind die Mittel, die vom Fachmann zur effizienten Vermittlung seiner Arbeit an andere Fachleute, die mit Hardware und Software vertraut sind, verwendet werden. Die Bearbeitung und die Operation an beiden erfordert physikalische Manipulationen physikalischer Größen. In der Software nehmen diese Größen, obwohl dies nicht notwendig ist, die Form elektrischer, magnetischer oder optischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat sich gelegentlich als günstig erwiesen, insbesondere aus Gründen der gemeinsamen Benutzung, diese Signale als Bits, Werte, Element, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den geeigneten physikalischen Größen verknüpft werden müssen und dass diese lediglich bequeme Namen sind, die diesen Größen verliehen wurden. Sofern nicht anderes gesagt wird oder dies nicht anders deutlich wird in der vorliegenden Beschreibung, bezeichnen diese Beschreibungen Aktionen und Prozesse einer elektronischen Einrichtung, die Daten, die als physikalische (elektronische, magnetische oder optische) Größen innerhalb gewisser Speicherbereiche der elektronischen Einrichtung vorhanden sind, manipulieren und in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen innerhalb eines Speicherbereichs, oder einer Übertragungs- oder Anzeigeeinrichtung dargestellt sind. Beispielhaft für Begriffe, die eine derartige Beschreibung kennzeichnen, sind, ohne Einschränkung, die Begriffe „Bearbeiten", „Berechnen", „Ausrechnen", „Bestimmen", „Darstellen", und dergleichen. Ferner ist zu beachten, dass softwareimplementierte Aspekte der Erfindung typischerweise in einer gewissen Form eines Programmspeichermediums codiert sind oder über eine gewisse Art eines Übertragungsmediums eingerichtet werden. Das Programm speichermedium kann magnetisch (beispielsweise eine Diskette oder ein Festplatte) oder optisch (beispielsweise eine kompakte Scheibe mit einem Nur-Lesespeicher oder „CD-Rom") und kann nur lesbar sein oder einen wahlfreien Zugriff erlauben. Das Übertragungsmedium kann durch verdrillte Leitungspaare, ein Koaxialkabel, eine Glasfaser oder ein beliebiges anderes geeignetes Übertragungsmedium, das im Stand der Technik bekannt ist, repräsentiert sein. Die Erfindung ist nicht durch diese Aspekte einer beliebigen vorgegebenen Implementierung beschränkt.
  • Die speziellen offengelegten Ausführungsformen sind lediglich anschaulicher Natur, da die Erfindung auf viele unterschiedlichen Weisen modifiziert und praktiziert werden kann, die dem Fachmann im Besitze der Lehre hierin offenkundig sind. Daher sind keine Einschränkungen hinsichtlich der Details des Aufbaus oder der Gestaltung, wie sie hierin gezeigt sind, beabsichtigt, sofern diese nicht in den folgenden Patentansprüchen beschrieben sind. Es ist daher klar, dass die obigen speziellen offenbarten Ausführungsformen geändert oder modifiziert werden können und dass alle derartigen Variationen als im Schutzbereich und Grundgedanken der Erfindung liegend betrachtet werden. Daher ist der angestrebte Schutzbereich durch die folgenden Patentansprüche festgelegt.
  • Zusammenfassung
  • Ein Verfahren und eine Vorrichtung zum selektiven Ausführen einer I/O-Instruktion. Das Verfahren umfasst: Erzeugen einer I/O-Erlaubnisbitstruktur (600) in einem Speicher (206) und Empfangen einer I/O-Port-Nummer und eines Sicherheitskontextidentifizierungswertes. Das Verfahren umfasst ferner das Verwenden des Sicherheitskontextidentifizierungswertes und der I/O-Port-Nummer, um auf die gespeicherte I/O-Erlaubnisbitstruktur (600) zuzugreifen, um ein Erlaubnisbit zu erhalten, das dem I/O-Port entspricht, und das Ausführen der I/O-Instruktion in Abhängigkeit eines Wertes des Erlaubnisbits, das dem I/O-Port entspricht. Die I/O-Erlaubnisbitstruktur (600) umfasst mehrere Erlaubnisbits. Jedes der Erlaubnisbits entspricht einem anderen Port von mehreren I/O-Ports. Jedes der Erlaubnisbits besitzt einen Wert, der anzeigt, ob ein Zugriff auf den entsprechenden I/O-Port zulässig ist. Die I/O-Port-Nummer kennzeichnet den I/O-Port, der von einer I/O-Instruktion angesprochen wird. Der Sicherheitskontextidentifizierungswert bezeichnet eine Sicherheitskontextebene einer Speicherstelle, die die I/O-Instruktion enthält.
  • Fig. 1
  • Stand der Technik
  • 104
    I/O-Erlaubnisbitstruktur I/O-Port-Nummer I/O-Strukturbasis bzw. Beginn Segmentgrenze
    102
    Aufgabenzustandssegment (TSS) Segmentbasis bzw. Segmentanfang
  • Fig. 2
  • 204
    Host-Brücke
    206
    Speicher
    208
    Gerätebus
    214a bis 214d
    Gerätehardwareeinheit
    210
    Gerätebusbrücke
    212
    Gerätebus
  • Fig. 3
  • 206
    Speicher
    300
    Anwendungsprogramme
    302
    Betriebssystem
    304
    Sicherheitskernel
    306a bis 306d
    Gerätetreiber
    214a bis 214b
    Gerätehardwareeinheit
  • Fig. 4
  • 400
    Ausführungseinheit segmentierte Adressen
    402
    Speicherverwaltungseinheit physikalische Adressen
    404
    Kernspeichereinheit physikalische Adressen
    406
    Busschnittstelleneinheit
    408
    Steuerregister
    410
    SEM-Register
  • Fig. 5
  • 500
    Sicherheitsprüflogik zu SEM-Register 410 zu/von BIU 406-Logik: Freigabe SCID I/O-Port-Nummer Bitstruktur-Bit Freigabe SCID I/O-Port-Nummer Ausführen SEM-Sicherheitsausnahme
  • Fig. 6
  • 206
    Speicher
    600
    SEM-I/O-Erlaubnisbitstruktur I/O-Port-Nummer
    410
    SEM-Register
  • Fig. 7
  • 206
    Speicher
    700
    SEM-I/O-Erlaubnisbitstruktur I/O-Port-Nummer
    410
    SEM-Register
  • Fig. 8
  • 408
    Steuerregister
    800
    Mikrocodierungsmaschine
    802
    Mikrocodierungsspeicher
    804
    I/O-Sichercodierung
    410
    SEM-Register
    400
    Ausführungseinheit segmentierte Adressen
    402
    Speicherverwaltungseinheit physikalische Adressen
    404
    Kernspeichereinheit physikalische Adressen
    406
    Busschnittstelleneinheit zur Host-Brücke 204
  • Fig. 9
  • 206
    Speicher
    300
    Anwendungsprogramme
    302
    Betriebssystem
    304
    Sicherheitskernel
    306a bis 306d
    Gerätetreiber
    214a bis 214d
    Gerätehardware

Claims (10)

  1. Prozessor (202) der zur Ankopplung an einen Speicher (206) ausgebildet ist, wobei der Prozessor (202) umfasst: eine Ausführungseinheit (400), die ausgebildet ist, I/O-Instruktionen auszuführen; eine Speicherverwaltungseinheit (402), die ausgebildet ist, Daten in dem Speicher (206) zu speichern; und eine Busschnittstelleneinheit (406), die angeschlossen ist, um eine Eingabe/Ausgabe- (I/O)-Port-Nummer und ein Erlaubnisbit entsprechend der I/O-Port-Nummer zu empfangen und um ein Ausgangssignal in Abhängigkeit eines Wertes des Erlaubnisbits zu erzeugen, und wobei die Ausführungseinheit (400) so angeschlossen ist, um das Ausgangssignal zu empfangen und ferner so ausgebildet ist, um die I/O-Instruktion in Abhängigkeit des Ausgangssignals auszuführen.
  2. Der Prozessor (202) nach Anspruch 1, wobei die I/O-Port-Nummer eine Nummer des Eingabe/Ausgabe- (I/O) Ports anzeigt, der von einer I/O-Instruktion angesprochen wird, und wobei die Busschnittstelleneinheit (406) angeschlossen ist, um einen Sicherheitskontextidentifizierungswert zu empfangen, und wobei der Sicherheitskontextidentifizierungswert eine Sicherheitskontextebene einer Speicherstelle kennzeichnet, die die I/O-Instruktion enthält, wobei die Busschnittstelleneinheit (406) ausgebildet ist, den Sicherheitskontextidentifizierungswert und die I/O-Port-Nummer zu verwenden, um auf eine Eingabe/Ausgabe- (I/O) Erlaubnisbitstruktur (600) zuzugreifen, die in dem Speicher (206) abgelegt ist, um das Erlaubnisbit zu erhalten.
  3. Der Prozessor (202) nach Anspruch 2, wobei die Busschnittstelleneinheit (406) mit der Ausführungseinheit (400) und der Speicherverwaltungseinheit (402) verbunden ist, und wobei die I/O-Portnummer von der Ausführungseinheit (400) empfangen wird, und wobei der Sicherheitskontextidentifizierungswert von der Speicherverwaltungseinheit (402) empfangen wird.
  4. Der Prozessor (202) nach Anspruch 2, wobei die I/O-Port-Nummer und der Sicherheitskontextidentifizierungswert während der Ausführung der I/O-Instruktion durch die Ausführungseinheit (400) empfangen werden.
  5. Der Prozessor (202) nach Anspruch 2, wobei die I/O-Erlaubnisbit-Struktur (600) mehrere Erlaubnisbits umfasst, und wobei jedes der Erlaubnisbits einem anderen Port von mehreren I/O-Ports entspricht, und wobei jedes der Erlaubnisbits einen Wert besitzt, der anzeigt, ob ein Zugriff auf den entsprechenden I/O-Port zulässig ist.
  6. Der Prozessor (202) nach Anspruch 2, der ferner ein modellspezifisches Register (602) aufweist, das ausgebildet ist, eine Basisadresse der I/O-Erlaubnisbitstruktur (600) zu speichern, wobei die Busschnittstelleneinheit (406) auf die I/O-Erlaubnisbitstruktur (600) zugreift, um das Erlaubnisbit zu erhalten, das der I/O-Portnummer entspricht, wobei die I/O-Portnummer als ein Bit-Offset von dem Inhalt des modellspezifischen Registers (602) in die I/O-Erlaubnisbitstruktur (600) verwendet wird.
  7. Der Prozessor (202) nach Anspruch 2, wobei die I/O-Erlaubnisbitstruktur (600) eine primäre I/O-Erlaubnisbitstruktur (600) ist, und wobei die primäre I/O-Erlaubnisbitstruktur (600) mehrere sekundäre I/O-Erlaubnisbitstrukturen enthält, und wobei jede der sekundären I/O-Erlaubnisbitstrukturen mehrere Erlaubnisbits aufweist, und wobei jedes der Erlaubnisbits einer gegebenen sekundären I/O-Erlaubnisbitstruktur einem anderen Port von mehreren I/O-Ports entspricht, und wobei jedes der Erlaubnisbits einen Wert aufweist, der anzeigt, ob ein Zugriff auf den entsprechenden I/O-Port zulässig ist, und wobei jeder der sekundären I/O-Erlaubnisbitstrukturen einem anderen von mehreren Sicherheitskontextidentifizierungswerten entspricht.
  8. Der Prozessor (202) nach Anspruch 1, der ferner eine Mikrocodierungsmaschine (800) aufweist, die mit der Ausführungseinheit (400), der Speicherverwaltungseinheit (402) und der Busschnittstelleneinheit (406) verbunden und ausgebildet ist, Mikrocodierungsinstruktionen, die in einem Mikrocodierungsspeicher (802) gespeichert sind, auszuführen, wobei die Mikrocodierungsmaschine (800) Steuersignale während der Ausführung mindestens einer der Mikrocodierungsinstruktionen erzeugt, wobei ein Teil der Mikrocodierungsinstruktionen bewirkt, dass die Mikrocodierungsmaschine (800) Steuersignale erzeugt, die bewirken, dass die Busschnittstelleneinheit (406): die Eingabe/Ausgabe- (I/O) Port-Nummer und einen Sicherheitskontextidentifizierungswert empfängt, wobei die I/O-Port-Nummer eine Nummer eines Eingabe/Ausgabe-(I/O)-Ports kennzeichnet, der von einer I/O-Instruktion angesprochen wird, wobei der Sicherheitskontextidentifizierungswert eine Sicherheitskontextebene einer Speicherstelle kennzeichnet, die die I/O-Instruktion enthält, und den Sicherheitskontextidentifizierungswert und die I/O-Port-Nummer verwendet, um auf eine Eingabe/Ausgabe- (I/O) Erlaubnisbitstruktur (600) zuzugreifen, die in dem Speicher (206) abgelegt ist, um das Erlaubnisbit, das dem I/O-Port entspricht, zu erhalten, und um das Ausgangssignal in Abhängigkeit eines Wertes des Erlaubnisbits zu erzeugen; und wobei die Ausführungseinheit (400) so angeschlossen ist, um das Ausgangssignal zu empfangen und ferner ausgebildet ist, die I/O-Instruktion in Abhängigkeit des Ausgangssignals auszuführen.
  9. Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe- (I/O) Instruktion, wobei das Verfahren umfasst: Erzeugen einer Eingabe/Ausgabe- (I/O) Erlaubnisbitstruktur (600) in einem Speicher (206), wobei die I/O-Erlaubnisbitstruktur (600) mehrere Erlaubnisbits umfasst, und wobei jedes der Erlaubnisbits einem anderen Port von mehreren I/O-Ports entspricht, und wobei jedes der Erlaubnisbits einen Wert besitzt, der anzeigt, ob ein Zugriff auf den entsprechenden I/O-Port zulässig ist; Empfangen einer I/O-Port-Nummer und eines Sicherheitskontextidentifizierungswertes, wobei die I/O-Port-Nummer den I/O-Port kennzeichnet, der von der I/O-Instruktion angesprochen wird, und wobei der Sicherheitskontextidentifizierungswert eine Sicherheitskontextebene einer Speicherstelle kennzeichnet, die die I/O-Instruktion enthält; Verwenden des Sicherheitskontextidentifizierungswertes und der I/O-Port-Nummer um auf die gespeicherte I/O-Erlaubnisbitstruktur (600) zuzugreifen, um ein dem I/O-Port entsprechendes Erlaubnisbit zu erhalten; und Ausführen der I/O-Instruktion in Abhängigkeit eines Werte des Erlaubnisbits, das dem I/O-Port entspricht.
  10. Das Verfahren nach Anspruch 9, wobei Empfangen der I/O-Port-Nummer und des Sicherheitskontextidentifizierungswertes ferner umfasst: Empfangen der I/O-Port-Nummer und des Sicherheitskontextidentifizierungswertes während der Ausführung der I/O-Instruktion, und wobei Ausführen der I/O-Instruktion in Abhängigkeit des Wertes des dem I/O-Port entsprechenden Erlaubnisbits ferner umfasst: Ausführen der I/O-Instruktion, wenn der Wert des Erlaubnisbits, das dem I/O-Port entspricht, anzeigt, dass ein Zugriff auf den I/O-Port zulässig ist.
DE10297687T 2002-03-27 2002-12-17 Prozessor mit Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit und Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-Instruktion Expired - Fee Related DE10297687B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/107,784 2002-03-27
US10/107,784 US7493498B1 (en) 2002-03-27 2002-03-27 Input/output permission bitmaps for compartmentalized security
PCT/US2002/040396 WO2003083671A1 (en) 2002-03-27 2002-12-17 Input/output permission bitmaps for compartmentalized security

Publications (2)

Publication Number Publication Date
DE10297687T5 true DE10297687T5 (de) 2005-07-07
DE10297687B4 DE10297687B4 (de) 2008-11-13

Family

ID=28673583

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297687T Expired - Fee Related DE10297687B4 (de) 2002-03-27 2002-12-17 Prozessor mit Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit und Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-Instruktion

Country Status (8)

Country Link
US (1) US7493498B1 (de)
JP (1) JP4391832B2 (de)
KR (1) KR101001344B1 (de)
CN (1) CN1320466C (de)
AU (1) AU2002361757A1 (de)
DE (1) DE10297687B4 (de)
GB (1) GB2404058B (de)
WO (1) WO2003083671A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
CA2551045C (en) * 2005-06-30 2008-04-22 Hitachi, Ltd. Input-output control apparatus, input-output control method, process control apparatus and process control method
JPWO2007040228A1 (ja) * 2005-10-04 2009-04-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
KR101540798B1 (ko) * 2008-11-21 2015-07-31 삼성전자 주식회사 가상화 환경에서 보안 정보를 제공하기 위한 장치 및 방법
CN102375947A (zh) * 2010-08-16 2012-03-14 伊姆西公司 用于隔离计算环境的方法和系统
CN103632088A (zh) 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
US9043632B2 (en) 2012-09-25 2015-05-26 Apple Inc. Security enclave processor power control
US8775757B2 (en) 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
US9047471B2 (en) 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
US8832465B2 (en) * 2012-09-25 2014-09-09 Apple Inc. Security enclave processor for a system on a chip
JP5920595B2 (ja) * 2013-07-16 2016-05-18 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
CN106326130B (zh) * 2015-06-16 2019-03-15 辰芯科技有限公司 寄存器地址空间的控制方法、控制器及片上系统
US10261748B2 (en) * 2015-12-18 2019-04-16 Intel Corporation Technologies for protecting audio data with trusted I/O
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
WO2022171299A1 (en) * 2021-02-12 2022-08-18 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
US5596739A (en) * 1994-02-08 1997-01-21 Meridian Semiconductor, Inc. Method and apparatus for detecting memory segment violations in a microprocessor-based system
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
JPH10232878A (ja) * 1997-02-19 1998-09-02 Hitachi Ltd ドキュメント管理方法および装置
JP4522548B2 (ja) * 2000-03-10 2010-08-11 富士通フロンテック株式会社 アクセス監視装置及びアクセス監視方法
US6978018B2 (en) * 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment

Also Published As

Publication number Publication date
AU2002361757A1 (en) 2003-10-13
US7493498B1 (en) 2009-02-17
CN1623143A (zh) 2005-06-01
GB0423536D0 (en) 2004-11-24
JP2005521941A (ja) 2005-07-21
KR20040101332A (ko) 2004-12-02
GB2404058B (en) 2005-11-02
CN1320466C (zh) 2007-06-06
WO2003083671A1 (en) 2003-10-09
GB2404058A (en) 2005-01-19
DE10297687B4 (de) 2008-11-13
KR101001344B1 (ko) 2010-12-14
JP4391832B2 (ja) 2009-12-24

Similar Documents

Publication Publication Date Title
DE10297687B4 (de) Prozessor mit Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit und Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-Instruktion
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
DE10394383B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE112005003340B4 (de) Mechanismus zum Bestimmen der Vertrauenswürdigkeit von Außerbandverwaltungsagenten
DE69724862T2 (de) Verfahren und Anordnung für die Zugangs- und Informationsverfälschungskontrolle in Rechnersystemen
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
DE112005002304B4 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE112004003066B4 (de) Verwendung mehrerer Monitore virtueller Maschinen zur Abwicklung priviligierter Ereignisse
DE10392470B4 (de) System und Verfahren zum Ausführen von Initialisierungsbefehlen einer gesicherten Umgebung
DE2456602C2 (de) Multiprogramierbare Datenverarbeitungsanordnung mit interner Programmierung und virtuellem Speicher
DE10196440B4 (de) Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung
DE112009000344T5 (de) Zugriffsrechte auf eine Speicher-Map
DE112007001321T5 (de) Ausführung eines Sichere-Umgebungs-Initialisierungsbefehls in einem Punkt-zu-Punkt-Verbindungssystem
DE2458065A1 (de) Datenverarbeitungsanlage mit sicherung der daten gegen unberechtigten zugriff
DE102007046475A1 (de) Überwachen eines Ausführungsmusters eines Target-Agents auf einem VT-fähigen System
DE2517276A1 (de) Datenverarbeitungssystem
DE10297494T5 (de) System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit
DE112005002405T5 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE19635204A1 (de) Ausnahme-Sicherheitsschaltung
DE112007000688B4 (de) Fehlerverwaltungstopologien
DE112007002085T5 (de) Zugriffssteuerung für Speicherraum in Mikroprozessorsystemen
DE69815006T2 (de) Datenverarbeitungseinheit mit Fehlerbeseitungsmöglichkeiten
DE112007003206T5 (de) Neukonfigurieren eines sicheren Systems
DE102016220639A1 (de) Speicherschutzeinheit und Verfahren zum Schützen eines Speicheradressraumes

Legal Events

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

Ref document number: 10297687

Country of ref document: DE

Date of ref document: 20050707

Kind code of ref document: P

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8328 Change in the person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130702