Riconoscimento biometrico e impronta digitale

Computer Programming n. 123, Aprile 2003

Il riconoscimento biometrico consiste nell’identificazione automatica dell’individuo sulla base di caratteristiche fisiologiche considerate uniche, quali l’impronta digitale, la morfologia dell’iride, la geometria della mano, ecc.
Per le sue peculiarità, il riconoscimento biometrico rappresenta una valida nonché più sicura alternativa ai consueti meccanismi di autenticazione basati su PIN, password, token ecc. La procedura di autenticazione biometrica, infatti, in primo luogo richiede che l’individuo sia fisicamente presente al momento dell’autenticazione e, in secondo luogo, ovvia alla necessità di ricordare PIN e/o password. Infine, poiché le informazioni biometriche non possono in alcun modo essere estorte, se non costringendo l’individuo con la forza (al contrario di quanto avviene per PIN, password, smart card, carte d’identità che possono essere facilmente rubati e usati in maniera fraudolenta), l’impiego di tecniche di riconoscimento biometrico può prevenire accessi non autorizzati o usi fraudolenti di telefoni cellulari, workstation, ATM, POS, ecc.
In questo articolo si presenterà una breve introduzione alla biometria e si illustreranno le principali tecniche di riconoscimento e trattamento dell’informazione biometrica. In seguito, l’attenzione sarà focalizzata sul riconoscimento dell’impronta digitale, che è una delle tecnologie più usate, descrivendo i principali standard e interfacce di programmazione. Infine si presenterà un case study: il progetto europeo E-Poll.
Nella seconda parte di questo articolo, che sarà pubblicata nel prossimo numero di CP, si scenderà nel dettaglio della programmazione e si mostrerà l’implementazione di un sistema di autenticazione basato sul connubio tra impronta digitale e smart card.

La biometria

La biometria è essenzialmente una tecnologia di pattern recognition che consente di identificare un individuo mediante la verifica dell’autenticità di una sua specifica caratteristica fisiologica [1]. Essa si basa sull’assunto che la probabilità di trovare due individui con la stessa identica caratteristica fisiologica è prossima a zero. Per tale motivo, l’insieme delle caratteristiche fisiologiche significative per le biometria si riduce all’insieme composto dall’impronta digitale, la morfologia dell’iride, la configurazione della retina, la geometria della mano, la conformazione del viso, la voce.
La biometria consente due forme di riconoscimento degli individui: autenticazione e identificazione. La prima, esemplificata dal quesito: “Sono chi affermo di essere?”, consiste nella verifica dell’identità dichiarata dall’individuo. La seconda, esemplificata dal quesito: “Chi sono io?”, consiste nello stabilire con certezza l’identità di un individuo sconosciuto.
Ciascuna delle due forme di riconoscimento richiede una specifica metodologia. L’autenticazione prevede il confronto tra un’informazione biometrica acquisita al momento (live-scan) e l’informazione biometrica associata all’individuo che si sta autenticando, estratta da un dispositivo di memorizzazione quale un database, una smart card, ecc. Se il confronto ha esito positivo l’individuo è autenticato. L’identificazione prevede invece una serie di confronti tra l’informazione biometrica appena acquisita e un insieme di informazioni biometriche conservate in un database centrale, alla ricerca di un’informazione biometrica che risulti “identica” alla prima. Se il risultato della ricerca è positivo, l’individuo è identificato.

Le caratteristiche di un sistema di riconoscimento biometrico

