17. kesäkuuta 2011

Salasanoista osa III

Tämä on salasanoja käsittelevän artikkelisarjani viimeinen osa. Tässä kerron miten minä olen hoitanut omien salasanojeni hallinnan.


Disclosure: Mainitsen tässä jutussa muutamia kaupallisia tuotteita. Minulla ei ole mitään tekemistä niiden tomittajien kanssa eikä minulle makseta niiden mainostamisesta.


Hajoita ja hallitse
Olen vuosien varrella rekisteröitynyt kymmeniin tai kenties satoihin verkkopalveluihin. Minulla oli ennen muutama eri salasana, joita käytin eri palveluissa sen mukaan, miten tärkeiksi näin niiden turvaamisen. Ongelma salasanojen kierrättämisessä on se, että jos yksi palvelu on vastuuton ja tallentaa salasanat tekstinä eikä tarkistussummana ja juuri se palvelu krakkeroidaan, niin silloin rikollisilla on hallussa salasana, joka käy muihinkin palveluihin mihin olet rekisteröitynyt. Heillä on myös mahdollisesti sähköpostiosoitteesi, mikä on monissa palveluissa käyttäjätunnus. Heillä on helppo työ kokeilla varastamaansa salasanaa ja osoitetta suosituimpiin palveluihin.

Lääke tätä ongelmaa vastaan on käyttää joka paikassa eri salasanaa. Koska eri palveluja on kymmeniä on selvää, että jonkunlainen salasananhallintatyökalu on välttämätön. Minulla se on LastPass. LastPass muistaa kaikki salasanani ja täyttää ne automaattisesti puolestani. Minun tulee muistaa vain yksi turvallinen salasana avatakseni salasanaholvin ja sen jälkeen ohjelma hoitaa loput. LastPass on saatavilla Windowsille, OSX:lle ja Linuxille, sekä useille mobiilialustoille. Mobiilialustojen käyttäminen vaatii tosin maksullisen version, mutta onneksi se on naurettavan halpa, eli 12 USD vuodessa.

Heikko kohta
Jos olet hieman vainoharhainen kuten minä, olet jo varmasti tajunnut, että LastPass-holviisi tunkeutumalla hyökkääjä saisi salasanat kaikkialle. Onneksi se on käynyt mielessä myös palvelun kehittäjillä. Kaikki salasanat kryptataan asiakkaan koneella, jonka jälkeen ne läheteään LastPass-severille, missä ne kryptataan uudestaan (käsittääkseni useampaan kertaan). Heillä siis ei ole missän olosuhteissa pääsyä käsiksi sinun salasanoihisi, eikä siten ole tunkeutujallakaan.

Entä keyloggerit? Niitä tilanteita varten, kun joudut kirjautumaan julkiselta koneelta LastPass antaa useita vaihtoehtoja turvata tilisi. Ensimmäinen vaihtoehto on kuvaruutunäppäimistö. Silloin salasanasi on vain hiiren liikettä ruudulla, eikä keylogger saa sitä. Toinen vaihtoehto on kertakäyttösalasanojen käyttäminen. Ne ovat tosin julmetun pitkiä, eivätkä siten kovin käteviä. Kolmas vaihtoehto kahden tekijän autentikointi. Yubikey on pienen USB-tikun kokoinen laite, joka näkyy tietokoneelle USB-näppäimistönä. Se syöttää yhdellä napin painalluksella 20 merkkiä pitkän kertakäyttösalasanan, joka siis vaaditaan tavallisen salasanasi lisäksi. Hyökkääjän on mahdotonta avata tiliäsi ilman salasanaasi ja Yubikeytäsi. Yubikey maksaa postikuluineen ja veroineen noin 25 EUR.

Nyt voin käyttää jokaisessa palvelussa eri salasanaa, eikä minun tarvitse muistaa niitä, joten ne voivat olla vaikka kymmeniä merkkejä pitkiä. Minun tarvitsee vain muistaa LastPass-salasanani ja pitää visusti huolta Yubikeystani.

