Algoritmul de criptare în alarmele auto este un set de reguli pentru schimbul de date între telecomanda și unitatea de control dintr-o alarmă auto, conform cărora transmiterea datelor este protejată astfel încât un atacator să nu poată obține acces neautorizat în mașină, chiar dacă poate interceptarea pachetelor de schimb de date.
Funcția principală a alarmelor auto este un sistem complex de avertizare pentru proprietar cu privire la intrarea neautorizată în mașina sa (de exemplu, deschiderea ușilor, capota, portbagajul), orice acțiuni efectuate de un intrus cu mașina (de exemplu, lovirea corpului, ridicarea mașina, deplasându-se în spațiu, găurind cauciucuri roți), încearcă să fure o mașină. În plus, toate alarmele moderne sunt echipate cu funcții suplimentare care sporesc confortul utilizării vehiculului (vezi Alarma auto ). Confruntarea dintre dezvoltatorii de alarme auto și hoții de mașini a început încă de la crearea primelor alarme auto. De-a lungul anilor, sistemele de securitate s-au îmbunătățit, dar la fel s-au îmbunătățit și mijloacele de piratare. În continuare, vom vorbi despre criptarea în alarmele auto, vulnerabilitățile acestora, precum și despre metodele de protecție.
Ca orice sistem electronic, un sistem de alarmă auto este format din trei blocuri: dispozitive de intrare și de acționare , o unitate de control (denumită în continuare BU). Dispozitivele de intrare includ o telecomandă sau telecomandă cu alarmă auto . Într-o alarmă standard (instalată de producătorul mașinii), aceasta este cel mai adesea combinată cu o cheie fizică de contact. Cu ajutorul cheii, alarma este armată și dezarmată, precum și monitorizarea stării mașinii. Într-o serie de modele de alarmă, o cheie este utilizată pentru a porni motorul de la distanță, pentru a controla echipamentele electrice și pentru a căuta o mașină într-o parcare.
Unitatea de control este inima alarmei și se află în interiorul mașinii, într-un loc invizibil din exterior. În sistemul de cablaj electronic al vehiculului (vezi Controller Area Network ), CU este conectat la senzorii necesari pentru funcționarea acestei alarme (aceștia pot fi senzori de poziție și viteză, senzori inductivi, magnetorezistivi, optici (pentru a monitoriza diferiți parametri ai vehiculului, cum ar fi ca integritatea corpului), presiunea senzorilor) [1] .
Datele dintre unitatea de control și telecomanda sunt transmise pe un canal radio , care nu este sigur. Cu alte cuvinte, undele radio nu se propagă într-o direcție și datele transmise pot fi ascultate, fiind departe de proprietarul mașinii. Folosind anumiți algoritmi de criptare, datele transmise sunt criptate și transmise sub formă de secvențe mici - pachete . Fiecare pachet poate fi reprezentat ca o comandă (de exemplu, „Deschideți lacătele”), un răspuns la o comandă („Lacătele sunt deschise”) sau un mesaj („Atenție! Contactul este pornit!”).
În ciuda faptului că se efectuează transformări reversibile asupra datelor transmise (enumerate mai devreme) folosind o cheie pentru a se ascunde de persoanele neautorizate (în cazul nostru, de o persoană care nu este proprietarul mașinii), cu alte cuvinte, datele este criptat, în literatura rusă și revistele științifice în legătură cu alarmele auto, expresiile „ codare statică” , „codare dinamică”, „codare dialog” (și expresii similare cu cuvântul „cod”), care sunt incorecte din punctul de vedere al punctul de vedere al criptografiei, s-au stabilit. De fapt, acestea sunt trei tipuri de criptare și, în continuare, luându-le în considerare, vom ține cont de acest fapt.
Primii algoritmi de semnalizare s-au bazat pe codare statică . Totodată, fiecare echipă avea propriul pachet de comenzi, care nu s-a schimbat în timp (de unde și denumirea acestui tip de codare). De exemplu, comanda „Deschide ușile” a corespuns întotdeauna pachetului de comandă „Q1234Y” (în acest format a fost transmisă de la telecomanda la unitatea de control). Formatul pachetului a fost ales de către utilizator însuși (sau producătorul alarmei), comutând motoarele în interiorul cheii sau lipirea jumperilor. Deoarece existau puține opțiuni de cod, uneori puteai deschide mașina altcuiva cu aceeași alarmă cu telecomanda ta - formatele pachetului se potriveau. Desigur, o astfel de codificare nu a oferit o protecție adecvată - a fost suficient să ascultați pachetul corespunzător comenzii „Dezarmare” o dată și apoi, după repetarea acesteia, să obțineți acces la mașină.
O vulnerabilitate în metoda de codificare statică și posibilitatea de a asculta radioul a devenit impulsul pentru apariția codificatorilor - dispozitive tehnice speciale care pot intercepta semnalul, decoda și repeta codul. Astfel, codul de captare emulează în esență o alarmă obișnuită fără știrea proprietarului. În ceea ce privește designul său, codificatorul repetă aproape exact cheia de alarmă a mașinii - are un receptor și transmițător de unde radio, un microcontroler de control, butoane fizice și mijloace de indicare. Pentru a simplifica fabricarea unor astfel de dispozitive, deturnatorii folosesc adesea corpul cheii cu alarmă, deoarece există deja butoane, o antenă și o indicație acolo. În plus, vizual, un astfel de breloc de captare a codului nu poate fi distins de un breloc de referință.
Pentru a proteja alarmele auto de a fi piratate de către un grabber de coduri, au început să folosească un cod dinamic - un pachet de date în schimbare constantă transmis de la cheie la unitatea de alarmă printr-un canal radio. La fiecare comandă nouă, se trimite un cod de la cheia care nu a fost folosită înainte.
Alarma funcționează după următorul principiu. Când proprietarul mașinii apasă butonul cheie, este generat un semnal. Poartă informații despre numărul de serie al dispozitivului, codul secret ( cheia de criptare ) și numărul de clicuri (este necesar să se sincronizeze funcționarea brelocului cu cheia și a unității de control). Aceste date sunt pre-criptate înainte de a fi trimise. Algoritmul de criptare în sine este disponibil gratuit, dar pentru a decripta datele trebuie să cunoașteți codul secret care este scris în cheia și unitatea de control din fabrică. S-ar putea părea că problema prinderilor de cod a fost rezolvată - dar nu a fost acolo. Codarea dinamică, de asemenea, nu a rezistat noilor modificări.
Prima metodă se bazează pe înlocuirea codului de alarmă ( code grabber code change ), în care comenzile de armare și dezarmare sunt efectuate prin apăsarea unui singur buton. Metoda de hacking este de a crea interferențe și de a intercepta semnalul. Când proprietarul mașinii iese din mașină și apasă butonul telecomenzii, se creează interferențe radio puternice. Ca urmare, semnalul cu codul nu ajunge la unitatea de control al alarmei, ci este interceptat și copiat de către codificatorul. Șoferul nedumerit apasă din nou butonul, dar procesul se repetă și al doilea cod este de asemenea interceptat. Din a doua oară, mașina este pusă în apărare, dar comanda vine de la aparatul hoțului. Când proprietarul își face treburile cu calm, deturnătorul trimite un al doilea cod interceptat anterior și scoate mașina din protecție. Evident, protecția împotriva unui astfel de hacking este utilizarea de către producătorii de auto-singalizare a unor algoritmi de generare a mesajelor legați de momentul creării și durata de viață (similar cu TOTP), care vor asigura că mesajul stocat de atacator devine învechit. În același timp, mesajul ar trebui să devină învechit într-o perioadă foarte scurtă de timp, ceea ce să nu permită infractorului să-l folosească neobservat de proprietarul mașinii. Însă, în cazul piratarii algoritmilor de criptare și a secretelor folosite, atacatorul are posibilitatea de a crea o copie a unui key fob legitim.
A doua metodă este analitică și se bazează pe vulnerabilități lăsate în algoritm de producătorii de alarme auto. De exemplu, sistemele standard ale unor mașini au aceleași chei. Acest lucru face posibilă fabricarea așa-numiților codificatori algoritmici . Astfel de dispozitive determină marca și marca alarmei prin mesajul digital al cheii, apoi există o comparație cu baza codurilor „secrete” din fabrică (sau codurilor de fabrică), iar în cele din urmă, dispozitivul de captare a codului începe să funcționeze în conformitate cu cu datele primite, devenind un duplicat complet al brelocului proprietarului. Baza de date din fabrică se formează din cauza scurgerilor de informații de la producătorii înșiși, precum și din cauza unor vulnerabilități (de exemplu, aceleași chei pentru o serie întreagă de alarme auto) [2] .
Cel mai faimos algoritm de codare dinamică este KeeLoq , dezvoltat de compania americană Microchip Technology . Algoritmul este un cifr bloc simetric (adică aceeași cheie pentru criptare și decriptare) cu un bloc de 32 de biți și o cheie de 64 de biți, bazat pe componenta software NLFSR - un registru de deplasare cu feedback neliniar [3] [ 4] . Analitic, acest algoritm nu a fost încă piratat, doar implementările sale nereușite au fost piratate [5] . De exemplu, mulți producători scriu aceeași cheie pentru toate sistemele, ceea ce vă permite să creați coduri „de fabricație” [6] .
Mulți producători de alarme auto și-au dezvoltat propriile coduri dinamice, aducând îmbunătățiri semnificative. Unele dintre ele sunt încă considerate nedeschise. Cu toate acestea, trebuie să înțelegeți că alarmele de codare dinamică sunt deja oarecum depășite, nu oferă o protecție sută la sută a mașinii împotriva furtului. Au fost înlocuite cu dispozitive cu codare conversațională.
În momentul de față, cea mai fiabilă și criptorezistentă este așa-numita „codare dialog”, care necesită un canal de comunicare bidirecțională (prezența unui receptor și emițător, atât în modulul principal, cât și în cheia). Datorită prezenței unui canal de comunicare bidirecțională, este posibil să se organizeze schimbul de chei de criptare pe baza unui protocol similar Diffie-Hellman . Identificarea cheii se realizează în mai multe etape. Să luăm în considerare mai detaliat procesul de armare / dezarmare a unei mașini.
Când proprietarul mașinii apasă butonul, o cerere de executare a comenzii vine de la telecomanda la centrala de alarmă. Apoi, unitatea de control trebuie să se asigure că comanda a fost trimisă de la cheia proprietarului. În acest scop, generează un număr aleator și îl trimite la breloc. Acest număr este procesat conform unui anumit algoritm și transmis înapoi la unitatea de control. În același timp, unitatea de control prelucrează același număr și îl compară cu numărul primit de la cheia. Dacă și numai dacă numerele se potrivesc, unitatea centrală de semnalizare execută comanda. Este de remarcat faptul că algoritmul specific prin care se efectuează calculele pe un număr aleatoriu este pur individual pentru fiecare alarmă de mașină, este încorporat în acesta în faza de producție și, în majoritatea cazurilor, este un secret comercial.
Luați în considerare următorul algoritm:
,
unde A, B, C, m sunt numerele care sunt scrise în alarmă în faza de producere a alarmei (diferite pentru fiecare alarmă);
X este un număr aleator generat de unitatea de comandă și transmis la cheie (se modifică la fiecare comandă);
Y este un număr care este calculat de unitatea de comandă și de cheia în funcție de un algoritm dat.
După apăsarea butonului de pe telecomandă, unitatea de comandă a generat un număr aleatoriu ( X = 977 ) și l-a trimis la cheie. Pentru calcul vom accepta:
A=37, B=17, C=23, m=610 .
Înlocuind și efectuând calculele, obținem numărul ( Y = 46882441603), care ar trebui să fie obținut în cursul calculelor pe cheia și BU. În cazul unei potriviri, VU permite executarea comenzii.
Este clar că algoritmii folosiți în semnalizare sunt mult mai complicati. Dar chiar și pentru exemplul de mai sus, este necesară interceptarea pachetelor de date de patru ori (din moment ce există patru necunoscute în ecuație).
Este imposibil din punct de vedere analitic să interceptați și să decriptați un pachet de date al unei alarme auto interactive. Acest lucru se datorează faptului că fiecare sistem utilizează o cheie de criptare individuală care este transmisă o singură dată la înregistrarea unei chei în sistem. Lungimea cheii este de 128 de biți (în 256 de biți mai modern), ceea ce oferă combinații. Va dura mai mult timp decât există universul pentru a sorta acest număr cu o viteză de chiar și un miliard de opțiuni pe secundă.
Mai mult, CU folosește un generator hardware de numere aleatorii, care este protejat suplimentar de hacking. De asemenea, transmiterea pachetelor de informații este însoțită de pauze, ceea ce duce la un salt în frecvența de transmisie în cadrul ciclului de autorizare a cheii în sistem.
Toate măsurile de mai sus îngreunează atât interceptarea, cât și decriptarea comenzii trimise de la cheie către unitatea de comandă sau invers, făcând astăzi imposibilă piratarea unei alarme auto pe baza unui cod de dialog. Unii producători importanți organizează o competiție pentru a găsi vulnerabilități în semnalizarea conversațională. Pentru găsirea acestora, se oferă o recompensă bănească mare [7] . (Momentan nu a fost piratat codul de dialog al schimbului radio dintre cheia și complexul de securitate al acestei companii).
În ultimii ani, a devenit popular un nou tip de alarmă auto, care nu necesită ca proprietarul să apese butoanele de pe telecomanda pentru a arma/dezarma, este suficient să te apropii de mașină la o distanță apropiată pentru a debloca ușile, sau îndepărtați-vă astfel încât ușile să fie blocate și alarma să intre în protecție. Mai mult, acest tip de alarmă vă permite să porniți mașina cu un buton, fără a necesita o cheie clasică de contact. Un astfel de sistem se numește PKES (Passive Keyless Entry and Start - „passive keyless entry and engine start”) [8] .
De îndată ce proprietarul se apropie de mașină și apasă butonul de pe mânerul ușii, mașina „se trezește” și începe un dialog cu cheia (vezi Codarea dialogului):
- Bună, sunt mașina X cu identificatorul Z. Cine ești?
Acest mesaj este transmis în aer la o frecvență de 125 kHz, iar dacă telecomanda (numită și cheie inteligentă / cheie inteligentă) este în apropiere și înțelege limba solicitării, răspunde imediat mașinii folosind propria frecvență de operare. (433 sau 868 MHz). Mai mult, răspunde cu o combinație digitală generată de algoritmul de criptare (individual pentru fiecare semnalizare):
- Hei, eu sunt cheia ta! Cod de răspuns X123.Y456.Z789.
Pentru a exclude frauda electronică (redarea coletelor preînregistrate, transmiterea unui cod prin canale de internet celulare sau mobile), răspunsul de la cheia electronică trebuie să vină în timp real (întârzierile sunt numărate cu nanosecunde), astfel încât orice încercare de deschidere a mașinii este condamnată. catre esec. Dar chiar și astfel de acțiuni inteligente nu salvează întotdeauna de furt.
Vulnerabilitatea criminală a sistemelor PKES a fost discutată în 2011, când o echipă de programatori elvețieni a demonstrat o metodă de „prelungire” a canalului de comunicare cu cheia mașinii. Tehnologia a fost numită Relay Station Attack [9] . Până atunci, deturnatorii ruși utilizau deja astfel de dispozitive cu putere și principal [10] .
Un atacator va avea nevoie de un repetor special (numit și „tod”/„braț lung”), care costă zeci de mii de euro, și un asistent, care ar trebui să fie amplasat lângă cheia inteligentă, adică lângă Proprietar . Când deturnătorul apasă butonul pentru a deschide mașina, semnalul este transmis prin repetor către dispozitivul asistentului, care comunică deja cu cheia de alarmă. Cu ajutorul unor astfel de acțiuni, puteți fura orice mașină.
Să luăm un exemplu de furt. Ți-ai parcat mașina în apropierea centrului comercial, ai închis ușile și te-ai ocupat de treburile tale, ușile s-au blocat automat în același timp. Intrusul nr. 1 cu un receptor se apropie de mașina ta, iar intrusul nr. 2 este lângă tine cu un repetor de semnal pentru cheia ta. Mașina în acest moment identifică că se presupune că sunteți în apropiere și se deschide. Intrusul #1 intră în mașină și pleacă.
Cum să facem față acestei vulnerabilități? Există firmware care va schimba codul de control al alarmei cu altul, ceea ce înseamnă că canalul radio va fi la îndemâna repetoarelor. Există, de asemenea, o metodă dovedită - de a ascunde telecomanda cu alarmă într-un ecran din folie metalizată (vezi cușca Faraday ) - o modalitate simplă, dar eficientă de a bloca fizic dialogul dintre telecomandă și unitatea de control de îndată ce te îndepărtezi de mașină și ascunde cheia.