Laiko nustatymo atakos yra sudėtinga šoninio kanalo atakų klasė, kurios metu išnaudojami laiko, reikalingo sistemai kriptografiniams algoritmams ar kitoms jautrioms operacijoms vykdyti, skirtumai. Šiuos variantus galima išmatuoti ir analizuoti, siekiant nustatyti jautrią informaciją, pvz., kriptografinius raktus, slaptažodžius ar kitus konfidencialius duomenis. Pagrindinis laiko atakų principas yra tas, kad skirtingos sistemos įvesties arba būsenos gali lemti skirtingą vykdymo laiką, net jei skirtumai yra nedideli. Atidžiai įvertindamas šiuos vykdymo laikus, užpuolikas gali surinkti pakankamai informacijos, kad galėtų atkurti neskelbtinus duomenis.
Kriptografinių sistemų kontekste laiko nustatymo atakos yra ypač stiprios, nes daugelis kriptografinių algoritmų apima operacijas, kurių vykdymo laikas gali priklausyti nuo slaptojo rakto arba apdorojamo paprasto teksto. Pavyzdžiui, apsvarstykite paprastą kriptografinę operaciją, tokią kaip modulinis eksponentas, kuris dažniausiai naudojamas viešojo rakto kriptografijoje (pvz., RSA). Laikas, kurio reikia moduliniam eksponencijai atlikti, gali skirtis, atsižvelgiant į bitų skaičių, nustatytą eksponente į 1. Jei užpuolikas gali išmatuoti laiką, kurio reikia kelioms modulinėms eksponentijoms su skirtingomis įvestimis atlikti, jis gali nustatyti slaptojo eksponento bitus.
Vieną iš ankstyviausių ir labiausiai žinomų laiko atakų 1996 m. pademonstravo Paulas Kocheris prieš RSA ir Diffie-Hellman diegimus. Kocher parodė, kad išmatavus laiką, per kurį šie algoritmai atlieka privačiojo rakto operacijas, buvo galima nustatyti privatųjį raktą. Ataka pasinaudojo tuo, kad tam tikros algoritmų operacijos, tokios kaip modulinis dauginimas, užtruko skirtingai, priklausomai nuo įvesties verčių.
Kitas klasikinis laiko atakos pavyzdys yra AES (Advanced Encryption Standard) algoritmo ataka. AES yra simetriškas raktų šifravimo algoritmas, apimantis kelis pakeitimo, permutacijos ir maišymo etapus. Kai kuriose programose laikas, per kurį galima pasiekti atmintį arba atlikti tam tikras operacijas, gali priklausyti nuo slaptojo rakto ir paprasto teksto reikšmių. Atidžiai išmatuodamas laiką, kurio reikia norint užšifruoti skirtingus paprastus tekstus, užpuolikas gali nustatyti informaciją apie slaptąjį raktą.
Norėdami išsamiai suprasti, kaip veikia laiko nustatymo atakos, apsvarstykite šiuos veiksmus, kurie paprastai atliekami vykdant laiko ataką:
1. Matavimo fazė: užpuolikas pakartotinai siunčia skirtingas įvestis tikslinei sistemai ir matuoja laiką, per kurį sistema reaguoja. Šie matavimai turi būti tikslūs ir gali prireikti didelės raiškos laikmačių arba specializuotos aparatinės įrangos, kad būtų pasiektas reikiamas tikslumas.
2. Duomenų rinkimas: užpuolikas surenka daugybę laiko matavimų, atitinkančių skirtingus įvestis. Kuo daugiau matavimų surinkta, tuo tiksliau užpuolikas gali nustatyti neskelbtiną informaciją.
3. Statistinė analizė: užpuolikas analizuoja surinktus laiko duomenis naudodamas statistinius metodus, kad nustatytų šablonus arba koreliacijas tarp įvesties verčių ir vykdymo laiko. Ši analizė gali atskleisti informaciją apie vidinę sistemos būseną, pvz., slaptųjų raktų ar kitų jautrių duomenų reikšmes.
4. Raktų ištraukimas: Remdamasis statistine analize, užpuolikas atkuria neskelbtiną informaciją. Šis veiksmas gali apimti matematinių lygčių sprendimą arba mašininio mokymosi metodų naudojimą slaptiems duomenims nustatyti.
Norėdami iliustruoti šiuos veiksmus konkrečiu pavyzdžiu, apsvarstykite laiko ataką prieš slaptažodžių palyginimo funkciją. Daugelis sistemų naudoja funkcijas, kurios lygina vartotojo pateiktus slaptažodžius su saugomais slaptažodžiais, kad autentifikuotų vartotojus. Naivus tokios funkcijos įgyvendinimas gali lyginti slaptažodžius po simbolio ir grįžti iškart, kai tik randamas neatitikimas. Tai reiškia, kad dviejų slaptažodžių palyginimo laikas gali skirtis priklausomai nuo slaptažodžių pradžioje esančių atitinkančių simbolių skaičiaus. Užpuolikas gali išnaudoti šį laiko variantą, kad nustatytų teisingą slaptažodį po vieną simbolį.
Pavyzdžiui, tarkime, kad išsaugotas slaptažodis yra „saugus slaptažodis“. Užpuolikas gali pradėti nusiųsdamas slaptažodį „a“ ir išmatuodamas palyginimui skirtą laiką. Jei palyginimas greitas, užpuolikas žino, kad pirmasis simbolis nėra „a“. Tada užpuolikas bando „b“, „c“ ir t. t., kol suranda simbolį, kurio palyginimas užtrunka šiek tiek ilgiau, nurodant atitiktį. Tada užpuolikas pereina prie antrojo simbolio ir pakartoja procesą, galiausiai atkurdamas visą slaptažodį.
Norint sušvelninti laiko atakas, gali būti taikomos kelios atsakomosios priemonės:
1. Pastovaus laiko algoritmai: Įdiekite kriptografinius algoritmus ir kitas jautrias operacijas taip, kad būtų užtikrintas pastovus vykdymo laikas, nepaisant įvesties reikšmių. Tai gali būti sudėtinga, bet būtina norint užkirsti kelią laiko išpuoliams.
2. Atsitiktiniai vėlavimai: Įveskite atsitiktinius delsimus vykdant jautrias operacijas, kad paslėptumėte laiko informaciją. Tačiau šis metodas gali būti mažiau veiksmingas prieš užpuolikus, kurie gali vidutiniškai apskaičiuoti atsitiktinius vėlavimus per daugelį matavimų.
3. Apakinimo būdai: naudokite blokavimo metodus, kad atsitiktinai suskirstytumėte kriptografinių operacijų įvestis, todėl užpuolikams sunku susieti vykdymo laiką su konkrečiomis įvesties reikšmėmis.
4. Aparatinės įrangos atsakomosios priemonės: naudokite aparatūros pagrindu sukurtas atsakomąsias priemones, pvz., specialius kriptografinius bendruosius procesorius, skirtus atsispirti laiko atakoms, užtikrinant nuolatinį vykdymą arba kitas apsaugos priemones.
5. Kodo auditas ir testavimas: Reguliariai tikrinkite ir testuokite kodą, ieškodami laiko spragų, ypač kriptografinėse programose. Automatizuoti įrankiai ir metodai gali padėti nustatyti galimus laiko nutekėjimus.
Laiko atakos pabrėžia, kaip svarbu atsižvelgti į šoninio kanalo pažeidžiamumą kuriant ir diegiant saugias sistemas. Nors kriptografiniai algoritmai dažnai analizuojami dėl jų matematinės galios, praktinis jų saugumas taip pat priklauso nuo įgyvendinimo detalių ir galimų šoninių kanalų atakų. Kūrėjai ir saugos specialistai turi būti budrūs šalindami šias spragas, kad užtikrintų kriptografinių sistemų patikimumą.
Kiti naujausi klausimai ir atsakymai apie CPU laiko atakos:
- Kokie yra iššūkiai ir kompromisai, susiję su aparatinės ir programinės įrangos mažinimu, apsaugančiu nuo laiko atakų, išlaikant sistemos našumą?
- Kokį vaidmenį atšakos prognozuotojas atlieka procesoriaus laiko atakose ir kaip užpuolikai gali juo manipuliuoti, kad nutekėtų jautri informacija?
- Kaip nuolatinio laiko programavimas gali padėti sumažinti kriptografinių algoritmų laiko atakų riziką?
- Kas yra spekuliatyvus vykdymas ir kaip jis prisideda prie šiuolaikinių procesorių pažeidžiamumo prieš atakas, pvz., Spectre?
- Kas yra laiko ataka?