6.3 Zugriffsschutz in Java

Größe: px
Ab Seite anzeigen:

Download "6.3 Zugriffsschutz in Java"

Transkript

1 Zusätzlich zum Schutz durch das Betriebssystem gewünschter Zugriff gemäß Politik und Klasse erlaubter Zugriff gemäß Benutzer-Privilegien und Schutzstatus erlaubter Zugriff JVM BS Die Java Sicherheitspolitik gilt zusätzlich zu den Sicherheitsmechanismen des Betriebssystems auf dem Java läuft. Eine Java-Anwendung mit großzügiger Sicherheitspolitik kann versuchen, die Passwortdatei zu lesen, aber wenn der Benutzer, welcher die Anwendung laufen lässt, die Berechtigung zum Lesen der Passwort-Datei nicht besitzt, wird die Java-Anwendung nicht die Datei lesen können. Die globale Zugriffsschutzstrategie ist der Schnitt der Strategie für die Java-Anwendung und der Strategie des Betriebssystems. 1

2 Java-Spracheigenschaften erhöhen Sicherheit keine Pointer-Arithmetik, daher keine ungültigen Speicherzugriffe Automatisches Speichermanagement Garbage Collection automatisches Prüfen von Arraylängen strenge Typisierung, daher keine illegalen Casts Zugriffsrechte, Einschränkung der Sichtbarkeit von Elementen Klassen, Variablen und Methoden können als final deklariert werden, daher keine weiter Ableitung der Klasse, Verändern von Variablenwerten oder Überschreiben von Methoden Execeptions ermöglichen definierte und kontrollierte Programmabbrüche Java wurde mit dem Ziel entwickelt, einfach nutzbar zu sein. Die Hoffnung war, dass dies die Fehler von Programmieren verglichen mit anderen Programmiersprachen wie C oder C++ minimiert und somit die Sicherheit der Programme erhöht wird. Die Sicherheit in Java wird durch einige Eigenschaften erhöht: Java besitzt, anders als C oder C++, keine Pointer, so dass keine ungültigen Speicherzugriffe möglich sind. Java besitzt ein automatisches Speichermanagement, Garbage Collection, ein automatisches Prüfen von String- und Arraylängen, betrachtet Zugriffsrechte und schränkt die Sichtbarkeit auf Elementen ein. Außerdem können in Java Klassen, Variablen und Methoden als final deklariert werden, womit eine weitere Ableitung der Klasse, das Verändern von Variablenwerten und das Überschreiben von Methoden nicht mehr möglich ist. Exceptions ermöglichen definierte und kontrollierte Programmabbrüche. 2

3 Sichtbarkeit private: nur Code der Klasse default (package): Code der Klasse oder selbes Paket protected: Code der Klasse, selbes Paket oder Subklasse public: von jeder anderen Klasse Beurteilung: schützt Code vor Code statisch, ohne dynamische Prüfungen unterstützt least-priveledge-prinzip fördert Programmsicherheit Jede Entität eines Java-Programms hat ein Zugriffsschutzlevel: private: Die Entität kann nur von Code innerhalb der Klasse aufgerufen werden, in der die Entität definiert ist. default (or package): Die Entität kann von Code aufgerufen werden, der innerhalb der Klasse der Entität definiert ist oder von einer Klasse, die im Paket der Entität enthalten ist. protected: Die Entität kann nur von Code aufgerufen werden, welcher in der Klasse der Entität enthalten ist, von Klassen desselben Pakets oder von einer Subklasse. public: Auf die Entität kann von jeder anderen Klasse aus zugegriffen werden. 3

4 Sicherheitsmechanismen der JVM Class File Verifier Stellt sicher, das nur berechtigter Java Bytecode ausgeführt wird. Überprüfung erfolgt in vier Schritten: 1. Format für Java-Klassen wird geprüft. 2. Integrität der Klasse wird geprüft (z.b. dass die Klasse von einer nicht finalen Klasse abgeleitet ist) 3. Bytecode Verifier: Bytcode wird nach unzulässigen Instruktionen überprüft, z.b. richtige Anzahl und Typen von Parametern, Variablen sind initialisiert etc. 4. Überprüfung von Verweisen auf Klassen sowie auf Methoden und Attribute anderer Klassen (z.b. ob referenzierte Methode überhaupt existiert) Die Virtuelle Maschine verbirgt Besonderheiten und Gefahren der ausführenden Architektur und überwacht Programmausführung und Rechte. Der Java Compiler und der Class File Verifier stellen sicher, dass nur berechtigter Java Bytecode ausgeführt wird. Die Überprüfung der Binärdaten erfolgt in vier Schritten, von denen im ersten die Einhaltung des im Sprachstandard vorgegebenen Formats für Java-Klassen sichergestellt wird. Die Struktur beinhaltet u. a. Informationen zur Version der Klasse, übergeordneten Klassen, Methoden und Attributen. Im zweiten Schritt wird die Integrität der Klasse geprüft, z.b. ob das Untersuchungsobjekt von einer gültigen, nicht finalen Superklasse abgeleitet wurde. Ist die Klasse vom Typ Object, so gilt diese Einschränkung nicht. Im dritten Schritt folgt der Aufruf des Bytecode Verifiers, dem wohl wichtigsten, aber auch komplexesten Bestandteil des Class File Verifiers. Er überprüft den Bytecode vor dessen Ausführung nochmals auf unzulässige Instruktionen. Dazu zählt der Gebrauch der Parameter, die in richtiger Anzahl und korrektem Datentyp einem Aufruf folgen müssen. In Schritt 4 werden alle Verweise auf andere Klassen sowie auf Methoden und Attribute anderer Klassen verfolgt und überprüft. 4

5 Class Loader definiert lokalen Namensraum, der gefährlichen Code von der Beeinflussung korrekten und sicheren Codes abhält. Jeder Class Loader hat einen eigenen Namensraum (verhindert das Laden mehrerer Klassen mit demselben Namen). Namensräume sind Schutzschild zwischen Klassen unterschiedlicher Namensräume: Innerhalb eines Namensraums können Klassen kommunizieren (z.b. über public-methoden). Klassen in unterschiedlichen Namespaces (von unterschiedlichen Class Loadern) können nicht direkt kommunizieren. Der Klassenlader (class loader) definiert einen lokalen Namensraum (namespace), welcher dazu benutzt werden kann, gefährlichen Code von der Beeinflussung korrekten und sicheren Codes abzuhalten. Ein Namespace ist eine Menge unabhängiger und eindeutiger Namen (ein Name pro geladener Klasse). Jeder Class Loader besitzt solch einen eigenen Namespace. Falls z.b. eine Klasse Auto in einen Namespace geladen wird, ist es danach unmöglich eine weitere Klasse mit dem Namen Auto in diesen Namespace zu laden. Es ist jedoch möglich mehrere Auto-Klassen in eine Virtual Machine zu laden, solange sich diese in unterschiedlichen Namespaces befinden (von unterschiedlichen Class Loadern geladen werden). Namespaces legen eine Art Schutzschild zwischen Klassen unterschiedlicher Namespaces: Klassen in identischen Namespaces können über die gewohnten Möglichkeiten miteinander kommunizieren, z.b. über mit dem Schlüsselwort public definierte Methoden. Sobald sich zwei Klassen aber in unterschiedlichen Namespaces befinden, also von unterschiedlichen Class Loadern geladen wurden, ist es für diese nicht einmal möglich, die Existenz der jeweils anderen festzustellen, solange der Programmierer dies nicht explizit ermöglicht. 5

6 Class Loader bilden eine Hierarchie (seit JDK1.2). Bootstrap Class Loader ist verantwortlich für das Laden der Core-Klassen der JAVA API. Werden als trusted angesehen. Benutzerdefinierte Class Loader laden restliche Klassen (z.b. der ausgeführten Applikation) Bootsrap Class Loader Class Loader N Class Loader 1 Seit Java Version 1.2 bilden die Class Loader eine Hierarchie. Die Class Loader wurden in einer Vater- Sohn Beziehung angeordnet. Der sogenannte Bootstrap Class Loader steht dabei in der Hierarchie an der Spitze. Dieser Class Loader ist nur für das Laden der Klassen der Core-Java API zuständig. Für das Laden anderer Klassen, wie z.b. die Klassen der ausgeführten Applikation, sind seit Version 1.2 benutzerdefinierte Class Loader verantwortlich. 6

