[go: up one dir, main page]

DE10297686T5 - System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems - Google Patents

System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems Download PDF

Info

Publication number
DE10297686T5
DE10297686T5 DE10297686T DE10297686T DE10297686T5 DE 10297686 T5 DE10297686 T5 DE 10297686T5 DE 10297686 T DE10297686 T DE 10297686T DE 10297686 T DE10297686 T DE 10297686T DE 10297686 T5 DE10297686 T5 DE 10297686T5
Authority
DE
Germany
Prior art keywords
access
memory
page
bus
signals
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
DE10297686T
Other languages
English (en)
Other versions
DE10297686B4 (de
Inventor
Geoffrey Austin Strongin
Brian C. Round Rock Barnes
Rodney Dripping Springs Schmidt
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.)
Advanced Micro Devices 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 DE10297686T5 publication Critical patent/DE10297686T5/de
Application granted granted Critical
Publication of DE10297686B4 publication Critical patent/DE10297686B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Aiming, Guidance, Guns With A Light Source, Armor, Camouflage, And Targets (AREA)
  • Credit Cards Or The Like (AREA)
  • Accommodation For Nursing Or Treatment Tables (AREA)

Abstract

Vorrichtung mit:
einer Sicherheitsprüfeinheit (416, 418), die ausgebildet ist, an ein Übertragungsmedium (408, 412) angekoppelt zu werden, wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, um:
Signale auf dem Übertragungsmedium (408, 412) zu überwachen,
einen Versuch einer ersten Einrichtung, die mit dem Übertragungsmedium (408, 412) verbunden ist, auf eine zweite Einrichtung (414a bis d) zuzugreifen, die mit dem Übertragungsmedium (408, 412) verbunden ist, auf der Grundlage der Signale zu erfassen,
eine Identität der ersten Einrichtung (414a bis 414b) auf der Grundlage der Signale zu bestimmen, und
einen Zugriff der ersten Einrichtung (414a bis d) auf die zweite Einrichtung (414a bis d) in Abhängigkeit der Identität der ersten Einrichtung (414a bis d) zu steuern.