Un sistema di riconoscimento biometrico deve basarsi su caratteristiche fisiologiche che rispettino due proprietà imprescindibili: persistenza (la caratteristica fisiologica non deve variare considerevolmente nel tempo) e individualità (la caratteristica fisiologica deve essere unica per ogni individuo). Qualsiasi caratteristica fisiologica che soddisfi entrambe le premesse può essere utilizzata come informazione biometrica [2].
Tipicamente un sistema di biometric recognition è composto da tre parti fondamentali:
1) un apparato di acquisizione dell’informazione biometrica in cui la caratteristica fisiologica dell’individuo viene registrata da un dispositivo di acquisizione (ad esempio uno scanner di retina o di impronta digitale);
2) un meccanismo di estrazione che trasforma i dati significativi dell’informazione biometrica in una rappresentazione macchina;
3) una funzione di confronto che, mediante algoritmi di pattern-matching e decision-making, quantifica la similitudine tra la rappresentazione dell’informazione biometrica acquisita e una rappresentazione precedentemente memorizzata nel sistema.
Se il confronto produce un valore di similitudine maggiore di una certa soglia (threshold), stabilita in fase di progettazione del sistema, le due informazioni biometriche sono considerate provenienti dallo stesso individuo ed il confronto dà esito positivo.
Il protocollo di riconoscimento prevede una fase di registrazione dell’individuo, detta Enrollment, mediante una o più acquisizioni della informazione biometrica che vengono combinate in un template memorizzato dal sistema in un dispositivo di memoria (un database, una smart card, ecc.). Il template rappresenta l’informazione biometrica “ufficiale” associata all’individuo. In seguito, durante la fase di autenticazione, il template viene richiamato e confrontato con un’informazione biometrica acquisita al momento, detta live-scan.
Nella progettazione di un sistema di riconoscimento biometrico occorre, in primo luogo, tenere conto dell’”accettabilità” della misurazione biometrica [2]; il grado di accettabilità dipende da un insieme di fattori complessi e mutabili che sono in relazione con il contesto di riferimento (quindi da fattori sociali quali la cultura, la religione, il grado di fiducia nelle istituzioni, ecc.). In generale comunque, l’accettabilità del sistema è condizionata da due aspetti fondamentali connessi al trattamento delle informazioni biometriche acquisite: la sicurezza e la privacy. Il primo dipende dalla capacità del sistema di salvaguardare le informazioni biometriche acquisite, evitando che qualcuno riesca a impossessarsene per compiere false autenticazioni. Il secondo invece dipende dalla capacità del sistema di garantire che le informazioni biometriche reperite siano usate esclusivamente per lo scopo per il quale sono state acquisite (le informazioni biometriche potrebbero infatti essere usate per determinare lo stato di salute o per tracciare gli spostamenti degli individui).
Dal punto di vista tecnico, si individuano due parametri fondamentali che caratterizzano un sistema di riconoscimento biometrico, e cioè l’FRR (False Rejection Rate) e il FAR (False Acceptance Rate). L’FRR misura la percentuale di casi in cui un individuo, per errore, non viene riconosciuto dal sistema. Il FAR, al contrario, misura la percentuale di casi in cui un individuo sconosciuto al sistema viene erroneamente riconosciuto e quindi confuso con un altro. Le due curve sono riportate nel diagramma in Figura 1 in funzione della soglia di lavoro (threshold).

 
Figura 1

Il punto di lavoro di un sistema di riconoscimento biometrico è determinato dal valore del threshold. Nelle applicazioni militari, dove è richiesto un alto livello di sicurezza, di norma si assegna un valore piuttosto alto al threshold in modo da lavorare con un FAR basso al fine di evitare riconoscimenti errati (sebbene tale scelta comporti anche numerosi falsi rifiuti). Nelle applicazioni giudiziarie (specie nella prassi giudiziaria statunitense), invece, si tende ad assegnare un valore basso al threshold in modo da lavorare con un FRR basso al fine di ridurre le probabilità che un criminale possa non essere riconosciuto dal sistema (tale scelta, per altro, comporta il rischio di identificare erroneamente un innocente). Nelle applicazioni civili, infine, si tende ad operare nelle vicinanze del punto di intersezione detto EER (Equal Error Rate) al fine di mediare tra tutte le possibili condizioni di errore.

BioAPI