10. kesäkuuta 2011

Salasanoista osa II

Edellisessä kirjoituksessa esitin, että datan kryptaamiseen käytettävän salasanan tulisi olla vähintään 19 merkkiä pitkä ja käyttää isoja ja pieniä kirjaimia, numeroita sekä erikoismerkkejä. Luulisin, että suurin osa käyttäjistä pitää moista ratkaisua käytännössä mahdottomana. Tietoturvaguru Steve Gibson on keksinyt tavan, jolla voi tehdä erittäin vaikeasti arvattavia salasanoja.


Tämä juttu tulee hyvin pitkälti olemaan referaatti podcastista, jossa Steve Gibson esitti niksinsä. Suosittelen kuuntelemaan sen, koska siinä asia on selitetty erittäin selkeästi.

Miten salasanoja murretaan?
Salasanojen koneelliseen murtamiseen on kaksi tapaa. Ensimmäinen ja nopein on sanakirjahyökkäys. Siinä käytetään nimen mukaisesti sanakirjaa ja kokeillaan kaikkia sieltä löytyviä sanoja. Mikäli sanakirjahyökkäys ei toimi hyökkääjä joutuu käymään läpi kaikki mahdolliset merkkiyhdistelmät. Sanakirjahyökkäyksessä arvattavia sanoja on vain kymmeniä tai satoja tuhansia, mikäli käyttäjän äidinkieli tunnetaan. Kun arvauksia voidaan tehdä jopa satoja miljardeja sekunnissa on helppo ymmärtää miten oikean sanan käyttäminen on katastrofaalista murtovarmuuden kannalta.

Sanakirjahyökkäystä voidaan kehittää helposti kokeilemalla muutamia variaatioita jokaisesta sanasta. Esimerkiksi l33t 5p34k ei pelasta, kun implementoidaan muutamien merkkien korvaaminen saman näköisillä numeroilla. Lisäksi on helppo kokeilla numeroiden lisäämistä sanan alkuun ja loppuun. "kissa12" ei oikeasti ole salasanojen eliittiä, vaikkakin legendaarinen.

Kun edellä mainitut keinot on käytetty, niin hyökkääjälle jää enää yksi keino. Se on järjestelmällisesti käydä kaikki merkkiyhdistelmät läpi. Tämä tapa tunnetaan nk. brute force eli raaka voima -menetelmänä. Raakaa voimaa vastaan suojautuminen tapahtuu edellisessä jutussa käsitellyin keinoin: kasvattamalla salasanan merkkiavaruutta ja pituutta.

Miten tehdään helposti muistettava turvallinen salasana?
Kun ymmärrämme murtajien keinot voimme keksiä vastalääkkeen. Tarvitsemme siis salasanan joka on pitkä ja joka käyttää kaikkia merkkiluokkia, eli 95 merkin avaruutta. Vastaus on salasanojen toppaaminen. Ota siis joku lyhyehkö salasana, joka käyttää isoja ja pieniä kirjaimia sekä numeroita. Sen jälkeen toppaa salasanaa erikoismerkkikuvioilla kunnes se on tarpeeksi pitkä. Esimerkiksi:
.....#*#*Kissa12*#*#.....
Esimerkki on 25 merkkiä pitkä ja sen murtamiseen menisi reilusti yli 100 vuotta, vaikka otetaan huomioon laskentatehon jatkuva kasvaminen. Kuitenkin on helppo nähdä sen säännönmukaisuus, mikä tekee siitä helpon muistaa. Tuota säännönmukaisuutta on koneen mahdoton arvata tai ennustaa, joten se on salasanana yhtä vaikea arvata kuin täysin satunnainen 25-merkkinen salasana 95 merkin avaruudesta, vaikka sen todellinen entropia on huomattavasti pienempi.

