3. Clark-Wilson Unixissa tai NT:ssä. Kuvaile miten Clark-Wilson malli voitaisiin toteuttaa Unixin tai NT:n turvamekanismeilla. Kerro myös mikäli jotain mallin osaa ei voida kyseisen käyttöjärjestelmän mekanismeilla toteuttaa. Clark-Wilson Unixissa ===================== Päätimme tutkia miten Clark-Wilson -malli voitaisiin toteuttaa Unixin turvamekanismeilla, koska Unix oli NT:tä tutumpi vaihtoehto. Clark-Wilson -malli sisältää seuraavat keskeiset 5 kohtaa turvallisuusvaatimuksina: 1. Subjektit pitää identifioida ja autentikoida 2. Objekteja voidaan käsitellä vain rajoitetulla joukolla ohjelmia 3. Subjektit voivat suorittaa vain rajoitetun joukon ohjelmia 4. Kunnollista audit logia pidetään yllä 5. Järjestelmän pitää olla sertifioitu toimimaan kunnolla Seuraavassa kerromme voidaanko ne voidaan toteuttaa Unixin turvamekanismeilla, ja miksi, tai miksi ei. 1. Subjektit pitää identifioida ja autentikoida Unixissa subjektien autentikaatio hoidetaan siten, että käyttäjiltä kysytään salasana sisään logattaessa. Subjektien identifiointi taas saavutetaan siten, että kaikilla Unixin prosesseilla on jokin UID. 2. Objekteja voidaan käsitellä vain rajoitetulla joukolla ohjelmia, ja 3. Subjektit voivat suorittaa vain rajoitetun joukon ohjelmia Unix -järjestelmissä ei sellaisenaan ole tukea tällaiselle turvallisuuskäytännölle. Voidaan vain määritellä mitkä käyttäjät (subjektit) voivat mitäkin tiedostoa (objektia) käsitellä, ja mitä ohjelmia käyttäjät voivat ajaa. Ei voida esim. määrätä, että käyttäjä "petteri" voi käsitellä tiedostoa "foo" komennolla "cat", muttei komennolla "wc". Jotta käytäntö saataisiin voimaan, pitäisi toteuttaa joko käyttöjärjestelmään tai ohjelmiin komponentti, joka tarkistaa CW-kolmikkorelaatiosta, onko käyttäjällä oikeus käyttää ohjelmaa tiedostoon vai ei. Tällaisen lisäyksen toteuttaminen on toki täysin mahdollista, mutta sellaista ei ole Unixissa valmiina. Nämä kaksi sääntöä muodostavat oleellisimman osan Clark-Wilsonin toiminnan kannalta, joten voidaan sanoa ettei Unix:n turvamalli ole CW-yhteensopiva. 4. Kunnollista audit logia pidetään yllä Audit login ylläpito voidaan toteuttaa siten, että ohjelmat tehdään sellaisiksi, että ne takaavan tiedostojen konsistenssin (miten ikinä se onkaan määritelty), ja tekevät systeemin logiin merkinnän kaikista toiminnoista. Tavalliset Unix:n komennot ja ohjelmat eivät ole tällaisia. Logien kirjoittamiseen Unixissa on mahdollista käyttää append -only mediaa logien kirjoittamiseen (write-only loghost, tai vaikkapa printteri). 5. Järjestelmän pitää olla sertifioitu toimimaan kunnolla Tätä kohtaa on hyvin vaikea täyttää, sillä käyttöjärjestelmät ovat niin suuria ja monimutkaisia, ettei mitään vedenpitävää todistusta oikein toimivuudesta kaikissa tilanteissa voida tehdä. Näiden viiden keskeisen kohdan lisäksi Clark-Wilson -mallissa määritellään 9 formaalimpaa sääntöä, jotka turvallisen järjestelmän tulee täyttää. Seuraavassa kerromme miten ne voitaisiin täyttää Unixin turvamekanismeilla. CW -mallin säännöt: Sääntö 1: IVP:tä pitää olla käytettävissä minkä tahansa CDI:n integriteetin selvittämiseksi. Tietynlaisia tarkistuksia on helppo tehdä, esim. laskemalla tarkistussummia tiedostoista. Näin saadaan selville onko tiedosto muuttunut vai ei. Aina ei kuitenkaan ole selvää miten IVP voitaisiin toteuttaa luotettavasti ja tehokkaasti. Tämä ongelma ei ole Unix-spesifinen, vaan on olemassa missä tahansa Clark-Wilson -toteutuksessa. Unixeille on olemassa erilaisia ohjelmia jotka suorittavat tarkistussummien ajoittaista laskentaa tiedostoille, mutta käyttöjärjestelmässä itsessään tällaista toimintoa ei yleisimmissä Unixeissa ole. Sääntö 2: TP:n käyttämisen mihin tahansa CDI:hin pitää säilyttää ko. CDI:n integriteetti. Ohjelmat pitäisi periaatteessa verifioida niin, etteivät ne missään tilanteessa riko käsittelemiään tiedostoja. Tämä voi olla erittäin vaikeaa, ja riippuu siitä miten CDI:n integriteetti ylipäätään määritellään. Unixista ei ole tässä erityisemmin apua. Sääntö 3: Vain TP voi muuttaa CDI:tä, ja Sääntö 4: Subjektit voivat käyttää vain tiettyjä TP:tä tiettyihin CDI:hin. Jos pidetään huoli siitä, että turvalliset tiedostot ovat vain CW-triplettejä access listanaan käyttävien ohjelmien käsiteltävissä, esim. ottamalla käyttöön CW'a varten oma Unixin UID, voidaan tätä sääntöä noudattaa Unixin avulla. Sääntö 5. CW-triplettien pitää pakottaa jokin sopiva hajautettu velvollisuuskäytäntö (separation of duty policy) subjekteille. Sääntö 6: Tietyt erityiset TP:t voivat tuottaa ulostulona CDI:tä, kun sisääntulona on UDI:ta. Nämä säännöt voidaan täyttää jos ohjelmat (TP:t) tehdään sopivasti. Jälleen, Unixista ei juuri ole apua. Sääntö 7: Aina kun TP:a käytetään, pitää erityiseen vain lisäämisen sallivaan CDI:hin kirjoittaa riittävästi tietoa josta voidaan rekonstruoida TP:n käyttötapahtuma. Unixin komennot eivät kirjoita riittävästi logia rekonstruoinnin mahdollistamiseksi. Lisää tietoa, ja transaktioita tukeva järjestelmä (tudo) löytyy URLista http://security.dstc.edu.au/staff/povey/papers/povey-usenix/. Sääntö 8: Järjestelmän pitää autentikoida subjektit, jotka yrittävät käyttää jotakin TP:tä. Unix:ssa käyttäjillä on salasanat. Periaatteessa tämä riittää, mutta Unix:ssa on mahdollista jättää auki sessio vaikka viikoiksi, jolloin on aika todennäköistä että joku ei-toivottu henkilö pääsee käyttämään järjestelmää. Tämän takia ainakin kriittiset TP:t kannattaa toteuttaa niin, että ne autentikoivat käyttäjän aina käynnistettäessä, tai vaikka tietyin väliajoin, vähän samaan tyyliin kuin Unix:n passwd -komento kysyy vanhaa salasanaa ennen kuin se suostuu vaihtamaan sen uuteen. Sääntö 9: Järjestelmän pitää sallia vain erikoissubjektien (eli turvallisuuspäälliköiden) tekevän muutoksia oikeuksien määrittelylistoihin. Jos CW -järjestelmän konfigurointitiedot ovat vain esim. root- käyttäjän muutettavissa, voidaan tämä hoitaa Unixin avulla. Toisaalta CW -järjestelmä voisi suojata itse omat access listansa, jolloin Unixia ei siihen tarvittaisi. Clark-Wilson on hyvin vaativa turvallisuusmalli, mutta samalla myöskin varsin käytännöllinen. Kaikki sen kohdat ovat perusteltavissa melko helposti käytännön esimerkeillä. Logien tekemistä on kritisoitu sillä perusteella, että jotta logeista olisi jotain iloa pitäisi turvallisuuspolitiikkaa rikkoa, ja sitähän ei järjestelmän pitäisi sallia missään tapauksessa, eli loogisesti ajatellen logit ovat turhia. Logit kuitenkin ovat käytännön järjestelmissä ehdottoman tärkeitä. Esim. jos inhimillisen virheen vuoksi kuka tahansa on voinut parin tunnin ajan päästä käsiin salaiseen tietoon, voidaan logeista tarkistaa onko näin käynyt vai selvittiinkö säikähdyksellä. Jos CW toteutetaan Unix:iin, on kuitenkin otettava huomioon se, että Unixissa on root-käyttäjätunnus, jolla on kaikki mahdolliset oikeudet. Näin ollen se voi tehdä täsmälleen mitä lystää. Samalla koko CW-systeemillä ryyditetty Unix on vähintään yhtä turvaton kuin root-tunnus. Jos alla oleva Unix-järjestelmä on mahdollista murtaa, murtuu samalla CW-järjestelmä. Tämän takia CW'a ei mielestämme kannata millään lisäpalikalla toteuttaa Unixiin, vaan järjestelmä pitäisi suunnitella alusta alkaen uudelleen.