A3 este algoritmul utilizat în procesul de autentificare în standardul digital global pentru comunicațiile celulare mobile GSM . A3 este astfel un element al sistemului de confidențialitate a apelurilor GSM împreună cu algoritmii A5 și A8 . Sarcina algoritmului este de a genera un răspuns ( SRES - Signed Response ) la o parolă aleatorie ( RAND - Random ) primită de un telefon mobil ( MS - Mobile Station ) de la centrul de comutare MSC ( MSC - Mobile Switching Center ) în procedura de autentificare. A3 este implementat pe cartela SIM a abonatului .
Esența autentificării în GSM este evitarea clonării telefonului mobil al utilizatorului. Cheia secretă este o cheie Ki pe 128 de biți, care este deținută atât de abonat, cât și de Centrul de autentificare ( AuC - Centrul de autentificare). Ki este stocat pe cartela SIM , la fel ca și algoritmul A3. De asemenea, sunt implicate în autentificare Registrul locației de acasă ( HLR - Registrul locației acasă) și Centrul de comutare ( MSC - Centrul de comutare mobilă)
Când un MS solicită acces la o rețea GSM (de exemplu, la pornire), MSC trebuie să autentifice MS. Pentru a face acest lucru, MSC trimite către HLR o identitate internațională unică de abonat mobil ( IMSI ) și o solicitare pentru un set de tripleți speciali. Când HLR primește o solicitare IMSI pentru tripleți, mai întâi își verifică baza de date pentru a se asigura că MS cu acel IMSI aparține de fapt rețelei. Dacă verificarea are succes, atunci HLR trimite IMSI și o cerere de autentificare către AuC.
AuC folosește IMSI pentru a găsi Ki-ul corespunzător acelui IMSI. AuC generează, de asemenea, un număr RAND aleatoriu de 128 de biți. După aceea, AuC calculează un răspuns SRES de 32 de biți (SRES - Signed Response) folosind algoritmul A3: SRES = A3(RAND, Ki). În plus, AUC calculează o cheie de sesiune de 64 de biți Kc utilizând algoritmul A8 : Kc = A8(RAND, Ki). Kc este folosit în continuare în algoritmul A5 pentru a cripta și decripta datele.
RAND, SRES și Kc formează doar tripleții pe care MSC le-a cerut de la HLR. AuC generează cinci dintre aceste triplete și le trimite către HLR, apoi HLR trimite acest set către MSC. Este setul de tripleți care este generat pentru a reduce semnalizarea în rețeaua centrală GSM care ar avea loc de fiecare dată când MS ar solicita acces la rețea și MSC ar trebui să autentifice MS. Trebuie remarcat faptul că un set de tripleți este unic pentru un IMSI și nu poate fi utilizat pentru niciun alt IMSI.
MSC salvează Kc şi SRES şi trimite o cerere RAND către staţia mobilă MS a abonatului. La primirea cererii RAND, MS calculează răspunsul la cererea SRES utilizând algoritmul A3 și cheia secretă Ki: SRES = A3(RAND, Ki) și îl trimite către MSC. Dacă SRES primit se potrivește cu SRES stocat în MSC, atunci autentificarea este considerată reușită.
După cinci sesiuni de autentificare, MSC solicită HLR un nou set de tripleți (RAND, SRES, Kc)
Formatul datelor de intrare și de ieșire pentru algoritmul A3, precum și întregul proces de autentificare, sunt strict definite de consorțiul 3GPP . Este de remarcat faptul că fiecare operator individual alege principiul de funcționare al algoritmului A3. Deci A3 nu este standardizat, ci este definit de operator. Cu toate acestea, dacă operatorul nu dorește să vină cu propriul algoritm A3, el poate folosi implementarea standard a algoritmului.
În prezent, este acceptat următorul format de date de intrare și ieșire RAND, Ki, SRES ale algoritmului A3: lungime Ki - 128 biți lungime RAND - 128 biți lungime SRES - 32 biți
Timpul de execuție al algoritmului A3 trebuie să fie mai mic de 500 de milisecunde. [unu]
În prezent sunt cunoscute următoarele implementări standard ale algoritmului A3:
COMP128 este prima versiune a algoritmului A3. Inițial, algoritmul COMP128 a fost ținut secret. Dezvoltatorii primei versiuni de A3 s-au bazat pe securitate în detrimentul obscurității, ceea ce înseamnă că algoritmii sunt mai greu de spart dacă nu sunt disponibili public. Cu toate acestea, COMP-128 a fost compromis de criptanaliștii Marc Briceno, David Wagner și Ian Goldberg de la grupul de cercetare de securitate ISAAC.
În 1998, o descriere a algoritmului COMP128 a fost difuzată pe Internet. Deși descrierea nu a fost completă, codul a fost complet restaurat prin inginerie inversă și este acum disponibil publicului .
Practic, COMP128 este o funcție hash pe 128 de biți. Lățimea argumentului este de 256 de biți sau 32 de biți (128 de biți Ki + 128 de biți RAND). Cei 32 de biți cei mai semnificativi ai valorii calculate sunt luați ca SRES, iar cei 64 de biți mai puțin semnificativi sunt luați ca cheie de sesiune Kc. Fie X [0..32] intrarea de 32 de octeți a algoritmului, unde X [0..15] = Ki și X [16..31] = RAND. T0 [0..511], T1 [0..255], T2 [0..127], T3 [0..63] și T4 [0..31] sunt tabele secrete de substituție de octeți. Algoritmul este format din 8 runde, fiecare rundă are 5 iterații. Fiecare iterație constă în căutarea tabelului corespunzător (T0 pentru prima iterație, T1 pentru a doua etc.) și substituție de octeți. La sfârșitul fiecărei runde, cu excepția ultimei, cei 128 de biți rezultați ai rezultatului sunt permuți, iar după permutare, acești 128 de biți sunt utilizați în runda următoare. Descrierea unei runde în pseudocod:
(înlocuiri) pentru i = 0 până la 4 faceți: pentru j = 0 la 2^i - 1 face: pentru k = 0 la 2^(4-i) - 1 face: { s = k + j*2^(5 - i) t = s + 2^(4-i) x = (X[s] + 2X[t]) mod (2^(9 - i)) y = (2X[s] + X[t]) mod (2^(9 - i)) X[s]=Ti[x] X[t]=Ti[y] } (formarea de biți din octeți) pentru j = 0 până la 31 faceți: pentru k = 0 până la 7 faceți: { bit[4*j+k] = al-lea (8-k)bit al octetului j } (permutare) dacă (i < 8) atunci pentru j = 0 până la 15 faceți: pentru k = 0 până la 7 faceți: { următorul bit = (8 xj + k) x 17 mod 128 Bit k al lui X[j + 16] = bit[next_bit] }La fiecare iterație, octetul de ieșire depinde de cei doi octeți de intrare. Cei doi octeți de intrare sunt utilizați pentru a identifica un element din tabelul de căutare. Acest element va actualiza octetul de ieșire. Tabelul de căutare pentru i-a iterație conține 2^(9 - i) elemente de dimensiune (8 - i) biți. Acesta este
tabel numărul de elemente dimensiunea unui element T0 512 8 biți T1 256 7 biți T2 128 6 biți T3 64 5 biți T4 32 4 bițiDe fapt, fiecare dintre cei 32 de octeți de ieșire ai ultimei iterații a rundei are doar 4 biți semnificativi. Prin urmare, la sfârșitul iterației, acești 32 de octeți sunt convertiți prin permutare în 16 octeți, toți biții fiind semnificativi. Acești 16 octeți sunt scrieți în X [16 .. 31], iar următoarea rundă a algoritmului este începută (în X [0 .. 15] valoarea lui Ki nu se modifică în niciun fel).
David Wagner a numit această structură a algoritmului structura fluture, ceea ce înseamnă „în formă de fluture”
Deși acum este clar că principiul „securității prin obscuritate” nu funcționează, versiunile COMP128-2 și COMP128-3 sunt ținute secrete.
Algoritmii de autentificare Milenage și de generare a cheilor de sesiune au fost dezvoltați de consorțiul 3GPP cu eforturile combinate ale organizațiilor membre 3GPP. Nu există cerințe sau permisiuni suplimentare necesare pentru a utiliza acești algoritmi. Un exemplu de utilizare a Milenage ca A3 este prezentat în 3GPP TS 55.205 „Specificația algoritmilor GSM-MILENAGE: Un exemplu de algoritm setat pentru funcțiile de autentificare GSM și generare cheie A3 și A8” . Specificația completă Milenage este disponibilă pe site-ul web al consorțiului 3GPP.
Mileage este imun la orice atacuri cunoscute. [2]
Pe 13 aprilie 1998, Marc Briceno, Ian Goldberg și David Wagner au publicat un articol în care descriu o metodă de obținere a unei chei secrete Ki prin trimiterea a aproximativ 150.000 de solicitări către cartela SIM. Atacul exploatează un blocaj în algoritm.
După a doua iterație a primei runde, octeții X[i], X[i+8], X[i+16], X[i+24] depind doar de octeții de intrare cu aceiași indici. Octeții X[i] și X[i+8] sunt octeți cheie, adică X[i] = Ki[i] și X[i+8] = Ki[i+8] (pentru fiecare i de la 0 la 7), iar X[i+16] și X[i+24] octeți sunt octeții de solicitare RAND de la stația de bază, adică X[i+16] = RAND[i+16] și X[i+24] = RAND[ i+24] (pentru fiecare i de la 0 la 7).
Acum schimbăm octeții i+16, i+24 ai intrării algoritmului COMP128 (adică octeții i, i+8 ai interogării RAND), lăsând constanți octeții de intrare rămași. Deoarece o iterație nu este unu-la-unu, ne-am putea aștepta la o coliziune în octeții de ieșire numerotați i, i+8,i+16,i+24 după a doua iterație. „ Paradoxul zilei de naștere ” asigură că coliziunea are loc destul de rapid (deoarece blocajul este limitat la 4 octeți). Coliziunile la blocaj pot fi detectate, deoarece vor provoca coliziunea ieșirilor algoritmului COMP128 (adică vom obține două răspunsuri SRES identice), iar fiecare coliziune poate fi folosită pentru a obține doi octeți ai cheii i, i + 8 (ținând cont de procesarea mică a primelor două iterații — adică aplicarea unui atac 2R în ceea ce privește criptoanaliza diferențială).
Acest lucru ar necesita unele interogări de intrare COMP128 pentru a găsi cei doi octeți ai cheii (deoarece fiecare dintre cei patru octeți de ieșire după a doua iterație are în esență 7 biți semnificativi). Acum efectuăm un atac 2R pentru fiecare pereche de octeți de cheie (pentru fiecare i de la 0 la 7). Astfel, pentru a obține întreaga cheie Ki pe 128 de biți , vor fi necesare solicitări.
Este de remarcat faptul că atacul necesită acces fizic la cartela SIM, un cititor de carduri și un computer. Pentru a efectua atacul, va fi necesar să trimiteți aproximativ 150.000 de solicitări către cartela SIM. Cititorul de carduri care a fost folosit de echipa ISAAC a efectuat 6,25 solicitări pe secundă, iar întregul atac a durat astfel 8 ore. Este nevoie de mult mai puțin timp pentru a analiza răspunsurile de pe o cartelă SIM decât pentru a trimite cereri.
Atacul aerian BGWMarc Briceno, Ian Goldberg și David Wagner cred, de asemenea, că un atac BGW poate fi efectuat de la distanță fără acces fizic la cartela SIM. Din păcate, ei nu au efectuat experimentul, deoarece ar fi încălcat legile SUA. Cu toate acestea, experții GSM contactați de cercetătorii ISAAC au confirmat că atacul ar putea fi implementat în practică. Proprietățile protocoalelor GSM permit efectuarea unui atac BGW dacă poate fi creat un BS fals. Fake BS nu este necesar să suporte întregul protocol GSM, ci doar o parte din funcțiile acestuia. Atacul over-the-air BGW se bazează pe faptul că stația mobilă MS trebuie să răspundă la fiecare solicitare făcută de rețeaua GSM. Dacă semnalul de la BS fals depășește semnalul de la BS legitim, atacatorul poate trimite cereri către MS țintă și poate recrea Ki-ul din răspunsurile primite de la MS. Este demn de remarcat faptul că MS trebuie să fie disponibil atacatorului pe toată perioada în care va fi efectuat atacul. Nu se știe cât durează un atac aerian BGW. Se estimează la opt până la treisprezece ore.
Atacul poate fi efectuat în metrou atunci când semnalul unui BS legal nu este disponibil și telefonul este pornit. Utilizatorul nici nu va ști despre atacul în curs, doar faptul că bateria telefonului se consumă mai repede decât de obicei îl poate alerta. Atacul poate fi efectuat și fragmentar: în loc de un atac de opt ore, atacatorul poate trimite cereri pentru perioade mai mici de timp în fiecare zi, de exemplu, atunci când utilizatorul merge la serviciu.
Marc Briceno, Ian Goldberg și David Wagner subliniază faptul că, în ciuda complexității și costului acestui tip de atac, posibilitatea implementării lor nu trebuie ignorată.
Atacul de partiționareÎn mai 2002, un grup de cercetători de la Centrul de Cercetare IBM Watson, împreună cu cercetători de la Institutul Federal Elvețian de Tehnologie din Zurich , au publicat un atac distribuit împotriva COMP128 . Se bazează pe analiza simplă a puterii (SPA) și oferă o cheie în câteva minute. Atacul folosește performanța scăzută a procesorului cartelei SIM. Astfel, prima înlocuire folosind tabelul T0 selectează una dintre cele 512 valori, fiind necesari 9 biți pentru a selecta o valoare. Cu toate acestea, procesorul SIM poate accesa doar o adresă de 8 biți. Pentru a face acest lucru, tabelul trebuie împărțit în două părți. Cercetătorii IBM Watson Research Center au sugerat că tabelul este împărțit în două părți egale. Analizând consumul de energie al cartelei SIM pentru diverse solicitări (precum și radiații electromagnetice), cercetătorii au determinat căreia parte a tabelului T0 i-a fost adresată solicitarea. Analizând adresarea și consumul de energie al cererilor la schimbarea primului octet al RAND[0], au reușit să găsească K[0]. Efectuând o analiză similară pentru alți octeți RAND, cheia Ki este complet restaurată.
Drept urmare, atacul poate fi efectuat prin trimiterea a 1000 de solicitări aleatorii sau 255 de solicitări specifice. În final, atacul a fost redus la 8 cereri de autoadaptare, ceea ce vă permite să obțineți Ki în 2 secunde. Totuși, atacul este posibil doar cu acces fizic la cartela SIM.
Exact același atac pentru a obține Ki de la SIM poate fi efectuat împotriva AuC. AuC va răspunde la toate solicitările rețelei GSM și va emite tripleți utilizate pentru autentificarea MS. În esență, procedura este similară cu atacul BGW asupra SIM. Singura diferență este că AuC procesează cererile mult mai rapid decât SIM, deoarece trebuie să proceseze de multe ori mai multe cereri. Securitatea AuC joacă un rol important, indiferent dacă acest tip de atac este posibil sau nu.
Este important de reținut că autentificarea în GSM este unidirecțională: telefonul (MS) este autentificat de stația de bază (BS), dar stația de bază (BS) nu este autentificată de telefon (MS). Acest fapt face posibile atacurile atunci când o terță parte se pretinde a fi o BS legitimă pentru una sau mai multe state membre. Una dintre ipotezele în dezvoltarea GSM a fost că aceste tipuri de atacuri ar fi foarte scumpe în comparație cu alte tipuri de atacuri. Cu toate acestea, costul BS a scăzut rapid, iar emulatorii BS nu sunt greu de găsit în zilele noastre. Mai mult, utilizarea criptării pentru apelul curent nu este automată - sesiunea de comunicare este stabilită necriptată și abia atunci MS i se trimite o comandă pentru a cripta sau nu sesiunea. Comanda de pornire a criptării este trimisă necriptată și nu este verificată în niciun fel în rețeaua GSM. Astfel, folosind un BS fals, este posibil să se creeze o situație în care sesiunea de comunicare a MS cu BS fals să nu fie criptată și să fie ușor ascultată cu urechea; iar comunicarea dintre BS fals (prezentând ca MS legitim) și BS legitim este criptată. În acest caz, urmărirea acestui tip de atac nu este ușoară.
Criptosisteme simetrice | |
---|---|
Cifruri în flux | |
Rețeaua Feistel | |
Rețeaua SP | |
Alte |