TORNA ALL'INDICE GENERALE DELLE SMART CARD

VAI AL CAPITOLO 3 : COMUNICAZIONE ED ORGANIZZAZIONE DELLE INFORMAZIONI
 

CAPITOLO 2 : Standard e Specificazioni
 

2.1 Standard ISO 7816

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)

2.5 OCF (OpenCard Framework)

Card Service
Card Service Scheduler
Card Terminal
Application Management Card Service
Confronto tra PC/SC e Open Card FrameWork
 
 
 
 



 
 
 

CAPITOLO 2 : Standard e Specificazioni

2.1 Standard ISO 7816

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 )
 
 
 
 

2.5 OCF (OpenCard Framework)

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

TORNA ALL'INDICE GENERALE DELLE SMART CARD