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

Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

  • 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

Page 1: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 2: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

2

WIRTSCHAFTSINFORMATIK

AgendaAgenda

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

Page 3: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 4: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 5: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 6: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 7: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

}

Page 8: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 9: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 10: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 11: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 12: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 13: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 14: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 15: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 16: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

16

WIRTSCHAFTSINFORMATIK

AgendaAgenda

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

Page 17: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

17

WIRTSCHAFTSINFORMATIK

SicherheitSicherheit

Hauptkomponenten der Sicherheitsarchitektur: Bytecode-Verifier

Klassenlader

Sicherheitsmanager

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

ansonsten: Sandbox

Page 18: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 19: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 20: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 21: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 22: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 23: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 24: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 25: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 26: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

26

WIRTSCHAFTSINFORMATIK

Vielen Dank für die Aufmerksamkeit

Page 27: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 28: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 29: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 30: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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

Page 31: Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

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