You are here: TUTWiki>Tietoturva/Tutkielmat>TyoLuettelo?>2006-20

Jaakko Sadeharju

Salasanalaskurit ja niiden käyttö

Johdanto

Työssä käsittelen kaksiosaiseen käyttäjäntodennukseen käytettävien salasanalaskureiden (esim. securID) toimintaa ja niiden käyttöä. Tällaisista laitteista ylivoimaisesti yleisin on RSA SecurID joten keskityn artikkelissa tarkastelemaan pääasiassa vain sitä. Toimintaa käsittelen yleisellä tasolla, sekä järjestelmään kuuluvien laitteiden osalta. Käytöstä kirjoitan yleisesti, mutta käsittelen lyhyesti myös käyttössä esiintyviä ongelmia.

Tietoturva-osiossa pohdin järjestelmän turvallisuutta "normaalissa" käytössä. En siis tutki kovin tarkasti järjestelmään kohdistuvia kryptoanalyyseja, joita on julkaistu Internetissä useita.

Lopuksi tarkastelen hyvin yleisellä tasolla SecurID:ssä käytettävää tiivistefunktioa, jota käytetään laitteen näyttämien avaimien muodostamiseen. Kyseessä on vuonna 2000 Internetissä julkaistu, oletettava, SecurID:n tiivistefunktio (Alleged Securid Hash Function). Siitä ilmenee miten SecurID:n näyttämät luvut muodostuvat.

Yleistä

Salasanalaskurit (erityisesti RSA securID) ovat laajasti käytössä oleva kaksiosainen järjestelmä käyttäjien todentamiseen. Ne tarjoavat kaksiosaisen vahvan autentikoinnin, joka mahdollistaa käyttäjän pääsyn verkossa olevaan resurssiin, esimerkiksi yrityksen sisäiseen verkkoon. Usein perinteiset muuttumattomat salasanat joutuvat vääriin käsiin. Ne voidaan vaikkapa urkkia selän takaa kirjoitettaessa, arvata tai selvittää verkkoliikenteestä. Salasanalaskurit on tarkoitettu lisäämään perinteisten muuttumattomien salasanojen turvallisuutta lisäämällä siihen muuttuvan osan.

Salasanalaskurit ovat laitteita, jotka näyttävät käyttäjälle 30 tai 60 sekunnin välein vaihtuvaa käyttäjän tunnistamiseen käytettävää avainta. Luonnollisesti avaimen halutaan olevan täysin satunnainen ja mahdollisimman vaikeasti ennustettavissa, jotta laitteen väärinkäyttö olisi mahdollisimman vaikeaa. Täydellinen satunnaisuus ei kuitenkaan ole mahdollista, koska autentikoinnin suorittavan palvelimen on voitava saada sama luku, mikä käyttäjän tokenissa (katso selitys termit-kohdasta) näkyy. Salasanalaskureita on valmistettu useita miljoonia kappaleita ja niitä käytetään ympäri maailmaa.

Järjestelmään kuuluu oleellisesti myös palvelinpuolen sovellus, joka hoitaa käyttäjien kirjautumisen järjestelmään.

Termit

PIN-koodi on käyttäjäkohtainen "salasana", jota käytetään satunnaisen avaimen lisäksi kirjautumisessa

Token on laite tai ohjelma, joka näyttää käyttäjälle kirjautumiseen käytettävän avaimen. Token voi olla esimerkiksi avaimenperä tai älykortti.

Avain on tokenin näyttämä satunnaisfunktion muodostama kirjautumisessa käytettävä numerosarja.

Siemenluku on tokeneissa oleva yksilöllinen luku, josta lasketaan laitteen näyttämät avaimet.

Järjestelmän osat

Palvelin

Käyttäjän tunnistuksen palvelimella hoitaa yleensä sovelluskohteen kanssa yhteensopiva erillinen ohjelmisto.

Palvelimella on tiedossa kaikkien järjestelmää käyttävien laitteiden siemenluvut ja käyttäjien PIN-koodit. Näin ollen palvelin pystyy käyttäjällä olevaa laitetta vastaavasti laskemaan mikä avain käyttäjällä pitäisi kyseisellä hetkellä näkyä.

Yksi tällainen yleisesti käytössä oleva, kirjautumisia hallinnoiva ohjelmisto on RSA Authentication manager. Se on yhteensopiva yli 300:n ohjelmiston tai verkkotuotteen kanssa [5].

Tokenit

Käyttäjällä oleva avaingeneraattori voi olla joko tarkoitukseen suunniteltu laite (esim. avaimenperä tai kortti) tai ohjelmisto erillisessä laitteessa (esim. PC tai matkapuhelin). Erilliset laitteet sisältävät prosessorin, muistia ja nestekidenäytön. Nämä laitteet on suunniteltu mahdollisimman turvallisiksi siten, että siemenlukua on vaikea selvittää vaikka hyökkääjä pääsisi laitteeseen käsiksi [4]. Tällaisesta peukaloinnista on hieman tarkemmin turvallisuus-otsikon alla. Mikäli saadaan selville serverillä oleva siemenluku ja tämänhetkinen avain, voidaan emuloida laitteen toimintaa ohjelmallisesti.

Salasanalaskurin käyttö voi helposti tulla kalliiksi ainakin isoissa, paljon käyttäjiä sisältävässä järjestelmässä mikäli jokaiselta käyttäjältä vaaditaan salasanalaskurin käyttöä. Etenkin jos laskurit on ohjelmoitu vanhenemaan ja on laitteita on uusittava [1].

Käyttö

Koska salasanalaskureita käyttävä autentikointi on kaksiosainen, ei hyökkääjälle riitä pelkkä salasanalaskurin saaminen (tai sen näkeminen). Käyttäjä tunnistetaan sekä laitteen näyttämän avaimen että henkilökohtaisen tunnusluvun/salasanan avulla. Laitteen näyttämä avain muodostetaan kellonajan ja jokaiselle laiteelle yksilöllisen satunnaisen siemenluvun perusteella. Sekä aika-arvo että siemenluku ovat 64-bittisiä joista lasketaan laitteen näyttämä avain tiivistefunktiolla [2]. Laitteen näyttämää avainta voi käyttää kirjautumiseen vain kerran. Mikäli halutaan kirjautua heti uudelleen, on odotettava, että avain vaihtuu. Tämä lisää osaltaan järjestelmän turvallisuutta. Laite näyttää pienenevällä palkilla, miten paljon aikaa on jäljellä avaimen vaihtumiseen [3].

Kun käyttäjää autentikoidaan, voi ongelmia esiintyä mikäli pääsyä valvovan serverin ja käyttäjälle salasanaa näyttävän laitteen kellot eivät ole samassa ajassa. Useimmiten serveri osaa kuitenkin synkronoida ajan oikeaksi ilman, että käyttäjän tarvitsee tehdä mitään. Mikäli käyttäjä ei ole kirjautunut vähään aikaan ja kirjautuessaan syöttää oikean PIN-koodin ja tällaisen väärään aikaan menneen laitteen näyttämän avaimen, palvelin yrittää löytää käyttäjän syöttämän koodin antaneen kellonajan. Näin laitteen käyttö on usein mahdollista, vaikka laite periaatteessa näyttäisikin väärää avainta.

Väärää koodia ei kuitenkaan hyväksytä kirjautumiseen tällaisessakaan tapauksessa. Palvelin tallentaa tiedon eri tahdissa olevien laitteiden kellosta jolloin laitetta voidaan käyttää vaikka laitteen ja palvelimen kellot olisivatkin eri ajassa. Synkronoinnin voi tehdä myös manuaalisesti. Laitteiden kellot menevät sitä helpommin väärään aikaan mitä vähemmän niitä käytetään. [4]

Turvallisuus

Suurin uhka järjestelmän turvallisuudelle on luonnollisesti ihmisten huolimattomuus. Niinkuin perinteisten salasanojen kanssa, myös SecurID:ä käytettäessä käyttäjä on omalta osaltaan vastuussa järjestelmän turvallisuudesta. Käyttäjän on siis ilmoitettava laitteen katoamisesta . Järjestelmän turvallisuuden ei kuitenkaan pitäisi olla uhattuna, vaikka laitteen numeroita olisi pystytty tarkkailemaan jonkin aikaa [2].

Teoriassa laitteen näyttämien numeroiden avulla voidaan laskea laitteeseen ohjelmoitu siemenluku. Mikäli saadaan tietoon suuri määrä peräkkäisiä laitten näyttämiä lukuja ja niistä löytyy kaksi lähellä toisiaan olevaa aikaa jotka tuottavat saman luvun, on hyökkääjällä mahdollisuus löytää laitteen siemenluku. Tällainen vaatii kuitenkin huomattavan määrän laskentatehoa. Tavallisella kotikoneella tällaisen laskeminen veisi vähimmilläänkin kuukausia [2].