Jokaisen pitää keksiä oma tapansa topata salasanansa ja pitää se visusti salassa. Onneksi se on helppoa. Tällaisen salasanan huono puoli on sama mikä on sen etu: helppo muistettavuus. Jos joku sattuisi näkemään sen kirjoitettuna lapulle, niin se on helppo painaa muisiin sekunneissa, toisin kuin täysin satunnainen merkkijono.

Seuraavalla kerralla kerron, miten minä hallitsen salasanojani.

3. kesäkuuta 2011

Salasanoista osa I

Salasanat ovat luultavasti tärkein tietoturvatekijä. Asiantuntijat ovat jo vuosikymmeniä kehoittaneet ihmisiä kehittämään turvallisia salasanoja, mutta tutkimusten valossa viesti ei ole mennyt suurimmalle osalle tietokoneiden käyttäjistä perille. Tässä kolmeosaisen juttusarjan ensimmäisessä osassa kerron perusasioita salasanojen muodostamisesta ja miten niistä tehdään turvallisempia.


Merkkiavaruuden vaikutus

Ensimmäinen asia salasanoista on se, että se ei missään nimessä saa olla oikea sana. Sanakirjahyökkäyksellä okeat sanat voidaa murtaa naurettavan helposti. Paris Hiltonin tili murrettiin, koska hän käytti salasanana lemmikkikoiransa nimeä, joka oli yleisesti tiedossa. Älä siis käytä oikeita sanoja tai nimiä.

Salasanalla on tietoturvan kannalta kaksi merkittävää ominaisuutta: pituus ja merkkiavaruuden koko. Mahdollisten kombinaatioiden määrä on merkkiavaruuden koko potenssiin salasanan pituus. Otetaan esimerkiksi kuusi merkkiä pitkä salasana, jossa on käytetty vain pieniä kirjaimia (ääkköset pois lukien). Silloin kombinaatioiden määrä on 26⁶, eli 321 272 406. Aika paljon, eikö? Ei. Tuollainen salasana murtuu kotikonsteinkin alle sekunnin sadasosassa, jos hyökkääjä on saanut ladattua salasanasi tarkistussumman omille koneillensa.

Entä jos salasanan yksi merkki on numero? Silloin merkkiavaruus kasvaa kymmenellä merkillä ja kuusimerkkiä kombinaatioita on jo 36⁶, eli noin 2,2 miljardia. Sen murtamiseen kotikonstein menee jo kaksi sekunnin sadasosaa, mutta vieläkään ei mistään pomminvarmasta ratkaisusta voida puhua.

Lisätään salasanaan vähintään yksi iso kirjain. Silloin merkkiavaruus kasvaa jälleen 26 merkillä. Kuusimerkkisiä kombinaatioita on 62⁶, joka on noin 58 miljardia. Nyt murtajalla menee aikaa jo yli puoli sekuntia. Edelleenkin tarvitaan lisää kombinaatioita!

Tehdään siis niin kuin tietoturva-asiantuntijat suosittelevat, eli lisätään yksi erikoismerkki. Erikoismerkkejä on 33, joten nyt merkkiavaruus on jo 95 merkkiä, mikä on jo huomattava parannus alkuperäiseen 26 merkkiin. Mahdollisia salasanoja on silloin jo noin 740 miljardia, joka venyttää murtamisajan 7,4 sekuntiin.

Vertailun vuoksi vielä:
  • pamela, löytyy sanakirjasta, murrettu nopeammin kuin kissa aivastaa 
  • pbmela, 321 272 406 kombinaatiota, murrettavissa 0,00321 sekunnissa
  • pBmela, 20 158 268 676 kombinaatiota, murrettavissa 0,202 sekunnissa
  • pBm3la, 57 731 386 986 kombinaatiota, murrettavissa 0,577 sekunnissa
  • pBm3l@, 742 912 017 120 kombinaatiota, murrettavissa 7,43 sekunnissa
Miten pitkä salasana riittää?

