Turvallisen ohjelmiston tuottaminen poikkeaa tavallisesta ohjelmistokehityksestä yhtä paljon kuin kassakaapin valmistaminen Ikean vaatekaapin kasaamisesta. Vaikka tehtävä on päällisin puolin sama, yhteisiä nimittäjiä ei juuri ole.
Suuri osa turvallisen ohjelmiston kehittämisen nyrkkisäännöistä ovat tuttuja muutenkin: hyvin suunniteltu on puoliksi tehty, kokeneet kehittäjät tekevät vähemmän virheitä ja käytössä koetut perinteiset työkalut sopivat uusia trendituotteita paremmin turvatuotteiden tekoon. Lisäksi turvallisella kehittämisellä ei ole juuri merkitystä, ellei tuotteen perään katsota koko sen elinkaaren ajan.
Seuraavat neuvot eivät sen sijaan ole niin itsestäänselviä, vaikka kehittäminen olisi muuten hyvin näpeissä:
- Älä tee tietoturvaa väkisin. Parhaat softaideat eivät edellytä kovin hurjaa luottamusta tuotteen turvallisuuteen. Monet uudet tuotteet on tehty niin, että vaikein turvaosuus on suosiolla jätetty toiseen palveluun, jolloin itse tehty osio voi jäädä vaatimattomammalle turvatasolle.
- Älä jätä kynttilää vakan alle. Nosta turva-asiat etualalle, jos et voi niitä välttää. Jos juuri turvallisuus on ostajalle yksi tärkeistä valintakriteereistä, nosta turvan hyvä taso esiin kaikessa toiminnassa. Toisaalta tuotteet, jotka ovat selvästi turvallisempia kuin niiden asiakkaat haluavat, jäävät markkinoilla niiden tuotteiden jalkoihin, joille on osattu valita oikea turvataso. Hyviä esimerkkejä onnistuneista turvallisista tuotteista ovat:
- Myy säästöjä, älä turvaa. Parhaat turvatuotteet tekevät halvasta ratkaisusta turvallisen ja säästävät roppakaupalla rahaa. Internetin yli tehdyt VPN-yhteydet ovat tuhansia kertoja halvempia kuin vanhat kiinteät yhteydet toimistojen välillä. Jos ratkaistava ongelma on riittävän arvokas, turvaosion voi tehdä huolella.
- Tee valtakunnansalaisuuksille kassakaappi. Jos tärkeää tietoa on käsiteltävä, se pitää tehdä niin pienessä osassa ohjelmistoa kuin mahdollista. Esimerkiksi sosiaaliturvatunnusten käsittely- ja tallennuskoodia ei pidä levitellä ympäri ohjelmistoa, vaan se pitää säilyttää ainoastaan harvoissa ja rajatuissa kohdissa.
- Käytä Abloy-lukkoja. Älä tee itse salausta tai muita vaativimpia tietoturvan osia vaan hanki ne valmiina ja testattuina ratkaisuina. Ohjelmiston turvallisuuden pitää perustua valmiisiin ja varmasti toimiviin komponentteihin, sillä eihän arvokiinteistöillekään suunnitella uusia lukkoja. Hyviä turvaohjelmistoja saa sekä kaupallisina tuotteina että avoimen lähdekoodin ratkaisuina.
- Oven kolmas lukko on usein turha. Tietoturva-asioissa joutuu aina valitsemaan mitä tehdään ja mitä jätetään tekemättä. Vain poikkeuksellisissa sotilassovelluksissa voidaan tehdä kaikki asiantuntijoiden kaipaamat turvatoimet. Liika panostus yhteen turvan osa-alueeseen on usein merkki väärästä resurssien suuntaamisesta.
Tietoturvallisen ohjelmiston tekeminen vaatii pitkällistä syventymistä. Suosittelen seuraamaan alan ajattelijoiden tajunnanvirtaa Twitterin kautta, he puolestaan nostavat esiin sekä alan uusimpia trendejä että vanhoja klassikoita omassa virrassaan. Itse seuraan (7.1.2013) Twitterissä muun muassa seuraavia tietoturvan kovia luita:
- Mikko Hyppönen (@mikko)
- Gunnar Peterson (@oneraindrop)
- Per Thorsheim (@thorsheim)
- Mikko Saario (@midisFI)
- Antti Vähä-Sipilä (@anttivs)
- Jari Pirhonen (@japi999)
- Troy Hunt (@troyhunt)
Tietoturvallisen ohjelmiston rakentaminen on yhtä vaikeaa kuin menestyselokuvan tuottaminen. Harvat siinä onnistuvat, mutta onnistujat palkitaan ruhtinaallisesti.
Vastaa