Toimintaa voisi olla kaikki se, mitä ihminenkin tekee tiedolle ja tietovälineille, mutta jäljempänä malleja esiteltäessä abstrahoidaan samalla tavalla kuin alakoulusssa, jossa opittiin lukemaan ja kirjoittamaan. Sen lisäksihän voisi ajatella Unixin tiedosto-oikeuksien mukaisesti ainakin, että ohjelmatietoa voidaan myös suorittaa. Kyseisessä tiedostossa olevan tiedon kannalta kyseessä on kuitenkin vain lukeminen. Olivatpa pääsylajit mitä tahansa, ne voivat olla erillisiä tai hierarkisia (esim. jos saa kirjoittaa, niin saa lukeakin).
Harjoitus: Millainen malli kuvaa käyttäjien pääsyä Unixin tiedostojärjestelmään? Mikä siinä on viitemonitorina?
(Vastaus: ryhmämalli (kolmas mainituista), jossa "ugo"-toimijoille "rwx|rwx|rwx"-pääsyluettelo tiedostojen ja hakemistojen yhteydessä; joissakin unixeissa ACL:t eli access control-listat.)
Lisää tietoa: Rooliperustainen pääsynvalvonta
Ensinnäkin on hierarkkinen tasojako, esim. sotilasperinteessä: "unclassified", "classified", "secret", "top secret" jne. Ideana on, että kukin toimija pääsee käsiksi omansa ja sitä alempien tasojen kohteisiin.
Tämän lisäksi luokitellaan vastuualueittain (esim. aselajit). Jotta toimija pääsisi kohteeseen käsiksi, hänellä täytyy siis olla luokitus, jossa taso on vähintään sama kuin kohteella ja jonka alueina ovat ainakin ne, jotka ovat kohteellakin.
Harjoitus: Millaiset turvatasot ja vastuualueet järjestäisit dokumenteille, joita syntyy EU-rahoitteisessa tutkimusprojektissa, jossa selvitetään matkapuhelimen terveysriskejä ja sitä miten niitä voitaisiin torjua? Oletetaan, että kyseessä on yhteistyö korkeakoulun (tietoliikenne), yliopiston (lääketiede), valmistajan ja usean operaattorin välillä.
Tasot muodostavat ketjun (hierarkian), jossa jokainen on vertailukelpoinen muiden kanssa, mutta alueet suhtautuvat toisiinsa joukko-opillisen sisältymisrelaation mukaisesti: Ne muodostavat kaikkien mahdollisten alueiden joukon osajoukkojen hilan ('lattice').
Harjoitus: Piirrä kaavio joukon {a,b,c} kaikista osajoukoista ja niiden sisältymisestä toisiinsa. Kuvitellaan että a, b ja c ovat eri vastuualueita, jolloin mainitut osajoukot ovat mahdollisia turvamerkintöjä. Millainen kaavio syntyy, jos lisäksi on kaksi turvatasoa: luottamuksellinen ja salainen? Miten kolmas taso, julkinen, muuttaisi kuvaa?
Monet turvamerkinnät ovat siis keskenään vertailukelvottomia. Jos merkintä x on hilassa y:n yläpuolella sanotaan myös, että x dominoi y:tä. Tämä ehto toteutuu tarkalleen silloin, kun x:n taso on vähintään y:n taso ja kun x:n vastuualuejoukko sisältää y:n joukon. (Huomaa, että x siis dominoi x:ää eli itseään, kyseessä on "suurempi tai yhtäsuuri"-relaatio.)
Harjoitus: Kohteilla on turvamerkinnät [ luott., {a,b} ] ja [ sal., {b,c} ]. Miten hilasta löytyy matalin näitä molempia dominoiva turvamerkintä, jollainen toimijalta siis vaaditaan, jotta hän pääsisi käsiksi molempiin kohteisiin?
Hilan matemaattinen määritelmä sisältää oleellisesti ehdon, että jokaisella alkioparilla on pienin yhteinen yläraja ja suurin yhteinen alaraja. Jos tämä toteutuu osittain järjestetyssä joukossa, niin kyseessä on silloin hila. Osittaisella järjestyksellä tarkoitetaan tietynlaista alkioiden välistä relaatiota, jollainen tässä tapauksessa on juuri dominointi.
Harjoitus: Miten pääset käsiksi diplomityöhön, joka on "julistettu salaiseksi"? Onko se ensinnäkin luetteloissa ja onko niissä mainittu, että se on salainen ja jos on, onko näkyvissä salassapitoaika?
Ensinnäkin on ilmeistä, että keskenään vertailukelvottomien turvamerkintöjen välinen vuorovaikutus pitää kieltää kokonaan. Kahden samaan luokkaan kuuluvan olion välille taas ei voida asettaa rajoituksia. Voidaan siis tarkastella kahta eri merkintää x ja y, joista esim. x dominoi y:tä:
Harjoitus: Jos toimija on luokassa x ja kohde luokassa y, miten pitää rajoittaa toimintoja "lukeminen" ja "kirjoittaminen"? Mitkä rajoitukset näille toimille on asetettava, kun kohde onkin ylempänä kuin toimija?
Säännöt, ettei yläpuolelta saa lukea (NRU, "No Read Up") ja ettei alapuolelle saa kirjoittaa (NWD "No Write Down"), ovat Bellin ja LaPadulan kehittämän tietoturvamallin keskeinen sisältö. Malli sisältää näiden sääntöjen lisäksi oletuksen, ettei olioiden luokitus muutu operaation aikana. Tämä vaadittava ns. 'tranquility'-ominaisuus (eräänlainen "rauhoitus") voi toteutua eriasteisena, mutta ilman sitä tietoturvatavoite ei toteutuisi; vastaesimerkki on helppo keksiä vaikka tenttitehtävässä (siis aikanaan).
Bell-LaPadula-malli (BLP) on vuodelta 1973 ja vaikka se on intuitiivinen ja varsin yksinkertainen, sillä on silti ollut suuri merkitys alan tutkimukselle. Yksi idea tässä ja muissa turvamalleissa on se että jos järjestelmän todetaan noudattavan mallia, niin silloin tiedetään sen olevan turvallinen, kunhan vain mallia koskevat oletuksetkin ovat voimassa.
Trusted Computer System Evaluation Criteria eli ns. oranssi kirja on USA:n puolustusministeriön julkaisu vuodelta 1985. Päästäkseen sen määrittelemään turvaluokkaan B1, järjestelmän on toteutettava Bell-LaPadulan mallin mukainen pääsyn valvonta. Erityisesti siis käytössä on oltava turvamerkinnät. Tällaista keskusjohtoisesti asetettua pääsynvalvontaa sanotaan mandatoriseksi ("holhotuksi"). Sen lisäksi voidaan B1-tasollakin soveltaa käyttäjien asettamia vapaaehtoisia oikeuksia - samaan tapaan kuin käyttäjä määrittelee tiedosto-oikeudet unixissa. Tällainen käyttäjän hallinnoima pääsynvalvonta on tyypiltään 'discretionary'. Ilman sitä saman tason ja vastuualueen toimijat eivät voisi varjella toisiltaan omia tietojaan.
Voidaan tietysti väittää, että tieto joko on täysin eheää tai sitten ei lainkaan (ohjelmakin on joko oikein tai sitten ei). Käytännössä esiintyy kuitenkin eri tasoja vaikkapa painotuotteen luotettavuudessa. Tällöin on kyse oikeastaan eheyden todennäköisyysjakaumasta: kuinka usein tieto on eheää ja kuinka usein ei. Samaa jakauma-ajattelua voisi tietysti soveltaa jonkin tekstin sisällekin.
Mainitut eheyssäännöt ovat siis NWU, "No Write Up" ja NRD, "No Read Down" eli tarkalleen päinvastaiset kuin BLP-mallissa. Huomaa, että luokitusperuste on kuitenkin erilainen. Tämä eheysmalli on pari vuotta nuorempi kuin BLP-malli ja se on nimeltään Biba-malli laatijansa nimen mukaisesti. Se sisältää joitakin variaatioita: Jos NWU- ja NRD-säännöistä pidetään tiukasti kiinni, puhutaan mandatorisesta Biba-mallista. Jos sitä käytetään yhdessä BLP-mallin kanssa eikä eheysluokitusta tehdä erikseen, päädytään siihen, että luku ja kirjoitus on sallittua vain samaan luokkaan kuuluvien olioiden kesken. Toisenlainen mahdollisuus on sallia myös "WU" ja "RD", mutta näiden tapahtuessa pitää sitten muuttaa ylemmän tason olion (siis kirjoitetun kohteen tai lukeneen toimijan) luokitus alemman tason mukaiseksi.
CW-mallissa yrityksen tiedot jaetaan kahteen luokkaan:
Pääsynvalvonta voidaan toteuttaa aiemmin mainituilla rakenteilla ja se voidaan jakaa kahteen vaiheeseen: Saako henkilö käynnistää jonkin toiminnon ja jos saa, saako hän kohdistaa sen haluamaansa tietoalkioon. Erityinen rajoitus on muuten asetettava oikeudelle muuttaa oikeuksia, eli peukaloida kolmikoita.
Yleisenä ongelmana on, että muunnoksia suorittavista ohjelmista on erittäin vaikea saada takuita siitä, ettei mitään asiatonta pääse tapahtumaan. Kyseessähän olisi ohjelman oikeaksi todistaminen, mikä tunnetusti on varsin vaikeaa....
Prosessien huolellisella määrittelyllä tavoitellaan erityisesti toimintojen eriyttämistä: Minkään tahon ei pitäisi olla vastuussa sellaisista toimista, että hän voi yksin tehdä vilppiä ja onnistua kätkemään sen (esim. varaston tapauksessa tekemällä sekä lisäys- että poistomerkinnät ...). Käytännössä tämä voi ilmetä esim. siten, että johonkin transaktioon tarvitaan kahden henkilön allekirjoitus. Clark-Wilsonin mallin kolmikot ovat sikäli rajoitettuja, että ne eivät ota huomioon kontekstia: Jos henkilö saa tehdä kumman tahansa kahdesta vaaditusta allekirjoituksesta, hän voi mallin puolesta tehdä molemmat. Tämän estämiseksi käytännössä riittää politiikkaan kirjattu sääntö.
Viitteitä näihin tuloksiin löytää hakusanoilla Harrison-Ruzzo-Ullman sekä Lipton ja Snyder.
Salasanamekanismia voi soveltaa pienempiinkin kohteisiin, kuten vaikkapa ohjelmiin, tiedostoihin tai tietokannan tietueisiin. Autentikointi voitaisiin tehdä jollain "haastavammallakin" ja turvallisemmalla menettelyllä. Näistä tulee lisää myöhemmin (haaste-vaste-menetelmä ensi kerralla).
Käyttäjän syöttämästä (unixin login-)salasanasta lasketaan yksisuuntaisella funktiolla arvo, jota verrataan koneeseen talletettuun arvoon, joka esim. Unixissa on perinteisesti tiedostossa /etc/passwd. Näin koneeseen ei tarvitse tallettaa itse salasanaa. Yksisuuntaisen funktion arvoa ei periaatteessa tarvitsisi suojata, koska siitä ei pysty päättelemään salasanaa. Tämä olisi käytännössäkin totta, jos vain se avaruus, josta käyttäjät salasanansa valitsevat, olisi niin suuri kuin kaikki mahdolliset (tietyn mittaiset) merkkijonot. Todellinen valikoima on niin paljon pienempi että kokeilemalla esim. sanakirjan verran sanoja - pienten muunnostenkin kera - voi löytää merkkijonon, josta funktion arvo on oikea (tämä on salasanan murtoalgoritmien eli crackereiden perusidea). Sen vuoksi koneeseen talletettua arvoa ei pidetä nykyään kaikkien luettavana. Lisäksi salasana "suolataan" ennen funktion laskua liittämällä siihen satunnainen bittijono. Unixissa tämä on yleensä 12 bittiä, mikä merkitsee 4096-kertaista vaivaa jokaisen arvattavan sanan lisäksi. Suola-arvot talletetaan yksisuuntaisen funktion arvojen kanssa käyttäjiltä piilossa olevaan paikkaan.
Kiinteät salasanat ovat kyllä kelvollisia, kunhan ne on valittu riittävän hankalasti arvattavalla tavalla, jotta crack-algoritmit eivät pysty murtamaan niitä. Yksi 10 miljoonasta ei ole vielä tarpeeksi hankalaa. Verkosta löytyy ohjeita, millaista salasanaa ei saa valita ja unixin salasananvaihto-ohjelmakaan ei hyväksy kaikkia. Parempi varmuus salasanaehdokkaan hyvyydestä saadaan ajamalla se jonkin crack-algoritmin läpi. Yksi mahdollisuus on myös käyttää koneen valitsemaa satunnaista salasanaa, mutta niistä tulee tietenkin kovin harvoin mitään helposti muistettavaa. Muuan välimuoto on, että kone antaa joitakin merkkejä ja käyttäjä täydentää niiden väliin jotain, joka tekee kokonaisuudesta muistettava(mma)n.
Yksi uudenlainen mahdollisuus olisi luoda graafisia salasanoja, jollaisia voisi syöttää erityisesti PDA-laitteisiin (Personal Digital Assistants). Graafisella salasanalla voidaan saavuttaa paljon suurempi helposti muistettavien salasanojen avaruus kuin tekstuaalisilla salasanoilla. (Aihetta koskevan artikkelin abstrakti USENIX-konferenssista 1999)
Harjoitus: www-palvelimet mahdollistavat seuraavanlaisen salasanamekanismin. Asiattomilta suojattavaksi tarkoitettuun hakemistoon tehdään tiedosto nimeltä .htaccess, johon talletetaan oleellisesti, minkä nimiset käyttäjät ovat lukuoikeutettuja ja mikä on salasanatiedosto. Kun viite tähän hakemistoon tulee selaimelta, palvelin kysyy vastauksessaan käyttäjätunnusta ja salasanaa. Palvelin kryptaa saamansa salasanan ja vertaa tulosta salasanatiedoston sisältöön käyttäjätunnuksen kohdalla. Jos tulos on myönteinen selaimelle lähetään pyydetty tiedosto ja mikä tahansa muu kyseisen hakemiston tiedosto (johon palvelimella on lukuoikeus). Mitä aukkoja tämän järjestelmän turvallisuudessa on?
Vastaus: Salasana kulkee selväkielisenä. Hakemiston tiedostoilla pitää olla lukuoikeudet kaikille, joten saman koneen käyttäjät pääsevät tiedostoihin käsiksi "keittiön" kautta.
Valmiin listan sijasta asiakas voisi käyttää yksisuuntaista funktiota f seuraavalla "takaperoisella" tavalla. Oletetaan, että käyttäjä on soveltanut f:ää n kertaa peräkkäin johonkin generoimaansa satunnaislukuun r ja on ilmoittanut lopputuloksen f(f(f...f(r)..)) = fn(r) palvelimelle jollain autentikoidulla tavalla.
Koska asiakas tuntee r:n ja välivaiheet, vain hän pystyy ratkaisemaan x:n yhtälöstä f(x) = fk(r), missä 1<=k<=n. Ratkaisuhan on yksi välivaiheista eli x = fk-1(r). Asiakas voi näitä ratkaisuja kertomalla osoittaa henkilöllisyytensä n kertaa aloittaen k:n arvosta n ja jatkaen siitä takaperin kohti ykköstä. Palvelin sai aluksi tietää fn(r):n ja jatkossa se aina tallettaa edellisen ratkaisun. Kun r vihdoin on tullut kerrotuksi, pitää laskea uusi salasanajono.
Tässä on kyseessä eräänlainen haaste-vaste-menetelmä. Haasteena on nimittäin luku k (eli missä kohdassa jonoa taas oltiinkaan) ja vasteena fk-1(r).
Idea on peräisin Leslie Lamportilta vuodelta 1981 ja sitä on sovellettu Bellcoren S/KEY-ohjelmistossa. Sen kanssa yhteensopiva on free-ware-ohjelmisto OPIE ("One-time Passwords In Everything"), jollainen on mm. Lintulan teleport-koneessa (käyttöohje). Jotta tätä menetelmää voi myöhemmin käyttää autentikoimattomien modeemi- tai telnet-yhteyksien kautta, käyttäjän pitää ensin päästä sisään jollain turvallisella keinolla (esim. ssh:lla) asentamaan oma salasanajononsa (komento opiepasswd). Toisin kuin edellä, koneeseen ei syötetäkään jonon viimeistä jäsentä fn(r), vaan sille annetaan itse lähtötieto r. Tämä ei haittaa koska koneeseenhan voidaan tietenkin luottaa tässä asiassa.
Lähtötieto "r" koostuu oikeastaan kahdesta asiasta, joista toinen on käyttäjän
valitsema merkkijono ja toinen on siemenluku (merkkijono sekin), jonka kone
valitsee, mutta jonka voi asettaa myös itse. Kone tallettaa vain siemenluvun, ei
käyttäjän valitsemaa merkkijonoa, joka toimii eräänlaisena salauslauseena, joka
pitää muistaa, jos haluaa myöhemmin laskea oikeat vastaukset. Siemenluvun ja
seuraavana vuorossa olevan kohdan salasanajonossa voi kysyä koneelta (komennolla
opieinfo).
Yksisuuntaisena funktiona f on hash-funktio MD4 tai MD5. Oikeat vastaukset
haasteisiin voi laskea periaatteessa missä (turvallisessa) laitteessa hyvänsä,
mutta siihen voi käyttää myös kohdekoneen funktiota opiekey, joka muodostaa
(muistiin kirjoitettavaksi) halutun mittaisen listan halutusta kohdasta
salasanajonoa. Tämä funktio ei mitenkään riipu aiemmasta alustuksesta, vaan se
toimii vain laskukoneena. Kertakäyttöisten salasanojen lista on tämän
näköinen:
596: FOND HOLE BUSH KEEN HECK SLUM
597: COST HAAG TILL NEAR HULL FUSE
598: FREY LA RAGE NOR KEEL GALL
599: KIN GAVE MONT WIN SLOG FEW
600: CODA COL RISK EMIL NAIR STUN
Jokainen salasana on todellisuudessa 64 bitin jono, mutta niiden esitysmuoto on
muunnettu 6 englanninkieliseksi sanaksi (jotka ovat 2048 sanan luettelosta).
Lisätietoa, mm. em. sanaluettelo: RFC 1760