Sivukanava- ja vikahyökkäykset (syventävä)

Tämä alaluku antaa ensin yleiskatsauksen fyysisistä hyökkäyksistä salausalgoritmien toteutuksiin. Toisessa osassa käsitellään monenlaisia vastatoimia ja joitakin avoimia tutkimusongelmia.

Fyysiset hyökkäykset, enimmäkseen sivukanava- ja vikahyökkäykset, olivat alunperin suuri huolenaihe pienten laitteiden kehittäjille erityisesti älykorttien ja maksutelevisiojärjestelmien suojaamiseksi. Hyökkäysten ja vastatoimien merkitys kasvaa, kun entistä enemmän elektronisia laitteita on helposti saatavilla IoT-toteutusten myötä.

Hyökkäykset (syventävä)

Nykyään salausalgoritmit antavat erittäin hyvän suojan matemaattisia ja kryptoanalyyttisia hyökkäyksiä vastaan. Tämä pätee varmimmin algoritmeihin, jotka ovat standardoituja tai jotka ovat saaneet laajan tarkastelun ja hyväksynnän avoimessa tutkimuskirjallisuudessa. Heikoimmaksi lenkiksi jää algoritmien toteuttaminen laitteistoissa ja ohjelmistoissa. Tietoa vuotaa laitteistototeutuksesta sivukanava- ja vikahyökkäysten kautta.

Sivukanavahyökkäykset ovat tyypillisesti passiivisia, vikahyökkäykset aktiivisia. Toinen jaottelu voidaan tehdä sen mukaan, mikä on hyökkääjän etäisyys laitteeseen.

Sivukanavahyökkäykset: Yleiset sivukanavahyökkäykset ovat passiivisia laskenta-alustan tarkastelua. Suoritusajan ja virrankulutuksen datariippuvaisten vaihteluiden kautta tai laitteen sähkömagneettisesta säteilystä hyökkääjä voi päätellä salaisia tietoja alustan sisäosista. Havainnot tehdään tyypillisesti laitteen läheltä, kun sitä käytetään normaalisti. On tärkeää huomata, että laitteen normaali toiminta ei häiriinny. Sivukanavahyökkäyksestä tekee varsin tehokkaan se, ettei laite havaitse, että sitä vastaan hyökätään.

Virrankulutuksen vaihteluihin perustuvia sivukanavahyökkäyksiä on tutkittu runsaasti. Tyypillisesti hyökkäys tapahtuu laitteen lähellä, jossa on pääsy virtalähteeseen tai virtalähteen kytkentänastoihin. Virrankulutukseen kohdistuvien sivukanavahyökkäysten alalajeja ovat yksinkertainen tehoanalyysi (SPA), differentiaalinen ja korkeamman kertaluvun tehoanalyysi (DPA) ja mallihyökkäykset (template attacks). SPA:ssa ideana on ensin tutkia kohteen käyttäytymisen riippuvuutta avaimesta. Tyypillinen kohde (myös ajoitushyökkäyksessä) ovat if-then-else -haarat, jotka ovat riippuvaisia avainbiteistä. Julkisen avaimen algoritmien toteutuksissa (kuten RSA tai ECC), algoritmi etenee peräkkäin kaikkien avainbittien läpi. Kun jos-haara vie enemmän tai vähemmän laskenta-aikaa kuin else-haara, tämä voidaan havaita järjestelmän ja laskentasirun ulkopuolelta. SPA-hyökkäykset eivät rajoitu julkisen avaimen algoritmeihin, vaan niitä on myös sovellettu salaisen avaimen algoritmeihin tai alkulukujen luomiseen käytettäviin algoritmeihin. Joten kun tiedetään laitteen sisäinen toiminta, SPAn tarvitsee vain kerätä yksi tai muutama jälki analyysia varten.

DPA-hyökkääjä kerää useita jälkiä. Määrä vaihtelee suojaamattoman laitetoteutuksen muutamasta kymmenestä aina miljooniin, kun toteutus on suojattu. DPA ei etene suoraan kohti avainta vaan hyökkääjä rakentaa tilastollisen mallin sitä, miten sama toiminto tuntemattomalla mutta kiinteällä avaimella suoritettuna eri datalle johtaa erilaisiin virrankulutusprofiileihin. Kerättyjen jälkien tilastollinen käsittely perustuu korrelaatioanalyysiin ja muihin tilastollisiin testeihin, joilla verrataan mitattuja arvoja eri avainten mukaan muodostettuihin malleihin (esim. tietyn avaintavun kaikilla 256 vaihtoehdolla). Oikeaa avainta kohti päästään sillä, että jonkin avaimen mukainen malli vastaa parhaiten havaintoja (tilastollisesti). Sen perusteella jatketaan tutkimalla avaimen seuraavien bittien (esim. tavun) vaikutusta. Vertailuaineistoa ja analyyseja tarvitaan paljon, mutta silti ollaan aivan eri kertaluokassa kuin raa’an voiman hyökkäys.

