Suola (salaus)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 15. lokakuuta 2019 tarkistetusta versiosta . tarkastukset vaativat 17 muokkausta .

Salt (myös hash-funktion syöttömuunnin ) on tietomerkkijono , joka välitetään tiivistefunktiolle syötetietotaulukon ( esikuva ) kanssa tiivisteen ( kuva ) laskemiseksi .

Käytetään hajautusfunktion esikuvan määrittämisen vaikeuttamiseen iteroimalla mahdollisten syöttöarvojen (esikuvien) sanakirjasta, mukaan lukien hyökkäykset sateenkaaritaulukoiden avulla . Voit piilottaa samojen prototyyppien käytön, kun niihin käytetään erilaisia ​​suoloja. On staattista suolaa (sama kaikille syöttöarvoille) ja dynaamista suolaa (luodutetaan jokaiselle syöttöarvolle erikseen).

Käyttöesimerkki

Anna salasanat tiivistää MD5 - algoritmilla ja tallentaa hajautusarvoina tietokantaan . Tietokantavarkauden sattuessa alkuperäiset salasanat voidaan palauttaa valmiiksi laadittujen sateenkaaritaulukoiden avulla , koska käyttäjät käyttävät usein epäluotettavia salasanoja, jotka on helppo valita sanakirjoista [1] . Jos salasana on "suolattu", eli tiivistearvoja laskettaessa lisää syötetietoihin useiden satunnaisten merkkien merkkijono, joka on suola-arvo, niin saadut arvot eivät vastaa yleisiä hash-arvosanakirjoja. Suolan tunteminen antaa sinun luoda uusia sanakirjoja toistettavaksi, joten suolan arvo on pidettävä salassa. Suolaan sovelletaan samoja monimutkaisuussuosituksia kuin salasanan monimutkaisuuteen, eli suolan entropian ja pituuden tulee olla hyvä [2] .

Esimerkki hashin luomisesta PHP :n staattista suolaa käyttäen ketjutuksen (yhteyden) periaatteen mukaisesti syötetietojen kanssa:

$salasana1 = '12345' ; $salasana2 = '67890' ; $suola = 'sflpr9fhi2' ; // Suola $salasana1_suolattuHash = md5 ( $salasana1 . $sola ); // Liitä syötemerkkijono suolan kanssa ja välitä se md5() hash -funktion läpi $salasana2_saltedHash = md5 ( $salasana2 . $salt );

Tässä esimerkissä suola on deterministinen merkkijono, mikä tarkoittaa, että suolan arvo on vakio kaikissa syötteissä.

Dynaaminen suola

On olemassa dynaamisia suolanmuodostusmalleja, joissa suola-arvot luodaan jokaiselle syöttöarvolle erikseen, mikä vaikeuttaa raa'an voiman sanakirjojen laatimista ja piilottaa myös sen tosiasian, että eri käyttäjien käyttämät samat salasanat tallennetaan. Myös menetelmän tehokkuus kasvaa, jos käytetään ei-triviaalista sekoitusta jonkin algoritmin mukaan. Esimerkiksi suolaa ei voida lisätä vain salasanan loppuun, vaan se voidaan "sekoittaa" tietyin väliajoin salasanassa. Lisäksi tiiviste voidaan laskea syklisesti sekoittaen suolaa osissa joissain muutoksilla [ 3] tiivistysiteraatioluvusta riippuen .

Yksi tunnetuista standardeista PBKDF2 kuvaa suolan sekoittamista useissa iteraatioissa.

Esimerkki samojen salasanojen tallentamisesta eri käyttäjiltä henkilökohtaisesti luodulle (dynaamiselle) suolalle
Käyttäjätunnus Salasana md5 (salasana) suola salasana + suola md5 (salasana + suola)
käyttäjä1 qwerty123 3fc0a7acf087f549ac2b266baf94b8b1 5h8h32h qwerty1235hr8Uh32Hr 1dfa98fc519fc0022e86014445d8b158
käyttäjä2 qwerty123 3fc0a7acf087f549ac2b266baf94b8b1 Ju5yFy35Jk qwerty123Ju5yFy35Jk 269777fd3b1c37ef1cfc1e238213324f

