28. tammikuuta 2019

TiVi: Langattomat autonavaimet turvattomia - hupaisaa!

Olipas hupaisaa lukea Tietoviikosta tänään jymyuutinen:"Katso surulliselta listalta, lähtisikö uudehko autosi helposti varkaan matkaan", jossa kerrotaan "avaimettomien" langattomien autonavainten tietoturvariskeistä. Hupaisaa siksi, että itse kirjoitin näiden härveleiden tietoturvattomuudesta blogissani miltei päivälleen 8 vuotta sitten! Eipä se silloin toimittajia tai yleisöä tuntunut kiinnostavan. Ehkä nyt, kun TiVi uutisoi samasta asiasta 8 vuotta myöhemmin, se saa suurenkin yleisön mielenkiinnon ja ihmettelyn "Voi, miksei kukaan kertonut meille tätä merkittävää ja aika lapsellista tietoturva-aukkoa aiemmin, miten olimmekaan vuosikausia pimennossa ja miten näin mittava tietoturva-aukko ylipäätään saattoi koskaan olla mahdollinen..." 

Kyllä tälle kansalle asioista valistaminen ja varoittaminen on täysin turhaa työtä. Ei näin tyhmä kansa mitään opi, ei ainakaan, jos oppi tulee minulta.

Väännetään rautalangasta: Mikä tahansa avainsysteemi, joka ei vaadi avaimen omistajan aktiivisuutta, on automaattisesti tietoturvaton. Aivan kuten on mikä tahansa muukin tietoturvaratkaisu, joka ei vaadi mitään, eli joka toimii "automaattisesti". Tälle faktalle ei mikään vippaskonsti voi tehdä yhtään mitään, vaikka kuka väittäisi markkinointipuheissaan mitä.

Tosin sekään, että systeemi vaatii käyttäjän napin painallusta, ei tee siitä maagisesti turvallista, ei etenkään, jos systeemi toimii langattomasti. Avaimessa ja vastaanottimessa pitäisi olla sisäinen, tarkka ja keskenään vielä jokaisesta oikeasta vastauksesta uudelleensynkronoituva kello ja salattu yhteys vaihtuvalla avainkoodilla ja vahvalla salauksella. Ja se tärkein juttu, joka voi olla vaikeaselkoista, mutta juuri täsmälleen näin eikä mitään muttia eikä ettiä: Jokaisen napinpainalluksen tulisi luoda satunnaiseen siksi kerraksi luotuun lukupariin (auto ja avain luovat molemmat oman satunnaisen luvun) ja siemenlukuun kryptografisesti yksisuuntaisella tiivistefunktiolla kytketty aikaleimattu avauskäsky ja  sen tulisi olla voimassa vain esimerkiksi 5s ajan, jonka jälkeen se muuttuu epäkelvoksi vastaanottimessa. Homman voisi esittää kaavana, jossa x on siemenluku (512bit), z on satunnainen luku (256bit) ja t on aikamääre sekunnin tarkkuudella: sha512(x+z1+z2+t). 

Pelkistetysti sanottuna, ensiksi avain ilmoittaa autolle, että "hei, minä täällä, sarjanumeroni on se ja se, haluan avata/sulkea auton" ja jos sarjanumero täsmää, auto aloittaa vastaviestinnän muodossa "ahaa, jos olet avain, niin sitten osaat kertoa, mikä on oikea vastaus, kun siemenluvusta, minun luomastani luvusta z1, joka on esim. 4257982457982348567245609235 ja sinun luomastasi luvusta z2, sekä aikamääreestä t, joka on nyt siis esim. 20190128195546 tehdään SHA512 tiiviste?". Avain ottaa nämä tiedot, keksii luvun z2, tekee laskutoimituksen ja vastaa autolle "Vastaus on (esimerkiksi) AFHEARHJADVGYTUAERTYZVJHEUGFTHO, kun z2 on esimerkiksi 469284624276420684256078082426". Auto ottaa avaimen antaman luvun z2 ja tekee saman laskutoimituksen omaa sisäistä kelloaan aikamääreenä käyttäen ja jos vastaus on sama, avain on tunnistautunut autolle ja auto on tunnistautunut avaimelle ja ovet voidaan avata. (Tarkemmin sanottuna avain ja auto voivat tehdä vaikkapa 5 eri laskutoimitusta 5 eri sekuntimäärää käyttäen ja lähettää kaikkien niiden tulokset toisilleen, jos yksikin niistä täsmää, avauskäsky on oikea. Tämä siksi, että kellot eivät välttämättä ole aivan jetsulleen samassa ajassa autossa ja avainperässä.) Auton omistajalle sitten vaikkapa erillisen turvakortin raaputuspinnan taakse tuo siemenluku varmaan talteen siltä varalta, että joskus autonavaimet hukkuvat ja pitää luoda uudet avaimet.

