24.08.2022

Keskiverto länsimaalaisella aikuisella on varmasti vähintään kymmeniä, ellei jopa satoja eri verkkopalveluita/sovelluksia jotka vaativat kirjautumisen. Ja kirjautumiseen vaaditaan lähes poikkeuksetta salasana, jonka pitäisi olla joka palveluun eri sekä tarpeeksi pitkä ja monimutkainen jne. ollakseen tietoturvallinen.

Tämä on yhtälö joka ei vaan voi toimia, ihmisen aivot eivät ole suunniteltu muistamaan satoja erilaisia pitkiä ja monimutkaisia merkkijonoja, ja tätä tuskaa helpottamaan onkin jo pidemmän aikaa yleistyneet erilaiset salasanojen hallinta toiminnot/palvelut, sekä viimeaikoina myös vaihtoehtoiset kirjautumistavat (tekstiviesti/sähköposti salasanan sijaan) yms. Puhelimeen asennettavissa sovelluksissa biometrisen tunnistuksen käyttäminen (sormenjälki tai kasvojentunnistus) on yleistynyt, tosin niissäkin yleensä vain perinteisen salasanalla kirjautumisen jälkeen/lisäksi eräänlaisena lisäturvana.

Salasanojen ongelmat

Varsinaisen salasanojen muistamiseen liittyvän ongelman lisäksi, salasanoihin liittyy myös useita tietoturvaongelmia. Lähtökohtaisesti kaikki nämä ongelmat juontavat juurensa siihen, että tietyn käyttäjän tunnistamiseksi tarvitaan vain kaksi eri merkkijonoa (käyttäjätunnus ja salasana), siinä kaikki. Ollakseni netissä sinä, tarvitsen vain nämä kaksi lyhyttä tekstipätkää. Kuulostaa jotenkin huolestuttavalta kun sen noin sanoo, etenkin kun nykyään netti on niin iso osa elämäämme, vaikka toki esim. kaksivaiheinen tunnistus on lisääntynyt paljon ja tuonut tähän tilanteeseen lisäturvaa.

Edellä mainitusta ongelmasta johtuen, käyttäjien salasanojen hankkiminen epärehellisin keinoin on edelleen massiivisen iso ongelma. Näitä keinoja on useita erilaisia, tässä yleisimmät:

  • tietomurtojen yhteydessä vuodetut käyttäjätietokannat
  • salasanojen kalastelu (phishing)
  • tuhansien eri käyttäjätunnus/salasana yhdistelmien kokeilu koneellisesti (bruteforce)

Näihin ongelmiin on vuosien saatossa kehitelty erilaisia suojakeinoja. Esim. tietomurtojen vuotoja vastaan käyttäjän pitäisi suojautua käyttämällä jokaisessa palvelussa erilaista salasanaa. Salasanojen kalastelua vastaan käyttäjän pitäisi osata tunnistaa aidot sähköpostit ja verkkosivut huijauksista ja siten välttää syöttämästä salasanaansa huijarin tekemälle verkkosivulle, joka näyttää täysin samalta kuin oikea. Salasanojen koneellista kokeilua vastaan taas käyttäjän pitäisi suojautua käyttämällä monimutkaisia salasanoja, jotka sisältävät isoja ja pieniä kirjaimia, numeroita ja erikoismerkkejä jne.

Suurin ongelma kaikissa näissä suojakeinoissa on se, että ne vaativat käyttäjän (tavallisen ihmisen) toimivan tietyllä tavalla joka ei ole hänelle helppoa tai luontaista.

kuvituskuva kirjautumisesta salasanalla

Kirjautuminen ilman salasanaa

Jos kerran salasanat ovat niin ongelmallisia, niin miksi emme voi kirjautua ilman salasanaa? Alaa seuraavat muistavatkin varmaan aiheesta olleen puhetta jo monta vuotta, mutta matkan varrella on ollut omat ongelmansa. Mutta nyt tämä joskus kovin utopistiselta kuulostanut ajatus on vihdoin kuitenkin mahdollista.

