sicuro di usare jBCrypt e raccomandarlo alla mia organizzazione?

11

Vorrei raccomandare ai miei colleghi sviluppatori che tutti noi usiamo bcrypt per archiviare le password memorizzate. Tutti usiamo java ed esito a raccomandare jBCrypt solo perché il suo ultimo numero di versione (0.3) indica che si tratta di una versione beta. Vedo che le versioni recenti di Spring Security hanno incluso un'implementazione che è principalmente il codice esatto da jBCrypt. Con "per lo più" intendo che Spring Security lo ha modificato per soddisfare le loro convenzioni di codifica e poco altro che posso rilevare. Per me, Spring Security è un buon segno di approvazione. La mia domanda è: si sentirà a proprio agio nel raccomandare l'implementazione di Spring? Se lo provassi e confrontassi i risultati con i risultati effettivi di bcrypt, sarebbe abbastanza buono? Come potrei sapere se i miei test fossero approfonditi?

    
posta mcgyver5 05.10.2012 - 20:28
fonte

2 risposte

17

Potresti controllare tu stesso il codice jBCrypt . È piccolo: un file di codice sorgente a 750 righe, la metà dei quali è un array di costanti. Inoltre, poiché questo è Java, non devi temere il temuto "comportamento indefinito" di C: se funziona bene sul tuo computer, funzionerà bene ovunque (per quel tipo di codice, che non coinvolge discussioni, accesso al sistema di calcoli in virgola mobile, il mantra "scrivi una volta, esegui ovunque" di Java tende ad essere vero).

Puoi anche dare un'occhiata al file di accompagnamento TestBCrypt.java : sembra un'applicazione ragionevolmente completa di vettori di test noti (comprese alcune password non ASCII). Il codice mi sta bene.

Per la maggior parte dei progetti opensource, i numeri di versione sono privi di significato, poiché traducono maggiormente la sensazione di soddisfazione interiore dell'autore rispetto a qualsiasi effettiva qualità tecnica del software.

Nota: ovviamente, dal momento che il punto di hashing lento è una corsa di bilancio tra il difensore e l'attaccante, usando Java si sta dando un vantaggio 3x all'attaccante: lui utilizzerà C o assembly ottimizzati (o alcuni FPGA). Tuttavia, bcrypt correttamente applicato, anche con Java, dovrebbe essere sufficiente per garantire che l'archiviazione delle password non sia più il peggiore dei tuoi problemi.

    
risposta data 05.10.2012 - 21:38
fonte
2

BCrypt è sicuramente sicuro da consigliare, sia che si tratti della versione di Spring o della porta originale di jBCrypt di Mindriot. Non lasciare che il numero di versione ti spaventi perché è solo il risultato dello schema di controllo dell'autore.

Vedi link per le note sulla versione

    
risposta data 16.01.2013 - 06:02
fonte

Leggi altre domande sui tag