Mikä on salaus “ suola ”?

Olen salauksen aloittelija ja haluaisin ymmärtää hyvin yksinkertaisesti, mitä salaus ” suola ” on, milloin minun on ehkä käytettävä sitä ja miksi minun pitäisi tai ei pitäisi käyttää sitä.

Voinko saada hyvin yksinkertaisen ja selkeä (aloittelijan tason) selitys?

Jos tiedät viitteitä aiheesta, niistä olisi myös hyötyä.

Vastaa

Suolojen käytön syy on se, että ihmiset valitsevat samat salasanat eikä lainkaan satunnaisesti. Monet käyttävät salasanoja on lyhyitä oikeita sanoja, jotta se olisi helppo muistaa, mutta tämä myös mahdollistaa hyökkäyksen.

Kuten ehkä tiedät, salasanoja ei yleensä tallenneta selkeässä tekstissä, vaan ne tiivistetään. Jos et ole varma hash-toiminnon tarkoituksesta, lue ensin se.

Hyökkääjät voivat nyt luoda yksinkertaisesti luettelon tavallisista salasanoista ja niitä vastaavista hashista. Sivuston taulukkoon tallentamat hajautukset paljastavat hyökkääjälle, jos käytetään yleisiä salasanoja.

A salt lisätään yksinkertaisesti -palveluun, jotta salasanan hajautusuloste on ainutlaatuinen jopa käyttäjille yleisten salasanojen käyttöönotto . Sen tarkoituksena on tehdä ennakkolaskentaan perustuvista hyökkäyksistä hyödyttömiä. Jos salasanasi on tallennettu yksilölliseen suolaan, kaikki ennalta lasketut salasanan hajautustaulukot, jotka kohdistuvat suolattomiin salasanan tiivisteisiin tai kohdentaminen tilille eri suolalla, eivät auta tilin salasanan murtamisessa. Pitkä satunnaisesti luotu suola (käyttäen /dev/urandom) odotetaan olevan maailmanlaajuisesti ainutlaatuinen . Siten suoloja voidaan käyttää -laskentahyökkäykset ovat täysin tehottomia.

Yksinkertaisin tapa yhdistää suola ja salasana on yksinkertaisesti ketjuttaa ne, ts. tallennettu hash-arvo on Hash(salt||password). salasanasta password1 tulee nyt maagisesti esimerkiksi 6$dK,3gCA%Jpassword1, jota ei todennäköisesti löydy salasanan halkeajan taulukosta.

Suola voidaan varastoida kokonaan tietokannan tyhjään tilaan hash-arvon viereen. Kun hyökkääjällä on tietokanta ja hän haluaa löytää salasanat, hänen on luotava kullekin suolalle ennalta laskettu taulukko erikseen, mikä on kallis toimenpide.

Toinen tapa auttaa puolustamaan offline-salasanojen halkeilua on suorittaa salasanan venyttäminen, ts. salasanan tiivisteen tekeminen lasketaan hitaammin kenellekään, mukaan lukien kirjautumispalvelu ja salasanan halkeamat. Yksi menetelmä salasanojen venyttämiseksi saavutetaan iteroimalla hash-toiminto monta kertaa eli tallentamalla Hash(Hash(Hash(Hash…(Hash(salt||password)))…).

Toinen yleinen suolaamiseen liittyvä idea on nimeltään pippuri . Toisin sanoen toinen satunnaisarvo, joka on liitetty salasanaan siten, että tallennettu arvo on Hash(pepper||salt||password). Tällöin pippuria ei tallenneta lainkaan . Sekä kirjautumispalvelimen että salasanan halkeajan on pakotettava tuntematon pippuriarvo voimakkaasti, mikä hidastaa salasanan tiivisteiden vertailua molemmille osapuolille.

Vuodesta 2013 vuoteen 2015 salasanan sekoitus kilpailu pidettiin parempien salasanojen venytysalgoritmien etsimiseksi. Voittaja oli Argon2 -algoritmi. Ohjelmoijia suositellaan käyttämään Argon2 oman algoritmin käyttöönoton sijaan.

Kommentit

  • Joten, kun tietokannassa on vain yksi tai kaksi salasanaa, suolan käyttö on käytännössä hyödytöntä? Ymmärrän, että tästä on hyötyä vain silloin, kun tietokantaan tallennettujen salasanojen määrä ei ole pieni.
  • @AbhinavChoudhury: Ei, se suojaa sateenkaaritaulukoilta – ts. Ennalta lasketuilta taulukkoilta tietylle hashille. Esimerkki: Ota salasana ” password1 ”. Jos et ’ suolaa, ’ d tallenna HASH (” salasana1 ”) tietokannassasi. Jos hyökkääjä saa tietosi ja on laskenut HASH (*) kaikille 9-merkkisille salasanoille, hän voi palauttaa salasanan. Jos olet sen sijaan suolannut salasanan, HASH (’ somesaltforyou ’ || ’ salasana1 ’) EI ole hyökkääjien sateenkaaritaulukossa (koska siinä on ’ enemmän kuin 9 merkkiä).
  • ” Suola voidaan tallentaa kokonaan tietokannan tyhjään tilaan tiivistetyn arvon ” vieressä – – tämä osa ei ole koskaan ollut järkevää minulle; Mietin, voisitko laajentaa sitä
  • Suolan tarkoituksena on varmistaa, että hashia ei löydy ennalta lasketusta taulukosta. Se on tallennettava salasanan vahvistamiseksi (muuten se ’ sa ” pippuri ”). Suolan ei ole tarkoitus olla ” secret ”, vain jotta salasana olisi yksilöllinen. Tämä tarkoittaa tietysti sitä, että jokaisella tallennetulla salasanalla on oltava oma, ainutlaatuinen (ja satunnainen) suola.

Vastaus

Voitteko auttaa minua ymmärtämään salauksen ”suola”?

Salasanan yhteydessä luominen, ”suola” on tietoja (satunnaisia tai muita), jotka lisätään hajautusfunktioon, jotta salasanan hajautetun lähdön tekeminen on vaikeampi murtaa.

Milloin minun on ehkä käytettävä sitä?

Aina.

Miksi Pitäisikö minun vai pitäisikö sitä käyttää?

Käytä aina suola-arvoa hash-toimintojesi yhteydessä alla selitetyistä syistä.

On totta, että ihmiset valitsevat heikot salasanat, ja on totta, että on olemassa gigatavuja julkisesti saatavilla olevia sateenkaaritaulukoita , jotka ovat täynnä hash-arvoja. Joten kun joku luo tilin palvelullesi ja valitsee salasanan henkilöllisyytensä turvaamiseksi, voit yleensä lyödä vetoa valitsemastasi salasanasta, joka on 1) yleinen, 2) suojaamaton ja 3) käytettävissä ristiviittauksiin hakutaulukoissa.

Esimerkiksi salasana Nowayin1 MD5: n kautta hajautettuna on 6f367d65bc74b88e21fb9959487ffa3a eikä se tietenkään ole hyvä valinta. Vaikka se voisi näyttää hyvältä (ja se ei t), se, että salasanan MD5-hash näkyy avoimissa tietokannoissa, tekee siitä arvotonta.

Mutta se on vain 128-bittinen MD5. Entä jotain vahvempi, kuten SHA1 (160-bittinen) tai jopa Whirlpool (512-bittinen)?

Sama ongelma.

Esimerkiksi P @ $$ sana SHA1: llä on 1e69e0a615e8cb813812ca797d75d4f08bdc2f56 ja

1qazXSW @ hajautetun Whirlpool sanoen 0bf7545b784665d23b9c174ca03688a405f05b048e9d6c49bfc2721a1fa872bbd6576273d002e56d7c2a9c378efe607af36eea9d708a776e6f60ecb26e081cdf .

Kaikkien näiden salasanojen ja miljardien muiden kaltaisten salasanojen peruskysymys on se, että niiden yleisesti käyttämistä hajautuksista on tullut yleisesti tiedossa. muuttaa sitä.

Jos käyttäjän valittuun salasanaan lisättiin satunnaisarvo (suola), silloin SHA1-hash 1e69e0a615e8cb813812ca797d75d4f08bdc2f56 ei enää paljastaisi iv id = ”703de9e2ce” $ $ wordd käyttäjän salasanana, koska sateenkaaritaulukon hash-arvo ei enää vastaa sitä.

Ja se ei vie paljon. Esimerkiksi pieni 16-bittinen satunnaisarvo tuottaisi 65 536 muunnelmaa kustakin hajautusarvosta hakutaulukoissa. Joten 15 miljardin merkinnän tietokanta tarvitsisi nyt yli 983 miljardia tiivistettä suolan huomioon ottamiseksi.

Joten, tässä on hashien suolaus, haku- ja sateenkaaripöytien estäminen. ”Älä ripusta hattuasi suolatulle hashille, koska hakkerit eivät tuhlaa paljon aikaa sateenkaaripöytien avulla salasanojen selvittämiseen.

He” käyttävät viiden palvelimen 25-GPU-klusterijärjestelmä , joka käyttää Hashcatia ja joka voi polttaa 350 miljardia arvausta sekunnissa murtohäiriöitä jokaisesta mahdollisesta kahdeksan merkin salasanasta, joka sisältää isoja ja pieniä kirjaimia, numeroita ja erikoismerkkejä alle kuusi tuntia. (Ja se oli jo vuonna 2012.)

Tällaisia tekniikoita, kuten avainten venyttämistä, jotka tekevät hajautuksista hitaampia, voidaan käyttää kompensoimaan tällaisen laitteiston nopeutta, jolloin sanakirja- ja raakavoima-iskut ovat liian hitaita kannattaviksi. , mutta laitteisto vain nopeutuu ja nopeutuu.

PÄIVITYS 2018:

Nykyisiin parhaisiin käytäntöihin kuuluu salasanojen turvallinen hajauttaminen Argon2i : llä (mieluummin kuin scryptillä). / div> joustava FPGA: ille, usean aluksen grafiikkasuorittimille ja erillisille ASIC-moduuleille, joita käytetään murtamattomien salasanojen murtamiseen Argon2: n PHP7 -toteutuksessa suola hoidetaan sisäisesti puolestasi.

vastaus

yritän vastata osaan kysymyksestäsi, joka on toistaiseksi laiminlyöty:

milloin minun on ehkä käytettävä sitä ja miksi minun pitäisi / ei pitäisi käyttää sitä.

Lyhyt vastaus on, että amatöörinä ei pidä käyttää salausta tasolla, joka vaatii suoraan suolojen käsittelyä.

Esimerkiksi bcrypt salasanan hajautusalgoritmi käyttää suoloja sisäisesti. Mutta se ei paljasta tätä tosiasiaa sitä käyttäville kehittäjille – yksinkertaisesti välität salasanan bcrypt (ja vaihtoehtoisesti parametrille, joka asettaa tason CPU: n vaivaa ”, jota tarvitaan hashin luomiseen) ja se palauttaa hashin. Kun sinun on tarkistettava, onko salasana oikea, välität bcrypt sekä salasanan että aiemmin luodun hash-koodin. Se ilmoittaa, käytetäänkö salasanaa hajautuksen luomiseen.

Älä älä ota huomioon tässä annettuja neuvoja ja yritä hajauttaa omia salasanojasi suolalla. Se on matalan tason toteutusdetaili, ja jos huomaat työskentelevän tasolla, jossa tarvitaan tällaisia asioita, työskentelet aivan liian matalalla abstraktiotasolla. Salaus on erittäin vaikea tehdä oikein, ja Internet on täynnä hyvää tarkoittavia kehittäjiä, jotka ovat ”täysin turvattomia kotikasvatettujen salasanojen hajautusjärjestelmiä.

Vastaa

Lainaus ” Tentti viite 70-486 ASP.NET MVC 4 -verkkosovellusten (MCSD) kehittäminen: ASP.NET MVC 4 -verkkosovellusten kehittäminen ” kirjoittanut William Penberthy, Pearson Education, 15. syyskuuta 2013:

Suolaaminen on prosessi, joka vahvistaa tiedostojen salausta ja tiivistämistä, mikä vaikeuttaa niiden rikkoutumista. satunnainen merkkijono syötetekstin alkuun tai loppuun ennen arvon hajauttamista tai salaamista. Kun esimerkiksi yritetään rikkoa salasanaluetteloa, hakkereiden on otettava huomioon suola ja mahdolliset salasanatiedot ennen kuin ne voivat rikkoa Jos jokaiselle suolattavalle arvolle on määritetty eri suolan arvo, kyky luoda taulukko potentiaalisten salasanojen arvoista ssword-cracking-ohjelma on hankala.

Vastaa

Suola on satunnaisluku, jota tarvitaan salattujen tietojen, sekä salasanan, käyttämiseen.

Jos hyökkääjä ei tiedä salasanaa ja yrittää arvata sen raaan voiman hyökkäyksellä, niin jokainen salasana, jonka hän yrittää on kokeiltava jokaisen suolan arvon kanssa.

Joten yhden bittisen suolan (0 tai 1) salaus on tällä tavalla kaksi kertaa niin vaikea hajottaa. Kaksibittinen suola tekee siitä neljä kertaa kovempaa, kolmibittinen suolaa kahdeksan kertaa kovempaa jne. Voitte kuvitella, kuinka vaikeaa on murtaa salasanoja salauksella, joka käyttää 32-bittistä suolaa!

Kommentit

  • Ei. Suolan oletetaan yleensä olevan hyökkääjän tuntema. Tässä tapauksessa jonkin matalan kynnyksen jälkeen suola ei paranna turvallisuutta.
  • ” Suolan oletetaan yleensä hyökkääjän tuntevan ” – > Kuka olettaa tämän?
  • @Mike: Kuka? Joku sanoo ” Oletetaan, että hyökkääjä tietää suolan. ”. Ihmiset toisella sivulla sanovat ” Suolat ovat julkisia ” ja myöhemmin sanotaan ” suolat ovat tunnettuja, koska se ’ s on suola-sanan teollisen standardin mukainen käyttö. ” Toinen sanoo, että ” suola on julkista tietoa tai ainakin sitä tulisi pitää julkisena tieto. ”.

Vastaa

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