Prospettive per il futuro:
le SMART Card e la firma digitale

 

    INDICE:

    

    Smart Card

    Firma Digitale

 

SMART CARD

Un altro campo in cui la crittografia assume oggi un ruolo importantissimo è quello dei

telefoni cellulari, dell'e-commerce e la pay TV. Con esso si è parallelamente sviluppato lo studio e l'utilizzo delle Smart Card.

    Smart Card

Le Smart Card sono tesserine nelle quali possono essere memorizzati dei dati quali ad esempio il nome dell’utente, la sua password, il suo numero privato per l’esecuzione della firma elettronica.

 

Il passaggio da badge con memorizzazione magnetica e Smart Card è stato graduale. Oltre ai sistemi a microchip per l'elaborazione dei dati, ci sono card elettroniche, note come IC-Card, che hanno la sola funzione di memoria.

Il loro vantaggio rispetto alle loro antenate magnetiche è sicuramente legato alle minori dimensioni e alla maggiore capacità di memoria. Le Smart Card, dotate di una CPU, possono rispondere a comandi esterni, eseguire calcoli e operazioni logiche.

    Contactless

In questo modo è possibile implementare degli algoritmi che aumentino la sicurezza durante una procedura di riconoscimento PIN, quali possono essere gli algoritmi crittografici. Sia le IC-Card sia le Smart Card sono lette o scritte per contatto, ma esiste una nuova tecnica di lettura-scrittura che consente di operare a distanza, scambiando dati per mezzo di sistemi a radio frequenza. Le carte che ne derivano sono dette Contactless.

Esistono poi carte nate per sfruttare al meglio le potenzialità di tutte le tecnologie disponibili. Sono realizzate in modo ibrido, cioè prive di contatti per la memorizzazione dei dati e con interfacce tradizionali per i comandi di processamento. Si pensi ad esempio alle carte di credito: non tutti i paesi hanno a disposizione sistemi di lettura di ultima generazione, per questo si rende necessario avere la banda magnetica oltre al chip elettronico.

 

La carta di tipo Contactless è costituita dagli stessi elementi di una carta Contact, ma differisce per la mancanza di contatti sostituiti con una bobina ottenuta sulla carta stessa, la quale funziona da antenna. La portante è intorno ai 14 MHz, mentre il tipo di modulazione è una ASK (Amplitude Shift Keying, quindi di tipo a protezione dei dati via crittografia).

    Gli standard ISO

Lo sviluppo delle Smart Card ha avuto luogo soprattutto grazie alla definizione di uno standard da parte dell'ISO, ed in particolare quello relativo a questa tecnologia è l'ISO/IEC 7816.

Esso prevede, tra vari parametri, che la massima dimensione di un chip sia di 25 mm² ed il livello di protezione da cancellazione e manomissione sia di 4 kV.

Ci sono chip a 5 e 8 contatti. I tipici 5 contatti per carte di memoria sono: alimentazione, reset, clock, GND, input/output.

 

La struttura di un micromodulo a 8 contatti è la seguente:

Invece, lo standard delle carte Contactless è l'ISO/IEC 14443, il quale impone la tensione di alimentazione pari a 2,7 V; la frequenza della portante pari a 13,56 MHz. La modulazione usata dal lettore per inviare i dati alla carta è di tipo ASK, mentre in ricezione di dati è sfruttata la BPSK (Bit Phase Shift Keying) su una frequenza pari a 870 kHz. I dati sono trasferiti ad una velocità di 106 kbit/s. La novità importante offerta dalle tecnologie per Smart Card Contactless riguarda l'alimentazione che è ottenuta per mezzo di un'onda a radiofrequenza.

    Particolari costruttivi delle Smart Card

La struttura tipica di un microcontrollore su Dye di silicio, per tessera, comprende: una CPU ad 8 bit, fino a 780 bytes di RAM, fino a 20 kB di ROM e 16 kB di E²PROM. In alcuni casi è presente anche un processore dedicato alla crittografia dei dati.

Il sistema operativo della scheda è contenuto nella ROM, non volatile e scritta solo in fase di realizzazione dal costruttore. Nelle Smart Card di prima generazione la ROM conteneva anche le istruzioni applicative, oggi si impiegano delle PROM che consentono di caricare il codice in un secondo tempo.

 

Per i motivi legati alla sicurezza, i diversi costruttori non pubblicano le specifiche costruttive dei µC dedicati alle Smart Card, perciò non possiamo addentrarci nel particolare argomento.

In definitiva, il chip non è altro che una E²PROM protetta da un sistema logico di controllo degli accessi.

 

Per avere un certo grado di sicurezza ad ogni tessera verrà associata una password "breve" per avere la certezza che non possano essere utilizzate da nessuno eccetto il vero proprietario: come avviene oggi per il Bancomat.

 

