TTKK / Tietoliikenne / J.Koskinen : Tietoturvallisuuden perusteet

7. viikko, ke 13.10.1999

Tällä kerralla tutustutaan ensin tietoturvan arvioinnissa käytetyistä malleista uusimpaan eli Common Criteria-dokumenttiin. Tämä muodostaa samalla jonkinlaisen kertauksen kurssin aiheista. Sitten katsotaan lyhyesti, millaisia tietolähteitä tietoturvan kanssa tekemisissä oleva tarvitsee työssään. Pohditaan yhdessä, mitä kenenkin pitäisi tietää tietoturvasta, ja erityisesti, miten tietoturva-asioita pitäisi tai kannattaisi tuoda esiin tietotekniikan koulutusohjelmassa - millaista olisi tietoturvan didaktiikka. Lopuksi suoritetaan evaluointia eli katsotaan, miten tämä kurssi vastasi tavoitteitaan. Tenttikin tulee siinä vaiheessa esille.

Tietoturvan arviointi

Aiemmin olivat jo esillä tietoturvan mallintamisen yhteydessä kriteerimallit. Ne ovat sellaisia ohjeistoja tai standardeja, joiden mukaan voidaan arvioida tuotteiden tai järjestelmien tietoturvallisuutta ja esittää tulos jotenkin tiiviissä ja tekniikkaa vähemmän tuntevien ymmärtämässä muodossa, joka kuitenkin riittää vakuuttamaan heidät siitä, että jokin tietoturvapolitiikka toteutuu.

Arviointi voi koskea myös yksityiskohtaisempaa luottamusta. PolicyMaker, KeyNote ja myös REFEREE ovat automatisoituja luottamuksenhallinnan työkaluja, joilla voi tutkia, onko jokin toiminta asetetun turvapolitiikan mukaista. Syötteenä on tyypillisesti julkisia avaimia ja niiden varmenteita, ja työkalun tehtävänä on vastata sellaisiin kysymyksiin kuin: "Saako varmenteen V haltija suorittaa toimen T resurssille R?". Tähän aiheeseen ei mennä nyt syvemmälle, vaan katsotaan vain yleisiä arviointiperusteita:

Hieman taustaa Common Criterialle

Common Criteria on erittäin laajan työn tulos. Joitakin kehitysvaiheita:

TCSEC eli oranssi kirja (USA, 1985, alkujuuret jo 60-luvun lopulla) ==>
Saksan "Vihreä kirja", (1988), Ison-Britannian useat julkaisut, Ranskan, Australian ja Kanadan omat luonnokset ==>
eurooppalaisten yhdistelmä ITSEC (1991) ==>
Common Criteria (1996).

TCSEC:n seitsemän luokkaa mainittiin jo aiemmin. Kukin niistä yhdisti joitakin toiminnallisia vaatimuksia tietyn tasoiseen vakuuttavuuteen (siis esim. testauksiin ja verifiointeihin). ITSEC erosi TCSEC:stä oleellisesti siinä, että nämä kaksi näkökulmaa erotettiin toisistaan. Tämä oli perua jo Saksan vihreästä kirjasta, jossa oli 10 toiminnallista luokkaa ja 8 laatuluokkaa (vakuuttavuuden tasoa) eli periaatteessa 80 erilaista luokitusta. ITSEC säilytti vihreän kirjan toiminnalliset luokat, mutta yhdisti niihin brittiläisten kriteerien joustavan metakielen (claims language), jolla valmistaja saattoi esittää väitteitä tuotteen toiminnallisuudesta. ITSECin uudistuksia oli myös mahdollisuus käyttää kaupallisia arvioijia.

Common Criteria

Aiempien standardien ja luonnosten tuloksena syntynyt maailmaanlaajuiseksi tarkoitettu malli tunnetaan CC:nä, vaikka se oikeastaan on "Common Criteria for Information Technology Security Evaluation" (CCITSE) ja sittemmin ISO-standardina IS 15408 vielä oikeammin "Evaluation Criteria for Information Technology Security".

Turvallisuutta koskevat vaatimukset / tavoitteet muodostavat hierarkkisen rakenteen, jonka osasilla on kuitenkin keskinäisiä riippuvuuksia. Päätason muodostavat yksitoista toiminnallista ('functional') ja seitsemän vakuuttavuusluokkaa ('assurance classes'). Luokkajaon alla on kolme tasoa: ryhmä ('family'), komponentti ja alkio.

