Herzlich willkommen. Programmieren von Java-Smartcards



Ähnliche Dokumente
Software- und Systemsicherheit. Kurt Stenzel

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

Programmierung von Smart Cards mit Hilfe von Java

Gebundene Typparameter

Kapitel 3: Kommunikation mit der Karte

Applet Firewall und Freigabe der Objekte

Einführung in die Programmierung

Scala kann auch faul sein

Objektorientierte Programmierung

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Übungen zu Softwaretechnik

Einführung in die Informatik

Kapitel 2: Chipkarten

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

Energieeffiziente Empfänger in Sensornetzwerken

Installation OMNIKEY 3121 USB

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

Digi Vox Ultimate Pro

Mail/Verschlüsselung einrichten

Installation der Eicon Diva PCI Karte unter Windows XP

Musterlösungen zur Klausur Informatik 3

Anleitung über den Umgang mit Schildern

5. Tutorium zu Programmieren

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Einführung in Javadoc

Wireless LAN PCMCIA Adapter Installationsanleitung

Wie verbindet man Nokia 6600 mit Oxygen Phone Manager II for Symbian OS phones ( )

Anwenderhandbuch logiware IO-Stick

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Große Übung Praktische Informatik 1

Kryptographie in der Moderne

Fälschungssichere RFID-Chips

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Graphische Benutzungsoberflächen

DST EINFÜHRUNG IN MRT (V2)

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

J.6 Programmierung eingebetteter Systeme

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

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

Einführung in die Programmierung

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Computeranwendung und Programmierung (CuP)

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Tutorium Rechnerorganisation

TeleTrusT-Informationstag "IT-Sicherheit im Smart Grid"

WebService in Java SE und EE

Client-Server-Beziehungen

Java Einführung Abstrakte Klassen und Interfaces

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Testen mit JUnit. Motivation

Public-Key-Infrastrukturen

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

Java: Vererbung. Teil 3: super()

Modellierung und Programmierung 1

