PowerPoint-Präsentation - Fakultät für Informatik und Mathematik

Werbung
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Projektmanagement
Zoltan Ambach
Marcus Schloegl
Moritz Weidler
Ilona Dietz
Projektstudium Chipkarten SS 2001
Überblick
1. Vorstellung des Projekts
1.1 Kommunikation APDU
1.2 Versenden eines Dokuments
1.3 Empfangen eines Dokuments
2. Verteilung der Aufgaben
3. Aufgaben des Projektmanagements
Projektstudium Chipkarten SS 2001
Projektmanagement
1. Vorstellung des Projektes
Es soll eine Karte entwickelt werden, mit deren Hilfe der
User ein Dokument digital signieren kann.
Die digitale Signatur dient zum Nachweis der Integrität
und der Authentizität.
Projektstudium Chipkarten SS 2001
Projektmanagement
1.1 Kommunikation APDU
(Application Protocol Data Unit)
Command APDU
Response APDU
Command APDU
CLA
INS
P1
P2
Lc
Data field
Projektstudium Chipkarten SS 2001
Projektmanagement
Response APDU
Le
Data field
SW1
SW2
1.2 Versenden eines signierten Dokuments
S = dec (Hash(Doc),PrivKey)
Computation of Hash(Doc)
Chipcard
Terminal
APDU
(Hash(Doc), Key#)
(Signature S)
Doc
Projektstudium Chipkarten SS 2001
Projektmanagement
S
1.3 Empfangen eines signierten Dokuments
Doc
Hash´ = enc(S,PubKey)
Hash´ == Hash (Doc) ?
Chipcard
Terminal
APDU
(S, Hash(Doc), Key#)
(Response)
Projektstudium Chipkarten SS 2001
Projektmanagement
S
Gruppendarstellung
• Projektmanagement
• Authenticate / PIN (Karte)
• Sign (Karte)
• Authenticate / PIN (Terminal)
• Sign (Terminal)
• Schlüsselverwaltung
• Class Applet
• Tester (QS)
Projektstudium Chipkarten SS 2001
Projektmanagement
2. Verteilung der Aufgaben
Oncard
Offcard
Sign PIN Schlüssel
Sign PIN Schlüssel
Class Applet
APDU
Treiber
Tester
Sm@rtCafe
(Skript)
Projektstudium Chipkarten SS 2001
Projektmanagement
3. Aufgaben des
Projektmanagements
• Festlegung der einzelnen Arbeitsschritte
• Resourcenplanung
• Kommunikation zwischen den Teams und zum Kunden
• Kontrolle der Einhaltung des Zeitplans
• Motivation
Projektstudium Chipkarten SS 2001
Projektmanagement
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Kommunikation mit dem Terminal
Achim Sommer
Aufgabe des Treibers
JavaCard
Response
APDU
PC Programm
Command
APDU
generierte
APDU
Treiber
Projektstudium Chipkarten SS 2001
Kommunikation mit dem Terminal
Interpretion
der APDU
Problemstellung
• Treiber ist abhängig vom benutzten
Card Terminal
• Problem
– Plattformabhängig
– Herstellerabhängig
• Lösungsansatz
OpenCard Framework
Projektstudium Chipkarten SS 2001
Kommunikation mit dem Terminal
Allgemeiner Aufbau des OCF
Application Layer
CardService Layer
CardTerminal Layer
Projektstudium Chipkarten SS 2001
Kommunikation mit dem Terminal
werden vom Anwendungsentwickler benutzt bzw. selbst
implementiert
wird i.a. vom Terminalhersteller
geliefert
Implementierung I
• CardTerminal Layer von G&D
– GDCardTerminalFactory
• CardService Layer
– Implementierung eines Services, der die
APDU‘s sendet/empfängt und die APDU‘s
auswertet
– Kapselung in einer Klasse
Projektstudium Chipkarten SS 2001
Kommunikation mit dem Terminal
Implementierung II
GUI Programm
OCF
Framework
starten
APDU‘s
senden
empfangen
auswerten
ck_Communicate
ck_CardService
Projektstudium Chipkarten SS 2001
Kommunikation mit dem Terminal
ck_APDUData
Returnwert
Data Feld
der Response
APDU
Voraussetzungen
• JDK 1.3 inkl. JRE
• BaseOCF mit
– base-core.jar
– base-opt.jar
(APDU Klassen)
(ck_CardService)
• Java Communication API
(betriebssystemabhängig für Windows, Linux, Sun
verfügbar)
Projektstudium Chipkarten SS 2001
Kommunikation mit dem Terminal
Probleme bei der Implementierung
• CardTerminal Layer stand erst spät zur Verfügung
• Zur Verfügung stehende Dokumentation des OCF
zum Teil sehr dürftig
Beispielcode war nicht zum laufen zu bringen
• Konfiguration der Java Runtime und
Entwicklungsumgebung
Projektstudium Chipkarten SS 2001
Kommunikation mit dem Terminal
JavaCard-Applet
• Aufgabe: Realisierung eines Java-Applets zur
Steuerung aller Vorgänge auf der Kartenseite
• Mitglieder:
Florian Rickert
Aydin Atabay
Tobias Röseneder
Alois Koller
Ranko Krvavac
Aufgabenbereiche des Applets:
• dekodieren der APDU
• Standard-Fehler abfangen
• Methoden ausführen
• Rückmeldung an PC-Seite
• Zugriffskontrolle
Projektstudium Chipkarten SS 2001
Applet
1. APDU-Empfang
• JCRE (JavaCardRuntimeEnvironment) empfängt APDU
aus der seriellen Leitung vom Kartenleser
• Datenübertragungsfehler werden abgefangen (zu kurze
APDU, ...)
• Verarbeiten von Install- oder Select-Aufrufen (Applet
initialisieren oder auswählen)
• JCRE erzeugt APDU-Objekt
• Aufruf der Process-Methode unseres Applets
Projektstudium Chipkarten SS 2001
Applet
2. Process
• Überprüfen des Class-Byte
• Abfragen des Sicherheitsstatus (insecure, authentificated
and PIN_correct)
• Überprüfen der APDU-Parameter abhängig vom
Instruction-Byte (P1, P2, LC, Länge des Databereichs und
LE)
Projektstudium Chipkarten SS 2001
Applet
3. Response
• Fehler
– Kartenmodule werfen im Fehlerfalle Exceptions
– Weiterreichen der Exceptions an dasJCRE
– JCRE generiert Response-APDU mit SW1 und SW2 als
Fehlercode
• Erfolg
– setzen des neuen Sicherheitszustands (bei MutualAuthenticate
und VerifyPIN)
– Zurückschicken der APDU ans Terminal
Projektstudium Chipkarten SS 2001
Applet
Beispiel
• Install-APDU an die Karte
– JCRE initialisiert unser Applet
• Select-APDU an Karte
– JCRE aktiviert unser Applet
• MutualAuthenticate
– Sicherheitszustand: authentifiziert
• VerifyPIN (nur wenn Zustand = authentifiziert)
– Sicherheitszustand: PIN_correct
• beliebige andere Methode kann nun aufgerufen werden
– z. B. sign, changePIN, getPrivateKeyID, ...
• Wird die Karte erneut mit Strom versorgt wir der
Sicherheitszustand auf insecure zurückgesetzt.
Projektstudium Chipkarten SS 2001
Applet
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Schlüsselverwaltung
(Kartenseitig)
Anita (cookie) Costantini, Matthias Nau, Dan Beldiman
Speichern der Schlüssel auf
der Karte
Speichern der Schlüssel in einem von AsymmetricKey
abgeleiteten Objekt:
• Private Key
– Instanz der Klasse
„RSA_PrivateKey“
– ID des „Private Keys“ wird
zusätzlich gespeichert.
Spätere Abfrage möglich
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung (Kartenseitig)
• Public Key
– Vektor mit 256 Zellen
– jede Zelle enthält einen
„Public Key“
– Instanzen der Klasse
RSA_PublicKey
– seine ID entspricht der
Zellennummer
Ablauf
• Die Klasse KeySaver nimmt APDU-Aufrufe entgegen und erzeugt je nach
Aufruf den Private Key oder einen Public Key.
• Wegen der Länge des Private Keys werden dessen Modulus und Exponent
getrennt von der Klasse KeySaver verarbeitet und im Private Key
gespeichert
• Wird versucht einen Schlüssel auf der Karte zu erzeugen, der schon
vorhanden ist ( Private Key, einer der Public Keys), wird eine Exception
geworfen.
• Die Funktionseinheiten auf der Karte haben zum Signieren Zugriff auf die
verschiedenen Teile der Schlüssel (Private Key, Private Key ID, Public
Keys)
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung (Kartenseitig)
Überblick verwendeter
Methoden und Klassen
Zum Abspeichern der Schlüssel auf die Karte werden folgende Methoden
der Klasse KeySaver verwendet:
storePrivateExponent(byte[] buffer) throws ISOException
speichert den privaten Exponenten im privaten RSA-Schlüssel.
storePrivateModulus(byte[] buffer) throws ISOException
speichert den privaten Modulus im privaten RSA-Schlüssel.
storePublicKey(byte[] buffer) throws ISOException
speichert den öffentlichen Schlüssel an die Stelle seiner ID im PublicKey-Feld.
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung (Kartenseitig)
Überblick verwendeter
Methoden und Klassen
(Fortsetzung)
getPrivateKeyID(byte[] buffer) throws ISOException
gibt die ID des privaten Schlüssels zurück.
RSA_PrivateKey getPrivateKey()
gibt den privaten Schlüssel als Instanz der Klasse RAS_PrivateKey zurück.
RSA_PublicKey getPublicKey(int id)
gibt den öffentlichen Schlüssel mit der angegebenen ID zurück.
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung (Kartenseitig)
KeySaver
storePrivateExponent()
storePrivateModulus()
Private Key
ID
Modulus
Exponent
getPrivateKeyID()
getPrivateKey()
storePublicKey()
getPublicKey()
ID
1
Public Keys[ ]
Modulus
Exponent
...
n
MN
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung (Kartenseitig)
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Schlüsselverwaltung
PC seitig
Kathrin Baumgartner, Anne Cesarz, Kurt Beer
Ablauf:
•Mit den Methoden getPublic und getPrivate der Klasse RSAKeyPairGenerator
werden die jeweils zusammengehörenden Private und Public Keys erzeugt.
•Private Key:
•Der Private Key wird sofort an die Karte gesendet.
•Wegen der Länge des Private Keys werden dessen Modulus und Exponent
getrennt an die Karte gesendet.
•Public Key:
•der Public Key wird mit einer ID in eine Datei gespeichert aber auch sofort
zur Karte gesendet. Zu einem späteren Zeitpunkt können alle Public Keys aus
der Datei an eine Karte verschickt werden.
•Falls die Datei noch nicht vorhanden ist, wird sie erzeugt, ID = 1, ansonsten
wird der Public Key an die Datei angehängt, ID = letzte ID + 1.
•Public Key Modulus und Exponent werden zusammen in einer APDU
übertragen. (Param1 = ID, Param2 = Exponent, Datenfeld = Modulus)
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung - PC seitig
generate key pair
public
key
ID
modulus
private
key
exponent
modulus
exponent
write to file
Parts.txt
Prepare
APDU command
Priv key modulus
Prepare
APDU command
Priv key exponent
0xB0 23 id 0 modulus Le
0xB0 24 id 0 exponent Le
ID, modulus, exponent
.........................
send to card
Prepare
APDU command
Pub key mod + exp
0xB0 25 id 0 modulus Le
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung - PC seitig
send to card
Graphische Oberfläche:
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung - PC seitig
Exception handling:
•Der User wird über einen auftretenden Fehler mit Hilfe
eines modalen Pop-Ups informiert.
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung - PC seitig
Schwierigkeiten:
•Viele Typumwandlungen, da die Methoden die
Ergebnisse nicht in dem benötigten Format liefern.
•Das Standardpackage java.security enthielt keine Klasse
die das RSA-Verfahren implementiert. Die geeigneten
Klassen mußten erst im Internet gesucht werden.
•Das von G&D gelieferte Material war teilweise
unvollständig und unzureichend dokumentiert.
Projektstudium Chipkarten SS 2001
Schlüsselverwaltung - PC seitig
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Authenticate & PIN
Martin Leidel, Andreas Dreyer, Peter Knöferl,
Christoph Mayer, Tobias Meißner, Marvin Jakwerth
Gliederung
Gruppe PIN
Methoden
Fazit
Gliederung
 Die Gruppe Authenticate & PIN
 Unsere Methoden
 Was uns am Projekt Chipkarten gefallen hat.
 Probleme / Verbesserungsmöglichkeiten
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Gliederung
Gruppe PIN
L Übersicht
L Aufgaben
Methoden
Fazit
Gruppenübersicht
Oncard
Sign
Offcard
PIN Schlüssel
Sign
PIN Schlüssel
Class Applet
APDU
Treiber
Tester
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Tester
Gliederung
Gruppe PIN
L Übersicht
L Aufgaben
Methoden
Fazit
Aufgaben der Gruppe Authenticate & PIN
 Laden der PIN auf die Karte
 Verifizieren der PIN
 Wechselseitige Authentifizierung
. zwischen Terminal und Chipkarte
 Evtl. Änderung der PIN
 Evtl. Block/Unblock der Karte
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Gliederung
Gruppe PIN
Methoden
L Übersicht
L VerifyPIN
L ChangePIN
Fazit
Methodenübersicht
public void MutualAuthenticate(byte[] buffer)
public void VerifyPIN(byte[] buffer)
public void ChangePIN(byte[] buffer)
public void Unblock(byte[] buffer)
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Gliederung
Gruppe PIN
Methoden
L Übersicht
L VerifyPIN
L ChangePIN
Fazit
VerifyPIN()
Funktion wird aufgerufen
Karte gesperrt?
ja
Response APDU
0x1202
nein
FBZ--;
nein
FBZ>0
Karte sperren
ja
PIN prüfen
Richtig
ja
FBZ = 3;
nein
Response APDU
0x1201
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Response APDU
0x9000
Gliederung
Gruppe PIN
Methoden
L Übersicht
L VerifyPIN
L ChangePIN
Fazit
Error Codes und APDU der Methode
private VerifyPIN()
Projektstudium Chipkarten SS 2001
Authenticate & PIN
ChangePIN
Gliederung
Gruppe PIN
Methoden
L Übersicht
L VerifyPIN
L ChangePIN
Fazit
Aufruf der Funktion
ChangePIN
Aufruf VerifyPIN
Nein
Eingabe alte PIN
Fehlercode Falsche
PIN
PIN korrekt?
Ja
Nein
Eingabe neue PIN
Neue PIN korrekt?
Ja
Speicher der neuen
PIN
Returncode 9000
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Fehlercode
Gliederung
Gruppe PIN
Methoden
L Übersicht
L VerifyPIN
L ChangePIN
Fazit
Error Codes und APDU der Methode
private ChangePIN()
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Gliederung
Gruppe PIN
Methoden
Fazit
Was uns am Projekt Chipkarten gefallen hat:
Interessantes Thema
Aufteilung von Theorie und Praxis
lockere Atmosphäre im Team
Aufgaben wurden größtenteils bewältigt
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Gliederung
Gruppe PIN
Methoden
Fazit
Probleme die während des Projekts
aufgetreten sind:
Abhängigkeiten zu anderen Gruppen
Absprache mit anderen Gruppen schwierig
Verbesserungsmöglichkeiten:
Alle Dateien an zentralem Ort speichern
Projektstudium Chipkarten SS 2001
Authenticate & PIN
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Authenticate und PIN(PC)
Marco Schmid, Martin Menzel, Monika Bauer,
Sven Müller, David O‘Donovan, Achim Sommer
Chronologischer Ablauf eines Kartenvorgangs anhand eines
Beispiels: Benutzer möchte seine PIN ändern
1. Schritt: Authentifizierung nach Karteneingabe (Funktion
Mutual Authenticate)
2. Schritt: Eingabe der PIN und formale Prüfung auf PC-Seite
3. Schritt: a) Prüfung erfolgreich: Senden der PIN an Karte
(Funktion SendPIN)
b) Prüfung nicht erfolgreich: Neueingabe (falls 3-mal
Falscheingabe wird Karte blockiert)
4. Schritt: Änderung der PIN (Funktion ChangePIN)
Projektstudium Chipkarten SS 2001
Authenticate und PIN (PC)
Mutual Authentification
Funktionsaufruf
mutualAuth()
Erstellen APDU und
senden an Karte
Terminal
nicht O.K.
Karte nicht
O.K.
Programmabbruch
Korrekte
Authentification
Response 0x1101
Successfully
Processed
Response 0x9000
Projektstudium Chipkarten SS 2001
Titel
Programm
-abbruch
Response
0x1102
sendPIN
Falsches
PINFormat
Funktionsaufruf
sendPIN( )
Programmabbruch
Response
intern
Richtiges
PIN-Format
Programmabbruch
Falsche
PIN
Response
0x1201
Erstellen /
Senden
APDU
„Verify PIN“
Richtige
PIN
Successfully
Processed
Response 0x9000
Projektstudium Chipkarten SS 2001
Authenticate und PIN (PC)
Karte gesperrt
Programmab
bruch
Response
0x1202
ChangePIN
Funktionsaufruf
changePIN( )
Falsche
PIN
PIN
geändert
Programmabbruch
Neue PINunzulässiger
Wert
Karte
gesperrt
Response 0x1301
Programmabbruch
Response
0x1303
Erstellen/Senden
APDU mit
alter/neuer PIN
Successfully
Programmabbruch
Processed
Response 0x1302
Response 0x9000
Projektstudium Chipkarten SS 2001
Authenticate und PIN (PC)
Projektstudium Chipkarten SS 2001
Authenticate und PIN (PC)
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Gruppe
Sign(PC+Karte)
Gliederung des Vortrags:
•Einleitung
•Java
•Warum Java ?
•Grundlagen der JAVA Programmierung
•Erklärung der einzelnen Aufgaben mit Beispielen
•Hash-Wert berechnen
•Sign(Karte)
•Signatur
•Fragen
Projektstudium Chipkarten SS 2001
Sign(PC+Karte)
•Einleitung
Unser Gruppe setzt sich zusammen aus:
•JAVA
•Erklärung der
Sign ( PC ):
einzelnen Aufgaben
Pointer Josef, Schmid Claudia, Cimpa Barbara, Ostheimer
Heribert, Divjak-Bošnjak Tatjana
mit Beispielen
•Sign(Karte)
•Fragen
Aufgaben: Menüführung programmieren, Hash-Berechnung,
Treiber einbinden
Sign (Karte):
Pham Huy Hoang, Schuster Gerhard, Shaheen Diaa, Radler
Robert, Hagn Christian
Aufgaben: Signieren des Dokuments
Projektstudium Chipkarten SS 2001
Sign(PC+Karte)
•Einleitung
Warum wurde Java für ChipCard verwendet
•JAVA
•Erklärung der
einzelnen Aufgaben
 auf der Kartenseite von G&D bereits verwendet(Applets)
 moderne, zukünftige Programmiersprache
