Applet Firewall und Freigabe der Objekte



Ähnliche Dokumente
Programmieren in Java

Java: Vererbung. Teil 3: super()

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Objektorientierte Programmierung

Algorithmen und Datenstrukturen

Programmierkurs Java

Einführung in die Programmierung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Lösung zu Praktikum 1 -Programmierung eines Java Card Applets-

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Objektorientierte Programmierung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

ICS-Addin. Benutzerhandbuch. Version: 1.0

Der lokale und verteilte Fall

3 Objektorientierte Konzepte in Java

Objektorientierte Programmierung. Kapitel 12: Interfaces

Klassendefinitionen verstehen

Client-Server-Beziehungen

Studentische Lösung zum Übungsblatt Nr. 7

Themen. Web Service - Clients. Kommunikation zw. Web Services

Prinzipien Objektorientierter Programmierung

Java Kurs für Anfänger Einheit 5 Methoden

Kommunikations-Parameter

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Tagesprogramm

4. AuD Tafelübung T-C3

Support-Tipp Mai Release Management in Altium Designer

SEP 114. Design by Contract

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Zählen von Objekten einer bestimmten Klasse

Lehrer: Einschreibemethoden

IEEE 802.1x Authentifizierung. IEEE 802.1x Authentifizierung IACBOX.COM. Version Deutsch

System-Update Addendum

