VAI AL CAPITOLO 3 : COMUNICAZIONE ED ORGANIZZAZIONE
DELLE INFORMAZIONI
CAPITOLO 2 : Standard e Specificazioni
2.2 CEN726 (Comitè Europèen de Normalisation )
2.3 EMV (Europay international, MasterCard, Visa)
2.4 PC/SC (Personal Computer/Smart Card)
ICC Resource Manager
ICC Service Provider
Crypto Service Provider
PC/SC Migration Interface
Alcuni comandi dell’interfaccia (Classe Scard)
Card Service
Card Service Scheduler
Card Terminal
Application Management Card Service
Confronto tra PC/SC e Open Card FrameWork
CAPITOLO 2 : Standard e Specificazioni
Le Smart Card sono una parte di un sistema più
complesso che comprende una rete di dispositivi terminali (lettori) collegati
ad un elaboratore remoto. Le compagnie che investono in tali sistemi sono
interessate a definire standard che permettano l’interoperabilità
tra dispositivi (e carte) sviluppati da differenti fornitori. Esistono
standard forniti da associazioni internazionali come ISO e CEN e da compagnie
private che operano nello stesso settore. Di seguito descriverò
i principali standard attualmente in uso.
Questo standard proposto dalla ISO (International Organization
for Standardization) è composto da otto parti. In particolare le
prime tre parti sono adottate dalla totalità dei costruttori poiché
definiscono le caratteristiche fisiche ed elettriche; le restanti, che
descrivono i comandi, le strutture dati interne ed i protocolli di comunicazione,
sono utilizzate come indicazioni generali e spesso costruttori differenti
adottano soluzioni alternative. La parte 7816-4 sarà trattata in
dettaglio nel capitolo 4 perché definisce la struttura logica della
Smart Card.
ISO 7816-1 Caratteristiche fisiche: sono definite dimensioni (85.6 x 53.97 x 0.76 mm), la resistenza meccanica, risposta ai raggi x, ecc.
ISO 7816-2 Dimensioni e posizione dei contatti: definisce le dimensioni, la posizione e la funzione degli otto contatti.(figura 1)
ISO 7816-3 Segnali elettrici e protocolli di trasmissione: solo sei contatti sono utilizzati per il normale funzionamento. (figura 4)
Vcc: fornisce alimentazione (3 e 5 V).
Gnd: messa a terra.
Rst: questo pin riceve il segnale
di reset dal lettore.
Vpp: pin utilizzato per fornire un voltaggio
di programmazione alle EEPROM.
Clk: fornisce il clock al circuito
integrato (da 3.5 a 5 Mhz).
I/O: questo è un pin di Input/Output
seriale; Il flusso di dati può essere in una sola direzione alla
volta.
In questa parte è descritto anche il protocollo di risposta ad un segnale di reset, ATR (Answer To Reset), che consente l’identificazione del tipo di carta e del protocollo di trasmissione (T=0 o T=1) come vedremo in seguito.
7816-4 Comandi inter-industriali: questa parte descrive un set base di istruzioni per le Smart Card e la sintassi di comunicazione con il lettore che saranno descritte nel capitolo y. Il blocco basilare di comunicazione è formato da un insieme di APDU (Application Protocol Data Units) che tutte le carte devono interpretare. Sono inoltre contenuti l’organizzazione dei dati, la descrizione del tipo e della struttura di file, sicurezza della architettura e dei messaggi, TPDU (Transport Protocol Data Units), codici di ritorno e canali logici.
7816-5 Sistema numerico e procedura di registrazione per l’indentificatore di applicazione: in questa parte è descritto il sistema numerico utilizzato dalle applicazioni all’interno della carta. Ogni applicazione riceve un identificatore unico (AID o Application Identifier) che permette l’associazione univoca tra applicazioni e file presenti sulla carta. Tutte le applicazioni devono essere registrate dalla ISO, che fornisce un AID riconosciuto da tutti gli utilizzatori dello standard, prima di essere distribuite sul mercato.
7816-6 Elementi dei dati: sono definiti il tipo di informazione contenuto nei dati e la loro lunghezza (TLV o type lengh value) per scambi inter-industriali.
7816-7 Comandi inter-industriali avanzati: questa parte descrive un set di comandi addizionali a quelli della parte 4 che definiscono l’accesso SQL (Simple Query Language), mutua identificazione tra carta e lettore e crittografia.
7816-8 Architettura di sicurezza: sono descritte
le linee guida per implementare architetture circuitali interne con elevato
grado di protezione dei dati.
TORNA ALL'INDICE DEL CAPITOLO ATTUALE
(CAP 2: STANDARD E SPECIFICAZIONI )
2.2 CEN726 (Comitè Europèen de Normalisation )
Questo standard proposto dal ETSI (Istituto Europeo per Standard in Telecomunicazioni) definisce un set di comandi base (APDU), le condizioni di accesso, la struttura dei file, e le specifiche per i dispositivi di lettura; pur se orientato ad aspetti del settore delle telecomunicazioni, gran parte delle specifiche sono coincidenti con lo standard 7816 della ISO. Contiene sette parti elencate di seguito.
Parte 1: descrizione del sistema
Parte 2: framework di sicurezza
Parte 3: specifiche delle applicazioni indipendenti
dalla carta
Parte 4: metodo di pagamento
Parte 5: specifiche di telecomunicazione
Parte 6: modulo di sicurezza
TORNA ALL'INDICE DEL CAPITOLO ATTUALE
(CAP 2: STANDARD E SPECIFICAZIONI )
2.3 EMV (Europay international, MasterCard, Visa)
Proposto nel 1996 dalle compagnie sopra indicate descrive, in tre documenti, le specifiche per sistemi di pagamento basati su Smart Card.
Parte 1: sono definite le specifiche fisiche ed elettriche delle carte (come per quello ISO)
Parte 2: descrive le specifiche del terminale di
lettura e le opzioni dei dispositivi usati in transazioni
finanziarie (per carte di credito). In particolare sono specificate:
Parte3: sono definite le specifiche delle applicazioni
e le procedure necessarie ad effettuare una transazione finanziaria in
ambito internazionale. Tali procedure includono:
TORNA ALL'INDICE DEL CAPITOLO ATTUALE
(CAP 2: STANDARD E SPECIFICAZIONI )
2.4 PC/SC (Personal Computer/Smart Card)
Questo standard è stato proposto nel 1996 da un gruppo di aziende, prima tra tutte la Microsoft, per utilizzare la tecnologia basata su Smart Card (definita in questo contesto come ICC, Integrated Circuit Card) su comuni Personal Computer.
Sono definite tre aree di standardizzazione:
Lo standard è composto da otto parti che contengono
le seguenti specifiche:
1 descrizione dei componenti ed
architettura del sistema
2 dettagli implementativi su
lettori e carte e loro interoperabilità
3 interfaccia tra PC e lettore
e funzionalità richieste a questo dispositivo
4 considerazioni su dispositivi
lettori
5 interfaccia e funzionalità
supportate dal gestore delle risorse della carta (ICC Resource Manager)
6 modello del provider dei servizi
presenti sulla carta
7 considerazioni per gli sviluppatori
di applicativi che utilizzano Smart Card
8 funzionalità offerte
dalla carta e supporti crittografici
ICC: Smart Card
IFD: Dispositivo lettore
Application: Applicazioni su PC
ICC Service Provider: Fornitore di servizi
Crypto Service Provider: Fornitore di servizi
crittografici
ICC Resource Manager: Gestore delle risorse presenti
sulle carte
IFD Handler: Interfaccia dello specifico lettore
In figura 5 è mostrata una generica architettura di PC connesso a diversi tipi di lettori, chiamati IFD.
Le applicazioni risiedenti su PC (Application) sono messe
in comunicazione con applicazioni sulla carta per mezzo del gestore delle
risorse ICC (ICC Resource Manager) ed un fornitore di servizi. Generalmente
la carta è inserita in un IFD e controllata da applicazioni di gestione
che si occupano di rilevarne tipo e funzionalità. Dopo la
registrazione può essere utilizzata da applicazioni d’alto livello
(su PC) che utilizzano risorse presenti sulla carta in modo logicamente
concorrente (fisicamente può accedere una sola applicazione alla
volta poiché esiste un solo canale di comunicazione)
ICC Resource Manager
Questa parte dello standard è spesso la più utilizzata anche in contesti e piattaforme non Microsoft e si occupa di tre aspetti legati alla gestione di lettori e carte multipli. Il componente entra a far parte del Sistema Operativo del PC (ad esempio Windows 2000)
Identificazione ed indirizzamento delle risorse disponibili
Contiene una lista dei lettori installati e delle carte
per cui esiste un fornitore dei servizi. Identifica le interfacce supportate,
sia comuni (accesso ai file e autenticazioni) che appartenenti a standard
di dominio ristretto (EMV, GSM).Mantiene informazioni sulle carte inserite
nei lettori e segnala inserimenti o rimozioni. Si occupa della connessione
logica tra funzioni offerte dalle carte e fornitore dei servizi (Service
provider).
Allocazione delle risorse tra applicazioni multiple
Permette alle applicazioni l’accesso esclusivo o condiviso
a dati e funzioni della carta e fornisce lo stato delle risorse. Si occupa
di accessi concorrenti a risorse in mutua esclusione.
Controllo delle transazioni per specifiche carte
Assicura che particolari sequenze di comandi siano portate
a termine senza interruzioni, come avviene in contesto transazionale.
ICC Service Provider
Questo componente è fornito dagli sviluppatori
della carta e fornisce un’interfaccia di alto livello che definisce le
funzioni supportate da una specifica carta. In generale contiene i comandi
specificati dalla 7816-4, ma può includere anche particolari funzionalità
personalizzate. Prima di potere fornire il servizio alle applicazioni deve
essere inizializzato presso l’ICC Resource Manager.
Crypto Service Provider
Questo componente è separato dal Service Provider
poiché fornisce servizi crittografici, che presentano particolari
condizioni di Input/Output. Contiene le specifiche di componenti opzionali
dipendenti dalla specifica carta (per esempio coprocessori crittografici).
Le interfacce supportate sono definite per:
PC/SC Migration Interface
Lo standard della PC/SC è fortemente orientato
verso piattaforme che utilizzano sistemi operativi Microsoft (Windows 95,
98, 2000, NT) ma consente una migrazione verso risorse (soprattutto lettori)
sviluppati da altri. Sono fornite specifiche per connettere servizi equivalenti
a quelli offerti da PC/SC, ma la standardizzazione è riferita solo
ad una sottoparte del set originario.
Alcuni comandi dell’interfaccia (Classe Scard)
SCardEstablishContext: questo comando è
mandato dall’applicazione di alto livello verso l’interfaccia PC/SC e stabilisce
un contesto per successive chiamate al Resource Manager.
Sintassi SCardEstablishContext(SCARD_SCOPE_USER, ......,
hContext);
SCardListReaders: fornisce una lista di lettori
disponibili all’interno di un gruppo.
Sintassi SCardListReaders(hContext,
Groups, Readers,...);
SCardConnect: stabilisce una connessione alla carta
inserita in un lettore selezionato, se non trova nessuna carta passa ad
un codice di ritorno.
Sintassi SCardConnect(hContext,ReaderName,SCARD_SHARE_EXCLUSIVE,SCARD_PROTOCOL_T1,
hCard,......);
SCardGetAttrib: ottiene gli attributi del lettore
(per esempio il nome del fornitore o il tipo di carta).
Sintassi SCardGetAttrib(hCard,
SCARD_ATTR_VENDOR_NAME,.....);
SCardGetAttrib(hCard, SCARD_ATR_STRING,.....);
SCardTransmit: permette la connessione ad una carta
e la gestione di un APDU per trasmettere dati.
Sintassi SCardTransmit(hCard,
MY_SCARD, SELECT_3F00, .....);
SCardDisconnect: chiude una connessione precedentemente
aperta.
Sintassi SCardDisconnect(hCard,
SCARD_EJECT_CARD);
SCardReleaseContext: chiude un contesto precedentemente
aperto con il Resource Manager.
Sintassi SCardReleaseContext(hContext);
TORNA ALL'INDICE DEL CAPITOLO ATTUALE
(CAP 2: STANDARD E SPECIFICAZIONI )
Questo standard è fornito da un consorzio composto da dodici industrie leader operanti nel settore tra cui: Bull, Gemplus, IBM, Netscape, Sun e Visa. Propone una standardizzazione mirata a facilitare lo sviluppo del software per applicazioni basate su Smart Card. Il sistema preso in considerazione risulta complesso, poiché non coinvolge solo la singola Smart Card, ma anche PC, reti di elaboratori, ATM (Automatic Teller Machine), terminali per POS (Point Of Sale) e dispositivi d’emergenza. L’OCF definisce un’interfaccia comune per il lettore e le applicazioni all’interno della carta, basandosi su tecnologia Java (Javacard), che migliora la portabilità e l’interoperabilità tra diverse soluzioni. Tale standard contiene quello precedentemente descritto (PC/SC), per interfacciamento con i PC. La versione attuale è denominata OpenCardFramework 1.2 (evoluzione della 1.0) ed è stata redatta nel 1999.
Il framework è diviso in due componenti principali (CardTerminal e CardService), in figura 6, che consentono un’astrazione dai dettagli implementativi di basso livello e facilitano lo sviluppo di soluzioni non dipendenti dal fornitore del dispositivo (lettore, carta, PC, ecc).
Card Terminal contiene le specifiche relative a classi ed interfaccie che permettono l’accesso al dispositivo terminale (lettore).
Card Service definisce le classi che implementano i servizi offerti dalla carta. Le funzioni che la carta mette a disposizione sono viste come classi e contengono metodi che ne consentono la gestione. Ogni CardService definisce una particolare API (Application Protocol Interface) con cui si possono richiamare le specifiche funzioni sulla carta.
Questi componenti sono stati pensati come classi e pacchetti Java indirizzati a sviluppatori di software a vari livelli, come mostrato in figura 7(sotto).
Il livello più alto è composto da sviluppatori di applicazioni su PC, che scrivono i loro servizi basandosi sull’interfaccia proposta da OCF e dai Card Service caricati; questo garantisce che modifiche a basso livello, quali aggiornamenti del Sistema Operativo della carta, non influenzino il codice delle applicazioni.
Il secondo livello è costituito da fornitori di carte che si occupano dello strato di gestione delle applicazioni, cioè dell’esecuzione e coesistenza di diverse funzioni e dati sulla stessa carta. Usando Javacard le funzioni sono viste come applet residenti sulla carta, nel caso di generiche carte deve essere caricata una funzione specifica legata al Sistema Operativo della carta (sviluppata dai fornitori del S.O.).
Il terzo livello contiene i servizi offerti dalla carta definiti come Card Service, sviluppati dai fornitori della carta o privatamente. Un tipico Card Service può essere un Purse Card Service (portafoglio elettronico) che fornisce funzioni di incremento o decremento del valore contenuto.
L’ultimo livello è rappresentato dai fornitori del dispositivo lettore che sviluppano un Card Terminal contenente i codici di gestione dello specifico dispositivo.
Il lato destro mostra l’OCF vero e proprio (OCF Core), contenente classi comuni a tutto il software che utilizza tale standard (Card Service Scheduler, Smart Card, CardID e due registri).
La classe Smart Card è l’astrazione centrale e
possiede un identificatore (CardID) che definisce il tipo di carta. Questa
informazione è ottenuta durante la prima comunicazione con la carta
(ATR). Le applicazioni di alto livello (application) si riferiscono all’oggetto
SmartCard (un oggetto è l’istanza di una classe) per ottenere le
funzioni specifiche della carta. Tali funzioni vengono correttamente rintracciate
tra tutte quelle presenti (diversi Card Service) dal Card Service Scheduler
(schedulatore dei servizi).
Card Service
Un Card Service ha tutte le informazioni sul Sistema Operativo
presente sulla carta e può utilizzarne le funzioni, come anche quelle
offerte da altri Card Service. Per esempio, un Purse Card Service (visto
sopra) per accedere ai file sulla carta può utilizzare le funzioni
offerte dal File System Card Service. La descrizione di gruppi di Card
Service sono contenuti in Card Service Factory (sviluppato dai fornitori).
Quando al Framework è richiesta una particolare interfaccia per
un Card Service, il Card Service Registry chiama tutti i Card Service Factory
registrati per tale CardID (per quel tipo di carta) e controlla se il servizio
adatto è presente. Una volta Trovato, viene creato un nuovo Card
Service collegato ad uno specifico oggetto SmartCard (identificato unicamente
da CardID, tipo di carta). In un sistema possono essere presenti più
oggetti di tipo Card Service e Card Service Factory ma un unico Card Service
Registry.
Card Service Scheduler
Un Card Service comunica con un Card Terminal attraverso
il Card Service Scheduler. Questa classe si prende cura di sincronizzare
accessi di applicazioni concorrenti verso la stessa carta. Un oggetto Card
Service Scheduler viene creato per ogni carta presente nel sistema e ne
gestisce l’utilizzo da parte di applicativi di livello superiore.
Card Terminal
Questa classe contiene la descrizione dei dispositivi
lettore supportati dal sistema; ogni lettore deve essere associato ad un
Card Terminal che ne descrive le specifiche astraendosi da dettagli implementativi.
I Card Terminal hanno uno o più oggetti di tipo Slot (figura 6)
a seconda del dispositivo lettore (ingresso singolo o multiplo). Un esempio
di ingresso multiplo è costituito da un’applicazione sanitaria con
un ingresso carta del paziente (contenente i dati personali) e una carta
del dottore (contenente l’autorizzazione ad usare tali dati personali).
Come per il Card Service anche il Card Terminal deve essere creato partendo
da un Card Terminal Factory ed essere registrato dal Card Terminal Registry.
Application Management Card Service
Questa classe contiene i Card Service per la gestione
delle applicazioni sulla carta ed i Card Service Factory associati. Un
servizio di questa classe contiene le informazioni sul tipo di schema utilizzato
per la gestione delle applicazioni che può essere selezionato da
un set di soluzioni proposte dal fornitore della carta. Non è presente
una completa standardizzazione sul tipo di applicazioni messe sulla carta
da diversi fornitori. Possono coesistere applicazioni simili (che svolgono
le stesse funzioni) su un'unica carta e questo Card Service permette di
scegliere quale deve essere utilizzata in un determinato contesto. Per
esempio, possono esserci più portafogli elettronici tra cui scegliere
per effettuare una transazione finanziaria.
Confronto tra PC/SC e Open Card FrameWork
OpenCard Framework e PC/SC sono utilizzati per accedere
alle Smart Card da computer di differente tipo e si può immaginare
abbiano una struttura comune e meccanismi simili. In Figura 8 sono mostrate
le due architetture e la suddivisione in livelli logici con i rispettivi
elementi. In PC/SC, l’ICC Service Provider svolge la stessa funzione dell’OCF
Card Service e l’Interface Device Subsystem quella di Card Terminal. La
differenza sostanziale consiste nella maggiore astrazione di OCF, che non
definisce specifiche implementative per le classi (per es. Card Terminal),
ma permette di utilizzare quelle fornite da PC/SC (o altre) come inclusione
di tali classi.
Di seguito è indicato un confronto tra le classi
e la loro funzione.
Classi OCF
Classi PC/SC
Funzione
CardID String ATR e Identificazione della carta
SmartCard Nessuno Visione della Card per le Applicazioni
Nessuno SCARD Contesto di comunicazione
CardFile FILEACCESS Visione dei file presenti sulla Smart Card
CardFileInfo Nessuno Permesso di accesso ad un file
Nessuno CARDAUTH Autenticazione reciproca Carta-lettore
CHVDialog CHVVERIFICATION Interfaccia utente di identificazione
CardFilePath Nessuno Path di un file su Smart Card
Credential CRYPTKEY Chiave crittografica
Nessuno CRYPTHASH Hashing per Crittografia
CredentialStore Nessuno Credenziali (chiavi) per una applicazione
CardService Nessuno Servizio specifico per un’applicazione
ApplicationMgmnt
Nessuno
Selezione dell’applicazione e gestione dati
In Figura 9 sono mostrati gli ambienti in cui PC/SC e OpenCardFramework operano e si può notare una sovrapposizione parziale su piattaforme Windows con applicazioni Java.
TORNA ALL'INDICE DEL CAPITOLO ATTUALE (CAP 2: STANDARD E SPECIFICAZIONI )
VAI AL CAPITOLO 3 : COMUNICAZIONE ED ORGANIZZAZIONE DELLE INFORMAZIONI