Betriebssysteme Teil 13: Protectionwi.f4.htw-berlin.de/users/messer/LV/AI-BS-WS19/...Betriebssysteme...
Transcript of Betriebssysteme Teil 13: Protectionwi.f4.htw-berlin.de/users/messer/LV/AI-BS-WS19/...Betriebssysteme...
-
20.12.19 1Betriebssysteme – WS 2019/20 – Teil 13/Protection
Betriebssysteme
Teil 13: Protection
-
2Betriebssysteme – WS 2019/20 – Teil 13/Protection
Literatur – Virtuelle Maschinen
[13V-1] Zimmer, Dennis: VMware Server & VMware Player. Galileo, 2006
[13V-2] Zimmer, Dennis: VMware ESX 3.5. Galileo, 2. Auflage, 2008
[13V-3] Larisch, Dirk: VMware Server 2. Hanser, 2. Auflage, 2009
[13V-4] Sprang, Henning; Benk, Timo; Zdrzalek, Jaroslaw; Dehner, Ralph: XEN Virtualisierung unter Linux. Open Source Press, 2007
[13V-5] Wächtler, Peter: Gemeinsam einsam. Virtualisierung in eingebetteten Systemen. iX, Heft 5, 2009, S. 124-125
[13V-6] http://www.vmware.com/appliances/
[13V-7] https://github.com/vmware/open-vm-tools
[13V-8] http://www.winimage.com
[13V-9] http://www.codeproject.com/KB/system/VmDetect.aspx
[13V-10] http://sanbarrow.com/vmx.html
[13V-11] https://de.wikipedia.org/wiki/Liste_von_Virtualisierungsprodukten
[13V-12] https://de.wikipedia.org/wiki/Virtuelle_Maschine
[13V-13] https://de.wikipedia.org/wiki/X86-Virtualisierung
[13V-14] http://www.redbooks.ibm.com/redpapers/pdfs/redp4396.pdf
-
3Betriebssysteme – WS 2019/20 – Teil 13/Protection
Literatur – Emulatoren
[13E-1] https://developer.android.com/studio
[13E-2] https://de.wikipedia.org/wiki/Basilisk_II
[13E-3] https://de.wikipedia.org/wiki/QEMU
[13E-4] https://de.wikipedia.org/wiki/Bochs
[13E-5] https://de.wikipedia.org/wiki/Emulator
[13E-6] http://www.parrot.org/
[13E-7] https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html
-
4Betriebssysteme – WS 2019/20 – Teil 13/Protection
Literatur – Zugriffsrechte
[13P-1] https://en.wikipedia.org/wiki/Capability-based_security
[13P-2] https://en.wikipedia.org/wiki/Role-based_access_control
[13P-3] https://en.wikipedia.org/wiki/Access_control_list
[13P-4] https://en.wikipedia.org/wiki/Protection_ring
[13P-5] https://www.cl.cam.ac.uk/~rja14/Papers/SE-04.pdf
[13P-6] http://duartes.org/gustavo/blog/post/cpu-rings-privilege-and-protection/
[13P-7] https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Studies/TC_ErgA/TC-ErgA_Part1.pdf?__blob=publicationFile
-
5Betriebssysteme – WS 2019/20 – Teil 13/Protection
Übersicht
• 3-Faktor-Authentisierung
• Virtuelle Maschinen
• Schutzsystem
• Capabilities
• Ringe
-
6Betriebssysteme – WS 2019/20 – Teil 13/Protection
Grundbegriffe der Authentisierung
1) Identifizierung: Bestimmung der Person (Identität)
2) Authentisierung: Prüfung der Identität des Subjekts
3) Autorisierung: Zuordnung von Rechten an Subjektein Bezug auf Objekte
• Nur die richtige Person weiß etwas:Z.B. Passwort oder Passphrase
• Nur die richtige Person besitzt etwas:Z.B. Token, Smartcard
• Nur die richtige Person ist etwas:Fingerabdruck, Stimme
Mit der sicheren 3-Faktor-Authentisierung lassen sichPersonen authentisieren:
-
7Betriebssysteme – WS 2019/20 – Teil 13/Protection
Faktor 1 - Wissen I
• Passwörter– Zufällig, mindestens 8, besser 12 Zeichen lang, Ziffern und
Sonderzeichen
– Keine "normalen" Worte oder Muster auf der Tastatur
– Mit Merksätzen arbeiten: Mausgrau war das Himmelszeit bei Nacht um 11, aber wer weiss das schon?: MwdHbNu1,awwds?
• Passwörter dürfen niemals im Klartext abgespeichert sein, sondern nur über eine Falltürfunktion, z.B. einer kryptographischen Hashfunktion mit Salz.
Die Prüfung erfolgt dann durch Vergleich von hash(passwort) mit dem abgespeicherten Hash des definierten Passwortes.
-
8Betriebssysteme – WS 2019/20 – Teil 13/Protection
Faktor 2 – Besitzen I
• Smardcard = Kleiner Hardware/Software-Baustein zum Schutz von Informationen (Schlüssel) oder zur Unterstützung der Authentisierung
• Es gibt Smartcards, die als passiver Speicher fungieren (a), und solche, die einen Mikroprozessor haben (b).
• Siehe: http://de.wikipedia.org/wiki/Chipkarte
(a)
(b)
Alle Bilder aushttp://de.wikipedia.org/wiki/Chipkarte
-
9Betriebssysteme – WS 2019/20 – Teil 13/Protection
Faktor 2 – Besitzen II
• Server und Token erhalten initial denselben Startwert.
• Bei jedem Login wird der nächste Wert berechnet, eingegeben und mit dem berechneten Wert im Server verglichen.
Quelle: https://de.wikipedia.org/wiki/Security-Token
Token = Sicherheitstoken =kleines Gerät, das (auf Knopfdruck)zufällige Zahlen bzw. Zeichen generiert und anzeigt.
-
10Betriebssysteme – WS 2019/20 – Teil 13/Protection
Faktor 3 - Sein
• Biometrie– Fingerabdruck
– Spracherkennung
– Augenhintergrund
– Gesicht
Nachteil: teuer, unzuverlässig und DatenschutzproblemeAber wenn es mal funktioniert, dann die beste Methode
• Siehe– https://de.wikipedia.org/wiki/Biometrie
– https://www.bsi.bund.de/DE/Themen/DigitaleGesellschaft/Biometrie/AllgemeineEinfuehrung/einfuehrung.html
– https://www.bsi.bund.de/DE/Publikationen/Studien/BioFinger/biofinger.html
– http://www.biometrie-online.de/
– https://de.wikibooks.org/wiki/Biometrie
-
11Betriebssysteme – WS 2019/20 – Teil 13/Protection
Aufgaben eines Schutzsystems
• Ein Schutzsystem hat die Aufgabe nach der Identifikation und Authentisierung die korrekte Autorisierung zu realisieren und zu überwachen. Dies führt dann zum Schutz von Software und Daten.
• Das erfolgt auf mehreren Ebenen, z.B.– Ebene des RAM -> Virtueller Speicher
– Ebene der Geräte -> Dateisystem bzw. Teile des Betriebssystems
– Ebene der Dateien -> Dateisystem
• und das über Systemgrenzen hinweg.
-
12Betriebssysteme – WS 2019/20 – Teil 13/Protection
Schutz (Protection)
• Realisierung des Schutzes erfolgt– in Form eines Filters,
– der nicht umgangen werden kann und
– der die Rechte prüft.
• Das kann mit Hardware erfolgen:– MMU oder Segmente
– oder per Software erfolgen
– Virtuelle Maschinen
-
13Betriebssysteme – WS 2019/20 – Teil 13/Protection
Behandelter Bereich: Virtualisierung
Hardware
Betriebssystem
Medien
Server Apps
Hardware
Betriebssystem
Server Apps
File-system
Netz
Protokolle
Syscall-Schnittstelle
Virtualisierung
Ports
-
14Betriebssysteme – WS 2019/20 – Teil 13/Protection
Virtuelle Maschinen I
• Virtuelle Maschine = Maschine, deren ganzer Instruktionssatz (oder einen Teil davon) samt Geräten (auch teilweise) simuliert wird
• Es kann dabei eine andere CPU simuliert werden als die CPU, die die Simulation realisiert. In diesem Fall wird von Emulation gesprochen.
• Idee ist mehr als 50 Jahre alt, z.B. CP/67 oder CP/CMS oder VM/370 für IBM-Rechner ab 1969z/VM als Nachfolger
• VMWare für Intel x86 ab 1999
Siehe: http://de.wikipedia.org/wiki/Virtuelle_Maschine
-
15Betriebssysteme – WS 2019/20 – Teil 13/Protection
Virtuelle Maschinen II
• Host Maschine = Host System = Hardware, die eine virtuelle Maschine realisiert
• Gast Maschine = Guest System = Maschine, die durch eine Host Maschine simuliert wird
• Virtual Machine Monitor = VMM = Hypervisor = Software zur Emulation privilegierter Instruktionen bzw. Geräte sowie zur Kommunikation zwischen Host- und Gast-Maschine
• Der Virtual Machine Monitor ist daher eine der wichtigsten Komponenten bei der Virtualisierung von Maschinen.
• Eine Instruktion ist privilegiert oder sensitiv, wenn sie nur durch das Betriebssystem – also im Kernelmodus – ausgeführt werden darf, z.B. HALT, RESET oder I/O-Operationen.
-
16Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität I – Virtual Memory
• Prozesse werden gegeneinander innerhalb des RAMs durch virtuelle Speicher (Virtual Memory) getrennt.
• Dies wird durch eine MMU realisiert.
• Es gibt aber auch Software-Lösungen dafür.
Hardware Host
Betriebssystem
Medien
ProzessProzess
VirtualMemory
-
17Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität II - Sandbox
• Sandbox = In sich geschlossener Bereich für RAM und I/O
• Es werden dieselben Geräte bzw. Dateien benutzt, aber in der Benutzung beschränkt
• Sandbox = Kurz: Virtueller Speicher + Virtuelle Geräte
Hardware Host
Betriebssystem
Medien
Prozess Prozess
Sandbox
-
18Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität III – Container Virtualisierung
• Wenn nun noch die Syscall-Schnittstellen simuliert werden, handelt es sich um eine Container-Virtualisierung.
• Dabei wird eine vollständige Maschine als Basis vieler Prozesse bereit gestellt.
• Container Virtualisierung = Sandbox-Virtualisierung einer Applikation im User-ModeKurz: Virtueller Speicher + Virtuelle Geräte + Virtuelle API
• Siehe
– https://www.computerweekly.com/de/definition/Containerbasierte-Virtualisierung
– https://en.wikipedia.org/wiki/OS-level_virtualization
– https://www.computerwoche.de/a/die-wichtigsten-vor-und-nachteile-von-docker-containern,3546671
• Bekanntestes Beispiel: Docker
-
19Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität IV - Vollvirtualisierung
• Der VM-Monitor (VMM) wird:– zum Starten und Stoppen der Virtuellen Maschine,
– zum Nachverfolgen der Aktivitäten innerhalb der Maschine,
– zur Emulation von privilegierten Instruktionen benötigt.
• Vollvirtualisierung = Alle privilegierten Instruktionen werden durch die VMM emuliert und alle übrigen Instruktionen werden direkt durch die Hardware ausgeführt.
• Siehe– https://en.wikipedia.org/wiki/Hypervisor
Hardware Host
VMM
Medien
Gast-Betriebssystem
Gast-Software
Betriebssystem
-
20Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität V - Probleme
• Einige Architekturen lassen sich nur schwer virtualisieren, z.B. wenn privilegierte Instruktionen im User-Modus keine Exception werfen.
• Dann müssen diese Instruktionen auf der Binärebene durch Aufrufe (Calls) der VMM ersetzt werden, d.h. das binäre Image der Maschine wird modifiziert
• Eine Instruktion ist sensitiv, wenn zu ihrer Durchführung der Kernelmodus erforderlich ist, wenn sie einen Zugriff nach Außen erlaubt oder wenn sie verrät, dass die Maschine virtuell ist.
• Eine Architektur ist virtualisierbar, wenn alle sensitiven Instruktionen im User-Modus eine Exception werfen.
-
21Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität VI - Lösungen
• Die x86-Hardware war ursprünglich nicht virtualisierbar, daher wurde die Prozessor-Architektur geändert:– Intel: VT-x (Vanderpool 2005)
– AMD: AMD-v (Pacifica)
• Siehe:– http://de.wikipedia.org/wiki/X86-Virtualisierung
-
22Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität VII - Paravirtualisierung
• Paravirtualisierung = Die Hostmaschine stellt eine Software-Schnittstelle für die Virtuelle Maschine bereit, die daher portiert werden muss.
• Einige privilegierte Instruktionen werden dabei explizit per Call durch die VMM emuliert, andere über Exceptions emuliert und der Rest der Instruktionen wird direkt durch die Hardware ausgeführt
• Mit anderen Worten: Das Gast-Betriebssystem muss modifiziert werden:– bei speziellen Instruktionen
– bei bestimmten Geräten
– bei bestimmten Software-Modulen (aus Lizenzgründen)
wird statt der Ausführung der Instruktion eine VMM-Routine aufgerufen.
-
23Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität VIII
VMM
Host-Hardware
Host-Betriebssystem
Medien
Gast-Betriebssystem
Gast-Software
Host-Software VMM
Gast-Betriebssystem
Gast-Software
In dieser Variante werden die virtuellen Maschinen wieProzesse eines unterliegenden Betriebssystems behandelt.Dies ist der Normalfall bei der Servervirtualisierung inRechenzentren.
-
24Betriebssysteme – WS 2019/20 – Teil 13/Protection
Behandelter Bereich: Emulation
Hardware
Betriebssystem
Medien
Server Apps
Hardware
Betriebssystem
Server Apps
File-system
Netz
Protokolle
Syscall-Schnittstelle
Emulation
Ports
-
25Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität IX
• Emulation = Interpretieren = Programm simuliert vollständig eine Architektur samt peripheren Geräten
• Hier besteht eine vollständige Unabhängigkeit bzw. Trennung von der umfassenden Hardware
• Es können auch fiktive Maschinen emuliert werden.
Host-Hardware
Host-Betriebssystem
Medien
Gast-Betriebssystem
Gast-Software
Emulator
-
26Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität X - Beispiele
• JavaVM mit der Emulation der Bytecode-Instruktionenwird auch für andere Sprachen benutzt, z.B. Groovy, Kotlin, Clojure etc.Siehe: https://en.wikipedia.org/wiki/List_of_JVM_languages
• Parrot-VM für Perl und weitere Sprachen
• LUA-VM:http://files.catwell.info/misc/mirror/lua-5.2-bytecode-vm-dirk-laurie/lua52vm.html
• Ruby-VM: https://de.wikipedia.org/wiki/YARV
• Pascal-P-Maschine: https://de.wikipedia.org/wiki/P-Code
• Concurrent-Pascal basierend auf einer modifizierten P-Maschine
• Emulatoren für die Entwicklung von Software für Mikroprozessoren
• EM1: https://github.com/davidgiven/ack
-
27Betriebssysteme – WS 2019/20 – Teil 13/Protection
Stufen der Virtualität XI – Variante JavaVM
• Bei der JavaVM läuft noch ein Hotspot-Compiler, der Teile des zu interpretierenden Codes auf die Maschinen-Ebene während der Laufzeit des Java-Programms übersetzt.
Host-Hardware
Host-Betriebssystem
Medien
Java-Runtime-System
Java-Software
EmulatorHost-
Software
-
28Betriebssysteme – WS 2019/20 – Teil 13/Protection
Behandelter Bereich: Protection
Hardware
Betriebssystem
Medien
Server Apps
Hardware
Betriebssystem
Server Apps
File-system
Netz
Protokolle
Syscall-Schnittstelle
Protection (BS)
Ports
-
29Betriebssysteme – WS 2019/20 – Teil 13/Protection
Strategie
• Zerteile die (verteilte) Anwendung in mehrere in sich geschlossene Teile, die
• innerhalb als korrekt arbeitend angesehen werden und
• die nach Außen minimale Schnittstellen besitzen.
• Diese minimalen Schnittstellen werden dann mit Rechten versehen.
-
30Betriebssysteme – WS 2019/20 – Teil 13/Protection
Begriffe I
• Subjekt = Aktive Ressource (Prozess, Thread), die Operationen auf Objekten ausführt Beispiele für Subjekte:– Kommandos im Shell
– Datenbank-Server
– Interpreter, z.B. für Shell, Programmiersprachen
– oder: Software allgemein
• Subjekte werden als Stellvertreter von Personen mit Rollen aufgefasst.
• Rollen sind damit Mengen von Rechten.
• Subjekte als Stellvertreter erhalten nach der Prüfung der Identität von Personen Rechte auf Objekte.
-
31Betriebssysteme – WS 2019/20 – Teil 13/Protection
Begriffe II
• Objekt = (hier) Passive Ressource (Speicher) mit Operationen Beispiele für Objekte:– Dateien
– Bereiche im RAM
– Netzwerk-Geräte
• Recht = Erlaubnis eine Operation auf einer Ressource während eines Zeitraums auszuführen Beispiele für Rechte/Erlaubnisse auf Dateien:– Read, Write, Execute
– Delete
– Anhängen, Verlängern
– Verkürzen
– Umbenennen
-
32Betriebssysteme – WS 2019/20 – Teil 13/Protection
Modellierung – die Zugriffsmatrix
Die Rechte können als Matrix definiert werden, wobei in derx-Richtung alle Subjekte und in der y-Richtung alle Objekteangeordnet sind (oder umgekehrt).An den Kreuzungspunkten stehen die jeweiligen Rechte.
Beispiel:
Subjekt S1 Subjekt S2 Subjekt S3 Subjekt S4
Objekt O1 read, write read - write
Objekt O2 - read, write read -
Objekt O3 - - read -
Objekt O4 execute delete, create execute execute
-
33Betriebssysteme – WS 2019/20 – Teil 13/Protection
Implementierung der Zugriffsmatrix I
• Die Zugriffsmatrix ist sehr groß und meistens dünn besetzt.
Ein Windows-System kann 700.000 bis 800.000 Dateien haben, aber meist nur wenige Nutzer (Subjekte).
• Werden alle Rechte eines Subjekts als Liste dem Subjekt zugeordnet wird diese Liste Capability List genannt:
• Jedes Element dieser Liste heißt dementsprechend Capability.
Subjekt S1
Objekt O1 read, write
Objekt O2 -
Objekt O3 -
Objekt O4 executeBeispiel für eine CapabilityList des Subjekts S1
-
34Betriebssysteme – WS 2019/20 – Teil 13/Protection
Implementierung der Zugriffsmatrix II
• Werden alle Rechte eines Subjekts als Liste dem Objekt zugeordnet wird diese Liste Zugriffskontrollliste oder Access Control List (ACL) genannt:
Beispiel für eine ACL des Objekt O1
Subjekt S1 Subjekt S2 Subjekt S3 Subjekt S4
Objekt O1 read, write read - write
In der Praxis kann jedes Verfahren allein, aber auch beidezusammen realisiert sein.
-
35Betriebssysteme – WS 2019/20 – Teil 13/Protection
Vor- und Nachteile
• Access Listen– (+) Leichte Implementierung
(+) Leicht zu verstehen
– (-) Gefahr von Inkonsistenzen
• Capabilities– (+) Leichte Implementierung
(+) Leicht zu verstehen
– (-) schwierig in der Komplexität (-) Probleme bei Rücknahme (-) Kompliziert bei Erzeugung/Vernichtung von Objekten (-) ineffizient
• Beide Verfahren haben das Problem, – der schwierigen, komplizierten Administration
– der Schwerfälligkeit bei Änderungen
– der Schwierigkeit die indirekten Konsequenzen zu verstehen
• Daher werden häufig sehr einfache Verfahren realisiert.
-
36Betriebssysteme – WS 2019/20 – Teil 13/Protection
Meta-Rechte der Capabilities
• Meta-Recht = Recht auf einer Capability eine Operation auszuführen
• Capabilities werden als Objekte behandelt, so dass eine zweite Ebene (Meta-Ebene) entsteht.
• Beispiel:– Recht der Weitergabe (move)
– Recht der Kopie (copy)
• Dann gibt es noch Management-Rechte:– Recht des Erzeugens (create)
– Recht der Vernichtung (delete)
– Recht des Rückrufs (revoke)
– Recht der Änderung von Rechten (modify)
• Alle Capabilities haben noch das Attribute des Besitzers
• Aber auch diese Meta-Capabilities lassen sich als Objekte auffassen...
Diese Meta-Rechte führenzu hoherKomplexität
-
37Betriebssysteme – WS 2019/20 – Teil 13/Protection
Lösung 1: Ringe
• Alle Objekte werden in Gruppen (Level) zusammen gefasst.
• Jedes Subjekt wird einer Gruppe zugeordnet und mit Rechten auf die Objekte dieser Gruppe versehen.
• Alle Subjekte eines Levels N können auch auf Objekte des Levels >N lesend zugreifen, jedoch nicht umgekehrt.
• Ein Level mit einer niedrigen Nummer ist daher vertrauens-würdiger bzw. sicherer als mit einer höheren Nummer.
L2
L0
L1
L3 • Durch diese Ebenen wird die Zugriffs-matrix verkleinert.
• An den Übergängen können spezielle Hardware-Bausteine zur Prüfung eingesetzt werden, z.B. Gates.
• Dieses Ring-Konzept ist z.B. in der x86-Intel-Familie implementiert. Level 0 ist für das Betriebssystem vorgesehen, der Rest gehört zum User-Bereich.
-
38Betriebssysteme – WS 2019/20 – Teil 13/Protection
Lösung 2: Rollenbasierter Zugriff
• Es wird eine weitere Stufe eingeführt:
• Rolle = (hier) Zusammenfassung von allen Capabilities, die zur Bearbeitung einer Aufgabe oder eines zusammenhängenden Komplexes benötigt werden
• Allen Subjekten wird eine Menge von Rollen zugeordnet; diese Menge ist für das Erfüllen von Rollen innerhalb von Arbeitsprozessen erforderlich.
• Das Entfernen einer Rolle führt daher automatisch zum Entzug einer Menge von Capabilities.
• Capabilities dürfen nicht weiter gegeben werden, d.h. es gibt keine Meta-Rechte.
• Auch durch dieses Konzept wird die Zugriffsmatrix verkleinert.
-
39Betriebssysteme – WS 2019/20 – Teil 13/Protection
Nun wieder etwas entspannen...