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.
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) paluutilaInitState-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)":
Useissa käyttöjärjestelmissä (linux, OpenBSD), jotka käyttävät bcrypt-algoritmia tavallisessa crypt(3)-funktiossa, syöte on vakio "OrpheanBeholderScryDoubt" [3] .
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] .
Hash-funktiot | |
---|---|
yleinen tarkoitus | |
Kryptografinen | |
Avainten luontitoiminnot | |
Tarkista numero ( vertailu ) | |
Hashes |
|