7 Vorgang beim Laden einer Klasse: Class Loader 1 möchte Klasse K laden. Class Loader 1 fragt Class Loader 2, ob er K laden kann.... Class Loader N fragt Bootstrap Class Loader, ob er Klasse K laden kann. Wenn der Bootstrap Class Loader die Klasse K hat, so wird sie zum Class Loader 1 hindurchgereicht. Wenn der Bootstrap Class Loader die Klasse K nicht hat, so versucht der Class Loader N die Klasse zu laden.... Bootsrap Class Loader Class Loader N Class Loader 1 Möchte eine Applikation eine Klasse laden, so gibt der erste Class Loader die Anfrage an seinen Vaterknoten weiter, der selbst die Anfrage wieder an seinen Vaterknoten weiterleitet. Der letzte Knoten in der Hierarchie ist der Bootstrap Class Loader. Dieser sucht die zu ladende Klasse in der Java API. Findet er die Klasse nicht, so gibt er die Anfrage wieder an seinen Sohn Class Loader weiter, der ebenfalls versucht die Klasse zu laden usw. Kann der Bootstrap Class Loader jedoch die Klasse laden, so gibt er die Klasse an seine Sohnknoten weiter, die dann ihrerseits nicht mehr versuchen die Klasse zu laden. 7

8 Ladevorgang verhindert, dass man trusted-klassen (z.b. java.lang.string) durch eigene Klassen überschreibt. Anderes Beispiel: Angreifer schreibt java.lang.virus. Anfrage zum Laden von java.lang.virus gelangt zunächst zum Bootstrap Class Loader, der zwar das Paket java.lang, aber die Klasse nicht findet. Alle anderen Class Loader der Hierarchie finden die Klasse auch nicht, so dass java.lang.virus vom Class Loader des Angreifers geladen wird. Frage: Kann java.lang.virus nun auf die Klassen (z.b. protected) im Paket java.lang zugreifen? Nein, da die Pakete java.lang von verschiedenen Class Loadern geladen wurden (und somit in verschiedenen runtime packages sind). Der Class Loader verhindert das Verändern von trusted class libraries. Trusted class libraries sind die Pakete, die von der Java Virtual Machine als definitiv sicher angesehen werden. Dazu gehören die Klassen der Core Java API. Wenn ein benutzerdefinierter Class Loader beispielsweise versuchen würde, eine eigenen java.lang.string Klasse zu laden, würde diese Anfrage als erstes bis zum Bootstrap Class Loader nach oben geleitet. Dieser würde feststellen, dass das Paket java.lang zur Java API gehört und die Referenz auf diese Klasse zurückgeben. Betrachten wir ein zweites Beispiel. Angenommen ein Programm möchte die Datei java.lang.virus laden, die die Virtual Machine angreifen soll. Analog zum ersten Beispiel würde auch diese Anfrage bis ganz nach oben delegiert werden, der Bootstrap CL würde feststellen, dass er zwar das Paket java.lang kennt, aber die Klasse nicht enthalten ist und würde zurückgeben, dass er die Klasse nicht laden kann. Da auch alle anderen übergeordneten Class Loader die Datei nicht in ihrem Bereich finden können, würde sie also, wie vom Angreifer gewünscht, von dem eigenen Class Loader geladen. Da diese im Paket java.lang liegt könnte man jetzt davon ausgehen, dass diese die gleichen Rechte hat, wie jede Klasse in diesem Paket, beispielsweise auf mit dem Schlüsselwort protected geschützte Methoden und Attribute zuzugreifen. Dies ist aber nicht möglich, da die java.lang API Pakete von einem anderen Class Loader geladen wurden, als die java.lang.virus Klasse. Hier kommt der Begriff des runtime packages ins Spiel, der bedeutet, dass sich zwei (oder mehrere) Klassen nur dann im gleichen runtime package befinden, wenn sie den gleichen Paketnamen haben und sie vom gleichen Class Loader geladen wurden. Da sich, um auf packagesichtbare Variablen und Methoden zugreifen zu können, die beiden Klassen im gleichen runtime package befinden müssen ist es der hier beispielhaft beschriebenen java.lang.virus Klasse also nicht möglich, die java.lang Klassen der API zu beeinflussen. 8

9 Security Manager (und Access Controler in Java 2) Zugriffe auf Ressourcen werden vom Security Manager der JVM geprüft, z.b. - Netzwerkzugriffe - alle Operationen zum Manipulieren von und der Zugriff auf Threads - der Zugriff auf Systemressourcen - Zugriffe auf das Dateisystem - das Aufrufen von lokalen Programmen und Betriebssystem-Kommandos Der Zugriff zu sicherheitskritischen Ressourcen läuft über die Java Virtual Machine und wird vorher durch den Security Manager geprüft. Der Security Manager schränkt die Aktionen von nicht vertrauenswürdigem Code auf ein Minimum ein. Die Operationen, die als gefährlich eingeschätzt werden und deshalb mit dem Security Manager kontrolliert werden können, sind beispielsweise: Netzwerkzugriffe alle Operationen zum Manipulieren von und der Zugriff auf Threads der Zugriff auf Systemressourcen Zugriffe auf das Dateisystem das Aufrufen von lokalen Programmen und Betriebssystem-Kommandos 9

10 Definiert check-methoden, die kritische Aktionen überwachen: z.b. checkread(string file), checkaccess(thread t), checkdelete(sting file) Vor JDK 1.2 war java.lang.securitymanager eine abstrakte Klasse. Benutzer mussten eigenen Security Manager schreiben und von der Klasse java.lang.securitymanager ableiten. Der Sicherheits-Manager ist ein Objekt, das für jede kritische Operation eine Methode zur Verfügung stellt, welche für die entsprechende Operation überprüft, ob sie ausgeführt werden darf oder nicht. Beispielsweise wird die Methode public void checkdelete(string file) des Security Managers von der Java API immer aufgerufen, bevor eine Datei gelöscht wird. Diese Methode muss überprüfen, ob die als Parameter angegebene Datei gelöscht werden darf und wenn dies nicht der Fall ist, eine Exception erzeugen, so dass die Operation abgebrochen wird. Vor JDK Version 1.2. war die Klasse java.lang.securitymanager eine abstrakte Klasse. Um benutzerdefinierte Sicherheitsrichtlinien zu installieren musste man seinen eigenen Security Manager schreiben und von der Klasse java.lang.securitymanager ableiten. Sobald eine Applikation dann den Security Manager instantiiert und installiert kümmert sich der Security Manager um die Einhaltung der Sicherheitsrichtlinien, die durch die check-methoden definiert wurden. 10

11 FileInputStream fis = new FileInputStream("Textdatei.txt"); Erzeugen des FileInputStream Objects -> Security Manager muss um Erlaubnis gefragt werden Ist ein Security Manager installiert YES NO Recht wird gewährt checkread() wird aufgerufen Lesen erlaubt? YES checkread() returns NO checkread() throws Exception read wird ausgeführt Dieses Diagramm zeigt an einem Beispiel die bei der Ausführung einer sicherheitskritischen Operation nötigen Schritte. Wenn keine Security Manager installiert ist, wird der Zugriff sofort gewährt. Gibt es einen Security Manager, wird die entsprechende check()-methode des installierten Security Managers aufgerufen und der Zugriff von diesem überprüft. 11

12 Seit JDK 1.2 ist java.lang.securitymanager eine konkrete Klasse, die eine Default-Implementierung des Security Managers darstellt. Installieren des default Security Managers über die Kommandozeile mittels -Djava.security.manager Eine benutzerdefinierte Sicherheitsrichtlinie wird, anstatt in Java-Code, in einem ASCII-File (policy file) definiert. Seit Java 1.2 ist die Klasse java.lang.securitymanager eine konkrete Klasse, die eine Default- Implementierung des Security Managers darstellt. Der Default Security Manager kann durch Aufruf folgender Option über die Kommandozeile installiert werden: -Djava.security.manager. Benutzerdefinierte Sicherheitspolitiken werden in einem ASCII-File, genannt Policy File, definiert und nicht mehr in Java-Code implementiert (d.h. in der abgeleiteten Klasse des abstrakten SecurityManagers). 12

13 Zugriff auf Systemressourcen läuft weiterhin über Security Manager, dieser implementiert aber nicht mehr die Zugriffsregeln. Security Manager reicht Anfrage an den Access Controller weiter. Access Controler verwendet das Poilcy File zur Zugriffsentscheidung. Beim Zugriff auf Systemressourcen wird in Java 2 zwar weiterhin der Security Manager konsultiert, die Zugriffsregeln allerdings sind nicht mehr in ihm implementiert, sondern werden an den Access Controller weitergeleitet. Wenn also eine check-methode des default Security Managers aufgerufen wird, so wird der Request an die Klasse AccessControler weitergeleitet. Der Access Controller verwendet die Information des Policy Files, um zu entscheiden, ob die Aktion erlaubt werden soll oder nicht. 13

