Bcrypt

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

bcrypt
Kehittäjät Niels Provos ja David Mazières
Ensimmäinen julkaistu 1999
Kierrosten lukumäärä 2n _

bcrypt  on mukautuva salausavainten johtamishajautustoiminto , jota käytetään salasanojen turvalliseen tallentamiseen . Kehittäjät: Nils Provos ja David Mazières. Toiminto perustuu Blowfish - salaukseen , joka esiteltiin ensimmäisen kerran USENIXissä vuonna 1999 [1] . Suojatakseen sateenkaaripöytähyökkäyksiltä bcrypt käyttää suolaa (suolaa); Lisäksi toiminto on mukautuva, sen käyttöaika on helposti konfiguroitavissa ja sitä voidaan hidastaa raa'an voiman hyökkäyksen vaikeuttamiseksi.

eroaa monista algoritmeista laskennallisesti vaikeassa salausavainten

Provos ja Mazières käyttivät tätä ominaisuutta hyväkseen, mutta muuttivat avaimen valmistelualgoritmia ja saivat salauksen "Eksblowfish" ( kallis avainaikataulu Blowfish ). Kierrosten lukumäärän avaimen valmistelussa on oltava potenssi kaksi; bcryptiä käytettäessä voidaan määrittää tietty tutkinto.

Toteutettu alun perin OpenBSD : n salaustoimintoon . Toteutuksia on Java, Python, Nim, C#, Ruby, Perl, PHP 5.3, Node.js, Go [2] ja muutama muu.

Algoritmi

Bcrypt-algoritmi käyttää "Eksblowfishin" avaimen konfigurointialgoritmia:

EksBlowfishSetup( hinta , suola , avain ) tila InitState() tila ExpandKey( tila , suola , avain ) toista (2 kustannus ) tila ExpandKey(tila, 0, avain) tila ExpandKey( tila , 0, suola) paluutila

InitState-funktio vastaa Blowfish-salauksen alkuperäistä toimintoa; luvun murto-osaa käytetään täyttämään P- ja S-box-taulukko .

ExpandKey-toiminto:

ExpandKey ( tila , suola , avain ) for( n = 1..18) P n avain [32(n-1)..32n-1] P n //käsittele avainta syklisenä ctekstina Salaa( suola [0..63]) P 1 cteksti [0..31] P 2 cteksti [32..63] for( n = 2..9) ctext Encrypt( ctext salt [64(n-1)..64n-1]) //salaa käyttämällä nykyistä avainaikataulua ja käsittele suolaa syklisenä P 2n-1) cteksti [0..31] P 2n cteksti [32..63] for( i = 1..4) for( n = 0..127) ctext Encrypt( ctext salt [64(n-1)..64n-1]) //kuten edellä S i [2n] ctext [0..31] S i [2n+1] ctekstin [32..63 ] paluutila


Hajautusarvon laskemiseksi bcrypt käsittelee syötteen, joka vastaa arvoa "eksblowfish(strength_key, input)":

bcrypt( hinta , suola , avain , syöttö ) tila EksBlowfishSetup( kustannus , suola , avain ) ctext input toista (64) ctext EncryptECB( state , ctext ) // salaa tavallisella Blowfishilla ECB-tilassa return Liitä ( hinta , suola , ctext )

Useissa käyttöjärjestelmissä (linux, OpenBSD), jotka käyttävät bcrypt-algoritmia tavallisessa crypt(3)-funktiossa, syöte on vakio "OrpheanBeholderScryDoubt" [3] .

Haitat

bcrypt kehitettiin vuonna 1999 ja se oli suojattu tehokkaalta raa'alta voimalta sen ajan laitteistoon. Tällä hetkellä käytetään laajalti FPGA:ita, joissa bcrypt on toteutettu tehokkaammin. Vuonna 2009 luotiin salausalgoritmi , joka vaatii huomattavan määrän muistia työhönsä (satunnaiskäytöllä), muistin määrä on konfiguroitavissa [4] .

Verrattuna PBKDF2 :een , bcrypt-avaimen laajennusalgoritmi on jäänyt suurelta osin tutkimatta kryptografeilta [5] .

Katso myös

Linkit

Muistiinpanot

  1. Provos, Niels; Mazières, David. Tulevaisuuteen mukautuva salasanajärjestelmä  (määrittämätön)  // Proceedings of 1999 USENIX Annual Technical Conference. - 1999. - S. 81-92 . Arkistoitu alkuperäisestä 4. helmikuuta 2012.
  2. Bcrypt-  paketti . godoc.org. Haettu 10. tammikuuta 2020. Arkistoitu alkuperäisestä 29. toukokuuta 2020.
  3. Arkistoitu kopio . Haettu 19. elokuuta 2015. Arkistoitu alkuperäisestä 15. kesäkuuta 2018.
  4. http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.html Arkistoitu 14. huhtikuuta 2018 Wayback Machinessa "Scrypt ei ainoastaan ​​anna sinulle enemmän teoreettista turvallisuutta kuin bcrypt laskenta-aikayksikköä kohti, vaan se myös voit määrittää tuloksen laskemiseen tarvittavan muistitilan määrän."
  5. http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.html Arkistoitu 14. huhtikuuta 2018 Wayback Machinessa "Toisin kuin bcrypt, PBKDF2 on ollut intensiivisen tutkimuksen kohteena ja on edelleen paras konservatiivinen valinta ."