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
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:
-
PBKDF2 ottaa ”suola” -parametrin, jonka avulla voidaan varmistaa, että lähdöt ovat yksilöllisiä, vaikka syötetyt salasanat eivät olisikaan . (Suolan käyttö estää myös ennakkolaskennan perustuvat hyökkäykset, koska hyökkääjä ei voi aloittaa arvattavan salasanan hajauttamista ennen kuin hän tietää suolan.) SHA-512: lla ei sellaisenaan ole suolan käsitettä, vaikka vastaava vaikutus voidaan saavuttaa esim. valmistelemalla suola salasanaan.
-
SHA-512 tuottaa aina 512-bittisen ulostulon (tästä myös sen nimen), vaikka voit aina katkaista sen lyhyemmäksi, jos älä tarvitse kaikkia 512 bittiä. PBKDF2 voi periaatteessa tuottaa minkä tahansa pituisen lähdön, vaikka käytännössä käyttää sitä useamman kuin yhden sisäisen hajautuslähdön tuottamiseen. bittiä ei suositella .
*) 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.
PBKDF2(HMAC_SHA512, password, ...)
.