Verkkopalveluissa biometristä tunnistautumista ei ole aiemmin voinut käyttää, ja tästä syystä salasanalla kirjautuminen onkin edelleen valtavirtaa. Web sovellusalustana on kuitenkin kehittynyt koko ajan eteenpäin, viime vuosina etenkin kuroen umpeen verkkosivujen ja natiivien mobiilisovellusten välisiä eroja kun PWA mahdollistaa mm. sovelluksen asentamisen kotiruudulle, push notifikaatiot sekä offline käytön. Yksi viimeisimpiä webin uudistuksia on tuki vahvalle tunnistautumiselle käyttäen laitteen biometrisiä tunnistustapoja, eli käytännössä yleensä sormenjälkeä tai kasvojentunnistusta. Toisin sanoen, salasanaton kirjautuminen.

Rajapinta on nimeltään Web Authentication API (tai lyhennettynä WebAuthn) ja se on kehitetty FIDO allianssin toimesta yhteistyössä eri laite- ja selainvalmistajien kanssa (mm. Google, Apple ja Microsoft) ja kaikki edellä mainitut kolme toimijaa ovatkin sitoutuneet tukemaan ilman salasanaa tapahtuvaa tunnistautumista kaikilla alustoillaan.

Tekninen toteutus pohjautuu ns. julkisen avaimen salaukseen, johon perustuu myös esimerkiksi verkkosivujen käyttämä HTTPS salausprotokolla. Käytännössä tämä tarkoittaa sitä että käyttäjän laitteella muodostetaan jokaiselle eri palvelulle salainen avain ja julkinen avain pari, joista julkinen avain lähetetään verkkopalvelulle (salasanan sijaan) ja salainen avain säilötään laitteella olevalla turvasirulla (erillään muusta käyttöjärjestelmästä ja käyttäjän ns. normaaleista tiedostoista). Mitään käyttäjän biometrisiä tietoja ei siis välitetä eteenpäin verkkopalveluille jotka käyttävät WebAuthn kirjautumista, eikä tietoihin pääse myöskään käsiksi vaikka joku ulkopuolinen saisi kyseisen laitteen muuten hallintaansa (esim. varastamalla tai hakkeroimalla sen).

Ratkaisu salasanojen ongelmiin

Miten sitten salasanaton kirjautuminen ratkaisee aiemmin mainitut salasanojen ongelmat?

  • Salasanattomassa kirjautumisessa salasanaa vastaava tunniste (julkinen avain) muodostetaan jokaiselle verkkosivustolle erikseen, mikä tarkoittaa sitä että jos tietyn palvelun käyttäjätietokanta vuodetaan esimerkiksi tietomurron yhteydessä, ei kyseisellä tunnisteella silti pysty tekemään mitään haitallista. Sillä ei pysty kirjautumaan mihinkään toiseen palveluun, eikä edes siihen kyseiseen palveluun mistä se tunniste on varastettu.
  • Koska tunnisteen luominen (rekisteröitymisen yhteydessä) ja lähettäminen (kirjautumisen yhteydessä) tapahtuu automaattisesti selaimen toimesta, ei käyttäjän osalta ole koskaan mahdollista yrittää kirjautua ns. väärään palveluun (eli tietojen kalastelua varten tehtyyn huijaus sivustoon) jonkun toisen palvelun tunnuksella.
  • Julkisen avaimen salausprotokolla on lisäksi niin vahva ja tietoturvallinen että se tekee käytännössä bruteforce hyökkäykset ellei nyt ihan mahdottomiksi niin ainakin tehokkuudeltaan niin toivottomiksi ettei kukaan taida sellaista jaksaa edes yrittää.

Onko salasanaton kirjautuminen sitten pelkkää auvoa ja auringonpaistetta? Ei varmastikaan. Kuten yleensä, ja etenkin teknologian kanssa, kaikessa on omat ongelmansa.

