- COMP.SEC.100
- 13. Hajautettujen järjestelmien tietoturva
- 13.1 Hajautettujen järjestelmien turvallisuus
Hajautettujen järjestelmien turvallisuus¶
Hajautettu järjestelmä (distributed system) on kokoelma eri paikoissa sijaitsevia laskennan, tallennuksen ja tietoliikenteen resursseja (eli laitteistoja), jotka yhdessä
- tuottavat palveluita, jotka yhdistävät hajallaan olevat datan tuottajat ja kuluttajat,
- tarjoavat luotettavan, saatavilla olevan ja konsistentin pääsyn resursseihin, usein käyttäen replikointiskeemoja resurssihäiriöiden käsittelemiseen
- mahdollistavat vaikutelman, että tarjolla olevat data, laskenta ja palvelut ovat peräisin keskitetyistä ja koordinoiduista resursseista.
Esimerkkejä ovat pilvipalvelut, vertaisverkot ja lohkoketjut.
Mahdollisia ominaisuuksia resurssien käyttäjän kannalta voivat olla
- pieni fyysinen etäisyys resurssiin;
- matala viive;
- suuri kaistanleveys;
- korkea suorituskyky;
- keskeytymättömyys;
- tahattomien ja tahallisten häiriöiden sieto;
- hyödyntäminen ei edellytä teknisten mekanismien tuntemista.
Tärkeitä termejä:
- Ristiriidattomuus eli johdonmukaisuus eli konsistenssi: samaksi tarkoitettu tieto on samanlaista eri paikoissa.
- Yksimielisyys eli yhteisymmärrys eli konsensus: järjestelmän osilla on sama käsitys järjestelmän tilasta.
- Topologia, “paikkaoppi”, verkon muotorakenne eli solmujen (laitteiden) sijainti toisiinsa nähden siinä mielessä, joka ei riipu fyysisistä etäisyyksistä.
- Päällysverkko, overlay network, on pohjaverkon (underlay), kuten internetin päälle muodostettu verkko, jolla on siitä poikkeava topologia.
Hajautettujen järjestelmien yleisiä ominaisuuksia¶
Hajautettujen järjestelmien luokittelu¶
Hajautettujen järjestelmien luonnehtimiseen on erilaisia näkökulmia. Näitä ovat määrittely
- resurssien yhdistämisen tasolla, esimerkkeinä P2P- ja pilvijärjestelmät (peer-to-peer eli vertaisverkot ja cloud)
- väliohjelmistotasolla (middleware), esimerkkeinä julkaisu-tilaus -arkkitehtuuri, hajautetut objektialustat ja verkkopalvelut (publish-subscribe, distributed object platforms ja web services)
- järjestelmän tarjoamien palvelujen osalta, esimerkkeinä tietokannat ja tilikirjat. Jälkimmäinen, ledgers, viittaa lohkoketjujen soveltamiseen.
Hajautetut järjestelmät voidaan jakaa kahteen luokkaan sen mukaan, toimivatko niiden resurssit keskenään vai jonkin koordinoivan tahon ohjaamina:
Vertaisverkot eli P2P-järjestelmät (peer-to-peer) toimivat ilman keskitettyä koordinointia verkon solmujen välisten vuorovaikutusten ohjaamana. Vuorovaikutuksen sääntöjä kutsutaan protokollaksi. Esimerkiksi järjestelmät, kuten Kademlia, Napster, Gnutella, BitTorrent ja monet muut hajautetut tiedostojen ja musiikin jakamis- ja tallennusjärjestelmät, langattomat sensoriverkot sekä online-pelijärjestelmät kuuluvat tähän luokkaan.
Koordinointi hajautettujen resurssien ja palvelujen kesken: Tämä on laaja luokka, jonka kirjo sisältää
- asiakas-palvelin -mallit
- monitasoiset palvelumallit (eli asiakas-palvelin1-palvelin2-…; multitier multitenancy -mallit)
- joustavat on-demand-tyyppiset eri paikoissa hajallaan sijaitsevien resurssien koosteet (erityyppiset pilvet, Big Data -palvelut, suurteholaskenta)
- tapahtumapalvelut, kuten tietokannat, tilikirjat, tallennusjärjestelmät tai KVS-säilö (Key-Value Store).
Vaikka koordinaation tyyppi, eli
- resurssien vai
- palvelujen
koordinointi jakaa järjestelmät kahteen alaluokkaan, kummassakin koordinointi tapahtuu kommunikaation ja palveluiden kautta. Tavoitteena on keskitetyltä vaikuttava järjestelmä, jossa varmistuvat sellaiset ominaisuudet kuin syy-yhteys, tehtävien järjestys, toisteisuuden hallinta ja ristiriidattomuus. Kirjallisuudessa on erillisiä määritelmiä asiakas-palvelin -järjestelmille, pilvipalveluille, mobiililaskennalle, hajautetuille tietokannoille jne., mutta virtuaalisen keskitetyn ja koordinoidun käyttäytymisen tarjoaminen on niille yhteinen piirre.
Sekä vertaisverkkojen että koordinoitujen järjestelmien arkkitehtuuri on yleensä useiden kerrosten yhdistelmä. Alimmalla tasolla tietyn laitteen resursseja (muisti, laskenta, tallennus, viestintä) käytetään kyseisen laitteen käyttöjärjestelmän primitiivien kautta. Hajautetut palvelut, kuten nimeäminen, aikasynkronointi, tiedostojärjestelmät kootaan erilaisten komponenttien ja yksittäisissä laitteissa toimivien palvelujen vuorovaikutuksen kautta. Ylemmät kerrokset perustuvat alemmille kerroksille ja palveluille tarjoten lisätoimintoja ja -sovelluksia. Vuorovaikutuksia hajautetun järjestelmän kullakin kerroksella tarjoavat väliohjelmistot. Käytössä on erilaisia viestintätyylejä: viestien välitys, etäproseduurikutsut (RPC), hajautetut objektialustat, julkaisu-tilaus -arkkitehtuurit ja ESB-väylä (enterprise service bus). Hajauttaminen ja koordinointi kussakin kerroksessa voivat vaihdella, mikä johtaa hybridikoostumuksiin.
Myöhemmät luvut tässä pääluvussa esittelevät
- P2P-järjestelmiä ja niiden turvallisuutta.
- koordinoidusti hajautettuja järjestelmiä ja niiden turvallisuutta.
Tämä pääluku keskittyy turvallisuuden tuottamiseen hajautetussa järjestelmässä. Toinen näkökulma on hajautuksen käyttö turvallisuuden tuottamiseen. Siitä ovat esimerkkejä avainten hajautettu tallennus keskitetyn avainsäilön sijasta tai virtuaalikoneiden käyttö resurssien ja sovellusten osiointiin ja eristämiseen. Tämäkin näkökulma tulee esille, koska hajautettujen järjestelmien turvamekanismit toimivat luontevasti nimenomaan, kun resurssit on hajautettu, ja tämä johtaa mahdollisuuteen hyödyntää hajautusta turvamekanismina (lohkoketjut päällimmäisenä esimerkkinä). Asiaan liittyy myös tämän luvun opiskelua motivoiva seikka: hajautettujen järjestelmien turvamekanismit ovat jossain määrin erilaisia kuin perinteisissä tietojärjestelmissä.
Arkipäiväistä P2P:tä
Reaalimaailman vertauskuvia miettiessä tavanomaista asiakas-palvelin -mallia on helppo verrata B2C-kaupankäyntiin (Business-to-Client): esimerkiksi Ylen artikkeli ladataan Ylen palvelimelta vähän samalla tavalla kuin kylän asukkaat hakevat leivän lähikaupasta. Vertaisverkot, ainakin tiedostonjakoon tarkoitetut, taas muistuttavat enemmänkin jonkinnäköistä vaihtotaloutta, jossa asiakkaat tarjoavat samalla toisille asiakkaille osan palvelusta. Vaikka tiedoston lataaminen olisi vielä kesken, joku muu asiakas saattaa ladata sinulta tiedoston osia, jotka olet itse jo saanut. Tekstissä luetellaankin vertaisverkkojen hyötyjä, mm. saatavuuden turvaaminen ja sensuurin kierto.
Yksi yleisimmistä arkielämässä vastaantulevista vertaisverkoista lienevät jotkin verkkopelit. Näissä P2P-verkkoja käytetään usein siksi, että tämä on pelistudiolle halvempaa, kuin moninpelipalvelimien ylläpito (pienellä studiolla ei välttämättä ole alkuunkaan varaa niihin). Samalla studio kuitenkin luovuttaa kontrollia käyttäjille, mikä tekee esimerkiksi huijaamisesta helpompaa. Jotkin peligenret taas asettavat teknisiä vaatimuksia latenssille hyvän pelikokemuksen takaamiseksi, jolloin palvelimen välistä jättäminen on luontevaa. Toisaalta pelaajien yksityisyys on vertaisverkoilla heikompaa, sillä toisin kuin palvelimilla, vertaisverkolla toteutettu nettipeli vaatii pelaajien IP-osoitteiden paljastamista toisille pelaajille. Palvelimien käyttö ei tosin myöskään takaa turvallisuutta. Dark Souls III -pelissä pelaajien yhdistäminen tapahtuu keskitettyjen palvelimien avulla, kun varsinainen yhteys taas toimi P2P:llä. Pelistä löytynyt Remote Code Execution -haavoittuvuus ei suinkaan ollut P2P-yhteyden mahdollistama, vaan palvelimella tapahtuvan puskuriylivuodon.
Toinen yleinen käyttötarkoitus on edellä jo mainittu tiedostonjako. Vaikka kaikki P2P-tiedostonjako ei suinkaan ole laitonta, kierretään tekniikalla usein tekijänoikeuksia. Keskitytään tässä nimenomaan laittomaan lataukseen. Koska tiedostot tulevat muilta käyttäjiltä, niiden lataamisessa on omat riskinsä. Video- tai äänitiedostoja ladatessa haittaohjelman riski on pieni (hyökkäyksen onnistuminen vaatisi haavoittuvan mediatoistosovelluksen), pelejä tai vaikkapa toimistosovelluksia ladatessa riski on huomattavasti korkeampi, sillä niihin voidaan suoraan ujuttaa haitallista koodia. Riski on siis siinä, että lataaja joutuu perusteetta luottamaan siihen, ettei tiedostoa ole vihamielisesti peukaloitu. Monesti luotto on maineeseen perustuvaa, ja vertautuu siltä osin pimeässä verkossa tapahtuvaan huumekauppaan.
Laillisessa tiedostonjaossa jotkut ohjelmistokehittäjät julkaisevat tiedoston kryptografisen tiivisteen (usein SHA-256) nettisivuillaan. Näin käyttäjän on mahdollista ladata tiedosto tuntemattomilta (vertais)osapuolilta, ja silti tulla vakuuttuneeksi tiedoston aitoudesta laskemalla ladatun tiedoston tiiviste, ja vertaamalla sitä nettisivulla julkaistuun. Windowsilla tiivisteen laskeminen onnistuu Powershellilla. Linuxissa komento on “sha256sum”.
Hyökkäyspinnan jäsentely¶
Abstraktilla tasolla hajautettu järjestelmä sisältää yleensä neljä perusmekanismia. Hyökkäyspinta voidaan jäsentää näiden mukaan.
pääsynvalvonnan sallima tiedon virtaus järjestelmään syötettyjen tietoalkioiden välillä. Tämä koskee tietojen sisältöä ja sitä miten yhdet tiedot muuttavat toisia — esim. lohkoketjuissa tai striimattavan sisällön palojen ketjussa — kun taas seuraava mekanismi ei katso tietojen “sisälle”.
Pääsynvalvonta voi hajautetussa järjestelmässä olla tarpeen jaotella kahteen osaan termeillä access control ja admission control. Edellinen vastaa sitä mitä muussakin kyberturvallisuudessa. Jälkimmäinen on sille etenkin P2P-tapauksessa mahdollinen esivaihe, joka sisältää käyttäjän tai resurssin hyväksymisen jäseneksi, sisäänpääsyn. Tämä vastaa jossain määrin sitä valtuutusta, jolla tietojärjestelmään hyväksytään käyttäjiä, mutta voi sisältää ansaittuun tai menetettyyn maineeseen perustuvaa säätöä, mikä puolestaan vastaisi sitä, että RBAC-järjestelmä säätäisi roolia. Kukin hajautetun järjestelmän olio, siis resurssi, palvelu, käyttäjä tai tietoalkio, tunnistetaan fyysisellä tai loogisella identiteetillä, joka on asetettu staattisesti tai asettuu dynaamisesti. Tunnisteiden hallinnointi on tärkeää peukaloinnin ja monen muun ongelman varalta. Pääsynvalvontaa käsitellään tarkemmin eri pääluvussa.
tiedonsiirto hajautetuille resursseille ja niiden välillä;
Tähän kuuluu reititystä, viestien välittämistä, resurssien vuorovaikutusta julkaisu-tilaus -käytännöissä, vastauksen liipaisua tapahtumapohjaisesti, sekä uhkia väliohjelmistopinossa (middleware). Tyypillinen esimerkki on välimieshyökkäys (man-in-the-middle). Yleisiä tiedonsiirron uhkia käsittelee eri pääluku.
resurssien koordinointiskeema, joka päättää mm. minne tiedonsiirtoa pitää tehdä, jotta hajautus olisi tarkoituksenmukaista;
Tähän kuuluu mm. synkronointi, replikointi, näkymämuutokset, aika/tapahtumajärjestys, linearisoitavuus, konsensus ja transaktioihin sitoutuminen.
tiedonhallinta, joka tukee haluttuja sovelluksia, kuten verkkopalveluja, tapahtumakokonaisuuksia (eli transaktioita), tietokantoja, tallennusta, tilikirjoja, ohjausta ja laskentaa.
Normaalit “C, I ja A” soveltuvat suoraan hallinnoitavan datan elinkaaren jokaiseen vaiheeseen ja liityntään. Luottamuksellisuudesta kannattaa muistuttaa sivukanavien tai piilokanavien mahdollisuus (jälkimmäinen on kahdenvälinen kanava, edellinen on vuotoa). Saatavuudessa erityisongelmia voivat olla viivästyminen ja tiedon saannin epääminen. Erityinen eheysnäkökohta on osallistujien havaitsema tietojen ristiriidattomuus, jota on usean tasoista.
Luettelosta huomataan, että hajautettujen järjestelmien erityiset uhat liittyvät eniten kohtaan 3 ja jonkin verran kohtaan 4. Koordinointia käsitellään syventävästi tuonnempana.