Pasi Kovanen

Pasi Kovanen

Software with Passion.

Vesilaitos pyysi ilmoittamaan mittarilukeman laskutusta varten. Olin rekisteröitynyt laitoksen verkkopalveluun jo aikaisemmin, mutta en muistanut salasanaa. Eipä hätää, palvelun kautta pystyi tilaamaan salasanan sähköpostiin. Väärin!!

Palveluiden salasanoja ei saa koskaan lähettää sähköpostilla selkokielisenä. Tämä on myös usein indikaatio siitä, että salasana on myös tallennettu tietokantaan selväkielisenä. Mahdollinen murtautuja saa tällöin haltuunsa täydellisen listan kävijöiden tunnuksista ja salasanoista.

Sen sijaan salasanat pitää aina tallentaa salatussa muodossa. Yleisimmin salasanasta muodostetaan nk. tiiviste yksisuuntaisen funktion avulla. Tiivistemuodossa olevan salasanan murtaminen onnistuu vain ajamalla erilaisia salasanoja saman funktion läpi, kunnes lopulta tuloksena on sama tiiviste. (Vaihtoehtoisesti voidaan käyttää listoja joissa tiivisteitä on laskettu valmiiksi.)

Tämän tietoturvan perusasian pitäisi olla kaikkialla kunnossa, mutta näköjään näin ei ole. Varmistathan että palveluidenne salasanoja ei koskaan tallenneta selkokielisinä.

Tykkäsitkö artikkelista?

Anna pienet aplodit!