Description

  • QUERVERWEIS ZU VERWANDTEN ANMELDUNGEN
  • Die Patentanmeldung betrifft die anhängige Patentanmeldung mit der Nr. 10/011,151 mit dem Titel "System und Verfahren zum Handhaben von Gerätezugriffen zu einem Speicher", wobei eine erhöhte Speicherzugriffssicherheit bereitgestellt wird und betrifft die anhängige Patentanmeldung mit der Nr. 10/005,271 mit dem Titel "Speicherverwaltungssystem und Verfahren zum Bereitstellen einer erhöhten Speicherzugriffssicherheit", die beide am 5. Dezember 2001 eingereicht wurden, und betrifft die anhängige Patentanmeldung mit der Nr. 10/108,253 (Anwaltsaktenzeichen 2000.055900/TT4079) mit dem Titel "System und Verfahren zum Bereitstellen gebietsstrukturierter, hardwaregesteuerter Speicherverschlüsselung, die am gleichen Tage wie die vorliegende Patentanmeldung eingereicht wurde.
  • TECHNISCHES GEBIET
  • Diese Erfindung betrifft im Allgemeinen Computersysteme und betrifft insbesondere Strukturen und Verfahren zum Bereitstellen eines Zugriffsschutzes für Computersystemkomponenten.
  • HINTERGRUND
  • Ein typisches Computersystem enthält eine Speicherhierarchie, um ein relativ hohes Maß an Leistungsfähigkeit bei relativ geringen Kosten zu erreichen. Befehle von diversen unterschiedlichen Softwareprogrammen werden typischerweise auf einer relativ großen aber langsamen nicht flüchtigen Speichereinheit (beispielsweise ein Laufwerk) gespeichert. Wenn ein Anwender eines der Programme zur Abarbeitung auswählt, werden die Instruktionen des ausgewählten Programms in eine Hauptspeichereinheit kopiert und eine zentrale Recheneinheit (CPU) erhält die Anweisungen des ausgewählten Programms von der Hauptspeichereinheit zugeleitet. Die gut bekannte virtuelle Speicherverwaltungstechnik ermöglicht es der CPU, auf Datenstrukturen zuzugreifen, die größer sind als die Kapazität der Hauptspeichereinheit, indem lediglich ein Teil der Datenstrukturen innerhalb der Hauptspeichereinheit zu einer gegebenen Zeit gespeichert wird. Der Rest der Datenstrukturen ist in der relativ großen aber langsamen nicht flüchtigen Speichereinheit gespeichert und wird lediglich nur bei Bedarf in die Hauptspeichereinheit eingeladen.
  • Ein virtueller Speicher wird typischerweise eingerichtet, indem ein Adressenraum der CPU in mehrere Blöcke, die als Seitenrahmen oder "Seiten" bezeichnet werden, unterteilt wird.
  • Lediglich Daten, die einem Bereich der Seiten entsprechen, werden in der Hauptspeichereinheit zu einer gegebenen Zeit gespeichert. Wenn die CPU eine Adresse innerhalb einer gegebenen Seite erzeugt und eine Kopie dieser Seite nicht in der Hauptspeichereinheit abgelegt ist, wird die erforderliche Seite mit den Daten von der relativ großen aber langsamen nicht flüchtigen Speichereinheit in die Hauptspeichereinheit eingeladen. Während dieses Prozesses kann eine weitere Datenseite von der Hauptspeichereinheit in die nicht flüchtige Speichereinheit kopiert werden, um für die geforderte Seite Platz zu schaffen.
  • Die populäre 80×86 (x86) Prozessorarchitektur enthält spezialisierte Hardwareelemente, um einen geschützten virtuellen Adressenmodus (d. h. einen geschützten Modus) zu unterstützen. Unter Verwendung der 1 bis 3 wird nun beschrieben, wie ein ×86-Prozessor sowohl einen virtuellen Speicher als auch Speicherschutzmerkmale einrichtet. 1 ist eine Ansicht eines bekannten Übersetzungsmechanismus 100 von einer linearen zur physikalischen Adresse der x86-Prozessorarchitektur. Der Adressenübersetzungsmechanismus 100 ist in einem x86-Prozessor eingerichtet und beinhaltet eine lineare Adresse 102, die in dem x86-Prozessor erzeugt wird, ein Seitentabellenverzeichnis (d. h. ein Seitenverzeichnis) 104, mehrere Seitentabellen mit einer Seitentabelle 106, mehrere Seitenrahmen mit einem Seitenrahmen 108 und ein Steuerregister 3 (CR3) 110. Das Seitenverzeichnis 104 und die mehreren Seitentabellen sind in Seiten eingeteilte Speicherdatenstrukturen, die durch eine Betriebssystemsoftware (d. h. ein Betriebsystem) erzeugt und bewahrt werden. Das Seitenverzeichnis 104 ist stets in einem Speicher (beispielsweise einer Hauptspeichereinheit) angeordnet. Der Einfachheit halber wird angenommen, dass die Seitentabelle 106 und der Seitenrahmen 108 ebenso in dem Speicher angeordnet sind.
  • Wie in 1 gezeigt ist, wird die lineare Adresse 102 in drei Bereiche unterteilt, um die Übersetzung der linearen in die physikalische Adresse zu erreichen. Es werden die höchstrangigsten Bits von C3 110 verwendet, um ein Seitenverzeichnisbasisregister zu speichern.
  • Das Seitenverzeichnisbasisregister ist eine Basisadresse einer Speicherseite, die das Speicherverzeichnis 104 enthält. Das Speicherverzeichnis 104 enthält mehrere Seitenverzeichnisseinträde, zu denen ein Seitenverzeichniseintrag 112 gehört. Ein oberer "Verzeichnisindex"-Bereich der linearen Adresse 102, der die höchstrangigsten oder signifikantesten Bits der linearen Adresse 102 enthält, wird als ein Index für das Seitenverzeichnis 104 verwendet. Der Seitenverzeichniseintrag 112 wird aus einem Seitenverzeichnis 104 unter Anwendung des Seitenverzeichnisbasisregisters aus CR3 110 und dem oberen "Verzeichnisindex"-Bereich der linearen Adresse 102 ausgewählt.
  • 2 ist eine Ansicht eines Seitenverzeichniseintragsformats 200 der x86-Prozessorarchitektur. Wie in 2 gezeigt ist, enthalten die höchstrangigsten (d. h. die signifikantesten) Bits eines gegebenen Seitenverzeichniseintrags eine Seitentabellenbasisadresse, wobei die Seitentabellenbasisadresse eine Basisadresse einer Speicherseite ist, die eine entsprechende Seitentabelle enthält. Die Seitentabellenbasisadresse des Seitenverzeichniseintrags 112 wird verwendet, um die entsprechende Seitentabelle 106 auszuwählen.
  • Es sei wieder auf 1 verwiesen; die Seitentabelle 106 enthält mehrere Seitentabelleneinträge einschließlich eines Seitentabelleneintrags 114. Ein mittlerer "Tabellenindex"-Bereich der linearen Adresse 102 wird als ein Index für die Seitentabelle 106 verwendet, wodurch der Seitentabelleneintrag 114 ausgewählt ist. 3 ist eine Ansicht eines Seitentabelleneintragsformats 300 der x86-Prozessorarchitektur. Wie in 3 gezeigt ist, enthalten die höchstrangigsten (d. h. die signifikantesten) Bits eines gegebenen Seitentabelleneintrags eine Seitenrahmenbasisadresse, wobei die Seitenrahmenbasisadresse eine Basisadresse eines entsprechenden Seitenrahmens ist.
  • Es sei wieder auf 1 verwiesen; es wird die Seitenrahmenbasisadresse des Seitentabelleneintrags 114 verwendet, um den entsprechenden Seitenrahmen 108 auszuwählen. Der Seitenrahmen 108 enthält mehrere Speicherstellen. Ein unterer oder "Offset"-Bereich der linearen Adresse 102 wird als ein Index für den Seitenrahmen 108 verwendet. Bei Kombination bilden die Seitenrahmenbasisadresse des Seitentabelleneintrags 114 und der Offset-Bereich der linearen Adresse 102 die physikalische Adresse, die der linearen Adresse 102 entspricht, und kennzeichnen eine Speicherposition 116 innerhalb des Seitenrahmens 108. Die Speicherposition 116 besitzt die physikalische Adresse, die sich aus der Übersetzung der linearen in die physikalische Adresse ergibt.
  • Hinsichtlich der Speicherschutzmerkmale enthalten das Seitenverzeichniseintragsformat 200 aus 2 und das Seitentabelleneintragsformat 300 aus 3 ein Anwender/Überwacher-(U/S) Bit und ein Lese/Schreib-(R/W)-Bit. Der Inhalt des U/S-Bits und des R/W-Bits wird von dem Betriebssystem verwendet, um entsprechende Seitenrahmen (d. h. Speicherseiten) vor einem nicht autorisierten Zugriff zu schützen. U/S=0 wird verwendet, um Betriebssystemspeicherseiten zu kennzeichnen und entspricht einer "Überwachungs-"Ebene" des Betriebssystems. Die Überwachungsebene des Betriebssystems entspricht der momentanen Privilegebene 0 (CPL0) von Softwareprogrammen und Routinen, die von dem x86-Prozessor ausgeführt werden. (Die Überwachungsebene kann auch CPL1 und/oder CPL2 des x86-Prozessors entsprechen.) U/S=1 wird benutzt, um Anwenderspeicherseiten zu kennzeichnen und entspricht einer "Anwender"-Ebene des Betriebssystems. Die Anwenderebene des Betriebssystems entspricht CPL3 des x86-Prozessors. (Die Anwenderebene kann ferner auch CPL1 und/oder CPL2 des x86-Prozessors entsprechen.) Das R/W-Bit wird verwendet, um Zugriffsarten zu kennzeichnen, die für die entsprechende Speicherseite zulässig sind. R/W=0 zeigt an, dass lediglich Lesezugriffe für die entsprechende Speicherseite zulässig sind (d. h. die entsprechende Speicherseite ist "nur lesbar"). R/W=1 zeigt an, dass sowohl Lese- als auch Schreibzugriffe für die entsprechende Speicherseite zulässig sind (d. h. die entsprechende Speicherseite ist "lesbar-schreibbar").
  • Während des Übersetzungsvorganges von der linearen in die physikalische Adresse nach 1 werden die Inhalte der U/S-Bits des Seitenverzeichniseintrags 112 und des Seitentabelleneintrags 114 entsprechend dem Seitenrahmen 108 logisch Und-verknüpft, um zu bestimmen, ob der Zugriff auf den Speicherrahmen 108 autorisiert ist. In ähnlicher Weise werden die Inhalte der R/W-Bits des Seitenverzeichniseintrags 112 und des Seitentabelleneintrags 114 logisch Und-verknüpft, um zu bestimmen, ob der Zugriff auf den Seitenrahmen 108 autorisiert ist. Wenn die logischen Verknüpfungen der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 autorisiert ist, wird die Speicherposition 116 unter Anwendung der physikalischen Adresse ausgelesen.
  • Wenn andererseits die logischen Verknüpfungen der U/S- und der R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 nicht autorisiert ist, wird nicht auf die Speicherposition 116 zugegriffen und es wird eine Schutzfehleranzeige ausgegeben.
  • Nachteiligerweise sind die zuvor beschriebenen Speicherschutzmechanismen der x86-Prozessorarchitektur nicht ausreichend, um in dem Speicher gespeicherte Daten zu schützen. Beispielsweise kann ein beliebiges Softwareprogramm oder eine Routine, die auf der Überwachungsebene operiert (beispielsweise eine CPL von 0 aufweist), auf einen beliebigen Bereich des Speichers zugreifen und kann einen beliebigen Bereich des Speichers modifizieren (d. h. diesen beschreiben), der nicht als "nur lesen" (R/W=0) markiert ist. Ferner kann beim Operieren auf der Überwachungsebene das Softwareprogramm oder die Routine die Attribute (d. h. die U/S- und R/W-Bits) eines beliebigen Bereichs des Speichers ändern. Das Softwareprogramm oder die Routine kann damit einen beliebigen Bereich des Speichers, der als "nur lesen" gekennzeichnet ist, in "lesen-schreiben" (R/W=1) ändern und dann im weiteren Verlauf diesen Bereich des Speichers ändern.
  • Die Schutzmechanismen der x86-Prozessorarchitektur sind ferner nicht angemessen, fehlerhafte oder zerstörende Zugriffe auf den Speicher mittels Hardwareeinrichtungen zu vermeiden, die funktionsmäßig mit dem Speicher verbunden sind. Es ist zwar richtig, dass Bereiche des Speichers, die als "nur lesen" bezeichnet sind, nicht durch Schreibzugriffe modifiziert werden können, die von Hardwareeinheiten bewirkt werden (wenn nicht die Attribute jener Bereiche des Speichers zunächst geändert werden, wie dies zuvor beschrieben ist). Ferner trifft auch zu, dass Softwareprogramme oder Routinen (beispielsweise Gerätetreiber), die den Datentransfer zwischen Hardwaregeräten und dem Speicher regeln, typischerweise auf der Anwenderebene (beispielsweise CPL3) operieren, und nicht auf Bereich des Speichers zugreifen dürfen, die als Überwachungsebene (U/S=0) markiert sind. Jedoch gelten die Schutzmechanismen der x86-Prozessorarchitektur lediglich für Gerätezugriffe auf den Speicher, die als Folge der Abarbeitung einer Instruktion ausgeführt werden (d.h. programmierte Eingabe/Ausgabe). Ein Gerätetreiber kann ein Hardwaregerät programmieren, das eine Bussteuerungs- oder DMA-Fähigkeit aufweist, um Daten von dem Gerät in einen beliebigen Bereich des Speichers zu übertragen, auf den mittels des Hardwaregeräts zugegriffen werden kann. Beispielsweise ist es relativ einfach, eine Laufwerkssteuerung zu programmieren, um Daten von einem Laufwerk direkt in einen Bereich des Speichers zu übertragen, der verwendet wird, um das Betriebssystem zu speichern.
  • Des weiteren betreffen die Schutzmechanismen der x86-Prozessorarchitektur nicht Zugriffe zwischen einzelnen Geräten. Alle Komponenten eines Computersystems einschließlich der Hardwaregeräte bzw. Einheiten sind typischerweise so miteinander funktionsmäßig gekoppelt, um eine Kommunikation zu ermöglichen. Während der Systeminitialisierung (d. h. "Hochlaufen") führt die CPU Befehle aus, die die Hardwaregeräte konfigurieren (d. h. programmieren), um gewünschte Funktionen auszuführen. Während des normalen Betriebs des Computersystems finden Zugriffe zwischen der CPU und den Hardwaregeräten unter Anwendung etablierter Protokolle statt. Jedoch kann eine fehlerhafte Gerätetreibersoftware ein erstes Hardwaregerät programmieren, das eine Bussteuerungs- oder DMA-Fähigkeit aufweist, um auf ein zweites Hardwaregerät zuzugreifen, um damit vertrauliche Informationen von dem zweiten Hardwaregerät zu erhalten oder um eine programmierte Funktion des zweiten Hardwaregerätes zu ändern. Ein derartiger Zugriff kann sogar zur Programmierung des zweiten Hardwaregerätes derart führen, dass dieses so arbeitet, dass ein physikalischer Schaden an dem zweiten Hardwaregerät auftritt.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • In einem Aspekt der vorliegenden Erfindung wird eine Vorrichtung bereitgestellt. Die Vorrichtung umfasst eine Sicherheitsprüfeinheit (SCU), die ausgebildet ist, um an ein Übertragungsmedium angekoppelt zu werden. Die SCU ist ausgebildet, Signale auf dem Übertragungsmedium zu überwachen und einen Versuch eines ersten an das Übertragungsmedium gekoppelten Geräts auf der Grundlage der Signale zu erkennen, auf ein zweites Gerät zuzugreifen, das mit dem Übertragungsmedium gekoppelt ist. Die SCU ist ferner so ausgebildet, um eine Identität des ersten Geräts auf der Grundlage der Signale zu bestimmen und den Zugriff auf das zweite Gerät durch das erste Gerät in Abhängigkeit der Identität des ersten Gerätes zu steuern.
  • In einem weiteren Aspekt der vorliegenden Erfindung wird eine weitere Vorrichtung bereitgestellt. Diese Vorrichtung umfasst eine Sicherheitsprüfeinheit (SCU), die ausgebildet ist, dass sie an ein Übertragungsmedium angekoppelt wird. Diese SCU ist ausgebildet, Signale auf dem Übertragungsmedium zu überwachen und auf der Grundlage der Signale einen Versuch von einem ersten an das Übertragungsmedium gekoppelten Geräts zu erkennen, auf ein zweites Gerät zuzugreifen, das mit dem Übertragungsmedium verbunden ist. Diese SCU ist ferner so ausgebildet, um eine Identität des ersten Geräts auf der Grundlage der Signale zu bestimmen und um auf der Grundlage der Identität des ersten Geräts zu bestimmen, ob das erste Gerät für einen Zugriff auf das zweite Gerät autorisiert ist. Diese SCU ist ferner ausgebildet, das zweite Gerät zu konfigurieren, um Zugriffsversuche durch das erste Gerät zuzulassen, wenn das erste Gerät autorisiert ist, auf das zweite Gerät zuzugreifen.
  • In einem noch weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum Bereitstellen einer Zugriffssicherheit für ein gewisses Gerät bereitgestellt. Das Verfahren umfasst das Überwachen von Signalen und das Erkennen des Versuchs des Zugreifens auf das gewisse Gerät durch ein weiteres Gerät auf der Grundlage der Signale. Das Verfahren umfasst ferner Anwenden der Signale, um eine Identität des weiteren Geräts zu erkennen und Steuern des Zugriffs auf das gewisse Gerät in Abhängigkeit der Identität des weiteren Geräts.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung kann durch Bezugnahme auf die folgende Beschreibung in Zusammenhang mit den begleitenden Zeichnungen verstanden werden, wobei gleiche Bezugszeichen ähnliche Elemente bezeichnen und wobei:
  • 1 eine Ansicht eines gut bekannten Übersetzungsmechanismus von linearer zur physikalischen Adresse der x86-Prozessarchitektur ist;
  • 2 eine Ansicht eines Seitenverzeichniseintragsformats der x86-Prozessorarchitektur ist;
  • 3 eine Ansicht eines Seitentabelleneintragsformats der x86-Prozessorarchitektur ist;
  • 4 eine Ansicht einer Ausführungsform eines Computersystems ist, das eine CPU und eine System- oder "Host"-Brücke enthält, wobei die CPU eine CPU-Sicherheitsprüfeinheit (SCU) aufweist und wobei die Host-Brücke eine Host-Brücken-SCU enthält.
  • 5 eine Ansicht ist, die die Beziehungen zwischen diversen Hardware- und Softwarekomponenten des Computersystems aus 4 zeigt;
  • 6 eine Ansicht einer Ausführungsform der CPU des Computersystems aus 4 ist, wobei die CPU eine Speicherverwaltungseinheit (MMU) enthält;
  • 7 eine Ansicht einer Ausführungsform der MMU aus 6 ist, wobei die MMU eine Seitenbildungseinheit aufweist und wobei die Seitenbildungseinheit die CPU SCU enthält;
  • 8 eine Ansicht einer Ausführungsform der CPU SCU aus 7 ist;
  • 9 eine Ansicht einer Ausführungsform eines Mechanismus ist, um auf einen Sicherheitsattributtabellen- (SAT) Eintrag einer ausgewählten Speicherseite zuzugreifen, um zusätzliche Sicherheitsinformationen der ausgewählten Speicherseite zu erhalten;
  • 10 eine Ansicht einer Ausführungsform eines SAT-Ersatzregisters ist;
  • 11 eine Ansicht einer Ausführungsform eines SAT-Verzeichniseintragsformats ist;
  • 12 eine Ansicht einer Ausführungsform eines SAT-Eintragsformats ist;
  • 13 ein Diagramm einer Ausführungsform der Host-Brücke aus 4 ist, wobei die Host-Brücke die Host-Brücken SCU enthält;
  • 14 eine Ansicht einer Ausführungsform der Host-Brücken SCU aus 13 ist;
  • 15 ein Flussdiagramm einer Ausführungsform eines ersten Verfahrens ist, um Zugriffssicherheit für einen Speicher zu gewährleisten, der zur Speicherung von Daten verwendet ist, die in mehreren Speicherseiten angeordnet sind;
  • 16 ein Flussdiagramm einer Ausführungsform eines zweiten Verfahrens ist, um Zugriffssicherheit für einen Speicher zu gewährleisten, der zur Speicherung von Daten verwendet wird, die in mehreren Speicherseiten angeordnet sind;
  • 17 eine Ansicht einer Ausführungsform der Host-Brücken SCU 418 aus 4 ist, wobei die Host-Brücken SCU 418 eine Zugriffsautorisierungstabelle enthält; und
  • 18 ein Flussdiagramm einer Ausführungsform eines Verfahrens ist, das in einem System anwendbar ist, das ein erstes Gerät und ein zweites Gerät aufweist, die an einen Bus gekoppelt sind, wobei das Verfahren eine Zugriffssicherheit für das zweite Gerät bietet.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Ausführungsformen unterliegen kann, sind dennoch spezielle Ausführungsformen hierin beispielhaft in den Zeichnungen gezeigt und im Weiteren detailliert beschrieben. Es sollte jedoch selbstverständlich sein, dass die Beschreibung spezieller Ausführungsformen hierin 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, wie sie durch die angefügten Patentansprüche definiert ist, liegen.
  • ART BZW. ARTEN ZUM AUSFÜHREN DER ERFINDUNG
  • Es werden nun anschauliche Ausführungsformen der Erfindung beschrieben. Der Einfachheit halber werden nicht alle Merkmale einer tatsächlichen Implementierung in dieser Beschreibung dargestellt. Es sollte jedoch klar sein, dass bei der Entwicklung einer derartigen eigentlichen Ausführungsform zahlreiche implementationsspezifische Entscheidungen getroffen werden müssen, um die speziellen Ziele der Entwickler, etwa Kompatibilität mit systembedingten und geschäftsbedingten Rahmenbedingungen zu erreichen, die sich von Implementierung zu Implementierung unterscheiden können. Ferner ist zu beachten, dass ein derartiger Entwicklungsaufwand komplex und zeitaufwendig sei kann, aber dennoch eine Routinearbeit darstellt, die vom Fachmann im Besitze der vorliegenden Offenbarung durchgeführt werden kann.
  • 4 ist eine Ansicht einer Ausführungsform eines Computersystems 400 mit einer CPU 402, einer System- oder "Host"-Brücke 404, einem Speicher 406, einem ersten Gerätebus 408 (beispielsweise ein peripher Komponentenverbindungs- oder PCI-Bus), einer Gerätebusbrücke 410, einem zweiten Gerätebus 412 (beispielsweise einem industriellen Standardarchitektur- oder ISA-Bus) und vier Gerätehardwareeinheiten 414a bis 414d. Die Host-Brücke 404 ist mit der CPU 402, dem Speicher 406 und dem Gerätebus 408 verbunden. Die Host-Brücke 404 befördert Signale zwischen der CPU 402 und dem Gerätebus 408 und verbindet funktionsmäßig den Speicher 406 mit der CPU 402 und dem Gerätebus 408. Die Gerätebusbrücke 410 ist zwischen dem Gerätebus 408 und dem Gerätebus 412 angeschlossen und befördert Signale zwischen dem Gerätebus 408 und dem Gerätebus 412. In der Ausführungsform aus 4 sind die Gerätehardwareeinheiten 414a und 414b mit dem Gerätebus 408 verbunden und die Gerätehardwareeinheiten 414c und 414d sind mit dem Gerätebus 412 verbunden. Eine oder mehrere der Gerätehardwareeinheiten 414a bis 414d können beispielsweise Speichereinrichtungen (z. B. Festplattenlaufwerke, Diskettenlaufwerke und CD-Rom-Laufwerke), Kommunikationsgeräte (beispielsweise Modem-Geräte und Netzwerkadapter) oder Eingabe/Ausgabe-Geräte (beispielsweise Videoeinrichtungen, Audioeinrichtungen und Drucker) sein.
  • In der Ausführungsform aus 4 enthält die CPU 402 eine CPU-Sicherheitsprüfeinheit (SCU) 416, und die Host-Brücke 404 enthält eine Host-Brücken SCU 418. Wie nachfolgend detaillierter beschrieben ist, schützt die CPU SCU 416 den Speicher 406 vor unautorisierten Zugriffen, die von der CPU 402 erzeugt werden (d. h. "softwareinitiierte Zugriffe"), und die Host-Brücken-SCU 418 schützt den Speicher 406 vor unautorisierten Zugriffen, die von den Gerätehardwareeinheiten 414a bis 414d (d. h. "hardwareinitiierte Zugriffe") erzeugt werden. Zu beachten ist, dass in anderen Ausführungsformen die Host-Brücke 404 ein Teil der CPU 402 sein kann, wie dies in 4 gezeigt ist.
  • 5 ist eine Ansicht, in der die Beziehungen zwischen diversen Hardware- und Softwarekomponenten des Computersystems 400 aus 4 gezeigt sind. In der Ausführungsform aus 5 sind mehrere Anwendungsprogramme 500, ein Betriebssystem 502, ein Sicherheitskernel 504 und Gerätetreiber 506a bis 506d in dem Speicher 406 abgelegt. Die Anwendungsprogramme 500, das Betriebssystem 502, der Sicherheitskernel 504 und die Gerätetreiber 506a bis 506d enthalten Anweisungen, die von der CPU 402 abgearbeitet werden. Das Betriebssystem 502 stellt eine Anwendungsschnittstelle und eine Software"Plattform" bereit, auf der die Anwendungsprogramme 500 laufen. Das Betriebssystem 502 kann ferner beispielsweise grundlegende Hilfsfunktionen bereitstellen, zu denen beispielsweise die Dateisystemverwaltung, die Prozessverwaltung und die Eingabe/Ausgabe-(I/O) Steuerung gehören.
  • Das Betriebssystem 502 kann ferner grundlegende Sicherheitsfunktionen bereitstellen. Beispielsweise kann die CPU 402 (4) ein x86-Prozessor sein, der Anweisungen des x86-Instruktionssatzes ausführt. In dieser Situation kann die CPU 402 spezialisierte Hardware elemente enthalten, um sowohl einen virtuellen Speicher als auch Speicherschutzmerkmale in dem geschützten Modus, wie dies zuvor beschrieben ist, bereitzustellen. Das Betriebssystem 502 kann beispielsweise eines der Betriebssysteme der Windows-Familie sein (Microsoft Corp., Redmond, WA), das die CPU 402 in dem geschützten Modus betreibt und die spezialisierten Hardwareelemente der CPU 402 verwendet, um sowohl einen virtuellen Speicher als auch einen Speicherschutz in dem geschützten Modus bereitzustellen.
  • Wie später detailliert erläutert ist, liefert der Sicherheitskernel 504 zusätzliche Sicherheitsfunktionen, die über die von dem Betriebssystem 502 bereitgestellten Sicherheitsfunktionen hinausgehen, um in dem Speicher 406 gespeicherte Daten vor einem unautorisierten Zugriff zu schützen. In der Ausführungsform aus 5 sind die Gerätetreiber 506a bis 506d funktionsmäßig mit den entsprechenden Gerätehardwareeinheiten 414a bis 414d verknüpft und mit diesen verbunden. Die Gerätehardwareeinheiten 414a und 414d sind "sichere" Geräte bzw. Einheiten und die entsprechenden Gerätetreiber 506a und 506d sind "sichere" Gerätetreiber. Der Sicherheitskernel 504 ist zwischen dem Betriebssystem 502 und den sicheren Gerätetreibern 506a und 506d angeordnet und überwacht alle Zugriffe der Anwendungsprogramme 500 und des Betriebssystems 502 auf die sicheren Gerätetreiber 506a und 506d und die entsprechenden sicheren Geräte 414a und 414d. Der Sicherheitskernel 504 verhindert unautorisierte Zugriffe auf die sicheren Gerätetreiber 506a und 506d und die entsprechenden sicheren Geräte 414a und 414d von den Anwendungsprogrammen 500 und dem Betriebssystem 502.
  • Wie in 5 gezeigt ist, ist der Sicherheitskernel 504 mit der CPU SCU 416 und der Host-Brücken SCU 518 (beispielsweise über einen oder mehrere Gerätetreiber) verbunden. Wie nachfolgend detaillierter beschrieben ist, steuern die CPU CSU 416 und die Host-Brücken SCU 418 die Zugriffe auf den Speicher 406. Die CPU SCU 416 überwacht alle softwareinitiierten Zugriffe auf den Speicher 406 und die Host-Brücken SCU 418 überwacht alle hardwareinitiierten Zugriffe auf den Speicher 406. Sobald die CPU SCU 416 und die Host-Brücken SCU 418 durch den Sicherheitskernel 504 konfiguriert sind, erlauben diese lediglich autorisierte Zugriffe auf den Speicher 406.
  • In der Ausführungsform aus 5 sind die Gerätetreiber 506b und 506c "nicht sichere" Gerätetreiber und die entsprechenden Gerätehardwareeinheiten 414b und 414c sind "nicht sichere" Gerätehardwareeinheiten. Die Gerätetreiber 506b und 506c und die entsprechen den Gerätehardwareeinheiten 414b und 414c können beispielsweise "vererbte" Gerätetreiber und Gerätehardwareeinheiten sein.
  • Zu beachten ist, dass in anderen Ausführungsformen der Sicherheitskernel 504 ein Teil des Betriebssystems 502 sein kann. In noch anderen Ausführungsformen können der Sicherheitskernel 504, die Gerätetreiber 506a und 506d und/oder die Gerätetreiber 506 und 506c Teil des Betriebssystems 502 sein.
  • 6 ist eine Ansicht einer Ausführungsform der CPU 402 des Computersystems 400 aus 4. In der Ausführungsform aus 6 enthält die CPU 402 eine Ausführungseinheit 600, eine Speicherverwaltungseinheit (MMU) 602, eine Rechner- bzw. Kern- (Cache-)speichereinheit 604, eine Busschnittstelleneinheit (BIU) 606, einen Satz aus Steuerregistern 608 und einen Satz aus Sicherheitsausführungsmodus- (SEM) Registern 610. Die CPU SCU 416 ist in der MMU 602 angeordnet. Wie später detailliert beschrieben ist, wird der Satz aus SEM-Registern 610 verwendet, um einen Sicherheitsausführungsmodus (SEM) in dem Computersystem 400 aus 4 einzurichten, und die Operationen der CPU SCU 416 und der Host-Brücken SCU 418 werden von den Inhalten des Satzes der SEM-Register 610 gesteuert. Auf die SEM-Register 610 wird von dem Sicherheitskernel 504 (5) zugegriffen (d. h. beschrieben und/oder ausgelesen). Das Computersystem 400 aus 4 kann beispielsweise in dem SEM arbeiten, wenn: (i) die CPU 402 ein x86-Prozessor ist, der in den x86-geschützten Modus arbeitet, (ii) wenn die Speicherseiteneinteilung aktiviert ist und (iii) die Inhalte der SEM-Register 610 einen SEM-Betrieb spezifizieren.
  • Im Allgemeinen regelt der Inhalt des Satzes der Steuerregister 608 den Betrieb der CPU 402. Daher steuert der Inhalt des Satzes an Steuerregister 608 den Betrieb der Ausführungseinheit 600, der MMU 602, der Kernspeichereinheit 604 und/oder der BIU 606. Zu dem Satz an Steuerregistern 608 können beispielsweise die mehreren Steuerregister der x86-Prozessorarchitektur gehören.
  • Die Ausführungseinheit 600 der CPU 402 holt Instruktionen (beispielsweise x86-Instruktionen) und Daten ab, führt die abgeholten Anweisungen aus und erzeugt Signale (beispielsweise Adressen-, Daten- und Steuersignale) während der Abarbeitung der Anweisungen. Die Ausführungseinheit 600 ist mit der Kernspeichereinheit 604 verbunden und kann Anweisungen von dem Speicher 406 (4) über die Kernspeichereinheit 604 und die BIU 606 erhalten.
  • Der Speicher 406 (4) des Computersystems 400 umfasst mehrere Speicherplätze, die jeweils eine einzigartige physikalische Adresse besitzen. Beim Betrieb im geschützten Modus und mit aktiver Seitenbildung ist ein Adressenraum der CPU 402 in mehrere Blöcke unterteilt, die als Seitenrahmen oder "Seiten" bezeichnet werden. Wie zuvor beschrieben ist, werden nur Daten, die einem Bereich der Seiten entsprechen, in dem Speicher 406 zu einer gegebenen Zeit gespeichert. In der Ausführungsform aus 6 repräsentieren Adresssignale, die von der Ausführungseinheit 600 während der Abarbeitung der Instruktionen erzeugt werden, segmentierte (d. h. "logische") Adressen. Wie nachfolgend beschrieben ist, übersetzt die MMU 602 die von der Ausführungseinheit 600 erzeugten segmentierten Adressen in entsprechende physikalische Adressen des Speichers 406. Die MMU 602 leitet die physikalischen Adressen der Kernspeichereinheit 604 zu. Die Kernspeichereinheit 604 ist eine relativ kleine Speichereinheit, die zur Speicherung von Instruktionen und Daten verwendet wird, die kürzlich von der Ausführungseinheit 600 abgerufen wurden. Die BIU 606 ist zwischen der Kernspeichereinheit 604 und der Host-Brücke 404 angeordnet und wird verwendet, um Instruktionen und Daten von dem Speicher 406 über die Host-Brücke 404 abzuholen, die nicht in der Kernspeichereinheit 604 enthalten sind.
  • 7 ist eine Ansicht einer Ausführungsform der MMU 602 aus 6. In der Ausführungsform aus 7 enthält die MMU 602 eine Segmentierungseinheit 700, eine Seitenbildungseinheit 702 und eine Auswahllogik 704 zum Auswählen von Ausgängen der Segmentierungseinheit 700 und der Seitenbildungseinheit 702, um eine physikalische Adresse zu erzeugen. Wie in 7 gezeigt ist, empfängt die Segmentierungseinheit 700 eine segmentierte Adresse von der Ausführungseinheit 600 und wendet einen bekannten Übersetzungsmechanismus von einer segmentierten in eine lineare Adresse der x86-Prozessorarchitektur an, um eine entsprechende lineare Adresse an einem Ausgang zu erzeugen. Wie in 7 gezeigt ist, empfängt die Seitenbildungseinheit 702, wenn diese durch ein "Seitenbildungs-"Signal freigegeben ist, die linearen Adressen, die von der Segmentierungseinheit 700 erzeugt wurden und erzeugt entsprechende physikalische Adressen an einem Ausgang. Das Seitenbildungssignal kann eine Entsprechung des Seitenbildungsmarkierungs-(PG) Bits in einem Steuerregister 0 (CR0) der x86-Prozessorarchitektur und des Satzes der Steuerregister 608 (6) sein. Wenn das Seitenbildungssignal nicht erkannt wird, ist die Seitenunterteilung des Speichers nicht aktiv und die Auswahllogik 704 erzeugt die lineare Adresse, die von der Segmentierungseinheit 700 empfangen wird, als die physikalische Adresse.
  • Wenn das Seitenbildungssignal erkannt wird, ist die Speicherseitenunterteilung aktiviert und die Seitenbildungseinheit 702 übersetzt die von der Segmentierungseinheit 700 empfangene lineare Adresse in eine entsprechende physikalische Adresse, wobei der zuvor beschriebene Mechanismus 100 zur Übersetzung der linearen in eine physikalische Adresse der x86-Prozessorarchitektur (1) angewendet wird. Wie zuvor beschrieben ist, werden während des Vorgangs zum Übersetzen der linearen in die physikalische Adresse die Inhalte der U/S-Bits des ausgewählten Seitenverzeichniseintrags und des ausgewählten Seitentabelleneintrags logisch Und-verknüpft, um zu bestimmen, ob der Zugriff auf einen Seitenrahmen autorisiert ist. In ähnlicher Weise werden die Inhalte der R/W-Bits des ausgewählten Seitenverzeichniseintrags und des ausgewählten Seitentabelleneintrags logisch Und-verknüpft, um zu bestimmen, ob der Zugriff auf den Seitenrahmen autorisiert ist. Wenn die logischen Verknüpfungen der U/S und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen autorisiert ist, erzeugt die Seitenbildungseinheit 702 die physikalische Adresse, die sich aus dem Übersetzungsvorgang von der linearen Adresse in die physikalische Adresse ergibt. Die Auswahllogik 704 empfängt die von der Seitenbildungseinheit 702 erzeugte physikalische Adresse, erzeugt die von der Seitenbildungseinheit 702 empfangene physikalische Adresse als die physikalische Adresse und leitet die physikalische Adresse der Kernspeichereinheit 604 zu.
  • Wenn andererseits die logischen Verknüpfungen der U/S und R/W Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 nicht autorisiert ist, erzeugt die Seitenbildungseinheit 702 keine physikalische Adresse während des Übersetzungsvorgangs von der linearen in die physikalische Adresse. Stattdessen erzeugt die Seitenbildungseinheit 702 ein allgemeines Schutzfehler-(GPF) Signal und die MMU 602 leitet das GPF-Signal an die Ausführungseinheit 600 weiter. In Reaktion auf das GPF-Signal kann die Ausführungseinheit 600 eine Ausnahmehandhabungsroutine ausführen und kann schließlich die Ausführung eines der Anwendungsprogramme 500 (5) unterbrechen, das gerade läuft, wenn das GPF-Signal erkannt wird.
  • In der Ausführungsform aus 7 ist die CPU SCU 416 in der Seitenbildungseinheit 702 der MMU 602 angeordnet. Die Seitenbildungseinheit 702 kann ferner einen Übersetzungsnebenpuffer (TLB) zum Speichern einer relativ geringen Anzahl an kürzlich bestimmten Übersetzungen von der linearen Adresse in die physikalische Adresse enthalten.
  • 8 ist eine Ansicht einer Ausführungsform der CPU SCU 416 aus 7. In der Ausführungsform aus 8 enthält die CPU SCU 416 eine Sicherheitsprüflogik 800, die mit dem Satz der SEM-Register 610 (6) verbunden ist, und einen Sicherheitsattributtrabellen-(SAT) Eintragspuffer 802. Wie nachfolgend beschrieben ist, enthalten die SAT-Einträge zusätzliche Sicherheitsinformationen, die über die U/S- und R/W-Bits der Seitenverzeichnis- und Seitentabelleneinträge, die den Speicherseiten entsprechen, hinausgehen. Die Sicherheitsprüflogik 800 verwendet die innerhalb eines gegebenen SAT-Eintrags enthaltene zusätzliche Sicherheitsinformation, um unautorisierte softwareinitiierte Zugriffe auf die entsprechende Speicherseite zu verhindern. Der SAT-Eintragspuffer 802 wird verwendet, um eine relativ geringe Anzahl an SAT-Einträgen von Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde.
  • Wie zuvor beschrieben ist, wird der Satz aus SEM-Registern 610 verwendet, um einen Sicherheitsausführungsmodus (SEM) in dem Computersystem 400 aus 4 einzurichten. Der Inhalt des Satzes der SEM-Register 610 steuert den Betrieb der CPU SCU 416. Die Sicherheitsprüflogik 800 enthält Informationen, die in dem SAT-Eintragspuffer 802 zu speichern ist, von der MMU's 602 über einen Kommunikationsbus, der in 8 gezeigt ist. Die Sicherheitsprüflogik 800 empfängt ferner eine von der Seitenbildungseinheit 702 erzeugte physikalische Adresse.
  • Die 9 bis 11 werden nun verwendet, um zu beschreiben, wie zusätzliche Sicherheitsinformationen von Speicherseiten, die unter Anwendung des Adressenübersetzungsmechanismus 100 aus 1 ausgewählt werden, in dem Computersystem 400 aus 4 gewonnen werden. 9 ist eine Ansicht einer Ausführungsform eines Mechanismus 900 zum Zugreifen auf einen SAT-Eintrag einer ausgewählten Speicherseite, um zusätzliche Sicherheitsinformationen der ausgewählten Speicherseite zu erhalten. Der Mechanismus 900 aus 9 kann in der Sicherheitsprüflogik 800 aus 4 eingerichtet sein und kann implementiert werden, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird. Der Mechanismus 900 beinhaltet eine physikalische Adresse 902, die von dem Seitenbil dungsmechanismus 702 (7) unter Anwendung des Adressenübersetzungsmechanismus 100 aus 1 erzeugt wurde, ein SAT-Verzeichnis 904, mehrere SAT's mit einer SAT 906 und ein SAT-Basisadressenregister 908 des Satzes aus SEM-Registern 610. Das SAT-Verzeichnis 104 und die mehreren SAT's einschließlich der SAT 906 sind SEM-Datenstrukturen, die von dem Sicherheitskernel 504 (5) erzeugt und verwaltet werden. Wie nachfolgend beschrieben ist, wird das SAT-Verzeichnis 104 (wenn dieses vorhanden ist) und jede benötigte SAT in den Speicher 406 kopiert, bevor auf diese zugegriffen wird.
  • Das SAT-Basisadressenregister 908 enthält ein Anwesenheits- (P) Bit, das die Anwesenheit einer zulässigen SAT-Verzeichnisbasisadresse innerhalb des SAT-Basisadressenregister 908 anzeigt. Die höchstrangigsten (d. h. signifikantesten) Bits des SAT-Basisadressenregisters 908 sind für die SAT-Verzeichnisbasisadresse reserviert. Die SAT-Verzeichnisbasisadresse ist eine Basisadresse einer Speicherseite, die das SAT-Verzeichnis 904 enthält. Wenn P = 1, ist die SAT-Verzeichnisbasisadresse zulässig und die SAT-Tabellen spezifizieren die Sicherheitsattribute der Speicherseite. Wenn P = 0 ist die SAT-Verzeichnisbasisadresse nicht zulässig, es existieren keine SAT-Tabellen und die Sicherheitsattribute der Speicherseiten werden aus einem SAT-Ersatzregister bestimmt.
  • 10 ist eine Ansicht einer Ausführungsform des SAT-Ersatzregisters 1000. In der Ausführungsform aus 10 enthält das SAT-Ersatzregister 1000 ein sicheres Seiten- (SP) Bit. Das SP-Bit zeigt an, ob alle Speicherseiten sichere Seiten sind oder nicht. Wenn beispielsweise SP = 0 sind möglicherweise nicht alle Speicherseiten sichere Seiten und wenn SP = 1 sind alle Speicherseiten sichere Seiten.
  • Es sei wieder auf 9 verwiesen und es werde angenommen, dass das P-Bit des SAT-Basisadressenregisters 908 eine "1" ist; somit wird die physikalische Adresse 902, die von der Seitenbildungslogik 702 (7) erzeugt wird, in drei Bereiche unterteilt, um auf den SAT-Eintrag der ausgewählten Speicherseite zuzugreifen. Wie zuvor beschrieben ist, ist die SAT-Verzeichnisbasisadresse des SAT-Basisadressenregisters 908 die Basisadresse der Speicherseite, die das SAT-Verzeichnis 904 enthält. Das SAT-Verzeichnis 904 enthält mehrere SAT-Verzeichniseinträge einschließlich eines SAT-Verzeichniseintrags 910. Jeder SAT-Verzeichniseintrag kann eine entsprechende SAT in dem Speicher 406 aufweisen. Ein "oberer" Bereich der physikalischen Adresse 902, der die höchstrangigsten oder signifikantesten Bits der physikalischen Adresse 902 enthält, wird als ein Index für das SAT- Verzeichnis 904 verwendet. Der SAT-Verzeichniseintrag 910 wird aus dem SAT-Verzeichnis 904 unter Anwendung der SAT-Verzeichnisbasisadresse des SAT-Basisadressenregisters 908 und dem oberen Bereich der physikalischen Adresse 902 ausgewählt.
  • 11 ist eine Ansicht einer Ausführungsform eines SAT-Verzeichniseintragsformat 1100. Gemäß 11 enthält jeder SAT-Verzeichniseintrag ein Anwesenheits-(P) Bit, das die Anwesenheit einer gültigen SAT-Basisadresse in dem SAT-Verzeichniseintrag kennzeichnet. In der Ausführungsform aus 11 sind die höchstrangigsten (d. h. die signifikantesten) Bits jedes SAT-Verzeichniseintrags für eine SAT-Basisadresse reserviert. Die SAT-Basisadresse ist eine Basisadresse einer Speicherseite, die eine entsprechende SAT enthält. Wenn P = 1 ist die SAT-Basisadresse zulässig und die entsprechende SAT ist in dem Speicher 406 abgelegt.
  • Wenn P = 0 ist die SAT-Basisadresse nicht zulässig und die entsprechende SAT existiert nicht im Speicher 406 und muss von einer Speichereinrichtung (beispielsweise einem Plattenlaufwerk) in den Speicher 406 kopiert werden. Wenn P = 0 kann die Sicherheitsprüflogik 800 einen Seitenfehler an die Logik in der Seitenbildungseinheit 702 ausgeben und die MMU 602 kann das Seitenfehlersignal zu der Ausführungseinheit 600 weiterleiten (6). In Reaktion auf das Seitenfehlersignal kann die Ausführungseinheit 600 eine Seitenfehlerhandhabungsroutine ausführen, die die benötigte SAT aus der Speichereinrichtung abruft und die benötigte SAT in dem Speicher 406 ablegt. Wenn die benötigte SAT in dem Speicher 406 abgelegt ist, wird das P-Bit des entsprechenden SAT-Verzeichniseintrags auf "1" gesetzt und der Mechanismus 900 wird fortgesetzt.
  • Es sei wieder auf 9 verwiesen; ein "mittlerer" Bereich der physikalischen Adresse 902 wird als ein Index für die SAT 906 verwendet. Der SAT-Eintrag 906 wird somit aus der SAT 906 unter Anwendung der SAT-Basisadresse des SAT-Verzeichniseintrags 910 und dem mittleren Bereich der physikalischen Adresse 902 ausgewählt. 12 ist eine Ansicht einer Ausführungsform eines SAT-Eintragformats 1200. In der Ausführungsform aus 12 enthält jeder SAT-Eintrag ein sicheres Seiten- (SP) Bit. Das SP-Bit zeigt an, ob die ausgewählte Speicherseite eine sichere Seite ist oder nicht. Wenn beispielsweise SP = 0 ist die ausgewählte Speicherseite keine sichere Seite und wenn SP = 1 ist die ausgewählte Seite eine sichere Seite.
  • Die BIU 606 (6) ruft die benötigten Datenstruktureinträge aus dem Speicher 406 ab und leitet die SEM-Datenstruktureinträge der MMU 602 zu. Es sei nun auf 8 verwiesen; die Sicherheitsprüflogik 800 empfängt die SEM-Datenstruktureinträge von der MMU 602 und der Seitenbildungseinheit 702 über den Kommunikationsbus. Wie zuvor beschrieben ist, wird der SAT-Eintragspuffer 802 verwendet, um eine relativ geringe Anzahl von SAT-Einträgen von Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde. Die Sicherheitsprüflogik 800 speichert einen gegebenen SAT-Eintrag in dem SAT-Eintragspuffer 802 zusammen mit einem "Markierungs-"Bereich der entsprechenden physikalischen Adresse.
  • Während eines nachfolgenden Speicherseitenzugriffs vergleicht die Sicherheitsprüflogik 800 einen "Markierungs-"Bereich einer von der Seitenbildungseinheit 702 erzeugten physikalischen Adresse mit Markierungsbereichen von physikalischen Adressen, die den in dem SAT-Eintragspuffer 802 gespeicherten SAT-Einträgen entsprechen. Wenn der Markierungsbereich der physikalischen Adresse mit einem Markierungsbereich einer physikalischen Adresse, die einem in dem SAT-Eintragspuffer 802 gespeicherten SAT-Eintrag entspricht, übereinstimmt, greift die Sicherheitsprüflogik 800 auf den SAT-Eintrag in dem SAT-Eintragspuffer 802 zu, und vermeidet damit die Notwendigkeit, den Prozess aus 9 auszuführen, um den SAT-Eintrag von dem Speicher 406 zu erhalten. Der Sicherheitskernel 504 (5) modifiziert den Inhalt des SAT-Basisadressenregisters 908 in der CPU 402 (beispielsweise während Kontextänderungen). In Reaktion auf Modifizierungen des SAT-Basisadressenregisters 908 kann die Sicherheitsprüflogik 800 der CPU SCU 416 dem SAT-Eintragspuffer 802 löschen.
  • Wenn das Computersystem 400 aus 4 in dem SEM arbeitet, empfängt die Sicherheitsprüflogik 800 die aktuelle Privilegebene bzw. Pegel (CPL) der momentan abzuarbeitenden Aufgabe (d. h. der momentan auszuführenden Anweisung) zusammen mit dem Seitenverzeichniseintrags- (PDE) U/S-Bit, dem PDE R/W-Bit, dem Seitentabelleneintrag (PTE) U/S-Bit und dem PTE R/W-Bit einer ausgewählten Speicherseite, in der eine physikalische Adresse angeordnet ist. Die Sicherheitsprüflogik 800 verwendet die obige Information zusammen mit dem SP-Bit des SAT-Eintrags, der der ausgewählten Speicherseite entspricht, um zu bestimmen, ob der Zugriff auf den Speicher 406 autorisiert ist.
  • Die CPU 402 aus 6 kann ein x86-Prozessor sein und kann ein Codesegment- (CS) Register aufweisen, d. h. eines der 16-Bit-Segmentregister der x86-Prozessorarchitektur. Jedes Segmentregister bestimmt einen 64 K-Block an Speicher, der als ein Segment bezeichnet wird. In dem geschützten Modus mit aktivierter Seiteneinteilung wird das CS-Register mit einem Segmentselektor beschrieben, der ein ausführbares Segment des Speichers 406 bezeichnet. Die höchstrangigsten (d. h. signifikantesten Bits) des Segmentselektors werden verwendet, um Informationen zu speichern, die ein Segment eines Speichers kennzeichnen, das eine nächste Anweisung enthält, die von der Ausführungseinheit 600 der CPU 402 (6) auszuführen ist. Ein Instruktionszeiger- (IP) Register wird verwendet, um einen Offset zu dem Segment, das durch das CS-Register gekennzeichnet ist, zu speichern. Das CS:IP-Paar kennzeichnet eine segmentierte Adresse der nächsten Anweisung. Die beiden niedrigrangigsten, d. h. am wenigsten signifikanten, Bits des CS-Registers werden verwendet, um einen Wert zu speichern, der eine momentane Privilegebene bzw. Pegel (CPL) einer Aufgabe kennzeichnet, die aktuell von der Ausführungseinheit 600 abgearbeitet wird (d. h. die CPL der aktuellen Aufgabe).
  • Die Tabelle 1 unten zeigt beispielhafte Regeln für CPU-initiierte (d. h. softwareinitiierte) Speicherzugriffe, wenn das Computersystem 400 aus 4 in dem SEM arbeitet. Die CPU SCU 416 (4 bis 8) und der Sicherheitskernel 504 (5) arbeiten zusammen, um die Regeln der Tabelle 1 einzurichten, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird, um eine zusätzliche Sicherheit für in dem Speicher 406 gespeicherte Daten vorzusehen, die über die Datensicherheit hinausgeht, die von dem Betriebssystem 502 (5) bereitgestellt wird.
  • Tabelle 1. Beispielhafte Regeln für softwareinitiierte Speicherzugriffe, wenn das Computersystem 400 aus Fig. 4 in dem SEM arbeite
    Figure 00200001
    • Bemerkung (1): Inhalte von typischen Speicherseiten, auf die zugegriffen wurden, enthalten Sicherheitskernel- und SEM-Datenstrukturen.
    • Bemerkung (2): Der Versuch des Schreibens bewirkt ein GPF; wenn die ausgewählte Speicherseite eine sichere Seite (SP=1) ist, wird ein SEM-Sicherheitsausnahme anstelle des GPF angezeigt.
    • Bemerkung (3): Der Inhalt einer typischen Seite, auf die zugegriffen wird, enthält Hochsicherheitsanwendungen.
    • Bemerkung (4): Der Inhalt einer typischen Seite, auf die zugegriffen wird, enthält OS-Kernel und Ring-0-Gerätetreiber.
    • Bemerkung (5): Ein Zugriffsversuch bewirkt ein GPF; wenn die ausgewählte Speicherseite eine sichere Seite ist (SP = 1), wird eine SEM-Sicherheitsausnahme anstelle des GPF angezeigt.
    • Bemerkung (6): Der Inhalt einer typischen Seite, auf die zugegriffen wird, enthält Anwendungen.
  • In der Tabelle 1 oben ist das SP-Bit der augenblicklich abgearbeiteten Instruktion das SP-Bit des SAT-Eintrags, der der Speicherseite entspricht, die die augenblicklich abgearbeitete Instruktion enthält. Das U/S-Bit der ausgewählten Speicherseite ist die logische Und-Verknüpfung des PDE U/S-Bits und des PTE U/S-Bits der ausgewählten Speicherseite. Das R/W-Bit der ausgewählten Speicherseite ist die logische Und-Verknüpfung des PDE R/W-Bits und PTE R/W-Bits der ausgewählten Speicherseite. Das Symbol "X" kennzeichnet "beliebig": der logische Wert kann entweder "0" oder "1" sein.
  • Es sei wieder auf 8 verwiesen; die Sicherheitsprüflogik 800 der CPU SCU 416 erzeugt ein allgemeines Schutzfehler- ("GPF") Signal und ein "SEM-Sicherheitsausnahme-" Signal und liefert das GPF-Signal und das SEM-Sicherheitsausnahme-Signal zu der Logik innerhalb der Seitenbildungseinheit 702. Wenn die Sicherheitsprüflogik 800 das GPF-Signal erkennt, leitet die MMU 602 das GPF-Signal zu der Ausführungseinheit 600 (6) weiter. In Reaktion auf das GPF-Signal kann die Ausführungseinheit 600 den gut bekannten Interrupt-Diskriptor-Tabellen- (IDT) Vektorisierungsmechanismus der x86-Prozessorarchitektur verwenden, um auf eine GPF-Handhabungsroutine zuzugreifen und diese auszuführen.
  • Wenn die Sicherheitsprüflogik 800 das SEM-Sicherheitsausnahmesignal erkennt, leitet die MMU 602 das SEM-Sicherheitsausnahmesignal zu der Ausführungseinheit 600 weiter. Anders als bei normalen Prozessorausnahmeroutinen, die die Nutzung des IDT-Vektorisierungsmechanismus der x86-Prozessorarchitektur ausnutzen, kann auch ein anders Vektorisierungsverfahren verwendet werden, um die SEM-Sicherheitsausnahmen zu handhaben. Die SEM-Sicherheitsausnahmen können durch zwei Register (beispielsweise modelspezifische Register oder MSR ausgelöst werden in ähnlicher Weise wie die x86- "SYSENTER" und "SYSEXIT"-Instruktionen arbeiten. Das Registerpaar können "Sicherheitsausnahmeeintragspunkt"-Register sein und können eine Verzweigungszieladresse für die Abarbeitung der Anweisung sein, wenn eine SEM-Sicherheitsausnahme auftritt. Die Sicherheitsausnahmeeintragspunktregister können den Codesegment- (CS), dann den Anweisungszeiger- (IP oder die 64-Bit-Version RIP-Version), den Stapelsegment- (SS) und den Stapelzeiger- (SP oder die 64-Bit-Vesion RSP) Wert definieren, die beim Einsprung in eine SEM-Sicherheitsausnahmehandhabung verwendet werden. Unter Softwaresteuerung kann die Ausführungseinheit 600 (6) die vorhergehenden Werte von SS, SP/RSP, EFLAGS, CS und IP/RIP auf einen neuen Stapel ablegen, um zu kennzeichnen, wo die Ausnahme auftrat. Ferner kann die Ausführungseinheit 600 einen Fehlercode auf dem Stapel ablegen. Zu beachten ist, dass ein normaler Rücksprung von der Interrupt- (IRET) Anweisung nicht verwendet wird, da die vorhergehenden SS- und SP/RSP-Werte immer gesichert werden und eine Stapelumschaltung immer erreicht wird, selbst wenn eine Änderung in der CPL nicht auftritt. Folglich kann eine neue Anweisung definiert werden, um einen Rücksprung aus der SEM-Sicherheitsausnahmehandhabungsroutine zu erreichen.
  • 13 ist eine Ansicht einer Ausführungsform der Host-Brücke 404 aus 4. In der Ausführungsform aus 13 umfasst die Host-Brücke 404 eine Host-Schnittstelle 1300, eine Brückenlogik 1302, eine Host-Brücken SCU 418, eine Speichersteuerung 1304, eine Gerätebusschnittstelle 1306 und eine Busüberwachung 1308. Die Host-Schnittstelle 1300 ist mit der CPU 402 in Verbindung und die Gerätebusschnittstelle 1306 ist mit dem Gerätebus 408 verbunden. Die Brückenlogik 1302 ist zwischen der Host-Schnittstelle 1300 und der Gerätebusschnittstelle 1306 angeordnet. Die Speichersteuerung 1304 ist mit dem Speicher 406 verbunden und führt alle Zugriffe auf den Speicher 406 aus. Die Host-Brücken SCU 418 ist zwischen der Brückenlogik 1302 und der Speichersteuerung 1304 angeordnet. Wie zuvor beschrieben ist, steuert die Host-Brücken SCU 418 den Zugriff auf den Speicher 406 über die Gerätebusschnittstelle 1306. Die Host-Brücken SCU 418 überwacht alle Zugriffe auf den Speicher 406 über die Gerätebusschnittstelle 1306 und erlaubt lediglich autorisierte Zugriffe auf den Speicher 406.
  • In der Ausführungsform aus 13 ist die Busüberwachung 1308 mit der Gerätebusschnittstelle 1306, der Brückenlogik 1302 und der Host-Brücken SCU 418 verbunden. Die Busüberwachung 1308 verteilt die Aufgaben zwischen der Brückenlogik 1302, den Gerätehardwareeinheiten 414a und 414b (4) und der Gerätebusbrücke 410 (4), um den Gerätebus 408 (4) zu steuern. (Die Gerätehardwareeinheiten 414c und 414d aus 4 greifen auf den Gerätebus 408 über die Gerätebusbrücke 410 zu.) Im Allgemeinen enthält der Gerätebus 408 eine oder mehrere Signalleitungen, die ein Bewilligungssignal übertragen, wobei das Bewilligungssignal einer von mehreren Zuständen ist, die andeuten, welches der Geräte, die mit dem Gerätebus 408 verbunden sind, die Steuerung über den Gerätebus 408 ausübt. Die Busüberwachung 1308 legt das Bewilligungssignal auf die eine oder mehreren Signalleitungen, die das Bewilligungssignal übermitteln. Die Busüberwachung 1308 kann typischerweise separate Anforderungssignale von den Gerätehardwareeinheiten 414a und 414b und der Gerätebusbrücke 410 empfangen, wobei jedes Anforderungssignal von den Geräten erstellt wird, wenn das entsprechende Gerät die Steuerung über den Gerätebus 408 benötigt. Die Busüberwachung 1308 kann getrennte Bewilligungssignale zu den Gerätehardwareeinheiten 414a und 414b und zu der Gerätebusbrücke 410 aussenden, wobei ein gegebenenes Bewilligungssignal ausgegeben wird, um anzuzeigen, dass die Steuerung des Gerätebusses 408 durch das entsprechende Gerät bewilligt ist. Wie später detailliert beschrieben ist, arbeiten die Busüberwachung 1308 und die Host-Brücken SCU 418 zusammen, um innerhalb des Computersystems 400 eine Zugriffssicherheit von Gerät zu Gerät bereitzustellen.
  • 14 ist eine Ansicht einer Ausführungsform der Host-Brücken SCU 418 aus 13. In der Ausführungsform aus 14 umfasst die Host-Brücken SCU 418 eine Sicherheitsprüflogik 400, die mit einem Satz an SEM-Registern 1402 und einem SAT-Eintragspuffer 1404 gekoppelt ist. Der Satz aus SEM-Registern 1402 regelt den Betrieb der Sicherheitsprüflogik 1400 und enthält ein zweites SAT-Basisadressenregister 908 aus 9. Das zweite SAT-Basisadressenregister 908 des Satzes an SEM-Registern 1402 kann ein adressierbares Register sein. Wenn der Sicherheitskernel 504 (5) den Inhalt des SAT-Basisadressenregisters 908 in dem Satz der SEM-Register 610 der CPU 402 modifiziert (beispielsweise eines Kontextwechsels), kann der Sicherheitskernel 504 auch den gleichen Wert in das zweite SAT-Basisadressenregister 908 in dem Satz aus SEM-Registern 1402 der Host-Brücken SCU 418 schreiben. In Reaktion auf die Modifizierungen des zweiten SAT-Basisadressenregister 908 kann die Sicherheitsprüflogik 1400 die Host-Brücken-SCU 418 den SAT-Eintragspuffer 1404 löschen.
  • Die Sicherheitsprüflogik 1400 empfängt Speicherzugriffssignale von Speicherzugriffen, die von den Hardwaregeräteeinheiten 414a bis 414d (4) initiiert wurden, über die Geräte busschnittstelle 1306 und die Brückenlogik 1302 (13). Die Speicherzugriffssignale vermitteln die physikalischen Adressen von den Hardwaregeräteeinheiten 414a bis 414d und entsprechende Steuer- und/oder Datensignale. Die Sicherheitsprüflogik 1400 kann den Mechanismus 900 (9) ausführen, um SAT-Einträge der entsprechenden Speicherseite zu erhalten und kann den Mechanismus 900 implementieren, wenn das Computersystem 400 aus 4 in dem SEM arbeitet. Der SAT-Eintragspuffer 1404 ist ähnlich zu dem SAT-Eintragspuffer 802 der CPU SCU 416 (8), der zuvor beschrieben ist, und wird verwendet, um eine relativ geringe Anzahl an SAT-Einträgen von Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde.
  • Wenn das Computersystem 400 aus 4 in dem SEM arbeitet, verwendet die Sicherheitsprüflogik 1400 aus 14 zusätzlich Sicherheitsinformationen eines SAT-Eintrags, der mit einer ausgewählten Speicherseite verknüpft ist, um zu bestimmen, ob ein gegebener hardwareinitiierter Speicherzugriff autorisiert ist. Wenn der gegebene hardwareinitiierte Speicherzugriff autorisiert ist, leitet die Sicherheitsprüflogik 1400 die Speicherzugriffssignale (d. h. Adressensignale, die eine physikalische Adresse vermitteln, und die zugeordneten Steuer- und/oder Datensignale) des Speicherzugriffs zu der Speichersteuerung 1304. Die Speichersteuerung 1304 verwendet die physikalische Adresse und die zugeordneten Steuer- und/oder Datensignale, um auf den Speicher 406 zuzugreifen. Wenn der Zugriff auf den Speicher 406 ein Schreibzugriff ist, werden die von den Datensignalen transportierten Daten in den Speicher 406 geschrieben. Wenn der Zugriff auf den Speicher 406 ein Lesezugriff ist, liest die Speichersteuerung 1304 Daten aus dem Speicher 406 aus und liefert die resultierenden Lesedaten an die Sicherheitsprüflogik 1400. Die Sicherheitsprüflogik 1400 gibt die ausgelesenen Daten an die Brückenlogik 1302 weiter und die Brückenlogik 1302 leitet die Daten der Gerätebusschnittstelle 1306 zu.
  • Wenn andererseits der gegebene hardwareinitiierte Speicherzugriff nicht autorisiert ist, liefert die Sicherheitsprüflogik 1400 keine physikalische Adresse und zugeordneter Steuer- und/oder Datensignale für Zugriffe auf den Speicher 406 zu der Speichersteuerung 1304. Wenn der unautorisierte hardwareinitiierte Speicherzugriff ein Speicherschreibzugriff ist, kann die Sicherheitsprüflogik 1400 ein Ende des Schreibzugriffes anzeigen und die geschriebenen Daten verwerfen, wodurch der Speicher 406 unverändert bleibt. Die Sicherheitsprüflogik 1400 kann ferner einen Registrierungseintrag in einer Registrierung (beispielsweise Setzen oder Zurücksetzen eines oder mehrerer Bits eines Statusregisters) er zeugen, um die Zugriffssicherheitsverletzung zu dokumentieren. Der Sicherheitskernel 504 kann periodisch auf die Registrierung zugreifen, um nach derartigen Einträgen zu suchen. Wenn der nicht autorisierte hardwareinitiierte Speicherzugriff ein Speicherlesezugriff ist, kann die Sicherheitsprüflogik 1400 ein falsches Ergebnis (beispielsweise nur "F") zu der Gerätebusschnittstelle 1306 über die Brückenlogik 1302 als die Lesedaten zurückgeben. Die Sicherheitsprüflogik 1400 kann ferner einen Registrierungseintrag in der oben beschriebenen Weise erzeugen, um die Zugriffssicherheitsverletzung zu dokumentieren.
  • 15 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens 1500 zum Bereitstellen einer Zugriffssicherheit für einen Speicher, der zur Speicherung von Daten verwendet wird, die in mehreren Speicherseiten angeordnet sind. Das Verfahren 1500 gibt die beispielhaften Regeln aus Tabelle 1 für CPU-initiierte (d. h. softwareinitiierte) Speicherzugriffe wieder, wenn das Computersystem 400 aus 4 in dem SEM-Modus arbeitet. Das Verfahren 1500 kann in der MMU 602 (6 bis 7) eingerichtet sein. Während eines Schritts 502 des Verfahrens 1500 wird eine während der Abarbeitung einer Anweisung erzeugte lineare Adresse zusammen mit einem Sicherheitsattribut der Anweisung (beispielsweise eine CPL einer Aufgabe, die die Anweisung enthält), empfangen. Die Anweisung liegt in einer Speicherseite. Während eines Schritts 1504 wird die lineare Adresse verwendet, um auf mindestens eine in Seiten angeordnete Speicherdatenstruktur zuzugreifen, die in dem Speicher angeordnet ist (beispielsweise ein Seitenverzeichnis und eine Seitentabelle), um eine Basisadresse einer ausgewählten Speicherseite und Sicherheitsattribute der ausgewählten Speicherseite zu erhalten. Die Sicherheitsattribute der ausgewählten Speicherseite können beispielsweise ein U/S-Bit und ein R/W-Bit eines Seitenverzeichniseintrags und ein U/S-Bit und ein R/W-Bit eines Seitentabelleneintrags enthalten.
  • Während eines Entscheidungsschritts 1506 werden das Sicherheitsattribut der Anweisung und die Sicherheitsattribute der ausgewählten Speicherseite verwendet, um zu bestimmen, ob ein Zugriff autorisiert ist oder nicht. Wenn der Zugriff autorisiert ist, werden die Basisadresse der ausgewählten Speicherseite und ein Offset während eines Schritts 1508 kombiniert, um eine physikalische Adresse innerhalb der ausgewählten Speicherseite zu erzeugen. Wenn der Zugriff nicht autorisiert ist, wird ein Fehlersignal (beispielsweise ein allgemeines Schutzfehlersignal oder GPF-Signal) während eines Schritts 1510 erzeugt.
  • Während eines Schritts 1512, der auf den Schritt 1508 folgt, wird auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher angeordnet ist (beispielsweise das SAT-Verzeichnis 904 aus 9 oder eine SAT) zugegriffen, wobei die physikalische Adresse der ausgewählten Speicherseite verwendet wird, um ein zusätzliches Sicherheitsattribut der ersten Speicherseite und ein zusätzliches Sicherheitsattribut der ausgewählten Speicherseite zu erhalten. Das zusätzliche Sicherheitsattribut der ersten Speicherseite kann beispielsweise ein sicheres Seiten- (SP) Bit enthalten, wie dies zuvor beschrieben ist, wobei das SP-Bit anzeigt, ob die erste Speicherseite eine sichere Seite ist oder nicht. In ähnlicher Weise kann das zusätzliche Sicherheitsattribut der ausgewählten Speicherseite ein sicheres Seiten- (SP) Bit aufweisen, wobei das SP-Bit anzeigt, ob die ausgewählte Speicherseite eine sichere Seite ist oder nicht.
  • Das Fehlersignal wird während eines Schritts 1514 in Abhängigkeit von dem Sicherheitsattribut der Anweisung, dem zusätzlichen Sicherheitsattribut der ersten Speicherseite, den Sicherheitsattributen der ausgewählten Speicherseite und dem zusätzlichen Sicherheitsattribut der ausgewählten Speicherseite erzeugt. Anzumerken ist, dass die Schritte 1512 und 1514 des Verfahrens 1500 in der CPU SCU 416 (4 bis 8) eingerichtet sein können.
  • Die folgende Tabelle 2 zeigt beispielhafte Regeln für Speicherseitenzugriffe, die von den Gerätehardwareeinheiten 414a bis 414d (d. h. hardwareinitiierte Speicherzugriffe) initiiert werden, wenn das Computersystem 400 aus 4 in dem SEM-Modus arbeitet. Derartige hardwareinitiierte Speicherzugriffe können durch eine Busüberwachungsschaltung innerhalb der Gerätehardwareeinheiten 414a bis 414d initiiert werden, oder durch DMA-Geräte auf Anforderung der Gerätehardwareeinheiten 414a bis 414d. Die Sicherheitsprüflogik 1400 kann die Regeln aus Tabelle 2 implementieren, wenn das Computersystem 400 aus 4 in dem SEM-Modus arbeitet, um Sicherheit für die in dem Speicher 406 gespeicherten Daten zu gewährleisten, die über die von dem Betriebssystem 502 (5) bereitgestellte Datensicherheit hinausgeht. In der Tabelle 2 unten ist die "Ziel-"Speicherseite diejenige Speicherseite, in der eine physikalische Adresse angeordnet ist, die von den Speicherzugriffssignalen eines Speicherzugriffs transportiert wird.
  • Tabelle 2. Beispielhafte Regeln für hardwareinitiierte Speicherzugriffe, wenn das Computersystem 400 aus Fig 4 in dem SEM-Modus arbeitet.
    Figure 00270001
  • In der Tabelle 2 oben wird das SP-Bit der Zielspeicherseite von der Host-Brücken SCU 418 erhalten, wobei die physikalische Adresse des Speicherzugriffs und der oben beschriebenen Mechanismus 900 aus 9 zum Erhalten von SAT-Einträgen entsprechender Speicherseiten verwendet werden.
  • Wie in 2 gezeigt ist, ist der Speicherzugriff nicht autorisiert, wenn SP = 1, was andeutet, dass die Zielspeicherseite eine sichere Seite ist. In dieser Situation leitet die Sicherheitsprüflogik 1400 (14) die Speicherzugriffssignale nicht an die Speichersteuerung weiter. Ein Teil der Speicherzugriffssignale (beispielsweise die Steuersignale) kennzeichnen eine Speicherzugriffsart, wobei die Speicherzugriffsart ein Lesezugriff oder ein Schreibzugriff ist. Wenn SP = 1 und die Speicherzugriffssignale die Speicherzugriffsart als einen Lesezugriff kennzeichnen, ist der Speicherzugriff ein nicht autorisierter Lesezugriff und die Sicherheitsprüflogik 1400 reagiert auf den nicht autorisierten Lesezugriff, indem nur "F" anstelle des tatsächlichen Speicherinhalts bereitgestellt werden (d. h. falsche Lesedaten). Die Sicherheitsprüflogik 1400 kann ferner auf den nicht autorisierten Lesezugriff reagieren, indem der nicht autorisierte Lesezugriff in der oben beschriebenen Weise registriert wird.
  • Wenn SP = 1 und die Speicherzugriffssignale anzeigen, dass die Speicherzugriffsart ein Schreibzugriff ist, ist der Speicherzugriff ein nicht autorisierter Schreibzugriff. In dieser Situation reagiert die Sicherheitsprüflogik 1400 auf den nicht autorisierten Schreibzugriff, indem die von den Speicherzugriffssignalen transportierten Schreibdaten verworfen werden. Die Sicherheitsprüflogik 1400 kann ferner auf den nicht autorisierten Schreibzugriff durch Registrieren des nicht autorisierten Schreibzugriffs in der oben beschriebenen Weise reagieren.
  • 16 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens 1600 zur Bereitstellung einer Zugriffssicherheit für einen Speicher, der zur Speicherung von in mehreren Speicherseiten angeordneten Daten verwendet wird. Das Verfahren 1600 gibt die beispielhaften Regeln der Tabelle 2 für hardwareinitiierte Speicherzugriffe wieder, wenn das Computersystem 400 aus 4 in dem SEM-Modus arbeitet. Das Verfahren 1600 kann in der Host-Brücke 404 (4 und 13 bis 14) eingerichtet werden. Während eines Schritts 1602 des Verfahrens 1600 werden Speicherzugriffssignale eines Speicherzugriffs empfangen, wobei die Speicherzugriffssignale eine physikalische Adresse innerhalb einer Zielspeicherseite enthalten. Wie zuvor beschrieben ist, können die Speicherzugriffssignale durch eine Gerätehardwareeinheit erzeugt werden. Die physikalische Adresse wird verwendet, um auf mindestens eine Sicherheitsattributdatenstruktur zuzugreifen, die in dem Speicher enthalten ist, um ein Sicherheitsattribut der Zielspeicherseite während eines Schritts 1604 zu erhalten. Die mindestens eine Sicherheitsattributdatenstruktur kann beispielsweise ein SAT-Verzeichnis (beispielsweise das SAT-Verzeichnis 904 in 9) und mindestens eine SAT (beispielsweise die SAT 906 in 9) enthalten, und das zusätzliche Sicherheitsattribut der Zielspeicherseite kann ein sicheres Seiten- (SP) Bit enthalten, wie dies zuvor beschrieben ist, was anzeigt, ob die Zielspeicherseite eine sichere Seite ist oder nicht. Während eines Schritts 1606 wird auf den Speicher unter Verwendung der Speicherzugriffssignale in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite zugegriffen. Zu beachten ist, dass die Schritte 1604 und 1602 des Verfahrens 1600 in der Host-Brücken SCU 418 (4 und 13 bis 14) eingerichtet sein können.
  • Wie zuvor beschrieben ist, arbeiten die Busüberwachung 1308 (13) und die Host-Brücken SCU 418 (4 und 13 bis 14) zusammen, um eine Zugriffssicherheit von Gerät zu Gerät innerhalb des Computersystems 400 zu gewährleisten. Die Busüberwachung 1308 dient als Schiedsrichter zwischen den Geräten, die mit dem Gerätebus 408 (4) verbunden sind, um den Gerätebus 408 in der oben beschriebenen Weise zu steuern und treibt ein Bewilligungssignal auf der einen oder mehreren Signalleitungen des Gerätebus 408. Ein Zustand des Bewilligungssignals zeigt an, welches mit dem Gerätebus 408 verbundenen Geräte die Kontrolle des Gerätebus 408 ausführt.
  • Es werden nun beispielhafte Operationen der Busüberwachung 1308 und der Host-Brücken SCU 418 beschrieben, wobei der Gerätebus 408 ein peripherer Komponentenverbindungs-(PCI) Bus ist. Die Busüberwachung 1308 empfängt n Anforderungssignale REQ#1 bis REQ#n, wobei jeweils eines von einem entsprechenden der n Geräte stammt, die mit dem Gerätebus 408 verbunden sind und die in der Lage sind, den Gerätebus 408 zu treiben (beispielsweise die Brückenlogik 1302 aus 13, die Gerätehardwareeinheiten 414a und 414b aus 4 und die Gerätebusbrücke 410 aus 4). (Das "#" zeigt an, dass der aktive oder erkannte Zustand des Signals auftritt, wenn das Signal auf einem niedrigen Spannungspegel ist.) Ein gegebenes Gerät m erstellt das entsprechende REQ#m Signal, wenn das Gerät m die Steuerung über den Gerätebus 408 benötigt. Die Busüberwachung 1308 erzeugt Bewilligungssignale GNT#1 bis GNT#n und leitetet eines der Bewilligungssignale jeweils einem der n Geräte zu. Wenn ein GNT#m Signal erstellt wird, wird dem Gerät m die Steuerung des Gerätebusses 408 bewilligt. Im folgenden Beispiel sind die Signale REQ#1 und GNT#1 mit Gerätehardwareeinheit 414a (4) und die Signale REQ#2 und GNT#2 mit der Gerätehardwareeinheit 414b (4) verknüpft.
  • 17 ist eine Ansicht einer Ausführungsform der Host-Brücken SCU 418 aus 4, wobei die Host-Brücken SCU 418 eine Zugriffsautorisierungstabelle 1700 enthält. Im Allgemeinen besitzt die Zugriffsautorisierungstabelle 1700 einen anderen Satz an Einträgen für jedes Gerät, das mit dem Gerätebus 408 verbunden und in der Lage ist, den Gerätebus 408 zu treiben (d. h. jedes Gerät besitzt entsprechende REQ# und GNT# Signale). Ein ers ter Satz an Einträgen entsprechend der Gerätehardwareeinheit 414a und ein zweiter Satz an Einträgen entsprechend der Gerätehardwareeinheit 414b sind in 17 dargestellt.
  • Jeder Eintrag der Zugriffsautorisierungstabelle 1700 entspricht einem Gerät, das mit dem Gerätebus 408 verbunden und in der Lage ist, diesen zu treiben. Beispielsweise ist in 17 ein erster Eintrag in dem ersten Satz aus Einträgen, die der Gerätehardware 414a entsprechen, an die Gerätehardware 414b gerichtet. Der erste Eintrag enthält ein "Bewilligungssignalzustand"-Feld (das den Begriff "GNT#2 erstellt"), wodurch angezeigt wird, dass der erste Eintrag zutrifft, wenn das GNT#2 Signal erstellt wird. Der erste Eintrag enthält ferner einen "Zugriff autorisiert" Wert entsprechend der Gerätehardware 414b und zeigt an, ob die Gerätehardware 414b autorisiert ist oder nicht, um auf die Gerätehardware 414a zuzugreifen. Die Zugriffsautorisierungstabelle 1700 kann durch den Sicherheitskerner 504 (5) erzeugt und bewahrt werden.
  • Gemäß dem PCI-Bus-Protokoll greift ein "Initiator-" Gerät auf ein "Ziel-" Gerät zu, um einen Bustransfer oder eine "Transaktion" zu bewirken. Das Zielgerät kann die Transaktion beenden, indem ein Stop# Signal erstellt wird. Wenn das Initiatorgerät das erzeugte Stop# Signal erkennt, muss das Initiatorgerät die Transaktion beenden und erneut die Steuerung über den PCI-Bus "beantragen", um die Transaktion abzuschließen. Wenn das Zielgerät das Stop# Signal ausgibt, bevor Daten übertragen wurden, wird die Beendigung als ein "Wiederholungsversuch" bezeichnet. Da der Gerätebus 408 ein PCI-Bus ist, enthält der Gerätebus 408 gebündelte Adresse- und Daten (A/D) Signalleitungen. Ein Initiatorgerät, das mit dem Gerätebus 408 verbunden ist, greift auf ein Zielgerät, das mit dem Gerätebus 408 verbunden ist, zu, indem die gebündelten bzw. gemultiplexten A/D-Signalleitungen des Gerätebus 408 mit Adressensignalen angesteuert werden, die eine Adresse repräsentieren, die dem Zielgerät zugeordnet ist. Um den Zugriff auf beispielsweise die Gerätehardware 414b, die mit dem Gerätebus 408 verbunden ist, zu steuern, programmiert die Host-Brücken SCU 418 zunächst die Gerätehardware 414b über den PCI-Bus, um die Gerätehardware 414b so zu konfigurieren, um auf alle Zugriffsversuche zu reagieren, derart, dass das Stop# Signal ausgegeben wird (d. h. so um alle Zugriffsversuche durch Initiieren eines PCI-Bus-Wiederholungsversuchs zu blockieren).
  • Die Host-Brücken SCU 418 ist mit Signalleitungen des Gerätebusses 408 über die Gerätebusschnittstelle 1306 (13) verbunden und überwacht die GNT#- und A/D- Signalleitungen des Gerätebus 408, um Zugriffsversuche zu erkennen. Es sei beispielsweise angenommen, dass die Gerätehardware 414a versucht, auf die Gerätehardware 414b zuzugreifen. Wenn die "Initiator-" Gerätehardware 414a versucht, auf die "Ziel-" Gerätehardware 414b zuzugreifen, blockiert die Gerätehardware 414b den Zugriffsversuch, indem ein wiederholter Versuch für den PCI-Bus initiiert wird (d. h. Erstellen des Stop# Signals nach dem Erkennen einer Adresse, die der Gerätehardware 414b zugeordnet ist, auf den A/D-Signalleitungen des Gerätebus 408). Diese Aktion erzwingt, dass die Gerätehardware 414a einen wiederholten Zugriffsversuch mittels eines nachfolgenden Zugriffsversuchs unternimmt.
  • Während die Gerätehardware 414b den Zugriffsversuch abblockt, erkennt die Host-Brücken SCU 418 den Zugriffsversuch mittels der Adresse, die der Gerätehardware 414b zugeordnet ist und auf den A/D-Signalleitungen des Gerätebus 408 anliegt. Da die Gerätehardware 414a die Kontrolle über den Gerätebus 408 besitzt, wird das GNT#1 Signal erstellt und die Host-Brücken SCU 418 erkennt die Gerätehardware 414a als den Initiator anhand des erstellten GNT#1 Signals.
  • Die Host-Brücken SCU 418 bestimmt dann, ob der nachfolgende Zugriffsversuch durch die Gerätehardware 414a erlaubt werden soll. Die Host-Brücken SCU 418 greift auf den zweiten Satz an Einträgen der Zugriffsautorisierungstabelle 1700 (17) entsprechend der Gerätehardware 414b zu und wählt den ersten Eintrag des zweiten Satzes aus, der das "(GNT#1 erstellt)" in dem Bewilligungssignalzustandsfeld aufweist. Der Zugriffautorisierungswert des ersten Eintrags ist eine "1", was anzeigt, dass der Zugriff der Gerätehardware 414b durch die Gerätehardware 414a autorisiert ist, und der nachfolgende Zugriffsversuch durch die Gerätehardware 414a sollte zulässig sein.
  • Da der "Zugriff autorisiert" Wert anzeigt, dass der nachfolgende Zugriffsversuch durch die Gerätehardware 414a gewährbar sein sollte, sendet die Host-Brücken SCU 418 ein Signal an die Bussteuerung 1308 (13), um die Gerätehardware 414a zu identifizieren. Unmittelbar vor der nächsten Bewilligung des Steuerungsgerätebusses 408 für die Gerätehardware 414a bewilligt die Bussteuerung 1308 die Steuerung des Gerätebusses 408 durch die Host-Brücken SCU 418. Die Host-Brücken SCU 418 treibt die Signale auf den Signalleitungen des Gerätebus 408, die die Gerätehardware 414b so konfigurieren, um den nachfolgenden Zugriffsversuch durch die Gerätehardware 414a zu erlauben.
  • Unmittelbar auf den nachfolgenden Zugriffsversuch durch die Gerätehardware 414a bewilligt die Bussteuerung 1308 erneut der Host-Brücken SCU 418 die Steuerung über den Gerätebus 408. Die Host-Brücken SCU 418 treibt Signale auf den Signalleitungen des PCI-Bus, die die Gerätehardware 414b so konfigurieren, um auf alle Zugriffsversuche so zu reagieren, dass ein PCI-Bus-Wiederholungsversuch initiiert wird (d. h. alle Zugriffsversuche werden blockiert, indem das Stop# Signal nach dem Erkennen einer Adresse, die der Gerätehardware 414b zugeordnet ist, auf den A/D-Signalleitungen des Gerätebus 408 ausgegeben wird).
  • Wenn ein "Zugriff autorisiert" Wert in einem ausgewählten Eintrag der Zugriffsautorisierungstabelle 1700 eine "0" ist, wodurch anzeigt wird, dass ein Initiatorgerät nicht für den Zugriff auf ein Zielgerät autorisiert ist, und der nachfolgende Zugriffsversuch durch das Initiatorgerät nicht gewährt werden sollte, konfiguriert die Host-Brücken SCU 418 das Zielgerät nicht so, um den nachfolgenden Zugriffsversuch durch das Initiatorgerät zu erlauben, und das Zielgerät blockiert weiterhin Zugriffsversuche von dem Initiatorgerät durch Initiieren von PCI-Bus-Wiederholungsversuchen. Anzumerken ist, dass der zuvor beschriebene atomare konfigurieren-zugreifen-konfigurieren-Mechanismus lediglich erfordert, dass ein bestehendes PCI-Gerät programmierbar sein muss, um eine PCI-Busversuchswiederholung zu initiieren, um geschützt zu sein.
  • 18 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens 1800, das in einem System anwendbar ist, das ein erstes Gerät und ein zweites Gerät aufweist, die mit einem Bus verbunden sind, wobei das Verfahren 1800 Zugriffssicherheit für das zweite Gerät ermöglicht. Das Verfahren 1800 kann in der Host-Brücken SCU 418 (4, 13 bis 14 und 17) eingerichtet sein. Während eines Schritts 1802 des Verfahrens 1800 werden Signale, die auf den Signalleitungen des Bus eingeprägt sind, überwacht. Ein Versuch des ersten Geräts, auf das zweite Gerät zuzugreifen, wird während eines Schritts 1804 auf der Grundlage der Signale erkannt. Während eines Schritts 1806 werden die Signale verwendet, um eine Identität des ersten Geräts zu bestimmen. Der Zugriff auf das zweite Gerät wird während eines Schritts 1808 in Abhängigkeit der Identität des ersten Geräts gesteuert. Das Steuern des Zugriffs auf das zweite Gerät während des Schritts 1808 kann erreicht werden durch: (i) Bestimmen, ob das erste Gerät autorisiert ist, auf das zweite Gerät zuzugreifen, auf der Grundlage der Identität des ersten Geräts und (ii) Konfigurieren des zweiten Geräts, um Zugriffsversuche durch das erste Gerät zuzulassen, wenn das erste Gerät autorisiert ist, auf das zweite Gerät zuzugreifen.
  • Obwohl diverse Aspekte der vorliegenden Erfindung hierin in Bezug auf eine Buskonfiguration beschrieben sind, so ist die vorliegende Erfindung nicht darauf eingeschränkt. Die Buskonfiguration kann beispielsweise durch Punkt-zu-Punkt-Verbindungen direkt zwischen Geräten bzw. Einrichtungen oder durch Punkt-zu-Punkt-Verbindungen ersetzt werden, die durch die Brücke oder andere Stellen durchgeschleift sind.
  • Einige Aspekte der Erfindung, wie sie zuvor offenbart sind, können in Hardware oder Software implementiert sein. Somit sind einige Teile der detaillierten Beschreibungen hierin folglich in Begriffen eines hardwareimplementierten Prozess dargelegt und einige Bereich der detaillierten Beschreibungen hierin sind in Begriffen eines softwareimplementierten Prozesses dargestellt, wobei symbolische Darstellungen von Operationen von Datenbits innerhalb eines Speichers eines Computersystems oder einer Computereinrichtung beteiligt sind. Diese Beschreibungen und Darstellungen sind die Mittel, die von Fachmann benutzt werden, um in höchst effizienter Weise den Inhalt seiner Arbeit anderen Fachleuchten, die mit Hardware und Software vertraut sind, zu vermitteln. Der Prozess und der Betrieb beider Aspekte erfordert die physikalische Manipulation physikalischer Größen. In der Software nehmen diese Größen für gewöhnlich, aber nicht notwendigerweise, die Form elektrischer, magnetischer oder optischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat sich ggf. als bequem erwiesen, insbesondere aus Gründen für die gemeinsame Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch in Erinnerung behalten werden, dass diese und ähnliche Begriffe mit den geeigneten physikalischen Größen zu verknüpfen sind und lediglich bequeme Namen repräsentieren, die diesen Größen verliehen sind. Sofern dies nicht speziell dargestellt oder anderweitig deutlich wird, bezeichnen durchwegs in der vorliegenden Offenbarung diese Beschreibungen Aktionen und Prozesse eines elektronischen Geräts bzw. Einrichtung, die Daten manipulieren, die als physikalische (elektronische, magnetische oder optische) Größen innerhalb der Speicher einiger elektronischer Geräte repräsentiert sind und diese in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen innerhalb des Speichers oder Übertragungs- oder Anzeigeeinrichtungen dargestellt sind. Beispielhafte Begriffe, die eine derartige Beschreibung bezeichnen, sind ohne Einschränkung dieser Begriffe "bearbeiten", "berechnen", "ausrechnen", "bestimmen", "anzeigen", und dergleichen.
  • Zu beachten ist ferner, dass die softwareimplementieren Aspekte der Erfindung typischerweise auf einer gewissen Form eines Programmspeichermediums codiert sind oder über eine gewisse Art eines Übertragungsmediums eingerichtet werden. Das Programmspeichermedium kann magnetisch (beispielsweise eine Diskette oder eine Festplatte) oder optisch sein (beispielsweise eine Kompaktdisk mit nur Lesespeicher (oder "CD-Rom")), wobei das Medium nur lesbar sein kann oder wahlfreien Zugriff ermöglichen kann. In ähnlicher Weise kann das Übertragungsmedium verdrillte Drahtpaare, ein Koaxialkabel, eine Glasfaser oder ein anderes geeignetes Übertragungsmedium sein, das im Stand der Technik bekannt ist. Die Erfindung ist nicht auf diese Aspekte einer gegebenen Implementierung eingeschränkt.
  • Die hierin offenbarten speziellen Ausführungsformen sind lediglich anschaulicher Natur, da die Erfindung auf viele verschiedene aber äquivalenten Weisen, die dem Fachmann im Besitze der vorliegenden technischen Lehre klar sind, modifiziert und praktiziert werden kann. Ferner sind keine Einschränkungen hinsichtlich der Details des Aufbaus oder der Gestaltung, wie sie hierin gezeigt sind, beabsichtigt, sofern diese nicht in den Ansprüchen beschrieben sind. Es ist daher klar, dass die speziellen offenbarten Ausführungsformen geändert oder modifiziert werden können und dass alle derartigen Variationen als innerhalb des Schutzbereichs und des Grundgedankens der Erfindung liegend betrachtet werden. Folglich ist der angestrebte Schutzbereich in den folgenden Patentansprüchen aufgeführt.
  • Zusammenfassung
  • Vorrichtung und Verfahren zum Bereitstellen einer Zugriffssicherheit für eine spezielle Einrichtung. Die Vorrichtung umfasst eine Sicherheitsprüfeinheit, die ausgebildet ist, dass sie an ein Übertragungsmedium angekoppelt wird. Die Sicherheitsprüfeinheit ist ausgebildet, Signale auf dem Übertragungsmedium überwachen und einen Versuch einer ersten Einrichtung, die mit dem Übertragungsmedium verbunden ist, auf eine zweite Einrichtung, die mit dem Übertragungsmedium verbunden ist, auf der Grundlage der Signale zu erkennen. Die Sicherheitsprüfeinheit ist ferner ausgebildet, eine Identität der ersten Einrichtung auf der Grundlage der Signale zu bestimmen und den Zugriff auf die zweite Einrichtung durch die erste Einrichtung in Abhängigkeit der Identität der ersten Einrichtung zu steuern.
  • Figurenbeschreibung
  • 1
    • lineare Adresse 102:
    • Verzeichnisindex; Tabellenindex; Offset
    • 104 Seitenverzeichnis
    • 112 Seitenverzeichniseintrag
    • 106 Seitentabellen
    • 114 Seitentabelleneintrag
    • 108 Seitenrahmen
    • 116 Speicherposition
    • CR3 110: Seitenverzeichnisbasisregister
    • Stand der Technik
  • 2
    • Stand der Technik
    • 200: Seitenverzeichniseintragsformat
    • Seitentabellebasisadresse
  • 3
    • Stand der Technik
    • 300: Seitentabelleneintragformat
    • Seitenrahmenbasisadresse
  • 4
    • 418 Host-Brücken SCU
    • 404 Host-Brücke
    • 406 Speicher
    • 408 Gerätebus
    • 414a bis d Gerätehardware
    • 410 Gerätebusbrücke
    • 412 Gerätebus
  • 5
    • 500 Anwendungsprogramme
    • 502 Betriebssystem
    • 406 Speicher
    • 504 Sicherheitskernel
    • 506a bis 506d Gerätetreiber
    • 414a bis d Gerätehardware
    • 418 Host-Brücken SCU
  • 6
    • 608 Steuerregister
    • 600 Ausführungseinheit
    • segmentierte Adressen
    • 610 SEM-Register
    • 602 Speicherverwaltungseinheit
    • physikalische Adressen
    • 604 Kernspeichereinheit
    • physikalische Adressen
    • 606 Busschnittstelleneinheit
    • zur Host-Brücke 404
  • 7
    • zur CPU 402
    • segmentierte Adresse
    • 700 Segmentierungseinheit
    • lineare Adresse
    • 702 Seitenbildungseinheit
    • physikalische Adresse
    • 704 Seitenbildung
    • physikalische Adresse
    • zur Kernspeichereinheit 604
    • 602 Speicherverwaltungseinheit
  • 8
    • 800 Sicherheitsprüflogik
    • 802 SAT-Eintragspuffer
    • zu SEM-Registern 610
    • Kommunikationsbus
    • physikalische Adresse
    • SEM-Sicherheitsausnahme
  • 9
    • 902 physikalische Adresse
    • oberer Bereich; mittlerer Bereich; unterer Bereich
    • 904 SAT-Verzeichnis
    • 910 SAT-Verzeichniseintrag
    • 906 Sicherheitsattributtabelle
    • 912 SAT-Eintrag
    • 406 Speicher
    • 610 SEM-Register
    • 908 SAT-Basisadressenregister
    • SAT-Verzeichnisbasisadresse
  • 10
    • 1000 SAT-Ersatzregister
    • 610 SEM-Register
  • 11
    • 1100 SAT-Verzeichniseintragsformat
    • SAT-Basisadresse
  • 12
    • 1200 SAT-Eintragsformat
  • 13
    • zur CPU 402
    • 404 Host-Brücke
    • 1300 Host-Schnittstelle
    • 1308 Busüberwachung
    • 1302 Brückenlogik
    • 418 Host-Brücken SCU
    • 1304 Speicherinhalt
    • zum Speicher 406
    • 1306 Gerätebusschnittstelle
    • zum Gerätebus 408
  • 14
    • 418 Host-Brücken SCU
    • 1400 Sicherheitsprüflogik
    • zur Brückenlogik 1302
    • physikalische Adressen
    • Daten
    • Steuerung
    • zur Speichersteuerung 1304
    • 1402 SEM-Register
    • 1404 SAT-Eintragspuffer
  • 15
    • 1502 Empfangen der linearen Adresse und des Instruktionssicherheitsattributs
    • 1504 Verwenden der linearen Adresse zum Zugreifen auf in Seiten aufgeteilte Speicherdatenstrukturen, um Sicherheitsattribute der ausgewählten Speicherseite zu erhalten
    • 1506 Zugriff autorisiert?
    • 1510 Erzeugen eines Fehlersignals
    • 1508 Erzeugen der physikalischen Adresse
    • 1512 Anwenden der physikalischen Adresse, um auf SEM-Datenstrukturen zuzugreifen, um zusätzliche Sicherheitsattribut der Instruktionsspeicherseite und der ausgewählten Speicherdatenstruktur
    • 1514 Erzeugen des Fehlersignals in Abhängigkeit des Instruktionssicherheitsattributs, des zusätzlichen Attributs der Instruktionsspeicherseite, der Sicherheitsattribute der ausgewählten Speicherseite und des zusätzlichen Sicherheitsattributs der ausgewählten Speicherseite
  • 16
    • 1602 Empfangen der Speicherzugriffsignale, die die physikalische Adresse in der Zielspeicherseite enthalten
    • 1604 Verwenden der physikalischen Adresse, um auf SEM-Datenstrukturen zuzugreifen, um damit das Sicherheitsattribut der Zielspeicherseite zu erhalten
    • 1606 Zugreifen auf den Speicher unter Verwendung der Zugriffsignale in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite
  • 17
    • 418 Host-Brücken SCU
    • 1700 Zugriffsautorisierungsadresse
    • 414a Gerätehardware
    • Bewilligungssignalszustand; Zugriff autorisiert
    • GNT#1 erstellt
    • GNT#3 erstellt
    • GNT#n erstellt
  • 18
    • 1802 Überwachen der Signale, die auf den Signalleitungen eines Busses anliegen
    • 1804 Erkennen eines ersten Geräts, auf ein zweites Gerät zuzugreifen auf der Grundlage der Signale
    • 1806 Verwenden der Signale, um ein Identität des ersten Geräts zu bestimmen
    • 1808 Steuern des Zugriffs auf das zweite Geräte durch das erste Gerät auf der Grundlage der Identität des ersten Geräts

Claims (10)

  1. Vorrichtung mit: einer Sicherheitsprüfeinheit (416, 418), die ausgebildet ist, an ein Übertragungsmedium (408, 412) angekoppelt zu werden, wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, um: Signale auf dem Übertragungsmedium (408, 412) zu überwachen, einen Versuch einer ersten Einrichtung, die mit dem Übertragungsmedium (408, 412) verbunden ist, auf eine zweite Einrichtung (414a bis d) zuzugreifen, die mit dem Übertragungsmedium (408, 412) verbunden ist, auf der Grundlage der Signale zu erfassen, eine Identität der ersten Einrichtung (414a bis 414b) auf der Grundlage der Signale zu bestimmen, und einen Zugriff der ersten Einrichtung (414a bis d) auf die zweite Einrichtung (414a bis d) in Abhängigkeit der Identität der ersten Einrichtung (414a bis d) zu steuern.
  2. Vorrichtung nach Anspruch 1, wobei das Übertragungsmedium (408, 412) mehrere Signalleitungen eines Busses (408, 412) umfasst, und wobei die Signale auf dem Übertragungsmedium (408, 412) die Signale enthalten, die in die Signalleitungen des Busses (408, 412) eingespeist sind, und wobei die Signalleitungen des Busses (408, 412) mehrere Adressleitungen und mindestens eine Signalleitung umfassen, die ein Bewilligungssignal übermittelt, und wobei das Bewilligungssignal sich in einem ersten Zustand befindet, wenn der ersten Einrichtung (414a bis d) die Steuerung des Busses (408, 412) bewilligt ist, und wobei während des Versuchs der ersten Einrichtung (414a bis d), auf die zweite Einrichtung (414a bis d) zuzugreifen, das Bewilligungssignal sich in dem ersten Zustand befindet und die erste Einrichtung (414a bis d) Adressensignale auf die Adressleitungen des Busses (408, 412) legt, die Adressen enthalten, die der zweiten Einrichtung (414a bis d) zugeordnet sind, und wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, die an den Adressleitungen anliegenden Adressensignale und das Bewilligungssignal zu überwachen.
  3. Die Vorrichtung nach Anspruch 2, wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, den Versuch der ersten Einrichtung (414a bis d), auf die zweite Einrichtung (414a bis d) zuzugreifen, zu erfassen, wenn das Bewilligungssignal sich in dem ersten Zustand befindet und die Adressensignale die der zweiten Einrichtung (414a bis d) zugeordneten Adresse enthält, und wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, die Identität der ersten Einrichtung (414a bis d) in Abhängigkeit eines Zustands des Bewilligungssignals zu bestimmen.
  4. Die Vorrichtung nach Anspruch 1, wobei die Sicherheitsprüfeinheit (416, 418) in einem Prozessor (402) oder einer Brücke (404) enthalten ist.
  5. Die Vorrichtung nach Anspruch 1, wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, die zweite Einrichtung (414a bis d) so zu konfigurieren, um Zugriffsversuche durch die erste Einrichtung (414a bis d) zuzulassen, wenn die erste Einrichtung (414a bis d) autorisiert ist, auf die zweite Einrichtung (414a bis d) zuzugreifen.
  6. Die Vorrichtung nach Anspruch 1, wobei die Sicherheitsprüfeinheit (416, 418) eine Zugriffsautorisierungstabelle (906) mit einem Eintrag (912) entsprechend der zweiten Einrichtung (414a bis d) umfasst, und wobei der Eintrag (912) den ersten Zustand eines Bewilligungssignals und einen entsprechenden Zugriffsautorisierungswert enthält, der anzeigt, ob die erste Einrichtung (414a bis d) autorisiert ist oder nicht, um auf die zweite Einrichtung (414a bis d) zuzugreifen, und wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, zu bestimmen, ob die erste Einrichtung (414a bis d) autorisiert ist, auf die zweite Einrichtung (414a bis d) zuzugreifen, indem auf die Zugriffsautorisierungstabelle (906) unter Anwendung des ersten Zustands des Bewilligungssignals zugegriffen wird, um den Zugriffautorisierungswert zu erhalten, und wobei, wenn der Zugriffsautorisierungswert anzeigt, dass die erste Einrichtung (414a bis d) für einen Zugriff auf die zweite Einrichtung (414a bis d) autorisiert ist, die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, Signale auf die Signalleitungen des Busses (408, 412) zu legen, die die zweite Einrichtung (414a bis d) so konfigurieren, um Zugriffsversuche durch die erste Einrichtung (414a bis d) zuzulassen.
  7. Die Vorrichtung nach Anspruch 1, die ferner eine Entscheidungssteuerung (1308) aufweist, die ausgebildet ist, die Steuerung zwischen mehreren Einrichtungen (414a bis d) zu verteilen, die mit dem Übertragungsmedium (408, 412) verbunden sind, wobei die mehre ren Einrichtungen (414a bis d) zumindest die erste Einrichtung (414a bis d) und die zweite Einrichtung (414a bis d) umfassen, und wobei die Entscheidungssteuerung (1308) ferner ausgebildet ist, einer einzelnen Einrichtung der mehreren Einrichtungen (414a bis d) anzuzeigen, dass der einzelnen Einrichtung die Steuerung bewilligt ist, und wobei die Entscheidungssteuerung (1308) eine Busüberwachung (1308) aufweist, und wobei das Übertragungsmedium (408, 412) einen Bus (408, 412) umfasst, wobei der Bus (408, 412) mehrere Adressleitungen und mindestens eine Signalleitung zum Übertragen eines Bewilligungssignals umfasst; und wobei die Busüberwachung (1308) ausgebildet, die mindestens eine Signalleitung, die das Bewilligungssignal überträgt, so anzusteuern, dass das Bewilligungssignal sich in einem Zustand befindet, der anzeigt, dass der einzelnen Einrichtung der Einrichtungen (414a bis d) die Steuerung des Busses 408, 412) bewilligt ist, und wobei die Sicherheitsprüfeinheit (416, 418) mit den Adressleitungen und der mindestens einen Signalleitung zur Übertragung des Bewilligungssignals verbunden ist, und wobei die Sicherheitsprüfeinheit (416, 418) ausgebildet ist, um: Adressensignale, die auf den Adressleitungen des Busses (408, 412) anliegen, und das Bewilligungssignal zu überwachen, einen Versuch zum Zugreifen auf die zweite Einrichtung (414a bis d) durch die erste Einrichtung (414a bis d) auf der Grundlage der Adressensignale zu erfassen, eine Identität der ersten Einrichtung (414a bis d) auf der Grundlage des Bewilligungssignals zu bestimmen, zu bestimmen, ob die erste Einrichtung (414a bis d) autorisiert ist, auf die zweite Einrichtung (414a bis d) zuzugreifen, auf der Grundlage der Identität der ersten Einrichtung (414a bis d), und die zweite Einrichtung (414a bis d) zu konfigurieren, um Zugriffsversuche durch die erste Einrichtung (414a bis d) zuzulassen, wenn die erste Einrichtung (414a bis d) autorisiert ist, auf die zweite Einrichtung (414a bis d) zuzugreifen.
  8. Verfahren zur Bereitstellung einer Zugriffssicherheit für eine spezifizierte Einrichtung (414a bis d), wobei das Verfahren umfasst: Überwachen von Signalen; Detektieren eines Versuchs einer weiteren Einrichtung (414a bis d) auf die spezielle Einrichtung (414a bis d) zuzugreifen auf der Grundlage der Signale; Verwenden der Signale, um eine Identität der weiteren Einrichtung (414a bis d) zu bestimmen; und Steuern des Zugriffs auf die spezielle Einrichtung (414a bis d) in Abhängigkeit der Identität der weiteren Einrichtung (414a bis d).
  9. Das Verfahren nach Anspruch 8, wobei Steuern des Zugriffs auf die spezielle Einrichtung (414a bis d) in Abhängigkeit der Identität der weiteren Einrichtung (414a bis d) umfasst: Steuern des Zugriffs auf die spezielle Einrichtung (414a bis d) durch die weitere Einrichtung (414a bis d) in Abhängigkeit der Identität der weiteren Einrichtung (414a bis d).
  10. Das Verfahren nach Anspruch 9, wobei Steuern des Zugriffs auf die spezielle Einrichtung (414a bis d) durch die weitere Einrichtung (414a bis d) in Abhängigkeit der Identität der weiteren Einrichtung (414a bis d) ferner umfasst: Bestimmen, ob die weitere Einrichtung (414a bis d) autorisiert ist, auf die spezielle Einrichtung (414a bis d) zuzugreifen, auf der Grundlage der Identität der weiteren Einrichtung (414a bis d); und Konfigurieren der speziellen Einrichtung (414a bis d), um Zugriffsversuche durch die weitere Einrichtung (414a bis d) zuzulassen, wenn die weitere Einrichtung (414a bis d) autorisiert ist, auf die spezielle Einrichtung (414a bis d) zuzugreifen.
DE10297686.4T 2002-03-27 2002-12-18 System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems Expired - Lifetime DE10297686B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/107,776 2002-03-27
US10/107,776 US7383584B2 (en) 2002-03-27 2002-03-27 System and method for controlling device-to-device accesses within a computer system
PCT/US2002/040742 WO2003083628A2 (en) 2002-03-27 2002-12-18 System and method for controlling device-to-device accesses within a computer system

Publications (2)

Publication Number Publication Date
DE10297686T5 true DE10297686T5 (de) 2005-05-12
DE10297686B4 DE10297686B4 (de) 2017-09-28

Family

ID=28452711

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297686.4T Expired - Lifetime DE10297686B4 (de) 2002-03-27 2002-12-18 System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems

Country Status (7)

Country Link
US (1) US7383584B2 (de)
JP (1) JP4799822B2 (de)
KR (1) KR100972635B1 (de)
AU (1) AU2002357923A1 (de)
DE (1) DE10297686B4 (de)
GB (1) GB2402783B (de)
WO (1) WO2003083628A2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334123B2 (en) * 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
US7685638B1 (en) 2005-12-13 2010-03-23 Symantec Corporation Dynamic replacement of system call tables
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
US8276201B2 (en) * 2007-03-22 2012-09-25 International Business Machines Corporation Integrity protection in data processing systems
US20080235422A1 (en) * 2007-03-23 2008-09-25 Dhinesh Sasidaran Downstream cycle-aware dynamic interconnect isolation
US8935775B2 (en) * 2012-06-28 2015-01-13 Intel Corporation Method and apparatus for dishonest hardware policies
CN102915417A (zh) * 2012-09-18 2013-02-06 鸿富锦精密工业(深圳)有限公司 应用程序监控系统及应用程序监控方法
US20140297910A1 (en) * 2013-03-29 2014-10-02 Hewlett-Packard Development Company, L.P. Sas expander
WO2017028309A1 (zh) 2015-08-20 2017-02-23 华为技术有限公司 文件数据访问方法和计算机系统
CN108062486B (zh) * 2017-12-15 2020-09-15 杭州中天微系统有限公司 一种针对间接访问存储控制器的存储保护装置
US10831679B2 (en) * 2018-03-23 2020-11-10 Intel Corporation Systems, methods, and apparatuses for defending against cross-privilege linear probes
US11397814B2 (en) 2019-03-25 2022-07-26 Micron Technology, Inc. Local ledger block chain for secure electronic control unit updates

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4882659A (en) * 1988-12-21 1989-11-21 Delco Electronics Corporation Vacuum fluorescent display having integral backlit graphic patterns
US4970441A (en) * 1989-08-04 1990-11-13 Delco Electronics Corporation Brightness stabilizing control of a VF display
US5652837A (en) 1993-03-22 1997-07-29 Digital Equipment Corporation Mechanism for screening commands issued over a communications bus for selective execution by a processor
US5469026A (en) * 1993-11-09 1995-11-21 Delco Electronics Corporation Method and apparatus for VF tube power supply
ATE278218T1 (de) * 1994-05-26 2004-10-15 Commw Of Australia Gesicherte rechnerarchitektur
US5459374A (en) * 1994-07-05 1995-10-17 Delco Electronics Corporation Combination fixed segment and active matrix vacuum fluorescent display
US5473222A (en) * 1994-07-05 1995-12-05 Delco Electronics Corporation Active matrix vacuum fluorescent display with microprocessor integration
US5613750A (en) * 1994-11-07 1997-03-25 Delco Electronics Corporation Fluorescent backlighting device for an instrument panel
US5477430A (en) * 1995-03-14 1995-12-19 Delco Electronics Corporation Fluorescing keypad
US5521449A (en) * 1995-08-28 1996-05-28 Delco Electronics Corporation Method and circuitry for reducing radiated noise in a strobed load driver circuit for a vacuum fluorescent display
US5856811A (en) * 1996-01-31 1999-01-05 Delco Electronics Corp. Visual display and helmet assembly
US6098133A (en) 1997-11-28 2000-08-01 Motorola, Inc. Secure bus arbiter interconnect arrangement
US6061753A (en) * 1998-01-27 2000-05-09 Emc Corporation Apparatus and method of accessing target devices across a bus utilizing initiator identifiers
US6428174B1 (en) * 2001-04-27 2002-08-06 Delphi Technologies, Inc. Vacuum fluorescent display panel with integral illumination of panel indicia
US6996750B2 (en) * 2001-05-31 2006-02-07 Stratus Technologies Bermuda Ltd. Methods and apparatus for computer bus error termination
US7277972B2 (en) * 2002-03-08 2007-10-02 Freescale Semiconductor, Inc. Data processing system with peripheral access protection and method therefor

Also Published As

Publication number Publication date
GB0420728D0 (en) 2004-10-20
WO2003083628A3 (en) 2004-07-08
KR20040102363A (ko) 2004-12-04
JP4799822B2 (ja) 2011-10-26
AU2002357923A1 (en) 2003-10-13
JP2005521935A (ja) 2005-07-21
WO2003083628A2 (en) 2003-10-09
DE10297686B4 (de) 2017-09-28
AU2002357923A8 (en) 2003-10-13
GB2402783A (en) 2004-12-15
US7383584B2 (en) 2008-06-03
GB2402783B (en) 2005-12-14
US20030188169A1 (en) 2003-10-02
KR100972635B1 (ko) 2010-07-28

Similar Documents

Publication Publication Date Title
DE10297433T5 (de) Speicherverwaltungssystem und Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse
DE112004003066B4 (de) Verwendung mehrerer Monitore virtueller Maschinen zur Abwicklung priviligierter Ereignisse
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE3889816T2 (de) Virtuelle Ein/Ausgabebefehle.
DE112005002304B4 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE69724862T2 (de) Verfahren und Anordnung für die Zugangs- und Informationsverfälschungskontrolle in Rechnersystemen
DE69531112T2 (de) Mechanismus zum verknüpfen von dateien auf einem emulierten system mit dem zentralsystem für den zugriff durch emulierte systembenutzer
DE69032254T2 (de) Rechner mit Tastaturkennwortfunktionen
DE3689209T2 (de) Direkte Ein-- und Ausgabe in einer virtuellen Speicheranordnung.
DE10297494T5 (de) System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit
DE69630126T2 (de) Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet
DE10394383B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE3587622T2 (de) Emulationseinrichtung in einem Datenverarbeitungssystem.
DE10297687B4 (de) Prozessor mit Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit und Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-Instruktion
DE10297686B4 (de) System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems
DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
DE2902465A1 (de) Datenverarbeitungsanordnung
DE19635204A1 (de) Ausnahme-Sicherheitsschaltung
DE2458065A1 (de) Datenverarbeitungsanlage mit sicherung der daten gegen unberechtigten zugriff
DE10196440B4 (de) Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE102006061939B4 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE102009049078A1 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE112004001652B4 (de) Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine

Legal Events

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

Ref document number: 10297686

Country of ref document: DE

Date of ref document: 20050512

Kind code of ref document: P

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R071 Expiry of right