Salasanattoman kirjautumisen osalta ehkä kaikkia haasteita ei vielä osaa edes ajatella, mutta yksi selkeä haaste on yhteensopivuus useiden eri laitteiden välillä. Koska kirjautumiseen tarvittava salainen tunniste luodaan tietyssä laitteessa ja se pidetään siellä turvassa, tarkoittaa se sitä että samaa tunnistetta ei voi käyttää millään toisella laitteella kirjautumiseen.

kuvituskuva salasanaton kirjautuminen

Tämä ei toki tarkoita että tiettyyn palveluun kirjautuminen pitäisi rajoittaa vain yhteen laitteeseen. Eli yhden käyttäjätunnuksen ”taakse” voidaan kytkeä useampia eri laitteita samanaikaisesti, mutta tällöin tietyn käyttäjän tunnistaminen yhdellä laitteella olemaan sama käyttäjä kuin jollain toisella laitteella jää sitten sovelluksen huoleksi. Varmaan yleisimpiä tapoja tähän tulee olemaan vahva tunnistautuminen pankkitunnuksilla tai sähköpostiin lähetettävä vahvistus linkki. Tämä siis vaadittaisiin ensimmäisen kirjautumisen yhteydessä jokaisella eri laitteella, samassa yhteydessä kun salasanaton kirjautuminen kyseisellä laitteella rekisteröidään.

Käytännön toteutus

Koska toteutus perustuu toisaalta avoimiin Web rajapintoihin, ja toisaalta selaimiin/käyttöjärjestelmiin sisäänrakennettuihin ominaisuuksiin, ei käytännön toteutus normaalin verkkopalvelun osalta vaadi mitään erityisiä laitteita tai ohjelmistoja. Eli toteutuksen voi tehdä sillä teknologialla mikä verkkopalvelussa on entuudestaan käytössä. Toki hieman kehitystyötä vaaditaan sen osalta että miten kirjautumisessa/rekisteröitymisessä tämä uusi tunnistautumistapa hoidetaan.

Kuten jo aiemmin mainitsin, kolme isoa laite- ja selainvalmistajaa Google, Apple ja Microsoft, ovat kaikki sitoutuneet tukemaan salasanatonta kirjautumista kaikilla alustoilla. Tämä tarkoittaa sitä että kun yleensä uusien Web rajapintojen osalta saadaan odotella riittävän kattavaa tukea erinäisissä selaimissa tai laitteissa, näyttää tilanne WebAuthn rajapinnan osalta erittäin valoisalta jo nyt. Vaikka tukea ei ihan jokaisella mahdollisella selaimella vielä olekaan, löytyy kaikissa yleisimmissä käyttöjärjestelmistä jo tuki jossain muodossa. Tämän linkin takaa löytyy tarkempi taulukko tuetuista selaimista eri käyttöjärjestelmillä.

Lisäksi salasanaton tunnistautuminen on mahdollista ottaa käyttöön muiden jo entuudestaan olemassa olevien tunnistautumistapojen rinnalle, eli kaikkia palvelun käyttäjiä ei tarvitse siihen pakottaa vaikka heillä laitepuolella tuki siihen löytyisikin.

Kiinnostuitko?

Itse en ainakaan malta odottaa että pääsisin vihdoin eroon salasanoista, ja olenkin heti ottanut salasanattoman tunnistautumisen käyttöön siellä missä se vain on ollut mahdollista. Harmi vain että se on edelleen niin harvinaista verkkopalveluissa että salasanojen hallintasovellus on edelleen kovalla käytöllä. Onneksi salasanoja ei sentään ole enää pitkään aikaan tarvinnut itse muistaa, siihen ei olisi aivokapasiteetti millään riittänyt.

Kuulostaako salasanaton kirjautuminen siltä että teidän verkkopalvelussa olisi siitä hyötyä, tai kiinnostuiko muuten aiheesta? Ota yhteyttä niin jutellaan aiheesta, tai lue siitä miten kehitämme web-sovelluksia.

Lue lisää aiheesta muualla

Carl Vuorinen

Tags: , ,