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
- 1969: System 250 – Plessey Company
- 1970–77: CAP-Computer – Computerlabor der Universität Cambridge
- 1978: System/38 – IBM
- 1980: Flexmaschine – Königliche Signal- und Radaranstalt (RSRE) Malvern
- 1981: Intel iAPX 432 – Intel
- 2014: CHERI (erweitert bestehende ISAs um Funktionen für eine sicherere Programmierung, auch in C und C++ )
- 2020: CHEx86
- 2022: ARM Morello ( AArch64 mit CHERI-Funktionen)
Referenzen
- ^ 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
- ^ Levy, Henry M. (16.05.2014). „Das IBM System/38“ (PDF) . Capability-Based Computer Systems . Digital Press. ISBN 978-1-4831-0106-4Die
- ^ Soltis, Frank (1997). Inside the AS/400 – Featuring the AS400e series (2. Aufl.). Duke Press. ISBN 978-1-882419-66-1Die
Weiterführende Literatur
- Fabry, RS (1974). „Capability-based addressing“ . Communications of the ACM . 17 (7): 403–412 . doi : 10.1145/361011.361070 . S2CID 5702682 .
- Wulf, W.; Cohen, E.; Corwin, W.; Jones, A.; Levin, R.; Pierson, C.; Pollack, F. (Juni 1974). „HYDRA: Der Kern eines Multiprozessor-Betriebssystems“ . Communications of the ACM . 17 (6): 337–345 . doi : 10.1145/355616.364017 . ISSN 0001-0782 . S2CID 8011765 .
- Denning, PJ (Dezember 1976). „Fehlertolerante Betriebssysteme“. ACM Computing Surveys . 8 (4): 359–389 . doi : 10.1145/356678.356680 . ISSN 0360-0300 . S2CID 207736773 .
- Levy, Henry M. (1984). Fähigkeitsbasierte Computersysteme . Maynard, Mass.: Digital Press. ISBN 978-0-932376-22-0Die
- Linden, Theodore A. (Dezember 1976). „Betriebssystemstrukturen zur Unterstützung von Sicherheit und zuverlässiger Software“. ACM Computing Surveys . 8 (4): 409–445 . doi : 10.1145/356678.356682 . hdl : 2027/mdp.39015086560037 . ISSN 0360-0300 . S2CID 16720589 .dasselbe Dokument wie der Bericht für das US-amerikanische NIST
- Berstis, Viktors (6.–8. Mai 1980). „Sicherheit und Schutz von Daten im IBM System/38“ . Tagungsband des 7. jährlichen Symposiums über Rechnerarchitektur . La Baule, Vereinigte Staaten. S. 245–252 . doi : 10.1145/800053.801932 .
- Sincoskie, W. David ; Farber, David J. (Juli 1980). „SODS/OS: Verteiltes Betriebssystem für die IBM Series/1“. ACM SIGOPS Operating Systems Review . 14 (3): 46–54 . doi : 10.1145/850697.850704 . S2CID 14245116 .
- Myers, GJ ; Buckingham, BRS (Oktober 1980). „Eine Hardware-Implementierung der fähigkeitsbasierten Adressierung“ . ACM SIGOPS Operating Systems Review . 14 (4): 13–25 . doi : 10.1145/641914.641916 . S2CID 17390439 .
- Houdek, ME; Soltis, FG ; Hoffman, RL (Mai 1981). „IBM System/38-Unterstützung für Capability-Based Addressing“ . Proceedings of the 8th ACM International Symposium on Computer Architecture . ACM/IEEE. S. 341–348 .
- Buzzard, GD; Mudge, TN (August 1983). Objektbasierte Computersysteme und die Programmiersprache Ada (Bericht). The University of Michigan – Computer Research Laboratory and Robotics Research Laboratory Department of Electrical and Computer Engineering. hdl : 2027.42/3992 .
Externe Links
- „Zur Verbreitung des Capability Approach“ . cap-talk (Mailingliste) . Abgerufen am 16.07.2007 .
{{cite mailing list}}CS1-Wartung: Veralteter Archivierungsdienst ( Link )
