---------------------[ 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 ]----------------------