ChipTAN: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 9: Line 9:


== Asychronous Character Transfer ==
== Asychronous Character Transfer ==
Die elementare Übertragungseinheit ist ein Character.

* 1 Byte wird mit 10 Bit übertragen
* 1 Byte wird mit 10 Bit übertragen
* 1. Bit = Startbit
* 1. Bit = Startbit
* 2.-9. Bit = Daten
* 2.-9. Bit = Daten
* 10. Bit = Paritybit
* 10. Bit = Paritybit

Zwischen der Übertragung zweier Bytes wird eine vorher ausgehandelte Zeit gewartet (I/O Kanal auf High gesetzt) um der Gegenseite die möglichkeit zu geben
Zwischen der Übertragung zweier Bytes wird eine vorher ausgehandelte Zeit gewartet (I/O Kanal auf High gesetzt) um der Gegenseite die möglichkeit zu geben
das letzte Byte nochmal anzufordern (falls Paritybit falsch war).
das letzte Byte nochmal anzufordern (falls Paritybit falsch war).
Line 28: Line 31:
*2. Byte ('''T0''') gibt Anzahl der nachfolgenden Interface Character (TA,TB,TC,TD) und Anzahl der Historical Characters an
*2. Byte ('''T0''') gibt Anzahl der nachfolgenden Interface Character (TA,TB,TC,TD) und Anzahl der Historical Characters an
*3. Byte ('''TA1''') codiert Übertragungsfrequenz und Teiler die die Karte maximal unterstützt
*3. Byte ('''TA1''') codiert Übertragungsfrequenz und Teiler die die Karte maximal unterstützt
*'''TA,TB,TC'''-Bytes enthalten Informationen über die Fähigkeiten der Karte in Abhängigkeit vom jeweiligen Übertragungsprotokoll (unterstützte Frequenzen etc.)
*'''TAi,TBi,TCi'''-Bytes enthalten Informationen über die Fähigkeiten der Karte in Abhängigkeit vom jeweiligen Übertragungsprotokoll (unterstützte Frequenzen etc.)
*'''TD'''-Bytes geben an ob und welche TA,TB,TC,TD im Anschluß gesendet werden (verkettung möglich), das Übertragungsprotokoll wird auch angegeben (in 0x08)
*'''TDi'''-Bytes geben an ob und welche TA,TB,TC,TD im Anschluß gesendet werden (verkettung möglich), das Übertragungsprotokoll wird auch angegeben (in 0x08)
Im Anschluss an die '''TA,TB,TC,TD'''-Bytes folgen die historical Character und ein Checksummen-Byte TCK (XOR-Prüfsumme von T0 bis zum Byte vor TCK)
Im Anschluss an die '''TA,TB,TC,TD'''-Bytes folgen die historical Character und ein Checksummen-Byte TCK (XOR-Prüfsumme von T0 bis zum Byte vor TCK)


Line 42: Line 45:
*letztes Byte '''PCK''' XOR-Prüfsumme ab '''PPSS'''
*letztes Byte '''PCK''' XOR-Prüfsumme ab '''PPSS'''


Das Terminal schickt an die Karte eine solche PPS Datenstruktur. Zur Bestätigung schickt die Karte die gleiche PPS Datenstruktur zurück.
== Übertragungsprotokoll T=1 ==
Bei der Kommunikation zwischen Chipkarte und ChipTAN-Generator fand das Blockprotokoll T=1 Verwendung.
Es handelt sich um ein asynchrones Halbduplexprotokoll welches als kleineste Dateneinheit Blöcke überträgt.
=== Blöcke ===
=== Blöcke ===
*Aufbau eines Blocks

[[Image:Block.png|800x220px|Aufbau eines T=1 Übertragungsblocks]]
* Block Typen
**Informationsblöcke (I-Block)
***Austausch von Daten/Kommandos
**Empfangsbestätigungsblöcke (R-Block)
***enthalten kein Informationsfeld
***dienen zur positiven/negativen Empfangsbestätigung
**Systemblöcke (S-Block)
***Modifikation von protokollspezifischen Steuerinformationen





Revision as of 12:12, 1 October 2012

Ziel

  • Analyse der Kommunikation zwischen Karte und Terminal
  • Untersuchung einer möglichen Softwareemulation des ChipTAN-Generators

