Tietoturvan perusteet Luentomateriaali kevät 2010, IV periodi. Timo Karvi. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Samankaltaiset tiedostot
TIETOTURVAN PERUSTEET, Luku 1: Yleistä tietoturvasta

Pääsynvalvonta I. käyttöoikeuden mihinkin järjestelmän osaan. Eli ensiksi on

TIETOTURVAN PERUSTEET: KERTAUSTA

Pääsynvalvonta I. käyttöoikeuden mihinkin järjestelmän osaan. Eli ensiksi on

TIETOTURVAN PERUSTEET

Unix-perusteet. Tiedosto-oikeudet

Luku IV: Haittaohjelmat

Kymenlaakson Kyläportaali

Luento 3. Timo Savola. 7. huhtikuuta 2006

TIETOTURVA. Eduberry tietotekniikka marjanviljelijän apuvälineenä Leena Koponen

Ongelma 1: Miten tieto kannattaa koodata, jos sen halutaan olevan hyvin vaikeasti luettavaa?

Yritysturvallisuuden perusteet. 11. Luento Tietotekninen turvallisuus

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Sisällysluettelo. Esipuhe Johdanto Tietoturvallisuuden rooli yritystoiminnassa... 17

TIETOTURVAN PERUSTEET, Luku 1: Yleistä tietoturvasta

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Autentikoivan lähtevän postin palvelimen asetukset

Kryptografiset vahvuusvaatimukset luottamuksellisuuden suojaamiseen - kansalliset suojaustasot

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri

Tietoturvallisuuden huoneentaulu mitä jokaisen on hyvä muistaa

Tietoturvan Perusteet Yksittäisen tietokoneen turva

Tietoturva. opettaja Pasi Ranne Luksia, Länsi-Uudenmaan koulutuskuntayhtymä Pasi Ranne sivu 1

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Pilvipalveluiden arvioinnin haasteet

Tietoturva SenioriPC-palvelussa

Järjestelmän asetukset. Asetustiedostojen muokkaaminen. Pääkäyttäjä eli root. Järjestelmänhallinnan työkalut

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Tietoturvan perusteet - Syksy SSH salattu yhteys & autentikointi. Tekijät: Antti Huhtala & Asko Ikävalko (TP02S)

Laatua ja tehoa toimintaan

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

HELIA TIKO ICT03D Tieto ja tiedon varastointi T.Mikkola, O.Virkki. Tietoturva tiedon varastoinnissa

Tietoturvallisuuden ja tietoturvaammattilaisen

KOMISSION DELEGOITU ASETUS (EU) /, annettu ,

Henkilökohtaista käyttäjäystävällistä tietoturvaa! NTG Solo Secure

Lyhyt oppimäärä mistä tietojen salauksessa on oikeasti kyse? Risto Hakala, Kyberturvallisuuskeskus, Viestintävirasto

T Yritysturvallisuuden seminaari

Tutkimus web-palveluista (1996)

Ohjelmoinnin perusteet Y Python

Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2

Muutoshistoria Versio Laatija Päiväys Muutokset Hyväksynyt 0.9 Juuso Mikkonen

TIETOJÄRJESTELMIEN KÄYTTÖSÄÄNNÖT

TIETOTURVA. Miten suojaudun haittaohjelmilta

Linux - käyttöoikeudet

Tietoturva ja tietosuoja. Millaisia ovat tietoyhteiskunnan vaarat?

Wilman pikaopas huoltajille

Tietokoneiden ja mobiililaitteiden suojaus

Salasanojen hallinta. Salasanojen hallintaopas RESTAURANT ENTERPRISE SOLUTION

Tietoturvavinkkejä pilvitallennuspalveluiden

Peruspalvelukuntayhtymä Kallio TIETOSUOJAPOLITIIKKA. Yhtymähallitus

Tietokantojen hallinta

Lyhyt oppimäärä mistä salauksessa on kyse? Risto Hakala, Kyberturvallisuuskeskus, Viestintävirasto

Ohjelmiston lisensoinnin avoimet vaihtoehdot

Yliopiston johdon (hallintojohtaja) vastuulla on tietoturvallisuuden toteutuminen osana kokonaisturvallisuutta.

Tiedostonhallinta. Yleistä

Päivitetty TIETOVERKON JA TIETOJÄRJESTELMIEN KÄYTTÖSÄÄNNÖT

Henkilörekisteriseloste/tietosuojaseloste Henkilötietolaki (523/1999) 10 ja 24 Laatimispvm: , päivitetty

PK-yrityksen tietoturvasuunnitelman laatiminen

Salakirjoitusmenetelmiä

TIETOSUOJASELOSTE. Yleistä. Mihin tarkoitukseen henkilötietojani kerätään ja käsitellään? Mitä henkilötietoja minusta kerätään ja mistä lähteistä?

Muokkaa otsikon perustyyliä napsauttamalla

Option GlobeSurfer III pikakäyttöopas

Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun.

Ohjelmoinnin perusteet Y Python

IT-palvelujen ka yttö sa a nnö t

Tehtävä: FIL Tiedostopolut

Opas administraattori-tason käyttäjille. MANAGERIX -ohjelman esittely... 2 Kirjautuminen... 2

Moodle-oppimisympäristö

Pikaopas. Ohjeiden etsiminen Hae ohjesisältöä napsauttamalla kysymysmerkkiä.

Sähköpostitilin käyttöönotto

SecGo. Sähköinen allekirjoitus ja sen käyttö. Ari-Pekka Paananen, SecGo VE Oy Director,technology

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Vesihuolto päivät #vesihuolto2018

Tietokanta (database)

TIETOTURVALLISUUDESTA

Ohjelmoinnin perusteet Y Python

Visma Econet -ohjelmat ActiveX on epävakaa -virheilmoituksen korjausohjeet

Fixcom Webmail ohje. Allekirjoitus. Voit lisätä yhden tai useamman allekirjoituksen.

Tietoturva Kehityksen este vai varmistaja?

Emmi-sovelluksen kirjautumisohje

Salasanojen turvallinen tallentaminen KeePass ohjelmalla

Standardien PCI DSS 3.0 ja Katakri II vertailu

LoCCaM. LoCCaM Cam laitteiston ohjaaminen. Dimag Ky dimag.fi

Ohjelmoinnin perusteet Y Python

Tikon Ostolaskujenkäsittely versio SP1

Tiedostojen jakaminen turvallisesti

Mobiililaitteiden ja sovellusten tietoturvallisuus mihin tulee kiinnittää huomiota?

Kattava tietoturva kerralla

Simulaattorin asennus- ja käyttöohje

Verkkorikollisuus tietoturvauhkana. Valmiusseminaari, ylitarkastaja Sari Kajantie, KRP/Tietotekniikkarikosyksikkö

KESKI-POHJANMAAN IT-ALUEKESKUKSEN TIETOTURVAOHJEET

Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje

Tekstinkäsittelyn jatko KSAO Liiketalous 1

TIETOTURVALLISUUDEN UUDET ULOTTOVUUDET TOIMITILOISSA

SALAUSMENETELMÄT. Osa 2. Etätehtävät

Osallistavan suunnittelun kyselytyökalu

JOVISION IP-KAMERA Käyttöohje

Hakemistojen sisällöt säilötään linkitetyille listalle.

Luento 5. Timo Savola. 28. huhtikuuta 2006

Tietoturva-asetus ja sen vaikutukset rekisterien ylläpitoon ja tietoluovutuksiin A-P Ollila 1

Käyttöjärjestelmät: prosessit

Transkriptio:

Tietoturvan perusteet Luentomateriaali kevät 2010, IV periodi Timo Karvi HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Sisältö 1 Yleistä tietoturvasta 1 1.1 Tietoturvallisuus yleisen turvallisuuden osana............. 1 1.2 Tietoturvallisuuden osa-alueet...................... 2 1.3 Tietoturvallisuuteen liittyvät lait ja asetukset............. 3 1.4 Kryptografisten tuotteiden patentit ja vientirajoitukset........ 5 1.5 Tietoturvaorganisaatioita ja tietoturvan ohjeistuksia sekä standardeja 6 1.6 Yleistä tietoturvaohjelmistojen laatimisesta............... 8 1.7 Turvallisen suunnittelun periaatteet................... 8 2 Pääsynvalvonta 13 2.1 Johdanto.................................. 13 2.2 Pääsynvalvontatyypit........................... 13 2.3 Salasanojen käsittely........................... 14 2.3.1 Yleistä salasanoista........................ 14 2.3.2 Hyökkäykset salasanoja vastaan................. 15 2.3.3 Salasanatiedosto......................... 16 2.3.4 Salasanan valinta......................... 16 2.4 Käyttöjärjestelmien rakenteita, joilla on merkitystä turvallisuuden yhteydessä................................. 17 2.4.1 Tiedostot............................. 17 2.4.2 Symboliset linkit......................... 18 2.4.3 Käyttäjien tunnukset....................... 19 2.4.4 Pääsyoikeudet tiedostoihin.................... 20 2.5 Haittaohjelmat ja niiden torjunta.................... 22 2.5.1 Haittaohjelmat.......................... 22 2.5.2 Haittaohjelmien torjunta..................... 26