Fino a qualche anno fa le applicazioni biometriche venivano realizzate sulla base di specifiche API proprietarie, fornite dal costruttore dello strumento di acquisizione, insieme ad altre API necessarie al trattamento dell’informazione biometrica (costruzione del template, confronto, ecc.). In tale scenario, sistemi biometrici basati sulla stessa tecnologia ma realizzati con dispositivi di acquisizione e algoritmi provenienti da fornitori distinti erano totalmente incompatibili (nel senso che le informazioni acquisite in un sistema non erano utilizzabili nell’altro).
Il diffondersi delle tecnologie biometriche ha enfatizzato la necessità di disporre di un’interfaccia standard che consentisse di svincolarsi dal particolare dispositivo di acquisizione e proponesse una metodologia comune per il trattamento delle informazioni biometriche. Nell’aprile del 1998, alcune società e istituzioni, tra cui il NIST (National Institutes of Standards and Technology), US Biometrics Consortium, Intel , fondarono il BioAPI Consortium [7] con l’obiettivo di sviluppare un API standard per qualsiasi tipo di tecnologia biometrica. Nel marzo 2000 il consorzio ha pubblicato la versione 1.0 delle specifiche BioAPI e attualmente è disponibile la versione 1.01 dell’implementazione [3].
La BioAPI propone un modello di programmazione ad “alto livello” adatto a tutte le tecnologie biometriche basato sul concetto di Biometric Service Provider (BSP) (Figura 2).

 
Figura 2

Quest’ultimo fornisce le principali funzionalità di Acquisizione, Enrollment, Verifica e Identificazione e offre un insieme di primitive per la realizzazione di protocolli di riconoscimento biometrico personalizzati. Le informazioni biometriche provenienti dal dispositivo di acquisizione sono rappresentate nel BSP sotto forma di Biometric Information Record (BIR). Il dispositivo restituisce un BIR “rozzo” (raw) che viene trattato dal BSP, mediante una serie di algoritmi di ottimizzazione ed estrazione delle informazioni significative, per produrre una serie di BIR intermedi fino al BIR finale pronto all’uso (ready for Authentication or Identification). L’approccio adottato nella stesura di tali specifiche è stato di nascondere, per quanto possibile, gli aspetti caratteristici della particolare tecnologia biometrica e gli aspetti implementativi proprietari di uno specifico produttore di strumenti di acquisizione, mettendo in evidenza, in uno strato ad alto livello di astrazione, gli aspetti comuni. Il risultato è stato un API che consente di sviluppare speditamente applicazioni biometriche flessibili e intercambiabili e per piattaforme e sistemi operativi diversi. BioAPI espone, al livello più alto, le tre funzioni fondamentali mostrate in Tabella 1/a. Tali funzioni sono implementate su uno strato a livello più basso che comprende le funzioni mostrate in Tabella 1/b. BioAPI fornisce poi una serie di funzioni per la gestione dei dispositivi di acquisizione (inizializzazione, connessione al dispositivo, ecc.) e alcune funzioni di callback che consentono di personalizzare il comportamento di default del BSP (per una descrizione dettagliata di BioAPI si rimanda a [5]). Nel seguito di quest’articolo si mostrerà un esempio di uso di BioAPI in C in relazione al riconoscimento dell’impronta digitale.

L’impronta digitale

L’impronta digitale è la più antica tra le informazione biometriche. Largamente usata dalle forze dell’ordine per individuare i criminali e come prova indiziaria nei processi giudiziari, rappresenta un valido sistema di identificazione degli individui. Il riconoscimento dell’impronta digitale si attua mediante lo studio della configurazione delle piccole rughe presenti nel polpastrello (Figura 3).

 
Figura 3

La fase preliminare opera una classificazione dell’impronta sulla base delle sue caratteristiche morfologiche: spirale destra, spirale sinistra, vortice, arco, arco acuto, doppia spirale ecc. [4], [5] (la maggior parte degli esperti individuano sei classi). La fase successiva procede con l’analisi di tali rughe considerandole composte da due tratti fondamentali, detti terminazione e biforcazione (Figura 4), che insieme formano la minutiae.

 
Figura 4

Lo studio delle minuzie presenti in due impronte digitali e la loro collocazione all’interno dell’intera figura dell’impronta, consente di determinare un coefficiente di similarità proporzionale al numero di minuzie corrispondenti nelle due impronte. Maggiore è tale numero, maggiore è la probabilità che le due impronte appartengano allo stesso individuo.

