Tietoturvallinen ohjelmistojen kehitys. Käytäntöjä tietoturvallisuuden huomioimiseen ohjelmistokehitysprosessin eri vaiheissa



Samankaltaiset tiedostot
Versio Rovaniemen koulutuskuntayhtymä Hyväksytty

Lapin yliopiston tietoturvapolitiikka

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Suomi.fi - Tietoturvallisuus sovelluskehityksessä. VAHTI sähköisen asioinnin tietoturvaseminaari

1. Tietokonejärjestelmien turvauhat

Suunnitteluvaihe prosessissa

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

Ohjelmiston toteutussuunnitelma

T Yritysturvallisuuden seminaari

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Tietojärjestelmän osat

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Testaaminen ohjelmiston kehitysprosessin aikana

SFS-ISO/IEC 27002:2014 Tietoturvallisuuden hallintakeinojen menettelyohjeet

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

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

KOKKOLAN KAUPUNGIN TIETOTURVAPOLITIIKKA

Tutkimus web-palveluista (1996)

Tietoverkkojen turvallisuus. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2012

Kyberturvallisuus kiinteistöautomaatiossa

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

TIETOTURVAPOLITIIKKA

Tietosuojaseloste. Trimedia Oy

TIETOTURVA JA TIETOSUOJAPOLITIIKKA

Älykästä. kulunvalvontaa. toimii asiakkaan omassa tietoverkossa

Tietoturva ja viestintä

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Eläketurvakeskuksen tietosuojapolitiikka

KONEAUTOMAATION LAATU JA TURVALLISUUS Marko Varpunen

Tekninen suunnitelma - StatbeatMOBILE

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Tiedonsiirto- ja rajapintastandardit

Tietoturvallisia sovelluksia

Tietoturvakoulutus Tietojenkäsittelyn koulutusohjelmassa

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Seminaariaiheet. Tietoturvaseminaari, kevät 03 Lea Viljanen, Timo Karvi

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

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

KYBERTURVAPALVELUT. VTT auttaa turvaamaan toiminnan jatkuvuuden ja suojautumaan kyberuhilta. VTT Kyberturvapalvelut

Ohjelmistojen suunnittelu

TIETOTURVA- POLITIIKKA

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

Tietoturvan Perusteet Yksittäisen tietokoneen turva

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Tekninen suunnitelma - StatbeatMOBILE

Tietoturvapäivä

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Arviointiraportti. Patenttitoimisto Jaakko Väisänen

Standardit tietoturvan arviointimenetelmät

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen

Tietoturvallisuuden kokonaisvaltainen hallinta Heikki O. Penttinen Castilsec Oy.

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

TIETOKANNAN SUUNNITTELU

Standardi IEC Ohjelmisto

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Verkostoautomaatiojärjestelmien tietoturva

Toimintaohjeistus. Tietoturvallisuusohjeistus TIETOTURVASUUNNITELMAT

Käytettävyys eli tieto on siihen oikeutettujen hyödynnettävissä haluttuna aikana.

Kattava tietoturva kerralla

T Johdatus käyttäjäkeskeiseen tuotekehitykseen. suunnitteluprosessissa. Käyttäjän huomiointi. Iteroitu versio paljon kirjoitusvirheitä

Käyttäjäkeskeinen suunnittelu

Standardien PCI DSS 3.0 ja Katakri II vertailu

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

ABB Drives and Controls, Koneenrakentajan ja laitetoimittajan yhteistoiminta toiminnallisen turvallisuuden varmistamisessa

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa

TOIMINNALLINEN MÄÄRITTELY MS

PK-yrityksen tietoturvasuunnitelman laatiminen

Ohjelmistotekniikka - Luento 2

Tietosuoja-asetus Miten julkinen hallinto valmistautuu?

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

ITK130 Ohjelmistojen luonne

Tietoturva ja tietosuoja. Millaisia ovat tietoyhteiskunnan vaarat?

Tietoturvaa verkkotunnusvälittäjille

T Yritysturvallisuuden seminaari. Kappaleet 15-16: Operational Risk Management Assurance Management

Onnistunut Vaatimuspohjainen Testaus

Algoritmit 1. Luento 3 Ti Timo Männikkö

Unix-käyttöjärjestelmien tietoturva ja OpenBSD

The administrative process of a cluster. Santtu Rantanen Valvoja: Prof. Jorma Jormakka