Tällöin mitkään "napataan yksi signaali ja syötetään se myöhemmin" hyökkäyksetkään eivät onnistu, koska myöhemmin syötetyt signaalit eivät ole enää ajallisesti kelpoja, eikä tietenkään ajanmukaista signaalia ole mahdollista luoda tietämättä salaista siemenlukua (joka ei luonnollisestikaan ikinä poistu laitteista ja joka on niissä turvapiirin suojissa lukuyrityksiä vastaan). Auton tai avaimen minkäänmoinen feikkaaminenkaan tai satunnaisluvun "korvaaminen" tunnetulla luvulla ei onnistu, kun molemmat osapuolet (auto ja avain) kumpikin luovat ja käyttävät myös itse luomaansa satunnaista lukua tuossa systeemissä. Yhteyden auton ja avaimen välillä ei tarvitse edes olla salattua, kun systeemi tehdään näin, mutta ei mikään toki estä käyttämästä vaikka AES256-salausta satunnaisilla 128bit IV:llä ihan vaan vittumaisuuden vuoksi, puhumattakaan toki vahvasta hajaspektrilähetteestä (DSSS), joilla jo itsessään tehdään toki lähetteen kaikenlainen kuuntelu ja myös häirintä mahdottomaksi toteuttaa. Tällöin systeemissä on ikäänkuin tuplasuojaus, mikä on enemmän kuin tarpeeksi kaikkia nykyisiä ja tulevia hyökkäyksiäkin vastaan. Hintaa tämmöiselle systeemille ei tulisi kuin muutamia euroja, korkeintaan pari-kolmekymmentä euroa ja se olisi ns. idiootinvarma.

Toki yllä kerrotun sijaan voitaisiin myös ottaa oppia nettimaailmasta ja käyttää auton avaamiseksi yksinkertaisesti U2F:ää, eli käytännössä tämmöistä Yubikeyn avainta. Sama avain sopisi sitten myös mainiosti kaikissa tunnetuissa nettipalveluissa turvalliseen 2-vaiheiseen tunnistautumiseen tietokoneen usb-väylän kautta. Toki kaikki NFC-höpötykset pitäisi unohtaa ja käyttää fyysistä USB-porttia auton ovessa, jonne tuo Yubikeyn tikku tökättäisiin ja josta painettaisiin nappia (muuten olemme taas takaisin ongelman ytimessä, eli ei-aikakoodatun radiosignaalin edelleenlähetyksessä). Siinäpä olisikin todella edullinen, monikäyttöinen, turvallinen ja jo hyväksi havaittu ratkaisu tähän autojen turvallisuusprobleemaan - ja samalla kertaa se ratkaisisi netinkäyttäjien 2-vaiheisen tunnistamisen ongelman!

Mutta niin kauan, kun edes miljardiluokan bisnestä pyörittävät autonvalmistajat eivät välitä, eivätkä tajua turvallisuudesta edes sen vertaa, että ymmärtäisivät jo maalaisjärjellä havaittavissa olevan perinpohjaisen tietoturvattomuuden, edes sen jälkeen, kun siitä on jo kohta 10 vuotta sitten rautalangasta vääntäen heille kerrottu, ei liene toivoakaan, että ne koskaan ryhtyisivät mihinkään noin suuriin tietoturvaparannuksiin. Tietoturvan taso on ja pysyy jatkossakin autoissa aivan olemattomana. Eivätkä kuluttajat toki parempaa tajua edes vaatia, joten saavat sitä, mitä ansaitsevatkin: Paskaa.

