TTKK / Tietoliikenne / J.Koskinen : Tietoturvallisuuden perusteet

5. viikko, ke 29.9.1999

Tietokannat

Tähän asti on tarkasteltu enempi hajallaan olevia kohteita: tiedostoja, ohjelmia, viestejä, transaktioita tai kokonaisia organisaatioita. Tietokanta on ainakin loogisessa katsannossa melko yhtenäinen ja selvärajainen kohde. Siitä pitää huolta hallintajärjestelmä (DBMS), jonka kautta käyttäjä on yhteydessä siihen, olipa itse tieto sitten tallennettu mihin järjestykseen ja miten hajautetusti hyvänsä.

Seuraava esitys soveltuu osittain myös sellaisiin tietojoukkoihin, joita ei yleensä mielletä tietokannoiksi. Tällaisia ovat koneen käyttäjäluettelo, pääsynvalvonnan tiedostot, verkonhallinnan informaatiokanta MIB, nimipalvelimen tiedot, reitittimen tiedot jne.

Tietokannoille ominaisia turvaongelmia

Laitteiston särkymisen, tavanomaisen kaatumisen ja muiden fyysisten seikkojen lisäksi kirjoitus tai sen puuttuminen voi aiheuttaa seuraavanlaisia eheysongelmia: Lukeminen tuottaa ongelman luottamuksellisuuden suhteen lähinnä sellaisissa tietokannoissa, joissa osa tiedoista on julkisia ja osa täytyy suojata sivullisilta. Jos kaikki tieto olisi samaa lajia, voitaisiin koko järjestelmä hallita kyseisen lajin mukaisin keinoin ja ongelmia olisi korkeintaan käyttöjärjestelmän tasolla.

Arkaluonteinen tieto voi tietokannassa ilmetä yksinkertaisimmillaan siten, että jotkin tietueet tai jotkin kentät ovat luottamuksellisia. Arkojen tietojen paljastumista ei aina saisi tapahtua edes osittain. Tiedosta tai sen luonteesta voi kertoa liikaa esimerkiksi

Tässä tullaan osittain jo päättelyprobleeman alueelle: Erityisongelma tietokannoissa ovat nimittäin päättelyt tietoja yhdistelemällä: luottamukselliseen tietoon voidaan päästä käsiksi useiden vähemmän arkojen tietojen perusteella tyypillisellä "salapoliisin työllä". Erityisesti yhteenvetotiedot, kuten lukumäärät ja keskiarvot voi olla luokiteltu vähemmän aroiksi, samoin sellaiset näkymät, joissa luetellaan kaikista tietueista vain jokin kenttä.

Esimerkki: Opiskelijoiden yksityisyyttä voidaan suojella julkaisemalla tenttituloslistoissa ainoastaan opiskelijanumerot ilman nimiä. Karkea virhe olisi tällöin päästää ketään asiatonta käsiksi luetteloon, jossa on sekä nimet että numerot. Toisaalta kursseista voi olla nimet sisältäviä ilmoittautumislistoja tms. Yhdistämällä riittävän paljon eri kurssien tietoja on mahdollista laatia tällainenkin luettelo. Käytännössä tämä vaatisi tietysti paljon enemmän työtä kuin ihmisiltä kyselemällä saada selville kuka mitäkin sai tentistä.

Eri tietokannoista tehtävät yhdistelmät ovat vain hieman eri asia, mutta paljon hankalampi. Se on jo tullut esille tietosuojan yhteydessä, henkilörekisterien tapauksessa ...

Tietokantojen yleiset turvallisuustavoitteet

Mekanismeja

Tietokantojen turvamekanismien pitää yleensä olla hienojakoisempia kuin käyttöjärjestelmän tarjoamat, sillä nämä eivät ylety tekemään erotteluja tiedostojen sisällä. Tietokannassa taas jokainen tietue voidaan joutua ottamaan huomioon erikseen. Sellaisena ongelma on kuitenkin samantapainen kuin tiedostoissa. Miten suojeltava kohde sitten rajataankin, eri toimijoiden erityyppiset oikeudet siihen pitää määritellä ja panna toimeen pääsynvalvonnan tekniikoilla.