IoT-järjestelmän ja ulkovalaistuksen ohjauksen hankinta -markkinavuoropuhelutilaisuus

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Tämän kyselyn määritelmät on kuvattu sopimuksessa.

Ti Tietoturvan Perusteet

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Salausmenetelmät (ei käsitellä tällä kurssilla)

Turvallisen sovelluskehityksen käsikirja. Antti Vähä-Sipilä, F-Secure

Toimitilojen tietoturva

Tietoverkkojen turvallisuus. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2011

Ohjelmiston testaus ja laatu. Testaustasot

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Aurinkoenergiajärjestelmien etäseurantajärjestelmä

Oppimisympäristön arvioiminen ja tunnistaminen tutkinnon perusteiden avulla

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Visma Software Oy

4 1 mom. Digitaalisten palveluiden suunnittelu ja ylläpito 2 luvun 4 1 mom.

Ti Tietoturvan Perusteet : Politiikka

Transkriptio:

Tietoturvallinen ohjelmistojen kehitys Käytäntöjä tietoturvallisuuden huomioimiseen ohjelmistokehitysprosessin eri vaiheissa

Johdanto "Meillä on ohjelmistoversion julkistus kahden päivän päästä, voisitko tarkistaan onko tietoturvaseikat kunnossa?" Tietoturvallisuutta ei voi lisätä ohjelmistoon ominaisuutena jälkikäteen, vaan se on määriteltävä ja suunniteltava ohjelmistoon alusta alkaen > Tietoturvallisuuden huomioiminen koko ohjelmistokehitysprosessissa. Tietoturvallisella ohjelmistonkehityksellä tarkoitetaan ohjelmiston suunnittelemista siten, että se toimii oikein pahantahtoisen hyökkäyksen sattuessa suunnitellaan ohjelmisto turvalliseksi varmistetaan että ohjelmisto on turvallinen koulutetaan ohjelmistosuunnittelijat, arkkitehdit ja käyttäjät rakentamaan turvallisuutta

Sisällysluettelo Tietoturvallisuuden avainkäsitteitä Erilaisia ohjelmistokehityksen prosessimalleja Tietoturvallisen ohjelmistokehityksen periaatteita Vaatimusmäärittely- ja analyysi Suunnitteluvaiheen dokumentaatio ja tietoturvallisuus Toteutusvaihe tietoturvamielessä Erillinen tietoturvatestausvaihe vai testausta tietoturva huomioiden Käyttöönotto ja ylläpito Lisätietoja