13 kommenttia:

Zarr kirjoitti...

Tiedoksi, noi tuoreimmat jutut on näiden uudempien autojen "käyttäjäystävällisten" fobien ongelma, jotka todellakin viestivät auton kanssa koko ajan. Idea on että mitään nappia ei tarvitse painaa, sen kuin vain kävelee autolle ja avaa oven. Kantama on todella pieni. Salausongelmaa ei noissa ole, koska liikenne on kaksisuuntaista ja siinä tehdään challenge + response. Ongelma on se tosiaan että tuolla proxyttämisellä tuhotaan fyysinen turvallisuus.

Uusimmissa BMW:n malleissa ratkaisu on että avaimessa on liiketunnistin, joten se alkaa lähettää dataa vasta kun avain on liikkeessä, eli omistaja todennäköisesti lähdössä autolleen. Kämpän seinällä lepäävä avain siis on hiljaa.

Vanhemmissa, napilla avattavissa avaimissa käytetäänkin sitten symmetristä salausta (yleensä pienellä tai jopa olemattomalla suolauksella), ja siinä liikenteen kaappaamisella ja myöhemmin toistamisella voikin päästä jo etenemään.

Mutta tosiaan, uusien autojen keyless fobit joissa nappeja ei painella eivät ole turvattomia kryptoskemansa osalta (implementaatiot voivat toki olla).

Anonyymi kirjoitti...

Miksi sekä avaimessa että autossa tarvitaan kello? Eikö riitä, että auto tarkistaa, että vastaus avaimelta tulee niin nopeasti, että avaimen täytyy olla lähellä? Silloin avaimessa ei tarvita kelloa.

Markus Jansson kirjoitti...

> Miksi sekä avaimessa että autossa tarvitaan kello? Eikö riitä, että auto tarkistaa, että
> vastaus avaimelta tulee niin nopeasti, että avaimen täytyy olla lähellä? Silloin avaimessa
> ei tarvita kelloa.

Jos debiilinä vaivautuisit edes hitusen lukemaan, mistä jutussa kerrotaan, niin tajuaisit, että nimenomaan juuri tuossa on se tietoturvaongelma, kun juuri tuo juttu on hakkeroitu.

Markus Jansson kirjoitti...

> Uusimmissa BMW:n malleissa ratkaisu on että avaimessa on liiketunnistin, joten se alkaa
> lähettää dataa vasta kun avain on liikkeessä, eli omistaja todennäköisesti lähdössä
> autolleen. Kämpän seinällä lepäävä avain siis on hiljaa.

Silti aivan saatanan tyhmä ja turvaton tuokin, kun avain voidaan kuitenkin käyttää, niin kauan kun se on käyttäjän taskussa ja käyttäjä siis liikkuu. Yksinkertainen systeemi olisi tuossa, että avaimessa olisi nappi, josta sen saa pois päältä halutessaan, jolloin tämmöistä ongelmaa ei olisi. Toki vielä yksinkertaisempaa olisi olla kokonaan käyttämättä moista paskasysteemiä.

> Vanhemmissa, napilla avattavissa avaimissa käytetäänkin sitten symmetristä salausta
> (yleensä pienellä tai jopa olemattomalla suolauksella),

Näissä käytetään yhä 40bit salausta, joka on murrettavissa kotikoneella. Miksei ole siirrytty 128bit salaukseen? Koska kukaan ei välitä vittuakaan. Niih.

> ja siinä liikenteen kaappaamisella ja myöhemmin toistamisella voikin päästä jo etenemään.

Joo tai tarkemmin sanottuna hyökkäys menee noissa niin, että häiritään signaalia auton lähellä ja kaapataan se käyttäjän eka napinpainallus itse talteen. Sitten käyttäjä ihmettelee, miksei auto lukkiutunut ja painaa uudestaan nappia, jolloin otetaan sekin kakkospainallus talteen ja syötetään samalla autoon se ykköspainallus. Nyt hyökkääjillä on se kakkospainallus muistissa ja voivat syöttää sen autoon seuraavaksi, avaten siten auton käyttöönsä. Toki jos käyttäjä ei huomaa, että ykköspainallus ei mennytkään perille, niin autohan on jo valmiiksi vapaasti hyökkääjien käytössä, kun se ei kerran ole mennyt lukkoon.