Sähkömagneettiseen säteilyyn perustuvat sivukanavahyökkäykset on tunnistettu jo varhain sotilaallisen viestintä- ja radiolaitteiden yhteydessä. Nato ja monien maiden hallitukset ovat julkaisseet TEMPEST-määritykset laitteiden suojaamiseksi sähkömagneettiselta vuodolta, mutta myös sitä vastaan, että tietoa vuotaisi tärinän tai äänen kautta. Sähkömagneettista säteilyä voidaan havainnoida paitsi kaukaa myös hyvin läheltä: Integroidun piirin päällä oleva tarkka anturi yhdessä 2D-askeltimen kanssa voi paljastaa erittäin paikallista tietoa piiriltä. (ks. hieman lisää TEMPESTistä myöhemmästä luvusta)

Ajoitushyökkäykset ovat toinen sivukanavahyökkäysten alaluokka. Kun arkaluontoisia tietoja käsiteltäessä suoritusaika salauslaskennassa tai ohjelmiston käsittelyarvoissa muuttuu/vaihtelee, hyökkääjä voi poimia tämän aikaeron. Ajoitushyökkäykseen voi riittää jo if-haaran avaimesta riippuva eri suoritusaika verrattuna else-haaraan. Oma alalajinsa ovat välimuistihyökkäykset. Ne perustuvat aikaeroon, joka syntyy kun data löytyy tai ei löydy välimuistista.

Mallihyökkäyksessä hyökkääjä hankkii kohdelaitteen kopion ja muodostaa sen signaalikäyttäytymisestä tilastollisen mallin, joka sisältää joukon syötteitä ja salaisia data-arvoja. Vertaamalla sitten yhden tai muutaman kohdelaitteen suorituksesta mitattua käyttäytymistä malliin voidaan päätellä salaisia tietoja. Oleellinen ero DPA:han nähden on siinä, että hyökkääjä tarvitsee varsinaisessa hyökkäysvaiheessa vain hyvin vähän mittauksia. Mallihyökkäys toimii siis, vaikka alkuperäinen laite estäisi toistuvat suoritukset esimerkiksi käyttäen laskuria epäonnistuneiden yritysten rajaamiseksi. Mallinnettavat signaalit voivat perustua ajoitukseen, tehoon tai sähkömagneettisen säteilyyn. Koneoppimisen ja tekoälytekniikoiden kehittyessä myös profiloivat sivukanavahyökkäykset, mukaan lukien mallihyökkäykset, ovat tehostuneet ja tulleet hyökkääjän kannalta entistä käyttökelpoisemmiksi.

Mikroarkkitehtuuriset sivukanavat: Prosessorin mikroarkkitehtuurit ovat erittäin herkkiä ajoitushyökkäyksille. Tietovuotojen ongelma ja ohjelmien toisistaan eristämisen vaikeus tunnistettiin jo varhain. Myöhemmin vaihtelu välimuistihaun onnistumisessa tuli tärkeäksi ajoitushyökkäysten luokaksi. Viime aikoina paljon huomiota ovat saaneet mikroarkkitehtuuriset sivukanavahyökkäykset, kuten Spectre, Meltdown, Foreshadow. Nekin perustuvat ajoituserojen havaitsemiseen, mutta niiden vahvuus ja tehokkuus muodostuvat siitä, että ne voidaan toteuttaa etänä ohjelmistollisesti. Nykyaikaiset prosessorit sisältävät välimuistien lisäksi useita suorituskykyä parantavia optimointitekniikoita, kuten spekulatiivisen suorituksen, epäjärjestyksessä suorituksen, ja haaran ennustamisen. Vaikka virtualisointi ja muut ohjelmistotekniikat eristävät eri osapuolten tiedot arkkitehtuurin tasolla, haavoittuvuuksia voi syntyä mikroarkkitehtuurin tasolla. Tällöin prosessori mainittujen optimointitekniikoiden mukaisesti viittaa ns. transienttikäskyillä muistipaikkaan, jota ei ole tarkoitettu kyseiselle prosessille (arkkitehtuurissa). Vaikka tällaista käskyä ei koskaan suoriteta loppuun asti, se voi silti vaikuttaa mikroarkkitehtuuriseen tilaan, esim. välimuistiin. Tämä puolestaan voi muodostaa sivukanavan, joka ilmenee esimerkiksi pääsyaikojen vaihteluna.