Acquisizione dell’impronta digitale: Enrollment

Fino a qualche anno fa, come spesso si vede nei vecchi film americani, l’acquisizione dell’impronta digitale avveniva imprimendo il dito intriso di inchiostro su di un foglio di carta; successivamente l’impronta sul foglio veniva convertita in immagine e immagazzinata in un database. Da pochi anni sono invece disponibili dei dispositivi a scansione ottica che consentono di acquisire l’impronta in formato digitale senza l’uso di inchiostro.
I dispositivi più vecchi sono basati su tecnologia a riflessione interna e consentono di acquisire un’impronta molto precisa e chiara con un margine di errore molto piccolo; tali dispositivi tuttavia si rivelano troppo grandi, lenti e molto costosi. I più moderni invece sono basati su sensori capacitivi CMOS. Sono più veloci ed economici dei precedenti, hanno un’area di acquisizione più piccola (di dimensioni minori di un francobollo), e pertanto possono essere usati in dispositivi mobili quali computer portatili, palmari, telefoni cellulari ecc. Hanno però un margine di errore leggermente più alto.
Come detto, il processo di acquisizione dell’impronta è detto Enrollment. Tipicamente l’individuo pone più volte il proprio dito sul dispositivo di acquisizione al fine di eliminare i rumori e gli errori intrinseci dello strumento. Le diverse misurazioni sono combinate, mediante un algoritmo di estrazione delle informazioni significative, a formare un template che rappresenta l’impronta digitale “ufficiale” dell’individuo. Generalmente il template viene memorizzato in un database centrale se si tratta di un sistema di identificazione. Se, al contrario, si tratta di un sistema di autenticazione il template può essere conservato in dispositivo mobile come una smart card (in modo da avere sempre con sé l’impronta “originale”) o in un file sulla postazione di autenticazione. Quando possibile, la soluzione con smart card è preferibile poiché risolve brillantemente le problematiche relative alla riservatezza delle informazioni biometriche (e quindi anche quelle relative alla legge 675 sulla privacy). Difatti, poiché l’impronta acquisita dal dispositivo è memorizzata sulla smart card e protetta dalle funzionalità di sicurezza che questa offre, nessuno, se non il titolare, può avere accesso alla propria impronta (per un approfondimento sul tema smart card si veda [5]).

Inizializzazione di BioAPI

Prima di ogni altra operazione con BioAPI, occorre eseguire le procedure di inizializzazione e di selezione del dispositivo biometrico. Il Listato 1 (gli esempi riportati sono estratti dal SDK fornito insieme al dispositivo di acquisizione dell’impronta digitale fornito da Precise Biometrics [9]) mostra un’implementazione in C di tali procedure.

#include "bioapi.h"
#include "bioapi_schema.h"
#include "port/bioapi_port.h"
#include "bioapi_uuid.h"
#include "bioapi_util.h"

// Procedura di Inizializzazione
///////////////////////////////////

BioAPI_RETURN      bioReturn;
BioAPI_VERSION    bioVersion;
BioAPI_BSP_SCHEMA *BspSchemaArray, *CurrSchema;
BioAPI_HANDLE     gModuleHandle;                    
    
long ArraySize, ElementsNeeded, NumElementsReturned, i;
          
// inizializza BioAPI   
bioVersion.Major = BioAPI_MAJOR;
bioVersion.Minor = BioAPI_MINOR;        

bioReturn = BioAPI_Init(&bioVersion, 0, NULL, 0, NULL);       

// verifica l'inizializzazione
if(BioAPI_OK != bioReturn)
{
    if(BioAPIERR_H_FRAMEWORK_INCOMPATIBLE_VERSION == bioReturn)
    {
      printf("This application is not compatible with the installed version of the BioAPI\r\n");
    }
    else
    {
      printf("Error n: %x \r\n", bioReturn);
    }
    
    return false;
}