Kommentit

  • Hmmm… pääsääntöisesti salasanoja varmaankin talleteaan yksisuuntaisesti vaikkapa tuon md5:sen avulla. Ja liian usein vielä unohdetaan salasanan suolaaminen eli työnnetään jonkin yksinsuuntaisen funktion läpi salasanat salattuina kantaan.

    Mutta eihän tuo ole ainoa keino tallettaa salasanoja. Joskus on ihan kiva, että salattu teksti saadaan aukikin eli aina ei riitä se, että salasana tarkistetaan vertailun avulla. Eli voihan sen salasanan tallettaa myös vaikkapa julkisen avaimen menetelmällä. Eli salaus- ja vertailuvaihe tehdään samalla menetelmällä, mutta selväkielinen salasana palautetaan eri avaimen kautta ja eri palvelulla.

    On se salasanakin tällöin salattuna kannassa ja vaikeasta avattuna. Eli siitä, että palvelu pystyy palauttamaan salasanan, ei pysty päättelemään sitä että onko salasana kannassa selväkielisenä vai salattuna.

    Mutta en kyllä usko, että monikaan tekee palvelua, jossa salasanat on salattuina ja niitä puretaan asiakkaalle silloin kun hän unohtaa oman salasanansa.

    Kari…

    http://www.karivahtolammi.com/

  • Jos salasanat on tallennettu kaksisuuntaisella kryptauksella, pystyy näppärä murtautuja selvittämään myös salausavaimet tutkimalla ohjelmakoodia, ellei palvelu ole erittäin hyvin toteutettu. En näe mitään syytä miksi salasanoja tarvitsisi pystyä muuttamaan selkokieliseksi (ehkä joku esoteerinen tapaus on olemassa) enkä suosittele tällaisen käyttämistä, koska on vaikea varmistua toteutuksen tietoturvasta. Lisäksi se on paljon monimutkaisempi ratkaisu.

  • ”Jos salasanat on tallennettu yksisuuntaisella kryptauksella, pystyy näppärä murtautuja selvittämään myös salausavaimet tutkimalla ohjelmakoodia, ellei palvelu ole erittäin hyvin toteutettu.”, hiukan muokattuna.

    Aina kun pääsee ohjelmakoodiin kiinni, niin salaus on murrettu. Eli löytämällä esim. suolauksessa käytettävän mekanismin, saa rakennettua oman brute force- listan. tai arvaamalla mikä salausmekanismi on käytössä. Käytännössä kaikki salausmenetelmät on mahdollista purkaa raa’alla voimalla. Niin md5, sha1 tai Rijndael.

    Se, että tarvitaanko kaksisuuntaista salausta on eri juttu kuin se, että jätetään kokonaan salaamatta. Ja täytyy sanoa, että urani aikana on tullut vastaan tilanteita, joissa on vaadittu kaksisuuntaista salausta. Mutta niistä ei vain valitettavasti voi puhua julkisella foorumilla. Ne ovat varmaan noita esoteerisia tapauksia 🙂

    Mutta mitä tuota enempää pohtimaan. Normaalitilanteissa tuo yksisuuntainen salaus toimii oikein hyvin. Erityisesti, jos siihen osataan rakentaa joku helppo ja näpsäkkä tietoturvallinen tapa uusia salasanat.

    Kari…

  • ”Käytännössä kaikki salausmenetelmät on mahdollista purkaa raa’alla voimalla.”

    Niin, jos on rajattomasti aikaa ja prosessoritehoa käytettävissä.

  • Yleisesti palvelut käyttävät jotain avaimetonta kryptograafista primitiiviä eli taidetaan puhua kansanomaisesti tiivistefunktioista. Eli jollain menetelmällä lasketaan tuollainen tiiviste eli tarkistetaan, että lähettäjän ja vastaanottajan tiiviste on sama. Ja kuten tiedät, niin taidetaan useinkin puhua jostain MD2-MD5, SHA1 ja RIPE-MD:stä.

    Eli kuten tiedät, niin salauksen purku ei ole mahdollista vaan tarkistus tehdään vertailemalla. Eli muunnetaan haluttu stringi ja vertaillaan niitä keskenään. Ja tämä lienee se asia, mitä toivotaan tehtävän yleisissä verkkokapalveluissa.

    Ja näiden salasanalistojen purku perustuu siihen, että osataan arvata oikea tiivistysmenetelmä tai on saatu pala koodia, josta se nähdään ja sitten vain ajetaan sanalistoja läpi tiivistäen oikealla metodilla. Ja vertaillaan. Eli onhan tuo mekanismi hyvä ja suojaa kohtuullisesti.

    Ja kuten tiedät, niin toinen tapa on käyttää symmetristä salausta eli salaus tehdään ja avataan samalla metodilla. Tuttuja lienevätt DES, AES, IDEA jne. Eli mikälili tunnetaan menetelmä sekä avaimet, niin salasanat aukeavat kauniisti. Eli tarvitaan vain pala koodia, josta löytyy avaimet ja homma on valmis.

    Mutta jos haluaa hienostella, niin käyttämällä väärin epäsymmetristä salausta saa aikaiseksi sekä tiivistefunktiomaisen mekansimin salasanajojen tarkistamiseen sekä hiukan hienostuneemman palvelun salasanojen selvittämiseen. Eli kuten tiedät, niin epäsymmetrisessä salauksessa salaaminen ja avaaminen vaatii eri avaimet eli salausavaimen paljastuminen eli vielä mahdollista purkamista.

    Eli loppujen lopuksi aika helposti pystyy luomaan tietoturvallisen tavan tallettaa salasanat kantaan ja myös purkaa ne selväkielisiksi. Se vain vaatii toisenlaista ajattelumallia kuin normaalisti, jossa yleisesti oletetaan että salasan palauttaminen vaatii joko yksinkertaisen salauksen tai symmetrisen kaksisuuntaisen salauksen eli avaimet tiedossa. Mutta voi sen tehdä muutenkin eli epäsymmetrisellä tavalla.

    Ja tämä on vain akateemista mielenkiintoa aiheesta eli niinkuin Finnairin ja tämän sähkölaitoksen tapauksessa voipi olla kyse salaamattomista salasanoista. Tai sitten jostain kummallisesta ratkaisusta, jossa salasanat on dublikoitu ja käyttäjätunnusta vastaava salasana on normaalisti tiivistetty, mutta jostain kummasta suunnittelijan oikusta talletettu myös johonkin muualle selväkielisenä. Näitäkin ihmeellisyyksiä on tullut vastaan.

    Kari…

    P.S. Tämä akateeminen väittäminen lähtee liikkeelle siitä ajatuksesta, että luulo ei ole tiedon väärti. Vaikkakin sähkölaitoksen järjestelmä palauttaa salasanat, niin se ei tarkoita että ne ovat salaamattomina kannassa. Eli aihe on hyvä, mutta tekstissä tehdään seuraavat päätelmät:

    1. Vain salaamaton salana voidaan lukea tietokannasta
    2. Asiakkaalle voidaan palauttaa salasana maililla
    3. Eli jotta salasana voidaan palauttaa, niin salasanan on pakko olla salaamaton.

    Ja nuo päätelmät saattavat olla oikein tai väärin 🙂

    P.P.S. Kannattaa lukea blogejani, niissä on viimeaikoina phdittu noita argumettejä ja niiden käyttöä.

  • Jos haluat oppia, miten unohdin salasanani-toiminto pitää toteuttaa, kannattaa tutustua Troy Huntin blogikirjoitukseen, missä hän käsittelee aihetta kattavasti. Kirjoitus löytyy täältä:

    http://www.troyhunt.com/2012/05/everything-you-ever-wanted-to-know.html

  • Muokkasin hieman kirjoitusta:
    – tekstissä käsiteltään yleisimmissä käyttötapauksissa järkevintä tapa toimia
    – selkokielistä salasanaa ei saa koskaan palauttaa

  • Security Now -podcastissä puhuttiin jostakin amerikkalaisesta palvelusta, jossa käyttäjänimen lisäksi myös salasanan piti olla uniikki. Jokin pelästynyt kuuntelija oli kirjoittanut heille asiasta, kun tiliä luodessa tuli ilmoitus, että hänen salasanansa oli jo käytössä. Jos salasanaa käytettiin avaimena tietokannassa? Huhhuh…

  • Oikeaoppinen tapa on tosiaan käyttää yksisuuntaista tiivistefunktiota. MD5 ja muut vanhat tiivistefunktiot eivät ole turvallisia, ja niiden käyttö on merkittävä tietoturvariski. Jos tuollaisia tiivistefunktioita on vielä käytössä, tulisi heti vaihtaa joku parempi funktio tilalle. Kaksisuuntainen salaus on (imo.) vähemmän turvallinen, koska riski saada alkuperäinen salasana ulos on paljon suurempi.

    Salasanojen tiivistämiseen tulee käyttää siihen erikseen tarkoitettuja funktioita. Niissä voi olla mukana esimerkiksi automaattinen suolausmekanismi. Toinen ero on siinä, että salasanatiivistefunktioit on suunniteltu olemaan hitaasti laskettuja, jolloin brute force -hyökkäys tulee kalliimmaksi. Näistä bcrypt on tällä hetkellä paras vaihtoehto. Bcrypt on suunniteltu siten, että funktion laskemiseen vaadittu määrä operaatioita kasvaa esim. Mooren ”lain” tahtiin kasvattamalla iteraatioiden määrä. (Perinteisiä tiivistefunktioitahan ajettiin rekursiivisesti silmukassa, jotta niistä saatiin hitaampia).

    Ja on hyvä muistuttaa, että on tärkeää käyttää olemassa olevia implementaatioita eikä koodata niitä itse. Kryptografia on vaikeaa, ja omiin implementaatioihin jää helposti jokin aukko.

    P.S. Tehkää kommenttilaatikosta sellainen, että se kasvaa automaattisesti jos kommentti ei laatikkoon enää mahdu 🙂

  • maallikkona ymmärtäisin asian näin:
    1. selväkielisen salasanan lähettäminen käyttäjälle on tyhmää, koska silloin se paljastuu helposti netissä kolmansille. Samalla käyttäjä altistuu väärinkäytöksille tässä palvelussa ja kaikissa muissa palveluissa, joissa hän on käyttänyt samaa salasanaa.
    2. selväkielisen salasanan lähettäminen vaatii sellaista salasanamenettelyä, jossa käyttäjän salasana on tuotettavissa takaisin. Vaihtoehtona on, että annettu salasana muutetaan kryptauksella ja tulos tallennetaan ja myöhempi salasanan tarkistaminen tehdään vertaamalla käyttäjän sisäänkirjautumisessa antaman salasanan vastaavaa kryptattua johdannaista tallennettuun tietoon. Näin ei ole mahdollista, että joku häkkeri tai palvelun työntekijä voisi helposti kopioida kaikkien käyttäjien salasanat.
    3. se parempi vaihtoehto käyttäjän näkökulmasta on, että käyttäjä saa tiedon, jolla voi käynnistää salasanan vaihtoprosessin mm. käyttämällä sähköpostiinsa ja/tai puhelimeensa tullutta tietoa salatussa sessiossa niin, että käyttäjä voi asettaa minkä tahansa salasanan eikä se koskaan kulje Internetissä ilman salausta.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *