- COMP.SEC.100
- 13. Hajautettujen järjestelmien tietoturva
- 13.5 Hyökkäyksiä koordinoidusti hajautettuihin järjestelmiin (syventävä)
Hyökkäyksiä koordinoidusti hajautettuihin järjestelmiin (syventävä)¶
Koska hajautetut järjestelmät luottavat ensisijaisesti viestien välitykseen sekä tiedonsiirrossa että koordinoinnissa, hyökkäykset voidaan ryhmitellä viestinnän tasolla, täydennyksenä aiempaan hyökkäyspinnan jäsentelyyn:
- Ajoitusperusteiset hyökkäykset: Tämä kattaa viestien poisjättämisen, aikaisen, viivästyneen tai epäjärjestyksessä tapahtuvan viestinnän. Myös kaatumiset ja palvelunesto kuuluvat tähän ryhmään, koska ne ilmenevät tyypillisesti viestien toimituksen häiriöinä estämällä pääsyn viestintäkanaviin tai resursseihin.
- Dataan perustuvat hyökkäykset: Huijaus (spoofaus), matkiminen (mimicking), toisto (replay), tiedon vuotaminen (myös sivukanavitse) ja sisällön manipulointi kuuluvat tähän luokkaan. Viestien sisällön manipulointi ilmenee bysanttilaisena vikaantumisena.
Häiriön — muunkin kuin hyökkäyksen — ominaisuutena on myös kesto, sillä häiriö voi olla ohimenevä, satunnainen, ajoittainen tai pysyvä. Lisäksi hyökkäykset voivat muodostua useista samanaikaisista tapahtumista, joiden takana voi olla usean hyökkääjän välinen yhteistyö. Tällöin tuloksena olevassa häiriössä sekoittuu ajoitus, data, kesto ja hajallaan olevat sijainnit.
Kuten informaatiovaikuttamisestakin tiedetään, myös tietotekniselle hyökkääjälle voi riittää vain horjuttaa oletuksia resurssien toimivuudesta, palveluista ja taustalla olevasta koordinoinnista. Resurssihyökkäys ei muutenkaan yleensä vahingoita resurssia sinänsä, vaan vaikuttaa ensisijaisesti resurssilla suoritettavaan palveluun.
Seuraavassa luetellaan joitain hyökkäysskenaarioita. Kun otetaan huomioon resurssi- ja palvelupohjaisen hajautuksen valtava monimuotoisuus, kyseessä on vain esimerkinomainen katsaus.
Resurssien koordinointi eli infrastruktuurinäkymä (syventävä)¶
Resurssien hajautuksesta nostetaan tässä esille vain kaksi tärkeää esimerkkiä, pilvipalvelut ja asiakas-palvelin -mallit. Hyökkäyksiin siirrytään yleisen esittelyn jälkeen.
Pilvimalli¶
Pilvipalveluista (cloud computing / services) voidaan tässä yhteydessä jättää vähemmällä huomiolle eniten ulkoistettu malli SaaS, software as a service, koska se vastaa suoraan asiakas-palvelin -järjestelmää. Sekä IaaS- ja PaaS- malleissa asiakkaalla on hallinnassaan ohjelmistot ja niiden data, PaaS-mallissa ei muuta ja IaaS-mallissa lisäksi käyttöjärjestelmä. IaaS eli Infrastructure-aaS tarjoaa siis laitteiston ja PaaS eli Platform-aaS myös ajonaikaisen ympäristön asiakkaan sovelluksille.
Turvallisuuden näkökulmasta pilvilaskenta voidaan purkaa komponenteiksi, jotka johtavat havaintoihin hyökkäyspinnasta. Vastaavasti kuin jokin palvelinkeskuksen infrastruktuuri, joka on laskenta- ja tallennusresurssien yhdistelmä, pilvi on yhdistelmä maantieteellisesti hajallaan olevia resursseja, jotka ovat käyttäjän saatavilla pyynnöstä. Käyttäjällä on resurssien sijainnin ja koostumuksen suhteen “pilvimäisen sumuinen” pääsy erittäin käytettävien ja luotettavien resurssien ja palvelujen virtualisointiin, joka on hyvin skaalautuva. Käyttäjä määrittää toiminnalliset attribuutit palvelutason tavoitteiksi:
- suorituskyky,
- luotettavuus,
- replikointi- ja eristysominaisuudet virtuaalikoneiden tyyppeinä ja lukumääränä,
- latenssi,
- tietoturvan taso kryptografian ja muiden mekanismin suhteen laskennassa ja tietoliikenteessä,
- kustannusparametrit palvelujen toimittamisesta palvelutasosopimuksina (SLA, service level agreement).
Resurssien tarkka koostumus, sijainti tai koostetta yhdistävät mekanismit ovat käyttäjälle läpinäkyviä (transparent). Hän näkee niiden läpi suoraan datansa (PaaS) tai sen ja käyttöjärjestelmänsä (IaaS). Pilven mekanismeja ovat autentikointi, pääsynvalvonta, resurssien välitys (brokering), virtuaalikoneen käynnistys, vuoronnus, monitorointi, uudelleenkonfigurointi, kuormantasaus, kommunikointirakenteet, käyttöliittymät, tallennus ja monet muut. Kaikki nämä yhdessä fyysisten resurssien ja rajapintojen kanssa muodostavat hyökkäyspinnan.
Asiakas-palvelin -malli¶
Asiakas-palvelin -malli tarkoittaa ohjelmistoarkkitehtuuria, jossa asiakasohjelmat — usein mutta ei välttämättä suoraan käyttäjän ohjelmat — ovat yhteydessä palvelinohjelmaan, joka niiden näkökulmasta vaikuttaa keskitetyltä. Palvelinlaitteisto replikoidaan saatavuuden parantamiseksi, ja palvelinohjelmakin voi olla monoliittisen sijasta kerrostettu tai hierarkkinen, kuten monitasoisissa palvelumalleissa (multitier multitenancy). Kuten edellä mainittiin, SaaS-pilvimalli voidaan tulkita asiakas-palvelin -toteutukseksi.
Hyökkäyksiä ja puolustusta¶
Tässä esitettävät näkökulmat pätevät soveltaen myös muihin resurssikoordinoituihin hajautuksen malleihin, ja enimmät ovat muutenkin varsin yleisiä.
Resurssit. Hyökkäys resursseja kohtaan vaarantaa niiden saatavuuden.
Voidaan käyttää pääsynvalvonnan menetelmiä, myös palomuureja, rajoittamaan ulkoista pääsyä laitteille. Oikeuksien myöntämistä varten luodaan valtuutusprosessit, jotka varmistavat todelliset käyttöoikeudet. Muita lähestymistapoja resurssien suojaamiseen ovat sandboxing (ohjelman suorittaminen tiukkojen “hiekkalaatikon reunojen” sisällä) ja peukaloinninkestävä Trusted Computing Base (TCB), joka suorittaa koordinoinnin ja valvoo resurssien käyttöä.
Resurssien saatavuuden voi vaarantaa myös epäsuoralla hyökkäyksellä, joka osioi resurssit ja niiden päällä olevat palvelut. Tällainen toteutuu myös viestintäkanaviin kohdistuvilla hyökkäyksillä. Palveluiden osalta vaarantuu eheys.
Pääsynvalvonta. Tätä vastaan hyökätään monenlaisilla identiteetin harhautuksilla ja tietysti myös varkauksilla. Vaikutus resurssien suhteen on saatavuus, mutta tietojen/palvelun suhteen myös eheys ja luottamuksellisuus.
Tunkeutumisen havainnointijärjestelmä (IDS) on tyypillinen lievennyskeino. Näitä täydennetään säännöllisillä tai satunnaisilla autentikointikyselyillä. Järjestelmän tunnistamien identiteettien voimassaolo pitää myös tarkistaa määräajoin.
Virtuaalikone (VM). Tyypillinen ongelma on tietojen vuotaminen virtuaalikoneesta sivukanavahyökkäyksen tai vastaavan kautta. Seurauksena on VM:n tarjoamien palveluiden eheyden ja luottamuksellisuuden särkyminen.
VM:n turvallisuudesta on kerrottu käyttöjärjestelmien yhteydessä. Otetaan tässä esiin kolme näkökohtaa: vuodon havaitseminen, järjestelmän taso, jolla vuoto tapahtuu, ja vuodon käsittely. “Tahran kulkeutumisen analyysi” (taint analysis, joka on staattista testausta) on tehokas tekniikka vuodon havaitsemiseen. Koska sivukanavahyökkäykset tapahtuvat usein laitteistotasolla ja prosesseja vaihtavat vuorontajat vaikuttavat niihin, laitteiston suorituskykymittareita käytetään yleisesti havainnointiin. VM:n rämettymisen käsittely alkaa usein tiukentamalla järjestelmätason luottamusmäärittelyjä — siis mitkä prosessit pääsevät minnekin — ja niiden tutkimisella analyyttisten, muodollisten tai kokeellisten stressitekniikoiden avulla. Hypervisoreita käytetään yleisesti VM-toimintojen valvontaan.
Vuorontaja (scheduler). Epänormaali tehtävien tai resurssien allokointi on yksi ilmentymä vuorontajan rämettymisestä. Tällainen poikkeama voidaan havaita pääsynhallinnan avulla. Jos hyökkääjä saa vuorontajan haltuunsa, todennäköiset ristiriidat järjestelmän tilassa tai resurssi sidonnassa tehtäviin voidaan suodattaa koordinoinnilla, jonka tehtävänä on ylläpitää ristiriidattomuutta. Tällaiset hyökkäykset vaikuttavat yleensä saatavuuteen ja eheyteen.
Vuorontajan tehtävä on sikäli erikoinen, että mainitut ongelmat eivät vaikuta luottamuksellisuuteen.
Välittäjä (broker). Pilvitoiminnoilla on broker-toiminto, joka muistuttaa vuorontajaa mutta asettuu ylemmälle tasolle. Rämettyminen vaikuttaa ensisijaisesti resurssien saatavuuteen.
Samankaltaisia puolustusmekanismeja käytetään kuin vuorontajan rämettyessä. Lisäksi voi olla varavälittäjiä. Ilman niitä järjestelmä voidaan joutua myös pysäyttämään.
Kommunikaatio. Koska viestintä on keskeinen osa resurssien koordinointia, rämettyminen vaikuttaa voimakkaasti saatavuuteen. Kyvyttömyys toteuttaa replikointia, resurssien kohdistamista tehtäviin jne. vaarantaa olennaisesti koko järjestelmän toimivuuden.
Useita tietoliikenteellisiä tekniikoita esitellään omassa pääluvussaan. Näitä ovat muun muassa uudelleenyritykset, ACK/NACK-kuittauksiin pohjautuvat menetelmät ja kryptografisesti suojatut kanavat.
Valvonta ja kirjanpito. Virheelliset tiedot järjestelmän tai palveluiden tilasta voivat johtaa luottamuksellisuuden, eheyden ja saatavuuden vaarantumiseen.
Tilan ristiriidattomuutta tukevat menettelyt ovat tulevat tässä käyttöön. Edellä esitellyt replikointi ja koordinointi ovat juuri niitä menetelmiä, joiden tarkoituksena on ylläpitää oikeita tietoja ja välttää häiriöitä.
Palvelujen koordinointi, eli sovellusnäkymä (syventävä)¶
Tässä keskitytään lohkoketjujen idean esittelyyn, mutta tasapainon vuoksi mainitaan aluksi muita järjestelmiä. Yleisesti palvelun koordinointimallin keskeinen ominaisuus on palvelun eheys jonkinasteisena ristiriidattomuuden, toki kohtuullisen saatavuuden tukemana, kun taas edellä käsitellyssä resurssien koordinointimallissa resurssien saatavuus ja niihin pääsy ovat hallitsevia näkökohtia.
Tapahtumapalvelut, tietokannat¶
Tapahtumapalveluja ovat esimerkiksi tiedon louhinta, pankki- ja osaketapahtumat. Tietokannat ja rahaan liittyvät palvelut vaativat ristiriidattomuutta, jonka pankkitoiminnassa ei tarvitse olla kaikilta osin vahvaa. Tiedon louhinnassa ja tiedon noudossa riittävät heikot ristiriidattomuuden muodot. Tiedon nouto voi esimerkiksi toimia fyysisesti erillisten datakeskusten kanssa ja tuottaa vanhentuneita tietoja, mutta se voi riittää, jos palveluvaatimukset ainakin lopulta täytetään.
Tietokantaa yksinkertaisempi ja usein paljon nopeampi tallennusrakenne on KVS, key value store, eräänlainen assosiatiivinen muisti, jossa tietoalkiot (values, joiden ei tarvitse olla määrämuotoisia kuten tietokannan kenttien) tallennetaan avaimen (key) osoittamaan paikkaan. KVS on luontevaa hajauttaa ja palvelun tarpeisiin voi sopia mikä vain ristiriidattomuusmalleista tiukasta lopulliseen.
Lohkoketjut ja kryptovaluutat¶
Transaktioiden ristiriidatonta kirjanpitoa on vaikea saavuttaa hajautetussa järjestelmässä, jossa oliot eivät luota toisiinsa ja voivat myös olla epäluotettavia. Lohkoketjut tarjoavat hajautetun ja julkisen kirjanpidon ilman koordinointia. Tilikirja tallennetaan useina kopioina tietoverkkoon. Joka kerta kun osallistuja lähettää tapahtuman tilikirjaan, muut osallistujat suorittavat tarkistuksia varmistaakseen, että tapahtuma on kelvollinen, ja tällaiset kelvolliset tapahtumat lisätään tilikirjaketjuun lohkoina.
Yhtään tietuetta jossain lohkossa ei voi muuttaa takautuvasti muuttamatta myös kaikkia sitä seuranneita lohkoja. Tällaiset muutokset edellyttävät verkon yksimielisyyttä, joten hyökkääjä ei voi tehdä niitä yksipuolisesti. Tämän ansiosta osallistujat voivat myös tarkistaa ja verifioida tapahtumat vähällä vaivalla. Lohkoketjut muodostavat perustan lukuisille kryptovaluutoille, joista merkittävin on Bitcoin.
Teknisesti lohkoketju on transaktiotietueita sisältävien lohkojen luettelo. Edellä mainitut ominaisuudet johtuvat siitä, että jokainen lohko sisältää edellisen lohkon kryptografisen tiivisteen ja aikaleiman. Jos ketjun lohkoa muutetaan muuttamatta myös kaikkia myöhempiä lohkoja, seuraavan tiiviste ei enää täsmää, jolloin lohkoketjun peukalointi on havaittavissa.
Kun lohkoketjua käytetään hajautettuna tilikirjana, se tapahtuu tyypillisesti vertaisverkon puitteissa. Tällaisen verkon jäsenet osallistuvat protokollaan, jolla äskettäin lähetetyt lohkot tarkistetaan. Lohkoketjut ovat esimerkki laajalti käytetyistä järjestelmistä, jotka sietävät hyvin bysanttilaisen vikaantumisen.
Yleinen lohkoketju-konsepti sallii minkä tahansa tahon osallistumisen eikä sisällä pääsyrajoituksia. Tämä koskee monien laajalti käytettyjen kryptovaluuttojen, kuten Bitcoinin, taustalla olevia lohkoketjuja. Rajoitettu osallistumisen malli on myös mahdollinen, jolloin lohkoketjua hallinnoiva taho myöntää luvat.
Palvelunestohyökkäysten ja muiden väärinkäytösten estämiseksi osallistumisen edellytykseksi on määritelty vaivannäytön käsite (Proof-of-Work, PoW). Vaiva tarkoittaa laskenta-ajan käyttämistä sinänsä merkityksettömän tehtävän suorittamiseen — bittien brute-force -arvaamiseen oikeanlaisen hash-arvon tuottamiseksi. Tämä on tehokas keino yleisestikin estää jonkin palvelun väärinkäyttö, kuten roskapostitus, koska vaadittu työ on keskimäärin vaikea suorittaa mutta helppo tarkistaa. PoW-järjestelmät johtavat kuitenkin myös korkeaan energiankulutukseen ja voivat vaivannäytön luonteesta riippuen johtaa kohtuuttoman suureen esteeseen osallistua. Näin on esimerkiksi tietyissä kryptovaluutoissa, joissa mielekäs osallistuminen vaatii räätälöityä laitteistoa.
Lohkoketjun kryptografinen murtaminen on nykyisellään liian vaikeaa, mutta se voi osoittautua mahdolliseksi uusille teknologioille, kuten kvanttilaskennalle. Lisäksi vaikka suurissa järjestelmissä yhteistyöhyökkäykset ovat liian kalliita, ne voivat olla mahdollisia järjestelmissä, joissa on vähemmän osallistujia.
Lohkoketjun solmujen on pysyttävä jatkuvassa yhteydessä tietojen vertailua varten. Eclipse-hyökkäyksellä voi olla mahdollista huijata joitain solmuja hukkaamaan laskentatehoa tai vahvistamaan vääriä transaktioita. Konsensusominaisuus voi tällöin vaarantua.