// enumera i dispositivi biometrici disponibili 
// inizializza l'enumerazione
bioReturn = BioAPI_EnumModules(NULL, 0, &ElementsNeeded, &NumElementsReturned);
if(bioReturn != BioAPI_OK)
{
  printf("Error n: %x \r\n", bioReturn);
  return false;
}

ArraySize = ElementsNeeded;
BspSchemaArray = (BioAPI_BSP_SCHEMA *)malloc(ElementsNeeded * sizeof(BioAPI_BSP_SCHEMA));
if(BspSchemaArray == NULL)
{
  printf("Unable to allocate BSP list");
  return false;
}

// estrae l'enumerazione
bioReturn = BioAPI_EnumModules(BspSchemaArray, ArraySize, &ElementsNeeded, &NumElementsReturned);
if(bioReturn != BioAPI_OK)
{
  printf("Error n: %x \r\n", bioReturn);
  free(BspSchemaArray);
  return false;
}

// prende il primo elemento dell'enumerazione
CurrSchema = BspSchemaArray;    

// carica il modulo associato al primo dispositivo nell'enumerazione
bioReturn = BioAPI_ModuleLoad(CurrSchema->ModuleId, 0, NULL, 0);
if(BioAPI_OK != bioReturn)
{
  printf("Error n: %x \r\n", bioReturn);    
  free(BspSchemaArray);

  return false;
}

// Apre la connessione con il dispositivo caricato
Version.Major = BioAPI_MAJOR;
Version.Minor = BioAPI_MINOR;
bioReturn = BioAPI_ModuleAttach(CurrSchema->ModuleId, 
                                &Version, 
                                &BioAPIWinMemoryFuncs,
                                0,
                                0,0,0,
                                NULL,
                                0,
                                NULL,
                                &gModuleHandle);
                                
if(BioAPI_OK != bioReturn)
{
  printf("Error n: %x \r\n", bioReturn);    
  free(BspSchemaArray);
  BioAPI_ModuleUnload (CurrSchema->ModuleId, NULL, 0);            
  return false;
}

Listato 1

In alto sono riportati gli header file necessari per la compilazione. Il primo passo è una chiamata alla funzione BioAPI_Init che inizializza il BSP installato. Quindi si procede con la selezione del dispositivo biometrico da usare. Poiché potrebbero essere installati più dispositivi biometrici, la funzione BioAPI_EnumModules resitituisce una collezione di dispositivi disponibili. Nell’esempio illustrato viene selezionato il primo. Tale modulo viene poi caricato mediante la funzione BioAPI_ModuleLoad e viene attivato attraverso la funzione BioAPI_ModuleAttach.

Enrollment con BioAPI

Il Listato 2 mostra un’implementazione in C della procedura di Enrollment mediante la funzione ad alto livello BioAPI_Enroll.

// Procedura di Enollmment
////////////////////////////

BioAPI_RETURN     bioReturn;                                  
BioAPI_BIR_HANDLE   EnrolledTemplate               

// Esegue l'enrollment con la funzione ad alto livello            
bioReturn = BioAPI_Enroll(gModuleHandle,
                          BioAPI_PURPOSE_ENROLL_FOR_VERIFICATION_ONLY,
                          NULL,
                          &EnrolledTemplate,
                          NULL,
                          -1,
                          NULL);

if(bioReturn != BioAPI_OK)
{
  printf("Error n: %x \r\n", bioReturn);    
  return false;
}

// Memorizza il BIR acquisito in un dispositivo di memoria
WriteBIR(EnrolledTemplate);

Listato 2

Tale funzione è considerata ad alto livello poiché la sua implementazione comprende una serie di chiamate a funzioni appartenenti al livello inferiore quali BioAPI_Capture, BioAPI_Process, BioAPI_CreateTemplate, etc. Il risultato è un template sotto forma di BIR che viene memorizzato in un dispositivo di memoria mediante la funzione WriteBIR.

Autenticazione con BioAPI

Il Listato 3 mostra una possibile implementazione in C della procedura di Autenticazione mediante l’insieme di funzioni a basso livello di BioAPI.

// Procedura di verifica con le funzioni a basso livello
//////////////////////////////////////////////////////////