Ensinnäkin hyökkäyksiä on kahta eri laatua. Verkossa tapahtuvissa hyökkäyksissä on useita tietoturvaa helpottavia tekijöitä. Ensinnäkin salasanojen arvaaminen verkon yli on huomattavasti hitaampaa. Lisäksi kaikki vakavasti otettavat palvelut pidentävät arvausten välistä aikaa eksponentiaalisesti tai lukitsevat tilin kokonaan liian monen väärän yrityksen jälkeen. Kolmanneksi käyttäjä pystyy vaihtamaan salasanansa kesken verkkohyökkäyksen.

Jos oletetaan, että käyttäjä vaivautuu vaihtamaan salasanansa edes kerran vuodessa ja että arvausten määrä rajoittuu tuhanteen arvaukseen sekunnissa (mikä on todennäköisesti ronskisti yläkanttiin) niin salasanan tulisi olla ainakin kuusi merkkiä pitkä. Tämä siis silloin kun käytetään 95 merkin merkkiavaruutta.

Paikallisissa hyökkäyksissä tilanne on murheellisempi. Hyökkääjällä on silloin esimerkiksi käyttäjän data kryptattuna paikallisella kovalevyllä. Silloin käyttäjä ei pääse vaihtamaan salasanaansa, ja hyökkääjä pääsee tekemään arvauksia miljoonia kertoja nopeammin. Silloin salasanan pituusvaatimus kasvaa huomattavasti.

Miten pitkä salasana on murtamaton?

Aluksi on todettava, että jokainen salasana on murrettavissa, jos aikaa on tarpeeksi. Jos murtamatomaksi määritellään salasana, jonka murtamiseen menee ihmisen elinikä (pyöreästi 100 vuotta), niin silloin voimme tehdä arvioita siitä, miten pitkä salasanan olisi oltava. Yritän muotoilla tässä pahimman mahdollisen tilanteen. Oletetaan, että joku valtiollinen tiedustelupalvelu on saanut datasi haltuunsa ja on päättänyt murtaa sen resursseja säästämättä. Oletetaan, että tuollaisella organisaatiolla on käytössä tuhatkertaiset prosessointiresurssit kotikäyttäjään nähden. Silloin arvioisin arvauksia tapahtuvan sata biljoonaa sekunnissa (10¹⁴).

Kun puhutaan aikavälistä, joka on vuosia, joudumme ottamaan huomioon saatavilla olevan laskentatehon kasvamisen. Rohkenen käyttää Mooren lakia tässä yhteydessä ennustamaan saatavilla olevan laskentatehon määrää tulevaisuudessa. Oletetaan siis, että laskentateho tuplaantuu kahden vuoden  välein, ja että murtomies pystyy lennosta vaihtamaan tehokkaampaan laitteistoon. Ensimmäisen 2v aikana pystytään murtamaan siis 2 nykyvuosimurtotehon (edempänä NVMT) edestä. Sitä seuraavien kahden vuoden aikana 2*2 NVMT edestä, sitä seuraavana 2*2*2. Lasketaan siis montako vuotta nykyisillä tehoilla salasanan murtaminen pitäisi kestää.



Kuinka pitkä salasana tarvitaan, jos käytetään edellä käytettyä 95 merkin avaruutta, jotta NSA:n kaltaisella organisaatiolla menisi sata vuotta sen murtamiseen?


Vastaus: 19 merkkiä.

Tiedän mitä suurin osa teistä ajattelee. Eihän kukaan voi muistaa 19 merkkiä pitkää salasanaa! Kyllä voi, ja seuraavassa jutussa kerron miten se tehdään.

Korjaus: Väitin kombinaatioiden määrän olevan merkkiavaruuden koko potenssiin salasanan pituus. Se pitää paikkansa täsmälleen sen mittaisille salasanoille, mutta murtaja joutuu käymään ensin läpi myös mahdolliset lyhyemmät salasanat. Lyhyemmät salasanat on otettu huomioon kombinaatioiden kokonaismäärien laskelmissa.