Upload
berthold-welter
View
107
Download
1
Embed Size (px)
Citation preview
WIR
TS
CH
AF
TS
INF
OR
MA
TIK
WestfälischeWilhelms-Universität Münster
WIRTSCHAFTSINFORMATIK
Laufzeitumgebungen –Das Beispiel der Java Virtual Machine
Benjamin Leenen
Im Rahmen des Seminars zur Übersetzung von künstlichen Sprachen
2
WIRTSCHAFTSINFORMATIK
Agenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick
3
WIRTSCHAFTSINFORMATIK
Virtuelle Maschinen als Laufzeitumgebung
Rechnerarchitektur als Software
Compiler plattformunabhängiger Zwischencode (Bytecode)
Ausführung durch plattformabhängige Virtuelle Maschine (VM): Interpreter Übersetzung beim Laden Just-In-Time Compiler
InterpreterZwischenprogramm
AusgabeEingabe
Compiler
Quellprogramm
Quelle: Aho u. a., 2000
4
WIRTSCHAFTSINFORMATIK
Agenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine
Die Programmiersprache Java Das class-Dateiformat Speicherbereiche Verifizierung von class-Dateien Ausführung der JVM
Sicherheit Die Squawk Virtual Machine Fazit und Ausblick
5
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineDie Programmiersprache Java
Ziel schnelle und einfach Beherrschbarkeit Portabilität Sicherheit
Konzept: objektorientiert hoher Abstraktionsgrad primitive - und Referenzdatentypen streng getypt Bezeichner in Unicode ljava Compiler class
Gängige Java Virtual Machine (JVM): Java HotSpot VM
6
WIRTSCHAFTSINFORMATIK
Agenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine
Die Programmiersprache Java Das class-Dateiformat Speicherbereiche Verifizierung von class-Dateien Ausführung der JVM
Sicherheit Die Squawk Virtual Machine Fazit und Ausblick
7
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineDas class-Dateiformat (1/2)
ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[constant_pool_count-1];u2 access_flags;u2 this_class;u2 super_class;u2 interfaces_count;u2 interfaces[interfaces_count];u2 fields_count;field_info fields[fields_count];u2 methods_count;method_info methods[methods_count];u2 attributes_count;attribute_info attributes[attributes_count];
}
ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[constant_pool_count-1];u2 access_flags;u2 this_class;u2 super_class;u2 interfaces_count;u2 interfaces[interfaces_count];u2 fields_count;field_info fields[fields_count];u2 methods_count;method_info methods[methods_count];u2 attributes_count;attribute_info attributes[attributes_count];
}
8
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineDas class-Dateiformat (2/2)
access_flagsRegelung des Zugriffs
fields[]Klassen- und Objektvariablen
methods[]Auszuführender Code in: code[]
constant_pool[] Verweise auf Klassen, Felder und Methoden symbolische Verweise in restl. class-Datei
9
WIRTSCHAFTSINFORMATIK
Agenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine
Die Programmiersprache Java Das class-Dateiformat Speicherbereiche Verifizierung von class-Dateien Ausführung der JVM
Sicherheit Die Squawk Virtual Machine Fazit und Ausblick
10
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineSpeicherbereiche
JVM-abhängig Heap Methodenbereich
Thread-abhängig PC (Program Counter) Register Native Methoden Stacks Java Virtual Machine Stack – umfasst Frames:
Variablenarray Operandenstack Verweis auf Konstantenpool
11
WIRTSCHAFTSINFORMATIK
Agenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine
Die Programmiersprache Java Das class-Dateiformat Speicherbereiche Verifizierung von class-Dateien Ausführung der JVM
Sicherheit Die Squawk Virtual Machine Fazit und Ausblick
12
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineVerifizierung von class-Dateien (1/2)
Überprüfung auf statische und strukturelle Bedingungen statisch: Wohlgeformtheit strukturell: gegenseitige Beziehung von Instruktionen
Bytecode Verifier: Aufsplitten von code[] in einzelne Bytes Analyse einzelner Instruktionen
Data-Flow Analyzer „changed“-Bit für jede Instruktion
1)gehe zu Instruktion mit Bit auf 1
2)Auswirkungen auf Operandenstack und Variablenarray
3)Bestimmung aller Folgeinstruktionen
4)Zusammenführung von bisherigem und aktuellem Operandenstack und Variablenarray
13
WIRTSCHAFTSINFORMATIK
Agenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine
Die Programmiersprache Java Das class-Dateiformat Speicherbereiche Verifizierung von class-Dateien Ausführung der JVM
Sicherheit Die Squawk Virtual Machine Fazit und Ausblick
14
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineAusführung der JVM (1/2)
Erstmalige Ausführung einer Klasse:
Laden, Binden und Initialisieren notwendig
Laden Auslösung durch andere Klasse Durchführung: Klassenlader
Bootstrap-Klassenlader: Teil der JVM nutzerdefinierte Klassenlader: von extern zu laden
Initialisieren
Binden
Verifizierung Vorbereitung AuflösungLaden
Quelle: Venners, 2000
15
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineAusführung der JVM (2/2)
Binden Verifizierung Vorbereitung:
Speicherzuweisung für Klassenvariablen Initialisierung der Speicherbereiche
Auflösung der symbolischen Verweise
Initialisieren:
Zuweisung der vorgesehenen Werte zu Klassenvariablen
Initialisieren
Binden
Verifizierung Vorbereitung AuflösungLaden
Quelle: Venners, 2000
16
WIRTSCHAFTSINFORMATIK
Agenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick
17
WIRTSCHAFTSINFORMATIK
Sicherheit
Hauptkomponenten der Sicherheitsarchitektur: Bytecode-Verifier Klassenlader Sicherheitsmanager
anfängliches Sicherheitsmodell: Sandbox-Modell vertrauenswürdig: Systemdomäne ansonsten: Sandbox
18
WIRTSCHAFTSINFORMATIK
SicherheitAktuelles Sicherheitsmodell
Generelle Strategie: Policy-Datei Rechtevergabe abhängig von Herkunftsort und Signatur Rechte: Lese-/Schreibzugriff, Verbindungsherstellung
Schutzdomänen Rechtevergabe an alle Klassen einer Domäne Zugriff auf Systemressourcen: Systemdomäne
Zugriffskontrolle Access Controller im Sicherheitsmanager Zugriffsüberprüfung anhand Policy-Datei weitere Möglichkeit: Guarded Object
19
WIRTSCHAFTSINFORMATIK
SicherheitSicherheitsrisiken
nachträgliches Verändern von class-Dateien Hinzufügen von Instruktionen in code[] Veränderung der Zugriffsrechte in access_flags
Probleme der Policy-Datei: keine Überprüfung der angegebenen Herkunftsadresse Policy-Datei einfach veränderbar Datenbank mit Signaturen vom Nutzer zu pflegen Zugriffskontrolle nur beim ersten Zugriff
20
WIRTSCHAFTSINFORMATIK
Agenda
Motivation:
Flexible Ausführung höherer Programmiersprachen Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick
21
WIRTSCHAFTSINFORMATIK
Die Squawk Java Virtual Machine
für kleine, portable Geräte konzipiert
geringer Ressourcenanspruch
größtenteils in Java geschrieben
lauffähig ohne Betriebssystem – z. B. auf dem SPOT (Sun Small Programmable Object Technology)
verteilte Architektur: Desktoprechner: Suite Creator geräteseitige VM
22
WIRTSCHAFTSINFORMATIK
Die Squawk Java Virtual MachineSuite Creator
Konvertierung von class- in suite-Dateien
lsuite-Datei: 38% der Größe von class-Dateien kann Klassenstrukturen umfassen hierarchisch strukturierbar Serialisierung vor Übertragung
Bytecode-Verifier
Signierung von suite-Dateien
Loader
.class/.jar
Suite Creator
Verifier
Transformer
Serializer
Digital Signer
.suite
Host
Quelle: Simon u. a., 2006
23
WIRTSCHAFTSINFORMATIK
Die Squawk Java Virtual MachineGeräteseitige VM
Betriebssystemfunktionen Thread Scheduler Behandlung von Interrupts
Anwendungen als Objekte (Isolates) Isolierung einzelner Anwendungen gemeinsame Nutzung von VM-Ressourcen
entferntes Debugging Serialisierung jedes Zustands möglich
Speicherung direkt Übertragung an andere Squawk VM
.suite
On-device VM
Interpreted VM
Java libraries
Bootloader
Native Code
Device
Quelle: Simon u. a., 2006
24
WIRTSCHAFTSINFORMATIK
Agenda
Motivation:
Flexible Ausführung höherer Programmiersprachen Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick
25
WIRTSCHAFTSINFORMATIK
Fazit und Ausblick
Zielerreichung von Java: Portabilität durch Kombination von Bytecode und VM Sicherheit
ausgereifte Mechanismen zur Verifizierung und Zugriffskontrolle nach wie vor Verbesserungsbedarf
stetiger Entwicklungsprozess Verbesserung der Sicherheit Entwicklungen im Bereich kleiner, portabler Geräten Steigerung der Performance
26
WIRTSCHAFTSINFORMATIK
Vielen Dank für die Aufmerksamkeit
27
WIRTSCHAFTSINFORMATIK
BackupDie verteilte Architektur der Squawk VM
Loader
.class/.jar
Suite Creator
Verifier
Transformer
Serializer
Digital Signer
.suite
.suite
On-device VM
Interpreted VM
Java libraries
Bootloader
Native Code
Host Device
Quelle: Simon u. a., 2006
28
WIRTSCHAFTSINFORMATIK
Backup Sicherheitsarchitektur
Systemdomäne Sandboxdomäne
Policy
Domäne 1
Policy
Domäne 2
Sicherheitsstrategie
Sicherheitsmanager
C.classB.classA.classJVM
geladene Klassen
lokaler oder entfernter Code
Systemressourcen (Daten, Speicher usw.)
freier Zugriff
Quelle: Eckert, 2008
29
WIRTSCHAFTSINFORMATIK
Backup Sicherheit: Policy-Datei
grant codeBase"https://www.rman.com/users/bob", signedBy "Duke" {permission java.io.FilePermission
"read, write","/bob/temp/*";permission java.io.FilePermission "read","/joe/temp/";permission java.net.SocketPermision "connect","*.rman.com";
};
grant {permission java.net.SocketPermission"localhost:1024-","listen";};
Quelle: in Anlehnung an Eckert, 2008
30
WIRTSCHAFTSINFORMATIK
BackupAnwendungsbeispiele für SPOT
Alltag: SPOT am Herd SPOT am Auto
Warnung, wenn Auto wegfährt und Herdplatten noch heiß sind
Industrielles Umfeld: Sicherung von wertvollen Gütern z. B. gegenseitige Containerüberwachung Alarm, wenn
Container geöffnet und noch auf dem Transportweg
31
WIRTSCHAFTSINFORMATIK
Backup Code-Beispiel Isolate
Isolate isolate = new Isolate ("com.sun.spots.SelfHibernator", url());
isolate.start();send (isolate, outStream);...
Quelle: Simon u. a., 2006