BioAPI_RETURN     bioReturn;                              

BioAPI_VERSION    Version;
BioAPI_BIR_HEADER birHeader;
BioAPI_BOOL     bResponse;
BioAPI_BOOL     bPrecedence = BioAPI_TRUE;

BioAPI_BIR_HANDLE CapturedTemplate, ProcessedBir;

BioAPI_INPUT_BIR birEnroll, birCapture, InputBirProcessed;

BioAPI_FAR MaxFAR, AchievedFAR;

// legge il BIR memorizzato in un dispositivo di memoria                                                             
if(ReadBIR(&birEnroll) != BioAPI_OK)
{
    printf("BIR not found");
    return false;
}

// Acquisisce l'impronta live-scan
if((bioReturn = BioAPI_Capture(gModuleHandle,

                               BioAPI_PURPOSE_VERIFY,
                               &CapturedTemplate,
                               -1,
                               NULL)) != BioAPI_OK)
{
    printf("Error n: %x \r\n", bioReturn);    
    GlobalFree(birEnroll.InputBIR.BIR);

    return false;
}

// estrae l'header del BIR appena acquisito
if((bioReturn = BioAPI_GetHeaderFromHandle(gModuleHandle,
                                           CapturedTemplate,
                                           &birHeader)) != BioAPI_OK)
{
    printf("Error n: %x \r\n", bioReturn);    
    GlobalFree(birEnroll.InputBIR.BIR);

    return false;
}
    
// verifica il tipo di BIR acquisito        
if(birHeader.Type == BioAPI_BIR_DATA_TYPE_INTERMEDIATE)
{
    // se il BIR non è stato ancora processato chiama la funzione Process
    birCapture.Form = BioAPI_BIR_HANDLE_INPUT;
    birCapture.InputBIR.BIRinBSP = &CapturedTemplate;

    if((bioReturn = BioAPI_Process(gModuleHandle,
                                    &birCapture,
                                    &ProcessedBir)) != BioAPI_OK)
    {
        printf("Error n: %x \r\n", bioReturn);    
        GlobalFree(birEnroll.InputBIR.BIR);
        return false;
    }
        
    InputBirProcessed.InputBIR.BIRinBSP = &ProcessedBir;
}
else
{
    // il BIR acquisito è stato già processato           
    InputBirProcessed.InputBIR.BIRinBSP = &CapturedTemplate;
}

// Imposta il FAR        
MaxFAR = 1;
// imposta la forma del BIR
InputBirProcessed.Form = BioAPI_BIR_HANDLE_INPUT;

// esegue la verifica
bioReturn = BioAPI_VerifyMatch(gModuleHandle,
                               &MaxFAR,
                               NULL,
                               &bPrecedence,
                               &InputBirProcessed,
                               &birEnroll,
                               NULL,
                               &bResponse,
                               &AchievedFAR,
                               NULL,
                               NULL);

// libera la memoria        
GlobalFree(birEnroll.InputBIR.BIR);

if(bioReturn != BioAPI_OK)
{
    printf("Error n: %x \r\n", bioReturn);    
    return 0;
}

if(bResponse)
  printf("Fingerprints Match");
else 
  printf("Fingerprints do not Match");

Listato 3

Il primo passo consiste nell’acquisizione di un’immagine live-scan mediante la procedura BioAPI_Capture. Tale funzione, in base alla particolare implementazione del BSP, mostra all’utente un’interfaccia grafica attraverso la quale chiede di porre il dito sulla finestra di acquisizione e attende che sia disponibile un’impronta valida. Al termine dell’acquisizione restituisce un BIR che, sempre in base all’implementazione del BSP, può essere intermediate o processed. Nel primo caso occorre chiamare la funzione BioAPI_Process per trasformare il BIR da intermediate a processed.
Il passo successivo consiste nel leggere il template, precedentemente memorizzato nella procedura di Enrollment, mediante la funzione ReadBIR, e di confrontarlo con l’impronta appena acquisita.
La funzione BioAPI_VerifyMatch esegue tale confronto sulla base del FAR impostato e restituisce il responso come valore booleano.