14 Sandboxmodell JDK 1.0 Sandbox ist eine beschränkte Umgebung für nicht vertrauenswürdigen Code Lokaler Code ist vertrauenswürdig und hat vollen Zugriff auf Systemressourcen. Code aus dem Internet (Applet) ist nicht vertrauenswürdig. Security Manager bestimmt die erlaubten Zugriffe. Das originale Java Sicherheitsmodell, bekannt als Sandbox" Modell, stellt eine sehr beschränkte Umgebung zur Verfügung, in der nicht vertrauenswürdiger Code ausgeführt werden kann. Im Sandbox-Modell ist lokaler Code vertrauenswürdig und hat vollen Zugriff zu den Systemressourcen, wie das Dateisystem. Code, der aus dem Internet geladen wurde (Applet) ist nicht vertrauenswürdig und kann nur auf die beschränkten Ressourcen in der Sandbox zugreifen. Der Security Manager ist verantwortlich, zu bestimmen, welche Ressourcenzugriffe erlaubt sind. 14

15 In der Sandbox sind folgende Aktionen nicht möglich. Lesen oder Schreiben auf der lokalen Platte Eine Netzwerkverbindung zu einem Rechner aufbauen außer dem Rechner, von dem das Applet geladen wurde. Einen neuen Prozess starten Eine neue DLL laden Aktionen, die Code in der Sandbox nicht möglich sind, zeigt die Folie. 15

16 Signierung von Applets Digital signierte Applets werden wie lokaler Code behandelt. Öffentlicher Schlüssel zum Verifizieren muss vertrauenswürdig sein. Unsignierte Applets laufen weiterhin in der Sandbox Sandboxmodell JDK 1.1 JDK 1.1 führte signierte Applets ein. Ein digital signiertes Applet wird wie lokaler Code behandelt, mit vollen Zugriff auf die Ressourcen, wenn der öffentliche Schlüssel zum Verifizieren der Signatur vertrauenswürdig ist. Unsignierte Applets werden weiterhin in der Sanbox ausgeführt. Signierte Applets werden mit ihrer Signatur in signierten JAR (Java ARchive) Dateien geliefert. 16

17 Sandboxmodell JDK 1.2 Code wird mit einer Sicherheitspolitik assoziert. Sicherheitspolitik enthält eine Menge von Permissions (z.b. Erlaubnis zum Zugriff auf Systemressource oder Verbindung zu einem Rechner bzw. Port). Sicherheitspolitik wird vom Benutzer oder Administrator definiert. JDK 1.2 führt mehrere Erweiterungen bzgl. JDK 1.1. ein: Erstens, der gesamte Code, egal ob local oder remote, kann nun mit einer Sicherheitspolitik (security policy) assoziiert werden. Die Sicherheitspolitik definiert eine Menge von Permissions und muss bei einem Benutzer oder dem Systemadministrator konfiguriert werden. Jede Permission spezifiziert einen erlaubten Zugriff auf eine bestimmte Ressource, z.b. Lese- und Schreibzugriff auf eine Datei oder ein Verzeichnis oder die Erlaubnis sich zu einem bestimmten Host oder Port zu verbinden. 17

18 Sandboxmodell JDK 1.2 Code ist in Domänen (domains) aufgeteilt. Domäne ist eine Menge von Klassen, deren Instanzen die gleichen Rechte haben. Extreme von Domänen: voller Zugriff und Sandbox-Konfiguration. Die Laufzeitumgebung organisiert den Code in Domänen (domains), jede betrifft eine Menge von Klassen, deren Instanzen die gleichen Rechte gewährleistet werden. Eine Domäne kann wie eine Sandbox konfiguriert sein, so dass Applets weiterhin in einer beschränkten Umgebung ausgeführt werden können. Der linke Pfeil in der Abbildung entspricht einer Domäne, in der dem Code vollen Zugriff gewährt wird. Der Pfeil auf der rechten Seite repräsentiert das andere Extrem. Diese Domäne entspricht der Sandbox. Die dazwischen liegenden Domänen haben weniger Zugriffsrechte als der volle Zugriff aber mehr als die Sandbox. 18

19 Wenn Klassen durch einen Class Loader in die JVM geladen werden, wird jeder Klasse genau eine Domäne zugeordnet. Threads, die mehrere Domänen umfassen, haben den Schnitt der Permissions dieser Domänen. a.class b.class c.class d.class Dom A Dom B Permissions Permissions Klasse Domain Permission Eine Domäne umfasst eine Menge von Klassen, deren Instanzen dieselbe Menge von Permissions haben. Die Java Anwendungsumgebung verwaltet eine Abbildung vom Code (Klassen und Instanzen) zu ihren Domänen und dann zu ihren Permissions. Threads können komplett in einer Domäne ablaufen oder können mehrere Domänen umfassen. In diesem Fall gilt, dass die Menge der Permissions für den Thread der Schnitt der Permissions aller Domänen ist, die der Thread benutzt. 19

20 Permissions repräsentieren den Zugriff auf Systemressourcen. Abstrakte Klasse java.security.permission Neue Permissions erweitern diese Klasse. Actions sind die erlaubten Aktionen auf einem Objekt, z.b. perm1 = new FilePermission(p1,"read,write"); perm2 = new FilePermission(p2,"write,read"); Die Permission-Klassen repräsentieren den Zugriff zu Systemressourcen. Die java.security.permission Klasse ist eine abstrakte Klasse, von der Unterklassen für bestimmte Zugriffe abgeleitet werden können. Ein Beispiel einer solchen Permission zum Lesen einer Datei abc im Verzeichnis /tmp zeigt der folgende Code: perm = new java.io.filepermission("/tmp/abc", "read"). Neue Permissions können von der Permission-Klasse oder Unterklassen abgeleitet werden. Die abstrakte Methode implies muss von neuen Permission-Klassen implementiert werden. Grob gesehen, bedeutet a implies b, dass jemandem, dem die Permission A gewährt wird, auch die Permission b gewährt wird. Die meisten Permissions enthalten eine Liste von Actions die sagt, welche Aktionen für das Objekt erlaubt sind. In einem java.io.filepermission Objekt könnte die Aktionsliste beispielsweise aus read, write bestehen. 20

21 Beipsiel: java.io.filepermission Aktionen sind read, write, delete und execute import java.io.filepermission; FilePermission p = new FilePermission("myfile", "read,write"); FilePermission p = new FilePermission("/home/gong/", "read"); FilePermission p = new FilePermission("/tmp/mytmp", "read,delete"); FilePermission p = new FilePermission("/bin/*", "execute"); FilePermission p = new FilePermission("*", "read"); FilePermission p = new FilePermission("/-", "read,execute"); FilePermission p = new FilePermission("-", "read,execute"); FilePermission p = new FilePermission("<<ALL FILES>>", "read"); Ein Beispiel einer speziellen Permission ist die java.io.filepermission. Diese gibt die Erlaubnis für den Zugriff auf eine Datei oder ein Verzeichnis (spezifiziert im Parameter path). Die Aktionen für den Parameter actions sind read, write, delete, und execute. Die Folie zeigt einige Beispiele ihrer Anwendung. Das Beispiel FilePermission p = new FilePermission("/home/gong/", "read"); gibt beispielsweise die Permission zum Lesen des Verzeichnisses (d.h. das Auflisten der darin enthaltenen Dateien), jedoch nicht das Leserecht auf den Dateien selbst. Um auch die Dateien des Verzeichnisses lesen zu können, muss man dies explizit durch den Dateinamen angeben oder durch * (alle Dateien im Verzeichnis) bzw. - (alle Dateien im Verzeichnis und allen Unterverzeichnissen). Mit <<ALL FILES>> wird die Permission auf allen Dateien des Systems gewährt. 21

22 Beispiel: java.lang.runtimepermission Permission braucht nicht unbedingt keine Aktionen. createclassloader setcontextclassloader createsecuritymanager modifythread modifythreadgroup readfiledescriptor... getclassloader setsecuritymanager exitvm stopthread getprotectiondomain writefiledescriptor Die java.lang.runtimepermission ist ein Beispiel einer Permission, die keine Aktionen erfordert. Das Zielobjekt der RuntimePermission kann als String repräsentiert werden ohne das eine Aktion mit diesem Zielobjekt verbunden wäre. RuntimePermission("exitVM") soezifiziert zum Beispiel die Permission die Java Virtual Machine zu verlassen. 22

