31
WIRTSCHAFTSINFORMATIK Westfälische Wilhelms- Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin Leenen Im Rahmen des Seminars zur Übersetzung von künstlichen Sprachen

WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

Embed Size (px)

Citation preview

Page 1: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 2: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

2

WIRTSCHAFTSINFORMATIK

Agenda

Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick

Page 3: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 4: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 5: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 6: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 7: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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];

}

Page 8: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 9: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 10: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 11: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 12: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 13: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 14: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 15: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 16: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

16

WIRTSCHAFTSINFORMATIK

Agenda

Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick

Page 17: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

17

WIRTSCHAFTSINFORMATIK

Sicherheit

Hauptkomponenten der Sicherheitsarchitektur:­ Bytecode-Verifier­ Klassenlader­ Sicherheitsmanager

anfängliches Sicherheitsmodell: Sandbox-Modell­ vertrauenswürdig: Systemdomäne­ ansonsten: Sandbox

Page 18: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 19: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 20: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 21: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 22: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 23: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 24: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 25: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 26: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

26

WIRTSCHAFTSINFORMATIK

Vielen Dank für die Aufmerksamkeit

Page 27: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 28: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 29: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 30: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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

Page 31: WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Laufzeitumgebungen – Das Beispiel der Java Virtual Machine Benjamin

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