SISÄLTÖ 3 Ohjelmien turvallisuus 33 3.1 Tyypillisiä ohjelmistovirheitä....................... 33 3.1.1 Puskurin ylivuoto......................... 33 3.1.2 Tietojen epätäydellinen välitys (incomplete mediation).... 34 3.1.3 Synkronointivirhe......................... 35 3.1.4 SQL-solutus............................ 35 3.1.5 Virheet poikkeusten käsittelyssä................. 36 3.2 Turvallisessa ohjelmoinnissa huomioon otettavia seikkoja....... 36 3.2.1 Prosessin oikeudet........................ 37 3.2.2 Oikeudet pääsynvalvontatiedostoon............... 37 3.2.3 Muistin suojaus.......................... 37 3.2.4 Luottamus............................. 38 3.2.5 Implementaation yksityiskohtien vajavainen eristäminen... 38 3.2.6 Vajavainen muutos........................ 40 3.2.7 Virheellinen nimentä....................... 43 3.2.8 Vaillinainen validointi....................... 45 3.2.9 Virheellinen atomisuus...................... 47 3.3 Ohjelmointikielet turvallisuuden näkökulmasta............. 48 3.3.1 Ohjelmointikielten turvallisuuspiirteet.............. 48 3.3.2 Java................................ 49 3.3.3 C.................................. 55 4 Datan turvallisuus 57 4.1 Yleistä tietojen luokittelusta....................... 57 4.2 Muutamista tiedosto-operaatioista.................... 58 4.2.1 Tiedostojen poisto........................ 58 4.2.2 Tiedostojen kopiointi ja siirto.................. 60 4.3 Tiedon eheyden käsite ja eheystekniikoita................ 61 4.3.1 Tiedon salaus eheystekniikkana................. 61 4.3.2 Tiivistefunktiot.......................... 62 4.3.3 MAC-funktiot........................... 64 4.4 Tiedon salaus............................... 64 4.4.1 One time pad........................... 65 4.4.2 Jonosalaajat............................ 66 4.4.3 Lohkosalaajat........................... 67

SISÄLTÖ 4.4.4 Symmetrinen salaus käytännössä................ 68 5 Verkkojen tietoturva 73 5.1 Tyypillisen hyökkäyksen eteneminen verkossa............. 73 5.1.1 Verkon rakenteen selvittäminen................. 73 5.1.2 Verkon kartoitus......................... 73 5.1.3 Sormenjäljet............................ 75 5.1.4 Tunnustelu............................ 76 5.1.5 Skannerit............................. 77 5.2 Palvelunestohyökkäykset......................... 77 5.2.1 Esimerkkejä erilaisista palvelunestohyökkäyksistä....... 77 5.2.2 Palvelunestohyökkäysten estäminen............... 81 5.3 Palomuurit................................ 83 5.4 Osapuolten todentaminen........................ 83 5.4.1 Julkisen avaimen salaus RSA.................. 83 5.4.2 Digitaalinen allekirjoitus RSA:n avulla............. 86 5.4.3 Julkisen avaimen infrastruktuuri ja X.509............ 87 5.5 Verkon tietoturvaohjelmistoja...................... 96 5.5.1 IPSec............................... 96 5.5.2 SSL................................ 112 5.5.3 Sähköpostin salaus........................ 112 5.6 Tunkeutumisen havaitseminen...................... 112

SISÄLTÖ

Luku 1 Yleistä tietoturvasta 1.1 Tietoturvallisuus yleisen turvallisuuden osana Organisaatioiden turvallisuus on hyvin laaja alue, josta tietoturvallisuus muodostaa vain pienen osan. Seuraavassa on lueteltu eräällä kaupallisella turvallisuuskurssilla käsiteltyjä asioita. Turvallisuus yrityksen tai organisaation toiminnassa ja turvallisuuden johtaminen. Turvallisuusriskien tunnistaminen ja hallintakeinot. Turvallisuustoiminnan lainsäädännöllinen viitekehys. Turvallisuusviestintä ja -tiedottaminen, turvallisuuskoulutus. Tuotannon ja toiminnan turvallisuus. Työturvallisuus. Pelastustoiminta. Ympäristöturvallisuus. Varautuminen ja jatkuvuussuunnittelu. Tietoturvallisuus. Tietotekninen turvallisuus. Tilaturvallisuus- ja turvallisuusvalvonta. Taloushallinnon ja varainhoidon turvallisuus. Henkilöturvallisuus ja ulkomaantoimintojen turvallisuus. Security Management. Turvallisuussuunnitelmat ja -projektit. Turvallisuuden kehittäminen ja johtaminen. 1

2 LUKU 1. YLEISTÄ TIETOTURVASTA 1.2 Tietoturvallisuuden osa-alueet Edellä nähtiin, että tietoturva on vain pieni osa kokonaisturvasta. Kuitenkin myös tietoturva on laaja aihe. Seuraavassa listassa on lueteltu tietoturvan eri osa-alueita. Jaottelu on melko yleinen ja se esitetään yleisissä tietoturvan oppikirjoissa. Hallinnollinen turvallisuus kattaa ne toimenpiteet, joilla määrätään organisaatiossa noudatettavat periaatteet ja toimintalinjat: turva-, toipumis- ja valmiussuunnitelmat. Henkilöstöturvallisuus kattaa henkilöstöön liittyvien luotettavuusriskien hallinnan toimenkuvien, käyttöoikeuksien määrittelyjen sekä turvallisuuskoulutuksen ja valvonnan avulla. Fyysiseen turvallisuuteen sisältyy laitteisto-, käyttö- ja varastointitilojen, arkistojen sekä laitteiden ja materiaalien fyysinen suojaus sekä tietoverkon kaapeloinnin suojaus. Tietoliikenneturvallisuus kattaa ne toimenpiteet, joilla pyritään varmistamaan tietoverkossa välitettävien tietojen luottamuksellisuus, eheys ja käytettävyys. Laitteistoturvallisuuteen kuuluu laitteiden kokoonpanoon, kunnossapitoon ja laadunvarmistukseen liittyvät turvallisuusominaisuudet. Tietoaineistoturvallisuus sisältää asiakirjojen, tietueiden ja tiedostojen tunnistamisen ja turvallisuusluokituksen sekä tietovälineiden hallinnan ja säilytyksen kaikissa eri käsittelyvaiheissa luomisesta hävittämiseen saakka. Ohjelmistoturvallisuuteen kuuluu käyttöjärjestelmien, sovellusohjelmien ja tietoliikenneohjelmistojen turvallisuusominaisuudet. Käyttöturvallisuuteen kuuluu henkilöstön turvalliset käyttöperiaatteet, käyttöympäristöön ja varsinaisen tietojenkäsittelyn turvallisuuteen vaikuttavien tapahtumien valvonta sekä jatkuvuuden turvaamiseen liittyvien menettelyjen käyttö. Seuraavassa on lueteltu erään kaupallisen tietoturvakurssin sisältöä. Mieti, mihin kohtaan ylläolevassa jaottelussa kurssin kohdat kuuluvat. Tietoturvallisuus organisaation toiminnan osana. Tietoturvallisuutta koskeva lainsäädäntö ja viranomaistoiminta. Riskien tunnistaminen ja hallintakeinot. Tietoaineistojen luokitus ja valvonta. Järjestelmien kehittäminen ja ylläpidon turvallisuus. Laitteistojen ja ohjelmistojen turvallisuus.

1.3. TIETOTURVALLISUUTEEN LIITTYVÄT LAIT JA ASETUKSET 3 Salaustekniikat ja niiden hallinta. Tietoliikenneturvallisuus. Henkilöturvallisuus. Fyysinen turvallisuus. Käyttöturvallisuus ja tietojärjestelmien palveluiden hankinta. Liiketoiminnan jatkuvuuden hallinta. Tietoturvallisuuden tarkastaminen ja kehittäminen. Tällä kurssilla keskitytään niihin tietoturvan osiin, joissa tietokoneella ja tietokoneverkoilla on keskeinen rooli. Erityisesti sivuutamme henkilöturvallisuuden ja fyysisen turvallisuuden, emmekä kiinnitä kovin paljon huomiota myöskään liiketoimintaan. Kryptografiset algoritmit sivuutetaan, mutta muutamia muita tärkeitä asioita, esimerkiksi kryptografisia käsitteitä, tarkastellaan jonkin verran. 1.3 Tietoturvallisuuteen liittyvät lait ja asetukset Tietoturvaan tavalla tai toisella liittyviä lakeja on yllättävän paljon. Seuraavassa listassa on lähes kaikki lait, jotka liittyvät tietoon, yksilön oikeuksiin ja suojaan sekä tietoturvaan: perustuslain perusoikeussäännökset (731/1999) henkilötietolaki (523/1999) laki viranomaistoiminnan julkisuudesta (621/1999) laki sähköisestä asioinnista hallinnossa (12/2003) laki sähköisistä allekirjoituksista (14/2003) laki yksityisyyden suojasta työelämässä (759/2004) valtioneuvoston ohjesääntö (262/2003) arkistolaki (831/1994) asetus valtion talousarviosta (1243/1992) henkilökorttilaki (829/1999) väestötietolain muutos (527/1999) viestintämarkkinalaki (393/2003) valtion virkamieslaki (750/1994)

