3. LA SICUREZZA DELLE SMARTCARDS

Le smartcards dispongono di una protezione fisica costituito da uno strato isolante dielettrico che copre il chip per resistere a eventuali attacchi atti a manomettere le funzioni di output. Lo strato isolante protegge il chip dalle impurità e dalla polvere, e impedisce il passaggio di radiazioni associate alla sonda, che utilizza un fascio di elettroni microscopico. Lo schema è capace di reagire alla luce, alla temperatura e alle scariche elettriche indicando al chip che lo strato isolante è stato rotto e che la sicurezza dei dati è compromessa. Vi sono anche meccanismi per proteggere la memoria fisica, incluso il sovraccarico di memoria, che possono scombussolare i disegni tecnici più difficili e impediscono un attacco che cerca di cancellare un preciso dato selezionato nella memoria.

Figura 3.1

Le smartcards possono essere costruite con vari livelli di sicurezza fisica, con costi sempre più alti man mano che aumenta il livello di sicurezza stesso. La Figura 3.1 mostra lo schema di una smartcard e le sue varie componenti che la compongono. Gli acquirenti possono valutare con il venditore il livello di sicurezza fisica appropriato alle loro applicazioni. Le tecniche di sicurezza impiegate nella progettazione delle smartcards e nelle procedure di autenticazione/trasmissione di questi dati verso i terminali d'interfaccia riguardano essenzialmente 3 settori:

3.1 Integrità dei dati

Per integrità dei dati si intende la corretta trasmissione dei dati tra la sorgente (smartcard) e destinatario (terminale di sevizio) senza nessun tipo di alterazione dell'informazione. Questa funzionalità può essere un requisito esplicito dell'applicazione in cui i dati da preservare sono limitati e in cui si deve garantire la possibilità di recupero di una transazione. L'integrità fisica dei dati è basata in genere sul calcolo di una checksum su un insieme logico di dati (record, partizioni, file, ecc.) memorizzata insieme ad essi. In genere questa funzionalità è realizzata con l'uso di algoritmi one-way hashing e in particolare il più utilizzato è il Secure Hash Algorithm (SHA-1). L'SHA-1 produce una firma di 160 bit per un insieme informativo di valori numerici di 264 bit di lunghezza al massimo. Un'altra funzione hash molto utilizzata è la Message Digest 5 (MD5) che produce una firma inferiore a quella dell' SHA-1, solo 128 bit e quindi 16 caratteri.
Il sistema operativo garantisce l'integrità del messaggio scambiato dalla carta con il mondo esterno, inserendo dopo il campo dati del comando o della risposta il Codice di Autenticazione del Messaggio (MAC) in modalità cifrata. La cifratura del MAC definisce una sorta di firma digitale del messaggio scambiato realizzata con algoritmi di crittografia simmetrici (DES, RC5).

3.2 Autenticazione

La funzionalità di autenticazione permette il riconoscimento reciproco tra la smartcard e il mondo esterno rappresentato, tipicamente, dal terminale che interagisce con la carta.
Secondo quanto specificato dagli standard ISO relativamente alla sicurezza logica, esistono essenzialmente tre tipi di autenticazione, interna, esterna e reciproca, a seconda di chi effettua la verifica dell'identità (il mondo esterno, la carta, entrambi). Il principio generale su cui si basa l'autenticazione è che, tra i due soggetti, vengono scambiate quantità casuali, ovvero di validità temporanea (autenticazione dinamica), che vengono crittografate, in modo simmetrico, con le stesse chiavi e con gli stessi algoritmi.
Le procedure di autenticazione sono solitamente gestite secondo lo standard ISO 9798/2.
Ad esempio la funzionalità di autenticazione della carta da parte del mondo esterno, consente ad un'applicazione di sincerarsi della "validità" della carta con cui desidera interfacciarsi (Internal Authenticate). A questo scopo il sistema operativo genera un Response verso l'esterno a partire dalla quantità random (Challenge) ricevuto e dalla indicazione della chiave di cifratura da utilizzare. L'applicazione esterna andrà a confrontare il Response ricevuto con quanto ottenuto dalla esecuzione dell'algoritmo di autenticazione che usa lo stesso Challenge e la propria chiave di verifica.
La Figura 3.2 descrive invece una autenticazione di tipo esterna (External Authenticate) che consente ad una carta di sincerarsi della "validità" del terminale con cui si interfaccia.
Normalmente è usato il DES per cifrare la quantità random, con una chiave di autenticazione generata di volta in volta mentre il calcolo delle firme viene fatto con il Triplo-DES.
Qualora dovesse essere presente sulla carta un coprocessore crittografico che permette di realizzare algoritmi di cifratura asimmetrici (RSA, DSA), è anche possibile realizzare delle autenticazioni statiche tramite l'utilizzo di una firma applicata ad una quantità fissa (es. card ID).

Figura 3.2

3.3 Irriproducibilità e Riservatezza

Bisogna in qualche modo garantire che la firma digitale non possa essere copiata per consentire l'utilizzo non autorizzato. Questo è uno degli aspetti cruciali della sicurezza in ambito elettronico. Chiunque con un minimo di attrezzatura è in grado di copiare il contenuto informativo di un dispositivo digitale e la copia risultante sarà indistinguibile dall'originale. Inoltre l'obiettivo è di evitare che un intruso possa catturare e decifrare le operazioni interpretando di conseguenza il contenuto informativo delle cards.