23 Die implies-methode vereinfacht den Vergleich von Permissions und gibt einen Überblick über die Mächtigkeit einer Permission. Beispiel: java.io.filepermission("/tmp/*", "read") impliziert java.io.filepermission("/tmp/a.txt", "read") Um Permissions besser miteinander vergleichen zu können, muss jede Permission die implies-methode implementieren. Betrachten wir zum Beispiel java.io.filepermission("/tmp/*", "read"), so impliziert diese Permission java.io.filepermission("/tmp/a.txt", "read"). 23

24 Implikation ist nicht immer offensichtlich. Wenn Applet die Permission zum Schreiben auf dem Dateisystem hat, kann es die JVM Runtime-Umgebung austauschen, in der es dann alle Permissions hat. Wenn ein Applet die RuntimePermission zum Erzeugen von Class Loadern hat, hat es auch viele Permissions des Class Loaders. Gefahren der Permissions sind unter PermRisks beschrieben. Nicht bei allen Permissions ist diese Implikation jedoch für den Programmierer so offensichtlich. Nehmen wir ein Applet an, welches die Permission write zum Schreiben auf dem gesamten Dateisystem hat. Dies erlaubt dem Applet u.a. die JVM Runtime-Umgebung zu ersetzen. Damit hat dann das Applet alle Permissions. Ein anderes Beispiel ist ein Applet, welcher die Runtime Permission gewährt wird, um Class Loader zu erzeugen. Damit werden dem Applet auch viele Permissions des Class Loaders gewährt. Andere gefährliche Permissions und ihre Risiken sind unter beschrieben. 24

25 java.lang.runtime Permission createclassloader getclassloader Was erlaubt die Permission Erzeugt einen Class Loader Erhalten eines Class Loaders Risiko Anwendungen können ihren eigenen Class Loader erzeugen, mit dem sie ihre eigenen Klassen ins System laden. Diese Klassen können in jede Domäne gepackt werden, womit den Klassen die Domänen-Permissions gewährt werden. Dies erlaubt einem Angreifer den Class Loader einer Klasse zu erhalten. Jedoch können auch alle anderen Klassen geladen werden, auf die der Angreifer keinen Zugriff hat. Diese und die nächste Folie zeigen ein Beispiel für die Risiken, die sich durch die Zuordnung der RuntimePermission ergeben können. 25

26 java.lang.runtimep ermission setsecuritymanager exitvm Was erlaubt die Permission Setzt einen Security Manager Anhalten der JVM Risiko Dies erlaubt Code den Securiyt Manager gegen einen weniger restriktiven Security Manager auszutauschen, um die Zugriffüberprüfungen des ursprünglichen Security Managers zu umgehen. Erlaubt Denial-of-Service-Attacken..und viele weitere Gefahren! 26

27 Policy-Objekt repräsentiert die Politik einer Java Anwendung. Politik ist in einer oder mehreren Politik-Konfigurationsdateien spezifiziert. Beispiel eines Politik-Konfigurationseintrages: grant codebase "file:/home/sysadmin/" { permission java.io.filepermission "/tmp/abc", "read"; }; Die Sicherheitspolitik für eine Java Anwendung wird durch ein Policy-Objekt repräsentiert. Damit ein Applet (oder eine Anwendung, die unter einem Security Manager läuft) geschützte Aktionen (wie das Lesen oder Schreiben von Dateien) durchführen kann, müssen ihm die Permissions für diese Aktion gewährt werden. Eine Ausnahme ist, das Code immer das Recht hat, Dateien von seiner CodeSource zu lesen. Es werden in diesem Fall keine Permissions benötigt. Es kann mehrere Instanzen des Policy- Objekts geben, aber immer nur eine ist zu einem Zeitpunkt für die Zugriffsschutzentscheidung relevant. Die Politik kann in einem oder mehreren Politik-Konfigurationsdateien spezifiziert werden. Die Politik- Dateien spezifizieren welche Permission für welchen Code stammend von welcher Quelle erlaubt sind. Ein Beispieleintrag in einer Politik-Datei zeigt die Folie, bei der Code vom Verzeichnis /home/sysadmin die Erlaubnis zum Lesen des Verzeichnisses /tmp/abc gegeben wird. 27

28 Politik-Dateien können im Textedtior oder mit dem Tool policytool erstellt werden. Systemweite Standard-Politik unter java.home\lib\security\java.policy (Windows) (Optionale) Benutzerspezifische Politik unter user.home\.java.policy (Windows) Politik-Objekt wird mit Systempolitik initialisiert und die benutzerspezifische wird (fals vorhanden) hinzugefügt. Eine Politik-Datei kann in einem Texteditor geschrieben werden oder mittels dem Policy Tool (Kommando polictytool) erstellt werden. Es gibt eine systemweite Standard Politik-Datei in java.home/lib/security/java.policy (Solaris) bzw. java.home\lib\security\java.policy (Windows) und eine optionale benutzerspezifische Politik-Datei unter user.home/.java.policy (Solaris) bzw. user.home\.java.policy (Windows). Wenn das Politik-Objekt initialisiert wird, wird zunächst die systemweite Politik geladen und dann die benutzerspezifische zugefügt. 28

29 Policy-Datei-Format enthält einen Keystore-Eintrag und eine Liste von grant -Einträgen. Keystore ist Datenbank für private Schlüssel mit Zertifikaten für die öffentlichen Schlüssel (siehe Kryptographie ) Keystore benutzt öffentliche Schlüssel der in den grant -Einträgen angegebenen Signierenden. Syntax: keystore "some_keystore_url", "keystore_type"; keystore_type gibt das Speicher- und Datenformat des Keystores an. Eine Policy-Konfigurationsdatei kann einen keystore -Eintrag und null oder mehr grant -Einträge enthalten. Ein Keystore ist eine Datenbank privater Schlüssel mit entsprechenden X.509 Zertifikaten für die zugehörigen öffentlichen Schlüssel. Der Keystore wird dazu benutzt, die öffentlichen Schlüssel derjenigen zu ermitteln, die in den grant -Einträgen als Signierende angeben sind. Der Keystore- Eintrag hat die folgende Syntax: keystore "some_keystore_url", "keystore_type"; Hierbei spezifiziert "some_keystore_url" die URL des Keystores und "keystore_type" spezifiziert (optional) den Keystoretyp. Ein Keystortyp definiert das Speicher- und Datenformat der Keystore- Informationen und die Algorithmen zum Schutz der Schlüssel. 29

30 Ein grant -Eintrag gibt eine Menge von Permissions an spezifizierten Code. Beispiele: Permission a.b.foo für Code signiert von Roland: grant signedby "Roland" { permission a.b.foo; }; FilePermission für jeden Code (unabhängig vom Signierenden oder der codebase): grant { permission java.io.filepermission ".tmp", "read"; }; Jeder grant -Eintrag besteht aus einem CodeSource und den gewährten Permissions. Die folgenden Folien zeigen einige Beispiele. 30

31 Zwei Permissions für Code signiert von Li und Roland: grant signedby "Roland,Li" { permission java.io.filepermission "/tmp/*", "read"; permission java.util.propertypermission "user.*"; }; Zwei Permissions für Code signiert von Li und der Code stammt von grant codebase "http://java.sun.com/*",signedby "Li" { permission java.io.filepermission "/tmp/*", "read"; permission java.io.socketpermission "*", "connect"; }; 31

32 Zwei Permissions für Code signiert von Li und Roland, nur wenn der Bytecode für com.abc.tvpermission von Li signiert ist. grant signedby "Roland,Li" { permission java.io.filepermission "/tmp/*","read"; permission com.abc.tvpermission "channel-5", "watch", signedby "Li"; }; 32

33 Access Controller überprüft bei einem Zugriff, ob die erforderlichen Permissions existieren. Geschieht mittels Stack Inspection. Bytecode Identity Code Source Signers Java Runtime Policy Access Controller " Stack Inspection Die Überprüfung auf ausreichende Rechte wird seit JDK1.2 von der Klasse AccessController bewerkstelligt. Dabei werden Maßnahmen ergriffen, um Missbrauch von Code mit mehr Rechten durch ein Programm mit wenigen Rechten zu verhindern. Dies geschieht durch Überprüfung aller Rufer am Call Stack. Dieser Mechanismus wird als Stack Inspection bezeichnet. 33

