Slasanojen tallennuksen tekniikka (2-A)

Salasanatietokanta on vaarallinen. Login-ohjelman pitää päästä lukemaan se. Tämän ohjelman käyttäjää ei ole vielä autentikoitu, joten ulkopuolinen pitää tässä päästää tavalla tai toisella käsiksi tietoihin, joiden perusteella hänet autentikoidaan. Tämä ongelma voidaan torjua siten että käyttöjärjestelmä estää suoran pääsyn salasanatietokantaan.

Tietokanta voisi silti paljastua tietomurron tai vastaavan takia ulkopuoliselle. Sitä varten salasanoista säilytetään palvelimella yleensä vain tiivisteitä. Sama koskee kertakäyttösalasanoja, jos ne toteutetaan iteroidun tiivistefunktion avulla.

Mekanismina on se, että käyttäjän tarjoama salasanasta lasketaan tiiviste ja verrataan tietokannassa käyttäjätunnuksen kohdalla olevaan tiivisteeseen. Jos ne ovat samat, on äärimmäisen epätodennäköistä, että ne olisi saatu eri salasanoista, joten autentikoinnin tulos on myönteinen.

Tällainen tiivistetty tietokanta on jossain määrin turvallinen, vaikka se olisi vapaasti saatavissa. Näin olikin kauan sitten esim. Unixissa, jossa kuka tahansa käyttäjä sai lukea tiedoston /etc/passwd. Sittemmin, kuten edellä jo todettiin, tiedosto on piilotettu. Jos hyökkääjä saisi tiivistetyn salasanatiedoston, hän voisi tehdä arvaushyökkäyksen sanakirjansa avulla ja todentaa arvauksensa hyvin nopeasti, sillä tiivisteen laskeminen on nopea operaatio.

Siltä varalta että tiedosto paljastuisi, salasanatiivisteiden yhteyteen talletetaan unixissa 12 ns. suolabittiä. Ne on salasanaa luotaessa tai vaihdettaessa generoitu satunnaisesti ja tiiviste on laskettu niistä ja salasanasta. Vastaavasti kun salasanaa tarkistetaan, se "suolataan" ko. biteillä ennen tiivisteen laskua.

Oletetaanpa, että joku saisi haltuunsa salasanatiedoston, jossa on N salasanatiivistettä, ja keskimääräisen salasanan arvaamiseen tarvittaisiin P yritystä (eli käyttäjien salasana-avaruuden koko olisi 2P, esim. 2^30). Jos tiedoston tiivisteet ovat suolattomia, hyökkääjälle riittäisi P/N arvausta murtamaan jokin tiedostossa oleva salasana. Jos mukana on suola, yhden käyttäjän salasanaa vastaan riittää edelleen P arvausta, mutta tietyllä suola-arvolla laskeminen ei kerro mitään muista arvoista. Jos kaikki tiedoston suola-arvot sattuisivat olemaan erilaisia (jolloin N<=4096), minkä tahansa salasanan murtaminen olisi aivan yhtä vaikeaa kuin yhden tietyn salasanan, eli vaatisi P arvausta. Jos samoja suoloja on enimmillään K:lla salasanalla, niin minkä tahansa murtaminen kannattaisi kohdistaa näihin ja tarvittavien arvausten määrä olisi P/K.

Äskeisen lisäksi suolabiteillä saadaan aikaan se, ettei saman salasanan valinneilla niin todennäköisesti esiinny samaa tiivistettä. Teoreettisesti ajateltuna, suolabiteillä valitaan 4096:sta erilaisesta funktiosta yksi, jolla salasanatiiviste lasketaan. Käytäntökään ei ole kovin kaukana tästä, kun Unix tiivistää salasanan käyttäen sitä avaimena vakiobittijonon moninkertaisessa DES-kryptauksessa: suolabiteillä muokataan DES-algoritmin sisäistä rakennetta?.

-- 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