Mikä ' ero PBKDF: n ja SHA: n välillä ja miksi käyttää niitä yhdessä?

Olen lukenut vähän viime aikoina hajautuksesta ja AgileBitsin mukaan , he käyttävät ” SHA512 sisällä PBKDF2 ” uudessa holvatiedostossaan.

Olen etsinyt Wikipediasta molempia nimiä ja tiedän, että PBKDF2 on avaintulostusfunktio ja SHA on salaus hash-toiminto, mutta en voi todella ymmärtää eroa ja miksi niitä molempia käytetään yhdessä toistensa kanssa.

Voiko kukaan selittää tämän henkilölle, jolla ei ole kokemusta salauksesta?

(Voit olettaa, että tiedän vain matematiikasta, jos tarpeen).

Kommentit

  • PBKDF2 on suunniteltu paljon hitaammin kuin SHA, joten se on parempi sopii salasanojen hajauttamiseen, koska sanakirjan tai raakavoiman hyökkäys vie paljon kauemmin.
  • @puzzlepalace, joten he tekevät periaatteessa saman ja käyttävät sävellystä PBKDF2 (SHA (salasana)), joten se kestää kauemmin hyökkääjät?
  • No, useimmissa tapauksissa PBKDF2 käyttää primitiivistä nimitystä HMAC psuedosatunnaisfunktiona, joka puolestaan käyttää siinä salauksen hajautusfunktiota ’ s sisäpuolella, tässä tapauksessa SHA512. Joten koostumus näyttää oikeastaan enemmän kuin PBKDF2(HMAC_SHA512, password, ...).
  • PBKDF2 on auto, HMAC on moottori, SHA512 on mäntä
  • jälkimmäinen osa vastauksestani aikaisempaan kysymykseen käsittelee myös tätä.

Vastaa

SHA-512 on kryptografisesti suojattu hash , PBKDF2 on se, jota kutsumme salasanapohjaiseksi avaimen johtamistoiminnoksi. Jos tuloksena olevaa salaisuutta ei käytetä avaimena, mutta hash-arvona, sitä kutsutaan myös salasanan hajautukseksi . Salasanan hajautus eroaa suojatuista hajautuksista siinä mielessä, että ne sisältävät suolaa ja työtekijän / iteraation määrän.

Sekä salauksen hajautus että salasanan hajautus ovat yksi tapa toimia, jotka on suunniteltu luomaan lyhyt, kiinteä kokoinen lähtö annettu syöttö. Jos kyseessä on salasanan tiiviste, syötetään salasana ja suola. Suolan kokoa ja iterointilukua pidetään yleisesti konfiguraatioparametreina; molemmat vaikuttavat tietysti salasanan hajautusarvoihin.

Salasanan hajautus perustuu yleensä näennäissatunnaistoimintoihin tai PRF: iin. PRF: n tavanomainen muoto on HMAC- tai Hash-pohjainen viestien todennuskoodi, joka puolestaan käyttää sisäisesti hajautusmerkkiä. Kun käytetään hash-pohjaisia PRF-tiedostoja, kuten HMAC, käytettyjen hashien tyyppi / koko on usein määritettävissä. Salasanan tiivistelmiä ei kuitenkaan tarvitse rakentaa hashilla. Mikä tahansa muu PRF, kuten symmetrisiin salauksiin perustuvat, voi tehdä. Esimerkiksi bcrypt on rakennettu Blowfishin, salakoodin, päälle.

Salasanan tiivistelmät tarvitsevat suolaa, jotta identtiset salasanat eivät kartoitu samaan hashiin. Ne estävät siten myös sateenkaaritaulukoita (sisältävät ennalta laskettua salasanaa / hash-paria) hyödyllisyydestä. Lisäksi ne sisältävät työtekijän / iteraatiolaskun, jotta hyökkääjän on tehtävä enemmän työtä laskeakseen kunkin mahdollisen salasanan hash. Tätä tarvitaan, koska suurin osa salasanoista ei ole tarpeeksi satunnaisia. Ilman työtekijää hyökkääjä pystyy testaamaan valtavia määriä mahdollisia salasanoja käyttämällä raakaa voimaa tai sanakirjahyökkäystä.

Kommentit

  • paljon enemmän tietoa täällä … ei kuitenkaan ’ sovi vastaustilaan.

Vastaa

Parafraseeraa vastaukseni aikaisempaan kysymykseen , PBKDF2 on yleinen korkean tason algoritmi, joka kutsuu sisäisesti näennäissatunnaisfunktion (PRF) käsittelemään syötteensä. PBKDF2-spesifikaatio ei valtuuta mitään tiettyä PRF: ää, joten toteuttajat voivat vapaasti valita haluamansa PRF: n (kunhan se täyttää suojatun PRF: n määritelmän ja voivat hyväksyä syötteen, jonka PBKDF2 antaa sille).

Kuten tapahtuu, ylivoimaisesti yleisin PRF-valinta PBKDF2: lle on HMAC , joka on toinen korkean tason rakenne, jota käytetään sisäisesti salauksen hajautusfunktio . Jälleen HMAC-spesifikaatio ei edellytä mitään tiettyä hajautusfunktiota, joten toteuttajat voivat vapaasti valita haluamansa hajautusasetuksen. Todennäköisesti yleisin valinta on nykyään yksi SHA-2 hash-perheistä, joihin kuuluvat SHA-256 ja SHA-512.

Joten ”SHA512 PBKDF2: ssa” tarkoittaa melkein varmasti sitä, että he käyttävät PBKDF2: ta HMAC: n kanssa PRF: nä ja SHA-512: n hashina HMAC: n sisällä. **

Mikä voi olla hämmentävää on, että silmäyksellä, tämä PBKDF2-with-HMAC-with-SHA512 saattaa näyttää siltä, että se tekee jotain hyvin samanlaista kuin pelkkä SHA-512: molemmat ottavat mielivaltaisen salasanan syötteeksi ja muuttavat sen näennäissatunnaiseksi bittijonoksi, josta alkuperäistä salasanaa ei voi voidaan helposti rekonstruoida.Eroja on kuitenkin useita, joista tärkeimmät ovat:

  • SHA-512 on nopea. Erittäin nopeasti. PBKDF2 on tarkoituksella hitaasti laskettavissa, ja sen hitautta voidaan hallita säätämällä iteraatiolaskuparametriä.

  • Nopeuden suorana seurauksena SHA Pelkästään -512 on alttiina raaan salasanan arvaamishyökkäyksille käyttämällä ohjelmistoja, kuten hashcat , jotka yksinkertaisesti tuottavat paljon salasanoja ja hajauttavat niitä, kunnes löytävät vastaavan hash-koodin. . Yksi moderni CPU voi helposti hajauttaa miljoonia salasanoja sekunnissa, ja GPU: t ovat vielä nopeampi.

Lisäksi on joitain muita pieniä eroja huomattaessa:


*) Alkuperäisissä HMAC-määritelmissä ja suojaustodistuksissa oletetaan tosiasiallisesti, että käytetty hajautusfunktio on tietty tyyppi, joka tunnetaan nimellä Merkle – Damgård-hash-funktio . Kuten tapahtuu, kaikki viime vuosikymmenien suosituimmat kryptografiset hash-toiminnot, mukaan lukien SHA-2-perhe, ovat olleet tämän tyyppisiä, joten tämä rajoitus ei ole ollut käytännössä paljon ongelmaa. Tämä saattaa muuttua vähitellen standardisoimalla SHA-3 (alias Keccak), joka ei ole Merkle – Damgård-hash, mutta mukana tulee kätevästi oma suojausvaatimus HMAC-SHA3: lle .

**) Tämä on hieno ja perinteinen valinta, sikäli kuin se menee. Se ei ole yhtä vastustuskykyinen GPU-pohjaisille ja muille rinnakkaisille hyökkäyksille kuin nykyaikaisemmat KDF: t, kuten scrypt tai Argon2 olisi, mutta se on silti paljon parempi kuin tavallinen vanha toistamaton hajautus. Tästä huolimatta, jotta voimme arvioida sen turvallisuuden kunnolla, meidän on myös tiedettävä PBKDF2: lle käytetty iterointiluku. Valitettavasti monissa PBKDF2-toteutuksissa on taipumus käyttää vanhaa ”suositeltua minimimäärää”, joka on 1000 iteraatiota, mikä on vähän enemmän kuin nopeuden kohoaminen nykyään. Henkilökohtaisesti nykyaikaisella suorittimella haluaisin mieluummin jotain lähempänä 1 000 000 tai 1 000 000 000 iteraatiota .

Kommentit

  • Kysymys: Käytetäänkö PBKDF2: ta vain arvausten määrän hidastamiseen (jos se on bruteforce)? Vai onko muita mielessä pidettäviä yksityiskohtia?
  • @NaveenNiraula : Raakavoiman arvaamisen hidastamisen lisäksi PBKDF2: lla on toissijainen tarkoitus muuntaa mielivaltaisen pituiset ja muotoiset salasanat tasaisesti näennäissatunnaisiksi bittijonoiksi. Mutta pelkkä hajautus voi saavuttaa myös sen. Suolaparametri mahdollistaa myös useiden erillisten avainten johtamisen samasta salasana ja estää joitain hyökkäyksiä käyttämällä esimääritettyjä sanakirjoja, kuten ” sateenkaaritaulukoita ”. Mutta vielä kerran, jos et tehnyt ’ ei tarvitse PBKDF2: n raakaa voimaa arvaavaa suojaa, voit käyttää vain tavallista HMAC: ää tai jopa liittää suolan salasanalla ennen hajauttamista se.

Vastaa

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