1. INTRODUZIONE

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.

1.1 La parola "smartcard"

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).

1.2 Campi di applicazione

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.


1.3 Standard

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‚ Eurp‚en de Normalisation)
rue Br‚derote 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:


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.