Tietze, Schenk: Halbleiterschaltungstechnik (Kap. 10) Keller / Paul: Hardwaredesign (Kap. 5) L. Borucki: Digitaltechnik (Kap.

Java Entwicklung für Embedded Devices Best & Worst Practices!

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

Programmieren in Java

Handbuch für Nutzer von Zertifikaten der Zertifizierungsstellen (CAs) des Bayerischen Behördennetzes (BYBN) zur Sicherung von s Teil C3:

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

Typumwandlungen bei Referenztypen

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Einführung in die Java- Programmierung

Java Kurs für Anfänger Einheit 5 Methoden

Programmiervorkurs SS 2011 Technische Universität Darmstadt Jan Hendrik Burdinski, Felix Kerger

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Tagesprogramm

Übungen zu Grundlagen der Informatik I WS 2004/05

Programmierung für Mathematik (HS13)

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

WICHTIGER HINWEIS FÜR HÄNDLER UND SERVICE-WERKSTÄTTEN:

4. AuD Tafelübung T-C3

Objektorientierte Programmierung. Kapitel 12: Interfaces

Nikon Message Center

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einführung in die Programmierung

Programmieren in Java

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Verschlüsseln von Dateien mit Hilfe einer TCOS-Smartcard per Truecrypt. T-Systems International GmbH. Version 1.0 Stand

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Diana Lange. Generative Gestaltung Operatoren

C# im Vergleich zu Java

SE Besprechung. Übung 6 Softwaretests

Vererbung & Schnittstellen in C#

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

PRODUKTINFORMATION LOCKING SYSTEM MANAGEMENT 3.3 BASIC BASIC ONLINE BUSINESS PROFESSIONAL STAND: FEBRUAR 2016

Objektorientierte Programmierung. Kapitel 0: Begrüssung

Grundlagen und Anwendungsgebiete von Chipkarten

Anleitung zum Öffnen meiner Fotoalben bei web.de

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Transkript:

Herzlich willkommen zur integrierten Vorlesung und Übung Programmieren von Java-Smartcards im Wintersemester 2007/2008 Kurt Stenzel Matthias Güdemann Jonathan Schmitt

Kapitel 1: Einführung Worum geht es in der Vorlesung? Organisatorisches Java SmartCards, Kap. 1 (1/29)

Heute: Worum geht es in der Vorlesung? 1. Was sind Smartcards? 2. Beispiel: Kopierkarte (a) Aufgabe (b) Design (c) Programmierung 3. Kryptographische Protokolle 4. Sicherheitseigenschaften 5. Mit der Smartcard reden 6. Organisatorisches Java SmartCards, Kap. 1 (2/29)

Was ist eine Smartcard? ein kleiner Computer ein sicherer Datenspeicher ein ICC: integrated circuit card ein tamper-proof device eine black box/ein Ärgernis/ein Zwangsmittel Java SmartCards, Kap. 1 (3/29)

Wo kommen Smartcards vor? in einer Geldkarte in Handys in Zugangskontrollsystemen im PC (trusted computing platform) in Premiere-Decodern (digitales TV) im Autoschlüssel im Reisepass Java SmartCards, Kap. 1 (4/29)

Wo kommen Smartcards (noch) nicht vor? in einer Kreditkarte (meistens) in einer (Festnetz-)Telefonkarte im PDA: personal digital assistent in der Waschmaschine im Festnetztelefon Playstation, DVD-Player in der Krankenkassenkarte (aber demnächst) im Personalausweis (aber demnächst) Java SmartCards, Kap. 1 (5/29)

SmartCards 8/16 Bit CPU 32K ROM 16 64K EEPROM 0,5 4K RAM 5 Mhz clock 1024 Bit RSA/3-DES 9600 55800 Bit/sec C 1 C 2 C 3 C 5 C 6 C 7 1,25 1, 1 C 1 : Vcc = 5V C 2 : Reset C 3 : Clock C 5 : Ground C 6 : Vpp C 7 : I/O Java SmartCards, Kap. 1 (6/29)

Auftrag: Realisieren Sie eine Universitätskopierkarte Laden von Wertmarken an einem Automaten Abbuchen von Marken an den Kopierern Realisierung mit Java-Smartcards Vorteile: Kostenersparnis, Integration mit anderen Anwendungen möglich Java SmartCards, Kap. 1 (7/29)

Beispiel: Kopierkarte = 1 2 = 3 My SmartCard + copy cardlet Java SmartCards, Kap. 1 (8/29)

Lösung Nr. 1 Laden T C load + n C T ok Abbuchen T C pay + n C T ok T: Terminal, C: Card, n: Anzahl Punkte, +: Konkatenation Jetzt programmieren??? Java SmartCards, Kap. 1 (9/29)

Lösung Nr. 2 AID: 3D 5F 61 60 00 00 00 20 FF AC 00 00 00 01 01 value: der auf der Karte gespeicherte Wert als int Load 00 04 00 00 02 data data: Anzahl zu ladender Punkte als short Antwort: ISO7816.SW WRONG LENGTH (0x6700) falls # data 2 ISO7816.SW DATA INVALID (0x6984) falls data 0 ISO7816.SW DATA INVALID (0x6984) falls data + value > 50000 ISO7816.SW OK (0x9000) sonst, value += data Java SmartCards, Kap. 1 (10/29)

JavaCard Programmierung Im Prinzip wie Java, aber: Keine Strings, keine Integers Keine garbage collection komplett andere API total anderer Programmierstil Java SmartCards, Kap. 1 (11/29)

import javacard.framework.*; public class copycard extends Applet { final static byte IDENT = 0x02 ; final static byte LOAD = 0x04; final static byte PAY = 0x06; final static byte BALANCE = 0x08; short value = 0; Java SmartCards, Kap. 1 (12/29)

public boolean select() { return true; } public void process(apdu apdu) throws ISOException { } switch (apdu.getbuffer()[iso7816.offset_ins]) { case IDENT: returnident(apdu) ; return; case LOAD: load(apdu) ; return; case PAY: pay(apdu) ; return; case BALANCE: balance(apdu) ; return; case ISO7816.INS_SELECT: return; default: ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); } Java SmartCards, Kap. 1 (13/29)

private void load(apdu apdu) throws ISOException { short len = apdu.setincomingandreceive(); if (len!= 2) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); byte[] buffer = apdu.getbuffer(); short val = Util.getShort(buffer, ISO7816.OFFSET_CDATA); if (val <= 0 (short)(val + value) > (short)50000 ) ISOException.throwIt(ISO7816.SW_DATA_INVALID); value += val; } Java SmartCards, Kap. 1 (14/29)

Problem? Problem: Man kann selbst Punkte laden. Man kann ein gefälschtes Applet verwenden. Ziel: Sichere Anwendung Lösung: Kryptographische Protokolle Java SmartCards, Kap. 1 (15/29)

Needham-Schroeder Protokoll (1978) Message 1 A B: A, B, {N a, A} PK(B) Message 2 B A: B, A, {N a, N b } PK(A) Message 3 A B: A, B, {N b } PK(B) PK(A) Public Key von A; N a, N b Nonces; {.} K verschlüsseln mit K Denning 1981: Fehler, Burrows+ 1989: korrekt, Lowe 1995: Fehler Message 2 B A: B, A, {N a, N b, B} PK(A) Java SmartCards, Kap. 1 (16/29)

Man-in-the-Middle Angriff Message 1 A B: A, B, {N a, A} Pu(B) Message 2 B A: B, A, {N a, N b } Pu(A) Message 3 A B: A, B, {N b } Pu(B) A I B Message α.1 A I: A, I, {N a, A} Pu(I) Message β.1 I(A) B: A, B, {N a, A} Pu(B) Message β.2 B I(A): B, A, {N a, N b } Pu(A) Message α.2 I A: I, A, {N a, N b } Pu(A) Message α.3 A I: A, I, {N b } Pu(I) Message β.3 I(A) B: A, B, {N b } Pu(B) Java SmartCards, Kap. 1 (17/29)

