Sicurezza nel GSM
Approfondimenti
A cura di: M. Bresco, G. Pradal, E. Tomasco
Coordinamento: Prof. Alfredo De Santis
Sistemi di elaborazione dell'informazione (Sicurezza su Reti)
Università di Salerno - Anno Acc.1999-2000Il sistema GSM è stato uno dei primi sistemi di telefonia mobile digitale che ha seguito l’era analogica. I problemi maggiormente conosciuti con i sistemi analogici erano la possibilità di frodi telefoniche attraverso la clonazione dei telefoni che permetteva di effettuare chiamate a spese di qualcun altro e la possibilità che qualcuno intercettasse la chiamata telefonica via-etere e decifrasse la conversazione. Il sistema GSM è stato progettato per correggere questi problemi implementando sia una rigida autenticazione sia una forte codifica dei dati sul canale per le trasmissioni via-etere tra il cellulare e la rete.
Le specifiche del GSM sono state progettate dal GSM Consortium in segretezza e distribuite solo in base alla necessità di conoscenza dei fabbricanti hardware e software, ed agli operatori della rete GSM. Le specifiche non sono mai state esposte al pubblico, prevenendo così l’apertura di una comunità scientifica nel mondo che studiasse gli algoritmi di autenticazione e di cifratura dell’intero modello di sicurezza GSM. Il GSM Consortium ha fatto affidamento sulla sicurezza mediante la segretezza, cioè gli algoritmi sarebbero stati difficili da rompere se non fossero stati pubblicamente disponibili. In accordo con la comunità scientifica, una delle richieste di base per algoritmi di crittografia forti è che la sicurezza dei crittosistemi dipenda solamente dalla chiave. Questo principio è conosciuto come assunzione di Kerckhoffs. L’algoritmo in questione dovrebbe essere pubblicamente disponibile, così che esso possa essere esposto allo scrutinio pubblico. È opinione generale, infatti, che nessuna singola entità possa impiegare abbastanza esperti per competere con la comunità scientifica nella crittoanalisi di un algoritmo. Così gli algoritmi progettati ed implementati in segreto probabilmente saranno in qualche modo crittograficamente deboli e conterranno errori di progettazione. Tuttavia, gli algoritmi GSM sono stati resi pubblici e sono stati ampiamente studiati dalla comunità scientifica. Durante la crittoanalisi degli algoritmi A3, A5 e A8 sono stati scoperti particolari interessanti.
In questo paragrafo si introdurrà il modello di sicurezza GSM, prestando una particolare attenzione al cifrario A5 (ed alla famiglia degli stream cipher a cui A5 appartiene) e si esploreranno alcuni punti vulnerabili di questo modello per mostrare che possono essere attaccati da una persona maliziosa, che potrebbe essere o un operatore di rete o un utente. Si mostrerà, inoltre, che sulla rete GSM è possibile sia intercettare che decifrare una chiamata telefonica a prescindere dalle affermazioni del GSM Consortium. Durante l'analisi dei differenti tipi di attacco al sistema GSM, si mostreranno anche alcuni metodi di intercettazione che possono essere implementati per origliare e decifrare una chiamata telefonica su un GSM. Verranno introdotti sei diversi tipi di attacco. Si forniranno alcuni suggerimenti su come la sicurezza della rete GSM potrebbe essere migliorata in futuro, allo scopo di garantire la privacy agli abbonati GSM.
Introduzione
Un approccio alternativo a quello dei cifrari a blocchi consiste nell’utilizzo degli stream cipher. A differenza dei cifrari a blocchi nei quali la stessa chiave k viene riutilizzata per la cifratura di ogni blocco, l’idea di base degli stream cipher consiste nel generare una sequenza, a partire da k, detta keystream:
z = z1z2...
e nell’utilizzarla per cifrare la stringa
x = x1x2....
del testo in chiaro nel modo seguente:
y = y1y2.... = ez1(x1) ez2(x2)....
dove:
zi = fi(k, x1,x2,....,xi-1).
Per semplicità si considerano i singoli xi, zi, yi e k Î Z26.
L’elemento zi della sequenza è utilizzato per cifrare xi. Pertanto, per cifrare la stringa x1x2 .... bisogna calcolare
z1 y1 z2 y2 ....
Analogamente per decifrare la stringa y1y2 .... si calcola
z1 x1 z2 x2 ....
Per esempio, le funzioni di cifratura e decifratura potrebbero essere del tipo:
yi = xi + zi mod 26
xi = yi - zi mod 26
Gli stream cipher sono spesso definiti in Z2. In tal caso le funzioni di cifratura e decifratura possono essere le seguenti:
ezi(xi) = xi + zi mod 2
dzi(yi) = yi - zi mod 2
Associando a "0" il valore booleano "falso", e ad "1" il valore booleano "vero" allora l'addizione e la sottrazione modulo 2 corrispondono allo XOR, pertanto la cifratura e la decifratura possono essere implementate molto efficientemente in hardware. Un metodo per generare la keystream a partire da m valori k1, ..., km, consiste nel fissare i valori per z1,...,zm con zi = kj per ogni i = 1,2,...,m e nel calcolare i valori successivi in base ad una relazione di ricorrenza lineare di grado m:
dove c0, ..., cm-1 Î Z2 sono costanti predeterminate che individuano univocamente un polinomio chiamato polinomio delle connessioni che ha la forma seguente:
c0zm + c1zm-1 + c2zm-2 + ........ + cm-1z + 1
Questa ricorrenza è detta lineare perché zi+m è funzione lineare dei termini precedenti, ed ha grado m dato che ciascun termine dipende dagli m precedenti. In tal caso la chiave consiste dei 2m valori
(k1, ..., km, c0, ..., cm-1),
dove Ki = zi per i = 1, ..., m.
Esempio Sia m = 4 e sia la keystream generata nel modo seguente:
zi+4 = zi + zi+1 mod 2
dove i > 1. Se ad esempio si considerano i seguenti valori di k: 1, 0, 0, 0 la keystream corrispondente è:
1, 0, 0, 0, 1, 0, 0, 1, 1, 0, ....
Un altro aspetto interessante di questo metodo è che la keystream può essere generata in hardware in modo molto efficiente utilizzando un linear feedback shift register (LFSR).
Si consideri un registro con m stadi. Il vettore (k1, ..., km) viene usato per l’inizializzazione. Ad ogni istante vengono effettuate contemporaneamente le seguenti operazioni:
- k1 è il bit di output del LFSR;
- i valori k2, ..., km vengono shiftati a sinistra di una posizione;
- viene calcolato il nuovo valore di km, che è
Esempio
Consideriamo il linear feedback shift register relativo all’esempio precedente.
L’inizializzazione dei registri viene fatta in questo modo:
z0 = 1, z1 = 0, z2 = 0, z3 = 0
dopo di che il contenuto del primo registro sarà dato in output come primo bit della keystream, il contenuto degli altri registri sarà shiftato di una posizione a sinistra e lo XOR dei primi due registri verrà inserito nell’ultimo registro.
In generale il funzionamento del linear feedback shift register è illustrato nella seguente figura:
Quando si utilizza uno stream cipher, da un certo istante in poi, i bit della keystream cominciano a ripetersi. L’ampiezza dell’intervallo di ripetizione dei bit si chiama periodo. Il periodo dipende dal polinomio delle connessioni e tanto più è grande, tanto più il cifrario è sicuro. La keystream relativa a questo esempio ha periodo 15 (al massimo possiamo avere 16 combinazioni dei 4 bit, ed inoltre quella con tutti 0 non viene considerata, poiché darebbe luogo ad una keystream composta da soli 0) ed il polinomio delle connessioni ad essa associato è x4 + x3 + 1.
Questo cifrario può essere considerato un caso particolare di stream cipher in cui la sequenza degli zi è calcolata nel modo seguente: zi = kj per i£m, zi = xi-m, per i > m. Le funzioni di cifratura e decifratura sono le seguenti:
yi = xi + zi mod 26
xi = yi - zi mod 26
Nel caso in cui la lunghezza della chiave k sia 1, questo tipo di cifrario può essere rotto con soli 26 tentativi.
Il modello di sicurezza GSM è basato su un segreto condiviso tra l’ HLR della rete di appartenenza del sottoscrittore e la carta SIM di quest'ultimo. Il segreto condiviso, chiamato Ki, è una chiave di 128 bit. La chiave Ki viene utilizzata sia per l’autenticazione alla rete GSM, sia per la generazione della chiave di sessione a 64 bit Kc, usata per la codifica sul canale via-etere.
Il flusso di dati trasmesso tra la MS e la stazione base (BTS) viene diviso in frame. Ciascun frame contiene 114 bit e rappresenta una parte della comunicazione tra MS e BTS o viceversa. Un nuovo frame viene inviato ogni 4.6 ms ed è identificato con un numero sequenziale di 22 bit chiamato Fn. Ogni volta che viene inviato un frame, Fn viene incrementato di 1. All'inizio di una trasmissione è necessario che MS e BTS si accordino sul valore iniziale di Fn. Per l'intera durata della comunicazione, vengono inviati due frame alla volta: uno da MS a BTS ed uno da BTS a MS.
Quando la MS vuole comunicare con la rete GSM, invia una richiesta di accesso alla BTS che la inoltra alla MSC. Alla richiesta di identificazione della MS alla rete, l’HLR fornisce alla MSC cinque triple contenenti:
- RAND, un numero casuale a 128 bit;
- SRES, calcolata su RAND e sulla chiave Ki, utilizzando l'algoritmo A3;
- Kc, la chiave di sessione. Essa viene calcolata mediante l'algoritmo A8 che prende in input RAND e Ki.
Ogni tripla viene utilizzata per una autenticazione della MS confrontando la SRES inviata dalla MS con la SRES della tripla. Quando tutte le triple sono state utilizzate l’HLR fornisce un nuovo insieme di cinque triple per l’MSC.
AUTENTICAZIONE
Quando la MS entra nell’area di una MSC invia un richiesta di accesso alla rete (vedi paragrafo seguente). L’MSC invia la RAND della prima tripla alla MS. La MS calcola una SRES con l’algoritmo A3 utilizzando la RAND ricevuta dalla MSC, e la chiave Ki che risiede nella SIM. Quindi, la MS invia la SRES alla MSC, che la può confrontare con la SRES contenuta nella tripla dell’HLR. In questo modo la MS si è identificata all’MSC.
Procedura di autenticazioneLa scelta di generare una stringa casuale è dovuta al fatto che se tale stringa non fosse generata, il valore SRES trasmesso dalla MS alla BTS sarebbe sempre lo stesso; si potrebbe, dunque, effettuare un attacco di ripetizione.
Tutto l'intero costrutto per la sicurezza si fonda su criteri inerenti l'identificazione dell'abbonato, introdotti specificamente con il sistema GSM. L'abbonato è identificato univocamente dal codice IMSI che, unitamente alla chiave personale di autenticazione Ki, costituiscono le credenziali di identificazione. L'innovazione particolare è che le procedure di autenticazione e crittografia al fine di garantire maggiore sicurezza e protezione nel sistema si esplicano in modo che queste informazioni non vengano mai trasmesse sul canale radio. Precisamente, per l'autenticazione si utilizza un meccanismo di tipo challenge-response, mentre per la crittografia dei dati trasmessi si adotta una chiave di sessione Kc, ed anch'essa non viene mai trasmessa sul canale radio. Gli elementi del sistema GSM che intervengono attivamente nella realizzazione delle procedure sono la SIM, il ME, la BSS e l'NS. La SIM contiene il codice IMSI, la chiave personale di autenticazione Ki, l'algoritmo A8 che genera la chiave temporanea di crittografia Kc, l'algoritmo A3 di autenticazione dell'abbonato ed il Personal Identification Number (PIN). Il terminale mobile ME racchiude l'algoritmo A5 di crittografia. Nella rete GSM le informazioni sono distribuite tra le varie componenti. Nella BTS sono predisposti l'algoritmo A5 e, in fase di crittografia, la chiave Kc. Alla base dei processi di crittografia ed autenticazione c'è l'unità funzionale AuC che utilizza i codici TMSI/IMSI, il codice LAI (Location Area Identity), la chiave Ki, gli algoritmi A3 ed A8 oltre ad un algoritmo per la generazione di numeri pseudo-casuali. L'AuC memorizza nei database VLR ed HLR i parametri di sicurezza.
ANONIMIA - RISERVATEZZA DELL'IDENTITÀ DELL'ABBONATO
L'anonimia consiste nell'uso di un temporary identifier specifico per l'MS. Difatti, il GSM dovendo provvedere a proteggere l'IMSI di un utente sull'interfaccia aerea, procede assegnando un ID temporaneo (TMSI), che è un numero di identificazione provvisorio usato durante l'aggiornamento dell'ubicazione per proteggere la vera identità di chi chiama. Si tenga conto che sia l'IMSI che il TMSI, sono immagazzinati direttamente nella SIM: il primo in modo permanente, il secondo in un'area di memoria riscrivibile.
Le procedure di sicurezza sono preordinate a non trasmettere mai sul canale radio le credenziali di identificazione (codice IMSI e chiave Ki) per evitare, ad esempio, che possa essere monitorata la posizione dell'utente intercettandone l'identità. D'altro canto è evidente che la rete può autenticare la SIM solo se ne conosce l'identità. Pertanto, nei casi in cui non vi dovessero essere altri modi per procedere all'identificazione, il codice IMSI è utilizzato per aprire la sessione.
Ne consegue che, quando una mobile station entra in un'area MSC/VLR diversa e accende il segnale radio utilizzando per la prima volta la SIM, obbligatoriamente viene usata la sua vera identità (IMSI) che viene immediatamente sostituita con la sua identificazione provvisoria (TMSI), ed è proprio quest'ultima ad essere resa pubblica nella rete. Infatti, non appena si conclude con successo l'autenticazione, la rete assegna alla SIM un TMSI e lo trasmette in forma cifrata alla MS dove viene poi decifrato. La MS risponde confermando l'avvenuta ricezione e memorizza il TMSI nella SIM. Da questo momento, per tutte le comunicazioni successive, il codice TMSI è utilizzato al posto del codice IMSI.
Le riallocazioni sono temporalmente preordinate, cioè avvengono in istanti specifici stabiliti direttamente dall'operatore, ad esempio ad ogni accesso alla rete. Il codice TMSI è valido esclusivamente nella Location Area (LA) in cui è stato rilasciato; di conseguenza, per le comunicazioni al di fuori della LA, è necessario ricorrere all'utilizzo del LAI in aggiunta al TMSI. Ogni volta che si compie un Location Updating il VLR assegna una nuova TMSI alla MS e la invia insieme al messaggio che comunica l'esatto aggiornamento della localizzazione (Location Updating Accept). Alla ricezione di questo messaggio, la MS provvede a rispondere con un preciso messaggio di conferma (TMSI Reallocation Complete).
Si osservi che il codice TMSI, quando il processo di crittografia è stato attivato può essere riallocato anche in occasione di altri accessi alla rete. Ciò che avviene in proposito è che la rete trasmette una esplicita TMSI Reallocation Request cifrata; la MS risponde con una TMSI Reallocation Confirmation cifrata. Nell'eventualità che per vari motivi, il codice TMSI inviato da una MS non venga riconosciuto dalla rete, ad esempio a causa di un fallimento della fase di autenticazione, si attiva la procedura di Identity Request tramite la quale viene richiesto alla MS l'invio del proprio IMSI.
Per una maggiore chiarificazione si consideri la seguente figura, che illustra il processo di assegnazione di un nuovo TMSI (TMSI-n) come risultato di un aggiornamento della locazione.
Pertanto, si noti che il processo comincia con la richiesta della MS per un aggiornamento della locazione con il TMSI-n. Dopo che la MS riceve il TMSI-n, si attiva il processo di riconoscimento di TMSI al BSS che viene infine spedito al VLR dall'MSC. In questo modo la protezione è ottenuta usando un'identità alias al posto dell'identità permanente dell'abbonato.
GENERAZIONE DELLA CHIAVE DI SESSIONE
La MS allora genera una chiave di sessione Kc con l’algoritmo A8, usando la stessa RAND utilizzata per l'autenticazione e la Ki memorizzata nella SIM. La BTS riceve Kc dalla MSC. Ora tutto ciò che viene trasmesso sul canale di comunicazione via-etere tra BTS ed MS viene cifrato utilizzando la keystream generata con la chiave Kc mediante l'algoritmo A5.
Tale algoritmo viene inizializzato con la chiave Kc ed il numero di frame da cifrare, generando così una keystream differente per ogni frame. Questo significa che una telefonata può essere decifrata qualora l’attaccante conoscesse Kc in quanto il numero di frame viene trasmesso in chiaro. La stessa Kc viene utilizzata fin quando l’MSC non identifica nuovamente la MS, nel qual caso ne viene generata una nuova.
Procedura di crittografia (calcolo di Kc)In una rete GSM viene cifrato solo il traffico via-etere. Una volta che i frame sono stati ricevuti dalla BTS, essa li decifra e li invia in chiaro alla rete centrale dell’operatore.
A3 algoritmo di autenticazione della MS.
La procedura di autenticazione si avvia ogniqualvolta la MS si connette alla rete. In particolare l'autenticazione avviene:
- quando la MS riceve o effettua una chiamata (opzionale);
- quando si esegue l'aggiornamento della posizione della MS;
- quando si compie l'attivazione, la disattivazione o l'interrogazione dei servizi supplementari.
A3 è l’algoritmo di autenticazione utilizzato nel modello di sicurezza GSM. La sua funzione è di generare SRES in risposta alla RAND che la MSC ha ricevuto dall'HLR. L’algoritmo A3 prende in input la RAND dalla MSC e la chiave segreta Ki e genera un output di 32 bit che è la risposta SRES. Sia RAND che Ki sono lunghe 128 bit.
A8 algoritmo per la generazione della chiave di sessione
A8 è l'algoritmo utilizzato per generare la chiave di sessione Kc dalla RAND ricevuta dalla MSC e dalla chiave segreta Ki. L’algoritmo A8 prende due input a 128 bit e genera un output di 64 bit. Questo output è la chiave di sessione Kc. La BTS riceve la stessa Kc dalla MSC. L'HLR è in grado di generare la Kc poiché esso conosce sia RAND che la chiave segreta Ki. Le chiavi Ki sono mantenute in un database per tutti gli abbonati GSM dal proprio operatore di rete. Una chiave di sessione Kc, è utilizzata fin quando la MSC decide di autenticare nuovamente la MS.Sia l’A3 che l’A8 sono memorizzati nella SIM. Questo significa che l’operatore può decidere quali algoritmi utilizzare indipendentemente dai produttori di hardware e dagli altri operatori. Infatti, l’autenticazione funziona anche negli altri paesi, poiché le reti locali chiedono le 5 triple all’HLR della rete di appartenenza dell’abbonato. Così la rete locale non deve sapere niente riguardo gli algoritmi A3 ed A8 utilizzati.
COMP128 l'algoritmo di autenticazione e generazione della chiave di sessione.
Invece di utilizzare due algoritmi distinti, A3 ed A8, la maggior parte degli operatori GSM utilizza un unico algoritmo, chiamato COMP128. COMP128 prende in input RAND e Ki, e genera 128 bit di output, di cui i primi 32 bit formano la risposta SRES e gli ultimi 54 bit formano la chiave di sessione Kc.Si noti che la lunghezza della chiave Kc a questo punto è di 54 bit invece di 64, che è la lunghezza della chiave data come input all’algoritmo A5. Alla chiave generata dalla funzione COMP128 vengono aggiunti dieci bit posti a zero ottenendo, così, una chiave di 64 bit con gli ultimi 10 bit azzerati. Questo riduce effettivamente lo spazio delle chiavi da 264 a 254. Si è riscontrato che questo avviene in tutte le implementazioni di A3/A8, incluse quelle che non usano COMP128 per la generazione della chiave e sembra che sia una caratteristica "voluta" delle implementazioni dell’algoritmo A8.
A5/1 l'algoritmo di cifratura
L’algoritmo A5 è lo stream cipher utilizzato per cifrare i frame che vengono inviati via-etere. Lo stream cipher viene inizializzato ogni volta che un frame viene inviato con la chiave di sessione Kc e con il numero di frame da cifrare. La stessa Kc viene utilizzata per tutta la sessione, durante la quale il numero del frame di 22 bit cambia. In questo modo viene generata un’ unica keystream per ciascun frame.L’algoritmo A5, utilizzato nei paesi europei, consiste di tre LFSR di lunghezze differenti, organizzati in modo non lineare, che corrispondono ai tre polinomi delle connessioni:
x19 + x5 + x2 + x + 1
x22 + x + 1
x23 + x15 + x2 + x + 1
Tali polinomi sono stati scelti primitivi in modo che i corrispondenti registri abbiano periodo massimale. Il periodo massimo di un registro a k bit è 2k-1, che è la cardinalità dell'insieme delle sequenze di k bit, tranne quella composta da tutti 0.
La lunghezza totale dei tre LFSR è di 64 bit. Lo XOR dei bit meno significativi dei tre registri rappresenta un bit della keystream. Gli LFSR sono lunghi rispettivamente 19, 22 e 23 bit e le funzioni utilizzate sono polinomi di feedback sparsi. Ad ogni passo ciascun registro viene shiftato se il suo bit centrale concorda con il valore di maggioranza dei bit centrali dei tre registri. Per esempio, se i bit centrali dei tre registri sono rispettivamente 0,1 e 1, gli ultimi due registri vengono shiftati, invece se i bit centrali sono rispettivamente 0, 1 e 0, allora vengono shiftati il primo ed il terzo registro. Così, ad ogni round, vengono shiftati almeno due registri.
E’ evidente che l’attaccante non è in grado di individuare quali registri siano stati shiftati e quali no, dato che si effettua lo shift di due o tre registri, ma non è possibile individuare quali. I tre LFSR vengono inizializzati con una combinazione non lineare della chiave di sessione Kc ed il numero di frame. I 64 bit di Kc vengono inizialmente caricati nei tre registri r1, r2 ed r3 bit a bit, in modo sequenziale. Durante il caricamento dei bit della chiave, la regola di shift dei registri che contengono i bit di maggioranza è disabilitata. Il caricamento dei bit viene mostrato nel seguente esempio:
Dopo il caricamento dei bit della chiave di sessione ciascuno dei 22 bit del numero di frame viene messo in XOR con i tre valori di feedback dei registri stessi. Durante il caricamento di ciascun bit del numero di frame, vengono shiftati i registri il cui bit centrale concorda con il bit di maggioranza. Dopo che i registri sono stati inizializzati con la chiave di sessione Kc ed il numero del frame corrente:
- i primi 100 bit di output della keystream vengono scartati allo scopo di distribuire i bit del numero di frame in modo casuale nei tre LFSR;
- vengono prodotti 114 bit di output della keystream, che vengono utilizzati per cifrare il frame da MS a BTS;
- vengono scartati altri 100 bit di output dell keystream per nascondere la relazione tra i primi 114 bit ed i succesivi 114 bit della keystream;
- vengono prodotti 114 bit di output della keystream, che vengono utilizzati per decifrare il frame successivo ricevuto dalla BTS.
Ad ogni passo, viene prodotto un bit della keystream. L'algoritmo restituisce una keystream di 228 bit. La cifratura effettiva avviene mettendo in XOR 114 bit della keystream e 114 bit del messaggio in chiaro. Successivamente, l’algoritmo A5 viene reinizializzato con la stessa chiave Kc ed il numero del frame successivo.
Fin dai primi sistemi GSM, altre varianti dell’algoritmo A5 sono state progettate ed implementate. La motivazione principale è stata che l’algoritmo di cifratura A5 era troppo robusto per essere esportato in Medio Oriente. Così, il primo algoritmo A5 fu rinominato A5/1. Gli altri algoritmi includono l’A5/0, che non cifra affatto, ed A5/2, un algoritmo di cifratura più debole.
In generale, gli algoritmi A5 successivi all’A5/1 sono stati chiamati A5/x. Molti degli algoritmi A5/x sono considerevolmente più deboli dell’A5/1, per il quale la complessità temporale di un attacco è al più pari a 254 operazioni. La complessità temporale stimata per un attacco ad A5/2 è molto più bassa, nell’ordine di 216 operazioni. Questo cifrario viene utilizzato negli USA. Le altre implementazioni di A5 non sono ancora conosciute pubblicamente. Così, non ci sono elementi reali da discutere riguardo ad esse, soltanto congetture ed assunzioni.
CRITICHE SULLA DEBOLEZZA DELLA CHIAVE DI A5/1
Un gruppo di ricercatori dell’Università della California ritiene che la semplicità nel rompere l’A5 sia dovuta al fatto che il governo lo abbia deliberatamente indebolito per fini di sorveglianza delle comunicazioni. Due ricercatori della California University di Berkeley sono riusciti a rompere il sistema di crittografia GSM (A5 + A3/A8) utilizzando un computer per determinare il numero di identità segreto memorizzato nella SIM (Agosto 98).
Se dei criminali, potessero rompere il metodo di crittografia GSM, essi potrebbero clonare un telefono protetto da tale codifica, cioè rilevare un numero di telefono ed utilizzarlo in una comunicazione fraudolenta da un altro telefono. In ogni caso, sia i ricercatori che le compagnie telefoniche hanno minimizzato circa l’effettiva minaccia di clonazione di telefoni digitali, se paragonate alla vulnerabilità dei telefoni cellulari analogici.
I ricercatori sostengono che il cracking del GSM ha richiesto al più 10 ore di prove elettroniche e computazioni ad alta potenza. La cosa più intrigante è che, apparentemente, la chiave usata dal GSM sia stata intenzionalmente indebolita durante la fase di progettazione per permettere alle agenzie governative di "decifrare" le conversazioni tra telefoni cellulari.
Sebbene l’A5 utilizzi una chiave a 64 bit, i ricercatori hanno scoperto che gli ultimi 10 bit sono settati a 0. Questo significa che con computer estremamente potenti, a disposizione delle varie agenzie governative, potrebbe essere possibile, abbastanza velocemente, decodificare una conversazione. Per anni, è girata voce che le industrie di computer siano state persuase o forzate dalle agenzie spia del governo ad indebolire matematicamente i sistemi di sicurezza delle comunicazioni o installare trappole segrete. Alcuni sospetti riguardavano anche l’NSA (National Security Agency), e la CIA (Central Intelligence Agency). L’NSA è una delle agenzie maggiormente sospettate, dato che la maggior parte delle sue missioni è quella di intercettare chiamate telefoniche.
Una questione interessante riguardo al modello di sicurezza GSM concerne se sia possibile decifrare una chiamata, dato che l'algoritmo COMP128 è stato rotto. Vari scienziati nel mondo sembrano essere unanimi sul fatto che l’intercettazione e la decodifica real-time di una chiamata via-etere sia ancora impossibile nonostante lo spazio delle chiavi sia ridotto. Ci sono, tuttavia, altri tipi di attacchi al sistema che sono attuabili e sembrano essere minacce molto reali. Sono stati, infatti, implementati alcuni attacchi che non sfruttano nessuno dei difetti degli algoritmi di sicurezza.
Un attacco di forza bruta in real-time contro il sistema di sicurezza GSM non è realizzabile, come già affermato. La complessità in tempo di tale attacco è di 254 operazioni. Ciò non è realizzabile in quanto richiede troppo tempo per decifrare le chiamate sui GSM in tempo reale. Potrebbe, però, essere possibile memorizzare i frame tra la MS ed la BTS e lanciare l’attacco in un momento successivo.
Se avessimo un chip della classe Pentium III con approssimativamente 20 milioni di transistor e l’implementazione di tre LFSR richiederesse circa 2000 transistor, potremmo avere un insieme di 10000 implementazioni parallele di A5/1 su di un chip. Se il chip fosse clockato a 600 MHz ed ogni implementazione di A5 potesse generare un bit di output per ogni ciclo di clock e avessimo la necessità di generare 100+114+100+114 bit di output, potremmo tentare approssimativamente 600.000.000/428»1.4 milioni di chiavi al secondo per ciascuna implementazione. Uno spazio delle chiavi di cardinalità 254 richiederebbe così circa 254/(1.4x106x10.000)»1.300.000 secondi ovvero 15 giorni, con un chip.
Un attacco divide-and-conquer riesce a ridurre la complessità dai 254 tentativi dell’attacco di forza bruta a 245, che è un cambiamento eccezionale (infatti è 29 = 512 volte più veloce). L’attacco divide-and-conquer è di tipo known-plaintext. L’attaccante tenta di determinare lo stato iniziale degli LFSR da una sequenza di keystream conosciuta. Egli ha bisogno di conoscere solo 64 bit consecutivi della keystream che vengono calcolati dalle coppie testo in chiaro-testo cifrato a lui note.
In breve, l’attacco divide-and-conquer è implementato indovinando il contenuto dei due LFSR più corti e computando il terzo LFSR dalla keystream conosciuta mediante la risoluzione di equazioni lineari appropriate. Questo attacco richiederebbe in media 240 tentativi, nell'ipotesi in cui gli shift dei primi due registri non fossero dipendenti dal terzo registro. Comunque, J.Golic ha proposto un altro attacco divide-and-conquer basato sulle stesse assunzioni con la complessità media di circa 240. Golic ha mostrato che soltanto 262.32 stati interni possono essere raggiunti a partire dai 264 stati iniziali. Basandosi su queste assunzioni, egli ha descritto come ottenere delle equazioni lineari indovinando n bit negli LFSR. Risolvendo queste equazioni lineari, si potrebbero recuperare gli stati iniziali dei tre LFSR. La complessità di risoluzione delle equazioni lineari è 241.16 tentativi. In media, si potrebbero calcolare gli stati interni nel 50% dei casi con 240.16 tentativi.
Golic propose anche un Attacco Trade-Off Tempo-Memoria basato sul Paradosso del Compleanno. L’obiettivo dell’attacco è di recuperare gli stati interni dei tre LFSR in un dato istante per una sequenza di keystream conosciuta corrispondente ad un numero di frame noto, ricostruendo così la chiave di sessione Kc.
I due esempi precedenti affermano chiaramente che l’algoritmo A5 non è crittograficamente sicuro, poiché esiste un attacco più efficiente dell’attacco di forza bruta (che di per se non è molto difficile da implementare con l’hardware attualmente disponibile). Tuttavia, l’algoritmo è sicuro abbastanza da prevenire l’intercettazione di chiamate via-etere e la decifratura in real-time. Sfortunatamente, le onde radio tra la MS e la BTS non sono i soli punti vulnerabili nel sistema GSM.
Come affermato in precedenza, le trasmissioni sono cifrate solo tra la MS e la BTS. Dopo la BTS, i segnali vengono trasmessi in chiaro nelle operazioni di rete. Questo apre nuove possibilità. Se l’attaccante può accedere ai segnali degli operatori della rete, egli sarà capace di ascoltare ogni cosa che viene trasmessa, includendo la chiamata telefonica in corso così come, eventualmente, RAND, SRES e Kc. La rete di segnalazione SS7 utilizzata dagli operatori della rete GSM è completamente insicura se l’attaccante ne guadagna l’accesso diretto.
In un altro scenario, l’attaccante potrebbe provare ad accedere all’ HLR di una particolare rete. Se l’attaccante riuscisse ad accedere all’HLR, sarebbe capace di recuperare le Ki di tutti gli abbonati di una particolare rete.
Accedere ai segnali della rete non è molto difficile. Sebbene le BTS siano di solito connesse alle BSC attraverso un cavo, alcune di esse sono connesse alle BSC per mezzo di microonde o anche di un link satellitare. Sarebbe relativamente facile accedere a tale link con il giusto tipo di attrezzatura. Molte delle attrezzature disponibili per origliare i canali GSM sembrano utilizzare questa particolare vulnerabilità. Tuttavia le attrezzature specifiche sono disponibili solo a persone autorizzate.
Non è inoltre esclusa la possibilità di accedere al cavo di uscita della BTS. Questa potrebbe essere una minaccia reale. Un attacco, se implementato con attenzione, potrebbe non essere rilevato per molto tempo. L’abilità di attingere i dati trasmessi tra la BTS e la BSC renderebbe l’attaccante capace sia di monitorare le chiamate in corso origliando sul canale, che di recuperare la chiave di sessione Kc, intercettando la chiamata via-etere e decifrandola on-the-fly. Una volta che l’attaccante ha individuto Kc, la cifratura real-time non è un problema.
Un altro approccio riguarda l’ingegneria sociale. Questo approccio non dovrebbe essere sottovalutato sebbene sembri ridicolo. L’attaccante potrebbe farsi passare per un addetto alle riparazioni o simile, entrare nell’edificio appropriato ed istallare un filo di intercettazione. Egli potrebbe anche corrompere un ingegnere che lo faccia al posto suo o che gli dia tutte le Ki di tutti gli abbonati di quel particolare operatore. Le possibilità sono innumerevoli e reali.
RECUPERO DELLA CHIAVE DALLA SIM
La sicurezza dell’intero modello GSM è basata sulla chiave segreta Ki. Se la chiave venisse scoperta l’intero accesso alla rete sarebbe compromesso. Una volta recuperata la chiave Ki, l’attaccante non solo può ascoltare le chiamate dei sottoscrittori, ma anche addebitare le proprie chiamate sul conto dell'abbonato di cui si è recuperata la chiave segreta. Se due telefoni con lo stesso ID inoltrano una chiamata nello stesso istante, la rete GSM lo nota:
- fa una richiesta di localizzazione per i telefoni,
- nota che lo ‘stesso’ telefono è in due località diverse allo stesso tempo e
- chiude il credito, evitando così che sia l’attaccante che il legittimo sottoscrittore possano effettuare ulteriori chiamate
Se l’attaccante è interessato solo all’ascolto delle chiamate dell'abbonato resta invisibile alla rete GSM.
La SDA e l'ISAAC hanno scoperto un difetto nell’algoritmo COMP128 che rende capaci effettivamente di recuperare la chiave segreta Ki, dalla SIM. L’attacco richiede l'accesso fisico alla SIM ed è di tipo chosen-challange. Tale attacco sfrutta le debolezze dell'algoritmo COMP128 in modo da rivelare informazioni circa Ki quando i RAND appropriati gli vengono forniti in input. La SIM può essere attaccata utilizzando un lettore di smart card connesso ad un PC. Il PC deve lanciare circa 217.5 challange alla SIM, per generare le SRES e le chiavi di sessione Kc. La chiave segreta può essere dedotta dalle risposte SRES mediante la crittoanalisi differenziale. Il lettore di smartcard utilizzato per implementare l’attacco lancia 6.25 query al secondo alla SIM. Così l’attacco richiede circa otto ore per essere portato a termine. In questo modo, l’attaccante ha bisogno soltanto di avere l’accesso fisico alla SIM bersaglio per almeno otto ore.
Anche questa vulnerabilità è applicabile nell’ambito dell’ingegneria sociale. Si può assumere che un operatore GSM corrotto voglia clonare delle SIM card in questo modo per poi venderle a terzi. Si potrebbe anche vendere una SIM clonata a determinate persone allo scopo di intercettarne le chiamate successivamente. Un impiegato corrotto potrebbe anche fornire all’attaccante la SIM card della vittima, così che possa clonarla ed in seguito decifrare le chiamate del possessore. Questi sono scenari realistici nei quali la vulnerabilità trovata in COMP128 compromette l’intero modello di sicurezza del sistema GSM.
RECUPERO DELLA CHIAVE VIA ETERE
I ricercatori dell'SDA e dell’ISAAC sono sicuri che l'attacco già descritto possa essere lanciato anche via etere. Tuttavia, essi non possono confermare i loro sospetti, perché le attrezzature necessarie per farlo sono illegali negli USA. L’attacco via etere è basato sul fatto che la MS deve rispondere ad ogni challange inviatagli dalla BTS. Un attaccante potrebbe impersonare la BTS legittima inviando alla MS obiettivo delle challenge per risalire alla chiave segreta mediante le risposte a queste challenge. Non si conosce la durata dell’attacco quando viene condotto via etere. Le stime variano da otto a tredici ore.
L’attacco potrebbe essere condotto in una metropolitana, dove il segnale della BTS legittima non è disponibile, ma il telefono è ancora acceso. Il sottoscrittore potrebbe non accorgersi di tale attacco nonostante il fatto che la batteria del telefono si scarichi un po’ più velocemente potrebbe renderlo sospettoso. L’attacco potrebbe anche essere eseguito in più volte: invece di eseguire un unico attacco di otto ore. L’attaccante potrebbe testare il telefono per venti minuti ogni giorno su di un percorso abituale della vittima.
RECUPERO DELLA CHIAVE DALL’AUC
Lo stesso attacco utilizzato per il recupero di Ki da una SIM card può essere utilizzata per recuperare la chiave Ki dall’AuC. Quest'ultimo deve rispondere alle richieste fatte dalla rete GSM e restituire triple valide da utilizzare nell' autenticazione della MS. La procedura di base è identica alla procedura utilizzata nella MS per accedere alla SIM. La differenza è che l’AuC è molto più veloce nel processare le richieste di quanto non lo sia la SIM card. La sicurezza dell’AuC gioca un ruolo fondamentale riguardo alla possibilità di eseguire o meno questo attacco, ma questo esula dagli scopi di questa trattazione.
La sicurezza potrebbe essere migliorata in alcuni punti con misure relativamente semplici. L’operatore potrebbe utilizzare un altro algoritmo crittograficamente sicuro al posto di COMP128. Questo potrebbe richiedere la distribuzione di nuove SIM a tutti i sottoscrittori e l’aggiornamento del software dell'HLR. Ciò effettivamente neutralizzerebbe l'attacco a COMP128. Tale miglioramento sarebbe il più facile da introdurre, dato che l’operatore di rete non avrebbe bisogno né del supporto dei costruttori hardware e software, né di quello del GSM Consortium.
Un’altra soluzione sarebbe quella di impiegare una nuova implementazione di A5 con una forza crittografica tale che un attacco brute-force non sia ammissibile in ogni caso. Questo miglioramento richiederebbe la cooperazione del GSM Consortium. I costruttori hardware e software dovrebbero realizzare nuove versioni dei loro software e hardware compatibili con il nuovo algoritmo A5.
Un altro possibile miglioramento sarebbe quello di cifrare il traffico tra gli operatori della rete centrale e tra le componenti della rete. Ciò neutralizzerebbe gli attacchi ai segnali della rete. Questa soluzione potrebbe probabilmente essere implementata anche senza l’approvazione del GSM Consortium, ma sarebbe ancora richiesta la cooperazione dei costruttori hardware.
In definitiva, nessuno dei miglioramenti precedenti è troppo difficile da implementare. Essi presentano tutti nuove spese prevalentemente a carico degli operatori di rete e non sono, quindi, molto allettanti dal loro punto di vista. Così, questi miglioramenti non saranno implementati fino a quando l’insicurezza delle reti GSM non diventi di pubblico dominio e gli operatori di rete non siano forzati a migliorare la sicurezza della rete. Tutti e tre i miglioramenti sarebbero necessari per la sicurezza della rete contro tutti gli attacchi introdotti in questa trattazione.
Il modello di sicurezza del GSM è stato rotto a più livelli ed è, così, vulnerabile ai numerosi attacchi contro parti differenti della rete dell’operatore.
Anche assumendo che tutti gli algoritmi di cifratura non siano stati rotti, l’architettura GSM sarebbe ancora vulnerabile agli attacchi che hanno come obiettivo la rete centrale dell’operatore o l’HLR ed ai vari ambiti dell’ingegneria sociale nei quali l’attaccante corrompe un impiegato dell’operatore, ecc.
Inoltre, è stato provato che gli algoritmi di cifratura che vengono utilizzati dal sistema GSM sono difettosi. L’algoritmo A5 utilizzato per la cifratura del canale di trasmissione via-etere è vulnerabile agli attacchi known-plaintext e divide-and-conquer e lo spazio delle chiavi, che è stato intenzionalmente ridotto, è abbastanza piccolo da rendere ammissibile anche un attacco brute-force. Dato che l'algoritmo COMP128 utilizzato dalla maggior parte delle reti GSM è difettoso, se fossero fondate le affermazioni dell'ISAAC, la chiave segreta Ki potrebbe essere recuperata con un attacco chosen-challange in poche ore.
Non si può assumere che il modello GSM fornisca una sicurezza completa contro un eventuale attaccante. Le risorse necessarie dipendono dall’attacco scelto. Così, non si può fare affidamento solo sul modello di sicurezza GSM qualora si trasferiscano dati confidenziali sulla rete.
In aggiunta alla possibilità di intercettazione di una chiamata, anche il difetto della funzione COMP128 rende il cloning della SIM una minaccia, abilitando così un attaccante ad effettuare chiamate a spese di qualcun altro.
Comunque, la realtà è che sebbene lo standard GSM sia stato ideato per correggere i difetti dei sistemi di telefonia mobile analogici, tali obiettivi non sono stati raggiunti. Lo standard GSM corrente e la sua implementazione permettono sia il cloning dell’identità del sottoscrittore che l’intercettazione di una chiamata.