Sicherheit in Betriebssystemen
Transcrição
Sicherheit in Betriebssystemen
Sicherheit in Betriebssystemen Winfried E. Kühnhauser und Jochen Liedtke GMD – Forschungszentrum Informationstechnik Schloss Birlinghoven D-53754 Sankt Augustin email: [winfried.kuehnhauser|jochen.liedtke]@gmd.de Abstract Heutige Anwendungen informationstechnischer Systeme umfassen ein breites Spektrum, welches insbesondere auch sensible Bereiche wie Klinik-Informationssysteme, juristische Dokumentenverarbeitung oder Anwendungen in der Finanzwirtschaft umfaßt. Da der Einsatz dieser Systeme mittelfristig nur dann gesellschaftliche Akzeptanz finden wird, wenn Vertrauen in ihre Sicherheit hergestellt werden kann, rücken in zunehmenden Maße Sicherheitsaspekte in der Vordergrund. Eine zentrale Stellung in der Entwicklung sicherer Anwendungssysteme nehmen Sicherheitspolitiken ein – Regelwerke, die den Umgang mit sensitiven Informationen festlegen. Das breite Spektrum der Anwendungssysteme erfordert dann ebenfalls in ein breites Spektrum anwendungsspezifischer Sicherheitspolitiken, auf das die Paradigmen heutiger Systemplattformen nur unzulänglich anwendbar sind. Dieser Beitrag stellt ein Objektmodell für anwendungsspezifischer Sicherheitspolitiken vor und leitet aus den Anforderungen des Modells Basiskonzepte in µ-Kernen zu seiner Implementierung ab. 1 Sicherheit In der Entwicklung informationstechnischer Systeme zeichnet sich ein deutlicher Trend hin zu offenen verteilten Systemarchitekturen ab, die ihrerseits eine Fülle neuer Anwendungsgebiete erschließen. Mit neuen Technologien ist stets auch die Entstehung neuer Risiken verbunden, die im Bereich der Computersicherheit in sensiblen Anwendungen wie Klinik-Informationssysteme, juristischer Dokumentenverarbeitung oder Anwendungen in der Finanzwirtschaft besonders deutlich sind. Der Einsatz informationstechnischer Systeme wird hier nur dann gesellschaftliche Akzeptanz finden, wenn es gelingt, Vertrauen in die Sicherheit dieser Systeme herzustellen. Der Begriff ,,Sicherheit” wird im Zusammenhang mit Computersystemen zuweilen unterschiedlich interpretiert. Eine Ursache liegt in der Ermangelung eines allgemein akzeptierten präzisen deutschen Äquivalents der beiden englischen Begriffe security und safety: für beide Begriffe wird im Deutschen das Wort Sicherheit verwendet. Wenn auch im Englischen eine scharfe Trennung zwischen diesen beiden Begriffen nur schwer zu ziehen ist, so bestehen jedoch einige grundsätzliche Unterschiede. Dieser Artikel hat 1 Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 2 Sicherheit im Sinne von security zum Thema: den Umgang mit zielgerichteter und mit Intelligenz betriebener (im Gegensatz zu zufälliger oder durch Fehler hervorgerufener) Verletzung der Integrität, der Vertraulichkeit oder der Verfügbarkeit von Informationen in einem Computersystem. Ein Schlüsselbegriff bei der Konzeption sicherer Anwendungssysteme ist die Sicherheitspolitik. Die auch unter dem Namen Orange Book bekannten Trusted Computer System Evaluation Criteria (TCSEC)[12] definieren eine Sicherheitspolitik als ,,Sammlung von Gesetzen, Regeln und Praktiken, die den Umgang, den Schutz und die Verbreitung von sensitiven Informationen in einer Organisation festlegen”. Eine Sicherheitspolitik bestimmt somit die Ziele und Wege, mittels derer eine Organisation ihre spezifischen Sicherheitsanforderungen umzusetzen sucht. In einer Reduzierung des Begriffs auf informationstechnische Systeme spricht man dann von einer technischen Sicherheitspolitik und meint damit die Software- (teils auch die Hardware-) Komponenten eines informationstechnischen Systems, die die Sicherheitspolitik innerhalb des Systems implementieren. Letztere reduzierte Sicht wird in diesem Beitrag angenommen. Die ökonomische, soziale und technische Entwicklung der letzten Dekade konfrontiert uns mit Sicherheitsanforderungen, die immer individuellere und komplexere Sicherheitspolitiken hervorbringen, mit der Multilevel Security Policy [3] als dem ersten Exemplar einer stetig wachsenden Vielfalt [6, 11, 5, 26]. Auf diese Vielfalt sind heutige Systemplattformen äußerst unzulänglich vorbereitet. Viele der heute bekannten Architekturprinzipien sicherer Systeme zielen traditionell auf die Unterstützung einer einzigen, fest in ein Betriebssystem integrierten Sicherheitspolitik ab, die sich dar überhinaus lediglich mit dem Aspekt der Zugriffssteuerung befaßt. Dieser Beitrag beschreibt ein Konzept zur Integration von Anwendungssystemen mit benutzerdefinierten anwendungsspezifische Sicherheitspolitiken und beschreibt minimale zur Implementierung der Politiken notwendige Betriebssystem – Basiskonzepte. 2 Sicherheitspolitiken Die Sicherheit eines Systems hängt entscheidend von der Sorgfalt ab, mit der Sicherheitspolitiken enwickelt und implementiert werden. Um hier hohen Qualitätsanforderungen gerecht zu werden, erfolgt die präzise Formulierung einer Sicherheitspolitik häufig in einem Sicherheitsmodell, das dann die Ausgangsbasis einer Implementierung bildet. Sicherheitsmodelle sind in der Regel formal; sie werden zumeist unter Verwendung algebraischer Strukturen [3, 11, 5] spezifiziert und bilden hierdurch eine Basis f ür den Nachweis von Modelleigenschaften [21]. In den heutigen Umfeldern großer verteilter Systeme kann aufgrund der Autonomie der einzelnen Systeme in der Regel nicht auf eine einzige systemweite Sicherheitspolitik einigen. Eine Sicherheitspolitik kontrolliert daher stets nur einen Ausschnitt des Gesamtsystems, die ihr zugeordnete Sicherheitsdomäne. Zur Beschreibung von Sicherheitsdomänen werden sowohl Mengen von Rechnersystemen (,,alle zu einer Organisation gehörenden Systeme”) als auch logische Objektmengen (,,alle zu einer Applikation gehörenden Prozesse, Server, Dokumente etc.”) verwendet. Basieren die Regeln einer Sicherheitspolitik auf allgemeinen Subjekt/Objektattributen (z.B. auf einer Klassifikation der Vertrauenswürdigkeit von zugreifenden Subjekten Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 3 und der Vertraulichkeit von Objekten, auf die zugegriffen wird), so nennt man diese Politik mandatorisch. Basieren die Regeln dagegen ausschließlich auf Identitäten von Subjekten und Objekten, so nennt man eine Politik diskret. Ein augenfälliger Unterschied zwischen diesen Politik-Klassen liegt darin, daß mandatorische Politiken selbst gegenüber privilegierten Eigentümern von Objekten ihre Regeln durchsetzen können. Das folgende Beispiel erläutert diese Begriffe noch einmal anschaulich. Das Szenarium des Beispiels ist ein Übungskurs an einer Universität, in dem Studenten Hausaufgaben in Form elektronischer Dokumente in einem gegebenen Verzeichnis ablegen sollen. Dieses Verzeichnis enthält ebenfalls eine Musterlösung der Hausaufgaben, die ein Student allerdings erst dann einsehen darf, wenn er seine eigenen Hausaufgaben in dem Verzeichnis hinterlegt hat. Ebenfalls darf er keine neue Version seiner Hausaufgabe mehr nachreichen, nachdem er erst einmal die Musterlösung eingesehen hat. Eine Sicherheitspolitik für dieses Szenarium besteht also aus den folgenden zwei einfachen Regeln: Regel 1: Mensch darf Hausaufgaben solange hinterlegen, bis Mensch einmal auf die Musterlösung zugegriffen hat Regel 2: Mensch darf die Musterlösung erst dann einsehen, wenn Mensch eine eigene Hausaufgabe hinterlegt hat. Diese informellen Regeln können nun beispielsweise durch das folgende formale Sicherheitsmodell präzisiert werden. Das Modell ist eine algebraische Struktur, bestehend aus zwei Typen, zwei Prädikaten und zwei Operationen. Typen des Modells sind die Menge S der Studenten und die Menge BOOL = {true, f alse}. Wir definieren dann zwei Prädikate auf S: HatAbgegeben : S → BOOL HatM usterlösung : S → BOOL Wir definieren weiterhin zwei Operationen: Abgaberegel(s) ⇔ M usterlösungsregel(s) ⇔ ¬HatM usterlösung(s) HatAbgegeben(s) HatAbgegeben(s) HatM usterlösung(s) Mit initial HatAbgegeben(s) = f alse für alle s ∈ S und HatM usterlösung(s) = f alse für alle s ∈ S kann gezeigt werden, daß lediglich Operationsfolgen des Musters Abgaberegel; Abgaberegel ∗ ; M usterlösungsregel ∗ für ein gegebenes s möglich sind: einerseits muß der Musterlösungsregel mindestens eine Abgabe vorausgehen; andererseits ist die Musterlösungsregel erst einmal ausgeführt, kann durch keine Operation die Vorbedingung der Abgaberegel wieder hergestellt werden, und die Äquivalenz von Sicherheitspolitik und Modell ist damit glaubhaft. Die Domäne unserer Beispielpolitik besteht lediglich aus dem Kurs-Verzeichnis. Zur Durchsetzung der Politik ist es ausreichend, die Ablage und Abholung von Dokumenten aus diesem Verzeichnis zu kontrollieren. Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 4 Da die Regeln der Politik unabhängig vom Eigentümer des Verzeichnisses sind und ausschließlich auf der Zugriffshistorie der Studenten beruhen, handelt es sich um eine mandatorische Politik: kein Student kann sie umgehen, selbst dann nicht, wenn er der Eigentümer des Kurs-Verzeichnisses ist. Dieses Beispiel illustriert die Begriffe Sicherheitspolitik, Sicherheitmodell und Sicherheitsdomäne. Im weiteren Verlauf des Beitrages wird betont, daß die Durchsetzung selbst einer so einfachen Sicherheitspolitik in einer offenen Umgebung noch sehr viel mehr Aspekte als lediglich das formale Aufschreiben der Politik enthält: Repräsentation der Politik auf einer Systemplattform, Kooperation mit anderen Sicherheitpolitiken (beispielsweise zur Authentikation der handelnden Menschen und beteiligten Systeme), Einsatz von Sicherheitsmechanismen. 3 Das Custodian-Modell Das Custodian-Modell ist ein Objektmodell für anwendungsspezifische Sicherheitspolitiken. Es liefert ein Paradigma für die Repräsentation einer Sicherheitspolitik auf einer Systemplattform. Seine funktionalen und nichtfunktionalen Eigenschaften implementieren die impliziten und expliziten Annahmen des Sicherheitsmodells (z.B. Manipulationssicherheit der Implementierung) [20]. Eine Sicherheitspolitik wird im Custodian-Modell repräsentiert als eine Ansammlung von Daten und Algorithmen. Custodians kapseln diese Ansammlung und schützen so die Integrität der Politik. Ein Custodian besitzt eine Methodenaufrufschnittstelle, die der enthaltenen Politik die wohldefinierte Kommunikation mit ihrer Umgebung erlaubt. Custodians sind persistent und können so die Grundlage für das Gedächtnis einer Politik liefern. Custodians besitzen einen Typ, um Politikwiederverwendbarkeit durch Subtyping und Komposition zu unterstützen. Eine Politik wird einem Anwendungssystem zugeordnet, indem den Bausteinen des Anwendungssystems – Prozesse und Dateien in Unix, Klienten und Server in der OSF DCE – ein Custodian assoziiert wird. Alle Objekte, die demselben Custodian zugeordnet sind, bilden die Politikdomäne. In diesem Sinn wird die Sicherheitspolitik zum Attribut eines jeden Applikationsobjekts. Die Applikationsobjekte einer Domäne sind nicht länger frei in ihrer Kommunikation. Jegliche Kommunikation resultiert in einer Umleitung über den assoziierten Custodian und führt zum Aufruf einer Politikoperation. Die Zuordnung von Politikoperationen und Objektoperationen ist abhängig von der Granularität der speziellen Politik: eine Zugriffssteuerungspolitik etwa könnte lediglich eine einzige Operation (z.B. CheckAccess(Subject,Object) definieren. Unsere obige Beispielpolitik dagegen definiert eine eigene Politikoperation für jede der beiden existierenden Objektoperationen. Zur Durchsetzung auf einer Systemplattform stellt das Custodian-Modell einige Anforderungen an die zugrundeliegende Infrastruktur. Es benötigt • ein Kapselungsschema zur Konstruktion von Einheiten bestehend aus einer Sammlung von Algorithmen und Daten • einen Kommunikationsmechanismus zur Konstruktion eines Methodenaufrufmechanismusses Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 5 • eine Möglichkeit zur Erzielung von Persistenz solcher Einheiten • eine Möglichkeit zur Assoziation von Custodians zu Applikationsobjekten mit der Wirkung der Umleitung der regulären Objektkommunikation. Die präzise Definition der Kapselungs-, Persistenz- und Kommunikationseigenschaften ergibt sich aus der Integration des Custodian-Modells in eine konkrete Systemplattform. Obwohl dadurch manchmal Einschränkungen durch die Unzulänglichkeiten gegebener Plattformen notwendig sind, gewinnen wir doch eine leichtere Integrierbarkeit des Modells auf einer breiteren Plattformbasis. Dagegen sind auf jeder Plattform Custodians normale Objekte des Objektmodells der Betriebssystemoberfläche. Custodians in der BirliX-Sicherheitsarchitektur sindäre benutzerdefinierte abstrakte Datentypen [19]; auf einer Unix-Plattform sind Custodians Unix-Prozesse (wobei das Politikgedächtnis mittels Dateien implementiert ist), und in einer DCE-Umgebung sind Custodians als DCE-Server implementiert [25]. 4 Probleme monolithischer Systeme Jedes klassische monolithische Betriebssystem hat normalerweise eine spezielle Sicherheitspolitik integriert. Für die Realisierung der benötigten anwendungsspezifischen Politiken sind diese integrierten Politiken aber in der Regel unzulänglich oder nicht flexibel genug. Betrachten wir beispielsweise eine Realisierung der Hausaufgabenpolitik in Unix. Gegeben sei eine Datenbank für Musterlösung und Hausaufgaben, realisiert als Server, d.h. Userid + Dämon. Weiterhin sei jeder Student durch eine Userid realisiert verfüge über ein Klientenprogramm, das mittels RPC über den Server auf die Datenbank zugreift. Zur Realisierung der Sicherheitspolitik müssen wir den benötigten Custodian in den vorhandenen Server integrieren, d.h. die Programmierung der Applikationssoftware ändern. Es gibt keine Möglichkeit, den Datenbankserver ohne Änderung durch Mechanismen des Betriebssystems zu kapseln. • Erstellung und Änderung von Custodians wäre teuer. Wenn der Server nicht im Quellcode vorliegt oder aus Sicherheitsgründen nicht modifiziert werden darf, wäre die Integration von Custodians sogar unmöglich. • Der gesamte Unix-Kern (mehr als 200.000 Zeilen Code) gehörte zur Trusted Computing Base, müßte also validiert werden und bleiben. • Jeder Objektzugriff müßte über den in Unix relativ teuer realisierten RPC erfolgen. Speziell für feingranularen Zugriff brauchte man einen schnellen RPC und/oder Möglichkeiten, Dateien unter Server- und Custodian-Kontrolle in die Klienten-Adreßräume zu mappen. Im allgemeinen schreiben monolithische Betriebssysteme eine spezielle und relativ hohe Abstraktionsschicht fest, z.B. Dateien, Prozesse, Pipes und Sockets. Sicherheitspolitiken mit breiten Anwenderspektren erforden aber Modifikationen dieser Schicht, Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 6 konkurrierende Politiken u.U. sogar einander widersprechende Modifikationen. Deshalb können in monolithischen Systemen flexible und koexistierende oder gar konkurrierende Sicherheitspolitiken in der Regel nur mit hohem Aufwand, häufig sogar nur eingeschränkt, implementiert werden und leiden unter strukturell bedingter Ineffizienz. 5 Basiskonzepte in µ-Kernen Verwendet man einen µ-Kern und ergänzt ihn beispielsweise durch einen Unix-Server [10, 17, 18, 2], sollten die oben erwähnten Nachteile gänzlich verschwinden oder aber wenigstens stark abgeschwächt werden. Voraussetzung ist allerdings eine effiziente µKern-Implementierung. Ältere (und einige neuere) Erfahrungen [13, 4, 29, 9] und besonders [8] ließen allerdings vermuten, daß µ-Kerne prinzipiell deutlich langsamer sind als monolithische Systeme. Neuere Forschungen [7, 14, 15, 23] beweisen aber, daß µKerne sehr effizient sein können. Wie wir in [24] gezeigt haben, sind die Ineffizienzen früherer Ansätze im wesentlichen durch (a) falsche Abstraktionen, (b) unzureichende Implementierung und (c) Prozessorunabhängigkeit1 bedingt. Das entscheidende Kriterium beim Entwurf einer µ-Kern-Schnittstelle ist Sicherheit. Ein Konzept sollte dann und nur dann im Kern toleriert werden, wenn eine Realisierung außerhalb des Kerns die Implementierung sicherer Subsysteme unmöglich machte. 5.1 Optionale Sicherheit (to def) Die wesentlichen Bedingungen für die Realisierung optionaler Sicherheit sind: • Das Autonomieprinzip: Man muß ein Subsystem so implementieren können, daß es von keinem anderen Subsystem gestört oder korrumpiert werden kann. • Das Integritätsprinzip: Subsystem S1 muß sich auf Garantien von S2 verlassen können, d.h. beide Subsysteme müssen miteinander kommunizieren können, ohne daß ein drittes Subsystem diese Kommunikation stören, fälschen oder abhören kann. Rückbezug auf die drei Security-Prinzipen. Basiskonzepte zur Realisierung dieser Prinzipien sind Adreßräume, Threads (incl. Kommunikation) und zeiteindeutige Identifikatoren. 5.1.1 Adreßräume Auf der Hardware-Ebene ist ein Adreßraum eine Abbildung, die jeder virtuellen Seite eine physische Kachel im Realspeicher zuordnet oder sie als ‘nicht zugreifbar’ markiert. (Zur Vereinfachung vernachlässigen wir Accessattribute wie ‘read-only’ oder ‘read/write’.) Die Abbildung wird mit Hilfe von TLB-Hardware und Adreßumsetztabellen (Page Tables) realisiert. 1 Bei µ-Kernen ist Portabilität wirklich etwas Negatives: sie kostet Effizienz und spart jedoch wenig, da eine Neuimplementierung nicht viel teurer als eine Portierung und die Zahl der interessanten Prozessorfamilien relativ klein ist. Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 7 Der µ-Kern, die allen Subsystemen gemeinsame mandatorische Schicht, muß die HardwareAdreßräume durch ein eigenes Adreßraumkonzept überlagern. Um überhaupt Schutz zu ermöglichen, muß das Adreßraumkonzept gezähmt werden, aber mit minimalen Restriktionen. Möglichst viele alternative und konkurrierende Schutzkonzepte sollen darauf basierend implementiert werden können. Außerdem sollte das µ-Kern-Adreßraumkonzept einfach sein und dem Hardware-Konzept ähneln. Die grundlegende Idee dafür ist die rekursive Konstruktion und Verwaltung der Adreßräume auf Benutzer-/Server-Ebene. Der µ-Kern stellt dafür genau drei Operationen bereit: map, flush und grant (Beschreibung siehe [24]). Damit können mehr oder minder systemnahe Server und Anwendersysteme Seiten des eigenen Adreßraums ihren Klienten zur Verfügung stellen. Ausgehend von einem vorgegebenen Ur-Adreßraum, dem Realspeicher, werden Speicherverwaltung(en), Pager u.ä. vollständig außerhalb des µ-Kerns realisiert (siehe Abb. 1). Applikation Applikation Applikation Applikation Pager 4 P PP Pager 3 PP Pager 1 @ @ Pager 2 @ @ Realspeicher Abbildung 1: Adreßräume. 5.1.2 Threads und IPC Ein Thread ist eine innerhalb eines Adreßraums ablaufende Aktivität. Typischerweise hat jeder Thread einen eigenen Stack und virtuellen Registersatz. Die Assoziation zum Adreßraum kann dynamisch oder fest sein. Sie darf allerdings nur unter Kontrolle des µKerns verändert werden, da sonst fremde Adreßräume gelesen und korrumpiert werden könnten. Dieses Sicherheitsargument ist der entscheidende Grund, das Thread-Konzept im µ-Kern zu realisieren. Alle anderen Gründe, z.B. Preemption, sind demgegenüber sekundär. Da Kommunikation über Adreßraumgrenzen aus denselben Sicherheitsgründen nicht unkontrolliert geschehen darf, wird Inter-Prozeß-Kommunikation (IPC) eine weitere Aufgabe des Kerns. Klassische (und funktional äquivalente) Methoden sind Botschaftstransfer oder Remote Procedure Call (RPC). In beiden Fällen wird IPC durch eine Kooperationsvoraussetzung zwischen den beteiligten Partnern kontrolliert. Beim Botschaftstransfer kann der Sender dem Empfänger nur mit dessen Zustimmung eine Botschaft zustellen, und dem Empfänger bleiben Prüfung und Interpretation der Botschaft überlassen. Beim RPC kann der Aufrufer nur solche Prozeduren aufrufen, die ihm der Aufgerufene zugänglich macht. Außerdem sind Code und Daten der aufgerufenen Prozedur für den Aufrufer weder sichtbar noch modifizierbar. Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 5.1.3 8 Eindeutige Identifikatoren Zusammen mit dem Adreßraumkonzept bildet IPC die Basis des Autonomieprinzips. Das Integritätsprinzip erfordert neben Abhör- und Verfälschungssicherheit, daß das Ziel vom Sender eindeutig spezifiziert werden und daß der Empfänger die Quelle korrekt bestimmen kann. Die Kosten lokaler Interprozeßkommunikation liegen im Bereich von 1 bis 10 µs, jedenfalls bei effizienten µ-Kernen. Kryptografische Authentisierung [27, 16] pro IPCVorgang scheidet aus Effizienzgründen aus. Einfache Capabilities [28] können zwar ohne kryptografischen Aufwand überprüft werden, sind aber zu unsicher, weil sie unkontrolliert dupliziert und weitergereicht werden können. Deshalb muß der µ-Kern eindeutige Identifikatoren, sogenannte “unique identifier” (uid), für Threads oder Adreßräume oder Kommunikationskanäle bereitstellen. Diese uids dürfen aus Sicherheitsgründen nach dem Löschen des entsprechenden Objekts während des Systemlebens nie2 wieder vergeben werden, müssen also zeiteindeutig sein. Hat beispielsweise S1 mit Hilfe von Nameserver, Authentisierungs-Server o.ä. oberhalb des µ-Kerns implementierten Diensten das Subsystem S 2 als Partner identifiziert, kann es mit Hilfe der entsprechenden uid S 2 als Kommunikationsziel spezifizieren. Entsprechend kann S2 eindeutig S1 als Urheber der Kommunikation identifizieren. Wiederholte Authentisierung wird damit in beiden Fällen überflüssig. 5.2 Mandatorische Sicherheit (to def) Autonomie- und Integritätsprinzip stellen sicher, daß sich jedes Subsystem vor Dritten schützen kann und man Server anbieten kann, die ihre Objekte einer Sicherheitspolitik unterwerfen. Für die Durchsetzung mandatorischer Sicherheitspolitiken braucht man zusätzlich: • Das Supervisionsprinzip: Ein Subsystem S muß so eingerichtet werden können, daß seine Kommunikation mit allen anderen Subsystemen vollständig von einem anderen Subsystem S̄ überwacht und modifiziert werden kann. Hiermit werden Autonomie- und Integritätsprinzip teilweise relativiert und in die Verantwortung von S̄ gelegt. Eine Synthese aller drei Prinzipien erfordert, daß die verschiedenen Subsysteme zweifelsfrei feststellen können müssen, ob und welche Supervisoren bei ihrer Kommunikation beteiligt sind. Insbesondere braucht man Domänen, in denen Autonomie und Integrität unbeschränkt gelten. Beispielsweise muß der Kern das für die Kommunikation zwischen Custodian und Überwachtem sicherstellen. 5.2.1 Clans & Chiefs Das Clan-Konzept ist eine Realisierung des Supervisionsprinzips. Abbildung 2 zeigt eine Hierarchie 2 Theoretisch reicht auch eine begrenzte Zeiteindeutigkeit, z.B. für einen Tag. Dann muß aber bei jeder Kommunikation die Realzeituhr gelesen werden. Bei einem schnellen µ-Kern ist dieser Zusatzaufwand nicht vernachlässigbar. Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 ' - y ' intendierte Kommunikation umgeleitete y - y $ ' MB y i PP ? i Pq i P i & % & & 9 $ $ % % Abbildung 2: Clans & Chiefs. von Clans (Ovale), die jeweils aus ein oder mehreren Tasks (Kreise) und/oder inneren Clans bestehen. Die Außenkommunikation jedes Clans wird von seinem Chief kontrolliert. Diese Chiefs sind normale Tasks, die in der Abbildung als schwarz gefüllte Kreise dargestellt werden. Innerhalb eines Clans gilt das Integritätsprinzip ohne Einschränkung. Die Kommunikation wird direkt vom µ-Kern durchgeführt. Aber immer wenn bei einer Kommunikation mindestens eine Clangrenze überschritten wird, leitet der µ-Kern die Botschaft zum nächstgelegenen Chief um. Dieser kann sie inspizieren, modifizieren, weiterleiten, umleiten oder unterdrücken. Neben anderen Anwendungen, wie Tracing, Emulation, rechnerübergreifender Kommunikation (Remote IPC), lassen sich auch Custodians hiermit realisieren. Bei geeigneter Realisierung [22] können beide Partner immer statisch feststellen, ob bei einer Kommunikation überhaupt ein Chief involviert sein wird, ob nur vertrauenswürdige Chiefs involviert werden oder ob der Kommunikationspfad über verdächtige Chiefs läuft. 5.2.2 Ports als Alternative Statt des Clan-Konzepts kann der µ-Kern auch ein Port-Konzept realisieren. Der prominenteste Vertreter dieser Richtung ist Mach [1]. Tasks können dabei nur über Ports kommunizieren, für die sie von anderen Tasks Portrechte bekommen haben. Bei der Erzeugung erhält jede Task einen initialen Satz an Portrechten, über die sie dann per IPC Zugriff zu weiteren Ports erhalten kann. Um eine Clan-ähnlichen Effekt zu erzielen, darf man jeder neuen Task anfänglich nur Portrechte zur Kommunikation mit mit solchen vertrauenswürdigen Tasks gestatten, die der neuen Task ihrerseits nur Ports zu ebenso vertrauenswürdigen Partnern geben. Direkte Kommunikation mit potentiell nicht vertrauenswürdigen Tasks wird somit unmöglich gemacht. Das hier skizzierte Verfahren hat zwei wesentliche Nachteile. Einmal ist es sehr fehleranfällig und in der Praxis oft nicht durchsetzbar. Zum anderen ist nicht klar, ob sich Port-basierte Kommunikation genauso effizient realisieren läßt wie direkte Kommunikation zwischen Threads, kontrolliert durch das Clan-Konzept. 3 3 Leider ist Mach als ganzes und Mach-IPC im speziellen sehr ineffizient [8, 24]. Wir wissen, daß man IPC (auf 486-Rechnern) etwa 20 mal schneller [23] realisieren kann als Mach. Wegen dieser teu- Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 6 10 Realisierung von Custodians Hier müssen wir zwischen (a) Sicherheitspolitiken, die vollständig durch sichere Server realisiert werden können, unterscheiden und solchen, die die Überwachung einiger oder aller Klienten (besserer Begriff statt ‘Klient’ !?) erforden. Beispiele 6.1 Kommunikation Wenn im Fall (a) die Server mit der Sicherheitspolitik kooperieren, können Custodians durch geeignete Programmierung in den Adreßraum jedes Servers integriert werden. Oft sind die Server aber nicht für den Anschluß von Custodians vorbereitet oder sind sogar selbst potentiell verdächtig. In diesem Fall unkooperativer Server (siehe Abb. 3), kann man die Server si einzeln oder gruppenweise durch Clans kapseln. Die Custodians kk 1 HH kk 2 - { # '{ HH ? sk 2 j H sk 1 "! & sk 3 $ % Abbildung 3: Unkooperative Server. werden dann als Chief-Tasks realisiert. Die Klienten k i können dabei frei untereinander kommunizieren, bei den Servern setzen die Chiefs aber die jeweilige Sicherheitspolitik durch. Wenn die Sicherheitspolitik verlangt, potentiell verdächtige Klienten zu überwachen (Fall (b)), muß man diese durch Clans kapseln (Abb. 4). Falls Inter-Server-Kommunikation { # { # - sk 1 2 6 s1k "! "! kk 2 kk 1 sk 3 Abbildung 4: Klientenüberwachung. für die Sicherheitspolitik unbedeutend ist oder die Server vertrauenswürdig sind, können Klienten- und Server-Custodians zusammen als Klienten-Chief implementiert werden. Sind die Server verdächtig oder unkooperativ, müssen sowohl Klienten als auch Server durch Clans gekapselt werden. 6.2 Mapping In vielen Sicherheitspolitiken können die meisten Objektzugriffe mittels Mapping anstelle von IPC realisiert werden. Dateien und andere Objekte, deren innere Konsistenz ren Implememtierung sind die relativen Kosten der Portrechte bei Mach unbedeutend, nicht aber bei einem wirklich effizienten µ-Kern. Gesicherte Erkenntnisse dazu gibt es mangels einer effizienten Machkompatiblen Implementierung nicht. Aus unserer Erfahrung erwarten wir jedoch eine Verlangsamung um einen Faktor zwischen 1.2 und 2, vor allem, weil die Cache-Workingsets aufgrund der Verwaltung der Portrechte wachsen. Demgegenüber sind die Kosten des Clan-Konzepts bei Kommunikation innerhalb eines Clans vernachlässigbar: weniger als 1% der minimalen IPC-Kosten. Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 11 aus Sicht der Sicherheitspolitik irrelevant ist, können von den Servern ganz oder teilweise in den Adreßraum der jeweiligen Klienten gemappt werde (Abb. 5). Map- und Klienten Adreßraum A ' A A & A A A A A { Server Adreßraum $ % Abbildung 5: Kontrolliertes Mapping. grant-Operation sind als spezielle Kommunikationsart realisiert sind und unterliegen damit der IPC-Kontrolle des Chiefs. Somit kann der Clan, der im Beispiel den Server kapselt, auch hier das Mapping kontrollieren. In diesem Modell wird der Custodian im wesentlichen nur zum Öffnen einer Datei bemüht. Danach können Schreib-/Lesezugriffe direkt im Adreßraum des Klienten durchgeführt werden, d.h. read- und write-Operationen werden durch die Sicherheitspolitik nicht verteuert. Änderungen der Sicherheitspolitik sind jederzeit möglich, da der Chief Mappings jederzeit aufheben oder einschränken kann. 7 Conclusio Viele sensitive Anwendungen erfordern anwendungsspezifische und teilweise einander widersprechende Sicherheitspolitiken. Das breite Spektrum verhindert eine Integration der Sicherheitspolitik(en) in den Betriebssystemkern. Stattdessen muß der Kern einige wenige Basismechanismen zur Verfügung stellen, mit deren Hilfe möglichst viele Politiken realisiert werden können. Zusätzlich zum Adreßraum- und RPC-Konzept benötigen Sicherheitspolitiken Custodians oder etwas Vergleichbares. Diese Sicherheits-Basiskonzepte lassen sich einfach und effizient auf die vorgestellten µ-Kern-Mechanismen abbilden. µ-Kerne stellen höheren Ebenen beispielsweise Prozeßkommunikation und Clans zur Verfügung. Custodians, d.h. anwendungsspezifische Kommunikationsüberwachung, kann durch Clans realisiert werden. Adreßräume, ein weiteres µ-Kern-Konzept, können mit Hilfe der Basismechanismen map, flush und grant anwendungsspezifisch außerhalb des µ-Kerns realisiert und kontrolliert werden. Referenzen [1] M. J. Accetta, R. V Baron, W. Bolosky, D. B. Golub, R. F. Rashid, A. Tevanian, and M. W. Young. Mach: A new kernel foundation for unix development. In Usenix Summer Conference, pages 93–113, Atlanta, GA, June 1986. [2] N. Batlivala, B. Gleeson, J. Hamrick, S Lurndal, D. Price, J. Soddy, and V. Abrossimov. Experience with SVR4 over Chorus. In Usenix Workshop on Micro-Kernels and Other Kernel Architectures, pages 223–241, Seattle, WA, April 1992. Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 12 [3] D.E. Bell and L.J. LaPadula. Secure Computer System: Unified Exposition and Multics Interpretation. Technical Report AD-A023 588, MITRE, March 1976. [4] B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. Fiuczynski, D. Becker, S. Eggers, and C. Chambers. Extensibility, safety and performance in the Spin operating system. In 15th ACM Symposium on Operating System Principles (SOSP), pages xx–xx, Copper Mountain Resort, CO, December 1995. [5] David F.C. Bewer and Michael J. Nash. The Chinese Wall Security Policy. In Proceedings of the Symposium on Security and Privacy, pages 206–214. IEEE Computer Society Press, May 1989. [6] K.J. Biba. Integrity Considerations for Secure Computer Systems. Technical Report ESD-TR-76-372, MITRE, Bedford, Massachusetts, April 1977. [7] C. Bryce and G. Muller. Matching micro-kernels to modern applications using finegrained memory protection. In IEEE Symposium on Parallel Distributed Systems, San Antonio, TX, October 1995. [8] J. B. Chen and B. N. Bershad. The impact of operating system structure on memory system performance. In 14th ACM Symposium on Operating System Principles (SOSP), pages 120–133, Asheville, NC, December 1993. [9] D. R. Cheriton and K. J. Duda. A caching model of operating system kernel functionality. In 1st USENIX Symposium on Operating Systems Design and Implementation (OSDI), pages 179–194, Monterey, CA, November 1994. [10] D. R. Cheriton, G. R. Whitehead, and E. W. Sznyter. Binary emulation of Unix using the V kernel. In Usenix Summer Conference, pages 73–86, Anaheim, CA, June 1990. [11] David D. Clark and David R. Wilson. A Comparsion of Commercial and Military Computer Security Policies. In Proceedings of the Symposium on Security and Privacy, pages 184–194. IEEE Computer Society, April 1987. [12] Department of Defense. Trusted Computer System Evaluation Criteria, August 1983. [13] R. P. Draves, B. N. Bershad, R. F. Rashid, and R. W. Dean. Using continuations to implement thread management and communication in operating systems. In 13th ACM Symposium on Operating System Principles (SOSP), pages 122–136, Pacific Grove, CA, October 1991. [14] D. Engler, M. F. Kaashoek, and J O’Toole. Exokernel, an operating system architecture for application-level resource management. In 15th ACM Symposium on Operating System Principles (SOSP), pages xx–xx, Copper Mountain Resort, CO, December 1995. [15] B. Ford and J. Lepreau. Evolving Mach 3.0 to a migrating thread model. In Usenix Winter Conference, pages 97–114, CA, January 1994. Kühnhauser, Liedtke: Sicherheit in Betriebssystemen. GMD Tech. Report 959 13 [16] M. Gasser, A. Goldstein, C. Kaufmann, and B. Lampson. The Digital distributed system security architecture. In 12th National Computer Security Conference (NIST/NCSC), pages 305–319, Baltimore, 1989. [17] D. Golub, R. Dean, A. Forin, and R. Rashid. Unix as an application program. In Usenix Summer Conference, pages 87–96, Anaheim, CA, June 1990. [18] M. Guillemont, J. Lipkis, D.Orr, and M. Rozier. A second generation micro kernel based Unix. In Usenix Winter Conference, pages 13–22, Dallas, TX, January 1991. [19] Hermann Härtig, Winfried E. Kühnhauser, and Oliver C. Kowalski. The BirliX Security Architecture. Journal of Computer Security, IOS Press, 2(1):5–21, 1993. [20] Winfried E. Kühnhauser. A Paradigm for User-Defined Security Policies. In Proceedings of the 14th IEEE Symposium on Reliable Distributed Systems, Bad Neuenahr, Germany, September 1995. IEEE Computer Society Press. [21] Winfried E. Kühnhauser and Michael von Kopp Ostrowski. A Formal Framework to Support Multiple Security Policies. In Proceedings of the 7th Canadian Computer Security Symposium, Ottawa, Canada, May 1995. Communication Security Establishment Press. [22] J. Liedtke. Clans & chiefs. In 12. GI/ITG-Fachtagung Architektur von Rechensystemen, pages 294–305, Kiel, March 1992. Springer. [23] J. Liedtke. Improving IPC by kernel design. In 14th ACM Symposium on Operating System Principles (SOSP), pages 175–188, Asheville, NC, December 1993. [24] J. Liedtke. On µ-kernel construction. In 15th ACM Symposium on Operating System Principles (SOSP), pages xx–xx, Copper Mountain Resort, CO, December 1995. [25] Wolfgang Lux. Integrating Custodians into OSF-DCE. In Proceedings of the Workshop on Anwendungsunterstützung für heterogene Revchnernetze, Freiberg, Germany, March 1995. Technical University of Freiberg Press. [26] Ravi S. Sandhu. A Lattice Interpretation of the Chinese Wall Policy. In Proceedings of the 15th National Computer Security Conference, pages 329–339. NISTNCSC, United States Government Printing Office: 1992-625-512:60546, 1992. [27] Jennifer G. Steiner, Clifford Neuman, and Jeffrey I. Schiller. Kerberos: An Authentication Service for Open Network Systems. In Usenix Winter Conference, January 1988. [28] A. S. Tanenbaum, S. J. Mullender, and R. van Renesse. Using sparse capabilities in a distributed operating system. In 6th International Conference on Distributed Computing Systems, pages 558–563, Cambridge, MA, May 1986. [29] R. van Renesse, H. van Staveren, and A. S. Tanenbaum. Performance of the world’s fastest distributed operating system. Operating Systems Review, 22(4):25– 34, October 1988.