mit Beispielen
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
Grundlagen der JAVA Programmierung
•JAVA
•Erklärung der
einzelnen Aufgaben
 Java Swingklassen, was ist das
Java Look and feel
 Java Schichtenmodell
mit Beispielen
 Java Ereignis(Event) Steuerung
•Sign(Karte)
 Notation für Klassen, Datenelemente, Methoden
•Fragen
 Unterschiede Java C++
Projektstudium Chipkarten SS 2001
Swingklassen in Java
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Was ist Swíng
 HW unabhängig
Die am Bildschirm dargestellten Komponenten, Fenster
verhalten sich auf allen Plattformen identisch
 Damit eine Unabhängigkeit vom Betriebssystem erreicht wird,
verwendet Java keine Methoden des Betriebssystems
 Gleiches Look and Feel (Aussehen) auf jeder Plattform
 Arten des Look and Feel
Windows
Metal
Motiv
Projektstudium Chipkarten SS 2001
•Einleitung
Screenshot unseres Programms im
„Windows“ Look and feel
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
Screenshot unseres Programms im
„Metal“ Look and feel
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
Screenshot unseres Programms im
„Motiv“ Look and feel
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
Java Swing, Schichtenmodell
•JAVA
 Pro Layer bis zu 100 Frames
•Erklärung der
 Sicherstellung daß kein Frame einen anderen verdeckt
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
Ereignis(Event) Modell von Java
Trennung des Code
 Code zur Ereignissteuerung