Tietoturvallisuuden avainkäsitteitä Käytettävyys Määritelmä: Ominaisuus, että tieto, tietojärjestelmä tai palvelu on siihen oikeutetuille saatavilla ja hyödynnettävissä haluttuna aikana ja vaaditulla tavalla Hyökkäyksiä: palvelun esto hyökkäys palveluun tai palvelimeen esimerkiksi lähettämällä palvelimeen enemmän viestejä kuin se kykenee käsittelemään Eheys Määritelmä: (tietojen tai tietojärjestelmän) aitous, väärentämättömyys, sisäinen ristiriidattomuus, kattavuus, ajantasaisuus, oikeellisuus ja käyttökelpoisuus Hyökkäyksiä: Tietojen väärentäminen muuttamalla, poistamalla ja lisäämällä Luottamuksellisuus Määritelmä: Tietojen säilyminen luottamuksellisina ja tietoihin, tietojenkäsittelyyn ja tietoliiikenteeseen kohdistuvien oikeuksien säilyminen vaarantumiselta ja loukkaukselta Hyökkäyksiä: Tiedon paljastuminen salakuuntelemalla tietoliikennettä tai murtautumalla tietojärjestelmään Todennus Määritelmä: Varmistuminen kohteen todenmukaisuusta, oikeellisuudesta tai alkuperästä Hyökkäyksiä: Huijaaminen, tekeytyminen Kiistämättömyys Määritelmä: tietoverkossa eri menetelmin saatava varmuus siitä, että tietty henkilö on lähettänyt tietyn viestin (alkuperän kiistämättömyys), vastaanottanut tietyn viestin (luovutuksen kiistämättämyys, tai että tietty viesti tai tapahtuma on jätetty käsiteltäväksi Hyökkäyksiä: Kieltäminen

Erilaisia ohjelmistokehityksen prosessimalleja Vesiputousmalli Spiraalimalli inkrementaalisen kehityksen malli Extreme programming Mikään tähän päivään mennessä esitetty prosessimalli tai käytäntö ei ole yhtäpitävästi osoittanut tuottavansa tietoturvallista ohjelmistoa Kuitenkin käyttämällä parhaita kehityskäytäntöjä, pystytään merkittävästi parantamaa ohjelmiston turvallisuutta mukaan lukien poikkeuksellisen matalat virheasteet Koska parhaiden kehityskäytäntöjen käyttöönotto vaatii merkittävää koulutusta ja kehityskuria, ei niitä oteta laajaan käyttöön ilman huomiota yrityksen johdolta, asiakkailta, tai lainsaadannöstä.

Tietoturvallisen ohjelmistokehityksen periaatteita Mekanismin taloudellisuus: Pidä suunnittelu niin yksinkertaisena kuin mahdollista Turvaa virhetilanteet: Perusta käyttöoikeuspäätökset lupaan ennemmin kuin poissulkemiseen Täydellinen välitys: Jokaisen käyttöoikeuden valtuutus jokaiseen objektiin pitää tarkistaa Avoin suunnittelu: Ei salaista suunnittelua Oikeuksien erottaminen: Aina kun on toteutettavissa, niin suojamekanismi, joka vaatii avaamiseen kaksi avainta, on joustavampi kuin sellainen, joka vaatii käyttöoikeuteen vain yhden avaimen Pienimmät oikeudet: Jokaisen järjestelmän ohjelman ja käyttäjän täytyy toimia pienimmillä mahdollisilla oikeuksilla työnsä tekemiseen. Vähimmät yhteiset mekanismit: Minimoi yhteisen mekanismien määrä enempään kuin yhteen ja kaikista käyttäjistä riippuvaan. Psykologinen hyväksyttävyys: On olennaista että käyttöliittymä suunnitellaan helppokäyttöiseksi niin että käyttäjät rutiininomaisesti ja automaattisesti käyttävät suojamekanismejä oikein. Lähde: Saltzer ja Schroeder, 1974

Tietoturvaperiaatteita Suojaa heikoin kohta ensin Rakenna useita puolustuslinjoja Turvaa virhetilanteet Anna sovellukselle vain välttämättömät oikeudet Erottele toiminnallisuudet eri tasoisiin turvatiloihin Yksinkertainen on kaunista ja turvallisempaa (KISS) Huolehdi yksityisyyden suojasta Muista, että salaisuuksien pitäminen on vaikeaa Luota säästeliäästi Käytä testattuja välineitä ja komponentteja Lähde: Viega, McGraw: Building Secure Software, 2002

Parhaita käytäntöjä kehityksen eri vaiheisiin Ulkopuolinen katselmus Riski analyysi Riskipohjaiset tietoturvatestit Staattinen analyysi (työkalut) Riski analyysi Penetraatio testaus Väärinkäyttötapaukset Tietoturvavaatimukset Tietoturvamurrot Vaatimukset ja käyttötapaukset Suunnittelu Testaustulokset Testaussuunnitelmat Toteutus Palaute kentältä

Vaatimusmäärittely ja -analyysi Uhka-analyysi ja tietoturvatavoitteiden määrittely Riskien hallinta Arkkitehtuurinsuunnittelu kysymyksiä Tietoturvamekanismit ja kerroksittainen arkkitehtuuri Tietoturva sisäänrakennettuna vai tietoturvakerroksen lisääminen Tietoturvapolitiikan määrittely ja vaatimusmäärittely

Uhka-analyysi ja tietoturvatavoitteiden määrittely Uhka on mahdollinen tapahtuma, jolla voi olla merkittävä vaikutus systeemin suojattaviin asioihin tai resursseihin. Se on vaara, joka voi johtaa ei haluttuihin seurauksiin. Haavoittuvuus on heikkous, joka mahdollistaa uhan toteutumisen Jokaiselle tunnistetulle uhalle täytyy tehdä jokin vastatoimenpide uhkaa pienentämään Tietoturvatavoitteet ovat korkean tason vaatimuksia uhkien pienentämiseksi Tietoturvatavoitteista saadaan kehitettyä yksityiskohtaisempia tietoturvavaatimuksia Tietoturvatavoitteilla ei välttämättä saada katettua kaikkia uhkia Olettamuksia toimintaympäristön, fyysisen turvallisuuden jne. osalta

Uhkien mallittaminen Microsoftin menetelmällä Tunnista suojattavat asiat (varallisuus, tieto, jne.) Luo yleiskuva arkkitehtuurista Pura sovellus paloiksi Identifioi uhat Luokittele uhat STRIDE mallia käyttäen Spoofing = huijaaminen Tampering = peukalointi Repudiation = kieltäminen Information disclosure = tiedon paljastuminen Denial of service = Palvelun esto Elevation of privilige = Käyttöoikeuksien nostaminen Laita uhat järjestykseen käyttämällä DREAD kategorioita: Damage potential: vahinko potentiaali Reproducibility = toistettavuus Exploitability = hyödynnettävyys Affected users = vaikutuksen alaiset käyttäjät Discoverability = havaittavuus Kehitä uhkien lieventamisstrategia vakavimmille uhille

Riskien hallinta Turvallisin tietokone on irroitettu verkosta, sitä säilytetään lukitussa huoneessa ja siitä on irroitettu näppäimistö Ei kovin käyttökelponen Täydellistä tietoturvaa ei voida saavuttaa -> tarve riskien hallinnalle Riskien hallinta koostuu: Uhkien identifiointi Suojattavien asioiden identifiointi Riskien priorisointi (todennäköisyys ja vakavuus arvioiden) Riskien pienentäminen vastatoimenpiteiden määrittely, varmentaminen, suunnittelu ja kelpuuttaminen riskien siirtäminen -> vakuutukset Vaatimusmäärittely- ja suunnitteluvaiheessa täytyy dokumentoida tehdyt kompromissit riskien hallinnan näkökulmasta: Toiminnallisuus vaaditut ja jäljelle jäävät resurssit tietoturvallisuuden tarpeisiin Käytettävyys tietoturvallisuus sitä vaikeuttamassa Tehokkuus tietoturvallisuus voi olla hidastava ja kallis tekijä time to market vaikeaa saavuttaa jos halutaan hyvä tietoturvan taso yksinkertaisuus jokainen haluaa sitä, mutta tietoturva voi monimutkaistaa järjestelmää Laadusta pidetään huolta laatu on välttämättömyys tietoturvallisuuden saavuttamiseksi

Arkkitehtuurisuunnittelun kysymyksiä Pääasiallinen kontrolloinnin painopiste tietoturvan toteuttamismekanismeiksi Esim. käyttäjän identifiointi tai operaatioiden oikeudet Käyttöjärjestelmissä kontrolloidaan dataa käyttöoikeuksien avulla Sovelluksissa voidaan kontrolloida operaatioida, joita käyttäjällä on oikeus suorittaa Keskitetäänkö tietoturvafunktiot vai hajautetaan ympäri systeemiä tai systeemin komponenttejä Hajautetussa järjestelmässä funktio voi olla levitetty komponentteihin tai keskitetty yhteen komponenttiin Yhden koneen järjestelmässä funktio voi olla hajautettu moduuleihin tai keskitetty yhteen moduuliin Keskitetty mekanismi on helpompi analysoida ja toteuttaa virheettömästi Keskitetty mekanismi voi kuitenkin olla pullonkaula suorituskyvylle

Tietoturvamekanismit ja kerroksittainen arkkitehtuuri Tietokoneiden arkkitehtuurit ovat kerroksittaisia, esimerkiksi: Sovelluskerros palvelu/middleware kerros Käyttöjärjestelmä kerros Laitteisto kerros Tietoturvan toteuttavat mekanismit voivat sijaita millä tahansa arkkitehtuurin kerroksella kriteerinä mekanismin tehokkuus, esim. käyttäjien toiminteiden kontrollointi tehokkainta sovelluskerroksella datan pyyhkiminen käyttämättömiltä levylohkoilta tehokkainta käyttöjärjestelmä Kun kerros on valittu, täytyy varmistua kuinka alempia kerroksia suojataan Esim. tietoturvallinen käyttöjärjestelmä vaatii tietoturvamekanismejä niin laitteisto- kuin käyttäjärjestelmäkerrokseltakin Tietoturvallinen sovellus vaatii tietoturvamekanismeja kaikkiin kerroksiin

Tietoturva sisäänrakennettuna vai tietoturvakerroksen lisääminen Suorituskyvyn tapaan tietoturva on järjestelmän kiinteä osa ja se pitäisi integroida osaksi järjestelmää alusta lähtien mieluummin kuin lisätä myöhemmin. Peruskäsite tietoturvallisen järjestelmän suunnittelussa ja kehityksessä on referenssimonitori ja sen kelpuuttamismekanismi Referenssimonitori on pääsynvalvontamekanismin kuvaaminen abstraktina koneena, joka valvoo kaikkien subjektien pääsyä kaikkiin objekteihin. Referenssimonitorin kelpuuttamismekanismi on referenssimonotorin toteutus Tietoturvallinen ydin on laitteiston ja ohjelmiston yhdistelmä jolla referenssimonitori toteutetaan Luotettu ydintoiminnallisuus koostuu kaikista järjestelmän tietoturvamekanismeistä (laitteisto, ohjelmisto, valmisohjelmistot), joiden avulla tietoturvapolitiikka toimeenpannaan. Pyritään pitämään luotettu ydintoiminnallisuus mahdollisimman pienenä Helpompi analysoida ja testata. Saadaan suurempi varmuus toiminnallisuudesta Jos tietoturvaominaisuudet lisätään järjestelmään jälkeenpäin, on analysointi ja varmuuden saaminen vaikeampaa Toiminnallisuus hajautettuna eri puolille järjestelmää Suuri ja monimutkainen design Nykytuotteista harvoja on tehty tietoturvallisuuden kannalta oikein. Yleensä turvaominaisuudet on lisätty jälkeenpäin.

Tietoturvapolitiikan määrittely ja vaatimusmäärittely Toiminnallisuuden määrittelyssä käytetään hyväksi käyttöskenaarioita Tietoturvallisuuden määrittelyssä kannattaa ottaa avuksi väärinkäyttötapaukset Miten hyökkääjä tietoisesti koettaa käyttää järjestelmää väärin tietoturvapolitiikan rikkomiseksi Menetelmiä politiikan ja vaatimusten määrittelyyn Käytetään soveltuvin osin hyödynnettäviä vaatimuksia tietoturva standardeista kuten Common Criteria Luodaan uusi politiikka uhka-analyysin ja olemassaolevien politiikkojen pohjalta Kuvataan systeemi olemassa olevaan malliin. Jos malli vastaa järjestelmän päämääriin, tämä voi olla toimivampi kuin muiden menelmien käyttö. Tietoturvapolitiikan ja -vaatimusten täydellisyys ja yhtäpitävyys Epäformaali todistus, että järjestelmä kattaa siihen kohdistuvat uhat ITSEC ja Common Criteriasta löytyy metodiikkaa tähän

Suunnitteluvaiheen käytäntöjä Suunnitteluvaiheen vikoja löydetään usein testaamalla Suunnitteluvaiheen vikoja on löydettävissä Vaatimusten jäljittämisen ja vastaavuksien hakemisen, analyysin, katselmusten, formaalien todistustekniikoiden, ja epämuodollisten argumenttien avulla (kuten Common Criterian suojausprofiilit ja tietoturvatavoitteet määrittelevät) Kaikki suunnitteluvaiheen suunnittelu- ja virheidenlöytämiskäytännöt edellyttävät hyvää dokumentaation laatutasoa

Suunnitteluvaiheen dokumentaatio ja tietoturvallisuus (1/2) Dokumentaation täytyy sisältää kolmen tyyppistä tietoa tietoturvallisuutta varten: 1. Tietoturvafunktiot Yhteenvetomäärittely korkean tason tietoturvafunktioista Kuvaus yksittäisistä tietoturvafunktioista Yhteenveto siitä, miten funktiot toimivat yhdessä Miten vaatimukset katetaan 2. Ulkoisten rajapintojen kuvaus Korkean tason kuvaus ulkoisista rajapinnoista järjestelmälle, komponentitlle, alikomponentille, tai moduulille Komponentin yhteenveto Datan kuvaukset (tietotyypit, tietorakenteet, jne.) Rajapintojen kuvaukset (komennot, systeemikutsut, kirjastofunktiot, API:t, jne.) 3. Sisäinen arkkitehtuuri (komponentit) Järjestelmän sisäisten komponenttien rakenteet ja funktiot Yhteenveto ylätason komponentista Komponentin yksityiskohtainen kuvaus Komponentin merkitys tietoturvallisuuden kannalta

Suunnitteluvaiheen dokumentaatio ja tietoturvallisuus (2/2) Matalimman tason suunnitteludokumentaatiossa keskitytään moduulien rakenteen, tietorakenteiden, rajapintojen ja logiikan kuvaamiseen Yhteenveto moduulista Moduulin merkitys tietoturvallisuuden kannalta Moduulin yksittäiset rajapinnat Seuraavan kehitysversion dokumentaatio Muutosspesifikaatio määrittää muutokset olemassa oleviin moduuleihin, funktioihin ja komponentteihin uudet moduulit, funktiot ja komponentit Poistetut moduulit, funktiot ja komponentit Useiden muutosspesifikaatioiden olemassaolo vaikuttaa tietoturvaanalyysiä

Toteutus Tietoturvaohjelmointi on oma alansa, eikä sitä huomioida alan koulutuksessa. Ohjelmoidessa täytyy jatkuvasti pitää mielessä mikä voi mennä väärin varsinaisen toiminnallisuuden lisäksi Käytettävä ohjelmointikieli vaikuttaa tietoturvallisuuteen Javassa tietoturva huomioitu, muistinhallinta systeemissa, ei ohjelmoijan harteilla C ja C++ mahdollistavat puskurin ylivuodot ja monen muun tietoturvahaavoittuvuuden Syötteen tarkistaminen puskurin ylivuotojen ja muiden vikaantumisten estämiseksi Valmiiden luotettujen komponenttien käyttö tietoturvaseikat huomioitu valmis kehys ja malli sovelluskehitykseen Testattu ja hyväksi havaittu Katselmusten käyttö ja tietoturvallisuuden huomioiminen niissä erityisesti Tietoturvatarkistuslistojen käyttäminen katselmuksissa Staattisten analysointityökalujen käyttäminen

Testaus Lähtökohta: Käyttäjä on pahantahtoinen, sovelluksen väärinkäyttöön kaikkia sääntöjä rikkomaan pyrkivä (R. Anderson ja Roger Needham: Satan s Computer) Kaksi strategiaa Testataan tietoturvatoiminnallisuutta käyttäen hyväksi standardeja testaustekniikoita Riskipohjainen tietoturvatestaus, joka perustuu hyökkäysmalleihin ja uhka-analyysiin Hyvä tietoturvan testaussuunnitelma hyödyntää molempia Penetraatiotestaus on myös hyödyllistä, varsinkin jos testejä johdetaan arkkitehtuurin riskianalyyseistä Jos pelkkää mustalaatikkotestausta ilman ohjelmistoarkkitehtuurin huomioimista, niin ei välttämättä löydetä mitään mielenkiintoista Testauksessa on tärkeää huomoida tietoturvavaatimusten kattaminen Testitapausten johtaminen uhka-analyysi tietoturvavaatimusten testaus hyökkäysmallit tietoturvavaatimusten testaus väärinkäyttötapaukset tietoturvavaatimusten testaus määrittely dokumentaatio toiminnallinen tietoturvatestaus suunnittelu dokumentaatio strukturaalinen tietoturvatestaus Robustisuustestaus: Syntaksitestauksen, vikojen injektoinnin ja penetraatiotestauksen yhdistelmä Kohinatestaus: Satunnaisen syötteen käyttö

Käyttöönotto ja ylläpito Käyttöönotossa tietoturvalliset, kovennetut ja dokumentoidut asetukset Käyttöjärjestelmistä, sovelluspalvelimista ja tietokannoista turhatoiminnallisuus ja oletusarvoiset käyttäjätunnukset pois jo asennusvaiheessa Tietoturvalliset asennukset edellyttävät suunnittelua ja hyviä ohjeita Hyvä dokumentaatio ja suunnitellut käytännöt ylläpitoon ja tietoturvakorjausten asentamiseen

Lisätietoja Matt Bishop: Computer Security, Art and Science, 2003 Chapter 19: Building Systems with Assurance John Viega, Gary McGraw: Building Secure Software, 2002 Gary McGraw: Software Security, IEEE Security & Privacy, 2004 Improving Security Across the Software Development Life Cycle, 2004 Task force report, US National Cyber Security Partnership http://www.cyberpartnership.org/sdlcfull.pdf Ross Andersson: Security Engineering, 2001