4 LUKU 1. YLEISTÄ TIETOTURVASTA rikoslaki ja laki rikoslain muuttamisesta (769/1990, 578/1995, 951/1999) valmiuslaki (1080/1991) laki puolustustaloudellisesta sunnittelukunnasta (238/1960) laki huoltovarmuuden turvaamisesta (1390/1992) pakkokeinolaki (450/1987, 403/1995, 1026/1995, 22/2001) laki turvallisuusselvityksistä (177/2002) sähköisen viestunnän tietosuojalaki (516/2004) laki kansainvälisistä tietoturvavelvoitteista (588/2004) Keskeinen tietoturvallisuuteen vaikuttava lainsäädäntö löytyy rikoslaista ja pakkokeinolaista: Rikoslaki: 38 luku, 3, viestintäsalaisuuden loukkaus 38 luku, 4, törkeä viestintäsalaisuuden loukkaus 38 luku, 5-7, tietoliikenteen häirintä 38 luku, 8, tietomurto 35 luku, 1.2, vahingonteko 34 luku, 9a, vaaran aiheuttaminen tietojenkäsittelylle 28 luku, 7, luvaton käyttö 28 luku, 8, törkeä luvaton käyttö Pakkokeinolaki(1026/1995): poliisiviranomaisen tiedonsaantioikeudet 2, telekuuntelun edellytykset (viestin kuuntelu/tallettaminen salaa viestin sisällön selvittämiseksi) 3, televalvonnan edellytykset (salassa pidettävien tunnistetietojen hankkiminen viesteistä) Lisäksi on mainittava tekijänoikeussäädökset, jotka koskevat myös ohjelmistotuotteita. Tietoturvallisuuden kannalta keskeisiä viranomaisia ovat

1.4. KRYPTOGRAFISTEN TUOTTEIDEN PATENTIT JA VIENTIRAJOITUKSET 5 Eduskunta Valtioneuvoston kanslia Kauppa- ja teollisuusministeriö Valtiovarainministeriö Liikenne- ja viestintäministeriö Arkistolaitos Oikeusministeriö Huoltovarmuuskeskus Puolustusministeriö Keskusrikospoliisi Sisäasiainministeriö Tietosuojavaltuutetun toimisto Työministeriö Valtiontalouden tarkastusvirasto Ulkoministeriö Viestintävirasto 1.4 Kryptografisten tuotteiden patentit ja vientirajoitukset Tietoturvatuotteet, varsinkin erilaiset salausalgoritmit, ovat patentoituja. Suurin osa patenteista on myönnetty 1970-luvun lopulla tai 80-luvun alussa, joten osa patenteista on joko rauennut tai piakkoin raukeamassa. USA:n patentit ovat voimassa 17 vuotta myöntämispäivästä ja 20 vuotta siitä, kun ne on jätetty patenttivirastoon. Ensimmäinen tärkeä rauennut patentti on Diffien ja Hellmanin avaintenluontimenetelmä, joka vapautui 29. 4. 1997. Esimerkiksi S/MIME käytti nopeasti hyväksi tätä mahdollisuutta. Julkisen avaimen salausmenetelmä RSA vapautui 20. 9. 2000. Elliptisiin käyriin perustuvien julkisten avainten menetelmien leviämistä on estänyt tehokkaasti kanadalaisen Certicom-yhtiön lisenssipolitiikka (yli 130 patenttia). Kryptografiset tuotteet on aikaisemmin rinnastettu useimmissa länsimaissa aseisiin ja niihin on kohdistettu tiukkoja vientirajoituksia. Jossain määrin tämä herättää kummastusta, sillä vahvoja, tunnettuja salausmenetelmiä on suhteellisen helppo toteuttaa. Kansainvälinen Wassenaar-sopimus on käsitellyt kaksikäyttötuotteita, eli tuotteita, joita voidaan käyttää sekä siviili- että sotilaskäytössä. Wassenaarsopimus korvasi aikaisemman COCOM-sopimuksen (lopetettu maaliskuussa 1994). Vuoden 1998 lopulla Wassenaar-järjestelyssä 33 keskeistä teollisuusmaata, mukana

6 LUKU 1. YLEISTÄ TIETOTURVASTA myös Suomi, päättivät yhteisestä vientivalvonnasta. Korostettakoon, ettei Wassenaar-vientilista ollut vientikielto, vaan lisensointia edellyttävä valvontaluettelo. Tällä hetkellä Suomessa on voimassa kaksikäyttötuotteiden vientivalvontalainsäädäntö, joka koostuu EU:n neuvoston asetuksesta (EY) nro 1334/2000 sekä tätä täydentävästä kansallisesta lainsäädännöstä (laki kaksikäyttötuotteiden vientivalvonnasta 562/1996 ja valtioneuvoston asetus 924/2000). Kaksikäyttötuotteiden vientivalvonnasta Suomessa vastaa ulkoasiainministeriön kauppapoliittisen osaston vientivalvonta-asioiden yksikkö. Se on myös lupaviranomainen kaksikäyttötuotteiden viennissä (poislukien EU:n neuvoston asetuksen liitteen I kategorian 0 tuotteet eli ydinspesifiset tuotteet, joiden vientivalvonta tapahtuu ydinenergialain perusteella ja lupaviranomainen on KTM:n energiaosasto ja/tai Säteilyturvakeskus STUK). EUasetuksen liite I (luettelo kaksikäyttötuotteista ja -teknologiasta) löytyy UM:n nettisivuilta osoitteesta http://formin.finland.fi/palvelut/kauppa/vientivalvonta kohdasta Vientivalvonnan alaisuuden selvittäminen. Salaustuottet mukaanlukien tiedon suojaus löytyvät ryhmän 5 osasta 2. Kohdassa Tuotehakemisto on luettelo kaikista vientivalvonnan piiriin kuuluvista tuotteista. Luettelo valvonnanalaisista tuotteista, ohjelmistoista ja teknologioista löytyy myös EU:n sivuilta osoitteesta http://ue.eu.int/pesc/exportctrl/fi/index.html ja sieltä kohdasta Security-related export controls. Ulkoasiainministeriö on myös julkaissut julkaisusarjassaan kaksiosaisen käsikirjan Vientivalvonta I ja II (3/2004). EU-asetuksen liite I on yhdistelmä kansainvälisten vientivalvontajärjestelyjen seuraavista tuoteluetteloista: Wassenaarin järjestely (WA): http://www.wassenaar.org/ Australian ryhmä (AG): http://www.australiagroup.net/ Ohjusteknologian valvontajärjestely MTCR: http://www.mtcr.info/ Ydinalan valvontajärjestely (NSG): http://www.nuclearsuppliersgroup.org Yksityiskohtana mainittakoon, että symmetrisen salauksen tuotteiden vienti on sallittu kolmansiin maihin vain, jos avaimen pituus ei ylitä 56 bittiä. Tällaiset salaukset on suhteellisen helppo murtaa massiivisilla laitteistoilla. 1.5 Tietoturvaorganisaatioita ja tietoturvan ohjeistuksia sekä standardeja Erilaisia tietoturvaorganisaatioita on suuri määrä. On sekä kansallisia että kansainvälisiä tietoturvaan keskittyviä organoisaatioita. Seuraavassa on lueteltu näistä muutamia:

1.5. TIETOTURVAORGANISAATIOITA JA TIETOTURVAN OHJEISTUKSIA SEKÄ STANDARDEJA7 CERT Coordination Center: Perustettu 1988 (DARPA). Internetiin liittyviin tietoturvaongelmiin keskittyvä keskeinen koordinointielin. SANS Institute: Perustettu 1989. Instituutti järjestää tietoturvakoulutusta sekä tarjoaa GIAC-turvasertifikaattiohjelman (Global Information Assurance Certification). Computer Security Institute, CSI: Perustettu 1974. Tietoturvallisuuteen keskittyvä ammattilaisten organisaatio. National Security Agency, NSA: USA:n hallituksen alainen organisaatio, joka kehittää ja tutkii salausmenetelmiä ja harrastaa tietoteknistä tiedustelua. NSA on ollut aktiivinen myös julkisten salausmenetelmien standardoinnissa (DES, AES). Tietoturva ry: Perustettu 1997. Yli 900 jäsenen kotimainen tietoturvaorganisaatio, joka on Tietotekniikan liiton teemayhdistys. Kaikki yllä mainitut organisaatiot järjestävät koulutusta ja julkaisevat tietoturvaan liittyvää materiaalia. Erityisen mielenkiintoisia ovat esimerkiksi SANS-instituutin julkaisema luettelo Top 20 Internet Security Problems ja saman instituutin Storm Center, jossa seurataan uusimpia haavoittuvuuksia ja hyökkäyksiä. Lisäksi Suomen tilannetta seuraa CERT-FI, joka toimii viestintävirastossa ja jonka internetsivuilta voi seurata lähes reaaliajassa haavoittuvuuksia ja tietoturvauutisia. Valtiovarainministeriö julkaisee VAHTI-tietoturvaohjeistusta, jota kehitetään jatkuvasti. Ohjeiston tarkoitus kattaa kaikki alueet. VM on antanut ohjeistusta valtion organisaatioille jo yli 20 vuoden ajan ja toimintaa on tehostettu vuodesta 1999 alkaen. Ohjeista saa hyvät tietoturvakäytännöt ja tarkistuslistat. Ohjeistoa käytetään laajasti myös valtionhallinnon ulkopuolella: kunnissa, yrityksissä, järjestöissä ja kansainvälisessä yhteistoiminnassa. Tällä hetkellä VAHTI-sarjaan kuuluu yli 30 laaja-alaista tietoturvaohjetta. Seuraavista Internet-osoitteista pääsee tutustumaan näihin (valisemalla alakohdan tietoturvallisuus): www.vm.fi/vahti www.finansministeriet.fi/datasakerhet www.financeministry.fi/security Tietoturvaan liittyy myös yleisiä standardeja. Tietojärjestelmien kehitystyössä voidaan varautua tietoturvauhkiin SSE-CMM -prosessimallin avulla. Tietojärjestelmiä voidaan luokitella niiden tietoturvallisuuden vahvuuden mukaan Common Criterian avulla. Organisaation tietohallintoa voidaan mitata sen tietoturvallisuuden johtamisjärjestelmän osalta BS7799-standardin avulla.

