Upload
bertha
View
44
Download
0
Embed Size (px)
DESCRIPTION
Laufzeitumgebungen – Das Beispiel der Java Virtual Machine. Benjamin Leenen Im Rahmen des Seminars zur Übersetzung von künstlichen Sprachen. Agenda. Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick. - PowerPoint PPT Presentation
Citation preview
WIR
TS
CH
AF
TS
INF
OR
MA
TIK
WestfälischeWilhelms-Universität Münster
WIRTSCHAFTSINFORMATIK
Laufzeitumgebungen –Laufzeitumgebungen –Das Beispiel der Java Virtual MachineDas Beispiel der Java Virtual Machine
Benjamin Leenen
Im Rahmen des Seminars zur Übersetzung von künstlichen Sprachen
2
WIRTSCHAFTSINFORMATIK
AgendaAgenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick
3
WIRTSCHAFTSINFORMATIK
Virtuelle Maschinen als Virtuelle Maschinen als LaufzeitumgebungLaufzeitumgebung
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
AgendaAgenda
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 Java Virtual MachineDie Programmiersprache JavaDie 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
AgendaAgenda
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 MachineDie Java Virtual MachineDas class-Dateiformat (1/2)Das 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]constant_pool[constant_pool_count-1];
u2 access_flagsaccess_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces[interfaces_count];
u2 fields_count;
field_info fields[fields_count]fields[fields_count];
u2 methods_count;
method_info methods[methods_count]methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}
8
WIRTSCHAFTSINFORMATIK
Die Java Virtual MachineDie Java Virtual MachineDas class-Dateiformat (2/2)Das 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
AgendaAgenda
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 MachineDie Java Virtual MachineSpeicherbereicheSpeicherbereiche
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
AgendaAgenda
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 MachineDie Java Virtual MachineVerifizierung von class-Dateien (1/2)Verifizierung 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
AgendaAgenda
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 MachineDie Java Virtual MachineAusführung der JVM (1/2)Ausfü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 MachineDie Java Virtual MachineAusführung der JVM (2/2)Ausfü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
AgendaAgenda
Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick
17
WIRTSCHAFTSINFORMATIK
SicherheitSicherheit
Hauptkomponenten der Sicherheitsarchitektur: Bytecode-Verifier
Klassenlader
Sicherheitsmanager
anfängliches Sicherheitsmodell: Sandbox-Modell vertrauenswürdig: Systemdomäne
ansonsten: Sandbox
18
WIRTSCHAFTSINFORMATIK
SicherheitSicherheitAktuelles SicherheitsmodellAktuelles 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
SicherheitSicherheitSicherheitsrisikenSicherheitsrisiken
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
AgendaAgenda
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 MachineDie 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 MachineDie Squawk Java Virtual MachineSuite CreatorSuite 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 MachineDie Squawk Java Virtual MachineGeräteseitige VMGerä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
AgendaAgenda
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 AusblickFazit 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
BackupBackupDie verteilte Architektur der Squawk VMDie 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 Backup SicherheitsarchitekturSicherheitsarchitektur
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 Backup Sicherheit: Policy-DateiSicherheit: 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
BackupBackupAnwendungsbeispiele für SPOTAnwendungsbeispiele 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 Backup Code-Beispiel IsolateCode-Beispiel Isolate
Isolate isolate = new Isolate ("com.sun.spots.SelfHibernator", url());
isolate.start();
send (isolate, outStream);
...
Quelle: Simon u. a., 2006