In der Informatik ist die fähigkeitsbasierte Adressierung ein Verfahren, das von einigen Computern zur Steuerung des Speicherzugriffs und damit zur effizienten Implementierung fähigkeitsbasierter Sicherheit eingesetzt wird . Bei diesem Verfahren werden Zeiger durch geschützte Objekte (sogenannte Fähigkeiten ) ersetzt , die sowohl einen Speicherort als auch Zugriffsrechte spezifizieren. Diese Zugriffsrechte definieren die Menge der Operationen, die auf diesem Speicherort ausgeführt werden können. [ 1 ] Fähigkeiten können nur mithilfe privilegierter Anweisungen erstellt oder geändert werden, die ausschließlich vom Kernel oder einem anderen dazu berechtigten privilegierten Prozess ausgeführt werden dürfen. Dadurch kann der Kernel den Zugriff von Anwendungscode und anderen Subsystemen auf die minimal notwendigen Speicherbereiche beschränken (und gegebenenfalls Schreibzugriffe deaktivieren), ohne separate Adressräume verwenden und somit einen Kontextwechsel beim Zugriff erzwingen zu müssen.

Praktische Umsetzungen

Für die Umsetzung stehen zwei Techniken zur Verfügung:

  • Die Funktionen müssen in einem bestimmten Speicherbereich abgelegt werden, auf den der Prozess, der sie verwendet, nicht zugreifen kann. Beispielsweise erforderte das Plessey System 250 , dass alle Funktionen in Funktionslistensegmenten gespeichert wurden.
  • Der Speicher wird um ein zusätzliches Bit erweitert, das nur im Supervisor-Modus beschreibbar ist und angibt, dass ein bestimmter Speicherort eine Capability darstellt. Dies ist eine Verallgemeinerung der Verwendung von Tag-Bits zum Schutz von Segmentdeskriptoren in den Burroughs Large Systems und wurde zum Schutz von Capabilities im IBM System/38 verwendet .

Fähigkeitsadressierung im IBM System/38 und AS/400

Das System/38 unterstützte zwei Arten von Objektzeigern: autorisierte und nicht autorisierte . Erstere stellten die Implementierung der fähigkeitsbasierten Adressierung der Plattform dar. [ 2 ] Beide Zeigertypen konnten nur mit privilegierten Befehlen manipuliert werden und unterschieden sich darin, ob Objektberechtigungen (d. h. Zugriffsrechte) im Inhalt des Zeigers kodiert waren. Nicht autorisierte Zeiger kodierten keine Objektberechtigungen und erforderten, dass das Betriebssystem die Berechtigung des Objekts separat überprüfte, um festzustellen, ob der Zugriff auf das Objekt erlaubt war. Autorisierte Zeiger kodierten Objektberechtigungen, sodass der Besitz des Zeigers den Zugriff implizierte und das Betriebssystem die Berechtigung nicht separat überprüfen musste. Autorisierte Zeiger waren systembedingt unwiderruflich – wenn die Berechtigungen des Objekts geändert wurden, änderte sich nichts an den kodierten Berechtigungen bereits existierender autorisierter Zeiger.

Frühe Versionen des Betriebssystems OS/400 für den AS/400 unterstützten auch autorisierte Zeiger und damit die fähigkeitsbasierte Adressierung. Mit der Version V1R3 von OS/400 wurden autorisierte Zeiger jedoch entfernt, da ihre Unwiderrufbarkeit als Sicherheitsrisiko angesehen wurde. [ 3 ] Alle nachfolgenden Versionen von OS/400 (später IBM i) verwenden ausschließlich nicht autorisierte Zeiger, die keine fähigkeitsbasierte Adressierung unterstützen.

Chronologie der Systeme, die die fähigkeitsbasierte Adressierung einführen

Referenzen

  1. ^ Levy, Henry M. (16.05.2014). „Capability and Object-Based System Concepts“ (PDF) . Capability-Based Computer Systems . Digital Press. S. 3–4. ISBN 978-1-4831-0106-4Die
  2. ^ Levy, Henry M. (16.05.2014). „Das IBM System/38“ (PDF) . Capability-Based Computer Systems . Digital Press. ISBN 978-1-4831-0106-4Die
  3. ^ Soltis, Frank (1997). Inside the AS/400 – Featuring the AS400e series (2. Aufl.). Duke Press. ISBN 978-1-882419-66-1Die

Weiterführende Literatur