34 Stack Inspection Überprüft ob alle Aufrufer in der Ruferkette die entsprechenden Permissions haben. Class A Class B Class C java.io.file Systemressource Domain 1 Domain 2 Domain 3 Domain 4 Stack Inspection Access Controller prüft ob die Permission vorhanden ist. Bei einer Stack Inspection wird geprüft, ob alle Methoden in der Ruferkette die entsprechenden Permissions besitzen. Nur wenn alle Rufer am Call Stack die entsprechende Permission besitzen, darf eine Aktion ausgeführt werden. Betrachten wir als Beispiel eine Klasse A, die eine Methode der Klasse B aufruft, die wiederum eine Methode der Klasse C aufruft, welche schließlich eine Methode der Klasse java.io.file aufruft. Die Klasse java.io.file veranlasst durch den Aufruf der Methode checkpermission( Permission perm) den Access Controller zur Überprüfung der Rechte. Der Access Controller für alle Klassen überprüfen, ob sie ausreichende Permissions zum Aufrufen der jeweiligen Methoden haben. Reichen die Permissions für eine Klasse nicht aus, so wird der Zugriff verwehrt. 34

35 Access Controller überprüft der Reihe nach, ob die Aufrufer auf dem Stack die geforderte Permission haben. Überprüft die Permission mit der Methode implies() des ProtectionDomain-Objekts. public boolean implies(permission permission) Hat einer der Aufrufer nicht die benötigte Permission, so gibt der Access Controller eine AccessControlException zurück und der Zugriff auf die Systemressource wird nicht ausgeführt. Der AccessController überprüft der Reihe nach alle Rufer am Stack auf die geforderte Permission, indem er die Methode implies(permission p) aufruft. Die Methode implies() ist in der Klasse ProtectionDomain deklariert. Als einzigen Parameter erwartet diese Methode ein Objekt vom Typ Permission. Diese Methode überprüft ob eine Permission in der ProtectionDomain enthalten ist. Ist das der Fall wird true zurückgegeben, andernfalls false. Stellt der AccessController während der Stack Inspection fest, dass einer der Rufer nicht über die geforderte Permission verfügt, wird die weitere Überprüfung mit der Erzeugung einer AccessControlException abgebrochen und der Zugriff auf die Ressource kann nicht ausgeführt werden. Die Operation bricht ihrerseits mit einer SecurityException ab. 35

36 Java 2 SDK, v. 1.4 bietet zusätzlich zur Java Sicherheitsarchitektur: Java Crytography Extension (JCE) Enthält z.b. Pakete für Verschlüsselung (symmetrisch, asymmetrsich, Block- und Strom), Schlüsselgenerierung, Message Authentication Code Java Authentication and Authorization Service (JAAS) Enthält Pakte zur Authentifizierung und Zugriffskontrolle von Benutzern. Java Secure Socket Extension (JSSE) Enthält Pakte für sichere Internet-Kommunikation (z.b. SSL, TLS). Neben dem Standard Java Sicherheitsmodell, gibt es Ergänzungen für weitere Sicherheitsaspekte: -Die Java Cryptography Extension (JCE) ist eine Menge von Paketen für Verschlüsselung, Schlüsselgenerierung und Message Authentication Code (MAC) Algorithmen. Verschlüsselung beinhaltet symmetrische, asymmetrische, Block- und Stromverschlüsselung. -Der Java Authentication and Authorization Service (JAAS) ist eine Menge von Paketen zur Authentifizierung und Zugriffskontrolle von Benutzern. -Die Java Secure Socket Extension (JSSE) ist eine Menge von Paketen die eine sichere Internet-Kommunikation ermöglichen. Implementiert eine Java Version von Secure Sockets Layer (SSL) und Transport Layer Security (TLS) Protokollen. Enthält Funktionen für die Datenverschlüsselung, Server-Authentifizierung, Nachrichtenintegrität und optional Client- Authentifizierung. 36

37 JAAS ist eine Ergänzung zur Java 2 SDK Sicherheitsarchitektur Die Java 2 SDK Sicherheitsarchitektur ist Code-zentriert, d.h. die Zugriffsentscheidung basiert auf der Frage: Woher kommt der Code und wer hat ihn signiert? JAAS ist Benutert-basiert, d.h. die Zugriffsentscheidung basiert auf der Frage: Wer führt den Code aus? JAAS Autorisierung erweitert die Java Sicherheitsarchitekur. Die Java Sicherheitsarchitektur benutzt eine Security policy, um zu spezifizieren, welche Zugriffsrechte einem Code zugewiesen werden. Diese Architektur ist Code-zentriert, d.h. die Permissions wurden basierend auf den Eigenschaften des Codes erteilt: woher kommt der Code und wer hat ihn signiert. Mit der Integration von JAAS in das Java 2 SDK ist es nun möglich benutzerbasierte Permissions zu definieren. Somit basiert der Zugriffsschutz nun nicht nur auf dem Code der ausgeführt wird, sondern auch darauf, wer den Code ausführt. 37

38 Java 2 Sicherheit ist Code-zentriert CodeSource Code Signierende Permissions Das Java Standardsicherheitsmodell ist Code-zentriert. In der Security Policy werden Permissions aufgrund der Herkunft des Codes und des Signierenden des Codes vergeben. 38

39 Java 2 und JAAS CodeSource Code Signierende Benutzer Permissions Mit JAAS kann in der Security Policy auch spezifiziert werden, an welchem Benutzer die Permission gebunden ist. 39

40 JAAS Authentifizierung Weist einem Benutzer, der eine Anwendung ausführt, eine authentifizierte Benutzererkennung (Principal) zu. Anwendungen sind unabhängig vom Authentifizierungsservice Anwendung LoginContext LoginModule Modulkonfiguration Kerberos Smartcard Biometrie Das Prinzip von JAAS ist, dass dem Benutzer, der die Anwendung ausführt (in der JAAS-Terminologie»Subject«genannt) eine oder mehrere authentifizierte Benutzerkennungen (als»principals«bezeichnet) zugeordnet werden. Die JAAS Architektur erlaubt Anwendungen unabhängig vom Authentifizierungsservice zu bleiben. Es kann beispielsweise eine Authentifizierung über Kerberos, Smartcards, Biometrie etc. erfolgen. Die Schnittstelle zwischen JAAS und einem Programm, das JAAS benutzt, ist die Klasse LoginContext aus dem Paket javax.security.auth.login. 40

41 LoginContext beschreibt den Namen des Kontextes, der die Login- Modulkonfiguration spezifiziert (Modulkonfiguration steht in einer Datei). einen CallbackHandler, der Benutzerinteraktionen für das Modul durchführt (z.b. Abfrage eines Passworts) Da Benutzer-Abfragen mit der Anwendung variieren, sind sie nicht direkt im Modul kodiert, sondern getrennt im CallbackHandler. Ein LoginContext benötigt zwei Informationen: 1. Den Namen des Kontextes. Dieser Name identifiziert die Login-Modulkonfiguration, die für den Kontext verwendet werden soll. Diese Modulkonfiguration steht in einer Datei. 2. Ein Exemplar der Klasse CallbackHandler. Dieses Objekt dient dazu, Benutzerinteraktionen durchzuführen, die die Module benötigen. Eine solche Interaktion könnte die Abfrage eines Passworts sein. Da die Form solcher Abfragen stark von der Anwendung abhängt (z. B. Kommandozeile oder grafischer Dialog), sind sie nicht in den Modulen selbst kodiert, sondern werden über einen CallbackHandler abgewickelt. 41

42 Verwendung von JAAS erfordert 1. Erstellen einer Konfigurationsdatei, in der das Authentifizierungsmodell eingetragen wird. 2. Erstellen eines CallbackHandlers, der die Benutzerinteraktion durchführt. 3. Erzeugen eines LoginContext, mit dessen Methode login() das Login durchgeführt werden kann. Für die Verwendung von JAAS sind daher drei Schritte durchzuführen: 1. Es ist eine Konfigurationsdatei zu erstellen, in der das gewünschte Authentifizierungsmodul eingetragen wird. 2. Es muss eine Unterklasse von CallbackHandler erstellt werden, in der die Benutzerinteraktion durchgeführt wird. 3. Es muss ein LoginContext erzeugt werden, mit dessen Methode login() das eigentliche Login durchgeführt werden kann. 42

