La FIDO (Fast IDentity Online) Alliance è un consorzio industriale nato con l’intento di rendere l’autenticazione online più sicura e al tempo stesso più semplice.
L’obbiettivo dell’organizzazione no-profit è infatti quello di sviluppare le specifiche tecniche dei protocolli necessari a ridurre la dipendenza dalle password per l’accesso a servizi online.
Inoltre il consorzio si propone di mediare l’adozione, a livello globale, dei propri standard riconosciuti e formalizzati. Il 9 dicembre 2014 sono state annunciate le specifiche FIDO v1.0, e già un gruppo di lavoro si occupa della prossima versione
Un po’ di storia
La FIDO nasce da una proposta di collaborazione da parte di Validity Sensors (azienda produttrice di sensori biometrici per l’autenticazione) a PayPal, per rendere quest’ultima “fingerprint enabled”. Il CISO (Chief Information Security Officer) di PayPal decide però di non limitare a questo la collaborazione fra le due case.
Pone invece le basi per FIDO Alliance, aprendo una discussione con altre aziende e industrie del mondo dell’elettronica e informatica, per ideare uno standard adattabile a ogni tipo di autenticazione, non solo biometrica, che fosse riconosciuto e adottato su larga scala.
FIDO Alliance viene quindi formata nell’estate del 2012 con compagnie fondatrici: PayPal, Lenovo, Nok Nok Labs (sviluppatore di soluzioni per l’autenticazione), Validity Sensors, Infineon e Agnitio (soluzioni per il riconoscimento vocale). Presto si uniscono molti altri partner, e una spinta decisiva la da anche la partecipazione della (onnipresente) Google. Sul sito è possibile trovare la lista completa, fra cui spiccano nomi come BlackBerry, MasterCard, Microsoft, Visa, Qualcomm e molti altri.
Bene finita la parte noiosa (l’ho fatta breve dai), parliamo di cose più succose ora.
I protocolli FIDO
L’UX (user experience) di FIDO si basa su due tipi di autenticazione, quella ‘passwordless’ e quella detta ‘second factor’.
Passwordless
Questa modalità viene supportata dal protocollo Universal Authentication Framework (UAF). L’utente registra il proprio terminale presso il servizio internet cui vuole poter accedere sfruttando questo sistema, e vi associa un metodo di autenticazione in locale. Questo può essere una gesture sul touch, un tocco del dito su un sensore integrato, il riconoscimento facciale, parlare nel microfono, un PIN, ecc, o alcune combinazioni di quelli disponibili.
In seguito sarà possibile accedere al servizio internet semplicemente ripetendo l’azione definita, senza più bisogno di inserire le credenziali di accesso al sito.
Second Factor
Si basa invece sul protocollo detto Universal Second Factor (U2F). E’ pensato per aumentare la sicurezza delle credenziali d’accesso. L’utente infatti oltre a inserire come sempre username e password deve anche disporre del ‘second factor’, un dispositivo elettronico come una chiavetta USB o un chip NFC che dispone di un bottone da premere e che completa l’autenticazione.
Come funziona, in pratica?
Al momento della registrazione, il terminale dell’utente genera due chiavi: una privata, che viene conservata sul dispositivo, e una pubblica, che viene affidata al servizio online e associata all’account dell’utente.
L’autenticazione avviene poi con il metodo ‘challenge signing’, cioè, semplificando, il server invia un messaggio che il terminale utente deve essere in grado di contrassegnare correttamente, dimostrandosi in possesso della chiave privata associata a quella pubblica conservata dal server. La chiave privata può essere utilizzata dal software solo previo sblocco da parte dell’utente, che viene fatto con i metodi sopracitati: identificazione biometrica o tramite dispositivo dotato di un pulsante e connesso al dispositivo via USB o NFC.
Si nota come siano quindi tre le entità in gioco in questi protocolli: server e dispositivo, che comunicano a livello di messaggi crittografati, e utente, che funge in qualche modo da chiave egli stesso, fornendo fisicamente al dispositivo un riscontro dell’autenticità della propria richiesta di accesso al servizio.
Public-key cryptography
Approfondiamo un attimo la cosiddetta ‘public-key cryptography’: le chiavi che vengono generate sono, come detto sopra, una pubblica e l’altra privata. Le due chiavi sono matematicamente correlate, ma non sono mai uguali. Questo perché i compiti che svolgono sono diversi e per così dire complementari.
Quella pubblica è utilizzata per criptare il ‘plaintext’, cioè le informazioni che il server vuole inviare al dispositivo utente, e per verificare una firma digitale. La chiave privata è utilizzata per decrittare il ‘ciphertext’, ovvero il messaggio codificato ricevuto dal server, e per creare una firma digitale.
Questa classe di algoritmi per la crittografia, detti anche asimmetrici, si distingue da quelli convenzionali (o simmetrici) che utilizzano invece un’unica chiave per entrambe le funzioni sopra descritte.
La sicurezza dell’algoritmo sta nella funzione di generazione delle chiavi: si tratta infatti, come usuale in crittografia, di problemi matematici (ad esempio le curve ellittiche – vedi più avanti) che non hanno una soluzione, o la cui soluzioni è computazionalmente infattibile trovare.
Questo rende impossibile determinare, a partire dalla chiave pubblica, quale sia la chiave privata corrispondente.
A ulteriore protezione della privacy dell’utente le chiavi che i protocolli FIDO generano non contengono informazioni da cui sia possibile profilare l’utente, e i dati biometrici rimangono conservati unicamente sul dispositivo. Su questa cosa vorrei spenderci due parole in più. Poiché nessun dato biometrico dell’utente lascia mai il suo dispositivo, non c’è la possibilità che un attacco ai server renda disponibili le credenziali di accesso degli utenti, e questa è una gran sicurezza in più.
Nelle immagini potete vedere l’illustrazione dei due processi di registrazione e login.
Registrazione
Login
Sul sito della FIDO Alliance è possibile anche scaricare la documentazione relativa agli standard, per permettere agli sviluppatori di implementare soluzioni che li integrano.
Critiche
E’ stato evidenziato un problema per quanto riguarda la crittografia utilizzata dai protocolli FIDO, infatti (come illustrato nelle specifiche tecniche) viene fatto uso della curva ellittica ‘secp256r1’.
Il problema con questa particolare curva sono i parametri che la descrivono: dovrebbero essere stati generati tramite algoritmi random, ma non è possibile verificare se effettivamente sia così, anzi, ci sono dei dubbi a riguardo, e cioè che siano stati scelti a tavolino.
Non sono comunque noti attacchi che sfruttassero la possibile ‘backdoor’ nascosta nei valori dei parametri.
Cosa sono le curve ellittiche?
Le curve ellittiche utilizzate in crittografia sono curve piane definite da un’equazione del tipo y^2 = x^3 + ax + b.
Come ho detto anche più sopra, gli algoritmi di crittografia si basano sulla soluzione di problemi matematici particolari: semplicissimi se si possiede la chiave crittografica, troppo onerosi a livello computazionale se non la si possiede. Nello specifico, il problema da risolvere è il calcolo della soluzione dell’equazione descrittiva della curva.
A renderlo così complicato è il fatto che la curva venga portata in un campo finito (ovvero un campo con p^n elementi, con p numero primo e n>=1), e quindi la soluzione richieda il calcolo di logaritmi discreti.
Il vantaggio della crittografia a curve ellittiche è di dover disporre, a parità di complessità computazionale, di chiavi più corte rispetto agli algoritmi che fanno uso del problema della fattorizzazione di numeri primi.
Bene, fin qui si è parlato di tutto in termini molto generali. Vediamo ora quali sono le implementazioni pratiche già disponibili, che si possono fregiare dell’apposito marchio registrato FIDO Ready™.
Implementazione e servizi
Qui è possibile vedere quali sono i prodotti, e le rispettive case produttrici, che implementano l’autenticazione con protocolli FIDO. Ci sono già molte soluzioni software-hardware che integrano FIDO, come quelli della Nok Nok Labs (vedi Touch ID sull’iPhone) o come quelli della Samsung (Galaxy S5, Alpha, Tab S, Note 4, Note Edge).
Altri sono invece prodotti hardware, come i sensori touch della Synaptics o le chiavette ‘second factor’ della Yubico. Lungi dal voler fare pubblicità, ma la Yubico mi ha colpito, perché, cercando un po’ in giro questo tipo di security key, ho potuto trovare quasi solo le loro. Hanno una gamma già abbastanza ampia, ci sono una chiavetta dedicata all’autenticazione con FIDO U2F (che costa una ventina di euro su Amazon), una chiavetta in versione nano (per intenderci come il ricevitore di un mouse wireless) e una che include sul corpo della chiavetta USB anche un chip NFC.
Questa non vuole essere una lista esaustiva e se ho stimolato la vostra curiosità potete consultare il link allegato.
Dalla parte dei servizi online che hanno integrato i protocolli FIDO ci sono: Alibaba (in particolare la sezione pagamenti), PayPal, Google (con la verifica in due passaggi ai suoi servizi), LastPass (gestore di password molto noto).
Ciliegina sulla torta, pochi giorni fa la Microsoft ha annunciato l’integrazione degli standard FIDO 2.0 (che sta aiutando a sviluppare) in Windows 10. Sarà quindi possibile l’accesso tramite sensori biometrici non solo al sistema operativo, ma anche a Azure Active Directory e servizi software come Office 365 Exchange Online. In arrivo anche il supporto a Outlook.com e OneDrive.
Bene, e con questo concludo, spero l’articolo vi abbia stimolato a conoscere (o approfondire la conoscenza) dei protocolli FIDO e delle loro potenzialità.
Fonti
(si lo so, tanta Wikipedia, ma sono pagine fatte bene, non vi preoccupate)
- sito della FIDO Alliance
- un paio di editoriali su FIDO qui e qui
- pagina wiki – inglese
- breve scambio su un forum che chiarisce il possibile problema della curva secp256r1
- pagina wiki sulla crittografia ellittica – italiano
- pagina wiki sulla crittografia a chiave pubblica utilizzata dai protocolli FIDO