Eheysmekanismeja
Luottamuksellisuuden tavoittelua
Tavanomaisten pääsynvalvonnan ja sitä edeltävien autentikoinnin mekanismien lisäksi voidaan soveltaa seuraavanlaisia "päättelyn kontrollin" menetelmiä: Jos jokin tietue halutaan pitää salaisena, mutta toisaalta siinä on tietoja, joiden pitäisi olla julkisia (esim. epäluulojen välttämiseksi), voidaan tehdä kaksi tietuetta, joista toinen sisältää kaikki tiedot ja toinen vain sen mikä voidaan näyttää julkisesti. Tempun tekninen nimi on "polyinstantiation". Tällainen toisteisuus voi olla myös haitallista ja sellaiseen voidaan joutua kun alemmin oikeuksin varustetut toimija lisää jonkin tiedon joka kuitenkin on jo kannassa mutta ylemmässä turvaluokassa ja siksi häneltä näkymättömissä. Tämä on yksi esimerkki monitasoisen tietokannan ongelmista.

Monitasoinen tietokanta

Turvaluokitukseltaan monitasoista tietoa sisältävässä tietokannassa voidaan soveltaa edellä kuvattujen menettelyjen sijasta tai lisäksi esim. seuraavia. Näistä kaksi ensimmäistä edustavat aiemmin mainittuja fyysistä ja kryptograafista erottelumekanismia ja lopuilla pyritään loogiseen erotteluun ja siihen että käyttäjän kannalta tietokantaan säilyisi yhtenäinen näkymä - ikäänkuin häneltä kiellettyjä tietoja ei olisikaan.

Fyysinen turvallisuus

Ensimmäisillä luennoilla mainittiin jo fysikaalisia tietoturvauhkia tulesta ja vedestä alkaen. Fyysinen turvallisuus tarkoittaa suojautumista muunkinlaisilta uhkilta käyttäen kuitenkin fysikaalisia keinoja, jotka ulottuvat prosessorista rakennuksiin.

Harjoitus: Keksitään ja kirjataan fysikaalisia keinoja, joilla tietokonelaitteistoja ja niissä olevia tietoja voidaan suojata erilaisilta uhkilta.

Eräänlaiset perusteet kaikelle tietoturvalle voi tarkistaa työajan jälkeen tehtävällä tarkastuskierroksella, jossa katsotaan ovatko (1) työhuoneiden ovet, (2) laatikot ja kaapit sekä (3) työasemat lukossa, (4) levykkeet turvassa ja (5) tärkeät paperit yms. turvassa. Kaikkia näitä seikkoja pitää muistaa soveltaa myös työaikana, erityisesti puhtaan (työ)pöydän politiikkaa.

Muita huomioon otettavia seikkoja ovat laitteiston sijoittelu; fyysinen pääsy tiloihin; kaapelointi katonrajassa valekaton yläpuolella: onko sielläkin palovaroittimet; verkon liityntäpisteiden sijainti; virran saatavuus; huollon ja ylläpidon saatavuus; varmuuskopioiden talletuspaikka.

Varmuuskopiointi on jo tullut monessa yhteydessä esille. Fyysisen turvallisuuden näkökulmasta varmuuskopio pitäisi toimittaa melko kauas koneesta, vähintään eri huoneeseen, mieluummin johonkin toiseen rakennukseen.

Vakavamman vahingon sattuessa ei riitä, että tiedot ovat tallessa. Toiminnan nopea jatkaminen voi vaatia uusia laitteita ja uusia toimitiloja. Laitteiden hankkiminen ei ole yleensä ratkaiseva ongelma mutta sopivat tilat voivat olla. Tällaisia tilanteita varten voidaan varautua rakentamalla varatila ("cold site"), johon laitteisto voidaan asentaa lyhyessä ajassa. Kriittisemmät sovellukset voidaan joutua varmistamaan valmiilla asennuksilla, jossa voidaan ottaa huomioon myös varahenkilökunnan saanti lyhyellä varoitusajalla ("hot site"). Tällainen kannattaa yleensä tehdä useamman tahon yhteistyössä, jolloin kustannukset ovat kohtuulliset.

Turvalliset prosessorit; Tamper-resistance

Yleiset vaatimukset turvalliselle tieto(kone)järjestelmälle: Järjestelmän pitää pystyä erottamaan, ovatko siihen kohdistuvat toimet sallittuja vai eivät. Järjestelmän käyttäjän pitää tietää, onko järjestelmä aito vai onko sitä peukaloitu, eli onko jokin ei-sallittu toimenpide päässyt vaikuttamaan järjestelmään Peukalointia voi olla myös poikkeuksellisen lämpötilan, säteilyn tai syöttövirran käyttö.