Vikahyökkäykset: Häiritsemällä laitteen kelloa, virransaantia tai lämpötilaa (ylös tai alas) voidaan aiheuttaa vikoja laskentaan tai ohjelman kontrollivuohon. Päätelmiä voidaan tehdä laskennan virheellisestä tuloksesta, mutta arkaluonteisia tietoja voi vuotaa myös, jos laite jättää tuloksen antamatta tai nollaa itsensä. Tunnettu esimerkki on RSA-toteutuksen häirintä niin, että allekirjoitus menee oikein yhden ja väärin toisen alkuluvun suhteen. Tästä saadaan lasketuksi yksityinen avain. (Taustaksi: alkuluvut ovat julkisen RSA-avaimen yksityiset tekijät ja tehostettu RSA-toteutus toimii alkulukujen suhteen paloittain hyödyntäen kiinalaista jäännöslausetta (CRT)). Vaikka vikahyökkäykset edellyttävät läheisyyttä laitteeseen, ne eivät tunkeudu laitteeseen.

Muistin tihentymisen myötä hyökkäyspintoja tulee lisää. RowHammer-hyökkäys “vasaroi” muistia lukemalla toistuvasti tiettyjä DRAM-muistipaikkoja ja voi aiheuttaa bittien kääntymisiä kohdetta fyysisesti lähellä olevilla alueilla. (ks. tarkemmin käyttöjärjestelmissä.)

Mikropiiristä on mahdollista saada vielä tarkempaa tietoa, jos sen kuoren avaa tai syövyttää piikerrosta. Hyökkäyksiin voi käyttää optiikkaa tai laserointia, mutta myös menettelyjä, jotka on suunniteltu sirun luotettavuuden tutkimiseen ja vika-analyysiin. Tällaisia menetelmiä ovat mm. kohdistettu ionisuihku ja pyyhkäisyelektronimikroskooppi.

Vastatoimet (syventävä)

Mikään yksi yleinen menettely ei suojaa kaikilta sivukanavilta. Vastatoimia voidaan tarkastella abstraktiotason mukaan, ja ne riippuvat uhkamallista sekä muista oletuksista.

Ajoitushyökkäyksiä torjuu parhaiten vakioaikaisuus, eli laitteisto, joka suoriutuu työstään samassa ajassa riippumatta salaisista syötteistä ja sisäisestä tilastaan. Aikalaskelmien pitää olla sitä tarkempia ja hienommin säädettäviä mitä tarkempi mittauslaitteisto hyökkääjällä uhkamallin mukaan on. Vakioaikaistaminen koskee prosessoriarkkitehtuurin tasolla käskyjä, RTL-tasolla kellojaksoja sekä logiikka- ja piiritasolla logiikan syvyyttä ja kriittistä polkua. Käskyille vakioaika voidaan saavuttaa tasapainottamalla suorituspolkuja ja lisäämällä tyhjiä (dummy) käskyjä. Resurssien jakaminen, esimerkiksi välimuistien kautta, tekee vakioaikaistamisesta erittäin vaikeaa.

RTL-tasolla on varmistettava, että kaikki käskyt toimivat samalla määrällä kellosyklejä. Tähän voidaan käyttää dummy-käskyjä tai näitä hienojakoisemmin valeportteja. Haasteena on, että sekä laitteisto- että ohjelmistokääntäjät pyrkivät poistamaan tällaisia suojausta varten lisättyjä käskyjä tai portteja, jotka näyttäytyvät suorituskyvyn kannalta turhina.

Koska monet sivukanavahyökkäykset perustuvat suureen määrään havaintoja, satunnaistaminen on suosittu vastatoimi. Sillä suojaudutaan sivukanavilta, jotka hyödyntävät virrankulutusta, sähkömagneettista säteilyä tai ajoitusta. Satunnaistamista voidaan soveltaa algoritmien tasolla. Se on erityisen yleistä julkisen avaimen algoritmeissa, joissa avain tai viesti voidaan sokaista satunnaistekijällä ennen operaatiota ja poistaa sokaisu operaation jälkeen (≈ kertoa ja jakaa).