43 Beispiel: Modulkonfiguration Demo Demo { com.sun.security.auth.module.unixloginmodule required debug=false; }; J2SE Standard-Login-Modul für Unix, das die UNIX Benutzer-ID, unter der die Anwendung läuft, zur Benutzererkennung (Principal) verwendet. Benötigt keine Benutzerinteraktion (und damit keinen CallbackHandler), da direkt die Betriebssystem-Benutzererkennung benutzt wird. Das Modul com.sun.security.auth.module.unixloginmodule ist ein Login-Modul, das standardmäßig bei J2SE dabei ist und Principals für Unix-Benutzer-IDs ausstellt, unter der das Programm ausgeführt wird. Dieses Modul erfordert keine Benutzerinteraktion und somit auch keinen speziellen CallbackHandler. Die Principals werden automatisch aus der Betriebssystem-Benutzerkennung erstellt. 43

44 Weitere Standard-Module sind JndiLoginModule für eine Authentifizierung gegenüber einem LDAP-Verzeichnis. Krb5LoginModule für die Anmeldung an einem Kerberos-System. KeyStoreLoginModule für eine Authentifizierung gegenüber einem Java Key Store. Neben den beiden genannten Modulen werden standardmäßig z.b. noch folgende Module mitgeliefert: Das JndiLoginModule für eine Authentifizierung gegenüber einem LDAP-Verzeichnis. Das Krb5LoginModule für die Anmeldung an einem Kerberos-System. Das KeyStoreLoginModule für eine Authentifizierung gegenüber einem Java Key Store. 44