Kopierkarte: Interessen Universität: 1. Wert der Kopien eingeworfenes Geld 2. Wertmarken nicht fälsch-, kopier- oder mehrfach ausgebbar 3. Infrastruktur möglichst billig Kunde: 1. Wert der Kopien eingeworfenes Geld 2. Bei Kartenverlust kein Punkteverlust 3. Karte unbenutzbar für Dieb 4. Anonymität Java SmartCards, Kap. 1 (18/29)

Risikoanalyse Angreifer (Motivation): Kostenlos kopieren (hoch) Billiger kopieren (hoch) Auf Kosten anderer kopieren (hoch) Anwendung unbrauchbar machen (mittel) Andere Benutzer schädigen (gering) Was, wenn doch...? (Schaden) Eine Karte gehackt (gering) Alle Karten gehackt (hoch) Andere geschädigt (mittel) Java SmartCards, Kap. 1 (19/29)

Kryptographie in JavaCard Wenige vordefinierte Operationen auf ByteArrays, z. B. Interface javacard.security.rsaprivatekey setexponent(byte[], short, short) Sets the private exponent value of the key. The data format is big endian and right aligned (the least significant bit is the least significant bit of last byte). setmodulus(byte[], short, short) Sets the modulus value of the key. Java SmartCards, Kap. 1 (20/29)

Kommunikation mit der Karte Anwendung OCF PC/SC Treiber Reader Karte Laden von Applets Hochsicherheitskritisch (geheime Schlüssel im Code) Global Platform Spezifikation sehr schwierig zu implementieren Erledigt durch Toolkit Sm@rtCafé Professional Toolkit 2.0 Java SmartCards, Kap. 1 (21/29)

Terminal-Programmierung Java 5 Graphische Oberfläche Fehlertolerant (gegen): Falsche Karte Kommunikationsfehler Herausziehen der Karte Benutzerfreundlich: Keine blockierte GUI Backend: Server mit Datenbank Java SmartCards, Kap. 1 (22/29)

Standards ISO 7816-4: Inter-industry commands for interchange Command APDU: CLA INS P1 P2 Lc 90 02 00 00 02 Daten 01 2C Le 8 Response APDU: Daten 01 2C SW1 90 00 SW2 Java SmartCards, Kap. 1 (23/29)

90 00 No Error SW NO ERROR, SW OK 67 00 Wrong length SW WRONG LENGTH 69 82 Security condition not satisfied SW PIN REQUIRED 69 84 Data invalid SW DATA INVALID 69 85 Conditions not satisfied SW CONDITIONS NOT... 6A 82 File not found SW FILE NOT FOUND 6D 00 INS value not supported SW INS NOT SUPPORTED 6E 00 CLA value not supported SW CLA NOT SUPPORTED 6F 00 No precise diagnosis SW UNKNOWN Java SmartCards, Kap. 1 (24/29)

Java Cryptographic Architecture packages java.security.*, javax.crypto.* implementierungs- und algorithmenunabhängig Generisches Framework für Provider Provider implementieren engines Standardisierte Kodierungen für Schlüssel Cipher cip = Cipher.getInstance("DESede/CBC/NoPadding",cryptProvider); SecretKeyFactory sessionkf = SecretKeyFactory.getInstance("DESede", cryptprovider); SecretKey the_key = sessionkf.generatesecret(new DESedeKeySpec(enc_key)); cip.init(cipher.encrypt_mode, the_key); byte[] res = cip.dofinal(to_encrypt); Java SmartCards, Kap. 1 (25/29)

Entwicklung von Java SmartCard Anwendungen JavaCard Programmierung Sicherheitseigenschaften Kryptographische Protokolle (und Verfahren) Umgang mit Java Cryptographic Architecture Standards und Spezifikationen: ISO, Global Platform, EMV,... Java SmartCards, Kap. 1 (26/29)

Vorlesung 1. Einführung 2. Chipkarten 3. Kommunikation mit der Karte 4. JavaCard, JavaCard API, Arithmetik in JavaCard 5. Kryptographie: Grundlagen, DES, Nonces, Hashes 6. Authentisierungsprotokolle 7. Kryptographie: RSA, Verfahren, Protokolle 8. Angriffe auf SmartCards 9. (Formale Modellierung) Java SmartCards, Kap. 1 (27/29)

Ablauf Betreutes Arbeiten am Rechner in 1006 (L1) Zusätzlich selbstständiges Arbeiten Software: Sm@rtCafé Toolkit, Eclipse, Windows XP Arbeiten in Zweiergruppen Vier Aufgaben: MasterMind, Unsigned, Loyalty, E-Ticket Jeweils Design/Spezifikation und Programmierung Meilensteine + Abnahme am Semesterende 8 Leistungspunkte (Bereich Softwaretechnik) Java SmartCards, Kap. 1 (28/29)

Anforderungen Gute Programmierkenntnisse in Java So viel Arbeit für so wenig LPs... Termine Vorlesung: Freitags 12:15 13:45 Uhr im HS I Übungen Mittwochs: 8:15 9:45, 10:00-11:30, (= 4 Termine, 2 pro Gruppe) 14:00 15:30, 15:45 17:15 Erste Übungen: nächsten Mittwoch (24.10.) Anmeldung Jetzt... Java SmartCards, Kap. 1 (29/29)