Salasanajärjestelmän toteuttamisesta (2-A)

Salasanajärjestelmä on hyvin yleinen mekanismi käyttäjien autentikoimiseksi. Sellaisen toteutuksessa on useita osa-alueita, joihin suunnittelijan tai viimeistään politiikan laatijan pitää ottaa kantaa, vaikka ohjelmistoihin sinänsä tai laitteisiin ei pääsisi vaikuttamaan. Yleisesti on ratkaistava,

  1. miten salasana siiretään kohdejärjestelmään -- erityisesti, onko mitenkään perusteltua siirtää salasanaa selväkielisenä. Edes fyysiseltä tunkeutumiselta suojassa olevassa lähiverkossa tämä ei ole perusteltua, ellei salasanoilla haluta estää vain vahingossa tapahtuvaan toisen käyttäjän tietoihin puuttumista. Lisäksi voi olla tarpeen luoda ns. luotettu polku käyttäjän ja järjestelmän välille, jolloin käyttäjä tietää antavansa salasanan sille eikä Troijan hevoselle. (Windowsin ctrl-alt-del avaa tällaisen polun). Vahvempi vakuuttuminen tästä voi edellyttää molemminpuolista autentikointia. Siihen voi liittyä myös seuraavan kohdan asia:
  2. millaista protokollaa käytetään salasanan todentamisessa: Todentaminen voi olla yksinkertaisesti annetun salasanan (tai sen tiivisteen) vertaamista, mutta jos käyttäjän päätelaite ei ole pelkkä "tyhmä" pääte, siinä voidaan toteuttaa erityisiä protokollia, kuten EKE tai SRP?.
  3. miten salasanatiedot talletetaan järjestelmään. Jos protokolla on tavanomainen, tässä tulevat kysymykseen tiivisteet, "suolat" sekä tiedoston piilottaminen.
  4. miten syöttö toteutetaan:
    • voiko olan yli kurkkia (etenkin julkisella paikalla);
    • mitä silloin näkee (jos salasanat ovat hyvin pitkiä, pitäisikö ne sittenkin näyttää näppäilijälle);
    • voiko näppäilyvirheen korjata;
    • tuottavatko näppäimistöt kaikkialla oikeat merkit;
    • voiko käyttää nuolinäppäimiä tai hiirtä esim. kahden sanan lomittamiseen;
    • (voisiko hiirtä käyttää jonkin graafisemman "salahahmon" ilmaisemiseen, jolloin voidaan saavuttaa paljon suurempi helposti muistettavien salasanojen avaruus kuin tekstuaalisilla salasanoilla.)
  5. miten toimitaan, kun syötetty salasana on virheellinen:
    • viive ennen seuraavaa yrityskertaa. Se voi olla vakio tai kasvava, esim. 2k * 5s, missä k on kerta.
    • lukitseminen riittävän monen yrityskerran jälkeen. Tämä on välttämätöntä mm. toimikorteissa, joissa PIN-avaruus on hyvin pieni. Pitää varoa, ettei tällaisella (tai viiveelläkään) anna hyökkääjän jumiuttaa järjestelmää.
    • lokitieto: virheellisten yritysten kirjaaminen ja mahdollisen hälytyksen tekeminen.
    • käyttäjälle annettava tieto. Kun kirjautuminen onnistuu, käyttäjälle olisi hyvä kertoa edellisen onnistuneen kirjautumisen ajankohta ja sen jälkeen tapahtuneiden epäonnistumisten määrä ja ehkä viimeisen ajankohta. Jos lokitiedot eivät ole tuottaneet tarpeellista hälytystä, vastuullinen käyttäjä voi näiden tietojen perusteella tehdä sellaisen. Epäonnistumisen yhteydessä on kerrottava vain "käyttäjätunnus TAI salasana virheellinen", ei sitä kumpi, jotta käyttäjätunnuksia ei paljastuisi. Tässä on otettava huomioon jopa se, ettei tunkeutumista yrittävä pysty päättelemään lyhyestä vasteajasta, ettei salasanaa tarvinnut edes yrittää tarkistaa (puhumattakaan siitä että jossain vanhoissa järjestelmissä salasanaa tarkastettiin merkki kerrallaan, jolloin vasteajasta pystyi laskemaan montako oli arvattu oikein).
  6. mitä käyttäjiltä vaaditaan ja miten vaatimusten toteutumista vahditaan:
    • miten annetaan ensimmäinen salasana tai uusi unohdetun tilalle. Miten henkilö autentikoidaan? Voidaanko toimitus tehdä puhelimitse, tai sähköpostitse? Jälkimmäinenkin on mahdollinen ja käytössä, mutta sopii vain kovin merkityksettömiin pääsyoikeuksiin.
    • miten usein salasana pitää vaihtaa, ja kuinka monta vanhaa järjestelmän pitää muistaa kierrätyksen estämiseksi -- eli käytännössä syklin pidentämiseksi, mutta silloin pitänee minimivaihtovälikin asettaa.
    • millaisia salasanojen pitää olla ( ohjeistojen periaatteista on toisaalla ) ja miten niitä muodostetaan: Salasananvaihto-ohjelma voi hylätä huonoja, jopa ajettuaan salasanaehdokkaan jonkin crack-algoritmin läpi. Yksi mahdollisuus on myös käyttää koneen valitsemaa satunnaista salasanaa, mutta niistä tulee tietenkin kovin harvoin mitään helposti muistettavaa. Muuan välimuoto on, että kone antaa joitakin merkkejä ja käyttäjä täydentää niiden väliin jotain, joka tekee kokonaisuudesta muistettava(mma)n.
    • miten salasanaa säilytetään ja käsitellään sekä miten asiaa koskevat ohjeet tuodaan esille. Tekniseltä kannalta on tehtävissä joitakin ratkaisuja: Voidaan estää salasanan tallettaminen automaattiseksi (mutta tuskin tallettamista tiedostoon) tai esim. selaimen sivuhistoriaan. Toisaalta voidaan tarjota PIN-suojattua salasanamuistiota, johon käyttäjä voi tallettaa useita salasanoja (mutta tällöin pitäisi varmuuskopiokin olla ...). (Yleisempiä ohjeita on em. linkissä)
  7. miten käytettävyydestä huolehditaan: tässä on muitakin näkökulmia kuin em. vaatimusten lieventäminen. Esimerkiksi voi olla järkevää tiedottaa käyttäjälle varsin selkeästi, mihin hän on kirjautumassa, jotta hän tietää, mitä salasanaa häneltä kysytään. (Kontekstiin liittyy muitakin seikkoja joita on mainittu esimerkkinä ohjelmoinnin yhteydessä). Edellä mainitut näppäilyseikat liittyvät myös käytettävyyteen, ja vähemmän turvakriittinen esimerkki niistä on Windows-käyttöjärjestelmän tapa varoittaa vaihtolukosta ('caps lock').

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r2 < r1 | 
Topic revision: r2 - 26 Sep 2010 - 11:10:35 - MarkoHelenius
 

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