Toiminnallinen komponentti on eräänlainen peruspalikka: se määrittelee, mitä kohdejärjestelmän täytyy pystyä tekemään, esimerkiksi haaste-vaste-mekanismit kuuluvat toiminnalliseen komponenttiin, joka kuuluu ryhmään "käyttäjän autentikointi", joka puolestaan on luokassa "tunnistus ja autentikointi". Toiminnallisista komponenteista kootaan erilaisiin tarpeisiin paketteja, mutta arviointikriteeri niistä muodostuu vasta kun pakettiin yhdistetään myös vakuuttavuutta:

Vakuuttavuuskomponentteja käytetään ilmaisemaan vaatimuksia ensinnäkin kohdejärjestelmän kehittäjän (siis esim. ohjelmistotalon) toimille ja niiden järjestykselle - koskien erityisesti suunnittelua, implementointia, testausta, operointia ja ylläpitoa. Toiseksi näillä komponenteilla ilmaistaan vastaavantyyppisiä vaatimuksia arvioijalle, ja kolmanneksi vaatimuksia turvallisuutta koskevan todistusaineiston sisällölle ja esitystavalle. Tämä kolmijako tuodaan esille vakuuttavuuskomponenttien alkioiden tasolla.

Vakuuttavuuskomponenteista on koottu valmiiksi seitsemän pakettia. Ne muodostavat hierarkian, jonka tarkoitus (toisesta tasosta alkaen) on tarjota osittaista vastaavuuttaa aiempiin malleihin nähden, erityisesti oranssin kirjan luokkiin (siis C1, C2, B1, B2, B3 ja A1) verrattuna. Nämä paketit esitellään jäljempänä.

Toiminnallisuuden jaottelu on seuraavanlainen. Luokkiin kuuluvat ryhmät on dokumenteissa mainittu niiden lyhenteiden mukaisessa aakkosjärjestyksessä. Tässä järjestystä on muutettu (ehkä) loogisemmaksi. Kunkin ryhmän jäljessä on mainittu siihen kuuluvien komponenttien määrä ja muutamassa tapauksessa komponentit on lueteltu:

Sen lisäksi mitä turva-auditointi yleisesti vaatii, jokaisen komponentin kohdalla mainitaan, mistä siihen liittyvistä tiedoista täytyy tarpeen vaatiessa voida pitää kirjaa. Tämä vaatimus esitetään kolmella tasolla: minimaalinen, perustaso ja yksityiskohtainen.

Vakuuttavuuden jaottelussa kaikki tietyn ryhmän komponentit muodostavan hierarkkian vaativuutensa suhteen (useat toiminnalliset komponentit ovat rinnakkaisia):

  1. konfiguraation hallinta: automatisointi (2), kyvykkyys (5), laajuus (3).
  2. järjestelmän toimitus ja toiminta: toimitus ja jakelu (3), asennus, generointi ja aloitus (2).
  3. kehitystyö: turvapolitiikan mallintaminen (3), toiminnallinen spesifikaatio (4), korkean tason suunnittelu (5), matalan tason suunnittelu (3), toteutuksen esitys (3), turvamekanismien sisäiset ominaisuudet (3: modulaarisuus ja kerroksellisuus, kompleksisuuden vähentäminen ja sen minimointi), esitysten keskinäinen vastaavuus (3),
  4. ohjemateriaali: ylläpitäjälle (1), käyttäjälle (1).
  5. elinkaaren tuki: kehitysympäristön (fyysinen, henkilöstö-, menetelmä-, …) turvallisuus (2), vikojen korjaaminen (3), elinkaaren määrittely (3), työkalut ja tekniikat (ohjelmointikielistä ja kirjastoista alkaen … ) (3).
  6. testit: kattavuus (3), syvyys eli yksityiskohtaisuus (3), toiminnallinen testaus - miten tehdään ja miten osoitetaan tulokset (2), riippumaton testaus arvioijan toimesta (3).
  7. haavoittuvuuden arviointi: piilokanavien analyysi (3), havaitsematta jäävän väärinkäytön torjunta (3), turvamekanismien vahvuus suoran hyökkäyksen kannalta (1), haavoittuvuusanalyysi (4).
Valituista komponenteista (jotka yhdessä muodostavat ns. paketin, 'package') kootaan suojaprofiili (protection profile) yhdistämällä niihin jokin seuraavista arvioinnin vakuuttavuustasoista (evaluation assurance levels): Nämä tasojen nimet ovat kuvaavia, mutta kuten edellä jo todettiin, vakuuttavuustasot on varsinaisesti määritelty tiettyinä komponenteista koostuvina paketteina. Puolimuodollinen tarkoittaa, että asia on ilmaistu kielellä, jolla on rajattu syntaksi ja määritelty semantiikka. Kokomuodollinen tästä tulee, jos taustalla on vielä eksakti matemaattinen käsitteistö.

Suojaprofiili on toteutuksesta riippumaton joukko vaatimuksia ja sen on tarkoitus olla uusiokäytettävissä, ts. sovellettavissa kokonaiseen kategoriaan tuotteita tai järjestelmiä. Profiileja onkin kehitteillä erityyppisille tuotteille, mm. tietokannoille. Kohdejärjestelmä voidaan arvioida suhteessa johonkin olemassaolevaan suojausprofiiliin (jossa siis on ennalta määrätty komponenttipaketti) tai mihin tahansa komponenttipakettiin, johon on liitetty jokin EAL.

Tiettyä kohdejärjestelmää voidaan arvioida myös pelkästään suhteessa sen omaan turvatavoitteeseen ('security target'). Sellainen vastaa rakenteeltaan turvaprofiilia, ja on tyypillisesti tuotteen valmistajan laatima.

Turvaprofiileja ei toistaiseksi ole paljonkaan, mutta niiden laatijoille löytyy jo "haastatteleva" työkalupakki, joka oleellisesti käy läpi kaikki luokat ja tarpeen vaatimat alaluokat, ts. ei juurikaan tuo lisätietoa itse CC:hen verrattuna (Sparta Inc.).

Esimerkkinä turvaprofiilista voi tutustua sovellustason palomuureille matalan riskitason ympäristöissä laadittuun 64-sivuiseen profiililuonnokseen.

Arviointiprosessi: CC:n (tms.) implementointi

Perushavainto: Arviointi on hidasta ja kallista.

Erityisongelma: jos ohjelmisto on joskus saanut luokituksen, pitääkö uuden version tuottamisen tai jonkin turvallisuuteen ehkä liittymättömän bugin paikkaamisen jälkeen arvioida tuote läpikotaisin uudestaan vai voidaanko ottaa huomioon vain muutokset? Miten tiedetään, ettei sinänsä turvalliselta näyttävä muutos heikennä jotain aivan muuta kohtaa järjestelmässä?

RAMP, "Ratings Maintenance Phase" on lähinnä oranssin kirjan mukaisten arviointien päivittämiseen liittyvä ohjelma, jonka tavoitteena on vaivan ja kustannusten säästäminen. Vastuu tästä ei ole erillisillä arviointilaitoksella, vaan niillä tahoilla jotka järjestelmää tai tuotetta kehittävätkin. Myös CC ottaa tämän ongelman huomioon, mutta vastaava hanke sen puitteissa on vasta kehitteillä.

Evaluoinnin suorittaminen ei ole edennyt tietotekniikan markkinoiden tahtiin ja sitä varten NIST ja NSA perustivat NIAP-hankkeen (National Information Assurance Partnership, 1997), jonka tarkoituksena on yhdessä teollisuuden kanssa kehittää arviointimenetelmiä ja edistää niiden käyttöönottoa. Tämä ei ollut ensimmäinen hanke. Aiempia ja yhä jatkuvia, hieman eri näkökulmista lähteviä hankkeita ovat mm. Trusted Product Evaluation Program (TPEP, tähtää korkean tason, eli vähintään EAL5:n mukaiseen vakuuttumiseen) ja Trust Technology Assessment Program (TTAP, tähtää perustason vakuuttumiseen). Kahden CC-version 1 mukaisesti tasolle EAL2 arvioidun palomuurin arviointitiivistelmät: Lucent Managed Firewall Version 3.0 ja Cisco PIX Firewall 520 Version 4.3(1).

LUE: NIST:n tiivis esite CC:stä (kaikkiaan n. 8 sivua, joista historian voi hypätä yli); Suhteuta suojaprofiilin (eli PP:n) sisällön kuvaus kurssilla aiemmin esitettyyn tietoturvan rakentamisen prosessiin, joka oli mukaeltu CC:stä.

Tiedon lähteitä

Tämän kurssin materiaalissa on ollut useita viittauksia tuoreisiin artikkeleihin, joissa on esitelty tietoturvamekanismeja. Useimmat näistä lähteistä ovat vain yleissivistäviä, eivätkä riitä jonkin järjestelmän tietoturvasta vastaavan henkilön, esim. lähiverkon ylläpitäjän, tarpeisiin. Hänen täytyy saada nopeasti tieto, jos joku jossain löytää vastaavanlaisesta järjestelmästä uudenlaisen tietoturva-aukon. Tällöin hän voi paikata sen omassa järjestelmässään, toivottavasti ennen kuin kukaan ehtii käyttää sitä pahaksi. Toisaalta hyökkäyksistä ei pitäisi levittää sellaista tietoa, joka tekee mahdolliseksi uusien yrittäjien toteuttaa samaa tekniikkaa toisiin kohteisiin. Lisäksi yleensä tarvitaan myös tietoa siitä miten uudenlainen hyökkäys voidaan torjua. Usein tämä edellyttää ohjelmiston valmistajan laatimaa korjauspakettia.

Hyökkäyksistä tiedottaminen on siis paitsi tärkeä myös hyvin arkaluontoinen tehtävä. Tietojen pitää olla riittävän yksityiskohtaisia, jotta ei jäisi epäselväksi onko oma järjestelmä haavoittuva, mutta riittävän yleisiä, että niiden perusteella ei voi toteuttaa hyökkäystä. Lisäksi on annettava aikaa, jotta "vastalääke" ehditään kehittää. CERT, Computer Emergency Response Team, toteuttaa tätä periaatetta. Se on hajautettu järjestelmä, jonka koordinaatiokeskus (CERT/CC) on Carnegie-Mellon-yliopistossa, jonne USA:n puolustusministeriö sen perusti vuonna 1988. Suomessa ainoa CERT-ryhmä on vuonna perustettu 1995 Funet CERT. Tietoturvatiimejä on monia muitakin kuin CERTit. Niitä on akateemisia, kaupallisia ja hallitusten valvomia. Forum of Incident Response and Security Teams, FIRST, on monien tällaisten yhteistyöelin.

Hakkerointiin taipuvaisilla yksilöillä ja yhteisöillä on myös omia julkaisuja ja seittisivuja uusista hyökkäyksistä. Vaikka sieltä ei yleensä ole saatavilla paikkausohjeita, näidenkin kanavien seuraaminen saattaa olla hyödyllistä. Yksi tällainen on Bugtraq.

Yksi ongelma hyökkäysten raportoinnissa on se, ettei sitä aina haluta tehdä. Hyökkääjällä harvemmin on intressiä siihen, mutta myös kohteeksi joutunut yritys saattaa mieluummin välttää negatiivista julkisuutta (ja kurssilaskua, joka ei kuitenkaan tutkimusten mukaan ole merkittävä). Toinen seuraus tästä on se, ettei tietorikollisia usein edes yritetä saada vastuuseen teoistaan. Tätäkin varten on kehitelty anonymisoivaa palvelua, jossa FBI toimii luotettuna osapuolena.

LUE: CERTin pääsivua ja sen takana olevia dokumentteja sen verran että tiedä mitä ovat ja miltä näyttävät CERT Advisories, Incident Notes, Vulnerability Notes, Security Improvement Modules.

Vastuu ja tietoturva

Käytännössä ei ole kysymys vain riskien minimoimisesta vaan vastuun siirrosta jonkun toisen harteille - sen perusteella että on itse tehnyt ohjeiden mukaan. Jotta tällainen voisi onnistua, pitää noudattaa seuraavanlaisia periaatteita, jotka ovat artikkelista R.J. Anderson: "Liability and Computer Security: Nine Principles", Computer Security - ESORICS'94, Springer LNCS 875, 1994, 231-245.
  1. Turvajärjestelmä, jonka tarkoituksena on vakuuttaa (toimia todisteena), pitää suunnitella ja sertifioida ottaen huomioon, että sen analysointi tosipaikan tullen tapahtuu vihamielisessä ympäristössä - vastustajan asiantuntijan toimesta.
  2. On varauduttava siihen, että todelliset ongelmat syntyvä sovellussuunnitelman möhläyksistä ja siitä miten järjestelmää käytetään.
  3. Ennenkuin alkaa rakentaa mitään tietoturvajärjestelmää, pitää varmistua siitä, että ymmärtää, mikä sen todellinen tarkoitus on - erityisesti jos tarkoitus poikkeaa mainostetusta.
  4. On ymmärrettävä, miten vastuu siirtyy niissä järjestelmissä, joita rakennetaan tai joiden perustalle rakennetaan.
  5. Saattaa kestää vuosia, ennenkuin uudenaikaisten teknisten todisteiden merkitys oikeudelliselta kannalta vakiintuu, eikä kehitys välttämättä suppene mitään ristiriidatonta kohti.
  6. Tietoturvalainsäädäntö on hyvin altis "arvaamattomien seurauksien laille".
  7. Ei pidä luottaa teknisiin standardeihin, kun tarkoituksena ratkaista oikeudellisia kysymyksiä.
  8. Turvallisuusoletukset ja -tavoitteet tulisi perustaa kunkin sovellusalan teollisuusstandardeihin, ei yleisiin tietojenkäsittelyn käsitteisiin.
  9. Luotettu komponentti tai järjestelmä on sellainen, jonka voi vakuuttaa.

Tietoturvatietämyksen tarpeen arviointi. Kurssin evaluaatio

Nämä ovat keskusteluasioita, eikä niitä ole käsikirjoitettu.