Le Smart Card permettono di rendere più semplice la gestione della chiave privata di firma, che diventa molto meno critica. Neppure il suo legittimo proprietario conosce il suo proprio numero segreto perchè non esce mai dalla Smart Card.

    L'importanza della programmazione

Una nota importante riguarda la programmazione delle Smart Card, attività che forse più di altre determina l'innalzamento di costo rispetto a un sistema a Banda Magnetica.

La programmazione delle carte a microprocessore, infatti, deve seguire stringenti requisiti di sicurezza ed essere in grado di sfruttare appieno le potenzialità dell'hardware disponibile. Il software implementato deve gestire le operazioni del microcontrollore, i protocolli di comunicazione ad ogni livello, convertire i dati in formato standard, eseguire test e controlli, ecc.

Le regole di sviluppo del programma sono molto stringenti, anche se in realtà esistono opportunità di programmazione semplificate per applicazioni non spinte. Alcuni costruttori mettono in commercio kit di interfaccia Windows/Unix per la programmazione friendly. Naturalmente il grado di sicurezza diminuisce con l'aumentare del livello del linguaggio di programmazione. Esistono delle maschere che consentono all'utente di programmare in linguaggi noti, quali C++, Fortran, Basic e soprattutto Java.

Un rischio che si presenta in questo caso è quello di caricare in memoria codici pirata che compromettono l'integrità delle aree protette.

Un linguaggio che diminuisce notevolmente questo particolare rischio è Java nella sua versione per Card, noto anche come JCVM (Java Card Virtual Machine), con relativi sistemi di sviluppo JCAE (Java Card Aplication Environment) e Java Card.

La potenza della Java Card consiste nel gestire più applicazioni su una stessa Card, inoltre non è necessario emettere una nuova Card nel momento in cui si devono cambiare delle istruzioni; infine Java Card garantisce sicurezza, standardizzazione e facilità di sviluppo.

 

In generale le carte elettroniche non sono così versatili; infatti è necessario che il posizionamento dei contatti del chip integrato sia molto accurato. Il vantaggio delle carte di memoria elettroniche risiede nella più alta capacità di memoria e nell'implementabilità di una logica anche abbastanza complessa al fine di aumentare il livello di protezione. In pratica, la sicurezza è garantita da un'alta capacità di memoria e dalla possibilità di elaborare i dati mediante, per esempio, algoritmi anche molto complessi di crittografazione e riconoscimento; si pensi che la potenza di un microprocessore di Smart Card è pari a quella di un PC di inizio anni '90.

 

FIRMA DIGITALE

    La firma digitale

Attraverso semplici meccanismi sarà possibile firmare i dati (certificati, documenti ecc. ) senza dover tenere a mente i numeri della chiave. Le Smart Card in grosse quantità non sono molto costose, ed i lettori possono essere condivisi tra molti utenti come lo sono ora.

 

Per quello che riguarda la firma, è già stata impostata per essere gestita tramite Smart Card: nella normativa si fa riferimento ad un "dispositivo di firma", che assomiglia moltissimo alle attuali tessere. L'utilizzo da casa della card sarà più problematico, per la mancanza di un dispositivo di interfaccia, che però non costerà più di un attuale buon modem. Ci sarà insomma un futuro con molte Smart Card, emesse da enti diversi per scopi diversi.

 

Tali tessere verranno probabilmente rilasciate dagli enti di certificazione che si occuperanno della memorizzazione nella tessera del nostro proprio numero segreto e contemporaneamente della pubblicazione sugli elenchi della nostra chiave pubblica.

 

Già ora nel portafoglio abbiamo un codice fiscale, un bancomat, una Viacard. In futuro probabilmente avremo le stesse carte, ma dotate di maggior intelligenza e sicurezza, che permetteranno servizi più evoluti.

 

Con FIRMA DIGITALE si intende l'apposizione della firma su un documento elettronico: per firmare un documento si ricorre ad una funzione matematica che produce un’ impronta del testo stesso.

Le firme digitali vengono usate per verificare che un messaggio provenga effettivamente da chi se ne dichiara il mittente (assumendo che solo il mittente conosca la chiave segreta corrispondente a quella pubblica). Esse inoltre possono essere usate per assegnare un timestamp (o marca temporale) a certi documenti: una terza parte di fiducia firma il documento ed il suo timestamp con la propria chiave segreta, attestando in tal modo che il documento esisteva a quell'epoca.

Le firme digitali possono anche essere usate per attestare (o certificare) che una chiave appartenga ad una determinata persona. Per ottenere ciò occorre firmare con una chiave di fiducia un messaggio che contiene la chiave ed alcune informazioni riguardo al proprietario. Una ragione per cui tale chiave è considerata di fiducia può essere dovuta al fatto che essa appartiene ad un Ente riconosciuto oppure perché essa stessa è stata firmata con un'altra chiave di fiducia.

