WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK...

Preview:

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

Recommended