Un case study: il progetto E-Poll

Il progetto di voto elettronico denominato E-Poll, il cui nome completo è “Electronic polling system for remote voting operations” [7], nasce come progetto europeo di ricerca e sviluppo cofinanziato per il 50% dalla Direzione Generale per la Società dell’Informazione della Commissione dell’Unione Europea nell’ambito del programma IST (Information Society Technologies) e per il 50% dal partenariato che ha ideato il progetto e lo sta portando avanti con successo (in Italia il partenariato è costituito dal Ministero dell’Interno, da Siemens Informatica che funge da coordinatore del progetto e da Ancitel).
Il progetto E-Poll realizza un sistema di voto elettronico a distanza con l’obiettivo dichiarato di semplificare le operazioni di voto attraverso l’integrazione di soluzioni tecnologiche di avanguardia tra cui: autenticazione (con garanzia di riservatezza), autorizzazione, trasmissione del voto (in situazione di sicurezza), conteggio dei voti, ecc. In particolare, la procedura di autenticazione è realizzata mediante un sistema di riconoscimento dell’impronta digitale con l’ausilio di una smart card come contenitore del template “ufficiale”.
Il sistema di voto prevede che l’elettore, dotato della smart card personale contenente la propria impronta digitale, si rechi al seggio E-Poll, si autentichi in un chiosco “pubblico” (che consiste in un PC dotato di touch-screen, di lettore di smart card e di dispositivo di acquisizione dell’impronta digitale) per ricevere il diritto di voto sotto forma di file memorizzato sulla smart card, e si rechi nel chiosco “riservato” dove potrà esprimere il proprio voto utilizzando le schede elettorali digitali, mediante touch-screeen.
La scelta di memorizzare l’impronta digitale sulla smart card personale consente di salvaguardare la riservatezza delle informazioni biometriche poiché il file contenente il template è protetto in lettura/scrittura tramite le funzionalità di sicurezza offerte della smart card.
Ulteriori informazioni sul progetto E-Poll sono disponibili su [7].

Conclusioni

Le tecniche basate sul riconoscimento biometrico hanno assunto un ruolo di primo piano nell’ambito dei progetti connessi alla sicurezza. Per avere un’idea delle numerose applicazioni che sono state realizzate, basta visitare una delle numerose conferenze sul tema che si tengono in varie parti del mondo come ad esempio il CardTech-SecureTech (USA) o Carte (Parigi). La diminuzione dei costi degli apparati hardware e la crescente potenza di calcolo offerta dai Personal Computer hanno consentito di impiegare la tecnologia biometrica in applicazioni personalizzate secondo le esigenze del cliente, anche in ambiti piuttosto ristretti. Sono ad esempio disponibili, a prezzi abbordabili, prodotti dedicati al mercato home di fascia alta che consentono di controllare l’accesso al proprio PC mediante dispositivi di acquisizione dell’impronta digitale inseriti nel mouse [8].
I sistemi di riconoscimento biometrico richiamano inevitabilmente l’idea di un meccanismo di controllo di massa che, come tale, pregiudica il diritto alla privacy individuale; tuttavia, un adeguato quadro legislativo mirato a salvaguardare tale diritto potrà dare maggiore impulso alla loro diffusione ed evoluzione tecnologica, consacrandoli definitivamente come successori naturali degli attuali sistemi di autenticazione e identificazione.

Bibliografia

[1] A. Jain, “An Overview of Biometrics”, http://biometrics.cse.msu.edu/info.html , 2002
[2] A. Jain, S. Pakanti, “Automated Fingerprint Identification and Imaging”, http://biometrics.cse.msu.edu, 11/2002
[3] BioAPI Specification, Version 1.01, http://www.bioapi.org, 11/2002
[4] R. M. Bolle ed altri, “Fingerprint Minutiae, A Constructive Definition”, http://biometrics.cse.msu.edu, 11/2002.
[5] Federal Bureau of Investigations, “The Science of Fingerprints: Classification and Uses”, US Department of Justice, Washington D.C., 1984