>> Home >> Fachwissen >> Technologie >> Java
Tutorial
Infrastrukturen
Standards
Kryptologie
Technologie
Smartcards
Lesegeräte
Java
WAP
Politik und Recht
Links
Literatur
Glossar
Java

Java ist eine plattformunabhängige objektorientierte Programmiersprache, die sehr gut für Anwendungen im Internet geeignet ist. Alle aktuellen Browser sind in der Lage, Java-Applets auszuführen. Ein Applet ist ein Programm, das in eine Website eingebettet ist. Der Programmcode wird aus dem Internet geladen und auf dem lokalen Rechner ausgeführt. Die dazu benötigte Software, die Java-Laufzeitumgebung, wird bei der Installation des Browsers normalerweise mitinstalliert.

Die Ausführung des Codes

Ein Java-Quellcode (.java-Datei) wird zunächst in einen Zwischencode, Bytecode genannt, übersetzt (.class-Datei). Dieser Code wird über das Internet auf den lokalen Rechner geladen. Zur Ausführung wird eine Java-Laufzeitumgebung benötigt, die als Java Virtual Machine bezeichnet wird. Sie besteht im Wesentlichen aus einem Programm, das .class-Dateien ausführen kann (Bytecode-Interpreter) und einer Bibliothek von standardisierten Java-Klassen, deren Funktionalität von den Applets genutzt werden kann.

Das Sandbox-Prinzip

Bereits bei der Enwicklung der Sprache wurde besonderer Wert auf Sicherheit gelegt. Java-Applets haben nur eingeschränkten Zugriff auf ihre Umgebung, d. h. den lokalen Rechner. Dieses Prinzip wird als Sandbox bezeichnet, in Analogie zu einem Kind, das in seinem Sandkasten keinen Schaden anrichten kann.

Der Zugriff auf die Umgebung wird durch ein spezielles Objekt, den Sicherheitsmanager, gesteuert. Der Sicherheitsmanager, und damit die Zugriffsrechte des Applets, wird bei der Initialisierung der Virtual Machine festgelegt und kann vom Applet nicht geändert werden. Folgende Sicherheitsrisiken werden vom Sicherheitsmanager u. a. ausgeschlossen:

Zugriffe auf das Dateisystem des lokalen Rechners
Zugriff auf Daten des Benutzers (Nutzername, Zwischenablage etc.)
Netzwerkverbindungen zu anderen Rechnern als dem Server, von dem das Applet geladen wurde
Starten von Programmen
Änderung der Sicherheitseinstellungen

Die Bytecode-Prüfung

Die Sicherheit, die durch den Sicherheitsmanager gewährleistet wird, basiert auf dem Sprachkonzept von Java. Der Sicherheitsmanager ist ein privates Attribut der Klasse java.lang.System, d. h. keine andere Klasse - also auch nicht das Applet - kann normalerweise diese Variable ändern. Es ist aber theoretisch möglich, den Bytecode so zu manipulieren, dass dieses Sprachkonzept umgangen wird und das Applet private Attribute, und damit den Sicherheitsmanager, ändern kann. Um derartige Risiken auszuschließen, wird vor dem Ausführen auf dem lokalen Rechner geprüft, ob der Bytecode alle sicherheitsrelevanten Sprachkonzepte erfüllt.

Signierte Applets

Um die Funktionalität von Applets zu erweitern, wurde in der Java-Version 1.1 das Prinzip der signierten Applets eingeführt. Für Applets, die von bestimmten vertrauenswürdigen Servern geladen werden, können
zusätzliche Rechte vergeben werden. Um sicherzustellen, dass ein Applet wirklich von diesem Server stammt, werden alle Klassen des Applets in eine Datei verpackt, die mit einer digitalen Signatur versehen wird. Auf dem lokalen Rechner wird die Signatur des Applets geprüft und entschieden, ob ihm die festgelegten Rechte eingeräumt werden.

Die Protection Domain-Architektur

In der Java-Version 2 wird der Bytecode in sogenannten Protection Domains ausgeführt. Für bestimmte URLs und gewisse digitale Signaturen können individuelle Rechte gesetzt werden, die für alle Applets gelten, die von diesen URLs stammen bzw. diese Signaturen besitzen.

Weiterführende Links:

Java-Homepage von Sun Microsystems
Holger Mack: Sicherheit in Java und ActiveX (PDF)

SecCommerce    Hamburg