11. helmikuuta 2009

Bluetooth tietoturva (ttomuus)

Olen itse jo vuosia sitten kertonut kotisivuillani Bluetooth tietoturvariskeistä ja niiden minimoimisista. Hauska huomata, että viime aikoina mm. YLEnanto on kiinnittänyt samoihin asioihin huomiota. Syytä onkin.

Bluetoothia käytetään monissa pienlaitteissa, kuten vaikkapa matkapuhelimissa, hands free -laitteissa, digibokseissa jne. Bluetoothia mainostetaan helppona ja turvallisena tapana pienten etäisyyksien langattomaan tiedonsiirtoon. Valitettavasti todellisuus on jotain aivan muuta.

Bluetooth on tosiasiassa turvaton ja salakuunneltavissa reilusti yli kilometrin päästäkin kotitekoisilla laitteillakin. Yksityinen puhelusi voi olla helposti koko kulmakunnan kuultavissa, jos puhut käyttäen hands free -laitetta. Matkapuhelimesi sisältämiä tietoja voidaan varastaa ja sinne syöttää haittaohjelmia Bluetoothia käyttämällä. Langatonta näppäimistöäsi voidaan salakuunnella ja niin edelleen.

Oma kirjoitukseni on lyhyt ja selkokielinen sekä suomenkielinen, mutta tuo esille olennaiset turvallisuuteen liittyvät asiat kuitenkin tavalliselle Bluetoothin käyttäjälle. Suosittelen lukemaan tuon osion huolella, eräänlaiseksi alustukseksi vaikkapa.

Perusasiat Bluetoothin turvallisuuden suhteen eivät ole muuttuneet miksikään, vaikka niitä erittäin harvoin jaksetaan ihmisille kertoa. Tärkeimmät opetukset ja suojautumiskeinot Bluetoothin tietoturvaongelmiin ovat yhä seuraavat:
1) Pidä Bluetooth pois päältä aina, kun et tarvitse sitä.
2) Pidä Bluetooth laitteet "piilotetussa tilassa" silloinkin kun käytät niitä.
3) Hyväksy vain salatut ja autentikoidut yhteydet riittävän pitkällä PIN-koodilla (mieluiten koko 16-merkkiä pitkä satunnainen ja vaihdettavissa oleva).
4) Pidä puhelimesi tai muun Bluetooth laitteesi päivitykset kunnossa!

Bluetoothin nykyversiossa salaus ei kuitenkaan ole mitenkään kovin vahvaa, joten edes pitkä ja monimutkainen PIN-koodi ei anna vahvaa suojaa. Usein se antaa kuitenkin aivan riittävän vahvan suojan. Sekin on huomattavasti paljon parempi, kuin olematon suoja, mitä oletuksena useasti olevan "0000" PIN-koodin käyttäminen antaa.

Sitten itse asiaan. Tai tavallaan, syvemmälle itse asiaan, eli Bluetoothin tietoturvattomuuteen. Keijo Haataja on väitellyt 6.2.2009 tohtoriksi Kuopion yliopistossa aiheella:"Security Threats and Countermeasures in Bluetooth-Enabled Systems (Turvallisuusuhkat ja vastatoimet Bluetooth-yhteensopivissa järjestelmissä)". Itse väitöskirja on ladattavissa esimerkiksi tästä. Haatajan väitöskirja on tuhtia ja pelottavaa luettavaa.

Sen mukaan periaatteessa Bluetooth-laitteita on mahdollista käyttää turvallisesti, jos ne tukevat esimerkiksi "johdot-kiinni-ja-paritetaan-toisemme" menetelmää (OOB) JA ne silloin myöskin muodostavat parituksen vahvalla salauksella, eivätkä myöhemmin suostu vaihtamaan salausta tai mitään muutakaan miksikään ilman uutta "johdot-kiinni" paritusta. Käytännössä tuota kaikkea on kuitenkin hyvin vaikea tavallisen käyttäjän koskaan varmistaa, joten edelleenkin, suosittelen käyttämään ja luottamaan pitkään PIN-koodiin.

Käytännössä tilanne on muutoin se, että kaikki nykyiset Bluetoothin versiot ovat tietoturvan kannalta heikkoja. Ne ovat erilaisin menetelmin salakuunneltavissa, häirittävissä, kaapattavissa ja käytettävissä väärin. Tulossa oleva, Bluetoothin 3.0 spesifikaatio tuo asiaan kuitenkin hieman parannusta. Todellisuudessa parannusta tulee vasta, kun käytetään vain ja ainoastaan tuon speksin mukaista Bluetoothia ja sitäkin tietyin varauksin. Pelkkä hienon ja turvallisen speksin olemassaolo tai tuki sille ei takaa mitään, jos vaikkapa matkapuhelimesi vaivihkaa suostuu käyttämään vanhaa, epäturvallista Bluetoothia myöskin!

Yleinen ongelma Bluetoothin erilaisissa, suoraan sanottuna naurettavan monimutkaisissa "turvallisuus"ominaisuuksissa on, että ne ovat kierrettävissä. Laitteet voidaan ulkopuolisen hyökkääjän toimesta yksinkertaisesti huijata käyttämään epäturvallisia turvaominaisuuksia tai jopa kytkemään ne kokonaan pois päältä. Esimerkiksi 2.1+EDR versio Bluetoothista mahdollistaa periaatteessa turvallisen toiminnan SSP:n avulla, mutta sama speksi määrittelee, että laitteet voidaan hiljakseen käskeä olemaan käyttämättä ko. ominaisuutta. No arvatkaapa, käskeekö hakkeri laitteesi olla käyttämättä ko. ominaisuutta jos hän aikoo ne hakkeroida? Mitäs veikkaatte? Niin ikään salausavaimen pituudeksi voidaan määritellä mitä vain, aina 128 bittiin asti...mitä veikkaatte, mitä hyökkääjä sanoo laitteillesi sopivasta salausavaimen pituudesta? Noniin.

Näin naurettava suunnittelufilosofia antaa mielestäni lähinnä surkuhupaisan kuvan ko. järjestelmän suunnittelijoiden tietoturvaymmärtämyksestä. Bluetoothissa on tultu versiosta 1.0 jo versioon 2.1+EDR:ään kymmenen vuoden kuluessa ja järjestelmän turvallisuuteen on tullut yhä lisää turvaominaisuuksia, esimerkiksi PKI:hin perustuva avainvaihto ja muuta hölmöä. Kaikki täysin turhaan. Yhä ainoa todellinen turvallisuus nojaa salaukseen ja sen onnistuminen ainoastaan riittävän turvalliseen PIN-koodiin. Mutta kun PIN-koodi on useinmiten nelinumeroinen luku, ja usein 0000, niin turvallisuuskin on sama pyöreä nolla käytännössä.

No, eihän toki mitään ihmeitä voisi tehdäkkään oikeasti. Salausavaimeenhan salauksen pitää pohjimmiltaan perustua ja salaukseen pitää pohjimmiltaan kaiken tiedon salassa pitämisen pyrkiä perustumaan. Mitään vippaskeinoa ei ole. Ei kerta kaikkiaan ole. Julkisen avaimen salauskaan ei tuo helpotusta, koska siinäkin avaimet pitää pystyä turvallisesti vaihtamaan, suojassa man-in-the-middle-attackilta. Vaikka tekisimme mitä hilavitkutin vääntöjä ja kääntöjä, tämä perusasia ei muutu miksikään: Vahvaa salausta on käytettävä ja sen salausavaimet pitää saada turvallisesti siirrettyä salausta keskenään haluavien tahojen välille. Tämä tuntuu Bluetoothin turvallisuusspeksejä vääntäviltä unohtuvan.

Bluetoothin suurimmat turvallisuusongelmat saataisiin helposti korjattua, jos vain halua olisi. Yksinkertainen parannusehdotukseni Bluetooth tietoturvattomuuteen:
  1. Jokaisen laitteen olisi käytettävä vähintään 24-merkkistä PIN-koodia ja tuon koodin on oltava vaihdettavissa. Mikäli laitteessa ei ole näppäimistöä, laitteessa on oltava jokin johdotus, joka mahdollistaa sen PIN-koodin turvallisen muuttamisen, sekä ohjeet ja kehoitukset siitä, miten käyttäjä voi sen itse vaihtaa.

  2. Laitteissa, jotka haluavat muodostaa yhteyden toisiinsa ensimmäisen kerran, pitää fyysisesti painaa jotain nappia, jotta paritusprosessi lähtee käyntiin. Näin estetään tahattomat pariutumiset ja sekaannukset, sekä toisaalta osataan kertoa laitteen omistajalle, että jostain syystä pariliitos on rauennut. Kun laitteet eivät ole pariutumistilassa, ne ovat näkymättömässä tilassa, eli eivät kerro ympäristölleen olemassaolostaan mitään.

  3. Kun paritusprosessi käynnistyy, molemmat laitteet lähettävät toisilleen vaikkapa 512 bittiä satunnaista dataa. Yhdistämällä tämä data kryptografisella tiivistefunktiolla salaiseen PIN-koodiin luodaan pääsalausavain. Tiivistefunktiota voidaan pyörittää vaikkapa 1000, 10000 tai 100000 kertaa, jotta lisätään salausavaimen etsimisen vaikeutta entisestään.

  4. Pakotetaan laitteet käyttämään vahvaa salausta ja autentikointia, esim AES-256 jne. kaikissa yhteyksissä. Ei pilipalisalausta kiitos, vaan kunnon, vahva salaus ja autentikointi ja pakollisena. Mitään muuta ei hyväksytä.

  5. Pääsalausavainta käytetään salaamaan yhteyskohtaiset, satunnaiset salausavaimet (AES-256), jotka luodaan aina, kun kaksi ennestään jo paritettua laitetta palaa taas toistensa yhteyteen. Näin jokainen yhteys on salattu erillisella avaimella, eikä pääsalausavainta ja paritusprosessia tarvitse enää käydä periaatteessa koskaan läpi näiden laitteiden kanssa, vaan kerran tehdyn paritusprosessin seurauksena on tallessa pääsalausavaimet näille laitepareile.

  6. Mikäli PIN-koodit täsmäävät laitteissa, ne kykenevät muodostamaan oikeat salausavaimet ja siten koko yhteys on ylipäätään mahdollinen. Mikäli PIN-koodi on väärä, yhteyttä ei ole mahdollista edes muodostaa. Näin ollen, vain valitsemalla vahva PIN-koodi, pitämällä se salassa ja laittamalla sama PIN-koodi niihin laitteisiin, joiden halutaan voivan toimia keskenään, voidaan olla varmoja siitä, että yhteys on aina turvallinen. Käyttäjän ei tarvitsisi tehdä mitään muuta, eikä murehtia mistään muusta.

  7. Lisäbonuksena voidaan kehittää esimerkiksi sellaista, että laitteiden käyttämä taajuushypytys ja taajuusalue on näennäissatunnainen. Näennäissatunnaisuuden määrittelee vaikkapa pääsalausavaimesta johdettu hypytysavain. Näin ollen on mahdollista kätkeä todellakin miltei täydellisesti Bluetooth-laitteiden olemassaolo ja käyttö, koska tietämättä oikeaa PIN-koodia ja pystymättä seuraamaan alkuperäistä paritustapahtumaa, ei ole mahdollista tietää, millä taajuudella milloinkin kyseiset laitteet edes kommunikoivat keskenään. Salattu datapurske hukkuu eri taajuuksille kovaan hypytykseen.
Voila!

Bluetoothin turvallisuuteen perehtynyt lukijani varmasti ymmärtää, että itse asiassa, nykyinen Bluetooth toimii hyvin samaan tapaan kuin tuossa kuvailemani. Ainoana varsinaisena parannuksena olisi siis: PIN-koodin pituuden kasvattaminen ja käytön pakottaminen ja vaihtamisen mahdollistaminen, salauksen vaihtaminen vahvaan ja sen käytön pakottaminen, sekä mahdollisesti tuo laitteiden kätkeminen taajuushyppelyn taakse.

Paljon ei tarvitsisi tehdä, niin turvallisuus olisi taattua. Kunhan ei annettaisi mahdollisuutta laitteille tehdä mitään muuta, kuin toimia vain turvalliseen tapaan. Ei kompromisseja, ei kiertoteitä, ei mahdollisuutta "neuvotella" turvallisuutta pienemmäksi. Ei, ei ja ei.

Miksi näin ei sitten tehdä? Vastaus on yksinkertainen: Ihmiset ostavat Bluetooth laitteita nykyiselläänkin, eivätkä ymmärrä eivätkä välitä vaatia kunnon turvallisuutta. Harvat edes tietävät, mitä kaikkia riskejä Bluetoothin nykyiseen käyttöön liittyy. Kun ihmiset kerran ostavat paskaa, niin miksi vaivautua kehittämään parempaa...

Jos sinua kiinnostaa, mitä kaikkea hauskaa voi Bluetoothilla tehdä ja mitä tietoja kaivaa pahaa-aavistamattomien ihmisten laitteista jne. niin suosittelen kokeilemaan tätä hauskaa ohjelmaa. Se toimii useimmissa javaa pyörittävissä älypuhelimissa ja on ilmainen, sekä helppokäyttöinen.

2 kommenttia:

Sinuhesieda kirjoitti...

En saanut toimimaan Samsung Suol:ssa. Harmi olis ollut kiva kokeilla.

Markus Jansson kirjoitti...

Saitko noita muita ohjelmia sieltä toimimaan? Kannattaa googlettaa, on muitakin hyviä ohjelmia ja sivustoja Bluetooth temppuiluun liittyen.