Rekisterinsiirron tai porttitason satunnaistamista kutsutaan peittämiseksi (masking). Siinä laskelmien väliarvoja satunnaistetaan siten, että esimerkiksi laitteen virrankulutusta ei voida enää suoraan yhdistää toteutuksen sisäisiin salaisuuksiin. Porttitasolta on julkaistu runsaasti tuloksia aina yksinkertaisesta Boolen maskauksesta kynnystoteutuksiin, jotka ovat todistettavasti turvallisia tietyissä vuotomalleissa. Satunnaistaminen on osoittautunut käytännössä tehokkaaksi erityisesti julkisen avaimen algoritmien suojaamisessa. Salaisen avaimen algoritmien suojaaminen peittämällä on haastavampaa: jotkin peittojärjestelmät vaativat valtavan määrän satunnaislukuja, toiset taas olettavat vuotomalleja, jotka eivät aina vastaa todellisuutta. Toisin kuin kvanttitietokoneita vastaan kestävä post-quantum cryptography, josta on jo olemassa standardeja ja toteutuksia, leakage-resilient cryptography on yhä suurelta osin tutkimusvaiheessa. Sen tavoitteena on luontainen vastustuskyky sivukanavahyökkäyksiä vastaan, mutta teorian ja käytännön välillä on edelleen merkittäviä haasteita. (Ks. kuitenkin eri luvusta maininta vakioaikakryptosta.)

Häivyttäminen on toinen keskeinen vastatoimien luokka. Ideana on heikentää arka signaali kohinan joukkoon. TEMPEST-suojaus on yksi esimerkki. Häivytystä voidaan tehdä myös portti- ja lohkotasolla pienentämällä peruslogiikan tehonkulutus- tai sähkömagneettista signaalia. Yksinkertaisia keinoja ovat kellosignaalin tarkoituksellinen jitteröinti tai taajuudenvaihtelu sekä suurten ohitus- ja suotokapasitanssien käyttö syöttöjännitteessä. Näillä menetelmillä hyökkääjän havaitseman signaalin ja kohinan välinen ero pienenee.

Joskus jonkin abstraktiotason signaalivuoto voidaan torjua eri tasolla. Jos esimerkiksi halutaan pienentää todennäköisyyttä, että salausavain vuotaa sulautetusta järjestelmästä, salausprotokollassa voidaan vaihtaa avainta riittävän usein.

Yleiskäyttöisiä prosessoreita, kuten suorittimia, GPU:ita ja mikro-ohjaimia, ei voida muokata valmistuksen jälkeen. Mikroarkkitehtuurisia hyökkäyksiä vastaan suojautuminen ohjelmistokorjausten ja -päivitysten avulla on äärimmäisen vaikeaa, ja kustannusten rajaaminen johtaa usein suorituskyvyn heikkenemiseen. Mikrokoodin päivityskin muuttaa tosiasiallisesti vain ohjelmistoa, vaikka muutos voi näyttäytyä käyttäjälle laitteistopäivityksenä. Taustalla on se, että koodin ja mikrokoodin välinen muunnos on laitevalmistajan liikesalaisuus. Ohjelmistopäivitysten tarjoaminen yleisenä ratkaisuna on myös merkittävä turvahaaste, koska etukäteen ei tiedetä, millaisia sovelluksia laitteistolla ajetaan.

Vikahyökkäyksiä vastaan suojaudutaan rekisterinsiirtotasolla ja piiritasolla. RTL-tasolla suojaus perustuu pääosin redundanssiin joko ajassa tai tilassa sekä koodaukseen perustuviin tarkistuksiin. Esimerkiksi pariteettitarkistus on redundanssia tilassa. Redundanssin hinta on korkea, koska laskelmia joudutaan toistamaan. Yksi redundanssin lisäämisen ongelma on, että se kasvattaa sivukanavien hyökkäyspintaa: ylimääräisten laskelmien vuoksi hyökkääjällä on käytettävissään enemmän jälkiä ajan, tehon tai sähkömagneettisen säteilyn sivukanavahyökkäysten toteuttamiseen. RTL-tason yläpuolella, piiritasolla, kellon tai virtalähteen monitorointi voi havaita poikkeamia normaalista toiminnasta ja laukaista hälytyksen.

Integroituihin piireihin lisätään monenlaisia piiritason antureita. Valoanturit voivat havaita, että kotelointi on avattu. Metalliverkkoanturit uloimmissa metallikerroksissa voivat havaita koetushyökkäykset (probing). Lämpötila-anturit havaitsevat piirin lämmityksen ja jäähdytyksen, ja antennianturit voivat havaita laitteen lähellä tapahtuvat sähkömagneettisten kenttien muutokset. Laitteistoon voidaan lisätä myös muita antureita, jotka havaitsevat esimerkiksi virtalähteen tai kellosignaalin manipuloinnin. Antureiden lisääminen aktiivisen manipuloinnin havaitsemiseksi voi kuitenkin itsessään lisätä sivukanavavuotoja.

Toimet sivukanava- ja vikahyökkäyksiä vastaan ovat haastava ja aktiivinen tutkimusalue.

Palautusta lähetetään...