---------------------[ previous ]---[ index ]---[ next ]----------------------

==============================================================================
------------[ BFi numero 7, anno 2 - 25/12/1999 - file 17 di 22 ]-------------
==============================================================================


-[ PHREAKiNG ]----------------------------------------------------------------
---[ CARD, CARDiNG? NO! PARTE I - RigoR MorteM <rigormortem@spippolatori.com>


Prima di iniziare vorrei spendere un paio di byte per ringraziare tutti i
ragazzi che hanno scritto e che scrivono per questa rivista, stanno facendo
davvero molto per il panorama italiano, ed io, nel mio piccolo, sono 
compiaciuto di poter collaborare. 
Il mio contributo e' una piccola discussione sulle card, sia smart sia ID,
insomma, le card con i contatti dorati che tutti avete sicuramente gia' visto.
La ragione di questo articolo (al quale ne seguira' uno conclusivo) e' solo 
una: ora come ora ritengo molto importante conoscere il funzionamento delle
card per molti motivi, sia perche' bene o male abbiamo a che fare con loro 
tutti i giorni: i telefoni cellulari ed i bancomat ne sono un tipico esempio,
ma se spingiamo un pochino lontano lo sguardo vediamo gia' diversi prodotti
che usano una card (smart o meno) e che in un futuro non troppo distante 
potremo usare anche noi. Pensate un po' ai nuovi network pc della Sun che con
una smart card permettono di personalizzare il desktop e le applicazioni,
estrarre la card, spostarsi su un'altro network pc, inserire la card e
ritrovarsi il setup della macchina come si era impostato.
Tenendo presente che secondo un sondaggio compiuto da Frost & Sullivan nel
1996 c'erano gia' in giro circa 676 milioni di card (sia con memoria sia con 
microprocessore) direi che saperne qualcosa male non faccia...
Rispetto alla cifra citata di 676 milioni la suddivisione per tipologie e'
la seguente: 575 milioni le telefoniche normali, 15 milioni le GSM,
36 milioni quelle dedicate a servizi bancari, 30 milioni di tessere di
identificazione, 17 milioni di card per le paytv e 3.8 milioni di altre card.
Pensate un po' a che boom hanno avuto i cellulari ed i ricevitori di tv via
satellite dal 1996 ad oggi e tirate un po' voi le stime di quante card ci
siano in giro adesso.
Queste card sono spesso (e talvolta anche erroneamente) chiamate smart card,
ed io mi occupero' abbastanza diffusamente di loro e delle loro sorelle
chip card, con anche una panoramica sui vari metodi di connessioni fra le
card ed il lettore, non trascurando la reperibilita' di lettori da
autocostruirsi (ma questo alla prossima volta, ok?). 
La base per la comprensione del funzionamento delle card e' lo studio delle 
loro specifiche definite dall'ISO (http://www.iso.ch), che sono come le RFC 
di tutte le cose.
In particolare a noi interessano 3 documenti creati dall'ISO, ovvero i
numeri 7810, 7811 e 7816. Non provate a cercare questi testi, non sono di
libero download e costano pure un sacco di soldi... Siccome sono buono e vi
voglio pure far risparmiare dei soldini vi riassumero' a cosa servono questi 
standard, per poi spiegarvi come funziona dettagliatamente ed in pratica una 
card.
Bene, adesso pero' e' il momento di dare a Cesare quel che e' di Cesare,
ovvero i credits della struttura di questo articolo e di alcuni ASCII...
Infatti alcuni ASCII sono stati presi dal testo
'ISO7816 asynchronous smartcard information' di Stephane Bausson.
Ringrazio molto Stephane per aver permesso che il suo txt venisse usato come 
base per i miei studi e per averne permesso la traduzione e l'ampliamento 
(massiccio). Altre informazioni mi sono venute dal PDF distribuito dalla
Smart Card Industry Association (http://www.scia.org) e dalla ditta 
Gemplus (http://www.gemplus.com). Per il resto, beh, ho usato qualche mio neurone
superstite ed il cd 'Nativity in Black'...
Ok, si inizia!

ISO 7810

Tutte le informazioni relative alla dimensione fisica della card, come ho
gia' detto, sono contenute in questo documento. In specifico, le card per 
essere utilizzate in lettori standard devono essere delle seguenti misure:

lunghezza: 85.6 millimetri
larghezza: 54.5 millimetri
spessore:   0.8 millimetri

In piu' viene anche specificato che una card puo' avere tre dimensioni
ovvero ID-1 ID-2 ed ID-3. Sono nomi usati convenzionalmente, ma dal punto di
vista dello standard ISO la loro corretta definizione e' ID-1 ID-00 ed ID-000
e sono il classico gioco delle scatole cinesi, ovvero nella card ID-1 c'e' 
una card ID-00 ed una ID-000, nella ID-00 c'e' la card ID-000 e nella ID-000
c'e' solo pochissima plastica ed i contatti elettrici.
Vabbe', so che non sono il massimo nelle spiegazioni, quindi piccolo disegno 
e siamo a posto...

 +-----------------------------------------+
 ¦                           ¦             ¦
 ¦                           ¦             ¦
 ¦     +-----------+         ¦             ¦
 ¦     ¦           ¦         ¦             ¦
 ¦     ¦ ID-000    ¦         ¦             ¦
 ¦     +-----------+  ID-00  ¦             ¦
 +---------------------------+             ¦
 ¦                                         ¦
 ¦                                         ¦
 ¦                         ID-1            ¦
 +-----------------------------------------+

Tenete presente che le card nel formato ID-000 le ho anche viste integrate
in chiavi di plastica ed usate come 'gettone' di credito o di presenza.
In questo caso le card hanno 256 byte o al massimo 512 byte di EEPROM 
(Electrically Erasable Programmable Read-Only Memory). Il modello che ho
visto e' il DMK-CS della tedesca DataMega (http://www.datamega.com), se vi
incuriosisce ordinatevi i listini (in tedesco, lo so, ma sono gratis...).
Sono anche in commercio delle card vergini da 416 bit o da 2 Kbit sul sito 
della Futura Elettronica (http://www.futuranet.it) e costano 10.000 lire 
cadauna, codice d'ordine CPC416 per le prime, CPC2K per le seconde. 
Mediamente il costo di una chip card si aggira tra le 1.600 lire e le 20.000 
lire, tutto dipende dalla quantita' e dal tipo di chip a bordo. Tenete 
sopratutto presente che lo stock minimo solitamente e' di 1.000 card, 
se siete fortunati. Bene, adesso che sappiamo come sono fatte fuori, andiamo 
all'interno...
Come avrete intuito o sapete al disotto dei contatti dorati della card c'e' 
un circuito integrato che e' inglobato nella plastica della card e ci sono 
2 metodologie di inclusione. Sono conosciute con il nome di 'Wire Bonding' 
e di 'Tape Automatic Bonding'. Qui di seguito vi schematizzo la metodologia 
del 'Wire Bonding':

            contatti dorati
            /     |     \
           /      |      \
------| ______ ________ _______  |-- lato con contatti
|     |_*  \  *  |___| *  /   * _| |
|       |   \--- /   \---/     |   |
|       |______________________|   | 
|__________________________________| nicchia ricavata dalla card

Gli asterischi sono la superficie adesiva alla quale aderiscono i contatti, 
il rettangolo al centro e' il circuito integrato fissato anche lui con 
adesivo, le linee che partono dal micro e che si collegano ai contatti 
dorati sono i fili di connessione del micro con le piazzole. La metodologia 
del 'Tape Automatic Bonding' invece prevede la seguente disposizione del 
chip:

                 (-----) strato di plastica protettivo
        _________       _________ contatti dorati
------------    *       *   -----------
| card     |    ---------   | card    | 
------------    |       |   -----------
                ---------
                   chip

Come sopra, gli asterischi sono l'adesivo del chip che in realta' e' una
colla epossodica. Sostanzialmente le metodologie non sono molto differenti 
come funzionalita', ma si tende a preferire la tecnica del Wire Bonding per 
il semplice fatto che il chip e' molto piu' protetto dagli urti rispetto al
Tape Automatic Bonding, dato che resta dietro ad uno dei contatti e non 
protetto solo da un pochino di plastica. Bene, adesso che avete capito come 
sono in realta' strutturate fisicamente c'e' da dire solo una cosa al 
riguardo del materiale usato, ovvero della plastica che racchiude il chip. 
Solitamente sono realizzate in quattro tipi di materiali che hanno i relativi 
vantaggi e svantaggi, che sono:
PET, PC, ABS: non puo' essere stampato, ma e' riciclabile
PVC: non puo' essere riciclato, inquina, ma e' stampabile e costa poco
Piccola cosa:
PET = poliestere
PC  = policarbonato
ABS = acrilonitrile-butadiene-stirolo
PVC = cloruro di polivinile
Inutile dire che la maggioranza delle card sono realizzate in PVC, visto il 
basso costo...
Esistono anche apposite stampanti per card, reperibili al sito della 
Plus Technologies (http://www.plustechnologies.it) oppure sul sito della
DataMega (http://www.datamega.com).

ISO 7811

Dal momento che possono esistere delle card ad usi misti questo standard 
specifica dove devono essere, oltre ai contatti specifici della card, anche 
l'eventuale banda magnetica e le eventuali scritte in rilievo. A dire il 
vero, non me ne sono mai interessato molto, dato che a me serviva solo 
sapere qualcosa sulle card con il chip, non di quelle con le scritte in 
rilievo, ne' tantomeno di quelle con banda manetica, peraltro gia' trattate 
ampiamente ed ottimamente su Hack-Tik nei numeri 8, 9 e 10 oppure 
2600 Magazine estate 1991 oppure ancora su Phrack #37 a cura di Count Zero. 
Adesso passiamo alle cose un pochino piu' difficili... Iniziamo a levarci 
un po' di casino dalla testa dicendo che siccome ci sono diversi tipi di card
con i contatti elettrici uguali, ma dagli scopi molto diversi: ci sono le 
chip card, le smart card e le card con integrati. Le prime sono semplici card
con memoria (solitamente EEPROM), le seconde hanno una minima logica 
integrata (solo una ROM e nulla di piu') mentre le ultime sono card con 
microprocessore (solitamente un chip della famiglia PIC della Microchip).
La definizione di smart card, sebbene usata spesso a sproposito, va usata 
solo per le card con microprocessore a bordo. Ma allora perche' usare le 
card con il chip e non quelle magnetiche? Beh, le smart card sono preferibili
alle card con banda magnetica per molte ragioni, ma la principale e' 
in genere una: le smart card possono immagazzinare dati come le card 
magnetiche, ma hanno in piu' la possibilita' non trascurabile di poter 
eseguire dei programmi al loro interno. Basti pensare solo alla fase di 
trusting che si basa su algoritmi matematici. Con le card a banda magnetica 
cio' e' tuttavia possibile, ma non altrettanto sicuro.

ISO 7816

Lo standard ISO7816 si divide in 3 parti, che sono rispettivamente:
- ISO7816-1 definizione delle caratteristiche fisiche delle card
- ISO7816-2 dimensioni, contatti e posizione di questi ultimi
- ISO7816-3 segnali elettrici e protocolli di trasmissione

ISO 7816-1
Ovvero 'Il fisico e' importante'

Dal momento che lo standard include una marea di cose, ve ne spiego solo 
alcune, quelle che ritengo importanti...
Le card per essere accettate devono essere sottoposte ai seguenti controlli:
- Luce ultravioletta
 Tutto cio' che e' relativo alla protezione contro i raggi UV e' a carico del 
 produttore e ne viene lasciata la massima liberta' in merito... Insomma, 
 sono cazzi di chi fa le card, percio' prima di venire immesse in commercio 
 le card subiscono una bella dose di raggi UV di diverse intensita' per 
 testarle.
- Raggi X
 Eh si', le card devono resistere anche ai raggi X...
 Non e' stato pensato tanto per le persone che lavorano nei reparti di
 radiologia, ma per tutti coloro i quali devono passare i loro bagagli al 
 check-in degli aereoporti. E anche qui le card si beccano come test la loro 
 bella dose di radiazioni...
- Rilievo dei contatti rispetto alla superficie della card
 I pin ovvero le piazzole dei contatti non devono essere piu' alte di 0.1 mm 
 rispetto al resto della card.
- Resistenza meccanica della card e dei contatti
 Le card devono ovviamente resistere in condizioni d'uso normali senza 
 danneggiarsi o danneggiare il chip all'interno. Sono sottoposte ad un test 
 un po' duro: una sfera di acciaio del diametro di 1.5 millimetri che venga 
 premuta sulla card (o sui suoi contatti) con una forza di 1.5 Newton non 
 deve produrre nessuna alterazione.
- Resistenza elettrica
 La resistenza fra due pin adiacenti e non della card deve essere non meno 
 di 0.5 Ohm con una corrente compresa tra 50 microampere e 300 milliampere
- Campi magnetici
 Non devono essere danneggiate le informazioni del chip in presenza di campi 
 magnetici, se non per emissioni riscontrabili in aree talmente concentrate 
 che risultano (quasi) impossibili da trovare naturalmente.
- Elettricita' statica
 La card (ed il suo chip) devono resistere ad una scarica di 1500 volt. Per 
 testare cio' si carica un condensatore da 100pF a +1500V e, applicandovi una
 resistenza di 1.5 KOhm, si collega alle piazzole della card, usando il suo 
 stesso corpo appoggiato da un adeguato piano come massa. L'operazione va 
 logicamente ripetuta in senso opposto. Tenete presente che anche se 
 strofinate la card su un maglione di lana e poi la inserite in un lettore 
 avrete potenzialmente distrutto la card, infatti strofinandola sulla lana 
 la avete caricata di statica, occhio quindi a come la trattate...
- Flessibilita'
 Per essere accettate le card devono resistere a 2 diversi tipi di flessione 
 senza danneggiarsi:
 - Flessione sul lato largo
  Flessione di 2 cm in altezza per un periodo di 30 flessioni al minuto per 
  33 minuti circa (1000 flessioni complessive)
 - Flessione sul lato corto
  Flessione di 1 cm in altezza per un periodo di 30 flessioni al minuto per 
  33 minuti circa (1000 flessioni complessive)
 E qui sotto c'e' lo schemino:

                         __________
                 ___,---'          '---,___         ^
            _,--'                          '--,_    |  f
          ,'                                    ',  v

ISO 7816-2
Ovvero 'Anche la posizione e' importante'

Logicamente i contatti dorati della card non possono venire piazzati a caso 
ne' tantomeno avere dimensioni assurde, bisogna attenersi a queste misure!

Dimensione minima dei contatti:

        ,-------------,  ^
        |             |  |
        |             |  | 1.7mm
        |             |  |
        '-------------'  v
        :<----------->:
             2mm

Posizione dei contatti (sia per lo standard ISO 7816 che per l'AFNOR, 
sapere tutti e due male non fa...):

      ,-----------------------------------------------------------------
      |      :  :
      |      :  C
      |      D  :
      |      :  ---- ,----,            ,----,
      |      :       | C8 |            | C4 | -,
      |      ------- '----'            '----'  |
      |              ,----,            ,----,  |
      |              | C7 |            | C3 |  |
      |              '----'            '----'  |
      |              ,----,            ,----,  |  AFNOR 
      |              | C6 |            | C2 |  |
      |              '----'            '----'  |
      |              ,----,            ,----,  |
      |              | C5 |            | C1 | -'
      |              '----'            '----'
      |              ,----,            ,----,
      |              | C1 |            | C5 | -,
      |              '----'            '----'  |
      |              ,----,            ,----,  |
      |              | C2 |            | C6 |  |
      |              '----'            '----'  |  ISO 7816 
      |              ,----,            ,----,  |
      |              | C3 |            | C7 |  |
      |              '----'            '----'  |
      |              ,----,            ,----,  |
      |              | C4 |            | C8 | -'
      |              '----'            '----'
      |                                :    :
      |              A                 :    :
      |<------------------------------>:    :
      |                                     :
      |                  B                  :
      |<----------------------------------->:
      |

Valori dei pin:

C1 : Vcc = 5V        C5 : Gnd
C2 : Reset           C6 : Vpp
C3 : Clock           C7 : I/O
C4 : RIS             C8 : RIS

I contatti C4 e C8 sono riservati a future implementazioni.
Invece il contatto C6 e' conservato per compatibilita' con le vecchie card 
che necessitavano di una doppia corrente di alimentazione oppure per le card 
telefoniche francesi (infatti su questo contatto sono presenti +21 Volts per 
la programmazione ovvero per scrivere quanti crediti sono scalati).

Posizionamento relativo dei contatti (valori espressi in millimetri):


     |   A       B       C       D           |   A       B       C       D
 ----+-------------------------------    ----+-------------------------------
  C1 | 10.25   12.25   19.23   20.93      C1 | 17.87   19.87   16.69   18.39
  C2 | 10.25   12.25   21.77   23.47      C2 | 17.87   19.87   14.15   15.85
  C3 | 10.25   12.25   24.31   26.01      C3 | 17.87   19.87   11.61   13.31
  C4 | 10.25   12.25   26.85   28.55      C4 | 17.87   19.87    9.07   10.77
  C5 | 17.87   19.87   19.23   20.93      C5 | 10.25   12.25   16.69   18.39
  C6 | 17.87   19.87   21.77   23.47      C6 | 10.25   12.25   14.15   15.85
  C7 | 17.87   19.87   24.31   26.01      C7 | 10.25   12.25   11.61   13.31
  C8 | 17.87   19.87   28.85   28.55      C8 | 10.25   12.25    9.07   10.77
 ----+-------------------------------    ----+-------------------------------
            ISO 7816                                AFNOR 

Le posizioni AFNOR non sono a standard ISO (altrimenti perche' avrebbero un 
nome diverso? :-) , ma sono mantenute per tutte quelle card che necessitano 
sia di chip che di banda magnetica per non essere costretti a cambiare tutti 
i terminali di lettura del mondo. Infatti il metodo AFNOR non e' standard, ma
lo e' diventato de facto per tutte le applicazioni (solitamente in ambiti 
aziendali) dove prima c'era il badge magnetico fuori standard e dopo e' 
stato integrato con una card con contatti.

ISO 7816-3
Ovvero 'Elettrizzami tutta'

Come avete visto i contatti della card (che di seguito chiamero' pin) hanno 
dei valori ben definiti, il bello e' capire a cosa servono tali valori...
Vediamo di spiegarlo in breve: sono segnali elettrici che servono a pilotare 
le card che hanno a bordo un microcontrollore programmato e rispondono solo
a determinati impulsi, scoprite quali continuando a leggere!

   I/O :
I/O seriale per la comunicazione fra il chip interno ed il lettore. Tenete 
presente che a seconda del tipo di card puo' essere sia in modalita' 
sincrona (quindi viene usato il pin I/O in concomitanza con il pin CLK) sia
asincrona.

   VPP :
Input del voltaggio per la programmazione. Il valore in volts puo' essere di 
+5, +12, +21 oppure +25, ma e' una cosa insolita trovare delle card che ne 
necessitino, escluse le card telefoniche francesi.

   GND :
Massa di riferimento sia per il valore sia di 0 Volts sia dello 0 logico.

   CLK :
Clock generato dall'interfaccia necessario con le carte attuali, altrimenti 
la comunicazione non ha luogo (ricordate? seriale sincrona con il pin 
di I/O). Generalmente e' un'onda quadra continua con una frequenza di 
almeno 1 megahertz. Per le card asincrone e' ugualmente necessario.

   RST :
Ingresso per il reset della card, che puo' essere sia generato dalla card e 
trasmesso al lettore sia l'inverso. Se viene generato internamente dalla 
card si sfrutta il VCC generando impulsi che creano il reset. Ogni chipcard, 
a seconda dal chip che ha a bordo, ha un segnale di reset diverso.

   VCC :
Input voltaggio. Solitamente e' di +5 Volts con al massimo 200 milliAmpere 
anche se gli attuali chip ne assorbono da 14 a 20 milliAmpere come massimo.

   RIS :
Sono contatti riservati ad applicazioni future oppure sfruttati da card 
proprietarie con lettori e software proprietari per applicazioni particolari.
Per quanto ne so le uniche card non italiane che sfruttano questi pin sono 
quelle mediche tedesche.
Per le card italiane che sfruttano questo pin le uniche a disposizione del 
pubblico sono quelle che hanno i malati di schemio in cura a Napoli; tutta 
la loro storia medica e' conservata nella card.

Valori degli amperaggi e dei voltaggi

Dato che e' molto comodo usare le abbreviazioni, le ho usate...
Cosi' adesso vi tocca pure ricordarvi tutte queste sigle...

   Abbreviazioni:

     Via : input voltaggio a alto livello
     Vib : input voltaggio a basso livello
     Vcc : voltaggio di alimentazione su VCC
     Vpp : voltaggio di programmazione su VPP
     Voh : output voltaggio a alto livello
     Vol : output voltaggio a basso livello
     tr  : aumenta il tempo dell'ampiezza del segnale fra il 10% ed il 90%
     tf  : diminuisce il tempo dell'ampiezza del segnale fra il 90% ed il 10%
     Iih : input amperaggio a alto livello
     Iil : input amperaggio a basso livello
     Icc : amperaggio di alimentazione su VCC
     Ipp : amperaggio di programmazione su VPP
     Ioh : output amperaggio a alto livello
     Iol : output amperaggio a basso livello
     Cin : input condensatore
     Cout: output condensatore

   * I/O

Questo contatto e' usato per la trasmissione o la ricezione dei dati in 
modalita' seriale. In verita' ci sono due metodi di trasmissione cioe' in
half duplex a caratteri sincrono oppure in modalita' asincrona in half 
duplex a blocchi. Tutte e due le modalita' prevedono lo sfruttamento del pin 
CLK, ma la prima (sincrona) e' definita T0 mentre la seconda (asincrona) 
e' chiamata T1. Esistono anche altre card che usano protocolli di 
trasmissione diversi e tutti vanno sotto il nome di protocolli T14. Questi 
non sono a standard ISO se non per le dimensioni fisiche e quindi non ne
trattero', anche perche' sono usate solo in applicazioni particolari da poche 
ditte (per lo meno in Italia) in modo da legare a loro i clienti che si 
trovano con un hardware e delle card compatibili con nulla. Un esempio sono 
le card tipo MediCard. Ritornando a bomba al discorso di base, il pin I/O 
puo' avere due stati ben definiti ovvero lo stato Z oppure lo stato A. 
In dettaglio sono:
  Z
Detto anche stato alto o stato mark viene assunto se l'interfaccia e la carta
sono in modalita' ricezione o se viene imposto dal trasmettitore.
  A
Chiamato anche stato basso o stato space e' sempre e solo imposto dal 
trasmettitore.

Quando entrambi i capi della linea sono in modalita' ricezione la linea sara'
necessariamente in stato Z. Quando ai due capi invece si verifica una 
trasmissione asincrona lo stato logico della linea e' definito indeterminato.
Ovviamente lo stato sia dell'interfaccia che della card in questa modalita'
non sara' mai di trasmissione per entrambe. Ok, so che e' una precisazione 
stupida, ma la ritenevo necessaria...

Caratteristiche elettriche del pin di I/O in condizioni operative normali

,-------------+--------------------------------+---------+---------+------,
|Abbreviazione|          Condizione            |  Minimo | Massimo |Unita |
+-------------+--------+-----------------------+---------+---------+------+
|             |Entrambe| Iih max = +/- 500uA   |    2    |    VCC  |   V  |
|     Via     |   (1)  +-----------------------+---------+---------+------+
|             | oppure | Iih max = +/- 50uA    | 0.7 VCC | VCC (3) |   V  |
+-------------+--------+-----------------------+---------+---------+------+
|     Vib     |          Iil max = 1mA         |    0    |    0.8  |   V  |
+-------------+--------------------------------+---------+---------+------+
|             |Entrambe| Iol max = +/- 100uA   |   2.4   |    VCC  |   V  |
|     Voh     |        +-----------------------+---------+---------+------+
|     (2)     | oppure | Iol max = +/- 20uA    |   3.8   |    VCC  |   V  |
+-------------+--------+-----------------------+---------+---------+------+
|     Vol     |          Iol max = 1mA         |    0    |    0.4  |   V  |
+-------------+--------------------------------+---------+---------+------+
|    tr, tf   | Cin = 30pF;   Cout = 30pF      |         |      1  |   us |
+-------------+--------------------------------+---------+---------+------+
| (1) Per l'interfaccia tenete presente entrambi i valori.                |
| (2) Si parte dal presupposto che una resistenza sia usata dalla         |
|     interfaccia (almeno da 20K Ohm).                                    |
| (3) Il valore dovrebbe essere compreso tra 0.3V e VCC+0.3V.             |
'-------------------------------------------------------------------------'

   * VPP

Questo contatto dovrebbe servire a dare il voltaggio necessario alla 
programmazione o alla cancellazione dei dati contenuti nella card. Diverse 
card hanno a bordo una EEPROM al posto di un chip normale e sfruttano 
questo voltaggio per la cancellazione dei dati. Generalmente il valore in 
volts di VPP e' pari a +5 V, ma esistono anche card che richiedono +12, +21 
oppure anche +25, ma sono abbastanza rare. Per esempio, che io sappia, solo 
le carte telefoniche francesi richiedono +21V.
Comunque, per il pin VPP esistono solo 2 possibili stati: sospeso ed attivo.
Logicamente il primo stato viene imposto dal lettore alla card e viene 
traslato nel secondo solo tramite la richiesta proveniente dal lettore.

Caratteristiche elettriche del pin VPP in condizioni operative normali

,-------------+---------------------------+---------+---------+------,
|Abbreviazione|          Condizione       |  Minimo | Massimo |Unita |
+-------------+--------------------- -----+---------+---------+------+
|     Vpp     |        A riposo           | 0.95*Vcc| 1.05*Vcc|   V  |
|     Ipp     |(programmazione NON attiva)|         |   20    |  mA  |
+-------------+---------------------------+---------+---------+------+
|     Vpp     |      Funzionante          | 0.975*P | 1.025*P |   V  |
|     Ipp     |(programmazione in corso)  |         |     I   |  mA  |
+-------------+---------------------- ----+---------+---------+------+
|         La carta da' all'interfaccia i valori di P e di I.         |
|           Questi valori solitamente sono di P=5 e I=50             |
'--------------------------------------------------------------------'

Il tempo massimo di reazione al comando e' pari a 200 us (microsecondi).
Il massimo valore di cambio di voltaggio non deve superare i 2 volts per 
ogni us. La corrente massima ottenuta moltiplicando il valore di Vpp per il 
valore di Ipp non deve essere maggiore di 1.5 Watt per secondo.

   * CLK

La frequenza generata dall'interfaccia prende il nome di CLK ed e' 
determinata da 'fi' quando vi e' la risposta al reset (da ora in poi sara' 
chiamato ATR ovvero ATR Answer To Reset) oppure da 'fs' per la frequenza 
alla quale tutte le successive trasmissioni opereranno. L'ampiezza dell'onda 
per le comunicazioni asincrone dovrebbe essere compresa tra il 45% ed il 55% 
dell'ampiezza totale per consentire operazioni valide. Tenete presente che 
quando vi e' l'ATR e quindi il reciproco adattamento al segnale di CLK 
(quando si passa da 'fi' a 'fs') se l'ampiezza del segnale scende sotto il 
45% dell'ampiezza minima stabilita non vi sara' assolutamente comunicazione.

Caratteristiche elettriche del pin CLK in condizioni operative normali

,-------------+--------------------------------+---------+---------+------,
|Abbreviazione|          Condizione            |  Minimo | Massimo |Unita |
+-------------+--------+-----------------------+---------+---------+------+
|             |Entrambe| Iih max = +/- 200uA   |   2.4   | VCC (2) |   V  |
|             |   (1)  +-----------------------+---------+---------+------+
|     Via     | oppure | Iih max = +/- 20uA    | 0.7*VCC | VCC (2) |   V  |
|             |   (1)  +-----------------------+---------+---------+------+
|             | oppure | Iih max = +/- 10uA    | VCC-0.7 | VCC (2) |   V  |
+-------------+--------+-----------------------+---------+---------+------+
|     Vib     |          Iil max = +/-200 uA   |   0 (2) |    0.5  |   V  |
+-------------+--------------------------------+---------+---------+------+
|    tr, tf   |          Cin = 30pF            |         |9% dell'onda con|
|             |                                |         |al massimo:0.5us|
+-------------+--------------------------------+---------+---------+------+
| (1) Per l'interfaccia calcolate tutti e tre i valori.                   |
| (2) Il voltaggio di CLK dovrebbe rimanere compreso tra 0.3V e Vcc+0.3V. |
'-------------------------------------------------------------------------'

   * RST

Questo pin si occupa, oltre che del reset della card (comando che puo' sia 
essere generato dalla card che dal lettore), del 'primo contatto' con il 
mondo esterno. Infatti, in fase di connessione con un lettore e' proprio il 
segnale di RST che permette di stabilire se la card e' funzionante con quella 
determinata interfaccia.

Caratteristiche elettriche del pin RST in condizioni operative normali

,-------------+--------------------------------+---------+---------+------,
|Abbreviazione|          Condizione            |  Minimo | Massimo |Unita |
+-------------+--------+-----------------------+---------+---------+------+
|             |Entrambe| Iih max = +/- 200uA   |    4    | VCC (2) |   V  |
|     Via     |   (1)  +-----------------------+---------+---------+------+
|             | oppure | Iih max = +/- 10uA    | VCC-0.7 | VCC (2) |   V  |
+-------------+--------+-----------------------+---------+---------+------+
|     Vib     |          Iil max = +/- 200uA   |   0 (2) |    0.6  |   V  |
+-------------+--------------------------------+---------+---------+------+
| (1) Per l'interfaccia tenete in conto entrambi i valori.                |
| (2) Il voltaggio sul pin dovrebbe essere compreso tra 0.3V e VCC+0.3V.  |
'-------------------------------------------------------------------------'

   * VCC

Come gia' detto e' questo il pin che si occupa di dare alimentazione alla 
carta. Tenete sempre a mente che non dovete MAI superare i valori massimi 
di voltaggio o, come potete immaginare, potrete anche buttare via la card...
Per quanto riguarda invece l'amperaggio bisogna dire che sono davvero poche 
le card che necessitano di tutti e 200 i milliAmpere, con i chip attuali ne 
occorrono al massimo 20.

Caratteristiche elettriche del pin VCC in condizioni operative normali

,-------------+---------+---------+-----,
|Abbreviazione|  Minimo | Massimo |Unita|
+-------------+---------+---------+-----+
|     Vcc     |   4.75  |   5.25  |  V  |
|     Icc     |         |    200  | mA  |
'-------------+---------+---------+-----'

Ma come si leggono?

Dai, lo so che volete sapere solo questo, ma siccome sono un sadico al quale 
piace da matti spiegare tutto e lasciare il meglio per dopo, vi serve 
conoscere ancora qualcosa, ovvero come fa praticamente un terminale a 
leggere la carta.
Eh, lo so, sono un bastardo...
Dovete anzitutto determinare che tipo di card state per usare, dato che non 
esistono solo card da infilare nella classica fessura stile bancomat. Infatti 
le card si dividono in varie tipologie per quanto riguarda la comunicazione 
con il lettore:

- a contatto
 E' il metodo sicuramente piu' usato e necessita di un normale inseritore 
 di card (detto anche accoppiatore). Ne esistono di diversi materiali e con 
 diverse caratteristiche sia per quanto riguarda i contatti con i pin della 
 carta, sia per i formati accettati. I piu' diffusi in campo hobbistico sono
 i connettori a contatti striscianti per card di formato ID-1 (a 4+4 contatti 
 oppure a 8+8 contatti) dal costo variabile fra le 9.980 lire e le 21.000 
 lire, si trovano in Italia presso RS Components 
 (http://catalogo.rs-components.it/) cercando la voce smart card 
 (8+8 contatti) oppure presso la Futura Elettronica 
 (http://www.futuranet.it) ordinando il kit FT237 (4+4 contatti, 
 18.000 lirette). Esistono anche degli accoppiatori doppi per chip card 
 (per esempio quelli usati nei decoder satellitari) e sono impiegati 
 principalmente per accedere a servizi dedicati o per un controllo accessi 
 molto sicuro, ma non sono reperibili in commercio come pezzi a se stanti, 
 di solito si ricorre a due accoppiatori normali. Per averne invece una
 panoramica generale (anche per le card ID-00 ed ID-000) andate sul sito 
 della Amphenol (http://www.amphenol.com) e cercate sotto la voce chip card.
 Scaricatevi il PDF e tenete a mente che Amphenol Italia non risponde 
 alle e-mail, ma solo al telefono, non vendono a privati e che il minimo 
 quantitativo di accoppiatori che vi mandano e' 10.000 pezzi. Il loro 
 rivenditore e' RS.

- a semi-contatto
 Le card a semi contatto non sono da definire vere card nel senso che al loro 
 interno hanno raramente un chip, ma piu' spesso una bobina magnetica e 
 basano la comunicazione su di essa. Sono anche conosciute con il nome di 
 card a trasponder o trasponder (le card costano 23.000 cadauna e sono nel 
 formato ID-00). Oltre che nel formato card sono anche disponibili nel 
 formato portachiavi (costano circa 21.000 cadauno) e solitamente l'integrato 
 alla base di questi circuiti e' il U2270B della Temic (che costa 8.000 lire 
 solo lui). Le vere card a processore che basano le loro comunicazioni sul 
 semi-contatto hanno un'elettronica molto simile a quelle a prossimita', 
 trattate qui sotto.

- a prossimita'
 Per quanto riguarda la comunicazione a prossimita' invece c'e' da dire che 
 non e' un metodo molto usato dato che la produzione della card costa molto 
 di piu' perche' deve incorporare al suo interno (e non accessibile 
 dall'esterno) sia un chip sia un'antenna. Infatti la comunicazione si svolge 
 via radio usando il protocollo RFID (Radio Frequency IDentification) e la 
 distanza necessaria per operare in tutta sicurezza e' di 10 centimetri.
 Inoltre il sistema si avvale anche della metodologia definita CDMA 
 (Code Division Multiple Access) per ovviare al fatto che spesso piu' card 
 possono trovarsi a dialogare con il lettore dato che questo tipo di card e' 
 usato in quei posti che necessitano di velocita' di processamento molto 
 elevate e di una non altrettanto elevata sicurezza.

- a vicinanza
 Le card a vicinanza sono invece molto piu' comode delle sorelle a 
 prossimita' perche' permettono una distanza utile di 50 centimetri, ma 
 soffrono ugualmente degli stessi problemi delle loro sorelle minori. 
 L'elettronica di base e' similare alle loro sorelle.

- miste
 La tipica card mista deve avere sia i contatti visibili sia l'antenna in 
 modo da poter funzionare con entrambi i tipi di lettori, ma e' ancor meno 
 usata della precedente. Considerando sia i costi di gestione del lettore 
 piu' elevati, la scarsa sicurezza derivata dal trasferimento dati via 
 radio e l'alto costo della card e' una soluzione adottata solo se c'e' 
 l'effettiva necessita' di integrare nuove funzionalita' in card gia' 
 presenti in azienda, ma sono davvero poche le ditte che hanno abbracciato 
 questa soluzione.

Bene, finita la panoramica possiamo iniziare da zero, almeno non ci si perde 
per strada (e non mi dimentico nulla).
I passi da seguire per un corretto uso di una card sono i seguenti:
- connessione ed attivazione dei contatti
- reset della carta
- ATR della card (ovvero handshaking)
- scambio di dati
- sconnessione e disattivazione dei contatti
Benissimo, partiamo dal presupposto che abbiate capito e quindi abbiate il 
vostro lettore pronto e la vostra tessera pure.
Inserite la tessera ed in un tempo di circa 1 secondo siete pronti ad 
utilizzarla. Perfetto, ma la card cosa fa in questo secondo? Beh, fa un sacco 
di cose...
Anzitutto il connettore (ovvero lo slot nel quale inserite la card) ha al suo 
interno solitamente due contatti formati da due lamine metalliche 
(nei modelli hobbistici) che servono a stabilire se la card e' presente 
(contatto delle lamine) oppure assente (non contatto delle lamine). I modelli 
piu' professionali usano invece 2 o piu' fotocellule per lo stesso lavoro, 
ma esistono anche modelli che usano dei braccetti di bloccaggio. Andate a
scaricare il catalogo dalla Amphenol per averne una panoramica, per adesso 
tenete buono il fatto che vi e' il rilevamento della card inserita.
A questo punto il lettore si accorge che una card e' stata posta nel suo 
slot ed inizia la fase di approccio connettendo la sua massa con la massa 
della card per eliminare la possibile elettricita' statica accumulata. 
Fatto cio' da' inizio al fluire della tensione sul pin di Vcc fino a portarla 
al valore di +5V. Durante questa operazione i pin RST, VPP I/O e CLK sono in
stato di riposo, poi vi spiego anche perche'. Quando Vcc raggiunge i +5V 
viene abilitato il CLK e subito dopo parte un singolo segnale diretto a 
RST poi il tutto si ferma e resta in attesa di una risposta. Se la risposta 
arriva (ovvero se la card e' del tipo giusto) parte una ATR con la quale il 
lettore puo' uniformarsi a quanto gli viene comunicato dalla card. Nulla di 
tremendo, mi pare...
Giusto per complicarvi un pochino la lettura e la vita vi inserisco uno 
schemino per farvi capire...
Se invece avete un analizzatore di stati logici oppure una sonda logica 
potete fare a meno di guardare questo, tanto potete sempre vederlo con 
i vostri strumenti (vi invidio, si era capito?). Per i comuni mortali invece:

        _____________________________________________________________________
VCC ___/

         ____________________________________________________________________
VPP ____/
                   t12
           :<---------------->:
           :__________________:
RST ______/:                   \_____________________________________________
           :                    :
           :  t10           t11 :          t15      t16
           :<---->:      :<---->:  t14   :<---->: :<---->:
                  : ____ :      :<---->: :______: :      : _______
CLK_______________:/  1 \:______:______:/   2    \:______:/   3   \_______
                                :                 :
                                : t13             :  t17
                                :<---->:          :<---->:
         _____________________________ :______________   :______________   __
I/O ____//////////////////////////////\:_______1______X-X_______2_______X-X__


 5us <= t10                          
 5us <= t11                          
50us <= t12 ........ RST alto        
        t13 <= 10us  Ritardo di propagazione       
10us <= t14 <= 100us CLK a livello basso dopo il RST
10us <= t14 <= 100us CLK a livello basso dopo il RST
10us <= t15 <= 50us  CLK alto
10us <= t16 <= 100us CLK basso
        t17 <= 10us Ritardo di propagazione

Logicamente cio' vale se una card e' sincrona e risponde in maniera sincrona.
Se invece il lettore e' progettato per utilizzare sia card sincrone sia card 
asincrone si comportera' nello stesso modo, ma prevedera' il segnale di reset 
sia per la modalita' sincrona che per quella asincrona in questo modo:

GND _________________________________________________________________________
        __________________________________________________________________
VCC ___| :                                                               :|__
         :_______________________________________________________________:
VPP ____|:                                                               |___
         :             t3                            t3                  :
         :<--------------------------->:<------------------------------->:
         :                             :_________________________________:
RST _____:_____________________________|                                 |___
         :                             :                                 :
CLK _____|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||___
         :       t1                    :                                 :
         :<-------------->:            :                                 :
         :      __________:____________:_________________________________:
I/O ____XXXXXXXX          |____________:_______Answer____________________:XXX
(IR)     :      :                      :                                 :
         :  t2  :                      :      t1                         :
         :<---->:                      :<---------->:                    :
         :      _______________________:_________________________________:
I/O ____XXXXXXXX                       :            |______Answer________:XXX
(AL)     :  t2  :                      :                                 :
         :<---->:                      :                                 :
         :                             :_________________________________:
I/O ____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:                                 :XXXX
(SH)     :                             :                                 :
         T0                            T1                                T2

    IR : Reset interno                         t2 <= 200/fi
    AL : Reset asincrono             400/fi <= t1 <= 40000/fi
    SH : Reset sincrono            40000/fi <= t3

E qui ci troviamo davanti ad un bel casino: due modalita' di card!
Beh, per comodita' per il momento penso sia piu' comodo da usare il 
protocollo sincrono (anche perche' e' il piu' diffuso), faro' qualche cenno 
all'asincrono, ma senza addentrarmi troppo... Tenete presente che per 
entrambe le modalita' valgono queste regolette semplici: la linea di I/O deve 
essere in stato Z (mark) entro 200 cicli di clock e se la card non da' segni 
di vita dopo 40.000 cicli viene scartata.

Bene, adesso che vi ho introdotto al mondo delle smart card vi lascio un po' 
a ragionare su cosa avete letto, fino al prossimo numero, nel quale vi 
spieghero' sia tutto il resto del protocollo di comunicazione della card, sia 
come sono organizzate internamente le card e anche come costruirci un lettore 
di card molto simile all'Uniprog dei CCC. So che vorreste saperne di piu', io 
vi do solo una dritta: http://neworder.box.sk . Troverete qualcosa di vostro 
interesse, basta che sappiate dove guardare...
Perfetto, sono oramai le 2 di notte, vado a dormire felice di aver potuto 
dire un paio di cose interessanti a degli amici curiosi come me, buonanotte a 
tutti!


==============================================================================
--------------------------------[ EOF 17/22 ]---------------------------------
==============================================================================

---------------------[ previous ]---[ index ]---[ next ]----------------------