8 LUKU 1. YLEISTÄ TIETOTURVASTA 1.6 Yleistä tietoturvaohjelmistojen laatimisesta Salausmenetelmien suunnittelu vaatii yllättävän paljon tietoja algebrasta (esim. äärellisten kuntien teoria) ja kryptoanalyysistä. Tästä syystä muiden kuin asiantuntijoiden suunnittelemat salaustekniikat ovat yleensä heikkoja. Suosituksena on mainittu usein myös periaate, että ennen kuin salausmenetelmä otetaan tuotantokäyttöön, se on julkaistu ja sitä on tutkittu 3-5 vuotta. On useita esimerkkejä salausmenetelmistä, jotka on suunniteltu salassa ja joiden toimintamekanismi on pyritty salaamaan. Kuitenkin ennen pitkään menetelmä on vuotanut julkisuuteen ja monessa tapauksessa nämä salaiset menetelmät ovat osoittautuneet heikoiksi. Valmiita salausprimitiivejä sisältävien turvaprotokollien suunnittelussa ja toteuttamisessa päästään hieman vähemmillä matemaattisilla perustiedoilla. Tällöin riittää, että osaa valita yllä olevia palveluja tarjoavat kunnolliset primitiivit. Näiden perusteella voi sitten alkaa suunnitella tietoturvaprotokollaa. Protokollan toteutuksessa on kuitenkin otettava huomioon niin monia yksityiskohtia, että luotettavien järjestelmien toteuttaminen on yleensä ryhmätyötä, jossa on mukana tietoturvan asiantuntijoita. Huonosti toteutetun turvaohjelmiston murto onnistuu usein ilman, että varsinaisia salaustekniikoita murretaan tai että salausavaimia paljastetaan ennakolta. Nykyään myös vaaditaan, että kryptografinen algoritmi (esimerkiksi yhteisen avaimen generoiva protokolla) todistetaan oikeaksi, ennenkuin se julkaistaan hyvissä tieteellisissä lehdissä tai konferensseissa. Ensimmäisiä todistustekniikoita esiteltiin artikkelissa [CaK01] ja nykyään käytetään paljon artikkelissa [LLM07] esiteltyä menetelmää. Se perustuu peliteoreettiseen lähestymistapaan. Formaalien todistusmenetelmien kehittäminen on ollut eräs tärkeimpiä edistysaskeleita viimeaikaisessa kryptografiassa, joskin menetelmät ovat herättäneet myös paljon keskustelua ([KoM07]). 1.7 Turvallisen suunnittelun periaatteet Seuraavassa esitellään artikkelin [SaS75] pohjalta kahdeksan yleistä periaatetta, joita tulisi soveltaa turvallisuuteen liittyvissä projekteissa. Katso myös [Bis03], chapter 13. Nämä yleiset periaatteet on laadittu varhain, ja siitä johtuen jotkut niistä eivät enää ole niin ajankohtaisia kuin aikaisemmin. Määritelmä 1.7.1 Pienimmän oikeuden periaatteen mukaan subjektille tulee antaa vain ne oikeudet, joita hän välttämättä tarvitsee tehtävän suorittamiseen. Esimerkki. Postipalvelin ottaa vastaan postia internetistä ja kopioi viestit hakemistoon, josta paikallinen palvelin jakaa viestit eteenpäin. Postipalvelimella täytyy olla oikeudet, jotta se voi ottaa viestejä vastaan portista, luoda tiedostoja hakemistoon ja muuttaa niitä (uudelleen kirjoittaa tai muuttaa osoitetta, lisätä tarpeelliset

1.7. TURVALLISEN SUUNNITTELUN PERIAATTEET 9 rivit). Sen pitäisi luopua kaikista oikeuksista tiedostoon sen jälkeen, kun tiedostot on kirjoitettu hakemistoon, koska se ei toiminnassaan tarvitse niitä enää. Määritelmä 1.7.2 Oletuskiellon periaate sanoo että subjektilta pitää kieltää pääsy objektiin, ellei subjektille ole eksplisiittisesti sallittu pääsyä siihen. Erityisesti objektiin pääsystä ei ole mitään oletusarvoja tai oletusoikeuksia. Jos subjekti ei onnistu viemään objektiin kohdistuvaa operaatiota loppuun, sen pitäisi purkaa tehdyt osaoperaatiot ennen lopettamistaan. Näin systeemi pysyy turvallisena vaikka ohjelma keskeytyisi. Määritelmä 1.7.3 Taloudellisen mekanismin periaate sanoo, että turvamekanismin tulisi olla niin yksinkertainen kuin mahdollista. Jos määrittelyt ja toteutukset ovat yksinkertaisia, virheitä on todennäköisesti vähemmän. Monimutkaiset mekanismit usein tekevät oletuksia systeemistä ja ympäristöstä. Jos nämä oletukset ovat virheellisiä, ilmaantuu turvaongelmia. Esimerkki. Ident-protokolla lähettää TCP-yhteyttä käyttävään prosessiin liittyvän käyttäjänimen kaukaiselle koneelle. Koneella A oleva mekanismi, joka tekee pääsynvalvontapäätöksiä ident-protokollan avulla, olettaa nimen lähettävän koneen olevan luotettava. Jos kone B päättää hyökätä A:ta vastaan, se voi lähettää minkä tahansa nimen A:lle ident-protokollan vastaussanomassa. A:n oletus vastaavan koneen luotettavuudesta ei pidäkään paikkaansa. Rajapinnat toisiin moduuleihin vaativat huomiota, koska moduulit tekevät usein oletuksia syöte- tai tulostusparametreista tai systeemistä. Kommunikointi ulkoisten olioiden, kuten ohjelmien, systeemien ja ihmisten kanssa lisää ongelmia. Määritelmä 1.7.4 Täydellisen välityksen periaate vaatii, että kaikkien pääsyjen kohdalla tulee tarkistaa, että pääsy on todella sallittu. Aina kun subjekti yrittää lukea objektin, käyttöjärjestelmän tulisi toimia välittäjänä. Ensiksikin KJ päättää, onko subjektilla oikeus lukea objekti. Jos on, KJ tarjoaa resurssit lukemiseen. Jos subjekti yrittää lukea samaa objektia uudestaan, taas tulisi tehdä tarkistus. Useimmat systeemit eivät toista tarkistuksia. Ne tallentavat ensimmäisen tarkistuksen tuloksen ja nojautuvat tähän uuden pyynnön yhteydessä. Esimerkki. Kun UNIX-prosessi yrittää lukea tiedostoa, KJ tarkistaa, voiko prosessi tehdä niin. Jos voi, prosessi saa tiedostokuvaajan (file descriptor, kts kohta 2), johon pääsyoikeus on kirjattu. Aina kun prosessi haluaa lukea tiedoston, se esittää kuvaajan ytimelle, jolloin ydin sallii pääsyn.