E' necessario che esista una chiave che rappresenta la radice di questa gerarchia di fiducia e che appartiene ad un'opportuna autorità di certificazione, spesso indicata come notaio.

    La funzione HASH

La funzione HASH deve essere UNIDIREZIONALE ovvero, dato il valore dell’impronta è praticamente impossibile risalire al testo corrispondente; e deve essere PRIVA DI COLLISIONI: è praticamente impossibile che due testi differenti abbiano la stessa impronta, se il testo cambia anche in minima parte, allora cambia anche l’impronta.

 

Le funzioni hash più comunemente utilizzate oggi sono quelle denominate MD2, MD4 e MD5 che producono codici a 128 bit.

 

L’impronta generata con il processo di hashing viene cifrata con la chiave privata del firmatario, il risultato ovvero la firma digitale, viene accodato al documento stesso e inviato al destinatario.

    L'autorità di certificazione

Il destinatario può verificare la firma del mittente applicando la stessa funzione hash al messaggio ricevuto ed andando a confrontare l’impronta così costruita con il messaggio decifrato attraverso chiave pubblica del mittente. Si ha dunque la necessità di una terza parte fidata: l’autorità di certificazione.

 

La funzione dell’autorità di certificazione è quella di stabilire, garantire, pubblicare

l’associazione tra ogni chiave pubblica e il soggetto che usa la corrispondente chiave privata.

 

La persona che vuole utilizzare la firma elettronica deve innanzitutto registrarsi presso una autorità di certificazione la quale, dopo aver accertato l’identità della persona, rilascerà all’interessato un Certificato elettronico . Il certificato firmato a sua volta dalla autorità di certificazione rappresenta il mezzo con il quale la persona può provare la propria identità in una transazione elettronica e conterrà :

L’autenticità e l’integrità del certificato sono assicurate dalla firma elettronica dell’autorità di certificazione che lo ha rilasciato.

 

La autorità di certificazione deve mantenere un Pubblico registro dei certificati emessi in modo da renderli disponibili a chi abbia il bisogno di accertare la validità di una firma. Il titolare del certificato si deve assumere la responsabilità di mantenere segreta la propria chiave privata e di notificare qualsiasi tipo di intromissione alla autorità di certificazione, la quale a sua volta provvederà a revocare il certificato e ad inserirlo in una Lista pubblica dei certificati revocati.

 

Ricorrendo alla A.d.C. la firma digitale ci permette così l'identificazione dell'autore del documento, ed inoltre anche la non disconoscibilità del documento ricevuto o trasmesso.

    Algoritmi per la creazione della firma digitale

Alcuni algoritmi a chiave pubblica possono essere usati per generare firme digitali. Una firma digitale è una particolare informazione simbolica prodotta da un opportuno procedimento di cifratura; il principio della firma digitale si basa sul fatto che esiste una chiave pubblica che possa decifrare tale informazione, verificando così l'identità del firmatario, possessore della corrispondente chiave privata. L'algoritmo usato per generare la firma dovrà essere tale che senza conoscere la chiave segreta non sia possibile ottenere una firma che verrebbe riconosciuta come valida.

Una firma digitale di un arbitrario documento è tipicamente realizzata calcolandone un digest, ovvero un breve riassunto opportunamente codificato, ed allegandovi informazioni a proposito del firmatario, un timestamp, ed altri dati significativi. Tale messaggio viene poi cifrato con la chiave privata del firmatario usando un opportuno algoritmo.

 

Assumendo come M(P) un messaggio cifrato di testo P, per essere adatta allo scopo, la funzione hash deve assicurare un processo poco oneroso nel calcolare M(P); inoltre se intercettato M(P) deve essere impossibile risalire a P; ed infine non si devono mai ottenere due documenti P1 e P2 tali per cui M(P1) = M(P2).

 

Per soddisfare l'ultimo requisito il riassunto deve essere piuttosto lungo, almeno 128 bit. Ad ogni modo, è chiaro che dal punto di vista teorico non è possibile garantire che il requisito sia sempre soddisfatto, poiché in generale la cardinalità dello spazio dei messaggi è molto superiore a quella dello spazio dei riassunti.

    Processo di firma digitale

Il processo di firma digitale richiede che l'utente effettui una serie di azioni preliminari necessarie alla predisposizione delle chiavi utilizzate dal sistema di crittografia su cui il meccanismo di firma si basa; in particolare occorre:

  1. la registrazione dell'utente presso un’Autorità di Certificazione (A.d.C.);

  2. la generazione di Ks e Kp, rispettivamente chiave segreta e chive pubblica;

  3. la certificazione di Kp;

  4. la registrazione di Kp.

La firma viene apposta mediante una sequenza di tre operazioni:

  1. generazione dell'impronta del documento da firmare

  2. generazione della firma mediante cifratura dell'impronta

  3. apposizione della firma al documento.

    Verifica della firma digitale

