X-Git-Url: https://hackdaworld.org/gitweb/?p=lectures%2Flatex.git;a=blobdiff_plain;f=rfid%2Frfid_talk_g.tex;h=1f6d754b3aaa6e92dd705f533e782cb354ebd59e;hp=be8f2ce393bab0e98600f835ecebb5340c70f01a;hb=1960232a01eaae001b9b3da1f96d12f3927894c8;hpb=00a2c08f41cdcbe59eff8e932106357c4663e43a diff --git a/rfid/rfid_talk_g.tex b/rfid/rfid_talk_g.tex index be8f2ce..1f6d754 100644 --- a/rfid/rfid_talk_g.tex +++ b/rfid/rfid_talk_g.tex @@ -52,19 +52,22 @@ \subsection{Was sind Smartcards} \begin{frame} - \frametitle{Einf"uhrung: Smartcard} - + \frametitle{Smartcard Einf"uhrung} \begin{block}{Aufbau / Bestandteile} \begin{itemize} \item Plastikkarte mit eingebautem Mikrochip\\ - (Integrated Circuit Card) + {\bf I}ntegrated {\bf C}ircuit {\bf C}ard (ICC) \begin{itemize} - \item Speicher (ROM, EEPROM, RAM) \item Hardwarelogik oder Mikroprozessor + \item Speicher (ROM, EEPROM, RAM) \end{itemize} \item Ein/Ausgabeschnittstelle \end{itemize} \end{block} +\end{frame} + +\begin{frame} + \frametitle{Smartcard Einf"uhrung} \begin{block}{Anwendung} \begin{itemize} \item (automatische) Identifikation @@ -105,28 +108,43 @@ \begin{frame} \frametitle{kontaktbehaftete Chipkarten} \framesubtitle{ISO/IEC 7816 - Standard der kontaktbehafteten Chipkarten} - \begin{enumerate} - \item Physikalische Eigenschaften - \pause - \item Abmessungen und Lokalisierung der Kontakte - \pause - \item Elektrische Eigenschaften und "Ubertragungsprotokolle:\\ - \begin{itemize} - \item elektr. Signalbeschreibung - \item Strom- und Spannungswerte - \item Betriebsablauf der ICCs - \item {\bf A}nswer {\bf T}o {\bf R}equest (ATR) - \end{itemize} - \pause - \item Definition interindustrieller Kommandos:\\ - (Schnittstelle zur Anwendung) - \begin{itemize} - \item Nachrichten, Kommandos, Antworten (insbesondere ATR) - \item Struktur der Daten/Dateien - \item Zugriff auf Dateien/Daten/Algorithmen - \item S/M Methoden (Secure Messaging) - \end{itemize} - \end{enumerate} + \begin{block}{ISO 7816-1: Physikalische Eigenschaften} + mechanische, elektrische und magnetische Belastbarkeit + \end{block} + \begin{block}{ISO7816-2: Abmessungen und Lokalisierung der Kontakte} + \begin{itemize} + \item Gr"osse der Kontakte + \item Kontaktpositionen + \item Kontaktbelegung + \end{itemize} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{ISO/IEC 7816 - Standard der kontaktbehafteten Chipkarten} + \begin{block}{ISO 7816-3: Elektrische Eigenschaften und "Ubertragungsprotokolle} + \begin{itemize} + \item elektr. Signalbeschreibung + \item Strom- und Spannungswerte + \item Betriebsablauf der ICCs + \item {\bf A}nswer {\bf T}o {\bf R}eset (ATR) + \end{itemize} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{ISO/IEC 7816 - Standard der kontaktbehafteten Chipkarten} + \begin{block}{ISO 7816-4: Definition interindustrieller Kommandos} + \begin{itemize} + \item stellt Schnittstelle zur Anwendung dar + \item Nachrichten, Kommandos, Antworten (insbesondere ATR) + \item Struktur der Daten/Dateien + \item Zugriff auf Dateien/Daten/Algorithmen + \item S/M Methoden (Secure Messaging) + \end{itemize} + \end{block} \end{frame} \begin{frame} @@ -139,17 +157,11 @@ \end{center} \column{6cm} \begin{itemize} - \pause \item VCC: Versorgungsspannung - \pause \item RST: Reset - \pause \item CLK: Clock / Taktgeber - \pause \item GND: Ground - \pause \item VPP: Programmierspannung - \pause \item I/O: Input / Output \end{itemize} \end{columns} @@ -173,13 +185,15 @@ \frametitle{kontaktbehaftete Chipkarten} \framesubtitle{Kontakte der Chipkarte (ISO 7816-2/3)} \begin{block}{VPP} - L"osch- bzw. Programmierspannung f"ur den internen nicht fl"uchtigen Speichers (EEPROM) + L"osch- bzw. Programmierspannung f"ur den internen nicht fl"uchtigen Speicher (EEPROM) + \begin{itemize} + \item Programmiermodus: 'active state' + \item Nicht-Programmiermodus: 'passive state' + \end{itemize} \end{block} - \pause \begin{block}{CLK} \begin{itemize} \item Taktgeber f"ur den Mikrochip - \pause \item 2 Frequenzen: \begin{itemize} \item $f_i$, (initial freq.) w"ahrend Antwort auf Reset @@ -189,6 +203,466 @@ \end{block} \end{frame} +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Kontakte der Chipkarte (ISO 7816-2/3)} + \begin{block}{RST} + Zur"ucksetzen des {\bf P}rogram {\bf C}ounters (PC) + \end{block} + \begin{block}{VCC} + Versorgungsspannung des Mikrochips + \end{block} + \begin{block}{GND} + gemeinsame R"uckleitung, definiert das Nullpotential der Schaltung + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + \begin{block}{Ablaufschema} + \begin{enumerate} + \item Aktivierung der Kontakte durch das Terminal + \item Reset der Karte durch das Terminal + \item ATR der Karte + \item Abfolge von Datentransferen zwischen Karte und Terminal + \item Deaktivierung der Kontakte durch das Terminal + \end{enumerate} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + \onslide<1->{Aktivierung der Kontakte} + \onslide<7->{/ Reset / ATR} + \begin{columns} + \column{6cm} + \begin{pgfpicture}{0cm}{0cm}{6cm}{6cm} + % print contacts + \onslide<1->{ + \pgfputat{\pgfxy(0,5)}{\pgfbox[left,base]{RST}} + \pgfputat{\pgfxy(0,4)}{\pgfbox[left,base]{VCC}} + \pgfputat{\pgfxy(0,3)}{\pgfbox[left,base]{VPP}} + \pgfputat{\pgfxy(0,2)}{\pgfbox[left,base]{CLK}} + \pgfputat{\pgfxy(0,1)}{\pgfbox[left,base]{$I/O_{sync}$}} + \pgfputat{\pgfxy(0,0)}{\pgfbox[left,base]{$I/O_{async}$}} + } + % rst low + \onslide<2->{ + \pgfmoveto{\pgfxy(1.6,5)} + \pgflineto{\pgfxy(2,5)} + \pgfstroke + \pgfmoveto{\pgfxy(1.6,4)} + \pgflineto{\pgfxy(2,4)} + \pgfstroke + \pgfmoveto{\pgfxy(1.6,3)} + \pgflineto{\pgfxy(2,3)} + \pgfstroke + \pgfmoveto{\pgfxy(1.6,2)} + \pgflineto{\pgfxy(2,2)} + \pgfstroke + \pgfmoveto{\pgfxy(1.6,1)} + \pgflineto{\pgfxy(2,1)} + \pgfstroke + \pgfmoveto{\pgfxy(1.6,0)} + \pgflineto{\pgfxy(2,0)} + \pgfstroke + } + % rst low & vcc high + \onslide<3->{ + \pgfmoveto{\pgfxy(2,5)} + \pgflineto{\pgfxy(2.5,5)} + \pgfstroke + + \pgfmoveto{\pgfxy(2,4)} + \pgflineto{\pgfxy(2,4.5)} + \pgflineto{\pgfxy(2.5,4.5)} + \pgfstroke + + \pgfmoveto{\pgfxy(2,3)} + \pgflineto{\pgfxy(2.5,3)} + \pgfstroke + \pgfmoveto{\pgfxy(2,2)} + \pgflineto{\pgfxy(2.5,2)} + \pgfstroke + \pgfmoveto{\pgfxy(2,1)} + \pgflineto{\pgfxy(2.5,1)} + \pgfstroke + \pgfmoveto{\pgfxy(2,0)} + \pgflineto{\pgfxy(2.5,0)} + \pgfstroke + } + % rst low & vcc high & i/o high + \onslide<4->{ + \pgfmoveto{\pgfxy(2.5,5)} + \pgflineto{\pgfxy(3,5)} + \pgfstroke + \pgfmoveto{\pgfxy(2.5,4.5)} + \pgflineto{\pgfxy(3,4.5)} + \pgfstroke + \pgfmoveto{\pgfxy(2.5,3)} + \pgflineto{\pgfxy(3,3)} + \pgfstroke + \pgfmoveto{\pgfxy(2.5,2)} + \pgflineto{\pgfxy(3,2)} + \pgfstroke + + \pgfmoveto{\pgfxy(2.5,1)} + \pgflineto{\pgfxy(2.5,1.5)} + \pgflineto{\pgfxy(3,1.5)} + \pgfstroke + \pgfmoveto{\pgfxy(2.5,0)} + \pgflineto{\pgfxy(2.5,0.5)} + \pgflineto{\pgfxy(3,0.5)} + \pgfstroke + } + % rst low & vcc high & i/o high & vpp high + \onslide<5->{ + \pgfmoveto{\pgfxy(3,5)} + \pgflineto{\pgfxy(3.5,5)} + \pgfstroke + \pgfmoveto{\pgfxy(3,4.5)} + \pgflineto{\pgfxy(3.5,4.5)} + \pgfstroke + + \pgfmoveto{\pgfxy(3,3)} + \pgflineto{\pgfxy(3,3.5)} + \pgflineto{\pgfxy(3.5,3.5)} + \pgfstroke + + \pgfmoveto{\pgfxy(3,2)} + \pgflineto{\pgfxy(3.5,2)} + \pgfstroke + \pgfmoveto{\pgfxy(3,1.5)} + \pgflineto{\pgfxy(3.5,1.5)} + \pgfstroke + \pgfmoveto{\pgfxy(3,0.5)} + \pgflineto{\pgfxy(3.5,0.5)} + \pgfstroke + } + % rst low & vcc high & i/o high & vpp high & activate clock + \onslide<6->{ + \pgfmoveto{\pgfxy(3.5,5)} + \pgflineto{\pgfxy(4,5)} + \pgfstroke + \pgfmoveto{\pgfxy(3.5,4.5)} + \pgflineto{\pgfxy(4,4.5)} + \pgfstroke + \pgfmoveto{\pgfxy(3.5,3.5)} + \pgflineto{\pgfxy(4,3.5)} + \pgfstroke + + \pgfrect[fill]{\pgfxy(3.5,2)}{\pgfxy(0.5,0.5)} + + \pgfmoveto{\pgfxy(3.5,1.5)} + \pgflineto{\pgfxy(4,1.5)} + \pgfstroke + \pgfmoveto{\pgfxy(3.5,0.5)} + \pgflineto{\pgfxy(4,0.5)} + \pgfstroke + } + % rst low & vcc high & i/o high & vpp high & activate clock + % reset & io_sync atr + \onslide<7->{ + \pgfmoveto{\pgfxy(4,5)} + \pgflineto{\pgfxy(4,5.5)} + \pgflineto{\pgfxy(4.5,5.5)} + \pgfstroke + + \pgfmoveto{\pgfxy(4,4.5)} + \pgflineto{\pgfxy(4.5,4.5)} + \pgfstroke + \pgfmoveto{\pgfxy(4,3.5)} + \pgflineto{\pgfxy(4.5,3.5)} + \pgfstroke + \pgfrect[fill]{\pgfxy(4,2)}{\pgfxy(0.5,0.5)} + \pgfmoveto{\pgfxy(4,1.5)} + \pgflineto{\pgfxy(4.5,1.5)} + \pgfstroke + + \color{blue} + \pgfrect[fill]{\pgfxy(4,1)}{\pgfxy(0.5,0.5)} + \color{black} + + \pgfmoveto{\pgfxy(4,0.5)} + \pgflineto{\pgfxy(4.5,0.5)} + \pgfstroke + } + % rst low & vcc high & i/o high & vpp high & activate clock + % reset & io_sync atr & io_async atr + \onslide<8->{ + \pgfmoveto{\pgfxy(4.5,5.5)} + \pgflineto{\pgfxy(6,5.5)} + \pgfstroke + + \pgfmoveto{\pgfxy(4.5,4.5)} + \pgflineto{\pgfxy(6,4.5)} + \pgfstroke + \pgfmoveto{\pgfxy(4.5,3.5)} + \pgflineto{\pgfxy(6,3.5)} + \pgfstroke + \pgfrect[fill]{\pgfxy(4.5,2)}{\pgfxy(1.5,0.5)} + \pgfmoveto{\pgfxy(4.5,1.5)} + \pgflineto{\pgfxy(6,1.5)} + \pgfstroke + + \color{blue} + \pgfrect[fill]{\pgfxy(4.5,1)}{\pgfxy(1.5,0.5)} + \color{red} + \pgfrect[fill]{\pgfxy(4.5,0)}{\pgfxy(1.5,0.5)} + \color{black} + } + \end{pgfpicture} + \column{6cm} + \begin{enumerate} + \pause + \item RST auf 'low state' + \pause + \item VCC anlegen + \pause + \item I/O auf 'high state' + \pause + \item VPP 'idle state' anlegen + \pause + \item CLK anlegen + \pause + \item RST auf 'high state'\\ + ATR auf $I/O_{sync}$ + \pause + \item ATR auf $I/O_{async}$ + \end{enumerate} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + {\bf A}nswer {\bf T}o {\bf R}equest + \begin{block}{Asynchrone "Ubertragung} + \begin{itemize} + \item Zeichen"ubertragung "uber den I/O-Kontakt + \item Zeichen $\equiv$ 1 Byte (8 Bit) + \end{itemize} + \end{block} + \begin{block}{Synchrone "Ubertragung} + \begin{itemize} + \item "Ubertragung einer Serie von Bits via I/O + \item Synchron mit CLK-Signal + \end{itemize} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei asynchroner "Ubertragung: Bit-Dauer + \begin{definition} + Die Zeitdauer f"ur die Darstellung eines Bits am I/O-Kontakt ist definiert als $1 \, etu$ + ({\bf e}lementary {\bf t}ime {\bf u}nit). + \end{definition} + \begin{itemize} + \item Karten mit interner CLK:\\ + $1 \, etu = 1/9600 \, s$ + \item Karten mit externer CLK:\\ + $1 etu = \frac{372}{f_i}$ ($1 \, MHz < f_i < 5 \, MHz$)\\ + Bsp.: $f_i = 3.5712 \, MHz \Rightarrow$ 9600 baud + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + \begin{block}{Aufbau eines Zeichens} + \begin{itemize} + \item Startbit im 'low state' + \item 8 Datenbits ($b_0$ bis $b_7$)\\ + \begin{itemize} + \item 'direct convention': $b_0$ (LSB) ... $b_7$ (MSB)\\ + 'low state' $\equiv$ 0, 'high state' $\equiv 1$ + \item 'inverse convention': $b_0$ (MSB) ... $b_7$ (LSB)\\ + 'low state' $\equiv$ 1, 'high state' $\equiv 0$ + \end{itemize} + \item Parit"atsbit $b_p$ (gerade Anzahl von Einsen in $b_0, \ldots,b_7,b_p$) + \end{itemize} + \end{block} + \begin{center} + \includegraphics[width=11cm]{char-frame.eps} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + \begin{block}{ATR bei asynchroner "Ubertragung: Struktur und Inhalt} + \begin{tabular}{|l|l|l|} + \hline + 1 & 'initial character' & $T_s$ \\ + \hline + 2 & 'format character' & $T_0$ \\ + \hline + 3 & 'interface characters' & $TA_i,TB_i,TC_i,TD_i$ \\ + \hline + 4 & 'historical characters' & $T_1,\ldots,T_k$ \\ + \hline + 5 & 'check character' & $T_{ck}$ \\ + \hline + \end{tabular} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei asynchroner "Ubertragung: 'initial character' $T_s$ + \begin{block}{'direct convention'} + \includegraphics[width=11cm]{direct-conv.eps} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei asynchroner "Ubertragung: 'initial character' $T_s$ + \begin{block}{'inverse convention'} + \includegraphics[width=11cm]{inverse-conv.eps} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei asynchroner "Ubertragung: 'format character' $T_0$ + \begin{block}{MS Halfbyte - Vorhandensein von 'interface characters'} + \begin{tabular}{|l|l|} + \hline + $T_0[4]$ & $TA_1$ wird gesendet \\ + \hline + $T_0[5]$ & $TB_1$ wird gesendet \\ + \hline + $T_0[6]$ & $TC_1$ wird gesendet \\ + \hline + $T_0[7]$ & $TD_1$ wird gesendet \\ + \hline + \end{tabular} + \end{block} + \begin{block}{LS Halfbyte - 'historical characters'} + Anzahl der 'historical characters': $0000_2 - 1111_2 \, (0-15)$ + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei asynchroner "Ubertragung: 'interface characters' + \begin{block}{MS Halfbyte von $TD_i$} + \begin{tabular}{|l|l|} + \hline + $TD_i[4]$ & $TA_{i+1}$ wird gesendet \\ + \hline + $TD_i[5]$ & $TB_{i+1}$ wird gesendet \\ + \hline + $TD_i[6]$ & $TC_{i+1}$ wird gesendet \\ + \hline + $TD_i[7]$ & $TD_{i+1}$ wird gesendet \\ + \hline + \end{tabular} + wobei $TD_0 \equiv T_0$ + \end{block} + \begin{block}{LS Halfbyte von $TD_i$} + Protokolltyp: $0000_2 - 1111_2 \, (0-15)$ + \end{block} + $TA_i,TB_i,TC_i$: Protokollparameter +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + %ATR bei asynchroner "Ubertragung: 'interface characters' + \begin{block}{Protokolltypen ($TD_1$)} + \begin{itemize} + \item $T=0$ asynchrones, halbduplex Zeichen-"Ubertragungsprotokoll + \item $T=1$ asynchrones, halbduplex Block-"Ubertragungsprotokoll + \item $T=2-15$ reserviert f"ur zuk"unftige Standardisierungen + \end{itemize} + \end{block} + \begin{block}{Protokollparameter ($TA_i,TB_i,TC_i$)} + \begin{columns} + \column{5cm} + \begin{itemize} + \item Frequenz und Bit-Dauer + \item extra Guardtime + \item Zeichen/Block Wartezeit + \item T=1 Fehlererkennung durch LRC bzw. CRC + \end{itemize} + \column{5cm} + \begin{itemize} + \item L"ange eines T=1 Block Informationsfeldes + \item Programmierspannung und Strom + \end{itemize} + \end{columns} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei asynchroner "Ubertragung: 'historical \& check characters' + \begin{block}{'historical characters' - Information "uber} + \begin{itemize} + \item Hersteller der Karte + \item verwendeter Chip + \item ROM im Chip + \item Herstellungsdatum(?) + \end{itemize} + \end{block} + \begin{block}{'check character' $T_{ck}$} + \begin{itemize} + \item $T_1$ xor $T_2$ xor $\ldots$ xor $T_{ck}$ $=$ $0$ + \item kein $T_{ck}$ f"ur Protokoll $T=0$ + \end{itemize} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei {\bf synchroner} "Ubertragung + + +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei {\bf synchroner} "Ubertragung + + +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + ATR bei {\bf synchroner} "Ubertragung + + +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + Auswahl des "Ubertragungsprotokolls + + +\end{frame} + +\begin{frame} + \frametitle{kontaktbehaftete Chipkarten} + \framesubtitle{Betriebsablauf (ISO 7816-3)} + Protokolltyp $T=0$ - asynchrone halbduplex "Ubertragung + +\end{frame} + \subsection{Kontaktlose Chipkarten / RFID} \begin{frame}