10 LUKU 1. YLEISTÄ TIETOTURVASTA Jos tiedoston omistaja kieltää prosessilta pääsyn tiedostoon sen jälkeen, kun tiedostokuvaaja on luotu, ydin kuitenkin sallii pääsyn kuvaajan perusteella. Tämä on ristiriidassa täydellisen välityksen periaatteen kanssa. Esimerkki. Nimipalvelu (DNS) tallettaa (cache) nimi-ip-osoite -tiedot. Jos hyökkääjä onnistuu muuttamaan talletettuja tietoja, reititystiedot tulevat virheelliseksi.tämä tarjoaa hyökkäysmahdollisuuksia, kts tarkemmin [Bel95] ja [SCH93]. Määritelmä 1.7.5 Avoimen suunnittelun periaate sanoo, että mekanismin turvallisuus ei saisi riippua salaisesta suunnittelusta tai toteutuksesta. Esimerkki. Content Scrambling System (CSS) on kryptografinen mekanismi, joka suojaa DVD-levyjä kopioimiselta. DVD-levyllä on todennusavain, levyavain ja otsikkoavain. Otsikkoavain salattu levyavaimen avulla. DVD:n eräs lohko sisältää useita kopioita levyavaimesta, joista jokainen on salattu eri soittimen avaimella. Lohkoon on viety myös avaimen tiivistearvo (hash). Kun DVD-levy viedään soittimeen, algoritmi lukee todennusavaimen. Sen jälkeen se avaa levyavaimet käyttäen DVD-soittimen avainta. Kun purun tulos vastaa tiivistearvoa (tiivisteen laskemisen jälkeen), oikea levyavain on löydetty. Sitä käytetään lopuksi otsikkoavaimen purkamiseen, jonka avulla elokuvan salaus voidaan purkaa. Vuonna 1999 ryhmä norjalaisia sai käsiinsä DVD-levyjä toistavan ohjelman, jossa oli salaamaton avain. He myös johtivat ohjelmasta algoritmin, joka oli sama kuin CSS. Tämä mahdollisti sen, että he saattoivat purkaa minkä tahansa DVD-elokuvan. Pian internetissä alkoi levitä ohjelma, joka teki tämän kaiken nopeasti. Tämä taas aiheutti sen, että DVD Copyright Control Association vaati oikeusteitse, ettei koodia saanut levittää julkisesti. Korostaakseen algoritmin salaamisen tärkeyttä he liittivät CSS:n lähdekoodin kanteeseen. Huomattuaan virheensä asianajajat vaativat kanteen salaamista, mutta sitä oli jo levitetty useissa internet-palvelimissa, mukaanlukien yksi, josta kannetta oli ladattu yli 21 000 kertaa. Koko CSS on osoittautunut melko heikoksi ja sen salaus voidaan purkaa raa alla voimalla. Osasyynä tähän on avaimen pituus, vain 40 bittiä. Se taas johtui USAn silloisista vientirajoituksista. Määritelmä 1.7.6 Oikeuksien erottamisen periaate sanoo, että systeemin ei pitäisi antaa oikeuksia yhden ehdon perusteella. Esimerkiksi Berkeleyn UNIX:ssa käyttäjät eivät voi vaihtaa käyttäjätiliään juureksi, ellei kaksi ehtoa ole voimassa. Ensimmäinen ehto on, että käyttäjä tuntee juuren salasanan. Toinen ehto on, että käyttäjä kuuluu wheel-ryhmään (GID 0). Molempien ehtojen tulee olla voimassa. Määritelmä 1.7.7 Pienimmän yhteisen mekanismin periaate sanoo, ettei resursseihin pääsyä valvovia mekanismeja pidä jakaa muiden kanssa.

1.7. TURVALLISEN SUUNNITTELUN PERIAATTEET 11 Resurssien jakamisesta seuraa, että informaatiota voidaan välittää. Sääntö ei vaikuta yhtä tärkeältä kuin muut säännöt. Määritelmä 1.7.8 Psykologisen hyväksyttävyyden periaate sanoo, että turvamekanismin ei tule vaikeuttaa resurssien käyttöä verrattuna tilanteeseen, jossa mekanismia ei käytetä. Käytännössä turvamekanismit lisäävät jonkin verran vaivaa, mutta lisäyksen tulisi olla kohtuullista.

12 LUKU 1. YLEISTÄ TIETOTURVASTA

Luku 2 Pääsynvalvonta 2.1 Johdanto Pääsynvalvonta on keskeinen toteutettaessa tietoturvaa ja yksilösuojaa tietokoneympäristöissä. Pääsynvalvonnassa on ensiksi määriteltävä, ketkä saavat käyttöoikeuden mihinkin järjestelmän osaan. Eli ensiksi on määriteltävä pääsynvalvonnan politiikka. Sen jälkeen on otettava käyttöön mekanismi, turvamekanismi, jonka avulla toteutetaan valittu politiikka. Tämä politiikan ja sen toteutusmekanismin erottelu selventää määrittelyjä. On esimerkiksi mahdollista käyttää yleisiä politiikkakieliä määrittelemään oikeuksia, joita sitten valvotaan käyttöjärjestelmän ja sovellusohjelmistojen suomien mekanismien avulla. Tässä luvussa tarkastellaan pääsynvalvontatyyppejä ja pääsynvalvonnan toteutusta salasanojen avulla. Lisäksi tarkastellaan, miten käyttöjärjestelmän prosessit käsittelevät tiedostoja mukaanlukien salasanatiedostot. Turvallisessa ohjelmoinnissa näihinkin seikkoihin on kiinnitettävä huomiota. 2.2 Pääsynvalvontatyypit Pääsynvalvonnan tyypit voidaan jaotella kolmeen tai neljään tyyppiin. Määritelmä 2.2.1 Jos yksittäinen käyttäjä voi asettaa objektin käyttöoikeudet, kysymyksessä on yksilöpohjainen pääsynvalvonta (engl. discretionary access control, identity-based access control). Yksilöpohjaisessa pääsynvalvonnassa pääsyoikeudet perustuvat subjektin ja objektin identiteettiin. Identiteetti on tässä avainsana: objektin omistaja asettaa pääsyrajoitukset määrittelemällä, kuka saa pääsyn objektiin. Määrittely perustuu subjektien identiteettiin. Määritelmä 2.2.2 Sääntöpohjainen pääsynvalvonta (engl. mandatory access control, rule-based access control) on sellainen, että objektit on luokitelty hierarkkisil- 13

14 LUKU 2. PÄÄSYNVALVONTA le tasoille objektin turvavaatimusten mukaisesti (esim. top secret, secret, confidential), subjekteille on asetettu turvatasot ja subjektilla on pääsy objektiin, jos subjektiobjekti -pari täyttää ennalta määritellyt turvallisuusehdot hierarkkisten ja turvatasojen perusteella. Siten systeemi valvoo, kuka pääsee käsiksi objekteihin, eikä yksittäinen käyttäjä voi tätä muuttaa. Esimerkiksi käyttöjärjestelmä pakottaa noudattamaan sääntöpohjaista pääsynvalvontaa, ainakin tietyissä tilanteissa. Ei subjekti eikä objektin omistaja voi määritellä, kuka saa pääsyoikeuden. Sääntöpohjainen pääsynvalvonta on tyypillistä myös sotilaallisissa ympäristöissä. Määritelmä 2.2.3 Luontipohjainen pääsynvalvonta (engl. originator controlled, OR- GON) perustuu objektin luojan määrityksiin. Tässä politiikassa objektin, esimerkiksi tiedoston, luoja päättää, kenellä on pääsyoikeus tiedostoon. Tiedoston omistaja ei voi tätä muuttaa. Lisäksi voidaan määritellä roolipohjainen pääsynvalvonta. Oikeuksia ei myönnetä yksittäiselle subjektille, vaan roolille, jonka eri subjektit voivat ottaa sallittujen sääntöjen puitteissa. Roolin kohdalla voidaan puolestaan noudattaa edellä mainittuja kolmea pääsynvalvontatyyppiä. Pääsynvalvontamekanismeja on useita. Käyttöjärjestelmä huolehtii osittain pääsynvalvonnasta, ainakin tiedostojen suhteen. Salasanoilla on myös tärkeä asema pääsynvalvonnan toteutuksessa. Verkkoympäristössä pääsynvalvontaan tarvitaan muitakin menetelmiä, esimerkiksi varmenteita ja digitaalisia allekirjoituksia. 2.3 Salasanojen käsittely 2.3.1 Yleistä salasanoista Usein pääsynvalvonta perustuu salasanoihin. Salasanat näyttävät tarjoavan hyvän suojan ulkopuolisia vastaan, joskin niiden huolimaton valinta ja käyttö saattavat aiheuttaa riskejä. Lisäksi ohjelmistoissa on otettava huomioon muutamia yksinkertaisia asioita. Ohjelmisto ei saa esimerkiksi kysyä käyttäjätunnusta ja ilmoittaa heti, että se on väärin. Tällöin tunkeutuja saisi tietoonsa, että tunnus ei ole oikea. Sen sijaan parempi on kysyä sekä käyttäjätunnusta että salasanaa ja ilmoittaa vasta sitten, jos jompi kumpi on virheellinen. Tällöin tunkeutuja ei saa tietoonsa, kumpi on virheellinen, tunnus vai salasana. Salasanojen lisäksi voidaan käyttää muitakin tekijöitä käyttäjän identifioimiseen. Voidaan esimerkiksi ottaa huomioon aika, vaikka virka-aika, jolloin sisäänkirjoittautuminen on mahdollista. Virka-ajan ulkopuolella pääsy kielletään.

2.3. SALASANOJEN KÄSITTELY 15 2.3.2 Hyökkäykset salasanoja vastaan Seuraavassa on tyypillisimmät hyökkäykset salasanoja vastaan: Kokeile kaikki mahdolliset salasanat. Kokeile monia todennäköisiä salasanoja. Kokeile tietylle käyttäjälle tyypillisiä salasanoja. Etsi salasanojen listaa systeemistä. Kysy käyttäjältä. Jos salasanat muodostuvat kirjaimista A-Z ja niiden pituus voi vaihdella yhdestä kahdeksaan, niin kaiken kaikkiaan salasanoja on 26 9 1 5 10 12. Jos tietokone käsittelee yhden salasana-arvauksen millisekunnissa, kestäisi 150 vuotta käydä kaikki salasanat läpi. Jos sen sijaan aikaa kuluisi vain yksi mikrosekunti, aika tippuisi kahteen kuukauteen. Tämä ei enää olisi kohtuuttoman paljon. Siksi käyttäjän tunnistusta yleensä hidastetaankin ohjelmallisesti niin, ettei käyttäjä hidastusta havaitse, mutta edellä kuvattu kaikkien mahdollisuuksien läpikäynti tulee mahdottomaksi. Voidaan myös soveltaa PIN-koodeista tuttua menetelmää, jolloin useamman väärän salasanan jälkeen käyttäjän pitää pitää tauko. (PIN-koodien yhteydessähän numeroyhdistelmää voi kokeilla vain kolme kertaa, jonka jälkeen on otettava yhteyttä järjestelmän hallintoon.) Ihmiset valitsevat salasanoja siten, että niitä on kohtuullisen helppo muistaa. Tämä auttaa hyökkääjää. Esimerkiksi tavallisimpia englannin sanoja on 80 000, mikä on tietokoneelle todella vähän. Samoin jos salasana muistuttaa kielen sanoja, hyökkääjän tehtävä helpottuu. Esimerkiksi suomen kielessä ei ole monia konsonantteja peräkkäin. Lisäksi ihmiset ovat taipuvaisia valitsemaan sanoja tai sanontoja, jotka merkitsevät heille jotain henkilökohtaisesti: lasten nimiä, tuttavien nimiä, julkkisten ja urheilijoiden nimiä jne. Yksinkertaiset sijoitukset, joilla sanan merkki korvataan toisella, eivät myöskään paranna turvallisuutta radikaalisti. Seuraavassa listassa on luettelo, mitä hyökkääjä voi yrittää salasanojen arvaamiseksi. Menetelmä on kohtuullisen helppoa toteuttaa ohjelmallisesti. ei salasanaa sama kuin käyttäjätunnus käyttäjän nimi tai siitä johdettu tavallinen sana plus tavallisia nimiä tai muotoja lyhyt sanakirja täydellinen kielen sanasto tavallinen vieraan kielen sanakirja

