fh münchen fb 07 informatik/mathematik projektstudium chipkarten ss 2001 projektmanagement zoltan...
TRANSCRIPT
FH MünchenFB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
ProjektmanagementZoltan Ambach
Marcus Schloegl
Moritz Weidler
Ilona Dietz
Mit freundlicher Unterstützung von
Projektstudium Chipkarten SS 2001
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
Überblick
Projektstudium Chipkarten SS 2001Projektmanagement
Projektstudium Chipkarten SS 2001Projektmanagement
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.
1. Vorstellung des Projektes
Projektstudium Chipkarten SS 2001Projektmanagement
1.1 Kommunikation APDU(Application Protocol Data Unit)
Command APDU
CLA INS P1 P2 Lc Data field Le
Response APDU
Data field SW1 SW2
Command APDU
Response APDU
Projektstudium Chipkarten SS 2001Projektmanagement
1.2 Versenden eines signierten Dokuments
Chipcard Terminal
APDU (Hash(Doc), Key#)
(Signature S)
Doc S
S = dec (Hash(Doc),PrivKey) Computation of Hash(Doc)
Projektstudium Chipkarten SS 2001Projektmanagement
Chipcard Terminal
APDU (S, Hash(Doc), Key#)
(Response)
Doc SHash´ = enc(S,PubKey)Hash´ == Hash (Doc) ?
1.3 Empfangen eines signierten Dokuments
Projektstudium Chipkarten SS 2001Projektmanagement
• Projektmanagement
• Authenticate / PIN (Karte)
• Sign (Karte)
• Authenticate / PIN (Terminal)
• Sign (Terminal)
• Schlüsselverwaltung
• Class Applet
• Tester (QS)
Gruppendarstellung
Projektstudium Chipkarten SS 2001Projektmanagement
Class Applet
Treiber
TesterAPDU
Sm@rtCafe (Skript)
Oncard Offcard
SchlüsselSign PINSign PIN Schlüssel
2. Verteilung der Aufgaben
Projektstudium Chipkarten SS 2001Projektmanagement
3. Aufgaben des Projektmanagements
• Festlegung der einzelnen Arbeitsschritte
• Resourcenplanung
• Kommunikation zwischen den Teams und zum Kunden
• Kontrolle der Einhaltung des Zeitplans
• Motivation
Kommunikation mit dem Terminal
Achim Sommer
FH MünchenFB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Mit freundlicher Unterstützung von
Aufgabe des Treibers
PC ProgrammJavaCard
Treiber
ResponseAPDU
CommandAPDU
generierteAPDU
Interpretionder APDU
Projektstudium Chipkarten SS 2001Kommunikation mit dem Terminal
Problemstellung
• Treiber ist abhängig vom benutzten Card Terminal
• Problem – Plattformabhängig– Herstellerabhängig
• LösungsansatzOpenCard Framework
Projektstudium Chipkarten SS 2001Kommunikation mit dem Terminal
Allgemeiner Aufbau des OCF
CardService Layer
CardTerminal Layer
werden vom Anwendungs-entwickler benutzt bzw. selbstimplementiert
wird i.a. vom Terminalherstellergeliefert
Projektstudium Chipkarten SS 2001Kommunikation mit dem Terminal
Application Layer
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 2001Kommunikation mit dem Terminal
Implementierung II
ck_CardService ck_APDUData
ck_Communicate
Projektstudium Chipkarten SS 2001Kommunikation mit dem Terminal
GUI Programm
APDU‘ssendenempfangenauswerten
ReturnwertData Feldder ResponseAPDU
OCF Frameworkstarten
Voraussetzungen
• JDK 1.3 inkl. JRE• BaseOCF mit
– base-core.jar (APDU Klassen)– base-opt.jar (ck_CardService)
• Java Communication API(betriebssystemabhängig für Windows, Linux, Sun verfügbar)
Projektstudium Chipkarten SS 2001Kommunikation 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 2001Kommunikation 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:
Projektstudium Chipkarten SS 2001Applet
• dekodieren der APDU
• Standard-Fehler abfangen
• Methoden ausführen
• Rückmeldung an PC-Seite
• Zugriffskontrolle
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 2001Applet
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 2001Applet
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 2001Applet
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 2001Applet
FH MünchenFB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Schlüsselverwaltung(Kartenseitig)
Anita (cookie) Costantini, Matthias Nau, Dan Beldiman
Mit freundlicher Unterstützung von
Projektstudium Chipkarten SS 2001Schlüsselverwaltung (Kartenseitig)
Speichern der Schlüssel auf der Karte
• Private Key– Instanz der Klasse
„RSA_PrivateKey“
– ID des „Private Keys“ wird zusätzlich gespeichert.Spätere Abfrage möglich
• Public Key– Vektor mit 256 Zellen
– jede Zelle enthält einen „Public Key“
– Instanzen der Klasse RSA_PublicKey
– seine ID entspricht der Zellennummer
Speichern der Schlüssel in einem von AsymmetricKey abgeleiteten Objekt:
Projektstudium Chipkarten SS 2001 Schlüsselverwaltung (Kartenseitig)
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 ISOExceptionspeichert den privaten Exponenten im privaten RSA-Schlüssel.
storePrivateModulus(byte[] buffer) throws ISOExceptionspeichert den privaten Modulus im privaten RSA-Schlüssel.
storePublicKey(byte[] buffer) throws ISOExceptionspeichert den öffentlichen Schlüssel an die Stelle seiner ID im Public-Key-Feld.
Projektstudium Chipkarten SS 2001 Schlüsselverwaltung (Kartenseitig)
Überblick verwendeter Methoden und Klassen
(Fortsetzung)
getPrivateKeyID(byte[] buffer) throws ISOExceptiongibt 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)
storePrivateExponent()
storePrivateModulus()
storePublicKey()
getPrivateKeyID()
getPrivateKey()
MN
KeySaver
getPublicKey()
Private Key
ID Modulus Exponent
Public Keys[ ]
ID Modulus Exponent1...n
FH MünchenFB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
SchlüsselverwaltungPC seitig
Kathrin Baumgartner, Anne Cesarz, Kurt Beer
Mit freundlicher Unterstützung von
Projektstudium Chipkarten SS 2001Schlüsselverwaltung - PC seitig
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
ID, modulus, exponent.........................
Parts.txt
exponentmodulusID
generate key pair public
keyprivate
key
write to file
modulus exponent
PrepareAPDU commandPriv key modulus
0xB0 23 id 0 modulus Le
PrepareAPDU commandPriv key exponent
0xB0 24 id 0 exponent Le
send to card
PrepareAPDU command
Pub key mod + exp
0xB0 25 id 0 modulus Le
send to card
Projektstudium Chipkarten SS 2001 Schlüsselverwaltung - PC seitig
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.
FH MünchenFB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Authenticate & PIN
Martin Leidel, Andreas Dreyer, Peter Knöferl,Christoph Mayer, Tobias Meißner, Marvin Jakwerth
Mit freundlicher Unterstützung von
Projektstudium Chipkarten SS 2001Authenticate & PIN
GliederungGliederungGruppe PINMethodenFazit Die Gruppe Authenticate & PIN
Unsere Methoden
Was uns am Projekt Chipkarten gefallen hat.
Probleme / Verbesserungsmöglichkeiten
Projektstudium Chipkarten SS 2001Authenticate & PIN
GliederungGruppe PINL ÜbersichtL AufgabenMethodenFazit
Oncard Offcard
Gruppenübersicht
Sign PIN Schlüssel
Class Applet
Treiber
Sign PIN
Tester
APDU
Tester
Schlüssel
Projektstudium Chipkarten SS 2001Authenticate & PIN
GliederungGruppe PINL ÜbersichtL AufgabenMethodenFazit
Aufgaben der Gruppe Authenticate & PIN
Verifizieren der PIN
Wechselseitige Authentifizierung . zwischen Terminal und Chipkarte Evtl. Änderung der PIN
Evtl. Block/Unblock der Karte
Laden der PIN auf die Karte
Projektstudium Chipkarten SS 2001Authenticate & PIN
Methodenübersicht
public void MutualAuthenticate(byte[] buffer)
public void VerifyPIN(byte[] buffer)
public void ChangePIN(byte[] buffer)
public void Unblock(byte[] buffer)
GliederungGruppe PINMethodenL ÜbersichtL VerifyPINL ChangePINFazit
Projektstudium Chipkarten SS 2001Authenticate & PIN
GliederungGruppe PINMethodenL ÜbersichtL VerifyPINL ChangePINFazit
VerifyPIN()
Karte gesperrt?
Funktion wird aufgerufen
FBZ>0
Response APDU0x1202
ja
PIN prüfen
ja
Response APDU0x9000
Richtig FBZ = 3;ja
FBZ--;
nein
Karte sperrennein
Response APDU0x1201
nein
Projektstudium Chipkarten SS 2001Authenticate & PIN
Error Codes und APDU der Methode
private VerifyPIN()
GliederungGruppe PINMethodenL ÜbersichtL VerifyPINL ChangePINFazit
Projektstudium Chipkarten SS 2001Authenticate & PIN
GliederungGruppe PINMethodenL ÜbersichtL VerifyPIN L ChangePINFazit
PIN korrekt?Eingabe alte PIN
Aufruf der Funktion
ChangePIN
Aufruf VerifyPIN
Returncode 9000
Neue PIN korrekt?Eingabe neue PIN
Ja
Speicher der neuen PIN
Ja
Fehlercode Falsche PIN
Nein
FehlercodeNein
ChangePIN
Projektstudium Chipkarten SS 2001Authenticate & PIN
Error Codes und APDU der Methode
private ChangePIN()
GliederungGruppe PINMethodenL ÜbersichtL VerifyPIN L ChangePINFazit
Projektstudium Chipkarten SS 2001Authenticate & PIN
GliederungGruppe PINMethodenFazit
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 2001Authenticate & PIN
Probleme die während des Projekts aufgetreten sind:
Verbesserungsmöglichkeiten:
GliederungGruppe PINMethodenFazit
Alle Dateien an zentralem Ort speichern
Abhängigkeiten zu anderen Gruppen
Absprache mit anderen Gruppen schwierig
FH MünchenFB 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
Mit freundlicher Unterstützung von
Projektstudium Chipkarten SS 2001Authenticate und PIN (PC)
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)
4. Schritt: Änderung der PIN (Funktion ChangePIN)
b) Prüfung nicht erfolgreich: Neueingabe (falls 3-mal Falscheingabe wird Karte blockiert)
Projektstudium Chipkarten SS 2001Titel
Mutual Authentification
Funktionsaufruf mutualAuth() Erstellen APDU und senden an Karte
Terminal nicht O.K.
Programm-abbruch
Response 0x1102
Successfully Processed
Response 0x9000
Korrekte AuthentificationProgramm-
abbruch
Response 0x1101
Karte nicht O.K.
Projektstudium Chipkarten SS 2001Authenticate und PIN (PC)
sendPIN
Funktionsaufruf sendPIN( )
Programm-abbruch Response intern
Falsches PIN-Format
Richtiges PIN-Format
Erstellen / Senden APDU „Verify PIN“
Richtige PIN
Programmabbruch Response 0x1202
Karte gesperrtFalsche PIN
Programm-abbruch
Response 0x1201
Successfully Processed
Response 0x9000
Projektstudium Chipkarten SS 2001Authenticate und PIN (PC)
ChangePIN
Funktions-aufruf changePIN( )
Programmabbruch
Response 0x1301
Successfully
Processed
Response 0x9000
Falsche PIN
PIN geändert
Programmabbruch
Response 0x1302
Neue PIN- unzulässiger Wert
Karte gesperrt Programm-
abbruch
Response 0x1303
Erstellen/Senden APDU mit alter/neuer PIN
Projektstudium Chipkarten SS 2001Authenticate und PIN (PC)
FH MünchenFB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Gruppe Sign(PC+Karte
)
Mit freundlicher Unterstützung von
Projektstudium Chipkarten SS 2001 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
Unser Gruppe setzt sich zusammen aus:
Sign ( PC ):
Pointer Josef, Schmid Claudia, Cimpa Barbara, Ostheimer Heribert, Divjak-Bošnjak Tatjana
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
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001 Sign(PC+Karte)
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Warum wurde Java für ChipCard verwendet
auf der Kartenseite von G&D bereits verwendet(Applets)
moderne, zukünftige Programmiersprache
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Java Swingklassen, was ist dasJava Look and feel
Java Schichtenmodell
Java Ereignis(Event) Steuerung
Notation für Klassen, Datenelemente, Methoden
Unterschiede Java C++
Grundlagen der JAVA Programmierung
Projektstudium Chipkarten SS 2001
Swingklassen in Java
Was ist Swíng HW unabhängig
Die am Bildschirm dargestellten Komponenten, Fensterverhalten 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 FeelWindowsMetalMotiv
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Screenshot unseres Programms im„Windows“ Look and feel
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Screenshot unseres Programms im„Metal“ Look and feel
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Screenshot unseres Programms im„Motiv“ Look and feel
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Java Swing, Schichtenmodell
Pro Layer bis zu 100 Frames
Sicherstellung daß kein Frame einen anderen verdeckt
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Ereignis(Event) Modell von Java
Trennung des Code
Code zur Ereignissteuerung
Code für das eigentliche Programm
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Notation für Klassen, Datenelemente,Methoden
Klassen: beginnend mit einem GroßbuchstabenDatenelemente: beginnend mit einem KleinbuchstabenMethoden: beginnend mit einem Kleinbuchstaben
Notation: ungarische Notation
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen
Aufgaben mit
Beispielen
•Sign(Karte)
•Fragen
Unterschiede Java und C++
Java verwendet keine Zeiger
Java verwendet keine Templates
Java läßt nur einfache Vererbung zu
Java ist rein Objekt orientiert
Java läuft unabhängig vom Betriebssystem
Projektstudium Chipkarten SS 2001
Welcome
Senden Empfangen
Menü
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Grobstruktur
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Willkommensbildschirm:
Menü:
Abfrage: ist CK vorhanden
Hilfe
•Karte authentifizieren
•HilfeFehlermeldung
PIN-Gruppe: PIN-Abfrage + Fehlermeldungen
E = Exception
E
E
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Menü:
Senden
Text in Textfeld eingeben (=Zu signierender Text)
Button „Versenden“
Hash-Wert berechnen und an Karte zum signieren schicken
E
Prüfung: Textfeld gefüllt
Signieren und zurückschicken (von Sign Karte)
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Datei einlesen
Hash‘-Wert berechnen
Return von CK
Empfangen
Hash‘, Schlüsselnr, Signatur an CK
Code == 9000 Dok. integer Code != 9000 Dok. Nicht integer
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
• Warum Hash-Berechnung?
• Sicherer Hash-Algorithmus MD5
• APDU-Aufbau
• Return-Codes
Hash-Berechnung
Projektstudium Chipkarten SS 2001
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
16 * 32-Bit-Blöcke
32 Bit128-Bit-Hash
512 Bit 512 Bit
32 Bit
32 Bit
......
Funktionen
Nachricht - Eingabetext
Umwandlung
32 Bit 32 Bit 32 Bit
Hash-Berechnung
Projektstudium Chipkarten SS 2001
Negatives:
• Klassen nicht vorhanden
• Treiber nicht einzubinden
Positives:
•Projektstudium mit renommierter Firma
•Interessante/wichtige Technologie
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
Erfahrungen
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
ChipCard Terminal
Doc | S
S = enc [Hash(doc), PrivKey] Computation of Hash(doc)
Signature S
Hash(doc), KeyID
APDU
Projektstudium Chipkarten SS 2001
Projektstudium Chipkarten SS 2001
z1
z0
z2
z f
q
z f
q
z f
q
q
z3
get.PrivateKey
set.Key
'ok'
'ok'
'fail'
'fail'
sign'fail'
'ok'
Sign
Projektstudium Chipkarten SS 2001
Verify Signature
ChipCard Terminal
Doc | S
Hash* = Hash(doc) ?
Response
S, Hash(doc), KeyID
APDU
Hash* = dec(S, PubKey)
Projektstudium Chipkarten SS 2001
Projektstudium Chipkarten SS 2001
z4
z1
z0
q
z2
q
z f
q
z3
z f
q
get.PublicKey
set.Key
verify
'ok'
'fail'
'fail'
'signatur ok'
'ok'
'signatur NOT ok'
Verify
Projektstudium Chipkarten SS 2001
Ihre Fragen bitte !
Vielen Dank für Ihre Aufmerksamkeit
•Einleitung
•JAVA
•Erklärung der
einzelnen Aufgaben
mit Beispielen
•Sign(Karte)
•Fragen
FH MünchenFB 07 Informatik/Mathematik
Projektstudium Chipkarten
SS 2001
Qualitätssicherung
Koerner Constanze
Fleischhut OliverBeese Stefan
Hüttlinger MartinFrers Michael
Mit freundlicher Unterstützung von
Projektstudium Chipkarten SS 2001Qualitätssicherung
VerifikationSpezifikationen ü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 2001Qualitätssicherung
ValidierenCode und Spezifikation überprüfen
1. Einfache Methoden
2. Integrationen
3. Komplexe Funktionen
4. gesamtes System
Projektstudium Chipkarten SS 2001Qualitätssicherung
Dies ist keine vollständige Spezifikation!!!
Projektstudium Chipkarten SS 2001Qualitätssicherung
Willkommensbildschirm:
Menü:
Abfrage: ist CK vorhanden
Hilfe
•Karte authentifizieren
•Hilfe
Fehlermeldung
PIN-Gruppe: PIN-Abfrage + Fehlermeldungen
Menü:
Senden Empfangen
Text in Textfeld eingeben (=Zu signierender Text)
Prüfung: Textfeld gefüllt
Button „Versenden“
Signieren und speichern
Logout, Daten löschen
Datei einlesen
Hash-Wert berechnen
Hash, Schlüsselnr, Signatur an CK
Return von CK
Code != 9000 Dok. Nicht integerCode == 9000 Dok. integer
Beispiel für ein gutes Ablaufdiagramm
Projektstudium Chipkarten SS 2001Qualitätssicherung
Beispiele für Testcases
Bad case
Falsche Länge bei Change_PIN
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
Good case
Pin ändern
authenticate b0 11 00 00 00 00
pin_richtig b0 12 00 00 02 1111 00
change_pin b0 13 00 00 04 1111 2222 00
Erwateter Wert: 0x9000 Successful processing