Peukaloinnin ('tampering') ehkäisyyn on useita lähestymistapoja:

Näitä voi verrata esim. laitteisiin, joita kiinnitetään omaisuuteen tai myytäviin tuotteisiin varkauksien estämiseksi.

FIPS-standardi 140-1 määrittelee turvallisille prosessoreille neljä tasoa. Korkeimmalle turvatasolle hyväksyttyjä laitteita on erittäin harvassa.

Turvaprosessorissa joudutaan ottamaan huomioon itse laitteen lisäksi koodi ja sen lataaminen. Huomioitavia seikkoja ovat

Lähde: S.W.Smith, S.Weingart: Building a high-performance, programmable secure coprocessor. Computer Networks Vol31 No8, 1999, 831-860.

Muuan turvallisuutta edistävä mekanismi on "trusted (communication) path"(-näppäin), jollainen esim. IBM:n AIX-unixissa on "secure attention key" (SAK). Tämän painalluksen jälkeen vain luotetut ohjelmat pääsevät käyttäjän päätteelle. Erityisesti tällä torjutaan (teurastetaan) Troijan hevosen tyyppiset ohjelmat jollaisen, joku on voinut asentaa päätteeseen login-ohjelman tilalle (tai eteen) varastaakseen salasanan. Tietenkin verkon ylitse tapahtuvassa sisäänkirjautumisessa tällainen näppäinkoodi menettää merkityksensä, sillä se voidaan väärentää.

Toimikorttien turvallisuus

Toimikortille voidaan tallettaa henkilökohtaisia tietoja, esim. biometrisiä tietoja (siis "elomittoja"), terveystietoja, autentikointiin käytettäviä avaimia (myös esim. GSM:n SIM-kortissa eli Subscriber Identity-Modulissa), ja toisaalta enemmän tai vähemmän anonyymia rahaa. Kortit voivat suorittaa julkisen avaimen krypto-operaatioita paljastamatta salaista avaintaan, mutta esim. RSA-alkulukujen generointi kestäisi liian kauan. Samoin sarjamuotoinen tiedonsiirto on turhan hidas, jotta symmetrisiä salausta kannattaisi soveltaa laajoihin aineistoihin. Useimmat ladattavat bittirahat perustuvat symmetriseen salaukseen, mikä edellyttää luottamusta siihen, että (rahastavassa) lukulaitteessa olevan vastaava avain pysyy turvassa.

Toimikortin tekniikka perustuu ISO:n standardiin 7816. Sitä selostetaan mm. SCIAn, eli Smart Card Industry Associationin sivuilla. USA:ssa vastaavan standardin nimi on PCMCIA (Personal Computer Media Control Interface Adapter). Suomalaisen Avant-kortin takaa löytyy myös valmisteilla oleva eurooppalainen standardi prEN 1546 (prelimanary Euronorm: Inter-sector Electronic Purse). Standardeista huolimatta eri valmistajien kortit eivät varsinkaan toiminnoiltaan ole yhteensopivia.

Toimikortti muodostuu kun tietyn kokoiselle (ja lujuiselle jne) muovikortille tiettyyn kohtaan liimataan piisiru ja varustetaan tietyillä liityntänastoilla. Sirun täytyy olla varsin pieni, muutaman millin kokoinen, jotta se voisi kestää kortin taipuessa.

Sirun tyypillinen sisältö on

Sirun laitteistomäärityksistä, joihin tyypillisesti kuuluu myös käyttöjärjestelmä (laitelmisto), käytetään englannissa termiä 'mask'.

Sirun liityntänä on 8 nastaa:

VCC GND
RST RFU
CLK I/O
RFU VPP
Näistä 5 tai 6 on nykyään käytössä: VCC: käyttöjännite n. 5V; GND: maadoitus; RST: reset, tällä signaalilla kortinlukija alustaa ja lopettaa yhteytensä korttiin; RFU = reserved for future use; CLK: kello, n. 3.6 tai 4.9 MHz; VPP: ohjelmointijännite E(E)PROM-muistiin kirjoittamiseksi 12.5-21 V, ei yleisesti käytössä EEPROM-muisteilla (koska tarvittava jännite voidaan nykyään "pumpata" sirun sisällä); I/O: sarjamuotoinen luku ja kirjoitus RS232:n tapaan, yleensä tavupohjaisesti.