45 Login-Kontext für die Konfiguration "Demo" erzeugen try { logincontext = new LoginContext("Demo"); // mit CallbackHandler // logincontext = new LoginContext("Demo, // CallbackHandler); } catch (LoginException e) {} Durchführung des Logins logincontext.login(); 45

46 JAAS erlaubt mehrere Login-Module in einer Konfiguration Demo { com.sun.security.auth.module.unixloginmodu le required debug=false; demo.myloginmodule optional debug=false; }; Tags in Konfiguration entscheiden, wie sich die gesamte Authentifizierung bzgl. Der Modul-Authentifizierungen verhält. Bei JAAS können Login-Module auch kaskadiert, d. h. nacheinander ausgeführt werden. Im Beispiel der Folie wird zunächst eine Anmeldung mit dem UnixLoginModule und danach mit MyLoginModule durchgeführt. Die Authentifizierung erfolgt dann in zwei Phasen: In der ersten Phase werden die Login- Informationen für alle Module ermittelt. Erst wenn alle Module diese erste Phase erfolgreich durchlaufen haben, beginnt die zweite Phase, in der dem Benutzer die Principals hinzugefügt werden. Daher wird bei JAAS zwischen dem Ergebnis eines einzelnen Moduls und dem Ergebnis der gesamten Kette unterschieden. Bei JAAS kann für jedes einzelne Login-Modul konfiguriert werden, ob die Principals nur dann gewährt werden, wenn die gesamte Kette erfolgreich war, oder ob es bereits genügt, wenn das Modul selbst abgeschlossen wurde. 46

47 Tags für die Modulkonfiguration legen fest, ob Modul Erfolg für den Erfolg der Gesamtanmeldung haben muss, nachfolgende Module zur Ausführung kommen Tag required requisite sufficient optional Erfolg zwingend ja ja nein nein Ausführung folgender Module immer nur bei Erfolg nur bei Misserfolg immer Die einzelnen Tags in der Modellkonfiguration legen fest, ob das betreffende Modul Erfolg haben muss, damit die Gesamtanmeldung noch als erfolgreich gilt. Es kann auch definiert werden, ob nachfolgende Module überhaupt noch zur Ausführung kommen sollen. Die Tags sind im Einzelnen: required Die Authentifizierung des Moduls muss erfolgreich sein, damit die Gesamtauthentifizierung erfolgreich ist. Nachgeordnete Login-Module werden in jedem Fall noch ausgeführt, unabhängig davon, ob die Anmeldung mit diesem Modul fehlschlägt. requisite Die Authentifizierung des Moduls muss erfolgreich sein, damit die Gesamtauthentifizierung erfolgreich ist. Falls die Anmeldung mit diesem Modul fehlschlägt, ist auch die Gesamtauthentifizierung fehlgeschlagen und login() kehrt sofort zurück. Ist die Anmeldung mit diesem Modul dagegen erfolgreich, werden nachgeordnete Login-Module auch noch ausgeführt. sufficient Die Authentifizierung mit dem Modul braucht nicht zwingend erfolgreich sein, damit die Gesamtauthentifizierung erfolgreich ist. Ist sie erfolgreich, gilt die Gesamtauthentifizierung als erfolgreich und login() kehrt sofort zurück. Schlägt die Anmeldung mit diesem Modul fehl, werden nachgeordnete Login-Module auch noch ausgeführt. optional Die Authentifizierung mit dem Modul braucht nicht zwingend erfolgreich sein, damit die Gesamtauthentifizierung erfolgreich ist. Nachgeordnete Login-Module werden in jedem Fall noch ausgeführt, unabhängig davon, ob die Anmeldung mit diesem Modul fehlschlägt. 47

48 JAAS Autorisierung Basiert auf den bei der Authentifizierung zugewiesenen Principals. Beispiele: Permission zum Lesen und Schreiben des Verzeichnisses "/home/alice für Code der als X500Principal mit "Alice ausgeführt wird. grant principal javax.security.auth.x500.x500principal "Alice" { permission java.io.filepermission "/home/alice", "read, write"; }; Nachdem sich ein Benutzer authentifiziert hat, bietet JAAS Zugriffsschutz basierend auf den bei der Authentifizierung zugewiesenen Principals des Benutzers. In JAAS kann in der Politik-Datei spezifiziert werden, auf welche Ressourcen welche Principals zugreifen können. Im Beispiel darf der Code im Verzeichnis /home/alice lesen und schreiben, wenn der Code von einem Principal der Klasse javax.security.auth.x500.x500principal ausgeführt wird und die getname()-methode Alice zurückgibt. 48

49 Permission zum Lesen und Schreiben in "/tmp/games" für Code von "www.games.com", signiert von "Duke" und ausgeführt von "Alice. grant codebase "http://www.games.com", signedby "Duke", principal javax.security.auth.x500.x500principal "Alice" { permission java.io.filepermission "/tmp/games", "read, write"; }; Kombination aus Code-basiertem und Benutzer-basiertem Zugriffsschutz. Ein zweites Beispiel zeigt diese Folie. 49

50 Durchsetzen der JAAS-Politik LoginModule Subjekt Aktion Subjekt Principal Principal Principal Authentifizierung SecurityManager Autorisierung Politik Zunächst erfolgt eine Authentifizierung, d. h. ein Subjekt wird durch den Login-Prozess mit Principals versehen. Der Security Manager prüft dann anhand der Principals des Subjektes und der Politik, ob das Subjekt eine spezifische Aktion durchführen darf. 50

51 Aktion als bestimmtes Subjekt ausführen mit doas()- Methode der Klasse Subject. public static Object doas( final Subject subject, final java.security.privilegedaction action) Security Manager (bzw. Access Controller) prüft, ob die Politik die Berechtigungen für die Aktion für einen der Principals des Subjekts gibt. Sollen Aktionen unter einem bestimmten Subjekt ausgeführt werden, gibt es die Methode doas() der Klasse Subject. Der SecurityManager prüft dann, ob die Policy die benötigten Berechtigungen für einen der Principals des Subjects gibt. 51

52 Beispiel: Benutzer hat sich vorher authentifiziert. Subject subject = logincontext.getsubject(); try { subject.doas(subject,new ExampleAction()); } catch(privilegedactionexception e) {...} mit class ExampleAction implements java.security.privilegedaction { } 52

Java Security. Seminararbeit von: Johanna Fitzinger

Java Security. Seminararbeit von: Johanna Fitzinger Seminar aus Softwareentwicklung: Inside Java and.net Java Security Seminararbeit von: Johanna Fitzinger Abstract: Da die meisten Rechner mit einem Intranet oder dem Internet verbunden sind, wurde das Thema

Mehr

Benutzerauthentifizierung und Zugriffsschutz mit JAAS

Benutzerauthentifizierung und Zugriffsschutz mit JAAS Benutzerauthentifizierung und Zugriffsschutz mit JAAS Werner Eberling werner.eberling@mathema.de www.mathema.de Übersicht Altbekanntes kurz erwähnt Java Security Des Kaisers neue Kleider JAAS Zu Ihren

Mehr

4.7 Zugriffsschutz in Programmiersprachen

4.7 Zugriffsschutz in Programmiersprachen 4.7 Zugriffsschutz in Programmiersprachen Schichtung abstrakter Maschinen geschützte Objekte Systemobjekte, Anwendungsobjekte Programmiersprache Systemobjekte, insbesondere Dateien Betriebssystem Adressräume,

Mehr

Praktikum aus Softwareentwicklung 2, Stunde 14

Praktikum aus Softwareentwicklung 2, Stunde 14 Praktikum aus Softwareentwicklung 2, Stunde 14 Lehrziele/Inhalt 1. Java Service 2. Sicherheit Java Service Ein Java Service ist ein Interface, Objekte die dieses Interface implementieren können zur Laufzeit

Mehr

Mobile Agenten am Beispiel JADE (Java Agent DEvelopment Framework) Vorstellung in der Übung zu Konzepte Verteilter Systeme

Mobile Agenten am Beispiel JADE (Java Agent DEvelopment Framework) Vorstellung in der Übung zu Konzepte Verteilter Systeme Mobile Agenten am Beispiel JADE (Java Agent DEvelopment Framework) Vorstellung in der Übung zu Konzepte Verteilter Systeme Agenda Mobile Agenten allgemein JADE - Java Agent DEvelopment Framework Anwendungsfall

Mehr

Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff

Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff Java Security Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff Das Java Sicherheitskonzept Java wurde von Anfang an auf Sicherheit im Internet ausgelegt. Unsicherer Code

Mehr

5.7 Zugriffsschutz in Programmiersprachen

5.7 Zugriffsschutz in Programmiersprachen 5.7 Zugriffsschutz in Programmiersprachen Schichtung abstrakter Maschinen geschützte Objekte Systemobjekte, Anwendungsobjekte Programmiersprache Systemobjekte, insbesondere Dateien Betriebssystem Adreßräume,

Mehr

Security. Einführung Klassenlader Bytecode-Prüfung Sicherheitsmanager Berechtigungen. Praktikum aus Softwareentwicklung 2 Markus Löberbauer 1

Security. Einführung Klassenlader Bytecode-Prüfung Sicherheitsmanager Berechtigungen. Praktikum aus Softwareentwicklung 2 Markus Löberbauer 1 Security Einführung Klassenlader Bytecode-Prüfung Sicherheitsmanager Berechtigungen Praktikum aus Softwareentwicklung 2 Markus Löberbauer 1 Sicherheitsmechanismen in Java Sicherheit ist integraler Bestandteil

Mehr

Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff

Java Security. Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff Java Security Sicherheit durch Classloader, Security Manager und Co. Prof. Dr. Nikolaus Wulff Das Java Sicherheitskonzept Java wurde von Anfang an auf Sicherheit im Internet ausgelegt. Unsicherer Code

Mehr

Sicherheit in Rich Internet Applications

Sicherheit in Rich Internet Applications Sicherheit in Rich Internet Applications Florian Kelbert 14.02.2008 Seite 2 Sicherheit in Rich Internet Applications Florian Kelbert 14.02.2008 Inhaltsverzeichnis Grundlagen Ajax und Mashups Adobe Flash-Player

Mehr

Security. Einführung Klassenlader Bytecode-Prüfung Sicherheitsmanager Berechtigungen. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.

Security. Einführung Klassenlader Bytecode-Prüfung Sicherheitsmanager Berechtigungen. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Security Einführung Klassenlader Bytecode-Prüfung Sicherheitsmanager Berechtigungen Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Security Einführung Klassenlader und Bytecode-Prüfung Sicherheitsmanager

Mehr

Sicherheitsmechanismen in Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 19: Sicherheit. Sicherheitsmechanismen in Java

Sicherheitsmechanismen in Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 19: Sicherheit. Sicherheitsmechanismen in Java Universität Osnabrück 1 Sicherheitsmechanismen in Java 3 - Objektorientierte Programmierung in Java Vorlesung 19: Sicherheit Sprachsicherheit Java wurde mit hohen Sicherheitsansprüchen entworfen, da Applets

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Sicherheitsmechanismen in Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 19: Sicherheit. Sicherheitsmechanismen in Java

Sicherheitsmechanismen in Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 19: Sicherheit. Sicherheitsmechanismen in Java Universität Osnabrück 1 Sicherheitsmechanismen in Java 3 - Objektorientierte Programmierung in Java Vorlesung 19: Sicherheit Sprachsicherheit Java wurde mit hohen Sicherheitsansprüchen entworfen, da Applets

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Semesterarbeit Software Engeneering

Semesterarbeit Software Engeneering Berufsakademie Stuttgart Außenstelle Horb Studiengang Informationstechnik Semesterarbeit Software Engeneering Sicherheit in Java Student: Thomas Fischer Habichtstraße 8 71083 Herrenberg Studienjahrgang:

Mehr

Reporting Services Dienstarchitektur

Reporting Services Dienstarchitektur Reporting Services Dienstarchitektur Reporting Services Dienstarchitektur In Reporting Services wird ein Berichtsserver als ein Windows - Dienst implementiert, der aus unterschiedlichen Featurebere i-

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

.Net Security. Proseminar Objektorientiertes Programmieren mit.net und C# Sabahattin Giritli. Institut für Informatik Software & Systems Engineering

.Net Security. Proseminar Objektorientiertes Programmieren mit.net und C# Sabahattin Giritli. Institut für Informatik Software & Systems Engineering .Net Security Proseminar Objektorientiertes Programmieren mit.net und C# Sabahattin Giritli Institut für Informatik Software & Systems Engineering Agenda Code Acces Security Permissions Security Transparency

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Frithjof Kurtz Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Vortragsgliederung Motivation Java Grundlagen JMangler Grundlagen Transformationen Algorithmen

Mehr

Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen Erstellen sicherer ASP.NET- Anwendungen Authentifizierung, Autorisierung und sichere Kommunikation Auf der Orientierungsseite finden Sie einen Ausgangspunkt und eine vollständige Übersicht zum Erstellen

Mehr

Ausarbeitung zum Vortrag Java Web Start von Adrian Fülöp Fach: Komponentenbasierte Softwareentwicklung WS 06/07 Fachhochschule Osnabrück

Ausarbeitung zum Vortrag Java Web Start von Adrian Fülöp Fach: Komponentenbasierte Softwareentwicklung WS 06/07 Fachhochschule Osnabrück Ausarbeitung zum Vortrag Java Web Start von Adrian Fülöp Fach: Komponentenbasierte Softwareentwicklung WS 06/07 Fachhochschule Osnabrück Adrian Fülöp (297545) - 1 - Inhaltsverzeichnis: 1. Einführung 2.

Mehr

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen 4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen Highlights: objektorientierte Sprache Plattformunabhängigkeit bei Hardware und Betriebssystem optimale Einbindung im Internet und Intranet

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

.NET Security. Proseminar Objektorientiertes Programmieren mit.net und C# Bulwahn Julian. Institut für Informatik Software & Systems Engineering

.NET Security. Proseminar Objektorientiertes Programmieren mit.net und C# Bulwahn Julian. Institut für Informatik Software & Systems Engineering .NET Security Proseminar Objektorientiertes Programmieren mit.net und C# Bulwahn Julian Institut für Informatik Software & Systems Engineering Motivation 23.12.11.NET Security 2 Inhalt Code Access Security(CAS)

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Dynamische Web-Anwendung

Dynamische Web-Anwendung Dynamische Web-Anwendung Christiane Lacmago Seminar Betriebssysteme und Sicherheit Universität Dortmund WS 02/03 Gliederung Einleitung Definition und Erläuterung Probleme der Sicherheit Ziele des Computersysteme

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

Reflection. Arthur Zaczek. Nov 2014

Reflection. Arthur Zaczek. Nov 2014 Arthur Zaczek Nov 2014 1 Einleitung 1.1 Definition Reflection ist das Auslesen von Metainformationen über Klassen, deren Methoden & Eigenschaften zur Laufzeit. 1.2 Anwendungsfälle Analyse von Programmen

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Benutzerzertifikate für Java Webstart

Benutzerzertifikate für Java Webstart Benutzerzertifikate für Java Webstart Benutzerdokumentation Wien 5. Dezember 2011 Florian Bruckner, Florian Heinisch 3kraft IT GmbH & Co KG Wasagasse 26/2 1090 Wien Österreich Tel: +43 1 920 45 49 Fax

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Managed VPSv3 Was ist neu?

Managed VPSv3 Was ist neu? Managed VPSv3 Was ist neu? Copyright 2006 VERIO Europe Seite 1 1 EINFÜHRUNG 3 1.1 Inhalt 3 2 WAS IST NEU? 4 2.1 Speicherplatz 4 2.2 Betriebssystem 4 2.3 Dateisystem 4 2.4 Wichtige Services 5 2.5 Programme

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com Merkblatt: HSM Version 1.01 Systemvoraussetzungen, Setup und Trouble Shooting Kontakt: pdfsupport@pdf-tools.com Besitzer: PDF Tools AG Kasernenstrasse 1 8184 Bachenbülach Schweiz www.pdf-tools.com Copyright

Mehr

estos XMPP Proxy 5.1.30.33611

estos XMPP Proxy 5.1.30.33611 estos XMPP Proxy 5.1.30.33611 1 Willkommen zum estos XMPP Proxy... 4 1.1 WAN Einstellungen... 4 1.2 LAN Einstellungen... 5 1.3 Konfiguration des Zertifikats... 6 1.4 Diagnose... 6 1.5 Proxy Dienst... 7

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Enterprise Security Instanzbasierte Zugriffskontrolle

Enterprise Security Instanzbasierte Zugriffskontrolle Enterprise Security Instanzbasierte Zugriffskontrolle Architekturkonzepte und Implementierung mit SAF, JAAS und Spring Martin Krasser Der Zugriff auf die Domänenobjekte einer Anwendung wird häufig auf

Mehr

GeoShop Netzwerkhandbuch

GeoShop Netzwerkhandbuch Technoparkstrasse 1 8005 Zürich Tel.: 044 / 350 10 10 Fax.: 044 / 350 10 19 GeoShop Netzwerkhandbuch Zusammenfassung Diese Dokumentation beschreibt die Einbindung des GeoShop in bestehende Netzwerkumgebungen.

Mehr

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert

Mehr

RACFBroker/j. Entfernter Zugriff auf das RACF Sicherheitssystem auf IBM Mainframes über TCP/IP. RACFBroker/j ist ein Produkt der

RACFBroker/j. Entfernter Zugriff auf das RACF Sicherheitssystem auf IBM Mainframes über TCP/IP. RACFBroker/j ist ein Produkt der RACFBroker/j Entfernter Zugriff auf das RACF Sicherheitssystem auf IBM Mainframes über TCP/IP RACFBroker/j ist ein Produkt der XPS Software GmbH Eching RACFBroker/j XPS Software GmbH Untere Hauptstr. 2

Mehr

JINI Security & Scalability. JINI Security

JINI Security & Scalability. JINI Security JINI Security & Scalability JINI Security Hans-Peter Rötheli & Christian Gloor Inhalt JINI-Beispielumgebung Kommunikation Was darf fremder Code? Exploits Folgerungen 1 Seminarraum mit Printer Lookup Service

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

DocuWare unter Windows 7

DocuWare unter Windows 7 DocuWare unter Windows 7 DocuWare läuft unter dem neuesten Microsoft-Betriebssystem Windows 7 problemlos. Es gibt jedoch einige Besonderheiten bei der Installation und Verwendung von DocuWare, die Sie

Mehr

AFS / OpenAFS. Bastian Steinert. Robert Schuppenies. Präsentiert von. Und

AFS / OpenAFS. Bastian Steinert. Robert Schuppenies. Präsentiert von. Und AFS / OpenAFS Präsentiert von Bastian Steinert Und obert Schuppenies Agenda AFS Verteilte Dateisysteme, allg. Aufbau Sicherheit und Zugriffsrechte Installation Demo Vergleich zu anderen DFs Diskussion

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Anwendung der Aspektorientierung : Security

Anwendung der Aspektorientierung : Security Seminar AOSD Anwendung der Aspektorientierung : Security Miao Tang Betreuer: Dipl.-Inform. Dirk Wischermann 1. Motivation Anwendung der AO: Security 2 Sicherheitsprobleme beim Design und bei der Programmierung

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Eclipse 3.0 (Windows)

Eclipse 3.0 (Windows) Eclipse Seite 1 Eclipse 3.0 (Windows) 1. Eclipse installieren Eclipse kann man von der Webseite http://www.eclipse.org/downloads/index.php herunterladen. Eclipse ist für Windows, Mac und Linux erhältlich.

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Dateisysteme mit Plugin-Funktion

Dateisysteme mit Plugin-Funktion Dateisysteme mit Plugin-Funktion Basierend auf Reiser 4 unter Linux http://llugb.amsee.de/logo.gif Ausgearbeitet und vorgetragen von Michael Berger 1/23 Agenda Die Idee Dateisysteme mit Plugin-Funktion

Mehr

Laufzeitumgebungen Das Beispiel der Java Virtual Machine

Laufzeitumgebungen Das Beispiel der Java Virtual Machine Westfälische Wilhelms-Universität Münster Laufzeitumgebungen Das Beispiel der Java Virtual Machine Benjamin Leenen Im Rahmen des Seminars zur Übersetzung von künstlichen Sprachen 2 Agenda Virtuelle Maschinen

Mehr

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29)

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung Ludwig-Maximilians-Universität München Institut für Informatik Programmierung und Softwaretechnik (PST) Prof. Wirsing 6. Mai 2009 1 Der Name Java

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Acrolinx IQ. Sichern der Kommunikation mit Acrolinx IQ Server mit HTTPS