Yllä oleva taulukko osoittaa, että samat käyttäjäsalasanat eri dynaamisilla suoloilla antavat lopulta erilaisia ​​hajautusarvoja.

Ongelmia suolan ja salasanan vahvuudessa

Kun valtuutusjärjestelmän tietokantaan pääsee luvatta, hyökkääjä voi hankkia tarvittavat tiedot valtuutuksen välittämiseen käyttäjien puolesta tästä tietokannasta. Jos salasanat on tallennettu alkuperäisessä (selkeässä) muodossaan, hyökkääjä voi käyttää niitä muihin resursseihin päästäkseen, koska käyttäjät käyttävät usein samoja salasanoja eri verkkopalveluissa [4] . Dynaamisen suolan avulla voit välttää käyttäjätilien vaarantamisen useissa verkkopalveluissa kerralla.

Huonosti harkitulla suolan käyttöjärjestelmällä sen edut menetetään:

Pieni suolapituus ja alhainen entropia

Jos suola on lyhyt, hyökkääjän on helppo luoda sateenkaaritaulukko, joka koostuu kaikista mahdollisista tietyn pituisista suoloista lisättynä kuhunkin mahdolliseen salasanaan. Myös alhaisen entropian suolan käyttö lisää mahdollisuuksia löytää onnistuneesti suola sanakirjasta, joten suolan arvo tulisi ihanteellisesti generoida RNG :n avulla [5] . Pitkän suolan, jolla on hyvä entropia, käyttö varmistaa, että tietokannan sateenkaaritaulukko on liian suuri ja vaatii merkittäviä hyökkääjäresursseja luoda ja tallentaa [6] .

Suolan uudelleenkäyttö erilaisiin prototyyppeihin

Vaikka staattisen suolan käyttäminen samoihin esikuviin tekee joistakin olemassa olevista sateenkaaritaulukoista hyödyttömiä, on huomioitava, että jos suola kirjoitetaan staattisesti suositun tuotteen lähdekoodiin, niin se voidaan ennemmin tai myöhemmin purkaa, minkä jälkeen uusi sateenkaaripöytä voidaan luoda tästä suolasta. Jos suola luodaan dynaamisesti kullekin esikuvalle yksitellen käyttämällä joitain ainutlaatuisia parametreja jokaiselle käyttäjälle, järjestelmän vakaus kasvaa.

Yhden kiinteän suolan käyttäminen tarkoittaa myös sitä, että jokaisella käyttäjällä, joka syöttää saman salasanan, on sama hash. Tämä helpottaa useiden käyttäjien hyökkäämistä murtamalla vain yksi toistuvista tiivisteistä [7] .

Edut suolan käytöstä valtuutusjärjestelmissä

Ymmärtääksesi eron yksittäisen salasanan murtamisen ja sen kirjoittamisen välillä harkitse salasanatiedostoa, joka sisältää satoja käyttäjätunnuksia ja hajautussalasanoja. Ilman suolaa hyökkääjä voi laskea jonkin arvon hajautusarvon (esimerkiksi sanakirjasta) ja tarkistaa sitten, esiintyykö kyseistä tiivistettä missään tiedostossa. Todennäköisyys osumalle, eli jonkun salasanojen murtamiseen, kasvaa luonnollisesti tiedostossa olevien salasanojen määrän myötä. Jos suolaa käytetään, ja lisäksi se on dynaaminen, eli sillä on vähintään useita mahdollisia arvoja yhdelle tiivisteelle, hyökkääjän on laskettava hajautus jokaiselle mahdolliselle suolaparille ja haettavalle salasanalle, mikä dramaattisesti lisää haun monimutkaisuutta.