16 LUKU 2. PÄÄSYNVALVONTA lyhyt sanakirja, jonka sanoja on muokattu vaihtelemalla isoja ja pieniä kirjaimia ja jonka sanoihin on kohdistettu sijoituksia (esim. O vastaa 0:ta) sama kuin edellä, mutta vieraille kielille täydellinen läpikäynti pienillä kirjaimilla täydellinen läpikäynti täydellä merkistöllä 2.3.3 Salasanatiedosto Kun käyttäjän oikeuksia tarkistetaan, tietokone vertaa annettua tunnusta ja salasanaa talletettuihin vastaaviin tietoihin. Siten tietokoneessa täytyy olla talletettuna tunnus-salasana -lista. Joissakin systeemeissä lista on tiedosto, joka sisältää taulukon. On selvää, että tiedosto täytyy suojata hyvin. Suojaus voidaan toteuttaa antamalla tiedoston käyttöoikeus vain käyttöjärjestelmälle. Toisaalta KJ:n kaikkien moduulien ei tarvitse päästä salasanatiedoston tietoihin käsiksi. Pahaksi onneksi on käyttöjärjestelmiä, joissa KJ:tä ei ole mitenkään jaettu osiin turvaominaisuuksien perusteella, vaan KJ:n moduulit pääsevät käsiksi salasanatiedostoon. Jos siis hyökkääjä löytää jonkin heikon kohdan käyttöjärjestelmästä, hän pääsee käsiksi kaikkiin tietoihin. Sen tähden on parempi, jos salasanoihin pääsevät käsiksi vain ne moduulit, jotka todella tarvitsevat näitä tietoja. Jotta salasanatiedosto ei paljastuisi esimerkiksi varmuuskopioista tai muistinvedoksesta (core dump), salasanatiedosto yleensä salakirjoitetaan. Vertailtaessa annettua tunnusta ja salasanaa ei ole järkevää purkaa salausta miltään osin. Sen sijaan edetään niin, että annetut tiedot salataan ja vasta sitten suoritetaan vertailu salasanatiedostoon. Nyt ei ole yhtä suurta pakkoa pitää salasanatiedostoa muiden käyttäjien saavuttamattomissa kuin jos se olisi salaamattomassa muodossa, mutta tietenkin se kannattaa pitää hyvin suojattuna. On aina mahdollista, että kaksi käyttäjää valitsee saman salasanan. Jos esimerkiksi Aapo ja Bertil molemmat valitsevat salasanan aprilli ja jos Bertil pääsee katselemaan salatiedostoa, hän huomaa, että Aapolla on sama salasana. Unix ratkaisee tämän ongelman laajentamalla salasanaa ns. suolalla. Suola on 12-bittinen luku, joka muodostetaan systeemin ajasta ja prosessin tunnuksesta. Siten suola on todennäköisesti yksikäsitteinen jokaisella käyttäjällä. Suola liitetään käyttäjän salasanaan, kun salasana valitaan. Jos Bertilin salasana on pw, niin salasanatiedostoon viedään E(pw +salt B ), eli alkuperäinen salasana lisättynä suolalla ja lopuksi kaikki salataan. Lisäksi suola talletetaan Bertilin tunnuksen ja salatun salasanan yhteyteen. 2.3.4 Salasanan valinta Hyvän salauksen purkaminen on työlästä tai käytännössä jopa mahdotonta. Hyökkääjä voi selvittää salasanan myös suoraan. Usein salasana kirjoitetaan muistilapulle, joka jätetään koneen lähelle. Ryhmässä salasana usein myös jaetaan jäsenten

2.4. KÄYTTÖJÄRJESTELMIEN RAKENTEITA, JOILLA ON MERKITYSTÄ TURVALLISUUDEN YHTEYDES kesken, mikä saattaa olla riskitekijä. On myös mahdollista, että hyökkääjä tekeytyy esimieheksi tai atk-osaston työntekijäksi ja kysyy salasanaa johonkin tekosyyhyn vedoten. Yllä kuvattujen selvittämisyritysten vaikeuttamiseksi salasanojen valinnassa suositellaan seuraavien seikkojen huomioimista: Käytä muitakin merkkejä kuin kirjaimia A-Ö. Valitse pitkiä salasanoja. Kombinatorinen räjähdys alkaa, kun pituus ylittää 5-6 merkin pituuden. Vältä todellisia nimiä ja sanoja. Valitse epätodennäköinen salasana. Kehitä jonkinlainen muistisääntö salasanan muistamiseksi. Vaihda salasana säännöllisesti. Tällä tavoin estetään kauan kestävät systemaattiset salasanan murtoyritykset. Älä kirjoita salasanaa muistiin. Tämä sääntö alkaa tosin menettää pätevyyttään, sillä erilaisten tunnusten määrä alkaa olla jo niin suuri, että jonkinlaista kirjanpitoa tarvitaan. Pidä kuitenkin salasanalistat hyvässä tallessa. Älä kerro salasanaa kenellekään toiselle. 2.4 Käyttöjärjestelmien rakenteita, joilla on merkitystä turvallisuuden yhteydessä 2.4.1 Tiedostot Paikalliset systeemit identifioivat objekteja antamalla niille nimen. Nimi voi olla tarkoitettu ihmisen, prosessin tai käyttöjärjestelmän ytimen käyttöön. Jokaisella nimellä voi olla eri semantiikka. UNIX tarjoaa neljää erilaista tiedostonimityyppiä. Inode identifioi tiedoston yksikäsitteisesti. Se sisältää informaatiota tiedostosta kuten pääsynvalvonta-asetukset ja omistajan sekä määrittelee muistilohkot, josta tiedosto löytyy. Prosessit lukevat tiedostoja tiedostokuvaajien (file descriptors) avulla. Kuvaajat sisältävät samaa tietoa kuin inode, mutta sellaisessa muodossa, että prosessit voivat helposti hakea sen, kirjoittaa siihen jne. Kun kuvaaja on kerran luotu, sitä ei voi enää sitoa toiseen tiedostoon. Prosessit (ja käyttäjät) voivat myös käyttää tiedostonimiä, jotka identifioivat tiedoston kuvaamalla sen aseman tiedostohierarkiassa. UNIXin tiedostonimet voivat olla absoluuttisia polkunimiä, jotka kuvaavat tiedoston aseman juurihakemiston suhteen. Ne voivat olla myös suhteellisia polkunimiä, jotka kuvaavat aseman työhakemiston suhteen. Nimien semantiikka eroaa oleellisesti. Kun prosessi tai käyttäjä käsittelee tiedostoa, käyttöjärjestelmän ydin kuvaa tiedostonimen inodeksi käyttäen iteratiivista