Acrolinx IQ. Sichern der Kommunikation mit Acrolinx IQ Server mit HTTPS Acrolinx IQ Sichern der Kommunikation mit Acrolinx IQ Server mit HTTPS 2 Inhalt Sichern der Kommunikation mit Acrolinx IQ Server mit HTTPS 3 Einleitung...3 Konfigurieren von Acrolinx IQ Server für HTTPS...3

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007 Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung

Mehr

DNSSEC. Was ist DNSSEC? Wieso braucht man DNSSEC? Für ein sicheres Internet

DNSSEC. Was ist DNSSEC? Wieso braucht man DNSSEC? Für ein sicheres Internet SEC Für ein sicheres Internet Was ist SEC? SEC ist eine Erweiterung des Domain Namen Systems (), die dazu dient, die Echtheit (Authentizität) und die Voll ständig keit (Integrität) der Daten von - Antworten

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Benutzerhandbuch. Neukirchen

Benutzerhandbuch. Neukirchen Benutzerhandbuch Neukirchen August 2015 Kontakt: Kai Hübl Lambertsberg 17 D-34626 Neukirchen kai.huebl@asneg.de Contents 1 Einleitung... 5 1.1 Inhalt... 5 1.2 OPC UA Client Stack... 5 1.3 OPC UA Server

Mehr

Projekt Weblog :: Integration

Projekt Weblog :: Integration Projekt Weblog :: Integration Die Implementation des Formhandling Frameworks wird nun im Projekt Weblog integriert. Dafür stehen 2 Möglichkeiten zur Auswahl. Sie haben Ihre eigene Implementation der Actions,

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

RIWA NetUpdater Tool für automatische Daten- und Softwareupdates

RIWA NetUpdater Tool für automatische Daten- und Softwareupdates RIWA NetUpdater Tool für automatische Daten- und Softwareupdates Grundlegendes... 1 Ausführbare Dateien und Betriebsmodi... 2 netupdater.exe... 2 netstart.exe... 2 netconfig.exe... 2 nethash.exe... 2 Verzeichnisse...

Mehr

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS)

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS) Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Automatisierung, Betrieb, Middleware Einleitung Der Oracle Fusion Middleware Stack beinhaltet eine leistungsstarke

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

Mehr

Konfigurieren der Netzwerksicherheit mit Hilfe von PKI (Public Key Infrastructure)

Konfigurieren der Netzwerksicherheit mit Hilfe von PKI (Public Key Infrastructure) Unterrichtseinheit 5: Konfigurieren der Netzwerksicherheit mit Hilfe von PKI (Public Key Infrastructure) Verschlüsselung mit öffentlichen Schlüsseln ist eine bedeutende Technologie für E- Commerce, Intranets,

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Shibboleth IdP-Erweiterungen an der Freien Universität Berlin

Shibboleth IdP-Erweiterungen an der Freien Universität Berlin Steffen Hofmann (Dipl.-Inf.) ZEDAT, Identity and Customer Management (ICM) Shibboleth IdP-Erweiterungen an der Freien Universität Berlin Informative Login-Webseiten, JAAS-Login- Module, Login-Handler,

Mehr

Aufbau einer Testumgebung mit VMware Server

Aufbau einer Testumgebung mit VMware Server Aufbau einer Testumgebung mit VMware Server 1. Download des kostenlosen VMware Servers / Registrierung... 2 2. Installation der Software... 2 2.1 VMware Server Windows client package... 3 3. Einrichten

Mehr