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