openssl speed mi dice blowfish è molto più veloce di md5, cosa mi manca?

2

Quindi ho eseguito openssl speed md5 && openssl speed blowfish e blowfish sembra più veloce di md5.

Ecco i risultati (eseguiti su Windows WSL ).

$ openssl speed md5 && openssl speed blowfish
Doing md5 for 3s on 16 size blocks: 11438181 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 8164424 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 4405667 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 1547154 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 212233 md5's in 2.95s
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Jan 30 20:38:38 UTC 2017
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md5              61003.63k   174174.38k   375950.25k   528095.23k   589360.25k
###############################################################################
Doing blowfish cbc for 3s on 16 size blocks: ^T21511383 blowfish cbc's in 3.00s
Doing blowfish cbc for 3s on 64 size blocks5410400 blowfish cbc's in 2.84s
Doing blowfish cbc for 3s on 256 size blocks: 1438809 blowfish cbc's in 2.98s
Doing blowfish cbc for 3s on 1024 size blocks: 355336 blowfish cbc's in 2.97s
Doing blowfish cbc for 3s on 8192 size blocks: 42136 blowfish cbc's in 2.96s
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Jan 30 20:38:38 UTC 2017
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
blowfish cbc    114727.38k   121924.51k   123602.38k   122513.15k   116614.23k

Ora so che blowfish è usato da bcrypt , e so che bcrypt è un algoritmo lento, quindi come mai ottengo questi risultati dove blowfish è così veloce?

Ho alcune ipotesi su questo, ma non c'è modo di controllarle:

  • È correlato all'essere in windows subsystem on linux ?
  • È correlato al COSTO di bcrypt , e ad esempio openssl speed blowfish viene eseguito con un costo di 1 (o simili)
  • Questo blowfish non è uguale a bcrypt 's blowfish

Ovviamente, qualcos'altro.

    
posta Pierre Antoine Guillaume 04.07.2017 - 09:13
fonte

3 risposte

9

In primo luogo, penso che stai interpretando male i tuoi risultati. Se per esempio guardiamo blocchi di 1024 dimensioni, MD5 sta facendo 1.547.154 in 3 secondi mentre Blowfish sta facendo solo 355.336, e quindi richiede più di quattro volte più tempo per operazione di MD5.

In secondo luogo, bcrypt iterizza la configurazione della chiave Blowfish un numero configurabile di volte, in genere 4.096. Prova a eseguire nuovamente il test, ma confrontando un'iterazione di MD5 con 4.096 iterazioni di Blowfish e vedi quale è più veloce. Quindi sì, è il parametro COST in bcrypt setup.

    
risposta data 04.07.2017 - 09:24
fonte
3

Poiché bcrypt è usato per memorizzare le password, è essenziale prevenire attacchi di forza bruta per indovinare la forza. Se utilizzava solo un round di un hash molto veloce, un utente malintenzionato potrebbe indovinarlo molto più rapidamente che se fosse necessario più lavoro.

Nel caso di bcrypt, il valore di costo non segreto definisce il numero di cicli di crittografia costosi utilizzati. Questo è ancora relativamente veloce se l'utente conosce la password ...

    
risposta data 04.07.2017 - 09:50
fonte
2

bcrypt e blowfish sono correlati ma molto diversi.

Blowfish è un algoritmo di crittografia simmetrica. Richiede una password fornita dall'utente, applica una funzione di espansione della chiave e quindi utilizza questa chiave derivata per crittografare il testo in chiaro

D'altra parte, bcrypt è una funzione di hashing della password. È collegato al blowfish nel senso che usa la stessa funzione di espansione della chiave più volte per cancellare la password in modo lento e irreversibile.

Come puoi vedere, non sono uguali.

Informazioni su md5, non è una funzione di hashing della password. È un algoritmo di hashing generale purpouse. Servono persone diverse, MD5 tenta di essere una funzione di hashing VELOCE. La funzione di hashing della password derivata da md5 è md5crypt, che era usata nei vecchi sistemi operativi * nix e sostituita da bcrypt, shaXcrypt e altri nelle versioni successive

    
risposta data 04.07.2017 - 16:35
fonte

Leggi altre domande sui tag