Negli ultimi anni
il numero di smartcards utilizzate in Europa e nel mondo è cresciuto a
ritmi vertiginosi. Buona parte di questa crescita, almeno in Europa, è
dovuta all'utilizzo di smartcards per i telefoni cellulari GSM. I campi d'impiego
delle smartcards sono comunque estremamente vasti. Si va, infatti, dalle carte
di credito, quali quelle di VISA International, alle carte per la semplice raccolta
punti a scopo promozionale, quali le carte del club "Fai da Te" Agip.
Una smartcard non è altro che una carta magnetica intelligente (evoluta).
Una carta magnetica è una carta sulla quale sono state temporaneamente
memorizzate informazioni grazie all'impiego della tecnologia magnetica. Può
essere considerata una vera e propria moneta elettronica visto che sempre più
persone utilizzano queste carte per effettuare operazioni di pagamento (carte
di credito, carte di debito, schede telefoniche prepagate).
Figura 1.1
La Figura 1.1
mostra come le smartcards abbiano avuto un vasto utilizzo in tutto il mondo.
Purtroppo le carte magnetiche non offrono un sufficiente margine di sicurezza. I dati
vengono registrati tramite un nastro a magneti che a seconda del verso di polarizzazione
di ciascun magnete implementano una codifica binaria a 8 bit (ASCII) su 3 tracce
o bande magnetiche. In queste bande le informazioni vengono registrate con due
standard di codifica contenute nel documento ISO 3554: ANSI/ISO BCD e ANSI/ISO
ALPHA.
Alcune aziende hanno preferito non utilizzare questi standard a discapito di
nuovi formati proprietari (in teoria riservati). I dati memorizzati (ad esempio
per una carta di credito: codice PIN, il codice del paese, la data di scadenza,
il codice di conto corrente, il numero di serie della carta, il numero segreto
della carta, ecc.) vengono poi opportunamente cifrati per evitare che chiunque
in possesso di un lettore magnetico possa leggerli.
La sicurezza delle carte magnetiche si basa proprio sulla riservatezza dei codici
personali. I primi modelli riportavano tutte le informazioni inerenti ai codici
personali e cifrati con semplici algoritmi di cifratura a trasposizione. Per
forzare una carta bastava leggere il contenuto e lavorare sulla crittoanalisi
del sistema. Una tendenza più recente è quella di non registrare
tutte le informazioni segrete sulla carta ma solo una minima parte indispensabile
per l'identificazione della stessa. I restanti dati si trovano in un computer
che gestisce un archivio di codici segreti che viene interrogato da remoto ogniqualvolta
si utilizza la chiave.
La smartcard nasce con lo scopo di aumentare la sicurezza dei dati memorizzati
sulla carta consentendo alla stessa di manipolare le informazioni in esso
contenute con una serie di istruzioni implementate in un miniprocessore integrato.
Nel lontano 1974,
mentre la maggior parte degli informatici lottava ancora con i lettori a schede
perforate, un signore francese, di nome Roland Moreno, depositò quattro
brevetti. I brevetti riguardavano un nuovo sistema, concepito da Moreno, giornalista
ma anche inventore, per registrare i dati relativi a transazioni bancarie su
di un supporto a circuito integrato. Il primo brevetto riguardava il meccanismo
preposto alla gestione degli accessi per lo scambio dati (lettura/scrittura)
ad una memoria su chip integrato VLSI (Very Large Scale Integration). Il secondo
ed il terzo brevetto vertevano sulla codifica dei dati, cioè il particolare
formato e modalità, associati alla lettura e scrittura delle informazioni
sul chip. Infine, il quarto ed ultimo brevetto, riguardava le modalità
di trasferimento dei dati dal chip di memoria ad un computer periferico come
ad esempio un ATM (sportelli bancomat).
Negli anni immediatamente successivi, la società francese Bull si mostrò
interessata all'invenzione di Moreno e decise di firmare un accordo con Moreno
stesso per lo studio, a partire dai suoi brevetti, di un prodotto che desse
sbocco pratico alle sue idee innovative. Nacque così il progetto CP8:
prima tappa di questo sviluppo fu la produzione, nel 1976, di una carta di plastica
sperimentale che montava un circuito integrato.
Si trattava, all'inizio, di una carta con a bordo memoria elettronica e poco
più; per arrivare alla smartcard propriamente detta, cioè alla
carta a microprocessore, si deve attendere l'ottobre del 1981: è appunto
questa la data di presentazione da parte di Bull della prima carta a microprocessore
monochip e del conseguente brevetto SPOM (Self-Programmable One-chip Microcomputer).
Le smartcards possono
essere considerate a tutti gli effetti evoluzioni delle normali carte magnetiche
tradizionali in quanto, oltre ad avere più capacità di memoria,
forniscono tutta una serie di servizi aggiuntivi grazie alla presenza di un
microprocessore che permette di implementare la maggior parte delle tecniche
crittografiche moderne.
Esistono numerosissimi tipi di smartcards in circolazione che differiscono principalmente
dai diversi requisiti di sicurezza che devono garantire. Come mostra la Figura 1.2 le smartcards
si dividono in due filoni principali: Memory Card (Carte a Memoria) e Microprocessor Cards
(Carte a Microprocessore).
Le carte a memoria possono essere Protected (avere un buon livello di sicurezza) e
Unprotected (con un basso livello di sicurezza). Non hanno capacità d'elaborazione
ma contengono solo circuiti elettronici per memorizzare dati e per comunicare
con il dispositivo di lettura. Sono dunque delle "memorie" vere e
proprie e, nel caso di quelle protette, sono dotate anche di meccanismi di sicurezza
come il PIN (Personal Identification Number) per proteggere i dati in lettura
o scrittura. Questa è la differenza principale che le distingue dalle carte a
memoria non protetta, che non hanno alcun tipo di protezione e quindi sono
facilmente soggette ad attacchi. Le carte a microprocessore si differenziano
da quelle a memoria perché al posto di semplici circuiti per la gestione
della memoria e per la comunicazione con il lettore, possiedono un vero e proprio
microprocessore e un proprio sistema operativo che le rendono idonee ad elaborare
informazioni in maniera indipendente. Queste carte forniscono una gestione efficiente
e sicura dei dati che vengono strutturati in files e directories, utilizzano
dei PIN per l'accesso alle informazioni, supportano funzionalità di sicurezza,
quali crittografia, autenticazione dei messaggi, ecc. Possono essere
usate per obiettivi generale (General Purpose), dove vengono utilizzate
nell'ambito bancario e dei GSM, e per obiettivi specifici (Specific), dette
anche crypto-card, che dispongono anche di un componente
interno (coprocessore crittografico) per eseguire velocemente funzioni di sicurezza
(ad es. cifratura dati, "firme elettroniche"), permettendo così
l'impiego delle carte per nuovi servizi ed applicazioni.
Figura 1.2
Da questa divisione possiamo distinguere diversi campi di applicazione tipici delle smartcards:
Identificazione |
Vari schemi pubblici e privati prevedono un'identificazione. Questi possono essere statali, sociali, università o altre entità. L'identificazione viene associata tipicamente per mezzo di carte magnetiche. Queste possono includere svariate informazioni quali accesso del beneficio del passaporto, identificazione nazionale, ecc. Tipicamente queste informazioni hanno valore nella grande parte dei casi perché non possono essere facilmente alterate dal possessore della carta ed inoltre vengono progettate per resistere ad eventuali modifiche non autorizzate. In questi casi spesso vengono usati sistemi a chiave pubblica. |
Finanza | Schemi di pagamento possono includere crediti, debiti, borse di valore, e transazioni. |
Telefonia | L'uso primario è il Modulo dell'Identificazione dell'Abbonato (SIM) per telefoni mobili e digitali. |
Memorizzazione di informazioni sicure |
Informazioni mediche. |
Applicazioni di rete | Le smartcards possono contenere informazioni di accesso ad una rete di computer. |
Una fetta importante
nello sviluppo delle smartcards è legato agli standard dei protocolli.
Come per qualsiasi nuova tecnologia esistono talmente tanti standard per smartcards
da poter scoraggiare chi si presta a diventare sviluppatore.
La standardizzazione è stata effettuata dalle organizzazioni preposte
a tale scopo, nel caso specifico:
CEN (Comit Eurpen de Normalisation)
rue Brderote 2
B-1000 Brussels
Belgium
ISO (International
Standard Institute)
Case postale 56
CH-1211 Gensve 20
Switzerland
Il documento di riferimento che ne ha definito le varie caratteristiche è
il 7816 è si divide in 3 parti:
1. ISO 7816-1: con cui vengono definite le caratteristiche fisiche.
2. ISO 7816-2: con cui vengono definite le dimensioni e la posizione dei
contatti
3. ISO 7816-3: con cui vengono definiti i segnali elettrici ed i protocolli
di trasmissione.
Nella prima parte del documento vengono definite le vere e proprie caratteristiche meccaniche del supporto:
Per fare un esempio: affinché il supporto che contiene l'ICC possa superare il test di torsione la card deve, senza che l'ICC si danneggi, resistere a 1000 torsioni di + o - 15° lungo il suo asse longitudinale ad una media di 30 torsioni al minuto.
La seconda parte dello standard definisce la posizione dei contatti e la loro dimensione:
La
terza parte dello standard definisce le caratteristiche elettriche dei segnali
nonché i protocolli con i quali deve avvenire il dialogo con la Smart
Card.
La trasmissione di tipo asincrona è molto simile a quella che avviene
a mezzo dell'interfaccia RS232 del PC. I caratteri sono caratterizzata da:
Start bit (usato per la sincronizzazione)
Data bit (i veri e propri dati)
Parity bit (per il controllo di errori di trasmissione) - Even Parity
Guardtime (tempo di separazione tra i caratteri) - uguale a due bit
Figura 1.3
La Figura 1.3 mostra
le varie operazione di input/output che una semplice smartcard può svolgere.
Molte aziende però hanno sviluppato propri protocolli di trasmissione con l'intento di preservarne
la sicurezza ma eliminano completamente la possibilità di compatibilità.
Infatti è difficilissimo trovare carte a microprocessore di aziende diverse
che condividono lettori e applicazioni.
Un esempio di realizzazione di standard da parte di cooperative di sviluppo
è lo standard finanziato da EUROPAY INTERNATIONAL, MASTER CARD INTERNATIONAL
e VISA INTERNATIONAL (EMV), compatibile con ISO 7616.
I vari standard proposti sono classificati come standard orizzontali, usati
da qualsiasi applicazione, e standard verticali, usati per specifici sistemi,
come la Mondex e la VisaCash che implementano carte per operazioni di bancomat.
Recentemente, l'attenzione delle grosse case produttrici americane si è concentrata su tre importanti vie di sviluppo nell'industria della smartcard:
PC/SC |
Microsoft ed altre compagnie introducono il PC/SC, un'interfaccia di comunicazione con le smartcards basata sulla piattaforma Win32 per il personal computer. Purtroppo PC/SC non supporta correttamente altri tipi di piattaforma-Win32. |
OpenCard Framework |
OpenCard è uno standard aperto che provvede ad un'interoperabilità delle applicazioni smartcards attraverso NCs, POS, desktops, laptops, ecc. Le OpenCard permettono di supportare al 100% Java, poiché spesso le applicazioni smartcards non sono pure in quanto comunicano con dispositivi esterni o usano librerie sul client. Inoltre le OpenCard permettono agli sviluppatori di interfacciarsi al PC/SC per un uso dei dispositivi su piattaforme Win32. |
JavaCard |
Le JavaCard furono introdotte dalla Schlumberger e recentemente sono state sottoposte come standard al JavaSoft. Caratteristica fondamentale di queste cards è che abilitano sicurezza e un'esecuzione di diverse applicazioni in maniera del tutto indipendente dal chip. |