3.4 Sicurezza

La progettazione di un sistema sufficientemente sicuro è un compito difficile da parte delle aziende che operano nel settore. Spesso i pareri sono molto differenti tra loro per cui esistono approcci diversi alla scelta degli algoritmi crittografici e alla loro implementazione nei microcontroller. Ad esempio, nel settembre '97 sono state registrate violente polemiche sul nuovo chip H8/3109 sviluppato dalla Hitachi per conto della Mondex International, ditta leader del settore del commercio elettronico tramite smartcard. Durante l'Eurocrypt '97, la più importante conferenza del settore, molti esperti si sono scagliati contro l'enorme investimento della Mondex nella progettazione delle nuove smartcards, che apparentemente non rispecchiano gli standard moderni di sicurezza offerti dai nuovi algoritmi crittografici. Ross Anderson della Cambridge University affermò: "si stanno sviluppando troppe nuove tecniche di attacco verso questi tipi di sistemi; se un sistema viene rilasciato oggi, la sua sicurezza può durare al massimo tre mesi". Questa affermazione era dovuta al consapevole limite delle smartcards a livello fisico. Con appositi strumenti è infatti possibile modificare strutturalmente la card in modo da poter leggere/scrivere e interpretarne il contenuto informativo. Si è dimostrato durante una conferenza dell'Eurocrypt come si possa "cortocircuitare" una smartcard in modo da poterla collegare tramite comunicazione seriale ad un qualsiasi personal computer e quindi decifrare ogni valore memorizzato.
Naturalmente le azienda produttrici (Mondex in testa) si sono difese argomentando che nessun sistema è perfetto e che il punto fondamentale è riuscire ad aumentare i costi necessari per una eventuale manomissione del chip in questione. Alcuni accademici, tra i quali il prof. John Orloff dell'università del Maryland, affermano che in realtà i costi per una eventuale manomissione non sono molto elevati. Esistono in circolazione diversi tipi di lettori di smartcards provenienti dai più famosi gruppi hackers, e quindi interessanti perché autocostruiti, totalmente trasparenti nell'utilizzo e soprattutto facili da realizzare anche dal punto di vista economico. Un altro luogo comune da sfatare è quello - sostenuto dalle aziende leader nel settore - secondo il quale la violazione di smartcards sarebbe un evento raro e difficile da realizzare. A riprova del contrario, nel maggio 98 in Germania la rivista Focus riportava un articolo nel quale spiegava come alcuni pirati informatici (probabilmente olandesi) erano riusciti a impartire una severa lezione al colosso delle telecomunicazioni tedesche Deutsche Telekom, con un danno di circa 34 milioni di dollari causato dal ricarico abusivo delle card prepagate per la telefonia. Le smartcards utilizzate dalla Deutsche Telekom utilizzano un chip EEPROM sviluppato dalla Siemens, che detrae il valore della card a seconda dei minuti di conversazione telefonica consumati. Quando il valore memorizzato diventa nullo si è costretti a ricaricare la card pagando appunto la ricarica. Questo gruppo di pirati è riuscito a capire il modo di raggirare la fase di azzeramento della card riuscendo a ricaricarla senza nessun danno fisico o manipolazione della stessa, per cui l'aspetto esterno di una card ricaricata abusivamente e identico a quello di una card ricaricata ufficialmente. Con questo metodo i pirati sono riusciti a rivendere le card ricaricate a costi inferiori rispetto alle ricariche ufficiali, con profitti illegali molto elevati.
Il 1° novembre 1999 è stata la data della presentazione di un importante documento riguardo la sicurezza delle smartcards, lo "Smart Card Protection Profile", o semplicemente PP. Questo profilo è stato sviluppato per identificare e stabilire una comprensiva lista di requisiti riguardanti la sicurezza delle smartcards basato sullo standard ISO 15408 detto "Common Criteria" (http://csrc.nist.gov/cc/sc/sclist.htm). È stato prodotto dallo sforzo dello SmartCard Security User Group (SCSUG), un gruppo formato espressamente per rappresentare i requisiti di sicurezza. Attualmente fanno parte del SCSUG:

Dato che i primi tipi di smartcards richiedevano tempi lunghi (15/20 sec) per elaborare pesanti algoritmi asimmetrici, in realtà si preferiva diminuire il livello di sicurezza dell'algoritmo per garantire una maggiore velocità nelle operazioni. Questa valutazione è basata anche sulla reale aspettativa di inviolabilità del sistema. In pratica i sistemi venivano progettati non tanto per essere inviolabili al 100%, ma per garantire una soglia minima di inviolabilità. Fortunatamente il miglioramento della tecnologia strutturale delle smartcards consente di applicare efficacemente gli algoritmi moderni ritenuti molto più sicuri. Con la tecnologia CPU Risc inserite nelle card e con una gestione efficiente dei calcoli in virgola mobile si riescono a ottenere risultati notevoli anche in tempi brevissimi.
La tendenza dell'ultimo anno è quella che segue il principio di Kerckhoff (1883) secondo il quale la sicurezza di un crittosistema non dipende dalla segretezza dell'algoritmo (metodo) usato, ma solo dalla segretezza della chiave.