18 LUKU 2. PÄÄSYNVALVONTA menetelmää. Se avaa ensin ensimmäisen hakemiston inoden hakupolulla ja etsii sieltä seuraavan alihakemiston inoden. Tämä jatkuu, kunnes halutun tiedoston inode on löytynyt. Kaksi viittausta samaan tiedostoon voivatkin viitata eri tiedostoihin, jos ensimmäisen viittauksen jälkeen tiedosto on poistettu ja uusi, saman niminen tiedosto on luotu tilalle ennen toista viittausta. Tämä voi luoda ongelmia ohjelmien yhteydessä. Joka tapauksessa kun tietty tiedostokuvaaja on luotu, se viittaa erityiseen objektiin. Riippumatta siitä, miten tiedostoa manipuloidaan, kuvaajaan liittyvä inode pysyy järjestelmässä siihen asti, kunnes kuvaaja on suljettu. 2.4.2 Symboliset linkit Symbolinen linkki on erityinen tiedostotyyppi, jossa tiedosto sisältää viitteen toiseen tiedostoon tai hakemistoon absoluuttisen tai suhteellisen polkunimen muodossa. Symboliset linkit esiintyivät ensimmäisen kerran Berkeleyn Unixin versiossa 4.2 BSD. Nykyään niitä tukevat POSIX-standardi, useimmat Unixin kaltaiset KJ:t, Windows Vista ja Windows 7. Symbolinen linkki sisältää merkkijonon, jonka KJ tulkitsee poluksi toiseen tiedostoon tai hakemistoon. Jos symbolinen linkki tuhotaan, kohde jää ennalleen. Jos sen sijaan kohde siirretään (move), nimetään uudelleen tai tuhotaan, symbolinen linkki jää ennalleen, mutta viittaa nyt siis tyhjään. Esimerkki. POSIX:ssa ja Unixin tyyppisissä käyttöjärjestelmissä symbolinen linkki luodaan komennolla ln -s target link_name Symbolisen linkin luomisen jälkeen se toimii kohteen aliaksena eli vaihtoehtoisena nimenä. Komennot, jotka kirjoittavat tai lukevat tiedostoja, kohdistavat toimenpiteensä kohteeseen, kun niille annetaan parametriksi symbolinen linkki. Sen sijaan rm-komento tuhoaa symbolisen linkin, ei kohdetta. Unixissa suoraa viittausta tiedostoon kutsutaan kovaksi linkiksi (hard link). Kuvassa 2.1 on kaksi nimeä, A ja B, jotka viittavat samaan tiedostoon. Nämä viittaukset ovat kovia. Symbolisen linkin rakenteen näyttää sen sijaan kuva 2.2. Kovia linkkejä luodaan Unixissa ln-komennolla: $ ln A B Voidaan tarksitaa, että molemmat viittaavat samaan i-solmuun: $ ls -i A B 1321 A 1321 B

2.4. KÄYTTÖJÄRJESTELMIEN RAKENTEITA, JOILLA ON MERKITYSTÄ TURVALLISUUDEN YHTEYDES B A tiedosto i solmutaulu Kuva 2.1: Kova linkki B A tiedosto i solmutaulu Kuva 2.2: Symbolinen linkki Symbolisten linkkien tapauksessa i-solmujen tulisi olla eri: $ ln -s A B $ ln -i A B 1321 A 1467 B 2.4.3 Käyttäjien tunnukset Tarkastellaan UNIX-järjestelmää. Käyttäjän identiteettiä esittää kokonaisluku, joka on 0:n ja jonkin suuren luvun (esim. 65 535) välissä. Tätä lukua kutsutaan UID:ksi (user identification number). Lisäksi käyttäjällä voi olla login-nimi. Jokaista loginnimeä vastaa tasan yksi UID, mutta yhdellä UID:lla voi olla monta login-nimeä. Kun käyttöjärjestelmän ydin käsittelee käyttäjän identiteettiä, se käyttää UID:ta. Kun taas käyttäjä kirjautuu sisään koneeseen, hän käyttää login-nimeään. Yhdellä käyttäjällä voi olla monta eri identitettiä. Tyypillisesti identiteetti vastaa jotakin funktiota. UNIX-versiot käyttävät usean tyyppisiä käyttäjän identiteettejä. Koska käyttäjät käynnistävät prosesseja, nämä eri identiteetit liittyvät prosesseihin. Todellinen UID (real UID) on käyttäjän alkuperäinen identiteetti, kun hän kirjautuu koneelle. Efektiivinen UID (effective UID) on identiteetti, jota käytetään pääsynvalvonnassa. Esimerkiksi jos vain UID 22 voi lukea tiettyä tiedostoa ja prosessin todellinen UID on

20 LUKU 2. PÄÄSYNVALVONTA 22 ja efektiivinen UID 35, niin prosessi ei voi lukea tiedostoa. Jos taas prosessin todellinen UID olisi 35, mutta efektiivinen 22, prosessi voi lukea tiedostoa. Systeemiohjelmat setuid luovat prosesseja, joiden efektiivinen UID on sama kuin ohjelman omistajan eikä sama kuin ohjelman suorittajan. Tällöin prosessin pääsyoikeudet ovat samat kuin ohjelman omistajan eikä ohjelman suorittajan. Monet UNIX-versiot tarjoavat myös tallennetun UID:n (saved UID). Aina kun efektiivinen UID vaihtuu, tallennetun UID:n arvoksi viedään ennen vaihtoa voimassa ollut efektiivinen UID. Käyttäjä voi käyttää kaikkia kolmea UID:ta. Tämä sallii, että käyttäjälle annetaan juurioikeudet joksikin lyhyeksi ajaksi, jonka jälkeen niistä luovutaan, mutta joihin voidaan palata myöhemmin (tallennetun UID:n avulla). Traditionaalisesti todellista UID:ta käytettiin prosessin alkuperäisen UID:n jäljittämiseen. Kuitenkin juurioikeuksien haltija voi muuttaa sitä. Jotta turvattaisiin alkuperäisen todellisen UID:n seuranta, monet UNIX-järjestelmät tarjoavat vielä neljättä UID-versiota, audit- tai login-uid. Tämä UID annetaan kirjautumisen yhteydessä, eikä sitä voi vaihtaa. (Kuitenkin jotkut systeemit sallivat juuren muuttaa audit-uid:ta!) Esimerkki. Salasanatiedosto kuuluu juurioikeuksien haltijalle, joten vain hän voi periaatteessa muokata tiedostoa. Kuitenkin tavallinen käyttäjä voi muuttaa salasanaansa. Hän siis muokkaa salasanatiedostoa. Käyttäjä käynnistää prosessin, joka muuttaa salasanatiedostoa. Jos salasanatiedoston setuid-bitti on 1, niin tiedoston omistaja (siis juuri) tulee tuon prosessin efektiiviseksi omistajaksi. Eli salasanatiedostoa muuttavan prosessin todellinen UID on käyttäjän, mutta efektiivinen UID on juurioikeuksien haltijan. Täten käyttäjä onnistuu muuttamaan salasanatiedostoa. Yleensä on tietenkin riskialtista asettaa setuid-bitti juurioikeuksien haltijan mukaan, mutta tässä tapauksessa se on välttämätöntä. Salasanatiedostoa pitää sen vuoksi suojella erityisen hyvin. UNIX-käyttäjät kuuluvat ryhmiin (group). Siten jokaisella prosessilla on kaksi identiteettiä, käyttäjän identiteetti ja ryhmän identiteetti. Uudemmissa UNIXjärjestelmissä käyttäjä voi kuulua useisiin ryhmiin samalla kertaa. Kirjautuessaan sisään koneelle käyttäjä asetetaan hänelle kuuluviin ryhmiin. 2.4.4 Pääsyoikeudet tiedostoihin UNIX:ssa on kolme tiedosto-operaatiota: lukeminen (read, r), kirjoittaminen (write, w) ja ajaminen (execution, x). Näistä lukeminen ja kirjoittaminen ovat selviä, mutta ajaminen on monimutkaisempi operaatio. Tavallisen tiedoston yhteydessä ajaminen tarkoittaa, että joko tiedosto ladataan keskusmuistiin ja sen sisältämät käskyt suoritetaan tai tiedoston sisältämät komentotulkin käskyt luetaan ja suoritetaan. Hakemistotiedoston kohdalla ajaminen tarkoittaa, että hakemisto voidaan käydä läpi tarvittavaa tiedostoa etsittäessä. Tiedoston oikeudet saadaan selville ls-komennolla. Komento ls -l tiedosto

2.4. KÄYTTÖJÄRJESTELMIEN RAKENTEITA, JOILLA ON MERKITYSTÄ TURVALLISUUDEN YHTEYDES näyttää tiedoston ominaisuudet. Ensiksi näkyvät oikeudet muodossa rw rw r (1) Ensimmäinen viiva ilmaisee tiedoston tyypin: - tavallinen tiedosto d hakemisto c merkkitiedosto (character special file) b lohkotiedosto (block special file) l symbolinen linkki p fifo-tiedosto Esimerkin (1) tapauksessa on siis kysymyksessä tavallinen tiedosto. Ensimmäiset kolme koodia tämän jälkeen ilmaisevat omistajan oikeudet. Esimerkissä omistaja voi lukea ja kirjoittaa tiedostoon, muttei ajaa tiedostoa. Toiset kolme ilmaisevat ryhmän oikeudet, jotka esimerkissä ovat samat kuin omistajan. Viimeiset kolme merkkiä ilmaisevat muiden oikeudet, jotka tässä tapauksessa rajoittuvat lukemiseen. Oikeuksien jälkeen komento ls -l listaa linkkien lukumäärän, käyttäjän, ryhmän, tiedoston koon, muutosten pvm:n ja tiedostonimen. Jos halutaan nähdä hakemiston oikeudet, on käytettävä komentoa ls -ld. Tiedostojen oikeuksia voidaan muuttaa chmod-komennolla. Vain omistaja tai juuri voi käyttää tätä komentoa. Komennon yhteydessä tarvitaan seuraavia parametreja: Kuka u User g Group o Other a All r w x l s t u g o Oikeudet Read Write Execute Set locking privilege Set user or group ID mode Set save text mode User s current permissions Group s current permissions Others current permission Operaattori - poista oikeus + lisää oikeus = aseta oikeus