Kortin elinkaaressa on useita vaiheita, joissa asteittain yhä enemmän kortilla olevaa tietoa jää vaiheen suorittajan ulottumattomiin, joko kokonaan tai kortin oman prosessorin myötävaikutuksen taakse. Tällä saavutetaan yksi kortin turvallisuuden keskeisistä ideoista eli se, että ulkopuolelta voi ainoastaan estää toimintaa, ei väärentää sitä. Lisäksi valmistusvaiheiden aikana toteutetaan useita varotoimia, jotta mikään yksi taho ei saisi täyttä tietoa sirun rakenteesta, salaisista avaimista eikä henkilökohtaisista tiedoista. Velvollisuuksien eriyttäminen "need-to-know"-periaatteella on näissä vaiheissa tyypillistä, samoinkuin yhtä useamman henkilön edellyttäminen tiettyjen avainten käsittelyyn. Elinkaaren vaiheet ovat karkeasti seuraavanlaiset:

  1. Prosessorisirun valmistus: testauksen jälkeen tähän tarkoitukseen käytetyt liitynnät eliminoidaan polttamalla "sulakkeet", sirun ROM:iin tähän mennessä talletettu ohjelmisto on salattu sirukohtaisella avaimella, jotta tuntematon taho ei voi tehdä muutoksia. Valmistenumerot lisätään.
  2. Kortin toimittaja istuttaa sirun kortille ja liittää siihen ulospäin näkyvät kytkentänastat. Valmistusvaiheen avain korvataan toisella ja sen muuttaminen ehkäistään lukkobitillä. Fyysisen muistiviittauksen käskyt ehkäistään polttamalla sulake, minkä jälkeen vain looginen muistiviittaus on mahdollista (ja lukkobittikin siis tehoaa).
  3. Henkilöinti, jonka tekee kortin myöntävä taho: Loput tiedot kirjoitetaan kortille, erityisesti PIN, PUK ja salaiset avaimet. Lopuksi käyttölukkobitti asetetaan osoittamaan, että käyttövaihe on alkanut.
  4. Käyttö, jossa pääsy tietoihin rajoittuu sovelluksen politiikan mukaiseksi.
  5. Käytöstä poistaminen, joko niin että lukuoikeus säilyy, tai ettei sekään ole mahdollista.
Tiedostojärjestelmä muistuttaa unixia hakemistoineen. Tiedostoon pääsy voi olla: aina sallittua, vain omistajalle mahdollisesti eri tarkoitusten mukaan (vrt. PIN1 ja PIN2 HST-kortissa), hallinnollinen, ei koskaan.

PIN-hallinto: PIN (Personal Identification Number) on talletettuna tiettyyn tiedostoon ja sitä voi muuttaa samaan tapaan kuin salasanaa. Liian monta peräkkäistä väärä PIN-syöttöä lukitsee tiedoston. Pääsy edellyttää tämän jälkeen sekä oikean PIN-arvon että PUK-arvon (PIN Unblocking Key) syöttämistä, mutta myös PUK voi mennä lukkoon, jolloin kortti ainakin tämän PIN-arvon takana olevalta osalta siirtyy pois käytöstä. Tällainen on toiminta kortin kannalta. On eri asia, onko kortin omistajan hallussa oleva PUK-koodi "kokonainen" vai onko se jaettu kortin myöntäjän kanssa, jolloin tarvitaan yhteistoimia lukon avaamiseen.

Hyökkäyksiä (valmista) korttia vastaan:

Lisätietoa toimikorteista ja turvallisuudesta saa sujuvasti artikkelista S. Petri: An Introduction to Smartcards. Toinen toimikorttien turvallisuutta käsittelevä artikkeli on S.C. Chan: An Overview of Smart Card Security. Hyökkäyksiä ja niiden torjuntaa on esitelty edellisiä tieteellisemmässä artikkelissa Andersson, Kuhn: Tamper Resistance - a Cautionary Note. Hyvin yksityiskohtaista mutta tiivistä tietoa löytyy liki 200-kiloisen raportin "Security of Electronic Money" jatkeena olevasta liitteestä 5, josta on paikallinen kopio.