Copy Link
Add to Bookmark
Report
BFi numero 07 anno 2 file 17 di 22
==============================================================================
------------[ 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 picccola 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 ]---------------------------------
==============================================================================