Vremenski napadi sofisticirana su klasa napada sporednih kanala koji iskorištavaju varijacije u vremenu koje je potrebno sustavu da izvrši kriptografske algoritme ili druge osjetljive operacije. Te se varijacije mogu mjeriti i analizirati kako bi se izvukle osjetljive informacije, kao što su kriptografski ključevi, lozinke ili drugi povjerljivi podaci. Temeljno načelo iza vremenskih napada je da različiti ulazi ili stanja sustava mogu dovesti do različitih vremena izvršenja, čak i ako su razlike male. Pažljivim mjerenjem tih vremena izvršenja, napadač može prikupiti dovoljno informacija za rekonstrukciju osjetljivih podataka.
U kontekstu kriptografskih sustava, vremenski napadi su posebno snažni jer mnogi kriptografski algoritmi uključuju operacije čije vrijeme izvršenja može ovisiti o tajnom ključu ili otvorenom tekstu koji se obrađuje. Na primjer, razmotrite jednostavnu kriptografsku operaciju kao što je modularno stepenovanje, koja se obično koristi u kriptografiji s javnim ključem (npr. RSA). Vrijeme potrebno za izvođenje modularnog stepenovanja može varirati ovisno o broju bitova postavljenih na 1 u eksponentu. Ako napadač može izmjeriti vrijeme potrebno za izvođenje nekoliko modularnih stepenovanja s različitim ulazima, potencijalno može zaključiti o bitovima tajnog eksponenta.
Jedan od najranijih i najpoznatijih napada na mjerenje vremena demonstrirao je Paul Kocher 1996. protiv RSA i Diffie-Hellman implementacija. Kocher je pokazao da je mjerenjem vremena potrebnog ovim algoritmima za izvođenje operacija privatnog ključa, moguće zaključiti privatni ključ. Napad je iskoristio činjenicu da su određene operacije unutar algoritama, poput modularnog množenja, zahtijevale različito vrijeme ovisno o ulaznim vrijednostima.
Još jedan klasičan primjer vremenskog napada je napad na AES (Advanced Encryption Standard) algoritam. AES je algoritam šifriranja simetričnog ključa koji uključuje nekoliko rundi operacija zamjene, permutacije i miješanja. U nekim implementacijama, vrijeme potrebno za pristup memoriji ili izvođenje određenih operacija može ovisiti o vrijednostima tajnog ključa i otvorenog teksta. Pažljivim mjerenjem vremena potrebnog za šifriranje različitih otvorenih tekstova, napadač može zaključiti informacije o tajnom ključu.
Da biste detaljno razumjeli kako funkcioniraju vremenski napadi, razmotrite sljedeće korake koji su obično uključeni u izvršavanje vremenskog napada:
1. Faza mjerenja: Napadač opetovano šalje različite ulaze ciljnom sustavu i mjeri vrijeme potrebno da sustav odgovori. Ta mjerenja moraju biti precizna i mogu zahtijevati mjerače vremena visoke razlučivosti ili specijalizirani hardver za postizanje potrebne točnosti.
2. Prikupljanje podataka: Napadač prikuplja velik broj vremenskih mjerenja koja odgovaraju različitim ulazima. Što je više mjerenja prikupljeno, napadač točnije može zaključiti osjetljive informacije.
3. Statistička analiza: Napadač analizira prikupljene vremenske podatke koristeći statističke metode kako bi identificirao obrasce ili korelacije između ulaznih vrijednosti i vremena izvršenja. Ova analiza može otkriti informacije o unutarnjem stanju sustava, poput vrijednosti tajnih ključeva ili drugih osjetljivih podataka.
4. Ekstrakcija ključa: Na temelju statističke analize napadač rekonstruira osjetljive podatke. Ovaj korak može uključivati rješavanje matematičkih jednadžbi ili korištenje tehnika strojnog učenja za zaključivanje tajnih podataka.
Kako bismo ilustrirali ove korake konkretnim primjerom, razmotrite vremenski napad na funkciju usporedbe lozinki. Mnogi sustavi koriste funkcije koje uspoređuju korisničke lozinke s pohranjenim lozinkama za autentifikaciju korisnika. Naivna implementacija takve funkcije mogla bi usporediti lozinke znak po znak i vratiti se čim se pronađe neslaganje. To znači da vrijeme potrebno za usporedbu dviju lozinki može varirati ovisno o broju odgovarajućih znakova na početku lozinki. Napadač može iskoristiti ovu vremensku varijaciju kako bi zaključio ispravnu lozinku jedan po jedan znak.
Na primjer, pretpostavimo da je pohranjena lozinka "securepassword". Napadač može započeti slanjem lozinke "a" i mjerenjem vremena potrebnog za usporedbu. Ako je usporedba brza, napadač zna da prvi znak nije 'a'. Napadač zatim pokušava "b", "c" i tako dalje, sve dok ne pronađe znak kojem je potrebno malo više vremena za usporedbu, što ukazuje na podudaranje. Napadač zatim prelazi na drugi znak i ponavlja postupak, na kraju rekonstruirajući cijelu lozinku.
Kako bi se ublažili vremenski napadi, može se primijeniti nekoliko protumjera:
1. Algoritmi s konstantnim vremenom: Implementirajte kriptografske algoritme i druge osjetljive operacije na način koji osigurava konstantno vrijeme izvršenja bez obzira na ulazne vrijednosti. To može biti izazovno, ali je ključno za sprječavanje vremenskih napada.
2. Nasumična kašnjenja: Uvedite nasumične odgode u izvršavanju osjetljivih operacija kako biste zamaglili informacije o vremenu. Međutim, ovaj pristup može biti manje učinkovit protiv napadača koji mogu izračunati prosjek nasumičnih kašnjenja tijekom mnogih mjerenja.
3. Tehnike zasljepljivanja: Koristite tehnike zasljepljivanja za nasumično raspoređivanje ulaza u kriptografske operacije, otežavajući napadačima povezivanje vremena izvršenja s određenim ulaznim vrijednostima.
4. Hardverske protumjere: Upotrijebite protumjere temeljene na hardveru, kao što su namjenski kriptografski koprocesori, koji su dizajnirani da se odupru vremenskim napadima pružanjem konstantnog izvršavanja ili drugih zaštitnih mjera.
5. Revizija koda i testiranje: Redovito provjeravajte i testirajte kod za vremenske ranjivosti, posebno u kriptografskim implementacijama. Automatizirani alati i tehnike mogu pomoći u prepoznavanju potencijalnih vremenskih curenja.
Vremenski napadi naglašavaju važnost razmatranja ranjivosti sporednih kanala u dizajnu i implementaciji sigurnih sustava. Dok se kriptografski algoritmi često analiziraju zbog njihove matematičke snage, njihova praktična sigurnost također ovisi o detaljima implementacije i potencijalu napada sa strane kanala. Programeri i stručnjaci za sigurnost moraju biti oprezni u rješavanju ovih ranjivosti kako bi osigurali robusnost kriptografskih sustava.
Ostala nedavna pitanja i odgovori u vezi Timing napadi CPU-a:
- Koji su neki od izazova i kompromisa uključenih u implementaciju hardverskih i softverskih ublažavanja vremenskih napada uz održavanje performansi sustava?
- Kakvu ulogu igra prediktor grananja u napadima na CPU mjerenje vremena i kako napadači mogu njime manipulirati da bi curili osjetljivi podaci?
- Kako programiranje s konstantnim vremenom može pomoći u ublažavanju rizika vremenskih napada u kriptografskim algoritmima?
- Što je spekulativno izvršenje i kako ono pridonosi ranjivosti modernih procesora na vremenske napade kao što je Spectre?
- Što je vremenski napad?