Suola antaa sinun myös torjua hash-taulukoiden käytön salasanojen murtamiseen. Käyttäjien salasanojen tapauksessa hajautustaulukko on kokoelma ennalta laskettuja hajautusarvoja usein käytetyille salasanoille. Suolattoman salasanatiedoston tapauksessa hyökkääjä voi käydä läpi jokaisen merkinnän ja löytää vastaavan hajautetun salasanan hash-taulukosta. Koska haku on paljon nopeampi kuin hash-laskenta, tämä nopeuttaa huomattavasti salasanojen murtamista. Mutta jos salasanatiedosto muodostetaan suolalla, tiivistetaulukon tulee sisältää esitiivistetyt arvot suolan kanssa. Jos suola on riittävän pitkä ja sillä on korkea entropia (se on satunnainen), murtumisen todennäköisyys pienenee huomattavasti. Ihmisten valitsemat suolattomat salasanat ovat yleensä alttiina sanakirjahyökkäyksille, koska ne valitaan yleensä lyhyiksi ja helposti muistettavaksi. Pienikin sanakirja (tai sen tiivistetty vastine, hash-taulukko) on suuri apu yleisimmin käytettyjen salasanojen murtamisessa.

Teknisestä näkökulmasta suola suojaa hash-taulukoita ja sateenkaaritaulukoita vastaan, koska se olennaisesti pidentää salasanan pituutta ja mahdollisesti monimutkaisuutta . Jos sateenkaaritaulukoissa ei ole salasanoja, jotka vastaavat suolattujen salasanojen pituutta (esim. 8 tavua salasana ja 12 tavua suola, joka on olennaisesti 20 tavua) ja monimutkaisuutta (monimutkainen suola, jolla on suuri entropia, lisää yksinkertaisten vahvojen aakkosnumeeristen salasanojen monimutkaisuutta) salasanaa, salasanaa ei löydy.

Nykyaikainen varjosalasanajärjestelmä , jossa salasanatiivisteet ja muut turvatiedot tallennetaan ei-julkiseen tiedostoon, ratkaisee osittain ongelman luvattomasta pääsystä hash-tiedostoon. Samaan aikaan ne ovat edelleen merkityksellisiä monipalvelinasennuksissa, jotka käyttävät keskitettyjä salasanojen hallintajärjestelmiä salasanojen tai salasanahajautusten siirtämiseen useisiin järjestelmiin [8] .

Salt tekee myös sanakirjahyökkäykset ja raa'an voiman hyökkäykset useiden salasanojen murtamiseen erittäin hitaita (mutta ei vain yhden salasanan murtamisen tapauksessa). Ilman suolaa suuren salasanoja murtavan hyökkääjän on joka kerta vertailtava kaikkiin ehdokkaisiin. Koska suola voi olla dynaaminen, jokaista suolavaihtoehtoa tulisi yrittää soveltaa jokaiseen luettelon salasanaan.

Toinen suolan etu on, että kaksi käyttäjää voivat valita salasanakseen saman merkkijonon tai sama käyttäjä voi käyttää samaa salasanaa kahdessa tietokoneessa. Ilman suolaa tämä salasana tallennetaan samana hash-merkkijonona salasanatiedostoon. Tämä paljastaisi tosiasian, että kahdella tilillä on sama salasana, jolloin kuka tahansa, joka tietää toisen tilin salasanoista, voi käyttää toista tiliä. Kun suolaa sekoitetaan, vaikka kaksi tiliä käyttäisivät samaa salasanaa, kukaan ei voi havaita sitä yksinkertaisesti katsomalla hash-arvoja.

Salt UNIX-järjestelmissä

Useimmat UNIX -järjestelmät käyttävät crypt(3) -järjestelmäkirjastoa yksisuuntaisena funktiona . Aluksi tämä kirjasto käytti DES-algoritmiin perustuvaa hash-funktiota . Tässä tapauksessa salasana rajoitettiin 8 merkkiin (7 bittiä per merkki, eli 56 bittiä), ja käytettiin 12-bittistä suolaa [9] .