mit Beispielen
 Code für das eigentliche Programm
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
Notation für Klassen, Datenelemente,
Methoden
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
Klassen:
Datenelemente:
Methoden:
Notation:
beginnend mit einem Großbuchstaben
beginnend mit einem Kleinbuchstaben
beginnend mit einem Kleinbuchstaben
ungarische Notation
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
Unterschiede Java und C++
•JAVA
•Erklärung der
 Java verwendet keine Zeiger
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
 Java verwendet keine Templates
 Java läßt nur einfache Vererbung zu
 Java ist rein Objekt orientiert
•Fragen
 Java läuft unabhängig vom Betriebssystem
Projektstudium Chipkarten SS 2001
Grobstruktur
•Einleitung
•JAVA
•Erklärung der
Welcome
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
Menü
•Fragen
Senden
Projektstudium Chipkarten SS 2001
Empfangen
•Einleitung
•JAVA
Willkommens
bildschirm:
E
Menü:
•Erklärung der
•Hilfe
Fehlermeldung
einzelnen Aufgaben
mit Beispielen
E
•Karte
authentifizier
en
E
•Sign(Karte)
•Fragen
Abfrage: ist
CK
vorhanden
PINGruppe:
PIN-Abfrage
+
Fehlermeldu
ngen
Projektstudium Chipkarten SS 2001
Hilfe
= Exception
Menü:
•Einleitung
Senden
•JAVA
•Erklärung der
Text in Textfeld eingeben (=Zu
signierender Text)
einzelnen Aufgaben
mit Beispielen
E
Button „Versenden“
•Sign(Karte)
Prüfung: Textfeld gefüllt
•Fragen
Hash-Wert berechnen und an Karte zum
signieren schicken
Signieren und zurückschicken
(von Sign Karte)
Projektstudium Chipkarten SS 2001
•Einleitung
Empfangen
•JAVA
Datei einlesen
•Erklärung der
einzelnen Aufgaben
Hash‘-Wert
berechnen
mit Beispielen
•Sign(Karte)
Hash‘, Schlüsselnr,
Signatur an CK
•Fragen
Return von CK
Code == 9000 Dok. integer
Projektstudium Chipkarten SS 2001
Code != 9000 Dok. Nicht integer
•Einleitung
Hash-Berechnung
•JAVA
•Erklärung der
einzelnen Aufgaben
• Warum Hash-Berechnung?
mit Beispielen
• Sicherer Hash-Algorithmus MD5
•Sign(Karte)
• APDU-Aufbau
• Return-Codes
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
Hash-Berechnung
•JAVA
•Erklärung der
Nachricht - Eingabetext
einzelnen Aufgaben
Umwandlung
mit Beispielen
•Sign(Karte)
•Fragen
32 Bit
512 Bit
32 Bit
512 Bit
...
16 *
32-BitBlöcke
...
Funktionen
32 Bit
Projektstudium Chipkarten SS 2001
32 Bit
32 Bit
32 Bit
128-BitHash
Erfahrungen
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
Negatives:
• Klassen nicht vorhanden
• Treiber nicht einzubinden
mit Beispielen
•Sign(Karte)
•Fragen
Positives:
•Projektstudium mit renommierter Firma
•Interessante/wichtige Technologie
Projektstudium Chipkarten SS 2001
Probleme bei Austausch von Nachrichten
•Authentifizierung des Absenders
•Garantie der Unverfälschtheit des Dokumentes
Lösung durch die Signatur
Projektstudium Chipkarten SS 2001
Sign Data
S = enc [Hash(doc), PrivKey]
Computation of Hash(doc)
ChipCard
Terminal
Hash(doc), KeyID
APDU
Signature S
Doc | S
Projektstudium Chipkarten SS 2001
Projektstudium Chipkarten SS 2001
Sign
zf
'fail'
get.PrivateKey
z0
q
'ok'
set.Key
'fail'
z1
q
'ok'
zf
'fail'
sign
z2
q
'ok'
z3
q
Projektstudium Chipkarten SS 2001
zf
Verify Signature
Doc | S
Hash* = dec(S, PubKey)
Hash* = Hash(doc) ?
ChipCard
Terminal
S, Hash(doc), KeyID
APDU
Response
Projektstudium Chipkarten SS 2001
Projektstudium Chipkarten SS 2001
Verify
get.PublicKey
'fail'
zf
z0
q
'ok'
set.Key
'fail'
z1
zf
q
'ok'
z2
verify
'signatur ok'
'signatur NOT ok'
z3
z4
q
Projektstudium Chipkarten SS 2001
q
•Einleitung
•JAVA
•Erklärung der
Vielen Dank für Ihre
Aufmerksamkeit
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Ihre Fragen bitte !
Projektstudium Chipkarten SS 2001
Mit freundlicher Unterstützung von
FH München
FB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Qualitätssicherung
Koerner Constanze
Fleischhut Oliver
Beese Stefan
Hüttlinger Martin
Frers Michael
Verifikation
Spezifikationen überprüfen
1. Funktionen
2. Vorrausetzungen
3. Internes Design
– Jede einzelne Stufe wird von der QS
nach Fehlern und Widersprüchen
durchgesehen.
Projektstudium Chipkarten SS 2001
Qualitätssicherung
Validieren
Code und Spezifikation überprüfen
1.
2.
3.
4.
Einfache Methoden
Integrationen
Komplexe Funktionen
gesamtes System
Projektstudium Chipkarten SS 2001
Qualitätssicherung
Dies ist keine vollständige Spezifikation!!!
Projektstudium Chipkarten SS 2001
Qualitätssicherung
Willkommensbildschirm:
Beispiel für ein gutes Ablaufdiagramm
Menü:
•Karte authentifizieren
•Hilfe
Hilfe
Fehlermeldung
Abfrage: ist CK vorhanden
PIN-Gruppe: PIN-Abfrage +
Fehlermeldungen
Menü:
Senden
Empfangen
Text in Textfeld eingeben
(=Zu signierender Text)
Datei einlesen
Button „Versenden“
Hash-Wert berechnen
Prüfung: Textfeld gefüllt
Hash, Schlüsselnr,
Signatur an CK
Signieren und speichern
Return von CK
Logout, Daten löschen
Code == 9000 Dok. integer
Projektstudium Chipkarten SS 2001
Qualitätssicherung
Code != 9000 Dok. Nicht integer
Beispiele für Testcases
Bad case
Good case
Falsche Länge bei Change_PIN
Pin ändern
Authenticate B0 11 00 00 00 00
authenticate b0 11 00 00 00 00
Verify_Pin B0 12 00 00 02 1234 00
Change_Pin B0 13 00 00 02 1234 00
Erwarteter Wert: 0x6700
Projektstudium Chipkarten SS 2001
Qualitätssicherung
pin_richtig b0 12 00 00 02 1111 00
change_pin
b0 13 00 00 04 1111 2222 00
Erwateter Wert: 0x9000
Successful processing
Herunterladen