L’operazione di verifica della firma digitale viene effettuata ricollocando, con la medesima funzione di hash usata nella fase di sottoscrizione, il valore dell'impronta e controllando che il valore così ottenuto coincida con quello generato per decodifica della firma digitale stessa. La disponibilità del valore dell'impronta all'interno del messaggio semplifica l'operazione.

    Il commercio elettronico

Secondo una recente indagine risulta che circa un quarto dei navigatori italiani (nei paesi anglosassoni anche di più) ha eseguito acquisti on-line negli ultimi sei mesi, e per importi tutt’altro che insignificanti. In totale il giro d’affari dell’e-commerce supera abbondantemente i mille miliardi all’anno. Non tutti gli utenti si fidano della sicurezza della rete. Quella della sfiducia verso i mezzi di pagamento on line resta il motivo 

principale che scoraggia l’acquisto via Internet.

 

Alla base del commercio elettronico sta quindi la possibilità di eseguire scambi di denaro sulla rete in maniera sicura. Il denaro elettronico (anche chiamato contante elettronico o contante digitale) è un termine che è ancora abbastanza vago ed indefinito. Esso si riferisce ad operazioni eseguite elettronicamente con l’ausilio della rete in cui fondi vengono trasferiti da una persona ad un’altra.

 

Il lavoro sui fondamenti teoretici riguardo al denaro digitale è stato eseguito da Chaum. Il contante digitale nella sua definizione precisa può essere anonimo o identificato. Gli schemi anonimi non rivelano l'identità del cliente e sono basati su uno schema di firma elettronica chiamato "oscuro".

Gli schemi identificati di spesa rivelano invece sempre l'identità del cliente ed è basato su moduli più generali di schema di firma elettronica. Gli schemi anonimi sono l’analogo elettronico del contante, mentre gli schemi identificati sono l’analogo elettronico di una cambiale o di una carta di credito. Ci sono altri approcci, i pagamenti possono essere anonimi per il negoziante ma non per la banca, oppure anonimi per ognuno, ma rintrancciabili (una serie di acquisti può essere documentata, ma non collegata direttamente all’identità del compratore).

 

Finchè il denaro digitale era soltanto una rappresentazione elettronica di fondi, era possibile facilmente duplicare e spendere una certa somma più di una volta. Perciò, gli schemi del denaro digitale sono stati strutturati così che non sia possibile spendere lo stesso ammontare più di una volta senza essere acciuffati immediatamente.

Un altro approccio è quello di immagazzinare il denaro digitale in un'apparecchiatura sicura, che sia in grado di prevenire che l'utente possa spendere due volte la stessa somma.

 

I soldi elettronici comprendono anche sistemi di pagamento e controllo analoghi alle tradizionali carte di credito.

 

Qui, la crittografia protegge i dati della transazione convenzionale, come il numero di conto e il suo ammontare; una firma digitale può sostituire una firma scritto a mano o autorizzazione di pagamento effettuata con una carta di credito, e una cifratura a chiave pubblica può garantire la riservatezza.

 

I protocolli attualmente utilizzati sono il SET e il MONDEX.

    SET e MONDEX

SET

Visa e Mastercard hanno congiuntamente sviluppato il protocollo Secure Electronic Transaction (SET) come un metodo sicuro per l’esecuzione di transazioni su reti aperte tipo Internet. SET comprende protocolli per l’acquisto elettronico di beni e servizi, richieste di autorizzazioni di pagamento, richiesta di certificati oltre ad altri servizi. Una volta che SET sarà completamente in uso, la necessaria riservatezza nelle transazioni elettroniche sarà posta in atto, permettendo così ai venditori e ai compratori di prendere parte al commercio elettronico. Il SET supporta il DES per la cifratura di grosse quantità di dati e l’ RSA per la firma elettronica.

 

MONDEX

Mondex è un sistema di pagamento nel quale la quantità di denaro è memorizzato nelle Smart Card.

Queste Smart Card sono identiche in forma e dimensione alle attuali carte di credito, generalmente permettono l’immagazzinamento di somme di denaro di diverse centinaia di dollari. Il denaro può essere arbitrariamente trasferito da una carta all’altra in qualsiasi momento e in qualunque quantità. In questa maniera non ci sarà più bisogno di preoccuparsi dei problemi connessi con il trasporto del denaro tradizionale.

Il sistema Mondex fornisce anche un certo grado di anonimato, tuttavia ha uno degli svantaggi della moneta corrente: se la carta Mondex è persa, anche i soldi che sono in essa contenuti saranno persi.

Gli scambi tra tessera e tessera possono essere effettuati con un apposito hardware.

Attualmente gli algoritmi utilizzati dal Mondex non sono stati resi pubblici.