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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection 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.
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 bis3 wird nun beschrieben, wie ein ×86-Prozessor sowohl einen virtuellen Speicher als auch Speicherschutzmerkmale einrichtet.1 ist eine Ansicht eines bekannten Übersetzungsmechanismus100 von einer linearen zur physikalischen Adresse der x86-Prozessorarchitektur. Der Adressenübersetzungsmechanismus100 ist in einem x86-Prozessor eingerichtet und beinhaltet eine lineare Adresse102 , die in dem x86-Prozessor erzeugt wird, ein Seitentabellenverzeichnis (d. h. ein Seitenverzeichnis)104 , mehrere Seitentabellen mit einer Seitentabelle106 , mehrere Seitenrahmen mit einem Seitenrahmen108 und ein Steuerregister3 (CR3)110 . Das Seitenverzeichnis104 und die mehreren Seitentabellen sind in Seiten eingeteilte Speicherdatenstrukturen, die durch eine Betriebssystemsoftware (d. h. ein Betriebsystem) erzeugt und bewahrt werden. Das Seitenverzeichnis104 ist stets in einem Speicher (beispielsweise einer Hauptspeichereinheit) angeordnet. Der Einfachheit halber wird angenommen, dass die Seitentabelle106 und der Seitenrahmen108 ebenso in dem Speicher angeordnet sind. - Wie in
1 gezeigt ist, wird die lineare Adresse102 in drei Bereiche unterteilt, um die Übersetzung der linearen in die physikalische Adresse zu erreichen. Es werden die höchstrangigsten Bits von C3110 verwendet, um ein Seitenverzeichnisbasisregister zu speichern. - Das Seitenverzeichnisbasisregister ist eine Basisadresse einer Speicherseite, die das Speicherverzeichnis
104 enthält. Das Speicherverzeichnis104 enthält mehrere Seitenverzeichnisseinträde, zu denen ein Seitenverzeichniseintrag112 gehört. Ein oberer "Verzeichnisindex"-Bereich der linearen Adresse102 , der die höchstrangigsten oder signifikantesten Bits der linearen Adresse102 enthält, wird als ein Index für das Seitenverzeichnis104 verwendet. Der Seitenverzeichniseintrag112 wird aus einem Seitenverzeichnis104 unter Anwendung des Seitenverzeichnisbasisregisters aus CR3110 und dem oberen "Verzeichnisindex"-Bereich der linearen Adresse102 ausgewählt. -
2 ist eine Ansicht eines Seitenverzeichniseintragsformats200 der x86-Prozessorarchitektur. Wie in2 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 Seitenverzeichniseintrags112 wird verwendet, um die entsprechende Seitentabelle106 auszuwählen. - Es sei wieder auf
1 verwiesen; die Seitentabelle106 enthält mehrere Seitentabelleneinträge einschließlich eines Seitentabelleneintrags114 . Ein mittlerer "Tabellenindex"-Bereich der linearen Adresse102 wird als ein Index für die Seitentabelle106 verwendet, wodurch der Seitentabelleneintrag114 ausgewählt ist.3 ist eine Ansicht eines Seitentabelleneintragsformats300 der x86-Prozessorarchitektur. Wie in3 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 Seitentabelleneintrags114 verwendet, um den entsprechenden Seitenrahmen108 auszuwählen. Der Seitenrahmen108 enthält mehrere Speicherstellen. Ein unterer oder "Offset"-Bereich der linearen Adresse102 wird als ein Index für den Seitenrahmen108 verwendet. Bei Kombination bilden die Seitenrahmenbasisadresse des Seitentabelleneintrags114 und der Offset-Bereich der linearen Adresse102 die physikalische Adresse, die der linearen Adresse102 entspricht, und kennzeichnen eine Speicherposition116 innerhalb des Seitenrahmens108 . Die Speicherposition116 besitzt die physikalische Adresse, die sich aus der Übersetzung der linearen in die physikalische Adresse ergibt. - Hinsichtlich der Speicherschutzmerkmale enthalten das Seitenverzeichniseintragsformat
200 aus2 und das Seitentabelleneintragsformat300 aus3 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 Seitenverzeichniseintrags112 und des Seitentabelleneintrags114 entsprechend dem Seitenrahmen108 logisch Und-verknüpft, um zu bestimmen, ob der Zugriff auf den Speicherrahmen108 autorisiert ist. In ähnlicher Weise werden die Inhalte der R/W-Bits des Seitenverzeichniseintrags112 und des Seitentabelleneintrags114 logisch Und-verknüpft, um zu bestimmen, ob der Zugriff auf den Seitenrahmen108 autorisiert ist. Wenn die logischen Verknüpfungen der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen108 autorisiert ist, wird die Speicherposition116 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 Speicherposition116 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 aus4 zeigt; -
6 eine Ansicht einer Ausführungsform der CPU des Computersystems aus4 ist, wobei die CPU eine Speicherverwaltungseinheit (MMU) enthält; -
7 eine Ansicht einer Ausführungsform der MMU aus6 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 aus7 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 aus4 ist, wobei die Host-Brücke die Host-Brücken SCU enthält; -
14 eine Ansicht einer Ausführungsform der Host-Brücken SCU aus13 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 SCU418 aus4 ist, wobei die Host-Brücken SCU418 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 Computersystems400 mit einer CPU402 , einer System- oder "Host"-Brücke404 , einem Speicher406 , einem ersten Gerätebus408 (beispielsweise ein peripher Komponentenverbindungs- oder PCI-Bus), einer Gerätebusbrücke410 , einem zweiten Gerätebus412 (beispielsweise einem industriellen Standardarchitektur- oder ISA-Bus) und vier Gerätehardwareeinheiten414a bis414d . Die Host-Brücke404 ist mit der CPU402 , dem Speicher406 und dem Gerätebus408 verbunden. Die Host-Brücke404 befördert Signale zwischen der CPU402 und dem Gerätebus408 und verbindet funktionsmäßig den Speicher406 mit der CPU402 und dem Gerätebus408 . Die Gerätebusbrücke410 ist zwischen dem Gerätebus408 und dem Gerätebus412 angeschlossen und befördert Signale zwischen dem Gerätebus408 und dem Gerätebus412 . In der Ausführungsform aus4 sind die Gerätehardwareeinheiten414a und414b mit dem Gerätebus408 verbunden und die Gerätehardwareeinheiten414c und414d sind mit dem Gerätebus412 verbunden. Eine oder mehrere der Gerätehardwareeinheiten414a bis414d 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 CPU402 eine CPU-Sicherheitsprüfeinheit (SCU)416 , und die Host-Brücke404 enthält eine Host-Brücken SCU418 . Wie nachfolgend detaillierter beschrieben ist, schützt die CPU SCU416 den Speicher406 vor unautorisierten Zugriffen, die von der CPU402 erzeugt werden (d. h. "softwareinitiierte Zugriffe"), und die Host-Brücken-SCU418 schützt den Speicher406 vor unautorisierten Zugriffen, die von den Gerätehardwareeinheiten414a bis414d (d. h. "hardwareinitiierte Zugriffe") erzeugt werden. Zu beachten ist, dass in anderen Ausführungsformen die Host-Brücke404 ein Teil der CPU402 sein kann, wie dies in4 gezeigt ist. -
5 ist eine Ansicht, in der die Beziehungen zwischen diversen Hardware- und Softwarekomponenten des Computersystems400 aus4 gezeigt sind. In der Ausführungsform aus5 sind mehrere Anwendungsprogramme500 , ein Betriebssystem502 , ein Sicherheitskernel504 und Gerätetreiber506a bis506d in dem Speicher406 abgelegt. Die Anwendungsprogramme500 , das Betriebssystem502 , der Sicherheitskernel504 und die Gerätetreiber506a bis506d enthalten Anweisungen, die von der CPU402 abgearbeitet werden. Das Betriebssystem502 stellt eine Anwendungsschnittstelle und eine Software"Plattform" bereit, auf der die Anwendungsprogramme500 laufen. Das Betriebssystem502 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 CPU402 (4 ) ein x86-Prozessor sein, der Anweisungen des x86-Instruktionssatzes ausführt. In dieser Situation kann die CPU402 spezialisierte Hardware elemente enthalten, um sowohl einen virtuellen Speicher als auch Speicherschutzmerkmale in dem geschützten Modus, wie dies zuvor beschrieben ist, bereitzustellen. Das Betriebssystem502 kann beispielsweise eines der Betriebssysteme der Windows-Familie sein (Microsoft Corp., Redmond, WA), das die CPU402 in dem geschützten Modus betreibt und die spezialisierten Hardwareelemente der CPU402 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 Betriebssystem502 bereitgestellten Sicherheitsfunktionen hinausgehen, um in dem Speicher406 gespeicherte Daten vor einem unautorisierten Zugriff zu schützen. In der Ausführungsform aus5 sind die Gerätetreiber506a bis506d funktionsmäßig mit den entsprechenden Gerätehardwareeinheiten414a bis414d verknüpft und mit diesen verbunden. Die Gerätehardwareeinheiten414a und414d sind "sichere" Geräte bzw. Einheiten und die entsprechenden Gerätetreiber506a und506d sind "sichere" Gerätetreiber. Der Sicherheitskernel504 ist zwischen dem Betriebssystem502 und den sicheren Gerätetreibern506a und506d angeordnet und überwacht alle Zugriffe der Anwendungsprogramme500 und des Betriebssystems502 auf die sicheren Gerätetreiber506a und506d und die entsprechenden sicheren Geräte414a und414d . Der Sicherheitskernel504 verhindert unautorisierte Zugriffe auf die sicheren Gerätetreiber506a und506d und die entsprechenden sicheren Geräte414a und414d von den Anwendungsprogrammen500 und dem Betriebssystem502 . - Wie in
5 gezeigt ist, ist der Sicherheitskernel504 mit der CPU SCU416 und der Host-Brücken SCU518 (beispielsweise über einen oder mehrere Gerätetreiber) verbunden. Wie nachfolgend detaillierter beschrieben ist, steuern die CPU CSU416 und die Host-Brücken SCU418 die Zugriffe auf den Speicher406 . Die CPU SCU416 überwacht alle softwareinitiierten Zugriffe auf den Speicher406 und die Host-Brücken SCU418 überwacht alle hardwareinitiierten Zugriffe auf den Speicher406 . Sobald die CPU SCU416 und die Host-Brücken SCU418 durch den Sicherheitskernel504 konfiguriert sind, erlauben diese lediglich autorisierte Zugriffe auf den Speicher406 . - In der Ausführungsform aus
5 sind die Gerätetreiber506b und506c "nicht sichere" Gerätetreiber und die entsprechenden Gerätehardwareeinheiten414b und414c sind "nicht sichere" Gerätehardwareeinheiten. Die Gerätetreiber506b und506c und die entsprechen den Gerätehardwareeinheiten414b und414c können beispielsweise "vererbte" Gerätetreiber und Gerätehardwareeinheiten sein. - Zu beachten ist, dass in anderen Ausführungsformen der Sicherheitskernel
504 ein Teil des Betriebssystems502 sein kann. In noch anderen Ausführungsformen können der Sicherheitskernel504 , die Gerätetreiber506a und506d und/oder die Gerätetreiber506 und506c Teil des Betriebssystems502 sein. -
6 ist eine Ansicht einer Ausführungsform der CPU402 des Computersystems400 aus4 . In der Ausführungsform aus6 enthält die CPU402 eine Ausführungseinheit600 , eine Speicherverwaltungseinheit (MMU)602 , eine Rechner- bzw. Kern- (Cache-)speichereinheit604 , eine Busschnittstelleneinheit (BIU)606 , einen Satz aus Steuerregistern608 und einen Satz aus Sicherheitsausführungsmodus- (SEM) Registern610 . Die CPU SCU416 ist in der MMU602 angeordnet. Wie später detailliert beschrieben ist, wird der Satz aus SEM-Registern610 verwendet, um einen Sicherheitsausführungsmodus (SEM) in dem Computersystem400 aus4 einzurichten, und die Operationen der CPU SCU416 und der Host-Brücken SCU418 werden von den Inhalten des Satzes der SEM-Register610 gesteuert. Auf die SEM-Register610 wird von dem Sicherheitskernel504 (5 ) zugegriffen (d. h. beschrieben und/oder ausgelesen). Das Computersystem400 aus4 kann beispielsweise in dem SEM arbeiten, wenn: (i) die CPU402 ein x86-Prozessor ist, der in den x86-geschützten Modus arbeitet, (ii) wenn die Speicherseiteneinteilung aktiviert ist und (iii) die Inhalte der SEM-Register610 einen SEM-Betrieb spezifizieren. - Im Allgemeinen regelt der Inhalt des Satzes der Steuerregister
608 den Betrieb der CPU402 . Daher steuert der Inhalt des Satzes an Steuerregister608 den Betrieb der Ausführungseinheit600 , der MMU602 , der Kernspeichereinheit604 und/oder der BIU606 . Zu dem Satz an Steuerregistern608 können beispielsweise die mehreren Steuerregister der x86-Prozessorarchitektur gehören. - Die Ausführungseinheit
600 der CPU402 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ührungseinheit600 ist mit der Kernspeichereinheit604 verbunden und kann Anweisungen von dem Speicher406 (4 ) über die Kernspeichereinheit604 und die BIU606 erhalten. - Der Speicher
406 (4 ) des Computersystems400 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 CPU402 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 Speicher406 zu einer gegebenen Zeit gespeichert. In der Ausführungsform aus6 repräsentieren Adresssignale, die von der Ausführungseinheit600 während der Abarbeitung der Instruktionen erzeugt werden, segmentierte (d. h. "logische") Adressen. Wie nachfolgend beschrieben ist, übersetzt die MMU602 die von der Ausführungseinheit600 erzeugten segmentierten Adressen in entsprechende physikalische Adressen des Speichers406 . Die MMU602 leitet die physikalischen Adressen der Kernspeichereinheit604 zu. Die Kernspeichereinheit604 ist eine relativ kleine Speichereinheit, die zur Speicherung von Instruktionen und Daten verwendet wird, die kürzlich von der Ausführungseinheit600 abgerufen wurden. Die BIU606 ist zwischen der Kernspeichereinheit604 und der Host-Brücke404 angeordnet und wird verwendet, um Instruktionen und Daten von dem Speicher406 über die Host-Brücke404 abzuholen, die nicht in der Kernspeichereinheit604 enthalten sind. -
7 ist eine Ansicht einer Ausführungsform der MMU602 aus6 . In der Ausführungsform aus7 enthält die MMU602 eine Segmentierungseinheit700 , eine Seitenbildungseinheit702 und eine Auswahllogik704 zum Auswählen von Ausgängen der Segmentierungseinheit700 und der Seitenbildungseinheit702 , um eine physikalische Adresse zu erzeugen. Wie in7 gezeigt ist, empfängt die Segmentierungseinheit700 eine segmentierte Adresse von der Ausführungseinheit600 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 in7 gezeigt ist, empfängt die Seitenbildungseinheit702 , wenn diese durch ein "Seitenbildungs-"Signal freigegeben ist, die linearen Adressen, die von der Segmentierungseinheit700 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 Steuerregister608 (6 ) sein. Wenn das Seitenbildungssignal nicht erkannt wird, ist die Seitenunterteilung des Speichers nicht aktiv und die Auswahllogik704 erzeugt die lineare Adresse, die von der Segmentierungseinheit700 empfangen wird, als die physikalische Adresse. - Wenn das Seitenbildungssignal erkannt wird, ist die Speicherseitenunterteilung aktiviert und die Seitenbildungseinheit
702 übersetzt die von der Segmentierungseinheit700 empfangene lineare Adresse in eine entsprechende physikalische Adresse, wobei der zuvor beschriebene Mechanismus100 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 Seitenbildungseinheit702 die physikalische Adresse, die sich aus dem Übersetzungsvorgang von der linearen Adresse in die physikalische Adresse ergibt. Die Auswahllogik704 empfängt die von der Seitenbildungseinheit702 erzeugte physikalische Adresse, erzeugt die von der Seitenbildungseinheit702 empfangene physikalische Adresse als die physikalische Adresse und leitet die physikalische Adresse der Kernspeichereinheit604 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 Seitenbildungseinheit702 keine physikalische Adresse während des Übersetzungsvorgangs von der linearen in die physikalische Adresse. Stattdessen erzeugt die Seitenbildungseinheit702 ein allgemeines Schutzfehler-(GPF) Signal und die MMU602 leitet das GPF-Signal an die Ausführungseinheit600 weiter. In Reaktion auf das GPF-Signal kann die Ausführungseinheit600 eine Ausnahmehandhabungsroutine ausführen und kann schließlich die Ausführung eines der Anwendungsprogramme500 (5 ) unterbrechen, das gerade läuft, wenn das GPF-Signal erkannt wird. - In der Ausführungsform aus
7 ist die CPU SCU416 in der Seitenbildungseinheit702 der MMU602 angeordnet. Die Seitenbildungseinheit702 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 SCU416 aus7 . In der Ausführungsform aus8 enthält die CPU SCU416 eine Sicherheitsprüflogik800 , die mit dem Satz der SEM-Register610 (6 ) verbunden ist, und einen Sicherheitsattributtrabellen-(SAT) Eintragspuffer802 . 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üflogik800 verwendet die innerhalb eines gegebenen SAT-Eintrags enthaltene zusätzliche Sicherheitsinformation, um unautorisierte softwareinitiierte Zugriffe auf die entsprechende Speicherseite zu verhindern. Der SAT-Eintragspuffer802 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 Computersystem400 aus4 einzurichten. Der Inhalt des Satzes der SEM-Register610 steuert den Betrieb der CPU SCU416 . Die Sicherheitsprüflogik800 enthält Informationen, die in dem SAT-Eintragspuffer802 zu speichern ist, von der MMU's602 über einen Kommunikationsbus, der in8 gezeigt ist. Die Sicherheitsprüflogik800 empfängt ferner eine von der Seitenbildungseinheit702 erzeugte physikalische Adresse. - Die
9 bis11 werden nun verwendet, um zu beschreiben, wie zusätzliche Sicherheitsinformationen von Speicherseiten, die unter Anwendung des Adressenübersetzungsmechanismus100 aus1 ausgewählt werden, in dem Computersystem400 aus4 gewonnen werden.9 ist eine Ansicht einer Ausführungsform eines Mechanismus900 zum Zugreifen auf einen SAT-Eintrag einer ausgewählten Speicherseite, um zusätzliche Sicherheitsinformationen der ausgewählten Speicherseite zu erhalten. Der Mechanismus900 aus9 kann in der Sicherheitsprüflogik800 aus4 eingerichtet sein und kann implementiert werden, wenn das Computersystem400 aus4 in dem SEM betrieben wird. Der Mechanismus900 beinhaltet eine physikalische Adresse902 , die von dem Seitenbil dungsmechanismus702 (7 ) unter Anwendung des Adressenübersetzungsmechanismus100 aus1 erzeugt wurde, ein SAT-Verzeichnis904 , mehrere SAT's mit einer SAT906 und ein SAT-Basisadressenregister908 des Satzes aus SEM-Registern610 . Das SAT-Verzeichnis104 und die mehreren SAT's einschließlich der SAT906 sind SEM-Datenstrukturen, die von dem Sicherheitskernel504 (5 ) erzeugt und verwaltet werden. Wie nachfolgend beschrieben ist, wird das SAT-Verzeichnis104 (wenn dieses vorhanden ist) und jede benötigte SAT in den Speicher406 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-Basisadressenregister908 anzeigt. Die höchstrangigsten (d. h. signifikantesten) Bits des SAT-Basisadressenregisters908 sind für die SAT-Verzeichnisbasisadresse reserviert. Die SAT-Verzeichnisbasisadresse ist eine Basisadresse einer Speicherseite, die das SAT-Verzeichnis904 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-Ersatzregisters1000 . In der Ausführungsform aus10 enthält das SAT-Ersatzregister1000 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-Basisadressenregisters908 eine "1" ist; somit wird die physikalische Adresse902 , die von der Seitenbildungslogik702 (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-Basisadressenregisters908 die Basisadresse der Speicherseite, die das SAT-Verzeichnis904 enthält. Das SAT-Verzeichnis904 enthält mehrere SAT-Verzeichniseinträge einschließlich eines SAT-Verzeichniseintrags910 . Jeder SAT-Verzeichniseintrag kann eine entsprechende SAT in dem Speicher406 aufweisen. Ein "oberer" Bereich der physikalischen Adresse902 , der die höchstrangigsten oder signifikantesten Bits der physikalischen Adresse902 enthält, wird als ein Index für das SAT- Verzeichnis904 verwendet. Der SAT-Verzeichniseintrag910 wird aus dem SAT-Verzeichnis904 unter Anwendung der SAT-Verzeichnisbasisadresse des SAT-Basisadressenregisters908 und dem oberen Bereich der physikalischen Adresse902 ausgewählt. -
11 ist eine Ansicht einer Ausführungsform eines SAT-Verzeichniseintragsformat1100 . 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 aus11 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 Speicher406 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 Speicher406 kopiert werden. Wenn P = 0 kann die Sicherheitsprüflogik800 einen Seitenfehler an die Logik in der Seitenbildungseinheit702 ausgeben und die MMU602 kann das Seitenfehlersignal zu der Ausführungseinheit600 weiterleiten (6 ). In Reaktion auf das Seitenfehlersignal kann die Ausführungseinheit600 eine Seitenfehlerhandhabungsroutine ausführen, die die benötigte SAT aus der Speichereinrichtung abruft und die benötigte SAT in dem Speicher406 ablegt. Wenn die benötigte SAT in dem Speicher406 abgelegt ist, wird das P-Bit des entsprechenden SAT-Verzeichniseintrags auf "1" gesetzt und der Mechanismus900 wird fortgesetzt. - Es sei wieder auf
9 verwiesen; ein "mittlerer" Bereich der physikalischen Adresse902 wird als ein Index für die SAT906 verwendet. Der SAT-Eintrag906 wird somit aus der SAT906 unter Anwendung der SAT-Basisadresse des SAT-Verzeichniseintrags910 und dem mittleren Bereich der physikalischen Adresse902 ausgewählt.12 ist eine Ansicht einer Ausführungsform eines SAT-Eintragformats1200 . In der Ausführungsform aus12 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 Speicher406 ab und leitet die SEM-Datenstruktureinträge der MMU602 zu. Es sei nun auf8 verwiesen; die Sicherheitsprüflogik800 empfängt die SEM-Datenstruktureinträge von der MMU602 und der Seitenbildungseinheit702 über den Kommunikationsbus. Wie zuvor beschrieben ist, wird der SAT-Eintragspuffer802 verwendet, um eine relativ geringe Anzahl von SAT-Einträgen von Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde. Die Sicherheitsprüflogik800 speichert einen gegebenen SAT-Eintrag in dem SAT-Eintragspuffer802 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 Seitenbildungseinheit702 erzeugten physikalischen Adresse mit Markierungsbereichen von physikalischen Adressen, die den in dem SAT-Eintragspuffer802 gespeicherten SAT-Einträgen entsprechen. Wenn der Markierungsbereich der physikalischen Adresse mit einem Markierungsbereich einer physikalischen Adresse, die einem in dem SAT-Eintragspuffer802 gespeicherten SAT-Eintrag entspricht, übereinstimmt, greift die Sicherheitsprüflogik800 auf den SAT-Eintrag in dem SAT-Eintragspuffer802 zu, und vermeidet damit die Notwendigkeit, den Prozess aus9 auszuführen, um den SAT-Eintrag von dem Speicher406 zu erhalten. Der Sicherheitskernel504 (5 ) modifiziert den Inhalt des SAT-Basisadressenregisters908 in der CPU402 (beispielsweise während Kontextänderungen). In Reaktion auf Modifizierungen des SAT-Basisadressenregisters908 kann die Sicherheitsprüflogik800 der CPU SCU416 dem SAT-Eintragspuffer802 löschen. - Wenn das Computersystem
400 aus4 in dem SEM arbeitet, empfängt die Sicherheitsprüflogik800 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üflogik800 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 Speicher406 autorisiert ist. - Die CPU
402 aus6 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 Speichers406 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ührungseinheit600 der CPU402 (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ührungseinheit600 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 aus4 in dem SEM arbeitet. Die CPU SCU416 (4 bis8 ) und der Sicherheitskernel504 (5 ) arbeiten zusammen, um die Regeln der Tabelle 1 einzurichten, wenn das Computersystem400 aus4 in dem SEM betrieben wird, um eine zusätzliche Sicherheit für in dem Speicher406 gespeicherte Daten vorzusehen, die über die Datensicherheit hinausgeht, die von dem Betriebssystem502 (5 ) bereitgestellt wird. -
- 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üflogik800 der CPU SCU416 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 Seitenbildungseinheit702 . Wenn die Sicherheitsprüflogik800 das GPF-Signal erkennt, leitet die MMU602 das GPF-Signal zu der Ausführungseinheit600 (6 ) weiter. In Reaktion auf das GPF-Signal kann die Ausführungseinheit600 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 MMU602 das SEM-Sicherheitsausnahmesignal zu der Ausführungseinheit600 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ührungseinheit600 (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ührungseinheit600 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ücke404 aus4 . In der Ausführungsform aus13 umfasst die Host-Brücke404 eine Host-Schnittstelle1300 , eine Brückenlogik1302 , eine Host-Brücken SCU418 , eine Speichersteuerung1304 , eine Gerätebusschnittstelle1306 und eine Busüberwachung1308 . Die Host-Schnittstelle1300 ist mit der CPU402 in Verbindung und die Gerätebusschnittstelle1306 ist mit dem Gerätebus408 verbunden. Die Brückenlogik1302 ist zwischen der Host-Schnittstelle1300 und der Gerätebusschnittstelle1306 angeordnet. Die Speichersteuerung1304 ist mit dem Speicher406 verbunden und führt alle Zugriffe auf den Speicher406 aus. Die Host-Brücken SCU418 ist zwischen der Brückenlogik1302 und der Speichersteuerung1304 angeordnet. Wie zuvor beschrieben ist, steuert die Host-Brücken SCU418 den Zugriff auf den Speicher406 über die Gerätebusschnittstelle1306 . Die Host-Brücken SCU418 überwacht alle Zugriffe auf den Speicher406 über die Gerätebusschnittstelle1306 und erlaubt lediglich autorisierte Zugriffe auf den Speicher406 . - In der Ausführungsform aus
13 ist die Busüberwachung1308 mit der Gerätebusschnittstelle1306 , der Brückenlogik1302 und der Host-Brücken SCU418 verbunden. Die Busüberwachung1308 verteilt die Aufgaben zwischen der Brückenlogik1302 , den Gerätehardwareeinheiten414a und414b (4 ) und der Gerätebusbrücke410 (4 ), um den Gerätebus408 (4 ) zu steuern. (Die Gerätehardwareeinheiten414c und414d aus4 greifen auf den Gerätebus408 über die Gerätebusbrücke410 zu.) Im Allgemeinen enthält der Gerätebus408 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ätebus408 verbunden sind, die Steuerung über den Gerätebus408 ausübt. Die Busüberwachung1308 legt das Bewilligungssignal auf die eine oder mehreren Signalleitungen, die das Bewilligungssignal übermitteln. Die Busüberwachung1308 kann typischerweise separate Anforderungssignale von den Gerätehardwareeinheiten414a und414b und der Gerätebusbrücke410 empfangen, wobei jedes Anforderungssignal von den Geräten erstellt wird, wenn das entsprechende Gerät die Steuerung über den Gerätebus408 benötigt. Die Busüberwachung1308 kann getrennte Bewilligungssignale zu den Gerätehardwareeinheiten414a und414b und zu der Gerätebusbrücke410 aussenden, wobei ein gegebenenes Bewilligungssignal ausgegeben wird, um anzuzeigen, dass die Steuerung des Gerätebusses408 durch das entsprechende Gerät bewilligt ist. Wie später detailliert beschrieben ist, arbeiten die Busüberwachung1308 und die Host-Brücken SCU418 zusammen, um innerhalb des Computersystems400 eine Zugriffssicherheit von Gerät zu Gerät bereitzustellen. -
14 ist eine Ansicht einer Ausführungsform der Host-Brücken SCU418 aus13 . In der Ausführungsform aus14 umfasst die Host-Brücken SCU418 eine Sicherheitsprüflogik400 , die mit einem Satz an SEM-Registern1402 und einem SAT-Eintragspuffer1404 gekoppelt ist. Der Satz aus SEM-Registern1402 regelt den Betrieb der Sicherheitsprüflogik1400 und enthält ein zweites SAT-Basisadressenregister908 aus9 . Das zweite SAT-Basisadressenregister908 des Satzes an SEM-Registern1402 kann ein adressierbares Register sein. Wenn der Sicherheitskernel504 (5 ) den Inhalt des SAT-Basisadressenregisters908 in dem Satz der SEM-Register610 der CPU402 modifiziert (beispielsweise eines Kontextwechsels), kann der Sicherheitskernel504 auch den gleichen Wert in das zweite SAT-Basisadressenregister908 in dem Satz aus SEM-Registern1402 der Host-Brücken SCU418 schreiben. In Reaktion auf die Modifizierungen des zweiten SAT-Basisadressenregister908 kann die Sicherheitsprüflogik1400 die Host-Brücken-SCU418 den SAT-Eintragspuffer1404 löschen. - Die Sicherheitsprüflogik
1400 empfängt Speicherzugriffssignale von Speicherzugriffen, die von den Hardwaregeräteeinheiten414a bis414d (4 ) initiiert wurden, über die Geräte busschnittstelle1306 und die Brückenlogik1302 (13 ). Die Speicherzugriffssignale vermitteln die physikalischen Adressen von den Hardwaregeräteeinheiten414a bis414d und entsprechende Steuer- und/oder Datensignale. Die Sicherheitsprüflogik1400 kann den Mechanismus900 (9 ) ausführen, um SAT-Einträge der entsprechenden Speicherseite zu erhalten und kann den Mechanismus900 implementieren, wenn das Computersystem400 aus4 in dem SEM arbeitet. Der SAT-Eintragspuffer1404 ist ähnlich zu dem SAT-Eintragspuffer802 der CPU SCU416 (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 aus4 in dem SEM arbeitet, verwendet die Sicherheitsprüflogik1400 aus14 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üflogik1400 die Speicherzugriffssignale (d. h. Adressensignale, die eine physikalische Adresse vermitteln, und die zugeordneten Steuer- und/oder Datensignale) des Speicherzugriffs zu der Speichersteuerung1304 . Die Speichersteuerung1304 verwendet die physikalische Adresse und die zugeordneten Steuer- und/oder Datensignale, um auf den Speicher406 zuzugreifen. Wenn der Zugriff auf den Speicher406 ein Schreibzugriff ist, werden die von den Datensignalen transportierten Daten in den Speicher406 geschrieben. Wenn der Zugriff auf den Speicher406 ein Lesezugriff ist, liest die Speichersteuerung1304 Daten aus dem Speicher406 aus und liefert die resultierenden Lesedaten an die Sicherheitsprüflogik1400 . Die Sicherheitsprüflogik1400 gibt die ausgelesenen Daten an die Brückenlogik1302 weiter und die Brückenlogik1302 leitet die Daten der Gerätebusschnittstelle1306 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 Speicher406 zu der Speichersteuerung1304 . Wenn der unautorisierte hardwareinitiierte Speicherzugriff ein Speicherschreibzugriff ist, kann die Sicherheitsprüflogik1400 ein Ende des Schreibzugriffes anzeigen und die geschriebenen Daten verwerfen, wodurch der Speicher406 unverändert bleibt. Die Sicherheitsprüflogik1400 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 Sicherheitskernel504 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üflogik1400 ein falsches Ergebnis (beispielsweise nur "F") zu der Gerätebusschnittstelle1306 über die Brückenlogik1302 als die Lesedaten zurückgeben. Die Sicherheitsprüflogik1400 kann ferner einen Registrierungseintrag in der oben beschriebenen Weise erzeugen, um die Zugriffssicherheitsverletzung zu dokumentieren. -
15 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens1500 zum Bereitstellen einer Zugriffssicherheit für einen Speicher, der zur Speicherung von Daten verwendet wird, die in mehreren Speicherseiten angeordnet sind. Das Verfahren1500 gibt die beispielhaften Regeln aus Tabelle 1 für CPU-initiierte (d. h. softwareinitiierte) Speicherzugriffe wieder, wenn das Computersystem400 aus4 in dem SEM-Modus arbeitet. Das Verfahren1500 kann in der MMU602 (6 bis7 ) eingerichtet sein. Während eines Schritts502 des Verfahrens1500 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 Schritts1504 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 Schritts1508 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 Schritts1510 erzeugt. - Während eines Schritts
1512 , der auf den Schritt1508 folgt, wird auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher angeordnet ist (beispielsweise das SAT-Verzeichnis904 aus9 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 Schritte1512 und1514 des Verfahrens1500 in der CPU SCU416 (4 bis8 ) eingerichtet sein können. - Die folgende Tabelle 2 zeigt beispielhafte Regeln für Speicherseitenzugriffe, die von den Gerätehardwareeinheiten
414a bis414d (d. h. hardwareinitiierte Speicherzugriffe) initiiert werden, wenn das Computersystem400 aus4 in dem SEM-Modus arbeitet. Derartige hardwareinitiierte Speicherzugriffe können durch eine Busüberwachungsschaltung innerhalb der Gerätehardwareeinheiten414a bis414d initiiert werden, oder durch DMA-Geräte auf Anforderung der Gerätehardwareeinheiten414a bis414d . Die Sicherheitsprüflogik1400 kann die Regeln aus Tabelle 2 implementieren, wenn das Computersystem400 aus4 in dem SEM-Modus arbeitet, um Sicherheit für die in dem Speicher406 gespeicherten Daten zu gewährleisten, die über die von dem Betriebssystem502 (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. - 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 Mechanismus900 aus9 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üflogik1400 (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üflogik1400 reagiert auf den nicht autorisierten Lesezugriff, indem nur "F" anstelle des tatsächlichen Speicherinhalts bereitgestellt werden (d. h. falsche Lesedaten). Die Sicherheitsprüflogik1400 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üflogik1400 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 Verfahrens1600 zur Bereitstellung einer Zugriffssicherheit für einen Speicher, der zur Speicherung von in mehreren Speicherseiten angeordneten Daten verwendet wird. Das Verfahren1600 gibt die beispielhaften Regeln der Tabelle 2 für hardwareinitiierte Speicherzugriffe wieder, wenn das Computersystem400 aus4 in dem SEM-Modus arbeitet. Das Verfahren1600 kann in der Host-Brücke404 (4 und13 bis14 ) eingerichtet werden. Während eines Schritts1602 des Verfahrens1600 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 Schritts1604 zu erhalten. Die mindestens eine Sicherheitsattributdatenstruktur kann beispielsweise ein SAT-Verzeichnis (beispielsweise das SAT-Verzeichnis904 in9 ) und mindestens eine SAT (beispielsweise die SAT906 in9 ) 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 Schritts1606 wird auf den Speicher unter Verwendung der Speicherzugriffssignale in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite zugegriffen. Zu beachten ist, dass die Schritte1604 und1602 des Verfahrens1600 in der Host-Brücken SCU418 (4 und13 bis14 ) eingerichtet sein können. - Wie zuvor beschrieben ist, arbeiten die Busüberwachung
1308 (13 ) und die Host-Brücken SCU418 (4 und13 bis14 ) zusammen, um eine Zugriffssicherheit von Gerät zu Gerät innerhalb des Computersystems400 zu gewährleisten. Die Busüberwachung1308 dient als Schiedsrichter zwischen den Geräten, die mit dem Gerätebus408 (4 ) verbunden sind, um den Gerätebus408 in der oben beschriebenen Weise zu steuern und treibt ein Bewilligungssignal auf der einen oder mehreren Signalleitungen des Gerätebus408 . Ein Zustand des Bewilligungssignals zeigt an, welches mit dem Gerätebus408 verbundenen Geräte die Kontrolle des Gerätebus408 ausführt. - Es werden nun beispielhafte Operationen der Busüberwachung
1308 und der Host-Brücken SCU418 beschrieben, wobei der Gerätebus408 ein peripherer Komponentenverbindungs-(PCI) Bus ist. Die Busüberwachung1308 empfängt n Anforderungssignale REQ#1 bis REQ#n, wobei jeweils eines von einem entsprechenden der n Geräte stammt, die mit dem Gerätebus408 verbunden sind und die in der Lage sind, den Gerätebus408 zu treiben (beispielsweise die Brückenlogik1302 aus13 , die Gerätehardwareeinheiten414a und414b aus4 und die Gerätebusbrücke410 aus4 ). (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ätebus408 benötigt. Die Busüberwachung1308 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ätebusses408 bewilligt. Im folgenden Beispiel sind die Signale REQ#1 und GNT#1 mit Gerätehardwareeinheit414a (4 ) und die Signale REQ#2 und GNT#2 mit der Gerätehardwareeinheit414b (4 ) verknüpft. -
17 ist eine Ansicht einer Ausführungsform der Host-Brücken SCU418 aus4 , wobei die Host-Brücken SCU418 eine Zugriffsautorisierungstabelle1700 enthält. Im Allgemeinen besitzt die Zugriffsautorisierungstabelle1700 einen anderen Satz an Einträgen für jedes Gerät, das mit dem Gerätebus408 verbunden und in der Lage ist, den Gerätebus408 zu treiben (d. h. jedes Gerät besitzt entsprechende REQ# und GNT# Signale). Ein ers ter Satz an Einträgen entsprechend der Gerätehardwareeinheit414a und ein zweiter Satz an Einträgen entsprechend der Gerätehardwareeinheit414b sind in17 dargestellt. - Jeder Eintrag der Zugriffsautorisierungstabelle
1700 entspricht einem Gerät, das mit dem Gerätebus408 verbunden und in der Lage ist, diesen zu treiben. Beispielsweise ist in17 ein erster Eintrag in dem ersten Satz aus Einträgen, die der Gerätehardware414a entsprechen, an die Gerätehardware414b 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ätehardware414b und zeigt an, ob die Gerätehardware414b autorisiert ist oder nicht, um auf die Gerätehardware414a zuzugreifen. Die Zugriffsautorisierungstabelle1700 kann durch den Sicherheitskerner504 (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ätebus408 gebündelte Adresse- und Daten (A/D) Signalleitungen. Ein Initiatorgerät, das mit dem Gerätebus408 verbunden ist, greift auf ein Zielgerät, das mit dem Gerätebus408 verbunden ist, zu, indem die gebündelten bzw. gemultiplexten A/D-Signalleitungen des Gerätebus408 mit Adressensignalen angesteuert werden, die eine Adresse repräsentieren, die dem Zielgerät zugeordnet ist. Um den Zugriff auf beispielsweise die Gerätehardware414b , die mit dem Gerätebus408 verbunden ist, zu steuern, programmiert die Host-Brücken SCU418 zunächst die Gerätehardware414b über den PCI-Bus, um die Gerätehardware414b 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ätebusses408 über die Gerätebusschnittstelle1306 (13 ) verbunden und überwacht die GNT#- und A/D- Signalleitungen des Gerätebus408 , um Zugriffsversuche zu erkennen. Es sei beispielsweise angenommen, dass die Gerätehardware414a versucht, auf die Gerätehardware414b zuzugreifen. Wenn die "Initiator-" Gerätehardware414a versucht, auf die "Ziel-" Gerätehardware414b zuzugreifen, blockiert die Gerätehardware414b 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ätehardware414b zugeordnet ist, auf den A/D-Signalleitungen des Gerätebus408 ). Diese Aktion erzwingt, dass die Gerätehardware414a einen wiederholten Zugriffsversuch mittels eines nachfolgenden Zugriffsversuchs unternimmt. - Während die Gerätehardware
414b den Zugriffsversuch abblockt, erkennt die Host-Brücken SCU418 den Zugriffsversuch mittels der Adresse, die der Gerätehardware414b zugeordnet ist und auf den A/D-Signalleitungen des Gerätebus408 anliegt. Da die Gerätehardware414a die Kontrolle über den Gerätebus408 besitzt, wird das GNT#1 Signal erstellt und die Host-Brücken SCU418 erkennt die Gerätehardware414a als den Initiator anhand des erstellten GNT#1 Signals. - Die Host-Brücken SCU
418 bestimmt dann, ob der nachfolgende Zugriffsversuch durch die Gerätehardware414a erlaubt werden soll. Die Host-Brücken SCU418 greift auf den zweiten Satz an Einträgen der Zugriffsautorisierungstabelle1700 (17 ) entsprechend der Gerätehardware414b 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ätehardware414b durch die Gerätehardware414a autorisiert ist, und der nachfolgende Zugriffsversuch durch die Gerätehardware414a 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 SCU418 ein Signal an die Bussteuerung1308 (13 ), um die Gerätehardware414a zu identifizieren. Unmittelbar vor der nächsten Bewilligung des Steuerungsgerätebusses408 für die Gerätehardware414a bewilligt die Bussteuerung1308 die Steuerung des Gerätebusses408 durch die Host-Brücken SCU418 . Die Host-Brücken SCU418 treibt die Signale auf den Signalleitungen des Gerätebus408 , die die Gerätehardware414b so konfigurieren, um den nachfolgenden Zugriffsversuch durch die Gerätehardware414a zu erlauben. - Unmittelbar auf den nachfolgenden Zugriffsversuch durch die Gerätehardware
414a bewilligt die Bussteuerung1308 erneut der Host-Brücken SCU418 die Steuerung über den Gerätebus408 . Die Host-Brücken SCU418 treibt Signale auf den Signalleitungen des PCI-Bus, die die Gerätehardware414b 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ätehardware414b zugeordnet ist, auf den A/D-Signalleitungen des Gerätebus408 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 SCU418 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 Verfahrens1800 , 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 Verfahren1800 Zugriffssicherheit für das zweite Gerät ermöglicht. Das Verfahren1800 kann in der Host-Brücken SCU418 (4 ,13 bis14 und17 ) eingerichtet sein. Während eines Schritts1802 des Verfahrens1800 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 Schritts1804 auf der Grundlage der Signale erkannt. Während eines Schritts1806 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 Schritts1808 in Abhängigkeit der Identität des ersten Geräts gesteuert. Das Steuern des Zugriffs auf das zweite Gerät während des Schritts1808 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 bis506d 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)
- 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 bisd ) zuzugreifen, die mit dem Übertragungsmedium (408 ,412 ) verbunden ist, auf der Grundlage der Signale zu erfassen, eine Identität der ersten Einrichtung (414a bis414b ) auf der Grundlage der Signale zu bestimmen, und einen Zugriff der ersten Einrichtung (414a bisd ) auf die zweite Einrichtung (414a bisd ) in Abhängigkeit der Identität der ersten Einrichtung (414a bisd ) zu steuern. - 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 bisd ) die Steuerung des Busses (408 ,412 ) bewilligt ist, und wobei während des Versuchs der ersten Einrichtung (414a bisd ), auf die zweite Einrichtung (414a bisd ) zuzugreifen, das Bewilligungssignal sich in dem ersten Zustand befindet und die erste Einrichtung (414a bisd ) Adressensignale auf die Adressleitungen des Busses (408 ,412 ) legt, die Adressen enthalten, die der zweiten Einrichtung (414a bisd ) zugeordnet sind, und wobei die Sicherheitsprüfeinheit (416 ,418 ) ausgebildet ist, die an den Adressleitungen anliegenden Adressensignale und das Bewilligungssignal zu überwachen. - Die Vorrichtung nach Anspruch 2, wobei die Sicherheitsprüfeinheit (
416 ,418 ) ausgebildet ist, den Versuch der ersten Einrichtung (414a bisd ), auf die zweite Einrichtung (414a bisd ) zuzugreifen, zu erfassen, wenn das Bewilligungssignal sich in dem ersten Zustand befindet und die Adressensignale die der zweiten Einrichtung (414a bisd ) zugeordneten Adresse enthält, und wobei die Sicherheitsprüfeinheit (416 ,418 ) ausgebildet ist, die Identität der ersten Einrichtung (414a bisd ) in Abhängigkeit eines Zustands des Bewilligungssignals zu bestimmen. - Die Vorrichtung nach Anspruch 1, wobei die Sicherheitsprüfeinheit (
416 ,418 ) in einem Prozessor (402 ) oder einer Brücke (404 ) enthalten ist. - Die Vorrichtung nach Anspruch 1, wobei die Sicherheitsprüfeinheit (
416 ,418 ) ausgebildet ist, die zweite Einrichtung (414a bisd ) so zu konfigurieren, um Zugriffsversuche durch die erste Einrichtung (414a bisd ) zuzulassen, wenn die erste Einrichtung (414a bisd ) autorisiert ist, auf die zweite Einrichtung (414a bisd ) zuzugreifen. - Die Vorrichtung nach Anspruch 1, wobei die Sicherheitsprüfeinheit (
416 ,418 ) eine Zugriffsautorisierungstabelle (906 ) mit einem Eintrag (912 ) entsprechend der zweiten Einrichtung (414a bisd ) umfasst, und wobei der Eintrag (912 ) den ersten Zustand eines Bewilligungssignals und einen entsprechenden Zugriffsautorisierungswert enthält, der anzeigt, ob die erste Einrichtung (414a bisd ) autorisiert ist oder nicht, um auf die zweite Einrichtung (414a bisd ) zuzugreifen, und wobei die Sicherheitsprüfeinheit (416 ,418 ) ausgebildet ist, zu bestimmen, ob die erste Einrichtung (414a bisd ) autorisiert ist, auf die zweite Einrichtung (414a bisd ) 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 bisd ) für einen Zugriff auf die zweite Einrichtung (414a bisd ) autorisiert ist, die Sicherheitsprüfeinheit (416 ,418 ) ausgebildet ist, Signale auf die Signalleitungen des Busses (408 ,412 ) zu legen, die die zweite Einrichtung (414a bisd ) so konfigurieren, um Zugriffsversuche durch die erste Einrichtung (414a bisd ) zuzulassen. - Die Vorrichtung nach Anspruch 1, die ferner eine Entscheidungssteuerung (
1308 ) aufweist, die ausgebildet ist, die Steuerung zwischen mehreren Einrichtungen (414a bisd ) zu verteilen, die mit dem Übertragungsmedium (408 ,412 ) verbunden sind, wobei die mehre ren Einrichtungen (414a bisd ) zumindest die erste Einrichtung (414a bisd ) und die zweite Einrichtung (414a bisd ) umfassen, und wobei die Entscheidungssteuerung (1308 ) ferner ausgebildet ist, einer einzelnen Einrichtung der mehreren Einrichtungen (414a bisd ) 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 bisd ) die Steuerung des Busses408 ,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 bisd ) durch die erste Einrichtung (414a bisd ) auf der Grundlage der Adressensignale zu erfassen, eine Identität der ersten Einrichtung (414a bisd ) auf der Grundlage des Bewilligungssignals zu bestimmen, zu bestimmen, ob die erste Einrichtung (414a bisd ) autorisiert ist, auf die zweite Einrichtung (414a bisd ) zuzugreifen, auf der Grundlage der Identität der ersten Einrichtung (414a bisd ), und die zweite Einrichtung (414a bisd ) zu konfigurieren, um Zugriffsversuche durch die erste Einrichtung (414a bisd ) zuzulassen, wenn die erste Einrichtung (414a bisd ) autorisiert ist, auf die zweite Einrichtung (414a bisd ) zuzugreifen. - Verfahren zur Bereitstellung einer Zugriffssicherheit für eine spezifizierte Einrichtung (
414a bisd ), wobei das Verfahren umfasst: Überwachen von Signalen; Detektieren eines Versuchs einer weiteren Einrichtung (414a bisd ) auf die spezielle Einrichtung (414a bisd ) zuzugreifen auf der Grundlage der Signale; Verwenden der Signale, um eine Identität der weiteren Einrichtung (414a bisd ) zu bestimmen; und Steuern des Zugriffs auf die spezielle Einrichtung (414a bisd ) in Abhängigkeit der Identität der weiteren Einrichtung (414a bisd ). - Das Verfahren nach Anspruch 8, wobei Steuern des Zugriffs auf die spezielle Einrichtung (
414a bisd ) in Abhängigkeit der Identität der weiteren Einrichtung (414a bisd ) umfasst: Steuern des Zugriffs auf die spezielle Einrichtung (414a bisd ) durch die weitere Einrichtung (414a bisd ) in Abhängigkeit der Identität der weiteren Einrichtung (414a bisd ). - Das Verfahren nach Anspruch 9, wobei Steuern des Zugriffs auf die spezielle Einrichtung (
414a bisd ) durch die weitere Einrichtung (414a bisd ) in Abhängigkeit der Identität der weiteren Einrichtung (414a bisd ) ferner umfasst: Bestimmen, ob die weitere Einrichtung (414a bisd ) autorisiert ist, auf die spezielle Einrichtung (414a bisd ) zuzugreifen, auf der Grundlage der Identität der weiteren Einrichtung (414a bisd ); und Konfigurieren der speziellen Einrichtung (414a bisd ), um Zugriffsversuche durch die weitere Einrichtung (414a bisd ) zuzulassen, wenn die weitere Einrichtung (414a bisd ) autorisiert ist, auf die spezielle Einrichtung (414a bisd ) zuzugreifen.
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)
| 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)
| 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 |
-
2002
- 2002-03-27 US US10/107,776 patent/US7383584B2/en not_active Expired - Lifetime
- 2002-12-18 KR KR1020047015524A patent/KR100972635B1/ko not_active Expired - Lifetime
- 2002-12-18 AU AU2002357923A patent/AU2002357923A1/en not_active Abandoned
- 2002-12-18 WO PCT/US2002/040742 patent/WO2003083628A2/en not_active Ceased
- 2002-12-18 JP JP2003580989A patent/JP4799822B2/ja not_active Expired - Lifetime
- 2002-12-18 DE DE10297686.4T patent/DE10297686B4/de not_active Expired - Lifetime
- 2002-12-18 GB GB0420728A patent/GB2402783B/en not_active Expired - Lifetime
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 |