22 LUKU 2. PÄÄSYNVALVONTA Esimerkkejä chmod go-rw: Ryhmältä ja muilta otetaan popis tiedoston luku- ja kirjoitusoikeudet. chmod a=rw: Kaikki voivat lukea ja kirjoittaa tiedostoon. chmod g=u: Tiedoston käyttäjän oikeudet siirtyvät myös ryhmälle. g+x: Ryhmälle tulee oikeus ajaa tiedosto. Lisäksi on mahdollista käyttää rekursiivista optiota -R. Tällöin komento koskee tiedostoa ja sen alihakemistoja ja -tiedostoja. Tiedostojen salaus UNIX:ssa on helppoa salata tiedoston sisältö: crypt xyzzy325 <chaptn.tex> chaptn.cry Komento salaa tiedoston chaptn.tex ja salattu sisältö kirjoitetaan tiedostoon chaptn.cry. Salausavain on käyttäjän valitsema merkkijono xyzzy325. Se on oleellista muistaa, jos alkuperäinen tiedosto tuhotaan! Aina ei ole turvallista kirjoittaa avainta näytölle. Komentoa voidaankin käyttää ilman, että samaan aikaan kirjoitetaan avainta. Tällöin järjestelmä kysyy avainta siten, ettei sen kirjoittaminen näytölle näy. Huomattakoon myös, ettei esimerkin avain ole riittävän pitkä kaikkiin tarkoituksiin. Lisää avainten pituuksista on seuraavissa luvuissa. 2.5 Haittaohjelmat ja niiden torjunta 2.5.1 Haittaohjelmat Virukset Tietokonevirus on ohjelmakoodia, joka pystyy kopioimaan ja levittämään itseään uusiin kohteisiin. Tietokonevirus tarvitsee leviäkseen ja aktivoituakseen aputiedoston samalla tavoin kuin biologinen virus tarvitsee avukseen isäntäsolun. Virukset voidaan jakaa niiden tartuttamien kohteiden perusteella neljään päätyyppiin ([Vah04]): tiedostovirukset, makrovirukset, komentojonovirukset ja

2.5. HAITTAOHJELMAT JA NIIDEN TORJUNTA 23 käynnistyslohkovirukset. Virus voi kuulua samalla useampaan kuin yhteen edellä mainituista tyypeistä. Tiedostovirukset tarttuvat suorituskelpoisiin ohjelmatiedostoihin, joista tyypillisimpiä ovat Windows-käyttöjärjestelmässä.com,.pdf ja.scr-päätteiset tiedostot. Leviäminen tapahtuu aina kun saastunut ohjelma suoritetaan koneen muistissa. Tiedostovirukset voivat levitä kaikilla tiedonsiirtotavoilla, joilla siirretään ohjelmatiedostoja. Makrovirukset on ohjelmoitu toimisto-ohjelmissa käytettävien makrokielten avulla. Makrovirusten leviäminen tapahtuu dokumenttien mukana ja ne saatetaan suorittaa automaattisesti kun dokumentti avataan toimisto-ohjelmassa. Makrovirukset voivat levitä käyttöjärjestelmästä riippumatta, mikäli käytössä on sama toimistoohjelma. Toimisto-ohjelmiin on lisätty sisäänrakennettuja ominaisuuksia, joilla makrojen tahatonta suorittamista pyritään estämään. Komentojonovirukset on tehty käyttäen hyväksi kohdejärjestelmän tarjoamia komentikieliä. Esimerkiksi Windowsin Visual Basic Scripting on ollut suosittu tähän tarkoitukseen.komentojonoja pystytään luomaan tavallisella tekstieditorilla. Käynnistyslohkovirukset tarttuvat tietovälineen, kuten kiintolevyn tai USB-muistin käynnistyslohkoon, josta tietokone etsii käynnistykseen tarvittavia tietoja. Virus voi tarttua ulkoiselta laitteelta kiintolevyn käynnistyslohkolle ja tämän jälkeen saastuttaa tietokoneessa käytettvät muut suojaamattomat muistilaitteet. Käynnistyslohkovirukset leviävät hitaasti, koska ne siirtyvät käytännössä vain muistilaitteelta toiselle. Ne ovatkin nykyään harvinaisia. Viruksia voidaan luokitella muun muiden kriteerioiden mukaan ([Bis03], luku 22.3): TSR-virus (terminate and stay resident) on sellainen, joka pysyy aktiivisena muistissa sovelluksen päättymisen jälkeen. Häivevirus (stealth virus) on virus, joka kätkee saastuneen tiedoston. Nämä virukset sieppaavat tiedostoon liittyvät käyttöjärjestelmäkutsut. Jos kutsun tavoitteena on saada tiedostoattribuutit, tiedoston alkuperäiset attribuutit annetaan. Jos kutsu on tiedoston lukuoperaatio, tiedosto puhdistetaan ensin ja vasta sitten luovutetaan luettavaksi. Mutta jos kutsu on tiedoston suoritus, tiedosto annetaan sellaisenaan. Salattu virus on sellainen, jonka koodista suurin osa on salakirjoitettu. Vain purkamiseen tarkoitettu koodi on selväkielisenä. Varhaiset virustentorjuntaohjelmistot olivat vaikeuksissa tällaisten virusten kanssa. Ne voidaan paljastaa rakentamalla virtuaalikone, joka suorittaa koodin. Koodi purkaa salauksen ja sen jälkeen virus voidaan tunnistaa. Polymorfinen virus muuttaa muotoaan joka kerta, kun se tunkeutuu toiseen ohjelmaan. Tällaisten virusten tuottamista on automatisoitu. Esimerkiksi jo 1992 oli saatavilla Mutation Engine (MtE) ja Trident Polymorphic Engine (TPE).

24 LUKU 2. PÄÄSYNVALVONTA On todistettu, että täydellinen virustorjunta on mahdotonta. Toisin sanoen ei ole olemassa algoritmia, joka löytäisi tai paljastaisi kaikki virukset. Sen tähden virustentorjunta perustuu tunnettujen virusten etsimiseen. Tämäkin näyttää toimivan käytännössä hyvin. Lisäksi järjestelmien omat tietoturvaominaisuudet ovat parantuneet. Tietokone-lehden numerossa 1-2010 yritettiin tartuttaa tahallaan syksyllä 2009 liikkuneita viruksia Windows Vista -koneeseen. Käyttäjällä eli tässä tapauksessa tartuttajalla oli vain perusoikeudet. Tartuttaminen osoittautui yllättävän vaikeaksi, sillä Vistan oma Defender huomasi ja esti virusten toimintaa. Ja vaikka tartunta olisikin tapahtunut, Windows olisi helppo puhdistaa: kone käynnistetään admintunnuksella ja käyttäjähakemiston työtiedostot kopioidaan turvaan. Sen jälkeen käyttäjätili poistetaan ja tarvittaessa perustetaan uudelleen. Kone on jälleen puhdas. Ongelmia syntyy vasta, jos virus on päässyt koneeseen admin-oikeuksilla. Madot Madot ovat haittaohjelmia, jotka kykenevät leviämään itsenäisesti ilman aputiedostoa. Madot voivat levitä nopeasti esimerkiksi sähköpostin avulla. Sähköpostimadot voivat olla liitetiedostoina tai osana itse viestiä. Liitetiedostoina leviävät madot vaativat yleensä aktivoituakseen, että käyttäjä avaa tiedoston. Eräät madot aktivoituvat tietyillä sähköpostiohjelmilla jo viestin esikatselutilassa. Aktivoiduttuaan sähköpostimato etsii kohdekoneesta sähköpostiosoitteita, joihin se voi lähettää itsensä edelleen. Verkkomadot leviävät tietokoneverkossa tarvitsematta sähköpostin tai tietokoneen käyttäjän apua. Ne käyttävät hyväkseen reaaliaikaista verkkoyhteyttä koneiden välillä. Verkkomatojen leviämiselle otollisia ovat jatkuvasti verkossa kiinni olevat, puutteellisesti ylläpidetyt palvelimet tai kotitietokoneet, joissa on madon leviämisen mahdollistavia paikaamattomia tietoturvahaavoittuvuuksia. Eräs laji matoja ovat botnet-verkkoja rakentavat madot. Botnet-verkot ovat valloitetuista koneista koostuvia kokonaisuuksia, joita käytetään hajautettuihin palvelunestohyökkäyksiin, roskapostitukseen, verkkourkintaan, identitettivarkauksiin sekä lukuisiin muihin rikollisiin tarkoituksiin. Botnet-verkkojen rakenne on melko samanlaista kuin vertaisverkkojen. Storm-verkko on tunnetuin botnet-verkko. Erään tutkimuksen mukaan Storm oli vastuussa jopa yli viidenneksestä kaikesta roskapostista vuoden 2008 ensimmäisellä neljänneksellä ([Mes08]). On myös arvoitu, että Storm koostui noin kahdesta miljoonasta koneesta vuonna 2008. Verkko katosi kokonaan syyskuussa 2008, mutta heräsi eloon uudistuneena Waledac-verkkona vuoden 2008 lopussa. Conficker (myös Downup, Downaup, Kido) ([Sym09], [CWG09]) on yksi suurimmista botnet-verkoista, joita on löydetty. Tartunnan saaneita koneita arvioitiin olevan 9-15 miljoonaa tammikuussa 2009. Conficker kulkee dynaamisen linkkikirjaston (DLL) mukana, joten se ei voi asentua koneeseen ilman apua. Alun perin Conficker rupesi leviämään Windowsin eri versioissa olevan MS08-067 tietoturvaaukon kautta. On myös kaksi muuta tapaa, joilla se pyrkii leviämään. Ensimmäinen