Herangehensweise

  • >hier Bild vom Aufbau<
  • Beschreibung des Aufbaus
  • wie wollten wir das ganze machen also seriell zu byte mit dem plugin vom logic analyzer etc.

Asychronous Character Transfer

Die elementare Übertragungseinheit ist ein Character.

  • 1 Byte wird mit 10 Bit übertragen
  • 1. Bit = Startbit
  • 2.-9. Bit = Daten
  • 10. Bit = Paritybit

Zwischen der Übertragung zweier Bytes wird eine vorher ausgehandelte Zeit gewartet (I/O Kanal auf High gesetzt) um der Gegenseite die möglichkeit zu geben das letzte Byte nochmal anzufordern (falls Paritybit falsch war). Wählt man die ersten fallende Flanke des I/O Kanals nach dem schalten des Reset-Signals auf High als Startpunkt kann man somit direkt Bytesvom I/O-Kanal ablesen.

Analyse des Bytestroms

Bei Inbetriebnahme einer Chipkarte wird diese durch das Terminal mit Strom und einem Takt versorgt. Als erstes setzt das Terminal den Reset-Kanal auf High, woraufhin die Chipkarte das Senden einer ATR("Answer To Reset") beginnt.

ATR

  • max. 33 Byte lang
  • 1. Byte (TS) gibt Coding Convention an
    • Wert '3B' = Startbit = 0 Daten= °1101 1100° Parity = 1 -> direct convention (least significant bit -> most significant bit)
    • Wert '3F' = Startbit = 0 Daten= °0011 1111° Parity = 1 -> inverse convention (most significant bit -> least significant bit)
  • 2. Byte (T0) gibt Anzahl der nachfolgenden Interface Character (TA,TB,TC,TD) und Anzahl der Historical Characters an
  • 3. Byte (TA1) codiert Übertragungsfrequenz und Teiler die die Karte maximal unterstützt
  • TAi,TBi,TCi-Bytes enthalten Informationen über die Fähigkeiten der Karte in Abhängigkeit vom jeweiligen Übertragungsprotokoll (unterstützte Frequenzen etc.)
  • TDi-Bytes geben an ob und welche TA,TB,TC,TD im Anschluß gesendet werden (verkettung möglich), das Übertragungsprotokoll wird auch angegeben (in 0x08)

Im Anschluss an die TA,TB,TC,TD-Bytes folgen die historical Character und ein Checksummen-Byte TCK (XOR-Prüfsumme von T0 bis zum Byte vor TCK)

Die ATR enthält somit Informationen über die Karte (z.B. unterstützte Übertragungsprotokolle und Geschwindigkeiten etc.)

Protocol Parameter Selection (PPS)

Durch die übermittelte ATR und die darin enthaltenen Informationen über die Fähigkeiten der Karte hat das Terminal nun die Möglichkeit (optional) neue Übertragungsparameter auszuhandeln. Eine PPS ist optional und besteht mindestens aus 3 Byte und höchstrens aus 6 Byte.

  • 1. Byte PPSS = 0xFF
  • 2. Byte PPS0 codiert das zu verwendende Übertragungsprotokoll und die vorhandenen optionalen Parameter PPS1-3
  • 0-3 Byte Parameter PPS1-3
  • letztes Byte PCK XOR-Prüfsumme ab PPSS

Das Terminal schickt an die Karte eine solche PPS Datenstruktur. Zur Bestätigung schickt die Karte die gleiche PPS Datenstruktur zurück.

Übertragungsprotokoll T=1

Bei der Kommunikation zwischen Chipkarte und ChipTAN-Generator fand das Blockprotokoll T=1 Verwendung. Es handelt sich um ein asynchrones Halbduplexprotokoll welches als kleineste Dateneinheit Blöcke überträgt.

Blöcke

  • Aufbau eines Blocks

Aufbau eines T=1 Übertragungsblocks

  • Block Typen
    • Informationsblöcke (I-Block)
      • Austausch von Daten/Kommandos
    • Empfangsbestätigungsblöcke (R-Block)
      • enthalten kein Informationsfeld
      • dienen zur positiven/negativen Empfangsbestätigung
    • Systemblöcke (S-Block)
      • Modifikation von protokollspezifischen Steuerinformationen


Verwendete Hardware

Verwendete Software

Literatur

  • ISO/IEC 7816-3
  • Handbuch der Chipkarten