7DVWH.HOOQHU. Kassensystem SANYO (X&D6RIWKapitel 42

Dokumentation für das Spiel Pong

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Funktionserweiterungen, behobene Funktionseinschränkungen und Funktionseinschränkungen, EASY Starter V1.5

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Adressen der BA Leipzig

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

FTP-Leitfaden RZ. Benutzerleitfaden

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Software Engineering Klassendiagramme Assoziationen

Benutzerhandbuch - Elterliche Kontrolle

Java Einführung Abstrakte Klassen und Interfaces

Grundlagen von Python

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

Anleitung über den Umgang mit Schildern

Gesicherte Prozeduren

Anwenden eines Service Packs auf eine Workstation

Regeln für das Qualitäts-Siegel

Assoziation und Aggregation

Typumwandlungen bei Referenztypen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Collax VPN. Howto. Vorraussetzungen Collax Security Gateway Collax Business Server Collax Platform Server inkl. Collax Modul Gatekeeper

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Um DynDNS zu konfigurieren, muss ausschließlich folgendes Menü konfiguriert werden:

Kleines Handbuch zur Fotogalerie der Pixel AG

Vgl. Oestereich Kap 2.7 Seiten

Erstellen einer in OWA (Outlook Web App)

Java Einführung Collections

Java Virtual Machine (JVM) Bytecode

Arbeiten mit UMLed und Delphi

Kommunikations-Management

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Anleitung Typo3-Extension - Raumbuchungssystem

Übungen Programmieren 1 Felix Rohrer. Übungen

I Serverkalender in Thunderbird einrichten

Grundbegriffe der Informatik

Anleitung zur Benutzung des jobup.ch Stellensuchendekontos

Anwendungsbeispiele Buchhaltung

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Das Modul Hilfsmittel ermöglicht den Anwender die Verwaltung der internen Nachrichten, Notizen, Kontakte, Aufgaben und Termine.

Vorkurs C++ Programmierung

OP-LOG

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

Computeranwendung und Programmierung (CuP)

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Modellierung und Programmierung 1

Arbeitsschritte EAÜ Leistungserbringer Einnahmen erfassen

Internet Explorer Version 6

Remote Method Invocation

Praktische Übung 'JUnit-Test'

2. Word-Dokumente verwalten

Einstieg in die Informatik mit Java

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

ecaros2 - Accountmanager

Powermanager Server- Client- Installation

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Transkript:

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 Interface Objekt Beglaubigung der Freigabe

Kontext JCRE Kontext Applet Firewall Gruppen-Kontext Applet Kontext Applet Kontext Gruppen-Kontext Applet Kontext Applet Firewall

Ausnahme für Kontextüberprüfung Statische Arrays Statische Felder und Methoden Beispiel: If (apdu_buffer[iso07816.offset_cla]!= EXPECTED_VALUE) ISOException.thowIt(ISO07816.SW_CLA_NOT_SUPPORTED);

Objektefreigabe über den Kontexten Das Freigabemechanismus der Java Card Technologie: JCRE Privilegien JCRE Entry Point Objekte Globale Arrays Shareable Interface

Kontextumwandlung 1. der aktuelle Kontext wird gespeichert 2. Kontextumwandlung 3. Am Ende der Methode der ursprüngliche Kontext als der aktuell aktive Kontext wiederhergestellt Applet A Kontext a JCRE-Entry-Point-Objekt JCRE Kontext b

Freigabemechanismus JCRE Privilegien JCRE Entry Point Objekte (zwei Kategorien) Temporäre JCRE Entry Point Objekte : kann nicht speichern z.b.: JCRE Exception-Objekte Ständige JCRE Entry Point Objekte : kann speichern z.b.: JCRE AID Globale Arrays Shareable Interface

Gedanke hinter dem SI Mechanismus Applet A SIO Applet B SIO Applet C

Objekt-Shareabel-Interface-Mechanismus 1. Shareable Interface: Ist vererbt vom Interface javacard.framework.shareable Z.B.: public interface LuftMeilenInterface extends Shareable 2. Shareable Interface Objekt (SIO): Objekt, das Shareable Interface implementiert. Z.B.: public class LuftMeilenApp extends Applet implements LuftMeilenInterface

Ein Beispiel von Objektfreigabe zwischen Applets 1. Das Luft-Meilen-Applet erzeugt ein SIO. 2. Das Brieftasche-Applet fordert ein SIO von dem Luft-Meilen- Applet auf. 3. Das Brieftasche-Applet fordert auf, dass die Meilen addiert werden, indem es eine Service-Methode vom SIO aufruft. Meilenaddierung Aufforderung Brieftasche-Applet Luft-Meilen-Applet Client-Applet Server-Applet

Ein Shareable Interface erzeugen Zur Erzeugung eines SIO muß das Server-Appler (das Luft- Meilen-Applet) erst ein Shareable Interface definieren, das vom javacard.framework.shareable vererbt wird. package com.fasttravel.luftmeilen; import javacard.framework.shareable; public interface LuftMeilenInterface extends Shareable{ public void grantmeilen (short amount);

Ein Shareable Klasse erzeugen Und dann erzeugt das Server-Applet eine Serviceversorgerklasse die das Shareable Interface implementiert. package com.fasttravel.luftmeilen; import javacard.framework.*; public class LuftMeilenApp extends Applet implements LuftMeilenInterface{ private short meilen; public void grantmeilen(short amount){ meilen = (short)(meilen + amount);

Aufforderung an einen Shareable Objekt JCSystem.getAppletShareableInterfaceObject client 1 SIO (oder null) SIO (oder null) 4 3 JCRE server 2 Applet.getShareableInterfaceObject

Aufforderung an einen Shareable Objekt 3 wichtige Methoden: public static lookupaid(byte[] buffer, short offset, byte length) public static Shareable getappletshareableinterfaceobject( AID server_aid, byte parameter) public Shareable getshareableinterfaceobject( AID client_aid, byte parameter)

Aufforderung an einen Shareable Objekt Das Server-Applet: public class LuftMeilenApp extends Applet implements LuftMeilenInterface{ short meilen; public Shareable getshareableinterfaceobject( AID client_aid, byte parameter){ return this; // das SIO zurückgeben public void grantmeilen(short amount){ meilen = (short)(meilen + amount);

Anwendung mit einem SIO package com.smartbank.brieftasche; import javacard.framework.*; import com.fasttravel.luftmeilen.luftmeileninterface; public class BrieftascheApp extends Applet{ private short balance; private byte[] luft_meilen_aid_bytes = SERVER_AID_BYTES; //Geld ausgeben private void debit(short amount){ if(balance < amount) ISOException.thowIt(SW_EXCEED_BALANCE); balance = (short)(balance amount); // das Meilenaddierungsservice auffordern requestmeilen(amount);

private void requestmeilen(short amount){ //ein Server AID-Objekt bekommen AID luft_meilen_aid = JCSystem.lookupAID(luft_meilen_aid_bytes, (short)0, (byte)luft_meilen_aid_bytes.length); if(luft_meilen_aid == null) ISOException.throwIt(SW_LUFT_MEILEN_APP_NOT_EXIST); //das SIO vom Server auffordern LuftMeilenInterface sio = (LuftMeilenInterface) (JCSystem.getAppletShareableInterfaceObjekt(luft_meilen_aid, SECRET)); If(sio == null) ISOException.thowIt(SW_FAILED_TO_OBTAIN_SIO); // das Meilenaddirungsservice vom Server auffordern sio.grantmeilen(amount);

Beglaubigung eines Client-Applets public class LuftMeilenApp extends Applet implements LuftMeilenInterface{ public Shareable getshareableinterfaceobject(aid client_aid, byte parameter){ if(client_aid.equals(brieftasche_app_aid_bytes, (short)0, (byte)(brieftasche_app_aid_bytes.length)) == false) return null; return (this);

Beglaubigung eines Client-Applets public void grantmeilen(short amount){ //das AID des Aufrufers bekommen AID client_aid = JCSystem.getpreviousContextAID(); //überprüfen, ob die Methode richtig vom Brieftasche- Applet aufgerufen wird if(client_aid.equals(brieftasche_app_aid_bytes, (short)0, (byte)( brieftasche_app_aid_bytes.length)) == false) ISOException.throwIt (SW_UNAUTHORIZED_CLIENT); meilen = (short)(meilen + amount);

Challenge-Response Schema public class LuftMeilenApp extends Applet implements LuftmeilenInterface{ public void grantmeilen(authenticationinterface authobject, byte[] buffer, short amount){ // eine gelegentliche Prüfungsphrase im Buffer erzeugen generatechallenge(buffer); //prüft das Client-Applet //die Antwort ist in den buffer gespeichert authobject.challenge(buffer); //die Antwort prüfen if(checkresponse(buffer) == false) ISOException.throwIt (SW_UNAUTHORIZED_CLIENT); meilen = (short)(meilen + amount);

Challenge-Response Schema public interface AuthenticationInterface extends Shareable{ public void challenge(byte[] buffer); public class BrieftascheApp extends Applet implements AuthenticationInterface{ private byte[] buffer; public void challenge(byte[] buffer){ private short balance; this.buffer = buffer; //Antwort bekommen //die Prüfung und die beantworten Daten sind in den Buffer speichern getresponse(buffer);

//Geld ausgeben private void debit(short amount){ if(balance < amount) ISOException.throwIt( SW_EXECEED_BALANCE); balance = (short)(balance amount); //dem Luft-Meilen-Applet eine Meilenaddierung anfodern requestmeilen( buffer, amount); private void requestmeilen(byte[] buffer, short amount){ //das AID-Objekt bekommen AID luft_meilen_aid = JCSystem.lookupAID(luft_meilen_aid_bytes, (short)0, (byte) luft_meilen_aid_bytes.length); //das SIO vom Luft-Meilen-Applet auffordern LuftMeilenInterface sio = (LuftMeilenInterface) (JCSystem.getAppletShareableInterfaceObject(luft_meilen_aid, SECRET)); //dem Luft-Meilen-Applet eine Meilenaddierung anfodern sio.grantmeilen(this, buffer, amount);

Zusammenfassung 1 1. Wenn das Server-Applet A ein Objekt mit anderem Applet freigeben will, muß es zuerst ein Shareable Interface SI definieren. Ein Shareable Interface ist vom Interface javacard.framework.shareable vererbt. Die Methoden, die im SI repräsentiert werden, sind die jenigen, die das Applet A den anderen Applets zugreifbar lassen will. 2. Das Applet A definiert dann einen Serviceanbieter, nämlich Klasse C, die das SI implementiert. C bietet eine tatsächliche Implementation von den in SI definierten Methoden. C kann auch andere Methoden und Felder definieren, aber die sind vom Applet Firewall geschützt. Nur die im SI definierten Methoden sind zugreifbar für die anderen Applets. 3. Das Applet A erzeugt ein Objektinstanz O von der Klasse C. C gehört zum Applet A und das Firewall erlaubt den Zugriff von A an allen Felder und Methoden von C.

Zusammenfassung 2 4. Wenn ein Client-Applet B das Objekt O vom Applet A zugreiffen will, ruft es die JCSystem.getAppletShareableInterface Methode zur Aufforderung einen SIO vom Applet A auf. 5. Das JCRE sucht in seiner internen Applettabelle nach dem Applet A. Wenn es A gefunden hat, ruft es dann die getshareableinterfaceobject Methode auf. 6. Das Applet A bekommt die Aufforderung und prüft, ob A dem Applet B das Objekt freigeben will. Wenn A mit der Freigabe mit B einverstanden ist, antwortet A dann B mit einer Referenz zu O.

Zusammenfassung 3 7. Das Applet B bekommt die Objektreferenz vom Applet A, castete sie zum Typ SI, und dann speichert sie in den SIO. Obwohl das SIO wirklich das Objekt O vom A anspricht, ist es noch vom Typ SI. Nur die im SI definierten shareable Interface Methoden sind sichtbar von B. Das Firewall verhindert, dass B andere Felder und Methoden von O zugreifen kann. Das Applet B kann Service vom Applet A auffordern, indem B eine von den SI-Methoden vom SIO aufruft. 8. Vor der Ausführung des Services kann die SI-Methode das Client(B) autehtisieren, um festzustellen, ob der Service bewilligt wird.