Juuri tuon takia noissa pitäisi käyttää kaksipuolista aikakoodausta ja asettaa aikaraja, jolloin lähetys x on kelpo, jolloin vanhan lähetyksen kaappaus ei auta mitään, kun se on jo ehtinyt vanhentua käyttökelvottomaksi.

Anonyymi kirjoitti...

No Tivin jutun mukaan signaali autolta avaimelle ja toiseen suuntaan välitetään pidemmän matkan päästä. Eli edelleenkään en ole nähnyt selitystä sille miksei riitä, että pelkästään autossa on tarkka kello? Auto siis lähettää avaimelle signaalin ja jos avain ei palauta omaa signaalia alle 5 nanosekunnissa, niin silloin avain on yli kolmen metrin päässä. Mikä tässä on ongelmana?

Markus Jansson kirjoitti...

Naamapalmu.jpg

Becker kirjoitti...

Mulla on avaimet kotona vanhassa peltisessä sikarilaatikossa. Pieni haitta sekin.

Anonyymi kirjoitti...

Mitä tarkoitat naamapalmullasi? Sitäkö, että auton pystyy silti varastamaan ilman avainta, jos avain on alle kolmen metrin päässä? No hui kamala, jos pystyy. Autoja varastetaan äärimmäisen harvoin siten – ja silloin, kun niin käy, niin varas on muutenkin sen verran röyhkeä, että ottaa avaimen tarvittaessa omistajan kädestä tai taskusta. Jos joku päättääkin lähteä autolla liikkeelle ilman avainta, niin ei se sitä enää uudelleen pysty käynnistämään. Nykyäänkin melkein kaikki ihmiset jossain tilanteissa jättää auton valvomatta siten, että avain on virtalukossa. Harva sammuttaa ja lukitsee autoa, jos käy vaikka peräkontilla.

Markus Jansson kirjoitti...

> Auto siis lähettää avaimelle signaalin ja jos avain ei palauta omaa signaalia alle 5
> nanosekunnissa...
> Mitä tarkoitat naamapalmullasi? Sitäkö, että auton pystyy silti varastamaan ilman avainta,
> jos avain on alle kolmen metrin päässä

Kuvailemasi noin tarkka ajanmääritys ja siitä tehtävä avaimen etäisyyden määritys edellyttäisi atomikelloja sekä avaimessa että autossa. GPS perustuu atomikelloihin ja niistä tulevien aikasignaalien erotuksen laskemiseen. Tavallisissa kelloissa noin tarkkaan ajanmääritykseen ei ole mahdollista päästä ja juuri siksi tuo systeemi (lasketaan signaalin kulusta kestävä aika ja siitä signaalin lähdön etäisyys autosta) ei toimi. Kellot heittäisivät hieman toisistaan ja auto ei avautuisi lainkaan.

> Jos joku päättääkin lähteä autolla liikkeelle ilman avainta,
> niin ei se sitä enää uudelleen pysty käynnistämään.
Ei tarvitsekaan pystyä, kun auton jo voinut ajaa vaikka minne asti ja alkaa purkamaan osiksi tai kiertämään kaikessa rauhassa ajonestojärjestelmää.

Anonyymi kirjoitti...

Yhden gigahertsin taajuus riittää nanosekunnin mittaamiseen. Atomikelloa ei tarvita, koska kellonaika on tässä asiassa epärelevantti. Ainut mikä ratkaisee on se aika nanosekunteina, jonka signaali kulkee. Kaikista tarkimmat oskilloskoopit toimivat 100 gigahertsin taajudella. Ja kuten sanoin, niin avaimessa ei tarvita kelloa. Autossa olisi laite, joka laskee ajan joka kuluu signaalin edestakaiseen matkaan.