Vuonna 1994 Poul-Henning Kamp loi uuden MD5 -pohjaisen salasanan hajautusalgoritmin, joka salli minkä tahansa pituiset salasanat ja käytti tuhat iteraatiota MD5:stä [10] [11] . Toiminnon tuloksena oli merkkijono, joka sisälsi tiivistysalgoritmin (version), suolan ja hashin tunnisteen.

Tuolloin tällaisen hajautusarvon laskemisen viive riitti vastustamaan tehokkaasti raa'an voiman salasanojen arvailua. Kuitenkin, kun laskentateho on kasvanut, aika löytää MD5 on lyhentynyt dramaattisesti. Tämä on johtanut laskennallisesti monimutkaisempien salausalgoritmien syntymiseen ja iteraatioiden määrän hallintaan [12] .

Kirjasto tukee nyt useita algoritmeihin perustuvia hash-funktioita: MD5 , SHA-256 , SHA-512 , Blowfish (joissakin Linux - jakeluissa , OpenBSD ja joissakin muissa UNIX-tyyppisissä järjestelmissä) [13] . Toiminnon tulos on merkkijono, joka sisältää tiivistysalgoritmin tunnisteen, suolan, tiivisteen ja muita tietoja (esimerkiksi hash-funktion kierrosten lukumäärän).

Vuonna 2012 Poul-Henning Kamp kehotti luopumaan kokonaan luomastaan ​​md5crypt-algoritmista, koska se ei tarjoa konkreettista lisäystä hash-laskenta-aikaan nykyaikaisissa olosuhteissa, eikä siksi suojaa tyhjentävältä luettelolta [14] .

Katso myös

Muistiinpanot

  1. Tutkimus salasanoista . Security-Corp.org - tietoturvakysymyksiin omistettu resurssi. Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  2. Mikä salasana suojaa hakkerointia tai entropiaa vastaan ​​salassapitopalvelussa . samag.ru. Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  3. "Suolattu" salasanan hajautus: teet sen oikein . Internet technology.ru. Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  4. Club.CNews.ru: 52 % käyttäjistä käyttää samoja salasanoja eri sivustoilla . Club.CNews.ru. Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  5. Satunnaislukugeneraattorit kryptografiassa . studopedia.net. Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  6. Salasanan raa'an voiman nopeus CPU:ssa ja GPU:ssa . bozza.ru Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  7. Miljoonat Microsoftin käyttäjät käyttävät toistuvia salasanoja . i2HARD. Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  8. Salasanatiivisteiden hajautettu tallennustila - "Hakkeri" . Haettu 14. joulukuuta 2019. Arkistoitu alkuperäisestä 14. joulukuuta 2019.
  9. OpenNet-projekti: MAN crypt(3) Kirjastokutsut (FreeBSD ja Linux) . Haettu 24. kesäkuuta 2012. Arkistoitu alkuperäisestä 26. kesäkuuta 2012.
  10. FreeBSD CVS-loki tiedostolle src/lib/libcrypt/crypt.c . Haettu 9. heinäkuuta 2012. Arkistoitu alkuperäisestä 12. heinäkuuta 2013.
  11. Niels Provos, David Mazières. Tulevaisuuteen mukautuva salasanajärjestelmä . Paperi - 1999 USENIX Annual Technical Conference, 6.-11.6.1999, Monterey, Kalifornia, USA (kesäkuu 1999). Haettu 9. heinäkuuta 2012. Arkistoitu alkuperäisestä 9. elokuuta 2012.
  12. Unix-skripti SHA-256/512:lla . Haettu 24. kesäkuuta 2012. Arkistoitu alkuperäisestä 16. heinäkuuta 2013.
  13. crypt(3) - Linux-käsikirjasivu . Haettu 24. kesäkuuta 2012. Arkistoitu alkuperäisestä 2. toukokuuta 2012.
  14. Md5crypt Password Scrambler ei ole enää tekijän mielestä turvallinen (downlink) . Haettu 9. heinäkuuta 2012. Arkistoitu alkuperäisestä 17. maaliskuuta 2018. 

Kirjallisuus