Krypteringsalgoritmen i billarm är en uppsättning regler för datautbyte mellan nyckelbrickan och styrenheten i ett billarm, enligt vilka dataöverföringen skyddas så att en angripare inte kan få obehörig åtkomst till bilen, även om han kan fånga upp datautbytespaket.
Huvudfunktionen för billarm är ett komplext varningssystem för ägaren om obehörigt intrång i sin bil (till exempel öppning av dörrar, motorhuv, bagageutrymme), alla åtgärder som utförs av en inkräktare med bilen (till exempel att slå i kroppen, lyfta bilen, rör sig i rymden, punkterar däckhjulen), försöker stjäla en bil. Alla moderna larm är dessutom utrustade med ytterligare funktioner som ökar bekvämligheten med att använda fordonet (se Billarm ). Konfrontationen mellan utvecklarna av billarm och biltjuvar började sedan skapandet av de första billarmen. Under åren har säkerhetssystemen förbättrats, men det har också möjligheterna att hacka dem. Därefter kommer vi att prata om kryptering i billarm, deras sårbarheter, samt skyddsmetoder.
Liksom alla elektroniska system består ett billarmsystem av tre byggstenar: ingångs- och manöverdon , en styrenhet (nedan kallad BU). Inmatningsenheterna inkluderar en fjärrkontroll eller billarmnyckel . I ett standardlarm (installerat av biltillverkaren) kombineras det oftast med en fysisk tändningsnyckel. Med hjälp av nyckelbrickan aktiveras och avaktiveras larmet, samt övervakar bilens tillstånd. I ett antal larmkonstruktioner används en nyckelbricka för att fjärrstarta motorn, styra elektrisk utrustning och söka efter en bil på en parkeringsplats.
Styrenheten är hjärtat i larmet och är placerad inne i bilen, på en från utsidan osynlig plats. I fordonets elektroniska ledningssystem (se Controller Area Network ) är CU ansluten till de sensorer som är nödvändiga för att detta larm ska fungera (dessa kan vara positions- och hastighetssensorer, induktiva, magnetoresistiva, optiska sensorer (för att övervaka olika fordonsparametrar, t.ex. som kroppsintegritet), sensorer tryck) [1] .
Data mellan styrenheten och nyckelbrickan sänds över en radiokanal som inte är säker. Med andra ord, radiovågor sprider sig inte i en riktning och de överförda data kan lyssnas på, långt från bilens ägare. Med hjälp av vissa krypteringsalgoritmer krypteras de överförda data och överförs i form av små sekvenser - paket . Varje paket kan representeras som ett kommando (till exempel "Öppna låsen"), ett svar på ett kommando ("Låsen är öppna") eller ett meddelande ("Obs! Tändningen är på!").
Trots det faktum att reversibla transformationer utförs på överförda data (anges tidigare) med hjälp av en nyckel för att dölja från obehöriga personer (i vårt fall från en person som inte är ägaren till bilen), med andra ord, data är krypterad, i rysk litteratur och vetenskapliga tidskrifter i relation till billarm, uttrycken "statisk kodning" , "dynamisk kodning", "dialogkodning" (och liknande fraser med ordet "kod"), som är felaktiga från den punkten syn på kryptografi, har satt sig. I själva verket är det här tre typer av kryptering, och med tanke på dem kommer vi att hålla detta faktum i åtanke.
De allra första signalalgoritmerna var baserade på statisk kodning . Samtidigt hade varje lag sitt eget kommandopaket, som inte förändrades över tiden (därav namnet på denna typ av kodning). Till exempel motsvarade kommandot "Öppna dörrar" alltid kommandopaketet " Q1234Y" (i detta format överfördes det från nyckelbrickan till styrenheten). Paketformatet valdes av användaren själv (eller larmtillverkaren), byte av motorer inuti nyckelbrickan eller lödning av byglarna. Eftersom det fanns få kodalternativ kunde man ibland öppna någon annans bil med samma larm med sin nyckelbricka – paketformaten stämde. Naturligtvis gav sådan kodning inte ordentligt skydd - det räckte att lyssna på paketet som motsvarar kommandot "Disarm" en gång och sedan, efter att ha upprepat det, få tillgång till bilen.
En sårbarhet i den statiska kodningsmetoden och möjligheten att lyssna på radio blev drivkraften för uppkomsten av kodgrabbare - speciella tekniska anordningar som kan fånga upp signalen, avkoda och upprepa koden. Således emulerar kodfångaren i huvudsak ett vanligt larm utan ägarens vetskap. När det gäller designen upprepar kodfångaren nästan exakt billarmets nyckelbricka - den har en mottagare och sändare av radiovågor, en kontrollmikrokontroller, fysiska knappar och indikeringsanordningar. För att förenkla tillverkningen av sådana enheter använder kapare ofta larmnyckelbrickans kropp, eftersom det redan finns knappar, en antenn och en indikation där. Dessutom, visuellt kan en sådan kodfångarnyckelring inte särskiljas från en referensnyckelring.
För att skydda billarm från att hackas av en kodfångare började de använda en dynamisk kod – ett ständigt föränderligt datapaket som överförs från nyckelbrickan till larmenheten via en radiokanal. Med varje nytt kommando skickas en kod från nyckelbrickan som inte har använts tidigare.
Larmet fungerar enligt följande princip. När bilägaren trycker på nyckelbrickan genereras en signal. Den innehåller information om enhetens serienummer, den hemliga koden ( krypteringsnyckel ) och antalet klick (det är nödvändigt att synkronisera driften av nyckelbrickan och kontrollenheten). Denna data är förkrypterad innan den skickas. Själva krypteringsalgoritmen är fritt tillgänglig, men för att dekryptera datan behöver du känna till den hemliga koden som skrivs till nyckelbrickan och kontrollenheten på fabriken. Det kan tyckas att problemet med kodfångare har lösts - men det fanns inte där. Dynamisk kodning motstod inte heller kodfångarna av nya modifieringar.
Den första metoden bygger på att byta ut larmkoden ( kodbyte av kodfångare ), där till- och frånkopplingskommandona utförs genom att trycka på en knapp. Hackningsmetoden är att skapa störningar och fånga upp signalen. När bilägaren går ur bilen och trycker på nyckelbrickan skapas starka radiostörningar. Som ett resultat når signalen med koden inte larmstyrenheten utan fångas upp och kopieras av kodfångaren. Den förbryllade föraren trycker på knappen igen, men processen upprepas och även den andra koden fångas upp. Från andra gången ställs bilen på försvar, men kommandot kommer från tjuvens apparat. När ägaren lugnt går till väga skickar kaparen en andra, tidigare avlyssnad kod och tar bort bilen från skyddet. Uppenbarligen är skyddet mot sådan hacking användningen av auto-singaliseringsproducenter av meddelandegenereringsalgoritmer kopplade till tidpunkten för skapande och livslängd (liknande TOTP), vilket kommer att säkerställa att meddelandet som lagras av angriparen blir föråldrat. Samtidigt bör meddelandet bli inaktuellt på mycket kort tid, vilket inte tillåter brottslingen att använda det obemärkt av bilägaren. Men i händelse av hackning av krypteringsalgoritmerna och de hemligheter som används, har angriparen möjlighet att skapa en dubblett av en legitim nyckelbricka.
Den andra metoden är analytisk och bygger på sårbarheter som lämnas kvar i algoritmen av billarmstillverkare. Till exempel har standardsystemen i vissa bilar samma nycklar. Detta gör det möjligt att tillverka så kallade algoritmiska code grabbers . Sådana enheter bestämmer larmets märke och märke genom det digitala meddelandet från nyckelbrickan, sedan finns det en jämförelse med basen av "hemliga" fabrikskoder (eller fabrikskoder), och i slutändan börjar kodfångaren att fungera i enlighet med med mottagna data, blir en fullständig kopia av ägarens nyckelbricka. Fabriksdatabasen bildas på grund av informationsläckor från tillverkarna själva, samt på grund av vissa sårbarheter (till exempel samma nycklar för en hel serie billarm) [2] .
Den mest kända dynamiska kodningsalgoritmen är KeeLoq , utvecklad av det amerikanska företaget Microchip Technology . Algoritmen är ett symmetriskt (det vill säga samma nyckel för kryptering och dekryptering) blockchiffer med ett 32-bitars block och en 64-bitars nyckel, baserat på NLFSR mjukvarukomponent - ett icke-linjärt återkopplingsskiftregister [3] [ 4] . Analytiskt har denna algoritm ännu inte blivit hackad, bara dess misslyckade implementeringar har hackats [5] . Till exempel skriver många tillverkare samma nyckel för alla system, vilket gör att du kan skapa "manufactory" code grabbers [6] .
Många billarmtillverkare har utvecklat sina egna dynamiska koder, vilket gör betydande förbättringar. Vissa av dem anses fortfarande vara oöppnade. Du måste dock förstå att dynamiska kodningslarm redan är något föråldrade, de ger inte ett hundraprocentigt skydd av bilen från stöld. De ersattes av enheter med konversationskodning.
För tillfället är den mest pålitliga och krypto-resistenta den så kallade "dialogkodningen", som kräver en tvåvägskommunikationskanal (närvaron av en mottagare och sändare, både i huvudmodulen och i nyckelbrickan). På grund av närvaron av en tvåvägskommunikationskanal är det möjligt att organisera utbytet av krypteringsnycklar baserat på ett liknande Diffie-Hellman-protokoll . Nyckelbricka-identifiering utförs i flera steg. Låt oss överväga mer i detalj processen för att tillkoppla / avväpna en bil.
När bilens ägare trycker på knappen kommer en begäran om att utföra kommandot från nyckelbrickan till den centrala larmenheten. Därefter måste kontrollenheten se till att kommandot skickades från ägarens nyckelbricka. För detta ändamål genererar den ett slumptal och skickar det till nyckelringen. Detta nummer bearbetas enligt en viss algoritm och skickas tillbaka till styrenheten. Samtidigt behandlar styrenheten samma nummer och jämför det med numret som tas emot från nyckelbrickan. Om och endast om siffrorna stämmer överens, utför signalcentralen kommandot. Det är värt att notera att den specifika algoritmen med vilken beräkningar utförs på ett slumptal är rent individuellt för varje billarm, det är inbyggt i det i produktionsskedet och är i de flesta fall en affärshemlighet.
Tänk på följande algoritm:
,
där A, B, C, m är siffrorna som skrivs till larmet vid larmproduktionsstadiet (olika för varje larm);
X är ett slumptal som genereras av styrenheten och överförs till nyckelbrickan (ändras med varje kommando);
Y är ett tal som beräknas av styrenheten och nyckelbrickan enligt en given algoritm.
Efter att ha tryckt på knappen på nyckelbrickan genererade styrenheten ett slumpmässigt nummer ( X = 977 ) och skickade det till nyckelbrickan. För beräkning accepterar vi:
A=37, B=17, C=23, m=610 .
Genom att ersätta och utföra beräkningarna får vi numret ( Y = 46882441603), som bör erhållas under beräkningarna på nyckelbrickan och BU. Vid en matchning tillåter fordonsenheten att kommandot utförs.
Det är tydligt att algoritmerna som används vid signalering är mycket mer komplicerade. Men även för exemplet ovan krävs det att datapaket avlyssnas fyra gånger (eftersom det finns fyra okända i ekvationen).
Det är analytiskt omöjligt att fånga upp och dekryptera ett datapaket från ett interaktivt billarm. Detta beror på att varje system använder en individuell krypteringsnyckel som endast överförs en gång vid registrering av en nyckelbricka i systemet. Nyckellängden är 128 bitar (i modernare 256 bitar), vilket ger kombinationer. Det kommer att ta mer tid än universum existerar att sortera igenom detta nummer med en hastighet av till och med en miljard alternativ per sekund.
Dessutom använder CU:n en hårdvarugenerator för slumptal, som dessutom är skyddad från hackning. Dessutom åtföljs överföringen av informationspaket av pauser, vilket leder till ett hopp i överföringsfrekvensen inom nyckelbricka auktoriseringscykeln i systemet.
Alla ovanstående åtgärder gör det svårt att både avlyssna och dekryptera kommandot som skickas från nyckelbrickan till styrenheten eller vice versa, vilket gör det idag omöjligt att hacka ett billarm baserat på en dialogkod. Vissa stora tillverkare håller en tävling för att hitta sårbarheter i samtalssignalering. För att hitta dem erbjuds en stor monetär belöning [7] . (För tillfället har inte dialogkoden för radioväxlingen mellan nyckelbrickan och säkerhetskomplexet för detta företag hackats).
På senare år har en ny typ av billarm blivit populär, som inte kräver att ägaren trycker på knapparna på nyckelbrickan för att aktivera/avaktivera, det räcker med att närma sig bilen på nära avstånd för att låsa upp dörrarna, eller flytta undan så att dörrarna låses och larmet går i skydd. Dessutom låter denna typ av larm dig starta bilen med en knapp, utan att behöva en klassisk tändningsnyckel. Ett sådant system kallas PKES (Passive Keyless Entry and Start - "passive keyless entry and engine start") [8] .
Så fort ägaren närmar sig bilen och trycker på knappen på dörrhandtaget "vaknar" bilen och startar en dialog med nyckeln (se Dialogkodning):
- Hej, jag är bil X med identifierare Z. Vem är du?
Detta meddelande sänds i luften med en frekvens på 125 kHz, och om nyckelbrickan (även kallad smartnyckel/smartnyckel) är i närheten och förstår språket för begäran, svarar den omedelbart maskinen med sin egen arbetsfrekvens (433 eller 868 MHz). Dessutom svarar den med en digital kombination som genereras av krypteringsalgoritmen (individuellt för varje signalering):
- Hej, jag är din nyckel! Svarskod X123.Y456.Z789.
För att utesluta elektroniskt bedrägeri (spela förinspelade paket, sända en kod via mobila eller mobila internetkanaler) måste svaret från den elektroniska nyckeln komma i realtid (förseningar räknas med nanosekunder), så alla försök att öppna bilen är dömda till misslyckande. Men även sådana smarta handlingar räddar inte alltid från stöld.
Den kriminella sårbarheten hos PKES-system diskuterades 2011, när ett team av schweiziska programmerare demonstrerade en metod för att "förlänga" kommunikationskanalen bilnyckel. Tekniken kallades Relay Station Attack [9] . Vid den tiden använde ryska kapare redan sådana enheter med kraft och kraft [10] .
En angripare kommer att behöva en speciell repeater (även kallad "stav"/"lång arm"), som kostar tiotusentals euro, och en assistent, som ska finnas bredvid den smarta nyckeln, det vill säga bredvid ägaren . När kaparen trycker på knappen för att öppna bilen sänds signalen via repeatern till assistentens enhet, som redan kommunicerar med larmnyckeln. Med hjälp av sådana åtgärder kan du stjäla vilken bil som helst.
Låt oss ta ett exempel på stöld. Du parkerade din bil nära köpcentret, stängde dörrarna och gick i affärer, dörrarna låstes automatiskt samtidigt. Inkräktare nr 1 med en mottagare närmar sig din bil, och inkräktare nr 2 är nära dig med en signalrepeater för din nyckel. Bilen identifierar just nu att du påstås vara i närheten och öppnar. Inkräktare #1 sätter sig i bilen och kör iväg.
Hur hanterar man denna sårbarhet? Det finns firmware som kommer att ändra larmkontrollkoden till en annan, vilket innebär att radiokanalen kommer att vara utom räckhåll för repeaters. Det finns också en beprövad metod - att gömma larmnyckelbrickan i en metalliserad folieskärm (se Faraday-bur ) - ett enkelt men effektivt sätt att fysiskt blockera dialogen mellan nyckelbrickan och styrenheten så fort du flyttar bort från bil och göm nyckelbrickan.