>> Jos joku päättääkin lähteä autolla liikkeelle ilman avainta,
>> niin ei se sitä enää uudelleen pysty käynnistämään.
>Ei tarvitsekaan pystyä, kun auton jo voinut ajaa vaikka minne
> asti ja alkaa purkamaan osiksi tai kiertämään kaikessa rauhassa
> ajonestojärjestelmää

No joo totta, mutta kuten sanoin, niin aina autoja on ollut mahdollista varastaa silloin, kun auton ovet ovat hetkellisesti auki tai avainten haltija on lähelle, jolloin avaimet voi ryöstää siltä.

Anonyymi kirjoitti...

GPS-vastaanottimien kello toimii 10 nanosekunnin tarkkuudella. Valo kulkee nanosekunnissa itse asiassa 30 senttiä, joten 10 nanosekunnissa se kulkee 3 metriä. Auto pystyy siis teoriassa rajoittamaan avaimen käytön 1,5 metrin päähän.

Markus Jansson kirjoitti...

> Atomikelloa ei tarvita, koska kellonaika on tässä asiassa epärelevantti.

Niin, jos siis avain ei itse mittaa aikaa. Mutta jos se ei mittaa, niin tulee ongelmia, eli...

> Ainut mikä ratkaisee on se aika nanosekunteina, jonka signaali kulkee. Kaikista tarkimmat
> oskilloskoopit toimivat 100 gigahertsin taajudella. Ja kuten sanoin, niin avaimessa ei
> tarvita kelloa. Autossa olisi laite, joka laskee ajan joka kuluu signaalin edestakaiseen
> matkaan.

Auton kellon pitäisi pystyä silloin määrittämään tarkasti se aika, joka signaalilta kuluu, mutta kun tämä EI RIITÄ. Avaimella kestää tovi käsitellä signaali, eli suorittaa haaste-vaste-tehtävä. Tämän vuoksi pelkästään tieto autosta lähteneen signaalin kellonajasta ei riitä. Jos taas avain ei tee mitään haaste-vaste-tehtävää, eli vain heijastaa jotenkin signaalin takaisin autoon, niin tällöin hyökkääjänkään ei tarvitse tehdä haaste-vaste-tehtävää ja voi vain heijastaa signaalin takaisin autoon sellaisenaan.

Kuten sanottua, mitään simppeliä ratkaisua tuohon ei ole. Paitsi se, että avain toimii vain fyysistä nappia painamalla.

> mutta kuten sanoin, niin aina autoja on ollut mahdollista varastaa silloin, kun auton
> ovet ovat hetkellisesti auki tai avainten haltija on lähelle, jolloin avaimet voi ryöstää
> siltä.

Tämä on maalitolppien siirtelyä. Siitä ei ollut kyse. Kyse oli, miten auton voi varastaa ilman, että pitää varastaa tai ryöstää avaimia. Ei muusta.

> GPS-vastaanottimien kello toimii 10 nanosekunnin tarkkuudella. Valo kulkee nanosekunnissa
> itse asiassa 30 senttiä, joten 10 nanosekunnissa se kulkee 3 metriä. Auto pystyy siis
> teoriassa rajoittamaan avaimen käytön 1,5 metrin päähän.

Itse asiassa se toimii 40 nanosekunnin tarkkuudella. Se atomikello GPS-satelliitissa. Ei se kello GPS-vastaanottimessa. Se vain laskee eri GPS-satelliittien kellonaikojen vastaanottoaikojen erotuksen toisistaan ja sitä kautta paikantaa itsensä. GPS-vastaanottimen ei edes tarvitse tietää, mitä kello on, vaan ainoastaan, mitä kello on eri paikoissa olevissa GPS-satelliiteissa (toki paikannus on tarkempaa, jos myös vastaanotin tietää kellonajan).

Anonyymi kirjoitti...

No, joo tietysti viiveessä täytyy huomioida se, että avain käsittelee signaalin. Jos käsittely onnistuu vaikkapa 5 nanosekunnissa, niin auto sitten suostuu odottamaan 15 nanosekuntia sen 10 nanosekunnin sijasta. Sitten tietysti tulee massiivisia ongelmuia, jos avaimella kestää signaalin käsittelyssä vaikkapa 500 nanosekuntia.