ChipTAN: Difference between revisions
No edit summary |
No edit summary |
||
Line 7: | Line 7: | ||
*Beschreibung des Aufbaus |
*Beschreibung des Aufbaus |
||
*wie wollten wir das ganze machen also seriell zu byte mit dem plugin vom logic analyzer etc. |
*wie wollten wir das ganze machen also seriell zu byte mit dem plugin vom logic analyzer etc. |
||
== Asychronous Character Transfer == |
== Asychronous Character Transfer == |
||
* 1 Byte wird mit 10 Bit übertragen |
* 1 Byte wird mit 10 Bit übertragen |
||
Line 17: | Line 18: | ||
== Analyse des Bytestroms == |
== 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. |
|||
⚫ | |||
*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 |
|||
*'''TA,TB,TC'''-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) |
|||
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 5 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''' |
|||
=== Blöcke === |
=== Blöcke === |
||
Line 33: | Line 55: | ||
== Literatur == |
== Literatur == |
||
*ISO 7816-3 |
*ISO/IEC 7816-3 |
||
*Handbuch der Chipkarten |
*Handbuch der Chipkarten |
Revision as of 11:20, 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
- 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
- TA,TB,TC-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)
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 5 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
Blöcke
Verwendete Hardware
- Smartcard-Adapter
- ChipTAN Generator & EC-Karte
- Logic Analyzer (http://www.saleae.com/logic)
Verwendete Software
- "Logic Software 1.1.15" + SDK (http://www.saleae.com/downloads)
Literatur
- ISO/IEC 7816-3
- Handbuch der Chipkarten