Ellei hyökkääjä samanaikaisesti tiedä sekä käyttäjän avainta, sekä henkilökohtaista PIN-koodia, on järjestelmä melko turvallinen. Mikäli hyökkääjä tietää salasanalaskurin senhetkisen avaimen ja yrittää arvata PIN-koodin, lukitsee järjestelmä tunnuksen muutaman väärän arvauksen jälkeen. PIN-koodi on 6-8 merkkiä pitkä ja voi sisältää kirjaimia (a-z) ja numeroita. Myös laitteen näyttämän avaimen kirjoittaminen väärin useita kertoja peräkkäin aiheuttaa tunnuksen lukitsemisen, vaikka syötetty PIN-koodi olisikin oikein [4].

Laitteet suunnitellaan sietämään mahdollista peukalointia, jottei niihin ohjelmoitua koodia saisi selville vaikka saisi käsiin itse laitteen. Ne tunnistavat mikäli niiden koteloa yritetään avata ja tyhjää salaisen koodin muististaan. Ne tunnistavat myös muita, fyysisiä tai elektronisia yrityksiä saada selville laitteen koodi. Vaikka koodin selvittäminen laitteesta on luonnollisesti mahdollista kunhan siihen nähdään tarpeeksi vaivaa, RSA Security Inc. ei tiedä ainoatakaan tällaista tapausta. [4]

Ohjelmallisten tokeneiden (Software token) turvallisuudesta

Tokenohjelmiin liittyy erillistä token-laitetta (hardware token) suurempi turvallisuusriski. Yleensä ohjelmien käyttämä siemenluku toimitetaan käyttäjälle erillisenä tiedostona. Mikäli tämmöinen tiedosto varastetaan, voidaan token kloonata. [7]
Toinen huono ominaisuus ohjelmallisissa tokeneissa on niiden riippuvuus laitteen kellosta. Muuttamalla laitteen kelloa, voidaan generoida etukäteen avaimia jotka ovat kelvollisia joskus tulevaisuudessa. [7] Jotkut tuoreimmat token-ohjelmat käyttävät kuitenkin julkisen avaimen- tai asymmetristä kyrptologiaa. Näillä moni ohjelmisto-tokeneita koskeva ongelma on saatu kuriin. PIN voidaan tallettaa autentikointipalvelimelle, jolloin virheelliset kirjaukset havaitaan logeista ja token voidaan disaploida.

Väitetty tiivistefunktio (Alleged SecurID Hash Function)

RSA Security ei ole julkaissut todellista tiivistefunktioa, mutta väitetyn tiivistefunktion lähdekoodi on julkaistu Internetissä vuonna 2000. Tiivistefuinktion julkaisemista ei kuitenkaan pidetä riskinä sen turvallisuudelle. Tälle tiivistefunktiolle on tehty useita kryptoanalyysejä mm. yliopistojen toimesta. [6]

SecurID:ssä käytössä oleva tiiviste-funktio tuottaa 6-8 numeroa pitkän tiivisteen kellonajasta ja jokaiselle laitteelle yksilöllisestä pysyvästä siemenluvusta. Siemenluvun pituus on 64 bittiä. Kellonaika on ilmaistu sekunteina vuoden 1986 alusta. Tämä 32 bitin mittainen aika laajennetaan erillisellä funktiolla 64:n bitin mittaiseksi.

Tiivistefunktio koostuu kahdesta bittien muuntelusta (Key-Dependent Initial and Final Permutation) ja neljästä sisemmästä kierroksesta (Key-Dependent Round).Jokainen kierros koostuu 64:stä sisemmästä kierroksesta. Lopuksi tehdään vielä muunnos kymmenpotenssimuotoon. Näiden toimenpiteiden jälkeen jäljelle jää 16 numeroinen kymmenpotenssimuodossa oleva luku jota käytetään kahteen seuraavaan 6- tai 8-numeroiseen avaimeen. [6]

Lähteet

Print version |  PDF  | History: r2 < r1 | 
Topic revision: r2 - 17 Nov 2009 - 23:02:25 - AleksiUlkuniemi?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback